Re: Issue with circular references in VIEW
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Gilles Darold <gilles.darold@dalibo.com>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2017-07-24T17:19:05Z
Lists: pgsql-hackers
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. regards, tom lane
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