1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-27 00:12:01 +03:00

Change set_plan_references and join_references to take an rtable List

rather than a Query node; this allows set_plan_references to recurse
into subplans correctly.  Fixes core dump on full outer joins in
subplans.  Also, invoke preprocess_expression on function RTEs'
function expressions.  This seems to fix the planner's problems with
outer-level Vars in function RTEs.
This commit is contained in:
Tom Lane
2002-05-18 02:25:50 +00:00
parent 0a757154bd
commit 51fd22abdd
7 changed files with 78 additions and 57 deletions

View File

@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: planmain.h,v 1.56 2002/04/28 19:54:28 tgl Exp $
* $Id: planmain.h,v 1.57 2002/05/18 02:25:50 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -56,8 +56,8 @@ extern void process_implied_equality(Query *root, Node *item1, Node *item2,
/*
* prototypes for plan/setrefs.c
*/
extern void set_plan_references(Query *root, Plan *plan);
extern List *join_references(List *clauses, Query *root,
extern void set_plan_references(Plan *plan, List *rtable);
extern List *join_references(List *clauses, List *rtable,
List *outer_tlist, List *inner_tlist,
Index acceptable_rel);
extern void fix_opids(Node *node);

View File

@@ -7,14 +7,14 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: var.h,v 1.19 2002/04/28 19:54:28 tgl Exp $
* $Id: var.h,v 1.20 2002/05/18 02:25:50 tgl Exp $
*
*-------------------------------------------------------------------------
*/
#ifndef VAR_H
#define VAR_H
#include "nodes/parsenodes.h"
#include "nodes/primnodes.h"
extern List *pull_varnos(Node *node);
@@ -23,6 +23,6 @@ extern bool contain_var_reference(Node *node, int varno, int varattno,
extern bool contain_whole_tuple_var(Node *node, int varno, int levelsup);
extern bool contain_var_clause(Node *node);
extern List *pull_var_clause(Node *node, bool includeUpperVars);
extern Node *flatten_join_alias_vars(Node *node, Query *root, bool force);
extern Node *flatten_join_alias_vars(Node *node, List *rtable, bool force);
#endif /* VAR_H */