mirror of
https://github.com/postgres/postgres.git
synced 2026-04-15 22:10:45 -04:00
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
|
||
|---|---|---|
| .. | ||
| bitmapset.h | ||
| execnodes.h | ||
| extensible.h | ||
| lockoptions.h | ||
| makefuncs.h | ||
| memnodes.h | ||
| nodeFuncs.h | ||
| nodes.h | ||
| params.h | ||
| parsenodes.h | ||
| pathnodes.h | ||
| pg_list.h | ||
| plannodes.h | ||
| primnodes.h | ||
| print.h | ||
| readfuncs.h | ||
| replnodes.h | ||
| subscripting.h | ||
| supportnodes.h | ||
| tidbitmap.h | ||
| value.h | ||