pgsql: Kluge slot_compile_deform() to ignore incorrect attnotnull marki - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Kluge slot_compile_deform() to ignore incorrect attnotnull marki
Date
Msg-id E1jxbry-000382-3f@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
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

Branch
------
REL_11_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/855195a7ba9875648f958c42aba91ad382e82edd

Modified Files
--------------
src/backend/jit/llvm/llvmjit_deform.c      | 24 ++++++++++++++++++++----
src/test/regress/expected/subscription.out |  7 +++++++
src/test/regress/sql/subscription.sql      |  2 ++
3 files changed, 29 insertions(+), 4 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Correctly mark pg_subscription_rel.srsublsn as nullable.
Next
From: Peter Geoghegan
Date:
Subject: pgsql: Assert that buffer is pinned in LockBuffer().