Re: WIP: Faster Expression Processing v4

Alvaro Herrera <alvherre@2ndquadrant.com>

From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Andres Freund <andres@anarazel.de>
Cc: Tomas Vondra <tomas.vondra@2ndquadrant.com>, pgsql-hackers@postgresql.org
Date: 2017-03-14T11:28:02Z
Lists: pgsql-hackers
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.  If
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.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Commits

  1. Improve performance of ExecEvalWholeRowVar.

  2. Remove unreachable code in expression evaluation.

  3. Faster expression evaluation and targetlist projection.

  4. Avoid syntax error on platforms that have neither LOCALE_T nor ICU.

  5. Add configure test to see if the C compiler has gcc-style computed gotos.

  6. Improve regression test coverage for TID scanning.

  7. Improve expression evaluation test coverage.

  8. Fix two errors with nested CASE/WHEN constructs.