1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-15 14:02:29 +03:00

Improved version of patch to protect pg_get_expr() against misuse:

look through join alias Vars to avoid breaking join queries, and
move the test to someplace where it will catch more possible ways
of calling a function.  We still ought to throw away the whole thing
in favor of a data-type-based solution, but that's not feasible in
the back branches.

This needs to be back-patched further than 9.0, but I don't have time
to do so today.  Committing now so that the fix gets into 9.0beta4.
This commit is contained in:
Tom Lane
2010-07-29 23:16:33 +00:00
parent 5b8bd0529e
commit f223bb7a41
4 changed files with 133 additions and 100 deletions

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/parser/parse_oper.c,v 1.113 2010/02/26 02:00:52 momjian Exp $
* $PostgreSQL: pgsql/src/backend/parser/parse_oper.c,v 1.114 2010/07/29 23:16:33 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -869,6 +869,9 @@ make_op(ParseState *pstate, List *opname, Node *ltree, Node *rtree,
ReleaseSysCache(tup);
/* Hack to protect pg_get_expr() against misuse */
check_pg_get_expr_args(pstate, result->opfuncid, args);
return (Expr *) result;
}
@@ -997,6 +1000,9 @@ make_scalar_array_op(ParseState *pstate, List *opname,
ReleaseSysCache(tup);
/* Hack to protect pg_get_expr() against misuse */
check_pg_get_expr_args(pstate, result->opfuncid, args);
return (Expr *) result;
}