Re: pg_subscription.subslotname is wrongly marked NOT NULL
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-hackers@lists.postgresql.org
Cc: Andres Freund <andres@anarazel.de>
Date: 2020-07-19T22:04:43Z
Lists: pgsql-hackers
Attachments
- add-attnotnull-assertions.patch (text/x-diff) patch
I wrote: >> It's also a bit annoying that we have no mechanized checks that >> would catch this inconsistency. If JIT is going to be absolutely >> dependent on NOT NULL markings being accurate, we can't really >> have such a laissez-faire attitude to C code getting it wrong. > It seems like at least in assert-enabled builds, we'd better have > a cross-check for that. I'm not sure where's the best place. I concluded that we should put this into CatalogTupleInsert and CatalogTupleUpdate. The bootstrap data path already has a check (see InsertOneNull()), and so does the executor, so we only need to worry about tuples that're built manually by catalog manipulation code. I think all of that goes through these functions. Hence, as attached. ... and apparently, I should have done this task first, because damn if it didn't immediately expose another bug of the same ilk. pg_subscription_rel.srsublsn also needs to be marked nullable. regards, tom lane
Commits
-
Assert that we don't insert nulls into attnotnull catalog columns.
- fb71329ad6fc 10.14 landed
- f451029db85a 11.9 landed
- bca409e5b160 13.0 landed
- 43ef3c4c360a 12.4 landed
- 3e66019f1554 14.0 landed
-
Avoid direct C access to possibly-null pg_subscription_rel.srsublsn.
- ae3d40b0cdc6 10.14 landed
- 99b0c5da3e10 11.9 landed
- b7103bbe34aa 12.4 landed
-
Kluge slot_compile_deform() to ignore incorrect attnotnull markings.
- 855195a7ba98 11.9 landed
- 798b4faefd20 12.4 landed
-
Correctly mark pg_subscription_rel.srsublsn as nullable.
- e5372b48b94f 13.0 landed
- 0fa0b487b5d7 14.0 landed
-
Correctly mark pg_subscription.subslotname as nullable.
- 914d2383ae91 13.0 landed
- 72eab84a565c 14.0 landed