Skip to content

Commit 4732912

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

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
@@ -84,12 +84,11 @@ detoast_external_attr(struct varlena *attr)
8484
*/
8585
ExpandedObjectHeader *eoh;
8686
Size resultsize;
87-
void *context;
8887

8988
eoh = DatumGetEOHP(PointerGetDatum(attr));
90-
resultsize = EOH_get_flat_size(eoh, &context);
89+
resultsize = EOH_get_flat_size(eoh);
9190
result = (struct varlena *) palloc(resultsize);
92-
EOH_flatten_into(eoh, (void *) result, resultsize, &context);
91+
EOH_flatten_into(eoh, (void *) result, resultsize);
9392
}
9493
else
9594
{
@@ -569,7 +568,7 @@ toast_raw_datum_size(Datum value)
569568
}
570569
else if (VARATT_IS_EXTERNAL_EXPANDED(attr))
571570
{
572-
result = EOH_get_flat_size(DatumGetEOHP(value), NULL);
571+
result = EOH_get_flat_size(DatumGetEOHP(value));
573572
}
574573
else if (VARATT_IS_COMPRESSED(attr))
575574
{
@@ -629,7 +628,7 @@ toast_datum_size(Datum value)
629628
}
630629
else if (VARATT_IS_EXTERNAL_EXPANDED(attr))
631630
{
632-
result = EOH_get_flat_size(DatumGetEOHP(value), NULL);
631+
result = EOH_get_flat_size(DatumGetEOHP(value));
633632
}
634633
else if (VARATT_IS_SHORT(attr))
635634
{

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
@@ -848,11 +848,10 @@ coerce_function_result_tuple(PLpgSQL_execstate *estate, TupleDesc tupdesc)
848848
*/
849849
Size resultsize;
850850
HeapTupleHeader tuphdr;
851-
void *context;
852851

853-
resultsize = EOH_get_flat_size(&erh->hdr, &context);
852+
resultsize = EOH_get_flat_size(&erh->hdr);
854853
tuphdr = (HeapTupleHeader) SPI_palloc(resultsize);
855-
EOH_flatten_into(&erh->hdr, (void *) tuphdr, resultsize, &context);
854+
EOH_flatten_into(&erh->hdr, (void *) tuphdr, resultsize);
856855
HeapTupleHeaderSetTypeId(tuphdr, tupdesc->tdtypeid);
857856
HeapTupleHeaderSetTypMod(tuphdr, tupdesc->tdtypmod);
858857
estate->retval = PointerGetDatum(tuphdr);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy