From 34c6e652425fde42c2746f749e31d196fc0d5538 Mon Sep 17 00:00:00 2001 From: David Rowley Date: Sat, 11 Jan 2025 13:45:54 +1300 Subject: [PATCH] Make verify_compact_attribute available in non-assert builds 6f3820f37 adjusted the assert-enabled validation of the CompactAttribute to call a new external function to perform the validation. That commit made it so the function was only available when building with USE_ASSERT_CHECKING, and because TupleDescCompactAttr() is a static inline function, the call to verify_compact_attribute() was compiled into any extension which uses TupleDescCompactAttr(). This caused issues for such extensions when loading the assert-enabled extension into PostgreSQL versions without asserts enabled due to that function being unavailable in core. To fix this, make verify_compact_attribute() available unconditionally, but make it do nothing unless building with USE_ASSERT_CHECKING. Author: Andrew Kane Reviewed-by: David Rowley Reviewed-by: Tom Lane Discussion: https://postgr.es/m/CAOdR5yHfMEMW00XGo=v1zCVUS6Huq2UehXdvKnwtXPTcZwXhmg@mail.gmail.com --- src/backend/access/common/tupdesc.c | 5 ++--- src/include/access/tupdesc.h | 2 -- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c index cc940742197..2e4666c469c 100644 --- a/src/backend/access/common/tupdesc.c +++ b/src/backend/access/common/tupdesc.c @@ -118,7 +118,6 @@ populate_compact_attribute(TupleDesc tupdesc, int attnum) populate_compact_attribute_internal(src, dst); } -#ifdef USE_ASSERT_CHECKING /* * verify_compact_attribute * In Assert enabled builds, we verify that the CompactAttribute is @@ -132,6 +131,7 @@ populate_compact_attribute(TupleDesc tupdesc, int attnum) void verify_compact_attribute(TupleDesc tupdesc, int attnum) { +#ifdef USE_ASSERT_CHECKING CompactAttribute *cattr = &tupdesc->compact_attrs[attnum]; Form_pg_attribute attr = TupleDescAttr(tupdesc, attnum); CompactAttribute tmp; @@ -150,9 +150,8 @@ verify_compact_attribute(TupleDesc tupdesc, int attnum) /* Check the freshly populated CompactAttribute matches the TupleDesc's */ Assert(memcmp(&tmp, cattr, sizeof(CompactAttribute)) == 0); -} #endif - +} /* * CreateTemplateTupleDesc diff --git a/src/include/access/tupdesc.h b/src/include/access/tupdesc.h index aee871b0e8f..504ce222500 100644 --- a/src/include/access/tupdesc.h +++ b/src/include/access/tupdesc.h @@ -158,9 +158,7 @@ TupleDescAttr(TupleDesc tupdesc, int i) #undef TupleDescAttrAddress -#ifdef USE_ASSERT_CHECKING extern void verify_compact_attribute(TupleDesc, int attnum); -#endif /* * Accessor for the i'th CompactAttribute element of tupdesc.