Re: PG 15 (and to a smaller degree 14) regression due to ExprEvalStep size
От | David Rowley |
---|---|
Тема | Re: PG 15 (and to a smaller degree 14) regression due to ExprEvalStep size |
Дата | |
Msg-id | CAApHDvrCFNtKkqQ2GsHKmA3L_XNoiaRxer_m3LVFOsKFm2Kkfw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: PG 15 (and to a smaller degree 14) regression due to ExprEvalStep size (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: PG 15 (and to a smaller degree 14) regression due to ExprEvalStep size
|
Список | pgsql-hackers |
On Sat, 18 Jun 2022 at 08:06, Andres Freund <andres@anarazel.de> wrote: > I also attached my heavily-WIP patches for the ExprEvalStep issues, I > accidentally had only included a small part of the contents of the json fix. I've now looked at the 0003 patch. I like the idea you have about moving some of the additional fields into ScalarArrayOpExprHashTable. I think the patch can even go a little further and move the hash_finfo into there too. This means we don't need to dereference the "op" in saop_element_hash(). To make this work, I did need to tag the ScalarArrayOpExpr into the ExprEvalStep. That's required now since some of the initialization of the hash function fields is delayed until ExecEvalHashedScalarArrayOp(). We need to know the ScalarArrayOpExpr's hashfuncid and inputcollid. Your v2 patch did shift off some of this initialization work to ExecEvalHashedScalarArrayOp(). The attached v3 takes that a bit further. This saves a bit more work for ScalarArrayOpExprs that are evaluated 0 times. Another small thing which I considered doing was to put the hash_fcinfo_data field as the final field in ScalarArrayOpExprHashTable so that we could allocate the memory for the hash_fcinfo_data in the same allocation as the ScalarArrayOpExprHashTable. This would reduce the pointer dereferencing done in saop_element_hash() a bit further. I just didn't notice anywhere else where we do that for FunctionCallInfo, so I resisted doing this. (There was also a small bug in your patch where you mistakenly cast to an OpExpr instead of ScalarArrayOpExpr when you were fetching the inputcollid) David
Вложения
В списке pgsql-hackers по дате отправления: