mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-15 08:20:16 +08:00
c9d5298485
Invent new RawParseModes that allow the core grammar to handle
pl/pgsql expressions and assignments directly, and thereby get rid
of a lot of hackery in pl/pgsql's parser. This moves a good deal
of knowledge about pl/pgsql into the core code: notably, we have to
invent a CoercionContext that matches pl/pgsql's (rather dubious)
historical behavior for assignment coercions. That's getting away
from the original idea of pl/pgsql as an arm's-length extension of
the core, but really we crossed that bridge a long time ago.
The main advantage of doing this is that we can now use the core
parser to generate FieldStore and/or SubscriptingRef nodes to handle
assignments to pl/pgsql variables that are records or arrays. That
fixes a number of cases that had never been implemented in pl/pgsql
assignment, such as nested records and array slicing, and it allows
pl/pgsql assignment to support the datatype-specific subscripting
behaviors introduced in commit
|
||
---|---|---|
.. | ||
data | ||
expected | ||
sql | ||
.gitignore | ||
hstore_compat.c | ||
hstore_gin.c | ||
hstore_gist.c | ||
hstore_io.c | ||
hstore_op.c | ||
hstore_subs.c | ||
hstore--1.1--1.2.sql | ||
hstore--1.2--1.3.sql | ||
hstore--1.3--1.4.sql | ||
hstore--1.4--1.5.sql | ||
hstore--1.4.sql | ||
hstore--1.5--1.6.sql | ||
hstore--1.6--1.7.sql | ||
hstore--1.7--1.8.sql | ||
hstore.control | ||
hstore.h | ||
Makefile |