*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.65 1999/02/09 17:02:46 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.66 1999/02/10 03:52:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
else
Node_Copy(from, newnode, path_order->ord.merge);
- Node_Copy(from, newnode, keys);
+ Node_Copy(from, newnode, pathkeys);
newnode->outerjoincost = from->outerjoincost;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.27 1999/02/09 03:51:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.28 1999/02/10 03:52:35 momjian Exp $
*
*-------------------------------------------------------------------------
*/
if (!equal(a->path_order->ord.merge, b->path_order->ord.merge))
return false;
}
- if (!equal(a->keys, b->keys))
+ if (!equal(a->pathkeys, b->pathkeys))
return false;
/*
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/Attic/freefuncs.c,v 1.4 1999/02/09 17:02:49 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/Attic/freefuncs.c,v 1.5 1999/02/10 03:52:35 momjian Exp $
*
*-------------------------------------------------------------------------
*/
pfree(node->path_order); /* is it an object, but we don't have
separate free for it */
- freeObject(node->keys);
+ freeObject(node->pathkeys);
freeList(node->joinid);
freeObject(node->loc_restrictinfo);
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: outfuncs.c,v 1.67 1999/02/09 17:02:49 momjian Exp $
+ * $Id: outfuncs.c,v 1.68 1999/02/10 03:52:35 momjian Exp $
*
* NOTES
* Every (plan) node in POSTGRES has an associated "out" routine which
static void
_outPath(StringInfo str, Path *node)
{
- appendStringInfo(str, " PATH :pathtype %d :cost %f :keys ",
+ appendStringInfo(str, " PATH :pathtype %d :cost %f :pathkeys ",
node->pathtype,
node->path_cost);
- _outNode(str, node->keys);
+ _outNode(str, node->pathkeys);
appendStringInfo(str, " :path_order ");
_outNode(str, node->path_order);
_outIndexPath(StringInfo str, IndexPath *node)
{
appendStringInfo(str,
- " INDEXPATH :pathtype %d :cost %f :keys ",
+ " INDEXPATH :pathtype %d :cost %f :pathkeys ",
node->path.pathtype,
node->path.path_cost);
- _outNode(str, node->path.keys);
+ _outNode(str, node->path.pathkeys);
appendStringInfo(str, " :path_order ");
_outNode(str, node->path.path_order);
_outJoinPath(StringInfo str, JoinPath *node)
{
appendStringInfo(str,
- " JOINPATH :pathtype %d :cost %f :keys ",
+ " JOINPATH :pathtype %d :cost %f :pathkeys ",
node->path.pathtype,
node->path.path_cost);
- _outNode(str, node->path.keys);
+ _outNode(str, node->path.pathkeys);
appendStringInfo(str, " :path_order ");
_outNode(str, node->path.path_order);
_outMergePath(StringInfo str, MergePath *node)
{
appendStringInfo(str,
- " MERGEPATH :pathtype %d :cost %f :keys ",
+ " MERGEPATH :pathtype %d :cost %f :pathkeys ",
node->jpath.path.pathtype,
node->jpath.path.path_cost);
- _outNode(str, node->jpath.path.keys);
+ _outNode(str, node->jpath.path.pathkeys);
appendStringInfo(str, " :path_order ");
_outNode(str, node->jpath.path.path_order);
_outHashPath(StringInfo str, HashPath *node)
{
appendStringInfo(str,
- " HASHPATH :pathtype %d :cost %f :keys ",
+ " HASHPATH :pathtype %d :cost %f :pathkeys ",
node->jpath.path.pathtype,
node->jpath.path.path_cost);
- _outNode(str, node->jpath.path.keys);
+ _outNode(str, node->jpath.path.pathkeys);
appendStringInfo(str, " :path_order ");
_outNode(str, node->jpath.path.path_order);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.20 1999/02/09 17:02:49 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.21 1999/02/10 03:52:36 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
}
/*
- * print_keys -
- * temporary here. where is keys list of list??
+ * print_pathkeys -
+ * temporary here. where is keys list of lists
*/
void
-print_keys(List *keys, List *rtable)
+print_pathkeys(List *pathkeys, List *rtable)
{
List *k;
printf("(");
- foreach(k, keys)
+ foreach(k, pathkeys)
{
Node *var = lfirst((List *) lfirst(k));
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.52 1999/02/09 17:02:50 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.53 1999/02/10 03:52:36 momjian Exp $
*
* NOTES
* Most of the read functions for plan nodes are tested. (In fact, they
token = lsptok(NULL, &length); /* get :path_order */
local_node->path_order = nodeRead(true); /* now read it */
- token = lsptok(NULL, &length); /* get :keys */
- local_node->keys = nodeRead(true); /* now read it */
+ token = lsptok(NULL, &length); /* get :pathkeys */
+ local_node->pathkeys = nodeRead(true); /* now read it */
return local_node;
}
token = lsptok(NULL, &length); /* get :path_order */
local_node->path.path_order = nodeRead(true); /* now read it */
- token = lsptok(NULL, &length); /* get :keys */
- local_node->path.keys = nodeRead(true); /* now read it */
+ token = lsptok(NULL, &length); /* get :pathkeys */
+ local_node->path.pathkeys = nodeRead(true); /* now read it */
token = lsptok(NULL, &length); /* get :indexid */
local_node->indexid = toIntList(nodeRead(true));
token = lsptok(NULL, &length); /* get :path_order */
local_node->path.path_order = nodeRead(true); /* now read it */
- token = lsptok(NULL, &length); /* get :keys */
- local_node->path.keys = nodeRead(true); /* now read it */
+ token = lsptok(NULL, &length); /* get :pathkeys */
+ local_node->path.pathkeys = nodeRead(true); /* now read it */
token = lsptok(NULL, &length); /* get :pathinfo */
local_node->pathinfo = nodeRead(true); /* now read it */
token = lsptok(NULL, &length); /* get :path_order */
local_node->jpath.path.path_order = nodeRead(true); /* now read it */
- token = lsptok(NULL, &length); /* get :keys */
- local_node->jpath.path.keys = nodeRead(true); /* now read it */
+ token = lsptok(NULL, &length); /* get :pathkeys */
+ local_node->jpath.path.pathkeys = nodeRead(true); /* now read it */
token = lsptok(NULL, &length); /* get :pathinfo */
local_node->jpath.pathinfo = nodeRead(true); /* now read it */
token = lsptok(NULL, &length); /* get :path_order */
local_node->jpath.path.path_order = nodeRead(true); /* now read it */
- token = lsptok(NULL, &length); /* get :keys */
- local_node->jpath.path.keys = nodeRead(true); /* now read it */
+ token = lsptok(NULL, &length); /* get :pathkeys */
+ local_node->jpath.path.pathkeys = nodeRead(true); /* now read it */
token = lsptok(NULL, &length); /* get :pathinfo */
local_node->jpath.pathinfo = nodeRead(true); /* now read it */
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: geqo_misc.c,v 1.12 1999/02/03 20:15:27 momjian Exp $
+ * $Id: geqo_misc.c,v 1.13 1999/02/10 03:52:37 momjian Exp $
*
*-------------------------------------------------------------------------
*/
List *k,
*l;
- printf(" keys=");
- foreach(k, path->keys)
+ printf(" pathkeys=");
+ foreach(k, path->pathkeys)
{
printf("(");
foreach(l, lfirst(k))
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.25 1999/02/03 20:15:28 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.26 1999/02/10 03:52:38 momjian Exp $
*
*-------------------------------------------------------------------------
*/
List *k,
*l;
- printf(" keys=");
- foreach(k, path->keys)
+ printf(" pathkeys=");
+ foreach(k, path->pathkeys)
{
printf("(");
foreach(l, lfirst(k))
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.27 1999/02/09 17:02:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.28 1999/02/10 03:52:39 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* 2. the cost of reading the sort result into memory (another seqscan)
* unless 'noread' is set
*
- * 'keys' is a list of sort keys
+ * 'pathkeys' is a list of sort keys
* 'tuples' is the number of tuples in the relation
* 'width' is the average tuple width in bytes
* 'noread' is a flag indicating that the sort result can remain on disk
*
*/
Cost
-cost_sort(List *keys, int tuples, int width, bool noread)
+cost_sort(List *pathkeys, int tuples, int width, bool noread)
{
Cost temp = 0;
int npages = page_size(tuples, width);
if (!_enable_sort_)
temp += _disable_cost_;
- if (tuples == 0 || keys == NULL)
+ if (tuples == 0 || pathkeys == NULL)
{
Assert(temp >= 0);
return temp;
* could be base_log(pages, NBuffers), but we are only doing 2-way
* merges
*/
- temp += _cpu_page_wight_ *
- numTuples * base_log((double) pages, (double) 2.0);
+ temp += _cpu_page_wight_ * numTuples *
+ base_log((double) pages, (double) 2.0);
if (!noread)
temp = temp + cost_seqscan(_NONAME_RELATION_ID_, npages, tuples);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/hashutils.c,v 1.11 1999/02/04 03:19:08 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/hashutils.c,v 1.12 1999/02/10 03:52:39 momjian Exp $
*
*-------------------------------------------------------------------------
*/
Expr *clause = restrictinfo->clause;
Var *leftop = get_leftop(clause);
Var *rightop = get_rightop(clause);
- JoinKey *keys = (JoinKey *) NULL;
+ JoinKey *joinkey = (JoinKey *) NULL;
xhashinfo = match_hashop_hashinfo(hashjoinop, hashinfo_list);
if (inner_relid == leftop->varno)
{
- keys = makeNode(JoinKey);
- keys->outer = rightop;
- keys->inner = leftop;
+ joinkey = makeNode(JoinKey);
+ joinkey->outer = rightop;
+ joinkey->inner = leftop;
}
else
{
- keys = makeNode(JoinKey);
- keys->outer = leftop;
- keys->inner = rightop;
+ joinkey = makeNode(JoinKey);
+ joinkey->outer = leftop;
+ joinkey->inner = rightop;
}
if (xhashinfo == NULL)
xhashinfo->jmethod.clauses = lcons(clause, xhashinfo->jmethod.clauses);
- xhashinfo->jmethod.jmkeys = lcons(keys, xhashinfo->jmethod.jmkeys);
+ xhashinfo->jmethod.jmkeys = lcons(joinkey, xhashinfo->jmethod.jmkeys);
}
}
return hashinfo_list;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.40 1999/02/09 03:51:17 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.41 1999/02/10 03:52:39 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* restriction clauses, then create pathnodes corresponding to
* each group of usable clauses.
*/
- scanclausegroups = group_clauses_by_indexkey(rel,
+ scanclausegroups = group_clauses_by_indexkey(rel,
index,
index->indexkeys,
index->classlist,
pathnode->path.path_order = makeNode(PathOrder);
pathnode->path.path_order->ordtype = SORTOP_ORDER;
pathnode->path.path_order->ord.sortop = index->ordering;
- pathnode->path.keys = NIL; /* not sure about this, bjm 1998/09/21 */
+ pathnode->path.pathkeys = NIL;
pathnode->indexid = index->relids;
pathnode->indexkeys = index->indexkeys;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.16 1999/02/09 03:51:19 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.17 1999/02/10 03:52:40 momjian Exp $
*
*-------------------------------------------------------------------------
*/
if (clauses)
{
- List *keys = xmergeinfo->jmethod.jmkeys;
+ List *jmkeys = xmergeinfo->jmethod.jmkeys;
List *clauses = xmergeinfo->jmethod.clauses;
- matchedJoinKeys = match_pathkeys_joinkeys(outerpath->keys,
- keys,
+ matchedJoinKeys = match_pathkeys_joinkeys(outerpath->pathkeys,
+ jmkeys,
clauses,
OUTER,
&matchedJoinClauses);
- merge_pathkeys = new_join_pathkeys(outerpath->keys,
+ merge_pathkeys = new_join_pathkeys(outerpath->pathkeys,
joinrel->targetlist, clauses);
}
else
- merge_pathkeys = outerpath->keys;
+ merge_pathkeys = outerpath->pathkeys;
if (best_innerjoin &&
path_is_cheaper(best_innerjoin, cheapest_inner))
matchedJoinClauses,
NIL,
varkeys),
- paths);
+ paths);
}
else
temp_node = paths;
if (clauses)
{
- List *keys = xmergeinfo->jmethod.jmkeys;
+ List *jmkeys = xmergeinfo->jmethod.jmkeys;
List *cls = xmergeinfo->jmethod.clauses;
- matchedJoinKeys = match_pathkeys_joinkeys(innerpath->keys,
- keys,
+ matchedJoinKeys = match_pathkeys_joinkeys(innerpath->pathkeys,
+ jmkeys,
cls,
INNER,
&matchedJoinClauses);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/joinutils.c,v 1.13 1999/02/09 17:02:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/joinutils.c,v 1.14 1999/02/10 03:52:40 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* match-pathkeys-joinkeys--
* Attempts to match the keys of a path against the keys of join clauses.
* This is done by looking for a matching join key in 'joinkeys' for
- * every path key in the list 'pathkeys'. If there is a matching join key
+ * every path key in the list 'path.keys'. If there is a matching join key
* (not necessarily unique) for every path key, then the list of
* corresponding join keys and join clauses are returned in the order in
* which the keys matched the path keys.
{
Path *path = (Path *) lfirst(i);
- key_match = every_func(joinkeys, path->keys, which_subkey);
+ key_match = every_func(joinkeys, path->pathkeys, which_subkey);
if (equal_path_ordering(ordering, path->path_order) &&
- length(joinkeys) == length(path->keys) &&
+ length(joinkeys) == length(path->pathkeys) &&
key_match)
{
* in 'joinkeys'
*
* Returns a list of pathkeys: ((tlvar1)(tlvar2)...(tlvarN)).
- * [I've no idea why they have to be list of lists. Should be fixed. -ay 12/94]
+ * It is a list of lists because of multi-key indexes.
*/
List *
extract_path_keys(List *joinkeys,
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/mergeutils.c,v 1.15 1999/02/09 03:51:20 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/mergeutils.c,v 1.16 1999/02/10 03:52:41 momjian Exp $
*
*-------------------------------------------------------------------------
*/
Expr *clause = restrictinfo->clause;
Var *leftop = get_leftop(clause);
Var *rightop = get_rightop(clause);
- JoinKey *keys;
+ JoinKey *jmkeys;
path_order = makeNode(PathOrder);
path_order->ordtype = MERGE_ORDER;
xmergeinfo = match_order_mergeinfo(path_order, mergeinfo_list);
if (inner_relid == leftop->varno)
{
- keys = makeNode(JoinKey);
- keys->outer = rightop;
- keys->inner = leftop;
+ jmkeys = makeNode(JoinKey);
+ jmkeys->outer = rightop;
+ jmkeys->inner = leftop;
}
else
{
- keys = makeNode(JoinKey);
- keys->outer = leftop;
- keys->inner = rightop;
+ jmkeys = makeNode(JoinKey);
+ jmkeys->outer = leftop;
+ jmkeys->inner = rightop;
}
if (xmergeinfo == NULL)
((JoinMethod *) xmergeinfo)->clauses = lcons(clause,
((JoinMethod *) xmergeinfo)->clauses);
- ((JoinMethod *) xmergeinfo)->jmkeys = lcons(keys,
+ ((JoinMethod *) xmergeinfo)->jmkeys = lcons(jmkeys,
((JoinMethod *) xmergeinfo)->jmkeys);
}
}
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.16 1999/02/09 03:51:20 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.17 1999/02/10 03:52:41 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* not in any order, so the sortop is NULL.
*/
pathnode->path.path_order->ord.sortop = NULL;
- pathnode->path.keys = NIL; /* not sure about this, bjm 1998/09/21 */
+ pathnode->path.pathkeys = NIL;
pathnode->indexqual = lcons(clausenode, NIL);
pathnode->indexid = indexids;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.40 1999/02/09 17:02:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.41 1999/02/10 03:52:44 momjian Exp $
*
*-------------------------------------------------------------------------
*/
List *clauses, Plan *outer_node, List *outer_tlist,
Plan *inner_node, List *inner_tlist);
static Node *fix_indxqual_references(Node *clause, Path *index_path);
-static Noname *make_noname(List *tlist, List *keys, Oid *operators,
+static Noname *make_noname(List *tlist, List *pathkeys, Oid *operators,
Plan *plan_node, int nonametype);
static IndexScan *make_indexscan(List *qptlist, List *qpqual, Index scanrelid,
List *indxid, List *indxqual, List *indxqualorig, Cost cost);
static List *
set_noname_tlist_operators(List *tlist, List *pathkeys, Oid *operators)
{
- Node *keys = NULL;
+ Node *pathkey = NULL;
int keyno = 1;
Resdom *resdom = (Resdom *) NULL;
List *i = NIL;
foreach(i, pathkeys)
{
- keys = lfirst((List *) lfirst(i));
- resdom = tlist_member((Var *) keys, tlist);
+ pathkey = lfirst((List *) lfirst(i));
+ resdom = tlist_member((Var *) pathkey, tlist);
if (resdom)
{
/*
- * Order the resdom keys and replace the operator OID for each
+ * Order the resdom pathkey and replace the operator OID for each
* key with the regproc OID.
*
* XXX Note that the optimizer only generates merge joins with 1
* or (SEQSCAN(MATERIAL(plan-node)))
*
* 'tlist' is the target list of the scan to be sorted or hashed
- * 'keys' is the list of keys which the sort or hash will be done on
+ * 'pathkeys' is the list of keys which the sort or hash will be done on
* 'operators' is the operators with which the sort or hash is to be done
* (a list of operator OIDs)
* 'plan-node' is the node which yields tuples for the sort
*/
static Noname *
make_noname(List *tlist,
- List *keys,
+ List *pathkeys,
Oid *operators,
Plan *plan_node,
int nonametype)
/* Create a new target list for the noname, with keys set. */
noname_tlist = set_noname_tlist_operators(new_unsorted_tlist(tlist),
- keys,
+ pathkeys,
operators);
switch (nonametype)
{
(Plan *) make_sort(noname_tlist,
_NONAME_RELATION_ID_,
plan_node,
- length(keys)));
+ length(pathkeys)));
break;
case NONAME_MATERIAL:
(Plan *) make_material(noname_tlist,
_NONAME_RELATION_ID_,
plan_node,
- length(keys)));
+ length(pathkeys)));
break;
default:
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/keys.c,v 1.12 1999/02/09 06:30:39 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/keys.c,v 1.13 1999/02/10 03:52:47 momjian Exp $
*
*-------------------------------------------------------------------------
*/
tlist,
equal_indexkey_var);
if (mvar)
- retval = nconc(retval, lcons(lcons(mvar, NIL),
- NIL));
+ retval = lappend(retval, lcons(mvar, NIL));
index_keys++;
}
return retval;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.21 1999/02/09 03:51:27 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.22 1999/02/10 03:52:47 momjian Exp $
*
*-------------------------------------------------------------------------
*/
path = (Path *) lfirst(temp);
#ifdef OPTDUP_DEBUG
- if (!samekeys(path->keys, new_path->keys))
+ if (!samekeys(path->pathkeys, new_path->pathkeys))
{
printf("oldpath\n");
- pprint(path->keys);
+ pprint(path->pathkeys);
printf("newpath\n");
- pprint(new_path->keys);
- if (path->keys && new_path->keys &&
- length(lfirst(path->keys)) >= 2 &&
- length(lfirst(path->keys)) < length(lfirst(new_path->keys)))
+ pprint(new_path->pathkeys);
+ if (path->pathkeys && new_path->pathkeys &&
+ length(lfirst(path->pathkeys)) >= 2 &&
+ length(lfirst(path->pathkeys)) < length(lfirst(new_path->pathkeys)))
sleep(0); /* set breakpoint here */
}
if (!equal_path_ordering(path->path_order,
}
#endif
- if (samekeys(path->keys, new_path->keys) &&
+ if (samekeys(path->pathkeys, new_path->pathkeys) &&
equal_path_ordering(path->path_order,
new_path->path_order))
{
pathnode->path_order = makeNode(PathOrder);
pathnode->path_order->ordtype = SORTOP_ORDER;
pathnode->path_order->ord.sortop = NULL;
- pathnode->keys = NIL;
+ pathnode->pathkeys = NIL;
/*
* copy restrictinfo list into path for expensive function processing --
*/
if (pathnode->path.path_order->ord.sortop)
{
- pathnode->path.keys = collect_index_pathkeys(index->indexkeys,
+ pathnode->path.pathkeys = collect_index_pathkeys(index->indexkeys,
rel->targetlist);
/*
* relevant to the scan are not applied to the scan path node, so
* if no index keys were found, we can't order the path).
*/
- if (pathnode->path.keys == NULL)
+ if (pathnode->path.pathkeys == NULL)
pathnode->path.path_order->ord.sortop = NULL;
}
else
- pathnode->path.keys = NULL;
+ pathnode->path.pathkeys = NULL;
if (is_join_scan || restriction_clauses == NULL)
{
* 'outer_rel' is the outer join relation
* 'outer_path' is the outer join path.
* 'inner_path' is the inner join path.
- * 'keys' are the keys of the path
+ * 'pathkeys' are the keys of the path
*
* Returns the resulting path node.
*
RelOptInfo * outer_rel,
Path *outer_path,
Path *inner_path,
- List *keys)
+ List *pathkeys)
{
JoinPath *pathnode = makeNode(JoinPath);
pathnode->outerjoinpath = outer_path;
pathnode->innerjoinpath = inner_path;
pathnode->pathinfo = joinrel->restrictinfo;
- pathnode->path.keys = keys;
+ pathnode->path.pathkeys = pathkeys;
pathnode->path.joinid = NIL;
pathnode->path.outerjoincost = (Cost) 0.0;
pathnode->path.loc_restrictinfo = NIL;
pathnode->path.path_order = makeNode(PathOrder);
- if (keys)
+ if (pathkeys)
{
pathnode->path.path_order->ordtype = outer_path->path_order->ordtype;
if (outer_path->path_order->ordtype == SORTOP_ORDER)
* 'innerwidth' is the number of bytes per tuple in the inner relation
* 'outer_path' is the outer path
* 'inner_path' is the inner path
- * 'keys' are the new keys of the join relation
+ * 'pathkeys' are the new keys of the join relation
* 'order' is the sort order required for the merge
* 'mergeclauses' are the applicable join/restriction clauses
* 'outersortkeys' are the sort varkeys for the outer relation
int innerwidth,
Path *outer_path,
Path *inner_path,
- List *keys,
+ List *pathkeys,
MergeOrder *order,
List *mergeclauses,
List *outersortkeys,
pathnode->jpath.outerjoinpath = outer_path;
pathnode->jpath.innerjoinpath = inner_path;
pathnode->jpath.pathinfo = joinrel->restrictinfo;
- pathnode->jpath.path.keys = keys;
+ pathnode->jpath.path.pathkeys = pathkeys;
pathnode->jpath.path.path_order = makeNode(PathOrder);
pathnode->jpath.path.path_order->ordtype = MERGE_ORDER;
pathnode->jpath.path.path_order->ord.merge = order;
* 'innerwidth' is the number of bytes per tuple in the inner relation
* 'outer_path' is the outer path
* 'inner_path' is the inner path
- * 'keys' are the new keys of the join relation
+ * 'pathkeys' are the new keys of the join relation
* 'operator' is the hashjoin operator
* 'hashclauses' are the applicable join/restriction clauses
* 'outerkeys' are the sort varkeys for the outer relation
int innerwidth,
Path *outer_path,
Path *inner_path,
- List *keys,
+ List *pathkeys,
Oid operator,
List *hashclauses,
List *outerkeys,
pathnode->jpath.innerjoinpath = inner_path;
pathnode->jpath.pathinfo = joinrel->restrictinfo;
pathnode->jpath.path.loc_restrictinfo = NIL;
- pathnode->jpath.path.keys = keys;
+ pathnode->jpath.path.pathkeys = pathkeys;
pathnode->jpath.path.path_order = makeNode(PathOrder);
pathnode->jpath.path.path_order->ordtype = SORTOP_ORDER;
pathnode->jpath.path.path_order->ord.sortop = NULL;
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: print.h,v 1.8 1998/09/01 04:36:48 momjian Exp $
+ * $Id: print.h,v 1.9 1999/02/10 03:52:49 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern void pprint(void *obj);
extern void print_rt(List *rtable);
extern void print_expr(Node *expr, List *rtable);
-extern void print_keys(List *keys, List *rtable);
+extern void print_pathkeys(List *pathkeys, List *rtable);
extern void print_tl(List *tlist, List *rtable);
extern void print_slot(TupleTableSlot *slot);
extern void print_plan_recursive(Plan *p, Query *parsetree,
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: relation.h,v 1.17 1999/02/09 03:51:42 momjian Exp $
+ * $Id: relation.h,v 1.18 1999/02/10 03:52:50 momjian Exp $
*
*-------------------------------------------------------------------------
*/
PathOrder *path_order;
- List *keys; /* this is a List of List of keys */
+ List *pathkeys; /* This is a List of List of Var nodes.
+ * It is a List of Lists because of multi-key
+ * indexes.
+ */
Cost outerjoincost;
Relid joinid;
List *loc_restrictinfo;
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: cost.h,v 1.12 1999/02/03 20:15:52 momjian Exp $
+ * $Id: cost.h,v 1.13 1999/02/10 03:52:53 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern Cost cost_index(Oid indexid, int expected_indexpages, Cost selec,
int relpages, int reltuples, int indexpages,
int indextuples, bool is_injoin);
-extern Cost cost_sort(List *keys, int tuples, int width, bool noread);
+extern Cost cost_sort(List *pathkeys, int tuples, int width, bool noread);
extern Cost cost_nestloop(Cost outercost, Cost innercost, int outertuples,
int innertuples, int outerpages, bool is_indexjoin);
extern Cost cost_mergejoin(Cost outercost, Cost innercost,
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: pathnode.h,v 1.10 1998/09/01 04:37:13 momjian Exp $
+ * $Id: pathnode.h,v 1.11 1999/02/10 03:52:54 momjian Exp $
*
*-------------------------------------------------------------------------
*/
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,
- Path *outer_path, Path *inner_path, List *keys);
+ Path *outer_path, Path *inner_path, List *pathkeys);
extern MergePath *create_mergejoin_path(RelOptInfo * joinrel, int outersize,
int innersize, int outerwidth, int innerwidth, Path *outer_path,
- Path *inner_path, List *keys, MergeOrder *order,
+ Path *inner_path, List *pathkeys, MergeOrder *order,
List *mergeclauses, List *outersortkeys, List *innersortkeys);
extern HashPath *create_hashjoin_path(RelOptInfo * joinrel, int outersize,
int innersize, int outerwidth, int innerwidth, Path *outer_path,
- Path *inner_path, List *keys, Oid operator, List *hashclauses,
+ Path *inner_path, List *pathkeys, Oid operator, List *hashclauses,
List *outerkeys, List *innerkeys);
/*