*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
}
}
}
+
+ /*
+ * 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;
}