Re: PG 15 (and to a smaller degree 14) regression due to ExprEvalStep size
Jonathan S. Katz <jkatz@postgresql.org>
On 8/9/22 2:57 PM, Andres Freund wrote: > Hi, > > On 2022-08-09 14:04:48 -0400, Jonathan S. Katz wrote: >>>> 2. Recommend holding up the v15 release to allow for the code to be >>>> redesigned and fixed (as based on Andres' estimates, this would push >>>> the release out several months). > > Obviously that's a question of the resources brought to bear. > > From my angle: I've obviously some of my own work to take care of as well, but > it's also just hard to improve something that includes a lot of undocumented > design decisions. *nod* >>>> 4. Revert the feature set and redesign and try to include for v16 > Unless we decide on 4 immediately, I think it might be worth starting a > separate thread to get more attention. The subject doesn't necessarily have > everyone follow along. *nod* I'll do this shortly. >> Rereading the thread for the umpteenth time, I have seen Amit working >> through Andres' concerns. From my read, the ones that seem pressing are: >> >> * Lack of design documentation, which may be leading to some of the general >> design concerns > >> * The use of substransactions within the executor, though docs explaining >> the decisions on that could alleviate it (I realize this is a big topic and >> any summary I give won't capture the full nuance) > > I don't think subtransactions per-se are a fundamental problem. I think the > error handling implementation is ridiculously complicated, and while I started > to hack on improving it, I stopped when I really couldn't understand what > errors it actually needs to handle when and why. Ah, thanks for the clarification. That makes sense. >> * Debate on how to handle the type coercions > > That's partially related to the error handling issue above. > > One way this code could be drastically simplified is to force all > type-coercions to go through the "io coercion" path, which could be > implemented as a single execution step (which thus could trivially > start/finish a subtransaction) and would remove a lot of the complicated code > around coercions. If we went down this path, would this make you feel more comfortable with including this work in the v15 release? Thanks, Jonathan
Commits
-
JSON_TABLE: Add support for NESTED paths and columns
- bb766cde63b4 17.0 landed
-
Add basic JSON_TABLE() functionality
- de3600452b61 17.0 landed
-
Add SQL/JSON query functions
- 6185c9737cf4 17.0 landed
-
Add soft error handling to some expression nodes
- aaaf9449ec6b 17.0 landed
-
Adjust populate_record_field() to handle errors softly
- 1edb3b491bee 17.0 landed
-
Refactor code used by jsonpath executor to fetch variables
- faa2b953ba3b 17.0 landed
-
Add more SQL/JSON constructor functions
- 03734a7fed7d 17.0 landed
-
SQL/JSON: support the IS JSON predicate
- 6ee30209a6f1 16.0 landed
-
SQL/JSON: add standard JSON constructor functions
- 7081ac46ace8 16.0 landed
-
Add static assertion ensuring sizeof(ExprEvalStep) <= 64 bytes
- 78be04e4c672 16.0 landed
-
Remove size increase in ExprEvalStep caused by hashed saops
- 30efc3b5a364 15.0 landed
- fe3caa143937 16.0 landed
-
pgstat: reduce timer overhead by leaving timer running.
- 4a37527fde3c 15.0 landed
- 056cc366fafa 16.0 landed
-
expression eval: Fix EEOP_JSON_CONSTRUCTOR and EEOP_JSONEXPR size.
- 5a1ab894f758 15.0 landed
- 67b26703b415 16.0 landed
-
SQL/JSON query functions
- 1a36bc9dba8e 15.0 cited
-
Speedup ScalarArrayOpExpr evaluation
- 50e17ad281b8 14.0 cited