*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.28 1999/02/10 03:52:35 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.29 1999/02/10 21:02:33 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* RelOptInfo is a subclass of Node.
*/
static bool
-_equalRelOptInfo(RelOptInfo * a, RelOptInfo * b)
+_equalRelOptInfo(RelOptInfo *a, RelOptInfo *b)
{
Assert(IsA(a, RelOptInfo));
Assert(IsA(b, RelOptInfo));
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/Attic/freefuncs.c,v 1.5 1999/02/10 03:52:35 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/Attic/freefuncs.c,v 1.6 1999/02/10 21:02:33 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* ----------------
*/
static void
-_freeRelOptInfo(RelOptInfo * node)
+_freeRelOptInfo(RelOptInfo *node)
{
/* ----------------
* free remainder of node
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: geqo_eval.c,v 1.26 1999/02/03 21:16:19 momjian Exp $
+ * $Id: geqo_eval.c,v 1.27 1999/02/10 21:02:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#include "optimizer/geqo_paths.h"
-static List *gimme_clause_joins(Query *root, RelOptInfo * outer_rel, RelOptInfo * inner_rel);
-static RelOptInfo *gimme_clauseless_join(RelOptInfo * outer_rel, RelOptInfo * inner_rel);
-static RelOptInfo *init_join_rel(RelOptInfo * outer_rel, RelOptInfo * inner_rel, JoinInfo * joininfo);
+static List *gimme_clause_joins(Query *root, RelOptInfo *outer_rel, RelOptInfo *inner_rel);
+static RelOptInfo *gimme_clauseless_join(RelOptInfo *outer_rel, RelOptInfo *inner_rel);
+static RelOptInfo *init_join_rel(RelOptInfo *outer_rel, RelOptInfo *inner_rel, JoinInfo * joininfo);
static List *new_join_tlist(List *tlist, List *other_relids, int first_resdomno);
static List *new_joininfo_list(List *joininfo_list, List *join_relids);
-static void geqo_joinrel_size(RelOptInfo * joinrel, RelOptInfo * outer_rel, RelOptInfo * inner_rel);
+static void geqo_joinrel_size(RelOptInfo *joinrel, RelOptInfo *outer_rel, RelOptInfo *inner_rel);
static RelOptInfo *geqo_nth(int stop, List *rels);
/*
* Returns a new join relation incorporating all joins in a left-sided tree.
*/
RelOptInfo *
-gimme_tree(Query *root, Gene *tour, int rel_count, int num_gene, RelOptInfo * outer_rel)
+gimme_tree(Query *root, Gene *tour, int rel_count, int num_gene, RelOptInfo *outer_rel)
{
RelOptInfo *inner_rel; /* current relation */
int base_rel_index;
*/
static List *
-gimme_clause_joins(Query *root, RelOptInfo * outer_rel, RelOptInfo * inner_rel)
+gimme_clause_joins(Query *root, RelOptInfo *outer_rel, RelOptInfo *inner_rel)
{
List *join_list = NIL;
List *i = NIL;
*/
static RelOptInfo *
-gimme_clauseless_join(RelOptInfo * outer_rel, RelOptInfo * inner_rel)
+gimme_clauseless_join(RelOptInfo *outer_rel, RelOptInfo *inner_rel)
{
return init_join_rel(outer_rel, inner_rel, (JoinInfo *) NULL);
}
* Returns the new join relation node.
*/
static RelOptInfo *
-init_join_rel(RelOptInfo * outer_rel, RelOptInfo * inner_rel, JoinInfo * joininfo)
+init_join_rel(RelOptInfo *outer_rel, RelOptInfo *inner_rel, JoinInfo * joininfo)
{
RelOptInfo *joinrel = makeNode(RelOptInfo);
List *joinrel_joininfo_list = NIL;
* Modifies the superrels field of rel
*/
static void
-add_superrels(RelOptInfo * rel, RelOptInfo * super_rel)
+add_superrels(RelOptInfo *rel, RelOptInfo *super_rel)
{
rel->superrels = lappend(rel->superrels, super_rel);
}
* Returns non-nil if rel1 and rel2 do not overlap.
*/
static bool
-nonoverlap_rels(RelOptInfo * rel1, RelOptInfo * rel2)
+nonoverlap_rels(RelOptInfo *rel1, RelOptInfo *rel2)
{
return nonoverlap_sets(rel1->relids, rel2->relids);
}
* long join queries; so get logarithm of size when MAXINT overflow;
*/
static void
-geqo_joinrel_size(RelOptInfo * joinrel, RelOptInfo * outer_rel, RelOptInfo * inner_rel)
+geqo_joinrel_size(RelOptInfo *joinrel, RelOptInfo *outer_rel, RelOptInfo *inner_rel)
{
Cost temp;
int ntuples;
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: geqo_misc.c,v 1.13 1999/02/10 03:52:37 momjian Exp $
+ * $Id: geqo_misc.c,v 1.14 1999/02/10 21:02:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
}
void
-geqo_print_rel(Query *root, RelOptInfo * rel)
+geqo_print_rel(Query *root, RelOptInfo *rel)
{
List *l;
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: geqo_paths.c,v 1.14 1999/02/09 03:51:15 momjian Exp $
+ * $Id: geqo_paths.c,v 1.15 1999/02/10 21:02:35 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#include "optimizer/geqo_paths.h"
-static List *geqo_prune_rel(RelOptInfo * rel, List *other_rels);
-static Path *set_paths(RelOptInfo * rel, Path *unorderedpath);
+static List *geqo_prune_rel(RelOptInfo *rel, List *other_rels);
+static Path *set_paths(RelOptInfo *rel, Path *unorderedpath);
/*
* geqo-prune-rels--
*
*/
static List *
-geqo_prune_rel(RelOptInfo * rel, List *other_rels)
+geqo_prune_rel(RelOptInfo *rel, List *other_rels)
{
List *i = NIL;
List *t_list = NIL;
*
*/
void
-geqo_rel_paths(RelOptInfo * rel)
+geqo_rel_paths(RelOptInfo *rel)
{
List *y = NIL;
Path *path = (Path *) NULL;
*
*/
static Path *
-set_paths(RelOptInfo * rel, Path *unorderedpath)
+set_paths(RelOptInfo *rel, Path *unorderedpath)
{
Path *cheapest = set_cheapest(rel, rel->pathlist);
*
*
* IDENTIFICATION
-* $Header: /cvsroot/pgsql/src/backend/optimizer/geqo/Attic/minspantree.c,v 1.8 1998/09/01 04:29:24 momjian Exp $
+* $Header: /cvsroot/pgsql/src/backend/optimizer/geqo/Attic/minspantree.c,v 1.9 1999/02/10 21:02:35 momjian Exp $
*
*-------------------------------------------------------------------------
*/
*/
void
-minspantree(Query *root, List *join_rels, RelOptInfo * garel)
+minspantree(Query *root, List *join_rels, RelOptInfo *garel)
{
int number_of_rels = length(root->base_rel_list);
int number_of_joins = length(join_rels);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.26 1999/02/10 03:52:38 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.27 1999/02/10 21:02:36 momjian Exp $
*
*-------------------------------------------------------------------------
*/
static List *find_join_paths(Query *root, List *outer_rels, int levels_needed);
#ifdef OPTIMIZER_DEBUG
-static void debug_print_rel(Query *root, RelOptInfo * rel);
+static void debug_print_rel(Query *root, RelOptInfo *rel);
#endif
}
static void
-debug_print_rel(Query *root, RelOptInfo * rel)
+debug_print_rel(Query *root, RelOptInfo *rel)
{
List *l;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.28 1999/02/10 03:52:39 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.29 1999/02/10 21:02:37 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* Returns the size.
*/
int
-compute_rel_size(RelOptInfo * rel)
+compute_rel_size(RelOptInfo *rel)
{
Cost temp;
int temp1;
* Returns the width of the tuple as a fixnum.
*/
int
-compute_rel_width(RelOptInfo * rel)
+compute_rel_width(RelOptInfo *rel)
{
return compute_targetlist_width(get_actual_tlist(rel->targetlist));
}
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.41 1999/02/10 03:52:39 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.42 1999/02/10 21:02:38 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#include "utils/lsyscache.h"
-static void match_index_orclauses(RelOptInfo * rel, RelOptInfo * index, int indexkey,
+static void match_index_orclauses(RelOptInfo *rel, RelOptInfo *index, int indexkey,
int xclass, List *restrictinfo_list);
static bool match_index_to_operand(int indexkey, Expr *operand,
- RelOptInfo * rel, RelOptInfo * index);
-static List *match_index_orclause(RelOptInfo * rel, RelOptInfo * index, int indexkey,
+ RelOptInfo *rel, RelOptInfo *index);
+static List *match_index_orclause(RelOptInfo *rel, RelOptInfo *index, int indexkey,
int xclass, List *or_clauses, List *other_matching_indices);
-static List *group_clauses_by_indexkey(RelOptInfo * rel, RelOptInfo * index,
+static List *group_clauses_by_indexkey(RelOptInfo *rel, RelOptInfo *index,
int *indexkeys, Oid *classes, List *restrictinfo_list);
-static List *group_clauses_by_ikey_for_joins(RelOptInfo * rel, RelOptInfo * index,
+static List *group_clauses_by_ikey_for_joins(RelOptInfo *rel, RelOptInfo *index,
int *indexkeys, Oid *classes, List *join_cinfo_list, List *restr_cinfo_list);
-static RestrictInfo *match_clause_to_indexkey(RelOptInfo * rel, RelOptInfo * index, int indexkey,
+static RestrictInfo *match_clause_to_indexkey(RelOptInfo *rel, RelOptInfo *index, int indexkey,
int xclass, RestrictInfo * restrictInfo, bool join);
static bool pred_test(List *predicate_list, List *restrictinfo_list,
List *joininfo_list);
static bool one_pred_clause_expr_test(Expr *predicate, Node *clause);
static bool one_pred_clause_test(Expr *predicate, Node *clause);
static bool clause_pred_clause_test(Expr *predicate, Node *clause);
-static List *indexable_joinclauses(RelOptInfo * rel, RelOptInfo * index,
+static List *indexable_joinclauses(RelOptInfo *rel, RelOptInfo *index,
List *joininfo_list, List *restrictinfo_list);
-static List *index_innerjoin(Query *root, RelOptInfo * rel,
- List *clausegroup_list, RelOptInfo * index);
-static List *create_index_paths(Query *root, RelOptInfo * rel, RelOptInfo * index,
+static List *index_innerjoin(Query *root, RelOptInfo *rel,
+ List *clausegroup_list, RelOptInfo *index);
+static List *create_index_paths(Query *root, RelOptInfo *rel, RelOptInfo *index,
List *clausegroup_list, bool join);
static List *add_index_paths(List *indexpaths, List *new_indexpaths);
-static bool function_index_operand(Expr *funcOpnd, RelOptInfo * rel, RelOptInfo * index);
+static bool function_index_operand(Expr *funcOpnd, RelOptInfo *rel, RelOptInfo *index);
/* find_index_paths()
*/
List *
find_index_paths(Query *root,
- RelOptInfo * rel,
+ RelOptInfo *rel,
List *indices,
List *restrictinfo_list,
List *joininfo_list)
*
*/
static void
-match_index_orclauses(RelOptInfo * rel,
- RelOptInfo * index,
+match_index_orclauses(RelOptInfo *rel,
+ RelOptInfo *index,
int indexkey,
int xclass,
List *restrictinfo_list)
static bool
match_index_to_operand(int indexkey,
Expr *operand,
- RelOptInfo * rel,
- RelOptInfo * index)
+ RelOptInfo *rel,
+ RelOptInfo *index)
{
bool result;
* match the third, g,h match the fourth, etc.
*/
static List *
-match_index_orclause(RelOptInfo * rel,
- RelOptInfo * index,
+match_index_orclause(RelOptInfo *rel,
+ RelOptInfo *index,
int indexkey,
int xclass,
List *or_clauses,
*
*/
static List *
-group_clauses_by_indexkey(RelOptInfo * rel,
- RelOptInfo * index,
+group_clauses_by_indexkey(RelOptInfo *rel,
+ RelOptInfo *index,
int *indexkeys,
Oid *classes,
List *restrictinfo_list)
*
*/
static List *
-group_clauses_by_ikey_for_joins(RelOptInfo * rel,
- RelOptInfo * index,
+group_clauses_by_ikey_for_joins(RelOptInfo *rel,
+ RelOptInfo *index,
int *indexkeys,
Oid *classes,
List *join_cinfo_list,
*
*/
static List *
-indexable_joinclauses(RelOptInfo * rel, RelOptInfo * index,
+indexable_joinclauses(RelOptInfo *rel, RelOptInfo *index,
List *joininfo_list, List *restrictinfo_list)
{
JoinInfo *joininfo = (JoinInfo *) NULL;
*
*/
static List *
-index_innerjoin(Query *root, RelOptInfo * rel, List *clausegroup_list,
- RelOptInfo * index)
+index_innerjoin(Query *root, RelOptInfo *rel, List *clausegroup_list,
+ RelOptInfo *index)
{
List *clausegroup = NIL;
List *cg_list = NIL;
*/
static List *
create_index_paths(Query *root,
- RelOptInfo * rel,
- RelOptInfo * index,
+ RelOptInfo *rel,
+ RelOptInfo *index,
List *clausegroup_list,
bool join)
{
}
static bool
-function_index_operand(Expr *funcOpnd, RelOptInfo * rel, RelOptInfo * index)
+function_index_operand(Expr *funcOpnd, RelOptInfo *rel, RelOptInfo *index)
{
Oid heapRelid = (Oid) lfirsti(rel->relids);
Func *function;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.18 1999/02/10 17:14:30 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.19 1999/02/10 21:02:38 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* _enable_mergejoin} */
static Path *best_innerjoin(List *join_paths, List *outer_relid);
-static List *sort_inner_and_outer(RelOptInfo * joinrel, RelOptInfo * outerrel, RelOptInfo * innerrel,
+static List *sort_inner_and_outer(RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel,
List *mergeinfo_list);
-static List *match_unsorted_outer(RelOptInfo * joinrel, RelOptInfo * outerrel, RelOptInfo * innerrel,
+static List *match_unsorted_outer(RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel,
List *outerpath_list, Path *cheapest_inner, Path *best_innerjoin,
List *mergeinfo_list);
-static List *match_unsorted_inner(RelOptInfo * joinrel, RelOptInfo * outerrel, RelOptInfo * innerrel,
+static List *match_unsorted_inner(RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel,
List *innerpath_list, List *mergeinfo_list);
-static bool EnoughMemoryForHashjoin(RelOptInfo * hashrel);
-static List *hash_inner_and_outer(RelOptInfo * joinrel, RelOptInfo * outerrel, RelOptInfo * innerrel,
+static bool EnoughMemoryForHashjoin(RelOptInfo *hashrel);
+static List *hash_inner_and_outer(RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel,
List *hashinfo_list);
/*
* If bushy trees are considered, may modify the relid field of the
* join rel nodes to flatten the lists.
*
- * Returns nothing of interest. (?)
* It does a destructive modification.
*/
void
* Returns a list of mergejoin paths.
*/
static List *
-sort_inner_and_outer(RelOptInfo * joinrel,
- RelOptInfo * outerrel,
- RelOptInfo * innerrel,
+sort_inner_and_outer(RelOptInfo *joinrel,
+ RelOptInfo *outerrel,
+ RelOptInfo *innerrel,
List *mergeinfo_list)
{
List *ms_list = NIL;
* Returns a list of possible join path nodes.
*/
static List *
-match_unsorted_outer(RelOptInfo * joinrel,
- RelOptInfo * outerrel,
- RelOptInfo * innerrel,
+match_unsorted_outer(RelOptInfo *joinrel,
+ RelOptInfo *outerrel,
+ RelOptInfo *innerrel,
List *outerpath_list,
Path *cheapest_inner,
Path *best_innerjoin,
* Returns a list of possible merge paths.
*/
static List *
-match_unsorted_inner(RelOptInfo * joinrel,
- RelOptInfo * outerrel,
- RelOptInfo * innerrel,
+match_unsorted_inner(RelOptInfo *joinrel,
+ RelOptInfo *outerrel,
+ RelOptInfo *innerrel,
List *innerpath_list,
List *mergeinfo_list)
{
}
static bool
-EnoughMemoryForHashjoin(RelOptInfo * hashrel)
+EnoughMemoryForHashjoin(RelOptInfo *hashrel)
{
int ntuples;
int tupsize;
* Returns a list of hashjoin paths.
*/
static List *
-hash_inner_and_outer(RelOptInfo * joinrel,
- RelOptInfo * outerrel,
- RelOptInfo * innerrel,
+hash_inner_and_outer(RelOptInfo *joinrel,
+ RelOptInfo *outerrel,
+ RelOptInfo *innerrel,
List *hashinfo_list)
{
HashInfo *xhashinfo = (HashInfo *) NULL;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.17 1999/02/03 21:16:27 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.18 1999/02/10 21:02:39 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#endif
-static List *find_clause_joins(Query *root, RelOptInfo * outer_rel, List *joininfo_list);
-static List *find_clauseless_joins(RelOptInfo * outer_rel, List *inner_rels);
-static RelOptInfo *init_join_rel(RelOptInfo * outer_rel, RelOptInfo * inner_rel, JoinInfo * joininfo);
+static List *find_clause_joins(Query *root, RelOptInfo *outer_rel, List *joininfo_list);
+static List *find_clauseless_joins(RelOptInfo *outer_rel, List *inner_rels);
+static RelOptInfo *init_join_rel(RelOptInfo *outer_rel, RelOptInfo *inner_rel, JoinInfo * joininfo);
static List *new_join_tlist(List *tlist, List *other_relids,
int first_resdomno);
static List *new_joininfo_list(List *joininfo_list, List *join_relids);
-static void add_superrels(RelOptInfo * rel, RelOptInfo * super_rel);
-static bool nonoverlap_rels(RelOptInfo * rel1, RelOptInfo * rel2);
+static void add_superrels(RelOptInfo *rel, RelOptInfo *super_rel);
+static bool nonoverlap_rels(RelOptInfo *rel1, RelOptInfo *rel2);
static bool nonoverlap_sets(List *s1, List *s2);
-static void set_joinrel_size(RelOptInfo * joinrel, RelOptInfo * outer_rel, RelOptInfo * inner_rel,
+static void set_joinrel_size(RelOptInfo *joinrel, RelOptInfo *outer_rel, RelOptInfo *inner_rel,
JoinInfo * jinfo);
/*
* Returns a list of new join relations.
*/
static List *
-find_clause_joins(Query *root, RelOptInfo * outer_rel, List *joininfo_list)
+find_clause_joins(Query *root, RelOptInfo *outer_rel, List *joininfo_list)
{
List *join_list = NIL;
List *i = NIL;
* Returns a list of new join relations.
*/
static List *
-find_clauseless_joins(RelOptInfo * outer_rel, List *inner_rels)
+find_clauseless_joins(RelOptInfo *outer_rel, List *inner_rels)
{
RelOptInfo *inner_rel;
List *t_list = NIL;
* Returns the new join relation node.
*/
static RelOptInfo *
-init_join_rel(RelOptInfo * outer_rel, RelOptInfo * inner_rel, JoinInfo * joininfo)
+init_join_rel(RelOptInfo *outer_rel, RelOptInfo *inner_rel, JoinInfo * joininfo)
{
RelOptInfo *joinrel = makeNode(RelOptInfo);
List *joinrel_joininfo_list = NIL;
* Modifies the superrels field of rel
*/
static void
-add_superrels(RelOptInfo * rel, RelOptInfo * super_rel)
+add_superrels(RelOptInfo *rel, RelOptInfo *super_rel)
{
rel->superrels = lappend(rel->superrels, super_rel);
}
* Returns non-nil if rel1 and rel2 do not overlap.
*/
static bool
-nonoverlap_rels(RelOptInfo * rel1, RelOptInfo * rel2)
+nonoverlap_rels(RelOptInfo *rel1, RelOptInfo *rel2)
{
return nonoverlap_sets(rel1->relids, rel2->relids);
}
}
static void
-set_joinrel_size(RelOptInfo * joinrel, RelOptInfo * outer_rel, RelOptInfo * inner_rel, JoinInfo * jinfo)
+set_joinrel_size(RelOptInfo *joinrel, RelOptInfo *outer_rel, RelOptInfo *inner_rel, JoinInfo * jinfo)
{
int ntuples;
float selec;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/joinutils.c,v 1.15 1999/02/10 17:14:30 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/joinutils.c,v 1.16 1999/02/10 21:02:39 momjian Exp $
*
*-------------------------------------------------------------------------
*/
{
jk = (JoinKey *) lfirst(x);
if (var_equal(path_subkey,
- extract_subkey(jk, which_subkey)))
+ extract_join_subkey(jk, which_subkey)))
return pos;
pos++;
}
temp = (Var *) lfirst((List *) lfirst(j));
if (temp == NULL)
continue;
- tempkey = extract_subkey(xjoinkey, which_subkey);
+ tempkey = extract_join_subkey(xjoinkey, which_subkey);
if (var_equal(tempkey, temp))
{
found = true;
/*
* find the right Var in the target list for this key
*/
- var = (Var *) extract_subkey(jkey, which_subkey);
+ var = (Var *) extract_join_subkey(jkey, which_subkey);
key = (Var *) matching_tlvar(var, tlist);
/*
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.17 1999/02/10 03:52:41 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.18 1999/02/10 21:02:39 momjian Exp $
*
*-------------------------------------------------------------------------
*/
static void
-best_or_subclause_indices(Query *root, RelOptInfo * rel, List *subclauses,
+best_or_subclause_indices(Query *root, RelOptInfo *rel, List *subclauses,
List *indices, List *examined_indexids, Cost subcost, List *selectivities,
List **indexids, Cost *cost, List **selecs);
-static void best_or_subclause_index(Query *root, RelOptInfo * rel, Expr *subclause,
+static void best_or_subclause_index(Query *root, RelOptInfo *rel, Expr *subclause,
List *indices, int *indexid, Cost *cost, Cost *selec);
*/
List *
create_or_index_paths(Query *root,
- RelOptInfo * rel, List *clauses)
+ RelOptInfo *rel, List *clauses)
{
List *t_list = NIL;
List *clist;
*/
static void
best_or_subclause_indices(Query *root,
- RelOptInfo * rel,
+ RelOptInfo *rel,
List *subclauses,
List *indices,
List *examined_indexids,
*/
static void
best_or_subclause_index(Query *root,
- RelOptInfo * rel,
+ RelOptInfo *rel,
Expr *subclause,
List *indices,
int *retIndexid, /* return value */
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.25 1999/02/09 03:51:21 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.26 1999/02/10 21:02:40 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#include "utils/elog.h"
-static List *prune_joinrel(RelOptInfo * rel, List *other_rels);
+static List *prune_joinrel(RelOptInfo *rel, List *other_rels);
/*
* prune-joinrels--
*
*/
Path *
-prune_rel_path(RelOptInfo * rel, Path *unorderedpath)
+prune_rel_path(RelOptInfo *rel, Path *unorderedpath)
{
Path *cheapest = set_cheapest(rel, rel->pathlist);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/xfunc.c,v 1.24 1999/02/03 21:16:29 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/xfunc.c,v 1.25 1999/02/10 21:02:40 momjian Exp $
*
*-------------------------------------------------------------------------
*/
** Just like _copyRel, but doesn't copy the paths
*/
bool
-xfunc_copyrel(RelOptInfo from, RelOptInfo * to)
+xfunc_copyrel(RelOptInfo from, RelOptInfo *to)
{
RelOptInfo newnode;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/indexnode.c,v 1.11 1999/02/03 20:15:42 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/indexnode.c,v 1.12 1999/02/10 21:02:40 momjian Exp $
*
*-------------------------------------------------------------------------
*/
*
*/
List *
-find_relation_indices(Query *root, RelOptInfo * rel)
+find_relation_indices(Query *root, RelOptInfo *rel)
{
if (rel->indexed)
return find_secondary_index(root, lfirsti(rel->relids));
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/joininfo.c,v 1.13 1999/02/03 20:15:42 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/joininfo.c,v 1.14 1999/02/10 21:02:40 momjian Exp $
*
*-------------------------------------------------------------------------
*/
*
*/
JoinInfo *
-find_joininfo_node(RelOptInfo * this_rel, List *join_relids)
+find_joininfo_node(RelOptInfo *this_rel, List *join_relids)
{
JoinInfo *joininfo = joininfo_member(join_relids,
this_rel->joininfo);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/keys.c,v 1.13 1999/02/10 03:52:47 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/keys.c,v 1.14 1999/02/10 21:02:41 momjian Exp $
*
*-------------------------------------------------------------------------
*/
*
*/
bool
-match_indexkey_operand(int indexkey, Var *operand, RelOptInfo * rel)
+match_indexkey_operand(int indexkey, Var *operand, RelOptInfo *rel)
{
if (IsA(operand, Var) &&
(lfirsti(rel->relids) == operand->varno) &&
}
/*
- * extract-subkey--
+ * extract-join-subkey--
* Returns the subkey in a join key corresponding to the outer or inner
- * lelation.
+ * relation.
*
*/
Var *
-extract_subkey(JoinKey *jk, int which_subkey)
+extract_join_subkey(JoinKey *jk, int which_subkey)
{
Var *retval;
retval = jk->inner;
break;
default: /* do nothing */
- elog(DEBUG, "extract_subkey with neither INNER or OUTER");
+ elog(DEBUG, "extract_join_subkey with neither INNER or OUTER");
retval = NULL;
}
return retval;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.22 1999/02/10 03:52:47 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.23 1999/02/10 21:02:43 momjian Exp $
*
*-------------------------------------------------------------------------
*/
*
*/
Path *
-create_seqscan_path(RelOptInfo * rel)
+create_seqscan_path(RelOptInfo *rel)
{
int relid = 0;
*/
IndexPath *
create_index_path(Query *root,
- RelOptInfo * rel,
- RelOptInfo * index,
+ RelOptInfo *rel,
+ RelOptInfo *index,
List *restriction_clauses,
bool is_join_scan)
{
*
*/
JoinPath *
-create_nestloop_path(RelOptInfo * joinrel,
- RelOptInfo * outer_rel,
+create_nestloop_path(RelOptInfo *joinrel,
+ RelOptInfo *outer_rel,
Path *outer_path,
Path *inner_path,
List *pathkeys)
*
*/
MergePath *
-create_mergejoin_path(RelOptInfo * joinrel,
+create_mergejoin_path(RelOptInfo *joinrel,
int outersize,
int innersize,
int outerwidth,
*
*/
HashPath *
-create_hashjoin_path(RelOptInfo * joinrel,
+create_hashjoin_path(RelOptInfo *joinrel,
int outersize,
int innersize,
int outerwidth,
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.24 1999/02/07 03:02:21 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.25 1999/02/10 21:02:43 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* CREATES: new var-node iff no matching var-node exists in targetlist
*/
void
-add_tl_element(RelOptInfo * rel, Var *var)
+add_tl_element(RelOptInfo *rel, Var *var)
{
Expr *oldvar = (Expr *) NULL;
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: cost.h,v 1.13 1999/02/10 03:52:53 momjian Exp $
+ * $Id: cost.h,v 1.14 1999/02/10 21:02:43 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern Cost cost_hashjoin(Cost outercost, Cost innercost, List *outerkeys,
List *innerkeys, int outersize, int innersize,
int outerwidth, int innerwidth);
-extern int compute_rel_size(RelOptInfo * rel);
-extern int compute_rel_width(RelOptInfo * rel);
+extern int compute_rel_size(RelOptInfo *rel);
+extern int compute_rel_width(RelOptInfo *rel);
extern int compute_joinrel_size(JoinPath *joinpath);
extern int page_size(int tuples, int width);
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: geqo.h,v 1.9 1998/09/01 04:36:56 momjian Exp $
+ * $Id: geqo.h,v 1.10 1999/02/10 21:02:45 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern Cost geqo_eval(Query *root, Gene *tour, int num_gene);
double geqo_log(double x, double b);
-extern RelOptInfo *gimme_tree(Query *root, Gene *tour, int rel_count, int num_gene, RelOptInfo * outer_rel);
+extern RelOptInfo *gimme_tree(Query *root, Gene *tour, int rel_count, int num_gene, RelOptInfo *outer_rel);
#endif /* GEQO_H */
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: geqo_misc.h,v 1.7 1998/09/01 04:36:59 momjian Exp $
+ * $Id: geqo_misc.h,v 1.8 1999/02/10 21:02:47 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern void print_gen(FILE *fp, Pool *pool, int generation);
extern void print_edge_table(FILE *fp, Edge *edge_table, int num_gene);
-extern void geqo_print_rel(Query *root, RelOptInfo * rel);
+extern void geqo_print_rel(Query *root, RelOptInfo *rel);
extern void geqo_print_path(Query *root, Path *path, int indent);
extern void geqo_print_joinclauses(Query *root, List *clauses);
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: geqo_paths.h,v 1.6 1998/09/01 04:37:02 momjian Exp $
+ * $Id: geqo_paths.h,v 1.7 1999/02/10 21:02:47 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern List *geqo_prune_rels(List *rel_list);
-extern void geqo_rel_paths(RelOptInfo * rel);
+extern void geqo_rel_paths(RelOptInfo *rel);
#endif /* GEQO_PATHS_H */
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: joininfo.h,v 1.8 1998/09/01 04:37:10 momjian Exp $
+ * $Id: joininfo.h,v 1.9 1999/02/10 21:02:48 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#include "nodes/primnodes.h"
extern JoinInfo *joininfo_member(List *join_relids, List *joininfo_list);
-extern JoinInfo *find_joininfo_node(RelOptInfo * this_rel, List *join_relids);
+extern JoinInfo *find_joininfo_node(RelOptInfo *this_rel, List *join_relids);
extern Var *other_join_clause_var(Var *var, Expr *clause);
#endif /* JOININFO_H */
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: keys.h,v 1.8 1998/09/01 04:37:11 momjian Exp $
+ * $Id: keys.h,v 1.9 1999/02/10 21:02:48 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#include "nodes/nodes.h"
#include "nodes/relation.h"
-extern bool match_indexkey_operand(int indexkey, Var *operand, RelOptInfo * rel);
-extern Var *extract_subkey(JoinKey *jk, int which_subkey);
+extern bool match_indexkey_operand(int indexkey, Var *operand, RelOptInfo *rel);
+extern Var *extract_join_subkey(JoinKey *jk, int which_subkey);
extern bool samekeys(List *keys1, List *keys2);
extern List *collect_index_pathkeys(int *index_keys, List *tlist);
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: pathnode.h,v 1.11 1999/02/10 03:52:54 momjian Exp $
+ * $Id: pathnode.h,v 1.12 1999/02/10 21:02:49 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* prototypes for pathnode.c
*/
extern bool path_is_cheaper(Path *path1, Path *path2);
-extern Path *set_cheapest(RelOptInfo * parent_rel, List *pathlist);
-extern List *add_pathlist(RelOptInfo * parent_rel, List *unique_paths,
+extern Path *set_cheapest(RelOptInfo *parent_rel, List *pathlist);
+extern List *add_pathlist(RelOptInfo *parent_rel, List *unique_paths,
List *new_paths);
-extern Path *create_seqscan_path(RelOptInfo * rel);
-extern IndexPath *create_index_path(Query *root, RelOptInfo * rel, RelOptInfo * index,
+extern Path *create_seqscan_path(RelOptInfo *rel);
+extern IndexPath *create_index_path(Query *root, RelOptInfo *rel, RelOptInfo *index,
List *restriction_clauses, bool is_join_scan);
-extern JoinPath *create_nestloop_path(RelOptInfo * joinrel, RelOptInfo * outer_rel,
+extern JoinPath *create_nestloop_path(RelOptInfo *joinrel, RelOptInfo *outer_rel,
Path *outer_path, Path *inner_path, List *pathkeys);
-extern MergePath *create_mergejoin_path(RelOptInfo * joinrel, int outersize,
+extern MergePath *create_mergejoin_path(RelOptInfo *joinrel, int outersize,
int innersize, int outerwidth, int innerwidth, Path *outer_path,
Path *inner_path, List *pathkeys, MergeOrder *order,
List *mergeclauses, List *outersortkeys, List *innersortkeys);
-extern HashPath *create_hashjoin_path(RelOptInfo * joinrel, int outersize,
+extern HashPath *create_hashjoin_path(RelOptInfo *joinrel, int outersize,
int innersize, int outerwidth, int innerwidth, Path *outer_path,
Path *inner_path, List *pathkeys, Oid operator, List *hashclauses,
List *outerkeys, List *innerkeys);
/*
* prototypes for indexnode.h
*/
-extern List *find_relation_indices(Query *root, RelOptInfo * rel);
+extern List *find_relation_indices(Query *root, RelOptInfo *rel);
#endif /* PATHNODE_H */
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: paths.h,v 1.12 1999/02/04 03:19:11 momjian Exp $
+ * $Id: paths.h,v 1.13 1999/02/10 21:02:49 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* indxpath.h
* routines to generate index paths
*/
-extern List *find_index_paths(Query *root, RelOptInfo * rel, List *indices,
+extern List *find_index_paths(Query *root, RelOptInfo *rel, List *indices,
List *restrictinfo_list,
List *joininfo_list);
/*
* orindxpath.h
*/
-extern List *create_or_index_paths(Query *root, RelOptInfo * rel, List *clauses);
+extern List *create_or_index_paths(Query *root, RelOptInfo *rel, List *clauses);
/*
* hashutils.h
*/
extern void prune_joinrels(List *rel_list);
extern void prune_rel_paths(List *rel_list);
-extern Path *prune_rel_path(RelOptInfo * rel, Path *unorderedpath);
+extern Path *prune_rel_path(RelOptInfo *rel, Path *unorderedpath);
extern List *merge_joinrels(List *rel_list1, List *rel_list2);
extern List *prune_oldrels(List *old_rels);
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: tlist.h,v 1.13 1998/09/01 04:37:21 momjian Exp $
+ * $Id: tlist.h,v 1.14 1999/02/10 21:02:50 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern TargetEntry *tlistentry_member(Var *var, List *targetlist);
extern Expr *matching_tlvar(Var *var, List *targetlist);
-extern void add_tl_element(RelOptInfo * rel, Var *var);
+extern void add_tl_element(RelOptInfo *rel, Var *var);
extern TargetEntry *create_tl_element(Var *var, int resdomno);
extern List *get_actual_tlist(List *tlist);
extern Resdom *tlist_member(Var *var, List *tlist);
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: xfunc.h,v 1.11 1999/02/03 20:15:53 momjian Exp $
+ * $Id: xfunc.h,v 1.12 1999/02/10 21:02:50 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#define is_join(pathnode) (length(get_relids(get_parent(pathnode))) > 1 ? 1 : 0)
/* function prototypes from planner/path/xfunc.c */
-extern void xfunc_trypullup(RelOptInfo * rel);
+extern void xfunc_trypullup(RelOptInfo *rel);
extern int xfunc_shouldpull(Path *childpath, JoinPath *parentpath,
int whichchild, RestrictInfo * maxcinfopt);
extern RestrictInfo *xfunc_pullup(Path *childpath, JoinPath *parentpath, RestrictInfo * cinfo,
extern Cost xfunc_get_path_cost(Path *pathnode);
extern Cost xfunc_total_path_cost(JoinPath *pathnode);
extern Cost xfunc_expense_per_tuple(JoinPath *joinnode, int whichchild);
-extern void xfunc_fixvars(Expr *clause, RelOptInfo * rel, int varno);
+extern void xfunc_fixvars(Expr *clause, RelOptInfo *rel, int varno);
extern int xfunc_cinfo_compare(void *arg1, void *arg2);
extern int xfunc_clause_compare(void *arg1, void *arg2);
extern void xfunc_disjunct_sort(List *clause_list);
extern int xfunc_tuple_width(Relation rd);
extern int xfunc_num_join_clauses(JoinPath *path);
extern List *xfunc_LispRemove(List *foo, List *bar);
-extern bool xfunc_copyrel(RelOptInfo * from, RelOptInfo ** to);
+extern bool xfunc_copyrel(RelOptInfo *from, RelOptInfo ** to);
/*
* function prototypes for path/predmig.c