Skip to content

Commit ba021c6

Browse files
author
Nikita Glukhov
committed
Revert "Optimize expanded object flattening: add context"
This reverts commit 07b994798252fd5e1b5fa595fd5f17936286ffc9.
1 parent b470132 commit ba021c6

File tree

9 files changed

+33
-43
lines changed

9 files changed

+33
-43
lines changed

src/backend/access/common/detoast.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,11 @@ detoast_external_attr(struct varlena *attr)
8383
*/
8484
ExpandedObjectHeader *eoh;
8585
Size resultsize;
86-
void *context;
8786

8887
eoh = DatumGetEOHP(PointerGetDatum(attr));
89-
resultsize = EOH_get_flat_size(eoh, &context);
88+
resultsize = EOH_get_flat_size(eoh);
9089
result = (struct varlena *) palloc(resultsize);
91-
EOH_flatten_into(eoh, (void *) result, resultsize, &context);
90+
EOH_flatten_into(eoh, (void *) result, resultsize);
9291
}
9392
else
9493
{
@@ -526,7 +525,7 @@ toast_raw_datum_size(Datum value)
526525
}
527526
else if (VARATT_IS_EXTERNAL_EXPANDED(attr))
528527
{
529-
result = EOH_get_flat_size(DatumGetEOHP(value), NULL);
528+
result = EOH_get_flat_size(DatumGetEOHP(value));
530529
}
531530
else if (VARATT_IS_COMPRESSED(attr))
532531
{
@@ -586,7 +585,7 @@ toast_datum_size(Datum value)
586585
}
587586
else if (VARATT_IS_EXTERNAL_EXPANDED(attr))
588587
{
589-
result = EOH_get_flat_size(DatumGetEOHP(value), NULL);
588+
result = EOH_get_flat_size(DatumGetEOHP(value));
590589
}
591590
else if (VARATT_IS_SHORT(attr))
592591
{

src/backend/access/common/heaptuple.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ heap_compute_data_size(TupleDesc tupleDesc,
152152
* tuple doesn't depend on it
153153
*/
154154
data_length = att_align_nominal(data_length, atti->attalign);
155-
data_length += EOH_get_flat_size(DatumGetEOHP(val), NULL);
155+
data_length += EOH_get_flat_size(DatumGetEOHP(val));
156156
}
157157
else
158158
{
@@ -233,12 +233,11 @@ fill_val(Form_pg_attribute att,
233233
* constructed tuple doesn't depend on it
234234
*/
235235
ExpandedObjectHeader *eoh = DatumGetEOHP(datum);
236-
void *context;
237236

238237
data = (char *) att_align_nominal(data,
239238
att->attalign);
240-
data_length = EOH_get_flat_size(eoh, &context);
241-
EOH_flatten_into(eoh, data, data_length, &context);
239+
data_length = EOH_get_flat_size(eoh);
240+
EOH_flatten_into(eoh, data, data_length);
242241
}
243242
else
244243
{

src/backend/executor/execTuples.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ tts_virtual_materialize(TupleTableSlot *slot)
178178
* slot doesn't depend on it.
179179
*/
180180
sz = att_align_nominal(sz, att->attalign);
181-
sz += EOH_get_flat_size(DatumGetEOHP(val), NULL);
181+
sz += EOH_get_flat_size(DatumGetEOHP(val));
182182
}
183183
else
184184
{
@@ -216,12 +216,11 @@ tts_virtual_materialize(TupleTableSlot *slot)
216216
* slot doesn't depend on it.
217217
*/
218218
ExpandedObjectHeader *eoh = DatumGetEOHP(val);
219-
void *context;
220219

221220
data = (char *) att_align_nominal(data,
222221
att->attalign);
223-
data_length = EOH_get_flat_size(eoh, &context);
224-
EOH_flatten_into(eoh, data, data_length, &context);
222+
data_length = EOH_get_flat_size(eoh);
223+
EOH_flatten_into(eoh, data, data_length);
225224

226225
slot->tts_values[natt] = PointerGetDatum(data);
227226
data += data_length;

src/backend/utils/adt/array_expanded.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121

2222

2323
/* "Methods" required for an expanded object */
24-
static Size EA_get_flat_size(ExpandedObjectHeader *eohptr, void **context);
24+
static Size EA_get_flat_size(ExpandedObjectHeader *eohptr);
2525
static void EA_flatten_into(ExpandedObjectHeader *eohptr,
26-
void *result, Size allocated_size, void **context);
26+
void *result, Size allocated_size);
2727

2828
static const ExpandedObjectMethods EA_methods =
2929
{
@@ -230,7 +230,7 @@ copy_byval_expanded_array(ExpandedArrayHeader *eah,
230230
* get_flat_size method for expanded arrays
231231
*/
232232
static Size
233-
EA_get_flat_size(ExpandedObjectHeader *eohptr, void **context)
233+
EA_get_flat_size(ExpandedObjectHeader *eohptr)
234234
{
235235
ExpandedArrayHeader *eah = (ExpandedArrayHeader *) eohptr;
236236
int nelems;
@@ -291,7 +291,7 @@ EA_get_flat_size(ExpandedObjectHeader *eohptr, void **context)
291291
*/
292292
static void
293293
EA_flatten_into(ExpandedObjectHeader *eohptr,
294-
void *result, Size allocated_size, void **context)
294+
void *result, Size allocated_size)
295295
{
296296
ExpandedArrayHeader *eah = (ExpandedArrayHeader *) eohptr;
297297
ArrayType *aresult = (ArrayType *) result;

src/backend/utils/adt/datum.c

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,10 @@ datumCopy(Datum value, bool typByVal, int typLen)
145145
ExpandedObjectHeader *eoh = DatumGetEOHP(value);
146146
Size resultsize;
147147
char *resultptr;
148-
void *context;
149148

150-
resultsize = EOH_get_flat_size(eoh, &context);
149+
resultsize = EOH_get_flat_size(eoh);
151150
resultptr = (char *) palloc(resultsize);
152-
EOH_flatten_into(eoh, (void *) resultptr, resultsize, &context);
151+
EOH_flatten_into(eoh, (void *) resultptr, resultsize);
153152
res = PointerGetDatum(resultptr);
154153
}
155154
else
@@ -371,9 +370,7 @@ datumEstimateSpace(Datum value, bool isnull, bool typByVal, int typLen)
371370
VARATT_IS_EXTERNAL_EXPANDED(DatumGetPointer(value)))
372371
{
373372
/* Expanded objects need to be flattened, see comment below */
374-
ExpandedObjectHeader *eoh = DatumGetEOHP(value);
375-
376-
sz += EOH_get_flat_size(eoh, NULL);
373+
sz += EOH_get_flat_size(DatumGetEOHP(value));
377374
}
378375
else
379376
sz += datumGetSize(value, typByVal, typLen);
@@ -411,7 +408,6 @@ datumSerialize(Datum value, bool isnull, bool typByVal, int typLen,
411408
char **start_address)
412409
{
413410
ExpandedObjectHeader *eoh = NULL;
414-
void *context;
415411
int header;
416412

417413
/* Write header word. */
@@ -423,7 +419,7 @@ datumSerialize(Datum value, bool isnull, bool typByVal, int typLen,
423419
VARATT_IS_EXTERNAL_EXPANDED(DatumGetPointer(value)))
424420
{
425421
eoh = DatumGetEOHP(value);
426-
header = EOH_get_flat_size(eoh, &context);
422+
header = EOH_get_flat_size(eoh);
427423
}
428424
else
429425
header = datumGetSize(value, typByVal, typLen);
@@ -447,7 +443,7 @@ datumSerialize(Datum value, bool isnull, bool typByVal, int typLen,
447443
* so we can't store directly to *start_address.
448444
*/
449445
tmp = (char *) palloc(header);
450-
EOH_flatten_into(eoh, (void *) tmp, header, &context);
446+
EOH_flatten_into(eoh, (void *) tmp, header);
451447
memcpy(*start_address, tmp, header);
452448
*start_address += header;
453449

src/backend/utils/adt/expandeddatum.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,16 @@ EOH_init_header(ExpandedObjectHeader *eohptr,
7373
*/
7474

7575
Size
76-
EOH_get_flat_size(ExpandedObjectHeader *eohptr, void **context)
76+
EOH_get_flat_size(ExpandedObjectHeader *eohptr)
7777
{
78-
return eohptr->eoh_methods->get_flat_size(eohptr, context);
78+
return eohptr->eoh_methods->get_flat_size(eohptr);
7979
}
8080

8181
void
8282
EOH_flatten_into(ExpandedObjectHeader *eohptr,
83-
void *result, Size allocated_size, void **context)
83+
void *result, Size allocated_size)
8484
{
85-
eohptr->eoh_methods->flatten_into(eohptr, result, allocated_size, context);
85+
eohptr->eoh_methods->flatten_into(eohptr, result, allocated_size);
8686
}
8787

8888
/*

src/backend/utils/adt/expandedrecord.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131

3232

3333
/* "Methods" required for an expanded object */
34-
static Size ER_get_flat_size(ExpandedObjectHeader *eohptr, void **context);
34+
static Size ER_get_flat_size(ExpandedObjectHeader *eohptr);
3535
static void ER_flatten_into(ExpandedObjectHeader *eohptr,
36-
void *result, Size allocated_size, void **context);
36+
void *result, Size allocated_size);
3737

3838
static const ExpandedObjectMethods ER_methods =
3939
{
@@ -649,7 +649,7 @@ make_expanded_record_from_datum(Datum recorddatum, MemoryContext parentcontext)
649649
* memory leaks from activities such as detoasting.
650650
*/
651651
static Size
652-
ER_get_flat_size(ExpandedObjectHeader *eohptr, void **context)
652+
ER_get_flat_size(ExpandedObjectHeader *eohptr)
653653
{
654654
ExpandedRecordHeader *erh = (ExpandedRecordHeader *) eohptr;
655655
TupleDesc tupdesc;
@@ -762,7 +762,7 @@ ER_get_flat_size(ExpandedObjectHeader *eohptr, void **context)
762762
*/
763763
static void
764764
ER_flatten_into(ExpandedObjectHeader *eohptr,
765-
void *result, Size allocated_size, void **context)
765+
void *result, Size allocated_size)
766766
{
767767
ExpandedRecordHeader *erh = (ExpandedRecordHeader *) eohptr;
768768
HeapTupleHeader tuphdr = (HeapTupleHeader) result;

src/include/utils/expandeddatum.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,9 @@
6464
* get_flat_size twice, so it's worthwhile to make sure that that doesn't
6565
* incur too much overhead.
6666
*/
67-
typedef Size (*EOM_get_flat_size_method) (ExpandedObjectHeader *eohptr,
68-
void **context);
67+
typedef Size (*EOM_get_flat_size_method) (ExpandedObjectHeader *eohptr);
6968
typedef void (*EOM_flatten_into_method) (ExpandedObjectHeader *eohptr,
70-
void *result, Size allocated_size,
71-
void **context);
69+
void *result, Size allocated_size);
7270

7371
/* Struct of function pointers for an expanded object's methods */
7472
typedef struct ExpandedObjectMethods
@@ -151,9 +149,9 @@ extern ExpandedObjectHeader *DatumGetEOHP(Datum d);
151149
extern void EOH_init_header(ExpandedObjectHeader *eohptr,
152150
const ExpandedObjectMethods *methods,
153151
MemoryContext obj_context);
154-
extern Size EOH_get_flat_size(ExpandedObjectHeader *eohptr, void **context);
152+
extern Size EOH_get_flat_size(ExpandedObjectHeader *eohptr);
155153
extern void EOH_flatten_into(ExpandedObjectHeader *eohptr,
156-
void *result, Size allocated_size, void **context);
154+
void *result, Size allocated_size);
157155
extern Datum MakeExpandedObjectReadOnlyInternal(Datum d);
158156
extern Datum TransferExpandedObject(Datum d, MemoryContext new_parent);
159157
extern void DeleteExpandedObject(Datum d);

src/pl/plpgsql/src/pl_exec.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -842,11 +842,10 @@ coerce_function_result_tuple(PLpgSQL_execstate *estate, TupleDesc tupdesc)
842842
*/
843843
Size resultsize;
844844
HeapTupleHeader tuphdr;
845-
void *context;
846845

847-
resultsize = EOH_get_flat_size(&erh->hdr, &context);
846+
resultsize = EOH_get_flat_size(&erh->hdr);
848847
tuphdr = (HeapTupleHeader) SPI_palloc(resultsize);
849-
EOH_flatten_into(&erh->hdr, (void *) tuphdr, resultsize, &context);
848+
EOH_flatten_into(&erh->hdr, (void *) tuphdr, resultsize);
850849
HeapTupleHeaderSetTypeId(tuphdr, tupdesc->tdtypeid);
851850
HeapTupleHeaderSetTypMod(tuphdr, tupdesc->tdtypmod);
852851
estate->retval = PointerGetDatum(tuphdr);

0 commit comments

Comments
 (0)