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:
@@ -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);
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user