From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Add the ability for the core grammar to have more than one parse |
Date: | 2021-01-04 17:39:40 |
Message-ID: | E1kwTpU-0000yR-PX@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Add the ability for the core grammar to have more than one parse target.
This patch essentially allows gram.y to implement a family of related
syntax trees, rather than necessarily always parsing a list of SQL
statements. raw_parser() gains a new argument, enum RawParseMode,
to say what to do. As proof of concept, add a mode that just parses
a TypeName without any other decoration, and use that to greatly
simplify typeStringToTypeName().
In addition, invent a new SPI entry point SPI_prepare_extended() to
allow SPI users (particularly plpgsql) to get at this new functionality.
In hopes of making this the last variant of SPI_prepare(), set up its
additional arguments as a struct rather than direct arguments, and
promise that future additions to the struct can default to zero.
SPI_prepare_cursor() and SPI_prepare_params() can perhaps go away at
some point.
Discussion: https://postgr.es/m/4165684.1607707277@sss.pgh.pa.us
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/844fe9f159a948377907a63d0ef3fb16dc51ce50
Modified Files
--------------
doc/src/sgml/spi.sgml | 126 +++++++++++++++++++++++++++++++++++
src/backend/commands/tablecmds.c | 2 +-
src/backend/executor/spi.c | 52 ++++++++++++++-
src/backend/parser/gram.y | 22 +++++-
src/backend/parser/parse_coerce.c | 5 +-
src/backend/parser/parse_type.c | 64 ++----------------
src/backend/parser/parser.c | 27 ++++++--
src/backend/tcop/postgres.c | 2 +-
src/include/executor/spi.h | 13 +++-
src/include/executor/spi_priv.h | 1 +
src/include/parser/parser.h | 20 +++++-
src/interfaces/ecpg/preproc/parse.pl | 2 +-
src/pl/plpgsql/src/pl_exec.c | 13 ++--
src/pl/plpgsql/src/pl_gram.y | 2 +-
14 files changed, 268 insertions(+), 83 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Munro | 2021-01-04 22:43:51 | pgsql: Remove unused function prototypes. |
Previous Message | Michael Paquier | 2021-01-04 10:49:21 | pgsql: Simplify some comments in xml.c |