]> granicus.if.org Git - postgresql/commit
Fix select_common_type() so that it can select a domain type, if all inputs
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 26 Nov 2007 16:46:51 +0000 (16:46 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 26 Nov 2007 16:46:51 +0000 (16:46 +0000)
commit07daff63c55b2d33545d794b6058423dc846529d
treedc80acd1653e18d53947891f75c70beedb61f30b
parent3f398e4a27d0a7e7a4d230555728efe39c965591
Fix select_common_type() so that it can select a domain type, if all inputs
to a UNION, CASE, or related construct are of the same domain type.  The
main part of this routine smashes domains to their base types, which seems
necessary because the logic involves TypeCategory() and IsPreferredType(),
neither of which work usefully on domains.  However, we can add a first
pass that just detects whether all the inputs are exactly the same type,
and if so accept that without question (so long as it's not UNKNOWN).
Per recent gripe from Dean Rasheed.

In passing, remove some tests for InvalidOid, which have clearly been dead
code for quite some time now, because getBaseType() would fail on that input.

Also, clarify the manual's not-very-precise description of the existing
algorithm's behavior.
doc/src/sgml/typeconv.sgml
src/backend/parser/parse_coerce.c
src/test/regress/expected/domain.out
src/test/regress/sql/domain.sql