Commit 372e598c authored by Tom Lane's avatar Tom Lane

Arrange for CASE or UNION with only untyped literal constants as input

to resolve the unknown constants as type TEXT.
parent 9bbca2c0
......@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.47 2000/10/05 19:11:33 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.48 2000/11/09 04:14:32 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -374,6 +374,22 @@ select_common_type(List *typeids, const char *context)
}
}
}
/*
* If all the inputs were UNKNOWN type --- ie, unknown-type literals ---
* then resolve as type TEXT. This situation comes up with constructs
* like
* SELECT (CASE WHEN foo THEN 'bar' ELSE 'baz' END);
* SELECT 'foo' UNION SELECT 'bar';
* It might seem desirable to leave the construct's output type as
* UNKNOWN, but that really doesn't work, because we'd probably end up
* needing a runtime coercion from UNKNOWN to something else, and we
* usually won't have it. We need to coerce the unknown literals while
* they are still literals, so a decision has to be made now.
*/
if (ptype == UNKNOWNOID)
ptype = TEXTOID;
return ptype;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment