From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Kluge slot_compile_deform() to ignore incorrect attnotnull marki |
Date: | 2020-07-20 19:54:38 |
Message-ID: | E1jxbry-000382-3f@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Geoghegan | 2020-07-20 23:06:16 | pgsql: Assert that buffer is pinned in LockBuffer(). |
Previous Message | Tom Lane | 2020-07-20 18:56:05 | pgsql: Correctly mark pg_subscription_rel.srsublsn as nullable. |