planmain.h 2.5 KB
Newer Older
1 2
/*-------------------------------------------------------------------------
 *
3
 * planmain.h
4
 *	  prototypes for various files in optimizer/plan
5 6
 *
 *
B
Bruce Momjian 已提交
7
 * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
B
Add:  
Bruce Momjian 已提交
8
 * Portions Copyright (c) 1994, Regents of the University of California
9
 *
10
 * $Id: planmain.h,v 1.62 2002/11/19 23:22:00 tgl Exp $
11 12 13 14 15 16
 *
 *-------------------------------------------------------------------------
 */
#ifndef PLANMAIN_H
#define PLANMAIN_H

B
Bruce Momjian 已提交
17 18
#include "nodes/plannodes.h"
#include "nodes/relation.h"
19 20 21 22

/*
 * prototypes for plan/planmain.c
 */
23 24
extern void query_planner(Query *root, List *tlist, double tuple_fraction,
						  Path **cheapest_path, Path **sorted_path);
25 26 27 28

/*
 * prototypes for plan/createplan.c
 */
29
extern Plan *create_plan(Query *root, Path *best_path);
30
extern SubqueryScan *make_subqueryscan(List *qptlist, List *qpqual,
B
Bruce Momjian 已提交
31
				  Index scanrelid, Plan *subplan);
32
extern Append *make_append(List *appendplans, bool isTarget, List *tlist);
33
extern Sort *make_sort(Query *root, List *tlist,
34
		  Plan *lefttree, int keycount);
35
extern Sort *make_sort_from_pathkeys(Query *root, List *tlist,
36
						Plan *lefttree, List *pathkeys);
37
extern Agg *make_agg(List *tlist, List *qual, AggStrategy aggstrategy,
38 39 40 41 42
					 int ngrp, AttrNumber *grpColIdx,
					 long numGroups, int numAggs,
					 Plan *lefttree);
extern Group *make_group(List *tlist,
						 int ngrp, AttrNumber *grpColIdx, double numGroups,
43
						 Plan *lefttree);
44
extern Material *make_material(List *tlist, Plan *lefttree);
45
extern Unique *make_unique(List *tlist, Plan *lefttree, List *distinctList);
46
extern Limit *make_limit(List *tlist, Plan *lefttree,
B
Bruce Momjian 已提交
47
		   Node *limitOffset, Node *limitCount);
48
extern SetOp *make_setop(SetOpCmd cmd, List *tlist, Plan *lefttree,
B
Bruce Momjian 已提交
49
		   List *distinctList, AttrNumber flagColIdx);
50
extern Result *make_result(List *tlist, Node *resconstantqual, Plan *subplan);
51 52 53 54

/*
 * prototypes for plan/initsplan.c
 */
55
extern List *add_base_rels_to_query(Query *root, Node *jtnode);
56
extern void build_base_rel_tlists(Query *root, List *tlist);
57
extern Relids distribute_quals_to_rels(Query *root, Node *jtnode);
58
extern void process_implied_equality(Query *root, Node *item1, Node *item2,
B
Bruce Momjian 已提交
59
						 Oid sortop1, Oid sortop2);
60
extern bool vars_known_equal(Query *root, Var *var1, Var *var2);
61 62 63 64

/*
 * prototypes for plan/setrefs.c
 */
65 66
extern void set_plan_references(Plan *plan, List *rtable);
extern List *join_references(List *clauses, List *rtable,
B
Bruce Momjian 已提交
67 68
				List *outer_tlist, List *inner_tlist,
				Index acceptable_rel);
69
extern void fix_opids(Node *node);
70

71
#endif   /* PLANMAIN_H */