From ef48ed4c86e65c9a173ead5e08ec23f783849b51 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 22 Nov 2007 19:40:25 +0000 Subject: [PATCH] Actually ... it's pretty silly that parse_oper.c doesn't set up the opfuncid of an OpExpr initially, considering that it has the information at hand already. We'll still treat opfuncid as a cache rather than a guaranteed-valid value, but this change saves one more syscache lookup in the normal code path. --- src/backend/parser/parse_oper.c | 6 +++--- src/include/nodes/primnodes.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/backend/parser/parse_oper.c b/src/backend/parser/parse_oper.c index 3367ee2a87..898c456b97 100644 --- a/src/backend/parser/parse_oper.c +++ b/src/backend/parser/parse_oper.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_oper.c,v 1.97 2007/11/15 21:14:37 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_oper.c,v 1.98 2007/11/22 19:40:25 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -939,7 +939,7 @@ make_scalar_array_op(ParseState *pstate, List *opname, /* and build the expression node */ result = makeNode(ScalarArrayOpExpr); result->opno = oprid(tup); - result->opfuncid = InvalidOid; + result->opfuncid = opform->oprcode; result->useOr = useOr; result->args = args; @@ -1011,7 +1011,7 @@ make_op_expr(ParseState *pstate, Operator op, /* and build the expression node */ result = makeNode(OpExpr); result->opno = oprid(op); - result->opfuncid = InvalidOid; + result->opfuncid = opform->oprcode; result->opresulttype = rettype; result->opretset = get_func_retset(opform->oprcode); result->args = args; diff --git a/src/include/nodes/primnodes.h b/src/include/nodes/primnodes.h index 4b940791a2..bc8064ece4 100644 --- a/src/include/nodes/primnodes.h +++ b/src/include/nodes/primnodes.h @@ -10,7 +10,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.135 2007/11/15 22:25:17 momjian Exp $ + * $PostgreSQL: pgsql/src/include/nodes/primnodes.h,v 1.136 2007/11/22 19:40:25 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -302,7 +302,7 @@ typedef struct FuncExpr * * Note that opfuncid is not necessarily filled in immediately on creation * of the node. The planner makes sure it is valid before passing the node - * tree to the executor, but during parsing/planning opfuncid is typically 0. + * tree to the executor, but during parsing/planning opfuncid can be 0. */ typedef struct OpExpr {