mirror of
https://github.com/postgres/postgres.git
synced 2025-11-10 17:42:29 +03:00
TOAST
WARNING: This is actually broken - we have self-deadlocks due to concurrent changes in buffer management. Vadim and me are working on it. Jan
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.63 2000/07/02 22:00:24 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.64 2000/07/03 23:09:10 wieck Exp $
|
||||
*
|
||||
* NOTES
|
||||
* The old interface functions have been converted to macros
|
||||
@@ -119,7 +119,11 @@ DataFill(char *data,
|
||||
{
|
||||
case -1:
|
||||
*infomask |= HEAP_HASVARLENA;
|
||||
data_length = VARSIZE(DatumGetPointer(value[i]));
|
||||
if (VARATT_IS_EXTERNAL(value[i]))
|
||||
*infomask |= HEAP_HASEXTERNAL;
|
||||
if (VARATT_IS_COMPRESSED(value[i]))
|
||||
*infomask |= HEAP_HASCOMPRESSED;
|
||||
data_length = VARATT_SIZE(DatumGetPointer(value[i]));
|
||||
memmove(data, DatumGetPointer(value[i]), data_length);
|
||||
break;
|
||||
case sizeof(char):
|
||||
@@ -816,7 +820,7 @@ heap_freetuple(HeapTuple htup)
|
||||
if (htup->t_data != NULL)
|
||||
if (htup->t_datamcxt != NULL && (char *) (htup->t_data) !=
|
||||
((char *) htup + HEAPTUPLESIZE))
|
||||
elog(NOTICE, "TELL Jan Wieck: heap_freetuple() found separate t_data");
|
||||
pfree(htup->t_data);
|
||||
|
||||
pfree(htup);
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.65 2000/05/30 00:49:38 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.66 2000/07/03 23:09:10 wieck Exp $
|
||||
*
|
||||
* NOTES
|
||||
* some of the executor utility code such as "ExecTypeFromTL" should be
|
||||
@@ -434,23 +434,16 @@ TupleDescInitEntry(TupleDesc desc,
|
||||
|
||||
att->attlen = typeLen(t);
|
||||
att->attbyval = typeByVal(t);
|
||||
att->attstorage = 'p';
|
||||
}
|
||||
else
|
||||
{
|
||||
att->attlen = typeForm->typlen;
|
||||
att->attbyval = typeForm->typbyval;
|
||||
/*
|
||||
* This will enable ALL variable size attributes of user
|
||||
* relations for automatic move off into "secondary" relation.
|
||||
* Jan
|
||||
* Default to the types storage
|
||||
*/
|
||||
#ifdef TUPLE_TOASTER_ACTIVE
|
||||
#ifdef TUPLE_TOASTER_ALL_TYPES
|
||||
att->attstorage = (att->attlen == -1) ? 'e' : 'p';
|
||||
#else
|
||||
att->attstorage = 'p';
|
||||
#endif
|
||||
att->attstorage = typeForm->typstorage;
|
||||
#else
|
||||
att->attstorage = 'p';
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user