]> granicus.if.org Git - postgresql/commit
Fix plpgsql to enforce domain checks when returning a NULL domain value.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 15 Feb 2018 21:25:19 +0000 (16:25 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 15 Feb 2018 21:25:19 +0000 (16:25 -0500)
commit51db0d18fbf58b0c2e5ebc2b5b2c48daf45c8d93
tree30fe1118750ea9c2805bd38a7485390f4d381715
parent439c7bc1a070d746fab69d8696fca78673e64ba9
Fix plpgsql to enforce domain checks when returning a NULL domain value.

If a plpgsql function is declared to return a domain type, and the domain's
constraints forbid a null value, it was nonetheless possible to return
NULL, because we didn't bother to check the constraints for a null result.
I'd noticed this while fooling with domains-over-composite, but had not
gotten around to fixing it immediately.

Add a regression test script exercising this and various other domain
cases, largely borrowed from the plpython_types test.

Although this is clearly a bug fix, I'm not sure whether anyone would
thank us for changing the behavior in stable branches, so I'm inclined
not to back-patch.
src/pl/plpgsql/src/Makefile
src/pl/plpgsql/src/expected/plpgsql_domain.out [new file with mode: 0644]
src/pl/plpgsql/src/pl_comp.c
src/pl/plpgsql/src/pl_exec.c
src/pl/plpgsql/src/plpgsql.h
src/pl/plpgsql/src/sql/plpgsql_domain.sql [new file with mode: 0644]