Fix for AND/OR handling.
This commit is contained in:
parent
06b8c8a8b8
commit
748e300317
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.34 1998/09/01 04:29:33 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.35 1998/09/21 15:41:26 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1293,8 +1293,13 @@ index_innerjoin(Query *root, RelOptInfo * rel, List *clausegroup_list,
|
|||||||
length(clausegroup),
|
length(clausegroup),
|
||||||
&temp_pages,
|
&temp_pages,
|
||||||
&temp_selec);
|
&temp_selec);
|
||||||
|
|
||||||
pathnode->path.pathtype = T_IndexScan;
|
pathnode->path.pathtype = T_IndexScan;
|
||||||
pathnode->path.parent = rel;
|
pathnode->path.parent = rel;
|
||||||
|
pathnode->path.p_ordering.ordtype = SORTOP_ORDER;
|
||||||
|
pathnode->path.p_ordering.ord.sortop = index->ordering;
|
||||||
|
pathnode->path.keys = NIL; /* not sure about this, bjm 1998/09/21 */
|
||||||
|
|
||||||
pathnode->indexid = index->relids;
|
pathnode->indexid = index->relids;
|
||||||
pathnode->indexkeys = index->indexkeys;
|
pathnode->indexkeys = index->indexkeys;
|
||||||
pathnode->indexqual = clausegroup;
|
pathnode->indexqual = clausegroup;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.11 1998/09/01 04:29:41 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.12 1998/09/21 15:41:27 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -104,6 +104,15 @@ create_or_index_paths(Query *root,
|
|||||||
|
|
||||||
pathnode->path.pathtype = T_IndexScan;
|
pathnode->path.pathtype = T_IndexScan;
|
||||||
pathnode->path.parent = rel;
|
pathnode->path.parent = rel;
|
||||||
|
pathnode->path.p_ordering.ordtype = SORTOP_ORDER;
|
||||||
|
/*
|
||||||
|
* This is an IndexScan, but it does index lookups based
|
||||||
|
* on the order of the fields specified in the WHERE clause,
|
||||||
|
* not in any order, so the sortop is NULL.
|
||||||
|
*/
|
||||||
|
pathnode->path.p_ordering.ord.sortop = NULL;
|
||||||
|
pathnode->path.keys = NIL; /* not sure about this, bjm 1998/09/21 */
|
||||||
|
|
||||||
pathnode->indexqual = lcons(clausenode, NIL);
|
pathnode->indexqual = lcons(clausenode, NIL);
|
||||||
pathnode->indexid = indexids;
|
pathnode->indexid = indexids;
|
||||||
pathnode->path.path_cost = cost;
|
pathnode->path.path_cost = cost;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.12 1998/09/01 04:30:08 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.13 1998/09/21 15:41:28 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -355,13 +355,10 @@ create_index_path(Query *root,
|
|||||||
&npages,
|
&npages,
|
||||||
&selec);
|
&selec);
|
||||||
/* each clause gets an equal selectivity */
|
/* each clause gets an equal selectivity */
|
||||||
clausesel =
|
clausesel = pow(selec, 1.0 / (double) length(restriction_clauses));
|
||||||
pow(selec,
|
|
||||||
1.0 / (double) length(restriction_clauses));
|
|
||||||
|
|
||||||
pathnode->indexqual = restriction_clauses;
|
pathnode->indexqual = restriction_clauses;
|
||||||
pathnode->path.path_cost =
|
pathnode->path.path_cost = cost_index(lfirsti(index->relids),
|
||||||
cost_index(lfirsti(index->relids),
|
|
||||||
(int) npages,
|
(int) npages,
|
||||||
selec,
|
selec,
|
||||||
rel->pages,
|
rel->pages,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user