Re: WIP: Faster Expression Processing v4
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Tomas Vondra <tomas.vondra@2ndquadrant.com>, pgsql-hackers@postgresql.org
Date: 2017-03-14T17:34:10Z
Lists: pgsql-hackers
On 2017-03-14 08:28:02 -0300, Alvaro Herrera wrote:
> Andres Freund wrote:
>
> > EEO_SWITCH(op->opcode)
> > {
> > EEO_CASE(EEO_DONE):
> > goto out;
>
> Oh my.
>
> > which is a bit annoying. (the EEO_CASE is either a jump label or a case
> > statement, depending on computed goto availability).
> >
> > It seems we could either:
> > 1) live with the damage
> > 2) disable pgindent
> > 3) move the : inside EEO_CASE's definition, and only use {} blocks.
>
> I think 3) is nasty because the result doesn't look like normal C.
We have a bunch of such constructs already however. foreach(),
PG_TRY(). That means 3) has the advantage that our editors and pgindent
can already deal with it.
> EEO_CASE() are potentially jump labels, then indentation becomes
> correct. Why not accept it? It looks odd, but that gives a better hint
> to the reader about what's going on.
Seems likely that every editor would indent them differently :(
I'm leaning towards 3) for the reasons above and after trying out the
different indentations, but I don't have a strong opinion.
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