git.postgresql.org Git - postgresql.git/commit

git projects / postgresql.git / commit
? search:
summary | shortlog | log | commit | commitdiff | tree
(parent: b49154b) | patch
Add the ability for the core grammar to have more than one parse target.
Mon, 4 Jan 2021 16:03:22 +0000 (11:03 -0500)
Mon, 4 Jan 2021 16:03:22 +0000 (11:03 -0500)
commit 844fe9f159a948377907a63d0ef3fb16dc51ce50
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
14 files changed:
doc/src/sgml/spi.sgml diff | blob | blame | history
src/backend/commands/tablecmds.c diff | blob | blame | history
src/backend/executor/spi.c diff | blob | blame | history
src/backend/parser/gram.y diff | blob | blame | history
src/backend/parser/parse_coerce.c diff | blob | blame | history
src/backend/parser/parse_type.c diff | blob | blame | history
src/backend/parser/parser.c diff | blob | blame | history
src/backend/tcop/postgres.c diff | blob | blame | history
src/include/executor/spi.h diff | blob | blame | history
src/include/executor/spi_priv.h diff | blob | blame | history
src/include/parser/parser.h diff | blob | blame | history
src/interfaces/ecpg/preproc/parse.pl diff | blob | blame | history
src/pl/plpgsql/src/pl_exec.c diff | blob | blame | history
src/pl/plpgsql/src/pl_gram.y diff | blob | blame | history
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /