diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2008-03-18 22:04:14 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2008-03-18 22:04:14 +0000 |
commit | 0d49838df6f54c5b49d40a8cf396ea799bd3c4d9 (patch) | |
tree | 10bc9771479d02eb22a9a2fcec20e758ad5715bb /src/include | |
parent | 433c5238bf1980b917b758f3003f16f134c34540 (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.h | 3 | ||||
-rw-r--r-- | src/include/optimizer/clauses.h | 4 | ||||
-rw-r--r-- | src/include/optimizer/prep.h | 3 |
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); |