Add optional "validator" function to languages that can validate the
Peter Eisentraut <peter_e@gmx.net>
Add optional "validator" function to languages that can validate the function body (and other properties) as a function in the language is created. This generalizes ad hoc code that already existed for the built-in languages. The validation now happens after the pg_proc tuple of the new function is created, so it is possible to define recursive SQL functions. Add some regression test cases that cover bogus function definition attempts.
Files
| Path | Change | +/− |
|---|---|---|
| doc/src/sgml/ref/create_language.sgml | modified | +28 −2 |
| doc/src/sgml/release.sgml | modified | +5 −3 |
| src/backend/catalog/pg_aggregate.c | modified | +2 −1 |
| src/backend/catalog/pg_proc.c | modified | +133 −67 |
| src/backend/commands/functioncmds.c | modified | +27 −1 |
| src/backend/commands/proclang.c | modified | +17 −3 |
| src/backend/nodes/copyfuncs.c | modified | +2 −1 |
| src/backend/nodes/equalfuncs.c | modified | +3 −1 |
| src/backend/parser/gram.y | modified | +11 −5 |
| src/backend/parser/keywords.c | modified | +2 −1 |
| src/backend/utils/adt/sets.c | modified | +2 −1 |
| src/bin/pg_dump/pg_dump.c | modified | +35 −5 |
| src/include/catalog/catversion.h | modified | +2 −2 |
| src/include/catalog/pg_language.h | modified | +9 −7 |
| src/include/catalog/pg_proc.h | modified | +9 −1 |
| src/include/nodes/parsenodes.h | modified | +2 −1 |
| src/test/regress/input/create_function_1.source | modified | +25 −0 |
| src/test/regress/output/create_function_1.source | modified | +25 −0 |