]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix bug with WITH RECURSIVE immediately inside WITH RECURSIVE. 99% of the
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 9 Sep 2009 03:33:01 +0000 (03:33 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 9 Sep 2009 03:33:01 +0000 (03:33 +0000)
commit9ed9ac5a38431cf328088657c4c82b63e6326aab
treef1e387d920e19b4d60d0ec607c137853c9dc99ef
parent3385dcc8c8b395230d8b9d450f1d4e77bc43243f
Fix bug with WITH RECURSIVE immediately inside WITH RECURSIVE.  99% of the
code was already okay with this, but the hack that obtained the output
column types of a recursive union in advance of doing real parse analysis
of the recursive union forgot to handle the case where there was an inner
WITH clause available to the non-recursive term.  Best fix seems to be to
refactor so that we don't need the "throwaway" parse analysis step at all.
Instead, teach the transformSetOperationStmt code to set up the CTE's output
column information after it's processed the non-recursive term normally.
Per report from David Fetter.
src/backend/parser/analyze.c
src/backend/parser/parse_clause.c
src/backend/parser/parse_cte.c
src/backend/parser/parse_expr.c
src/include/parser/analyze.h
src/include/parser/parse_cte.h
src/include/parser/parse_node.h
src/test/regress/expected/with.out
src/test/regress/sql/with.sql