aboutsummaryrefslogtreecommitdiff
path: root/src/include/optimizer/restrictinfo.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-01-05 23:39:54 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-01-05 23:39:54 +0000
commitfa559a86eec2ae90fd63fd7e6563e42f7dc619e0 (patch)
treea43de4df13060be5df59c38d7b3b9a5e47069e05 /src/include/optimizer/restrictinfo.h
parent5d472f64647346a44af6ab2ab9ca70cadf9fe788 (diff)
downloadpostgresql-fa559a86eec2ae90fd63fd7e6563e42f7dc619e0.tar.gz
postgresql-fa559a86eec2ae90fd63fd7e6563e42f7dc619e0.zip
Adjust indexscan planning logic to keep RestrictInfo nodes associated
with index qual clauses in the Path representation. This saves a little work during createplan and (probably more importantly) allows reuse of cached selectivity estimates during indexscan planning. Also fix latent bug: wrong plan would have been generated for a 'special operator' used in a nestloop-inner-indexscan join qual, because the special operator would not have gotten into the list of quals to recheck. This bug is only latent because at present the special-operator code could never trigger on a join qual, but sooner or later someone will want to do it.
Diffstat (limited to 'src/include/optimizer/restrictinfo.h')
-rw-r--r--src/include/optimizer/restrictinfo.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/include/optimizer/restrictinfo.h b/src/include/optimizer/restrictinfo.h
index 022bfa253a3..dfb6e71e319 100644
--- a/src/include/optimizer/restrictinfo.h
+++ b/src/include/optimizer/restrictinfo.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/optimizer/restrictinfo.h,v 1.22 2004/01/05 05:07:36 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/optimizer/restrictinfo.h,v 1.23 2004/01/05 23:39:54 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -18,6 +18,9 @@
extern RestrictInfo *make_restrictinfo(Expr *clause, bool is_pushed_down,
bool valid_everywhere);
+extern List *make_restrictinfo_from_indexclauses(List *indexclauses,
+ bool is_pushed_down,
+ bool valid_everywhere);
extern bool restriction_is_or_clause(RestrictInfo *restrictinfo);
extern List *get_actual_clauses(List *restrictinfo_list);
extern void get_actual_join_clauses(List *restrictinfo_list,