From dadb14fa60f2cb5c5acbd10faaf72aacc3cef56d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 23 Mar 2000 07:36:03 +0000 Subject: [PATCH] Hack parse_coerce so it won't try to constant-fold the dummy Const nodes introduced by make_subplan(). It'd be better if we used a different node type for subplan result placeholders, but for now... --- src/backend/parser/parse_coerce.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c index c7cbcd37d4..70b2d13aa5 100644 --- a/src/backend/parser/parse_coerce.c +++ b/src/backend/parser/parse_coerce.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.39 2000/03/20 15:42:45 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.40 2000/03/23 07:36:03 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -38,8 +38,9 @@ coerce_type(ParseState *pstate, Node *node, Oid inputTypeId, { Node *result; - if (targetTypeId == InvalidOid || - targetTypeId == inputTypeId) + if (targetTypeId == inputTypeId || + targetTypeId == InvalidOid || + node == NULL) { /* no conversion needed */ result = node; @@ -141,8 +142,13 @@ coerce_type(ParseState *pstate, Node *node, Oid inputTypeId, * * Note that no folding will occur if the conversion function is * not marked 'iscachable'. + * + * HACK: if constant is NULL, don't fold it here. This is needed + * by make_subplan(), which calls this routine on placeholder Const + * nodes that mustn't be collapsed. (It'd be a lot cleaner to make + * a separate node type for that purpose...) */ - if (IsA(node, Const)) + if (IsA(node, Const) && ! ((Const *) node)->constisnull) result = eval_const_expressions(result); } @@ -614,7 +620,6 @@ PromoteLesserType(Oid inType1, Oid inType2, Oid *newType1, Oid *newType2) { case (BPCHAROID): case (VARCHAROID): - case (BYTEA): case (TEXTOID): case (INT2OID): -- 2.11.0