On 2010-09-14 10:51 PM, Tom Lane wrote:
Hitoshi Harada<umi.tan...@gmail.com> writes:
2010/9/15 Marko Tiikkaja<marko.tiikk...@cs.helsinki.fi>:
In the email you referred to, Tom was concerned about the case where these
WITH lists have different RECURSIVE declarations. This patch makes both
RECURSIVE if either of them is. I can think of cases where that might lead
to surprising behaviour, but the chances of any of those happening in real
life seem pretty slim.
Does that cause surprising behavior?
My recollection is that whether a CTE is marked RECURSIVE or not affects
its scope of visibility, so that confusing the two cases can result in
flat-out incorrect parser behavior.
The worst I can think of is:
CREATE TABLE foo(a int);
WITH t AS (SELECT * FROM foo)
INSERT INTO bar
WITH RECURSIVE foo (SELECT 1 AS a)
SELECT * FROM t;
t will actually be populated with the results of the CTE, not the table foo.
I don't think this is a huge problem in real life, but if someone thinks
otherwise, I think we could just error out if the lists have a different
RECURSIVE definition.
Anyone have a worse example? Thoughts?
Regards,
Marko Tiikkaja
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers