Un-break whole-row Vars referencing domain-over-composite types.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 10 Jun 2022 14:35:57 +0000 (10:35 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 10 Jun 2022 14:35:57 +0000 (10:35 -0400)
commit1218780ccebace6a4c4d5872d7b158aa36e6882e
tree58394d4b2f0523579f7cbe565ea44c4bc98c4c34
parent21724558650a7387ffbc2b0da53d6314389419bb
Un-break whole-row Vars referencing domain-over-composite types.

In commit ec62cb0aa, I foolishly replaced ExecEvalWholeRowVar's
lookup_rowtype_tupdesc_domain call with just lookup_rowtype_tupdesc,
because I didn't see how a domain could be involved there, and
there were no regression test cases to jog my memory.  But the
existing code was correct, so revert that change and add a test
case showing why it's necessary.  (Note: per comment in struct
DatumTupleFields, it is correct to produce an output tuple that's
labeled with the base composite type, not the domain; hence just
blindly looking through the domain is correct here.)

Per bug #17515 from Dan Kubb.  Back-patch to v11 where domains over
composites became a thing.

Discussion: https://postgr.es/m/17515-a24737438363aca0@postgresql.org
src/backend/executor/execExprInterp.c
src/test/regress/expected/domain.out
src/test/regress/sql/domain.sql