From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Improve parsetree representation of special functions such as CU |
Date: | 2016-08-17 00:33:09 |
Message-ID: | E1bZon7-0003Nn-CQ@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Improve parsetree representation of special functions such as CURRENT_DATE.
We implement a dozen or so parameterless functions that the SQL standard
defines special syntax for. Up to now, that was done by converting them
into more or less ad-hoc constructs such as "'now'::text::date". That's
messy for multiple reasons: it exposes what should be implementation
details to users, and performance is worse than it needs to be in several
cases. To improve matters, invent a new expression node type
SQLValueFunction that can represent any of these parameterless functions.
Bump catversion because this changes stored parsetrees for rules.
Discussion: <30058(dot)1463091294(at)sss(dot)pgh(dot)pa(dot)us>
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/0bb51aa96783e8a6c473c2b5e3725e23e95db834
Modified Files
--------------
contrib/pg_stat_statements/pg_stat_statements.c | 9 ++
src/backend/executor/execQual.c | 78 +++++++++++++++
src/backend/nodes/copyfuncs.c | 19 ++++
src/backend/nodes/equalfuncs.c | 14 +++
src/backend/nodes/nodeFuncs.c | 27 +++++-
src/backend/nodes/outfuncs.c | 14 +++
src/backend/nodes/readfuncs.c | 18 ++++
src/backend/optimizer/util/clauses.c | 16 ++-
src/backend/parser/gram.y | 124 ++++++------------------
src/backend/parser/parse_expr.c | 62 ++++++++++++
src/backend/parser/parse_target.c | 43 ++++++++
src/backend/utils/adt/date.c | 93 ++++++++++++++++--
src/backend/utils/adt/ruleutils.c | 62 ++++++++++++
src/backend/utils/adt/timestamp.c | 60 ++++++++++--
src/include/catalog/catversion.h | 2 +-
src/include/nodes/nodes.h | 1 +
src/include/nodes/primnodes.h | 39 ++++++++
src/include/utils/date.h | 4 +
src/include/utils/timestamp.h | 4 +
src/pl/plpgsql/src/pl_exec.c | 3 +
src/test/regress/expected/rowsecurity.out | 16 +--
src/test/regress/expected/rules.out | 6 +-
src/test/regress/expected/select_views.out | 40 ++++----
src/test/regress/expected/select_views_1.out | 40 ++++----
24 files changed, 626 insertions(+), 168 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2016-08-17 03:05:42 | pgsql: docs: my third pass over the 9.6 release notes |
Previous Message | Tom Lane | 2016-08-16 20:14:24 | pgsql: Suppress -Wunused-result warning for strtol(). |