Subselects in FROM clause, per ISO syntax: FROM (SELECT ...) [AS] alias.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 3a94e789f5c9537d804210be3cb26f7fb08e3b9e
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2000-09-29T18:21:41Z
Releases: 7.1.1
Subselects in FROM clause, per ISO syntax: FROM (SELECT ...) [AS] alias.
(Don't forget that an alias is required.)  Views reimplemented as expanding
to subselect-in-FROM.  Grouping, aggregates, DISTINCT in views actually
work now (he says optimistically).  No UNION support in subselects/views
yet, but I have some ideas about that.  Rule-related permissions checking
moved out of rewriter and into executor.
INITDB REQUIRED!

Files

PathChange+/−
src/backend/catalog/heap.c modified +21 −7
src/backend/commands/command.c modified +7 −6
src/backend/commands/explain.c modified +73 −58
src/backend/commands/view.c modified +29 −36
src/backend/executor/execAmi.c modified +10 −5
src/backend/executor/execMain.c modified +83 −136
src/backend/executor/execProcnode.c modified +63 −50
src/backend/executor/execTuples.c modified +17 −9
src/backend/executor/Makefile modified +2 −2
src/backend/executor/nodeSubqueryscan.c added +289 −0
src/backend/nodes/copyfuncs.c modified +52 −19
src/backend/nodes/equalfuncs.c modified +25 −21
src/backend/nodes/list.c modified +13 −42
src/backend/nodes/outfuncs.c modified +77 −53
src/backend/nodes/print.c modified +22 −15
src/backend/nodes/readfuncs.c modified +108 −64
src/backend/optimizer/geqo/geqo_main.c modified +4 −4
src/backend/optimizer/path/allpaths.c modified +114 −81
src/backend/optimizer/path/costsize.c modified +3 −1
src/backend/optimizer/path/indxpath.c modified +8 −8
src/backend/optimizer/path/joinpath.c modified +6 −6
src/backend/optimizer/path/joinrels.c modified +13 −6
src/backend/optimizer/path/pathkeys.c modified +2 −2
src/backend/optimizer/plan/createplan.c modified +80 −4
src/backend/optimizer/plan/initsplan.c modified +149 −117
src/backend/optimizer/plan/planmain.c modified +26 −59
src/backend/optimizer/plan/planner.c modified +398 −108
src/backend/optimizer/plan/setrefs.c modified +6 −1
src/backend/optimizer/plan/subselect.c modified +2 −14
src/backend/optimizer/prep/prepkeyset.c modified +10 −8
src/backend/optimizer/prep/prepunion.c modified +2 −2
src/backend/optimizer/README modified +126 −76
src/backend/optimizer/util/clauses.c modified +59 −41
src/backend/optimizer/util/indexnode.c deleted +0 −34
src/backend/optimizer/util/Makefile modified +2 −2
src/backend/optimizer/util/pathnode.c modified +25 −4
src/backend/optimizer/util/plancat.c modified +8 −11
src/backend/optimizer/util/relnode.c modified +24 −7
src/backend/optimizer/util/restrictinfo.c modified +5 −5
src/backend/parser/analyze.c modified +107 −72
src/backend/parser/gram.y modified +81 −83
src/backend/parser/parse_agg.c modified +14 −13
src/backend/parser/parse_clause.c modified +67 −29
src/backend/parser/parse_expr.c modified +8 −7
src/backend/parser/parse_func.c modified +7 −4
src/backend/parser/parse_node.c modified +22 −8
src/backend/parser/parse_relation.c modified +204 −49
src/backend/parser/parse_target.c modified +4 −4
src/backend/rewrite/locks.c deleted +0 −268
src/backend/rewrite/Makefile modified +2 −2
src/backend/rewrite/rewriteDefine.c modified +107 −64
src/backend/rewrite/rewriteHandler.c modified +173 −629
src/backend/rewrite/rewriteManip.c modified +66 −113
src/backend/rewrite/rewriteRemove.c modified +7 −7
src/backend/rewrite/rewriteSupport.c modified +11 −6
src/backend/utils/adt/ruleutils.c modified +40 −15
src/include/catalog/catversion.h modified +2 −2
src/include/executor/nodeSubqueryscan.h added +25 −0
src/include/nodes/execnodes.h modified +19 −1
src/include/nodes/nodes.h modified +5 −2
src/include/nodes/parsenodes.h modified +37 −20
src/include/nodes/pg_list.h modified +16 −4
src/include/nodes/plannodes.h modified +22 −1
src/include/nodes/primnodes.h modified +38 −14
src/include/nodes/relation.h modified +57 −21
src/include/optimizer/clauses.h modified +3 −5
src/include/optimizer/pathnode.h modified +3 −7
src/include/optimizer/paths.h modified +3 −2
src/include/optimizer/plancat.h modified +4 −4
src/include/optimizer/planmain.h modified +2 −3
src/include/parser/parse_agg.h modified +2 −2
src/include/parser/parse_node.h modified +3 −2
src/include/parser/parse_relation.h modified +7 −3
src/include/rewrite/locks.h deleted +0 −24
src/include/rewrite/rewriteManip.h modified +3 −6
src/include/rewrite/rewriteSupport.h modified +3 −2
src/test/regress/expected/errors.out modified +1 −1