pgsql: Improve parsetree representation of special functions such as CU

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Improve parsetree representation of special functions such as CU
Дата
Msg-id E1bZon7-0003Nn-CQ@gemulon.postgresql.org
обсуждение исходный текст
Список 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.1463091294@sss.pgh.pa.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(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Suppress -Wunused-result warning for strtol().
Следующее
От: Bruce Momjian
Дата:
Сообщение: pgsql: docs: my third pass over the 9.6 release notes