summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2008-03-18 22:04:14 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2008-03-18 22:04:14 +0000
commit0d49838df6f54c5b49d40a8cf396ea799bd3c4d9 (patch)
tree10bc9771479d02eb22a9a2fcec20e758ad5715bb /src/include
parent433c5238bf1980b917b758f3003f16f134c34540 (diff)
Arrange to "inline" SQL functions that appear in a query's FROM clause,
are declared to return set, and consist of just a single SELECT. We can replace the FROM-item with a sub-SELECT and then optimize much as if we were dealing with a view. Patch from Richard Rowell, cleaned up by me.
Diffstat (limited to 'src/include')
-rw-r--r--src/include/executor/functions.h3
-rw-r--r--src/include/optimizer/clauses.h4
-rw-r--r--src/include/optimizer/prep.h3
3 files changed, 7 insertions, 3 deletions
diff --git a/src/include/executor/functions.h b/src/include/executor/functions.h
index 3a5c4eb012e..b5451ad43b8 100644
--- a/src/include/executor/functions.h
+++ b/src/include/executor/functions.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/executor/functions.h,v 1.30 2008/01/01 19:45:57 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/executor/functions.h,v 1.31 2008/03/18 22:04:14 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -21,6 +21,7 @@ extern Datum fmgr_sql(PG_FUNCTION_ARGS);
extern bool check_sql_fn_retval(Oid func_id, Oid rettype,
List *queryTreeList,
+ bool insertRelabels,
JunkFilter **junkFilter);
#endif /* FUNCTIONS_H */
diff --git a/src/include/optimizer/clauses.h b/src/include/optimizer/clauses.h
index 0a2b3a2bb80..b5d618595f7 100644
--- a/src/include/optimizer/clauses.h
+++ b/src/include/optimizer/clauses.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/optimizer/clauses.h,v 1.88 2008/01/01 19:45:58 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/optimizer/clauses.h,v 1.89 2008/03/18 22:04:14 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -79,6 +79,8 @@ extern Node *eval_const_expressions(Node *node);
extern Node *estimate_expression_value(PlannerInfo *root, Node *node);
+extern Query *inline_set_returning_function(PlannerInfo *root, Node *node);
+
extern bool expression_tree_walker(Node *node, bool (*walker) (),
void *context);
extern Node *expression_tree_mutator(Node *node, Node *(*mutator) (),
diff --git a/src/include/optimizer/prep.h b/src/include/optimizer/prep.h
index b98040a498a..80fa3b51526 100644
--- a/src/include/optimizer/prep.h
+++ b/src/include/optimizer/prep.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/optimizer/prep.h,v 1.59 2008/01/01 19:45:58 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/optimizer/prep.h,v 1.60 2008/03/18 22:04:14 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -22,6 +22,7 @@
* prototypes for prepjointree.c
*/
extern Node *pull_up_IN_clauses(PlannerInfo *root, Node *node);
+extern void inline_set_returning_functions(PlannerInfo *root);
extern Node *pull_up_subqueries(PlannerInfo *root, Node *jtnode,
bool below_outer_join, bool append_rel_member);
extern void reduce_outer_joins(PlannerInfo *root);