diff options
Diffstat (limited to 'src/backend/catalog/dependency.c')
-rw-r--r-- | src/backend/catalog/dependency.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index bd837da31a..bcc92bfab0 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)) |