diff options
Diffstat (limited to 'src/backend/catalog')
-rw-r--r-- | src/backend/catalog/dependency.c | 35 | ||||
-rw-r--r-- | src/backend/catalog/heap.c | 12 | ||||
-rw-r--r-- | src/backend/catalog/index.c | 4 | ||||
-rw-r--r-- | src/backend/catalog/pg_proc.c | 4 |
4 files changed, 25 insertions, 30 deletions
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index bd837da31ac..bcc92bfab0f 100644 --- a/src/backend/catalog/dependency.c +++ b/src/backend/catalog/dependency.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.17 2002/12/06 05:00:10 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.18 2002/12/12 15:49:21 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -806,25 +806,28 @@ find_expr_references_walker(Node *node, } return false; } - if (IsA(node, Expr)) + if (IsA(node, FuncExpr)) { - Expr *expr = (Expr *) node; + FuncExpr *funcexpr = (FuncExpr *) node; - if (expr->opType == OP_EXPR || - expr->opType == DISTINCT_EXPR) - { - Oper *oper = (Oper *) expr->oper; + add_object_address(OCLASS_PROC, funcexpr->funcid, 0, + &context->addrs); + /* fall through to examine arguments */ + } + if (IsA(node, OpExpr)) + { + OpExpr *opexpr = (OpExpr *) node; - add_object_address(OCLASS_OPERATOR, oper->opno, 0, - &context->addrs); - } - else if (expr->opType == FUNC_EXPR) - { - Func *func = (Func *) expr->oper; + add_object_address(OCLASS_OPERATOR, opexpr->opno, 0, + &context->addrs); + /* fall through to examine arguments */ + } + if (IsA(node, DistinctExpr)) + { + DistinctExpr *distinctexpr = (DistinctExpr *) node; - add_object_address(OCLASS_PROC, func->funcid, 0, - &context->addrs); - } + add_object_address(OCLASS_OPERATOR, distinctexpr->opno, 0, + &context->addrs); /* fall through to examine arguments */ } if (IsA(node, Aggref)) diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index f8f667e24a9..bd068271acd 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.235 2002/11/15 02:50:05 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.236 2002/12/12 15:49:23 tgl Exp $ * * * INTERFACE ROUTINES @@ -1603,11 +1603,6 @@ AddRelationRawConstraints(Relation rel, expr = (Node *) make_ands_implicit((Expr *) expr); /* - * Must fix opids in operator clauses. - */ - fix_opids(expr); - - /* * OK, store it. */ StoreRelCheck(rel, ccname, nodeToString(expr)); @@ -1750,11 +1745,6 @@ cookDefault(ParseState *pstate, */ expr = eval_const_expressions(expr); - /* - * Must fix opids, in case any operators remain... - */ - fix_opids(expr); - return (expr); } diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index cdac597ae5f..c11bd5b172b 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.205 2002/11/13 00:39:46 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.206 2002/12/12 15:49:24 tgl Exp $ * * * INTERFACE ROUTINES @@ -41,6 +41,7 @@ #include "executor/executor.h" #include "miscadmin.h" #include "optimizer/clauses.h" +#include "optimizer/planmain.h" #include "optimizer/prep.h" #include "parser/parse_func.h" #include "storage/sinval.h" @@ -919,6 +920,7 @@ BuildIndexInfo(Form_pg_index indexStruct) predString = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(&indexStruct->indpred))); ii->ii_Predicate = stringToNode(predString); + fix_opfuncids((Node *) ii->ii_Predicate); pfree(predString); } else diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index b915a02c310..14f37344b4d 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.94 2002/09/18 21:35:20 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.95 2002/12/12 15:49:24 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -424,7 +424,7 @@ checkretval(Oid rettype, char fn_typtype, List *queryTreeList) } while (attr->attisdropped); rellogcols++; - tletype = exprType(tle->expr); + tletype = exprType((Node *) tle->expr); atttype = attr->atttypid; if (!IsBinaryCoercible(tletype, atttype)) elog(ERROR, "function declared to return %s returns %s instead of %s at column %d", |