Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite6106e9

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

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
Sizeresultsize;
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= (structvarlena*)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
elseif (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
elseif (VARATT_IS_COMPRESSED(attr))
532531
{
@@ -586,7 +585,7 @@ toast_datum_size(Datum value)
586585
}
587586
elseif (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
elseif (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-
staticSizeEA_get_flat_size(ExpandedObjectHeader*eohptr,void**context);
24+
staticSizeEA_get_flat_size(ExpandedObjectHeader*eohptr);
2525
staticvoidEA_flatten_into(ExpandedObjectHeader*eohptr,
26-
void*result,Sizeallocated_size,void**context);
26+
void*result,Sizeallocated_size);
2727

2828
staticconstExpandedObjectMethodsEA_methods=
2929
{
@@ -230,7 +230,7 @@ copy_byval_expanded_array(ExpandedArrayHeader *eah,
230230
* get_flat_size method for expanded arrays
231231
*/
232232
staticSize
233-
EA_get_flat_size(ExpandedObjectHeader*eohptr,void**context)
233+
EA_get_flat_size(ExpandedObjectHeader*eohptr)
234234
{
235235
ExpandedArrayHeader*eah= (ExpandedArrayHeader*)eohptr;
236236
intnelems;
@@ -291,7 +291,7 @@ EA_get_flat_size(ExpandedObjectHeader *eohptr, void **context)
291291
*/
292292
staticvoid
293293
EA_flatten_into(ExpandedObjectHeader*eohptr,
294-
void*result,Sizeallocated_size,void**context)
294+
void*result,Sizeallocated_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
Sizeresultsize;
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
intheader;
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-
returneohptr->eoh_methods->get_flat_size(eohptr,context);
78+
returneohptr->eoh_methods->get_flat_size(eohptr);
7979
}
8080

8181
void
8282
EOH_flatten_into(ExpandedObjectHeader*eohptr,
83-
void*result,Sizeallocated_size,void**context)
83+
void*result,Sizeallocated_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-
staticSizeER_get_flat_size(ExpandedObjectHeader*eohptr,void**context);
34+
staticSizeER_get_flat_size(ExpandedObjectHeader*eohptr);
3535
staticvoidER_flatten_into(ExpandedObjectHeader*eohptr,
36-
void*result,Sizeallocated_size,void**context);
36+
void*result,Sizeallocated_size);
3737

3838
staticconstExpandedObjectMethodsER_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
staticSize
652-
ER_get_flat_size(ExpandedObjectHeader*eohptr,void**context)
652+
ER_get_flat_size(ExpandedObjectHeader*eohptr)
653653
{
654654
ExpandedRecordHeader*erh= (ExpandedRecordHeader*)eohptr;
655655
TupleDesctupdesc;
@@ -762,7 +762,7 @@ ER_get_flat_size(ExpandedObjectHeader *eohptr, void **context)
762762
*/
763763
staticvoid
764764
ER_flatten_into(ExpandedObjectHeader*eohptr,
765-
void*result,Sizeallocated_size,void**context)
765+
void*result,Sizeallocated_size)
766766
{
767767
ExpandedRecordHeader*erh= (ExpandedRecordHeader*)eohptr;
768768
HeapTupleHeadertuphdr= (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-
typedefSize (*EOM_get_flat_size_method) (ExpandedObjectHeader*eohptr,
68-
void**context);
67+
typedefSize (*EOM_get_flat_size_method) (ExpandedObjectHeader*eohptr);
6968
typedefvoid (*EOM_flatten_into_method) (ExpandedObjectHeader*eohptr,
70-
void*result,Sizeallocated_size,
71-
void**context);
69+
void*result,Sizeallocated_size);
7270

7371
/* Struct of function pointers for an expanded object's methods */
7472
typedefstructExpandedObjectMethods
@@ -151,9 +149,9 @@ extern ExpandedObjectHeader *DatumGetEOHP(Datum d);
151149
externvoidEOH_init_header(ExpandedObjectHeader*eohptr,
152150
constExpandedObjectMethods*methods,
153151
MemoryContextobj_context);
154-
externSizeEOH_get_flat_size(ExpandedObjectHeader*eohptr,void**context);
152+
externSizeEOH_get_flat_size(ExpandedObjectHeader*eohptr);
155153
externvoidEOH_flatten_into(ExpandedObjectHeader*eohptr,
156-
void*result,Sizeallocated_size,void**context);
154+
void*result,Sizeallocated_size);
157155
externDatumMakeExpandedObjectReadOnlyInternal(Datumd);
158156
externDatumTransferExpandedObject(Datumd,MemoryContextnew_parent);
159157
externvoidDeleteExpandedObject(Datumd);

‎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
Sizeresultsize;
844844
HeapTupleHeadertuphdr;
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)

[8]ページ先頭

©2009-2025 Movatter.jp