Re: Issue with circular references in VIEW
Gilles Darold <gilles.darold@dalibo.com>
From: Gilles Darold <gilles.darold@dalibo.com>
To: pgsql-hackers@postgresql.org
Date: 2017-07-24T18:43:10Z
Lists: pgsql-hackers
Le 24/07/2017 à 19:19, Tom Lane a écrit : > Gilles Darold <gilles.darold@dalibo.com> writes: >> There is an issue with version prior to 10 when dumping views with circular >> references. I know that these views are now exported as views in 10 but they >> are still exported as TABLE + RULE in prior versions. This conduct to the >> following error when columns of sub-queries doesn't have the same aliases >> names: > The core of this issue, I think, is that pg_get_viewdef() knows that it > should make what it prints have output column names that match the view, > whereas pg_get_ruledef() does not, even when it is printing an ON SELECT > rule. This is a little bit surprising --- you'd really expect those > functions to produce identical SELECT statements --- and I think it's > likely to break other tools even if pg_dump has managed to skirt the > issue. So I'm inclined to think in terms of fixing it at that level > rather than in pg_dump. It doesn't look like it would be hard to fix: > both functions ultimately call get_query_def(), it's just that one passes > down a tuple descriptor for the view while the other currently doesn't. I was thinking that this was intentional that pg_get_ruledef() returns the raw code typed by the user. I will fix it and send a patch following your explanation. Thanks. -- Gilles Darold Consultant PostgreSQL http://dalibo.com - http://dalibo.org
Commits
-
Ensure that pg_get_ruledef()'s output matches pg_get_viewdef()'s.
- f579580bef50 9.5.8 landed
- f0f255a34bed 9.4.13 landed
- d9874fde89c9 9.2.22 landed
- b6d640047657 9.3.18 landed
- b4af9e3f378e 10.0 landed
- 3a07ba128581 9.6.4 landed