diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2001-06-05 05:26:05 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2001-06-05 05:26:05 +0000 |
commit | 7c579fa12df0def35192e1e3cfc9ea7ab90bb0cb (patch) | |
tree | 70886176df00ac556e7992fde6e2ffd7c90530f9 /src/include/optimizer/pathnode.h | |
parent | 28d2420eefdacfa928138d4b302fd6a31286225b (diff) | |
download | postgresql-7c579fa12df0def35192e1e3cfc9ea7ab90bb0cb.tar.gz postgresql-7c579fa12df0def35192e1e3cfc9ea7ab90bb0cb.zip |
Further work on making use of new statistics in planner. Adjust APIs
of costsize.c routines to pass Query root, so that costsize can figure
more things out by itself and not be so dependent on its callers to tell
it everything it needs to know. Use selectivity of hash or merge clause
to estimate number of tuples processed internally in these joins
(this is more useful than it would've been before, since eqjoinsel is
somewhat more accurate than before).
Diffstat (limited to 'src/include/optimizer/pathnode.h')
-rw-r--r-- | src/include/optimizer/pathnode.h | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/src/include/optimizer/pathnode.h b/src/include/optimizer/pathnode.h index 85ba6936f48..8979c0d947c 100644 --- a/src/include/optimizer/pathnode.h +++ b/src/include/optimizer/pathnode.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pathnode.h,v 1.37 2001/05/20 20:28:20 tgl Exp $ + * $Id: pathnode.h,v 1.38 2001/06/05 05:26:05 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -26,40 +26,43 @@ extern int compare_fractional_path_costs(Path *path1, Path *path2, extern void set_cheapest(RelOptInfo *parent_rel); extern void add_path(RelOptInfo *parent_rel, Path *new_path); -extern Path *create_seqscan_path(RelOptInfo *rel); +extern Path *create_seqscan_path(Query *root, RelOptInfo *rel); extern IndexPath *create_index_path(Query *root, RelOptInfo *rel, IndexOptInfo *index, List *restriction_clauses, List *pathkeys, ScanDirection indexscandir); -extern TidPath *create_tidscan_path(RelOptInfo *rel, List *tideval); +extern TidPath *create_tidscan_path(Query *root, RelOptInfo *rel, + List *tideval); extern AppendPath *create_append_path(RelOptInfo *rel, List *subpaths); extern Path *create_subqueryscan_path(RelOptInfo *rel); -extern NestPath *create_nestloop_path(RelOptInfo *joinrel, - JoinType jointype, - Path *outer_path, - Path *inner_path, - List *restrict_clauses, - List *pathkeys); +extern NestPath *create_nestloop_path(Query *root, + RelOptInfo *joinrel, + JoinType jointype, + Path *outer_path, + Path *inner_path, + List *restrict_clauses, + List *pathkeys); -extern MergePath *create_mergejoin_path(RelOptInfo *joinrel, - JoinType jointype, - Path *outer_path, - Path *inner_path, - List *restrict_clauses, - List *pathkeys, - List *mergeclauses, - List *outersortkeys, - List *innersortkeys); +extern MergePath *create_mergejoin_path(Query *root, + RelOptInfo *joinrel, + JoinType jointype, + Path *outer_path, + Path *inner_path, + List *restrict_clauses, + List *pathkeys, + List *mergeclauses, + List *outersortkeys, + List *innersortkeys); -extern HashPath *create_hashjoin_path(RelOptInfo *joinrel, - JoinType jointype, - Path *outer_path, - Path *inner_path, - List *restrict_clauses, - List *hashclauses, - Selectivity innerbucketsize); +extern HashPath *create_hashjoin_path(Query *root, + RelOptInfo *joinrel, + JoinType jointype, + Path *outer_path, + Path *inner_path, + List *restrict_clauses, + List *hashclauses); /* * prototypes for relnode.c |