Re: WIP: Faster Expression Processing v4
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: Tomas Vondra <tomas.vondra@2ndquadrant.com>, pgsql-hackers@postgresql.org
Date: 2017-03-14T22:47:06Z
Lists: pgsql-hackers
Attachments
- 0001-Add-expression-dependencies-on-composite-type-whole-.patch.gz (application/x-patch-gzip) patch 0001
- 0002-Make-get_last_attnums-more-generic.patch.gz (application/x-patch-gzip) patch 0002
- 0003-Add-configure-test-for-computed-goto-support.patch.gz (application/x-patch-gzip) patch 0003
- 0004-Faster-expression-evaluation-and-targetlist-projecti.patch.gz (application/x-patch-gzip) patch 0004
Hi, On 2017-03-14 16:58:54 +0200, Heikki Linnakangas wrote: > * execInterpExpr.c is quite a mouthful. How about exprInterpreter.c? I applied most of your changes in the attached version. Notes: * I quite like how the EEO_JUMP/EEO_NEXT stuff looks now / after your change, that's clearly better. * I reverted the removal of EEO_SWITCH() - pgindent goes a bit bonkers if it can see the switch(), but not the case: statements. * I re-added ExecEvalStepOp() - for one it's hugely useful during debugging, for another I'm actually using it in a follow patch (So JIT compilation can run after the interpreter has been initialized). Added code guaranteeing that we can't run ExecInstantiateInterpretedExpr() twice. * Renamed EEO_* opcode enum members to EEOP_* as suggested * I've not yet renamed execInterpExpr.c - I don't like execInterpreter.c because it doesn't reference expressions and execExprInterpreter.c seems a bit long - but I can live with both (preferring the latter). Not that surprisingly I can also live with execInterpExpr.c ;) * Addressed your size_t sizing concern by using, as is proper anyway, intptr_t. * I tried to clarify the comment in execExpr.c's header that you marked as hard to understand. Greetings, Andres Freund
Commits
-
Improve performance of ExecEvalWholeRowVar.
- 2f0903ea1965 10.0 landed
-
Remove unreachable code in expression evaluation.
- ad46a2aa79f9 10.0 landed
-
Faster expression evaluation and targetlist projection.
- b8d7f053c5c2 10.0 landed
-
Avoid syntax error on platforms that have neither LOCALE_T nor ICU.
- 457a44487328 10.0 cited
-
Add configure test to see if the C compiler has gcc-style computed gotos.
- bc18126a6bcb 10.0 landed
-
Improve regression test coverage for TID scanning.
- be6c3d19fd45 10.0 landed
-
Improve expression evaluation test coverage.
- ce38949ba23a 10.0 landed
-
Fix two errors with nested CASE/WHEN constructs.
- f0c7b789ab12 9.6.0 cited