aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/util/pathnode.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>1999-07-24 23:21:14 +0000
committerTom Lane <tgl@sss.pgh.pa.us>1999-07-24 23:21:14 +0000
commitac4913a0dd433ac1c2207014f886338f2ccd5fef (patch)
treed959e2082fcd500541ccdc9875b093b40c7d116a /src/backend/optimizer/util/pathnode.c
parent348bdbce7942324dd19349d4d6f3f7dabae219c3 (diff)
downloadpostgresql-ac4913a0dd433ac1c2207014f886338f2ccd5fef.tar.gz
postgresql-ac4913a0dd433ac1c2207014f886338f2ccd5fef.zip
Clean up messy clause-selectivity code in clausesel.c; repair bug
identified by Hiroshi (incorrect cost attributed to OR clauses after multiple passes through set_rest_selec()). I think the code was trying to allow selectivities of OR subclauses to be passed in from outside, but noplace was actually passing any useful data, and set_rest_selec() was passing wrong data. Restructure representation of "indexqual" in IndexPath nodes so that it is the same as for indxqual in completed IndexScan nodes: namely, a toplevel list with an entry for each pass of the index scan, having sublists that are implicitly-ANDed index qual conditions for that pass. You don't want to know what the old representation was :-( Improve documentation of OR-clause indexscan functions. Remove useless 'notclause' field from RestrictInfo nodes. (This might force an initdb for anyone who has stored rules containing RestrictInfos, but I do not think that RestrictInfo ever appears in completed plans.)
Diffstat (limited to 'src/backend/optimizer/util/pathnode.c')
-rw-r--r--src/backend/optimizer/util/pathnode.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c
index 3c9e0a4dc84..52689d96a4d 100644
--- a/src/backend/optimizer/util/pathnode.c
+++ b/src/backend/optimizer/util/pathnode.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.46 1999/07/16 04:59:25 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.47 1999/07/24 23:21:14 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -426,7 +426,8 @@ create_index_path(Query *root,
/* each clause gets an equal selectivity */
clausesel = pow(selec, 1.0 / (double) length(restriction_clauses));
- pathnode->indexqual = restriction_clauses;
+ pathnode->indexqual = lcons(get_actual_clauses(restriction_clauses),
+ NIL);
pathnode->path.path_cost = cost_index(lfirsti(index->relids),
(int) npages,
selec,