aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rowley <drowley@postgresql.org>2025-01-11 13:45:54 +1300
committerDavid Rowley <drowley@postgresql.org>2025-01-11 13:45:54 +1300
commit34c6e652425fde42c2746f749e31d196fc0d5538 (patch)
tree0a5940fe55a1ac6b82ed8c9cfe5bc0caf9ed4148
parenta9dcbb4d5c00b703e727e14055ed70c525a86418 (diff)
downloadpostgresql-34c6e652425fde42c2746f749e31d196fc0d5538.tar.gz
postgresql-34c6e652425fde42c2746f749e31d196fc0d5538.zip
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 <andrew@ankane.org> Reviewed-by: David Rowley <dgrowleyml@gmail.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/CAOdR5yHfMEMW00XGo=v1zCVUS6Huq2UehXdvKnwtXPTcZwXhmg@mail.gmail.com
-rw-r--r--src/backend/access/common/tupdesc.c5
-rw-r--r--src/include/access/tupdesc.h2
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.