Re: BUG #16703: pg-dump fails to process recursive view definition
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: exclusion@gmail.com
Cc: pgsql-bugs@lists.postgresql.org, Alvaro Herrera <alvherre@2ndquadrant.com>
Date: 2020-11-05T15:00:28Z
Lists: pgsql-bugs
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Revert "Accept relations of any kind in LOCK TABLE".
- f07811009ffd 12.5 landed
- ec516818a81a 10.15 landed
- 9e555180f23d 9.6.20 landed
- 549fd3d3bc24 11.10 landed
- 43c2e97ed45d 9.5.24 landed
- eeda7f633809 14.0 landed
- 4352c2394a54 13.1 landed
-
Revert "pg_dump: Lock all relations, not just plain tables".
- fa3840c8800f 13.1 landed
- f4fa4a82133f 12.5 landed
- dee1fe5e339a 10.15 landed
- 9e98ddd16e06 9.5.24 landed
- 802c460a27cc 11.10 landed
- 768ab4d676aa 9.6.20 landed
- d3adaabaf7d5 14.0 landed
-
Doc: undo mistaken adjustment to LOCK TABLE docs in back branches.
- 8b4121903c2d 9.5.24 landed
- 583fcf2f5759 9.6.20 landed
- 33862cb9c13a 10.15 landed
-
Don't throw an error for LOCK TABLE on a self-referential view.
- 7dc18c619dac 11.10 landed
- 5b7bfc39726f 14.0 landed
- 44b973b91029 13.1 landed
- 0bdf1ef3d53e 12.5 landed
PG Bug reporting form <noreply@postgresql.org> writes: > The following recursive views (borrowed from regress/sql/lock.sql, see > "detecting infinite recursions in view definitions"): > CREATE VIEW lock_view2(a) AS SELECT NULL::integer; > CREATE VIEW lock_view3 AS SELECT * from lock_view2; > CREATE OR REPLACE VIEW lock_view2 AS SELECT * from lock_view3; > can be created successfully, but make a subsequent pg_dump fail: > pg_dump: error: query failed: ERROR: infinite recursion detected in rules > for relation "lock_view2" > pg_dump: error: query was: LOCK TABLE public.lock_view2 IN ACCESS SHARE > MODE > The offending commit is 64fc3e03. Yeah, not surprising. It seems like the least painful solution might be to teach LockTableRecurse to detect recursion and just not recurse into a view it's already locked. (BTW, I wonder if we shouldn't have a stack depth check there, too.) regards, tom lane