mirror of
https://github.com/postgres/postgres.git
synced 2026-02-11 06:43:59 -05:00
Formerly, DTYPE_REC was used only for variables declared as "record"; variables of named composite types used DTYPE_ROW, which is faster for some purposes but much less flexible. In particular, the ROW code paths are entirely incapable of dealing with DDL-caused changes to the number or data types of the columns of a row variable, once a particular plpgsql function has been parsed for the first time in a session. And, since the stored representation of a ROW isn't a tuple, there wasn't any easy way to deal with variables of domain-over-composite types, since the domain constraint checking code would expect the value to be checked to be a tuple. A lesser, but still real, annoyance is that ROW format cannot represent a true NULL composite value, only a row of per-field NULL values, which is not exactly the same thing. Hence, switch to using DTYPE_REC for all composite-typed variables, whether "record", named composite type, or domain over named composite type. DTYPE_ROW remains but is used only for its native purpose, to represent a fixed-at-compile-time list of variables, for instance the targets of an INTO clause. To accomplish this without taking significant performance losses, introduce infrastructure that allows storing composite-type variables as "expanded objects", similar to the "expanded array" infrastructure introduced in commit |
||
|---|---|---|
| .. | ||
| expected | ||
| po | ||
| sql | ||
| .gitignore | ||
| generate-spiexceptions.pl | ||
| Makefile | ||
| nls.mk | ||
| plpy_cursorobject.c | ||
| plpy_cursorobject.h | ||
| plpy_elog.c | ||
| plpy_elog.h | ||
| plpy_exec.c | ||
| plpy_exec.h | ||
| plpy_main.c | ||
| plpy_main.h | ||
| plpy_planobject.c | ||
| plpy_planobject.h | ||
| plpy_plpymodule.c | ||
| plpy_plpymodule.h | ||
| plpy_procedure.c | ||
| plpy_procedure.h | ||
| plpy_resultobject.c | ||
| plpy_resultobject.h | ||
| plpy_spi.c | ||
| plpy_spi.h | ||
| plpy_subxactobject.c | ||
| plpy_subxactobject.h | ||
| plpy_typeio.c | ||
| plpy_typeio.h | ||
| plpy_util.c | ||
| plpy_util.h | ||
| plpython.h | ||
| plpython2u--1.0.sql | ||
| plpython2u--unpackaged--1.0.sql | ||
| plpython2u.control | ||
| plpython3u--1.0.sql | ||
| plpython3u--unpackaged--1.0.sql | ||
| plpython3u.control | ||
| plpythonu--1.0.sql | ||
| plpythonu--unpackaged--1.0.sql | ||
| plpythonu.control | ||
| regress-python3-mangle.mk | ||