mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
Kluge slot_compile_deform() to ignore incorrect attnotnull markings.
Since we mustn't force an initdb in released branches, there is no simple way to correct the markings of pg_subscription.subslotname and pg_subscription_rel.srsublsn as attnotnull in existing pre-v13 installations. Fortunately, released branches don't rely on attnotnull being correct for much. The planner looks at it in relation_excluded_by_constraints, but it'd be difficult to get that to matter for a query on a system catalog. The only place where it's really problematic is in JIT's slot_compile_deform(), which can produce incorrect code that crashes if there are NULLs in an allegedly not-null column. Hence, hack up slot_compile_deform() to be specifically aware of these two incorrect markings and not trust them. This applies to v11 and v12; the JIT code didn't exist before that, and we've fixed the markings in v13. Discussion: https://postgr.es/m/229396.1595191345@sss.pgh.pa.us
This commit is contained in:
@ -147,6 +147,13 @@ DROP SUBSCRIPTION regress_testsub;
|
||||
ERROR: DROP SUBSCRIPTION cannot run inside a transaction block
|
||||
COMMIT;
|
||||
ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE);
|
||||
\dRs+
|
||||
List of subscriptions
|
||||
Name | Owner | Enabled | Publication | Synchronous commit | Conninfo
|
||||
-----------------+----------------------------+---------+---------------------+--------------------+------------------------------
|
||||
regress_testsub | regress_subscription_user2 | f | {testpub2,testpub3} | local | dbname=regress_doesnotexist2
|
||||
(1 row)
|
||||
|
||||
-- now it works
|
||||
BEGIN;
|
||||
DROP SUBSCRIPTION regress_testsub;
|
||||
|
@ -109,6 +109,8 @@ COMMIT;
|
||||
|
||||
ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE);
|
||||
|
||||
\dRs+
|
||||
|
||||
-- now it works
|
||||
BEGIN;
|
||||
DROP SUBSCRIPTION regress_testsub;
|
||||
|
Reference in New Issue
Block a user