diff options
Diffstat (limited to 'src/backend/optimizer')
-rw-r--r-- | src/backend/optimizer/plan/subselect.c | 9 | ||||
-rw-r--r-- | src/backend/optimizer/prep/prepunion.c | 5 | ||||
-rw-r--r-- | src/backend/optimizer/util/clauses.c | 14 |
3 files changed, 16 insertions, 12 deletions
diff --git a/src/backend/optimizer/plan/subselect.c b/src/backend/optimizer/plan/subselect.c index 15d16d00221..4be69d77cfd 100644 --- a/src/backend/optimizer/plan/subselect.c +++ b/src/backend/optimizer/plan/subselect.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/subselect.c,v 1.74 2003/04/08 23:20:01 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/subselect.c,v 1.75 2003/04/29 22:13:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -495,10 +495,13 @@ convert_sublink_opers(List *lefthand, List *operOids, * Make the expression node. * * Note: we use make_op_expr in case runtime type conversion - * function calls must be inserted for this operator! + * function calls must be inserted for this operator! (But we + * are not expecting to have to resolve unknown Params, so + * it's okay to pass a null pstate.) */ result = lappend(result, - make_op_expr(tup, + make_op_expr(NULL, + tup, leftop, rightop, exprType(leftop), diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c index fb7bf9e7070..d2b91c2ec6d 100644 --- a/src/backend/optimizer/prep/prepunion.c +++ b/src/backend/optimizer/prep/prepunion.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.93 2003/04/24 23:43:09 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.94 2003/04/29 22:13:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -418,7 +418,8 @@ generate_setop_tlist(List *colTypes, int flag, } else { - expr = coerce_to_common_type(expr, + expr = coerce_to_common_type(NULL, /* no UNKNOWNs here */ + expr, colType, "UNION/INTERSECT/EXCEPT"); colTypmod = -1; diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index 778fc3a2bb9..c0ffd939cbe 100644 --- a/src/backend/optimizer/util/clauses.c +++ b/src/backend/optimizer/util/clauses.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.135 2003/04/27 20:09:44 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.136 2003/04/29 22:13:09 tgl Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -1747,17 +1747,17 @@ inline_function(Oid funcid, Oid result_type, List *args, /* * We just do parsing and parse analysis, not rewriting, because - * rewriting will not affect SELECT-only queries, which is all that - * we care about. Also, we can punt as soon as we detect more than + * rewriting will not affect table-free-SELECT-only queries, which is all + * that we care about. Also, we can punt as soon as we detect more than * one command in the function body. */ - raw_parsetree_list = pg_parse_query(src, - funcform->proargtypes, - funcform->pronargs); + raw_parsetree_list = pg_parse_query(src); if (length(raw_parsetree_list) != 1) goto fail; - querytree_list = parse_analyze(lfirst(raw_parsetree_list), NULL); + querytree_list = parse_analyze(lfirst(raw_parsetree_list), + funcform->proargtypes, + funcform->pronargs); if (length(querytree_list) != 1) goto fail; |