mirror of
https://github.com/postgres/postgres.git
synced 2025-06-23 14:01:44 +03:00
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
This commit is contained in:
@ -118,7 +118,6 @@ populate_compact_attribute(TupleDesc tupdesc, int attnum)
|
|||||||
populate_compact_attribute_internal(src, dst);
|
populate_compact_attribute_internal(src, dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_ASSERT_CHECKING
|
|
||||||
/*
|
/*
|
||||||
* verify_compact_attribute
|
* verify_compact_attribute
|
||||||
* In Assert enabled builds, we verify that the CompactAttribute is
|
* In Assert enabled builds, we verify that the CompactAttribute is
|
||||||
@ -132,6 +131,7 @@ populate_compact_attribute(TupleDesc tupdesc, int attnum)
|
|||||||
void
|
void
|
||||||
verify_compact_attribute(TupleDesc tupdesc, int attnum)
|
verify_compact_attribute(TupleDesc tupdesc, int attnum)
|
||||||
{
|
{
|
||||||
|
#ifdef USE_ASSERT_CHECKING
|
||||||
CompactAttribute *cattr = &tupdesc->compact_attrs[attnum];
|
CompactAttribute *cattr = &tupdesc->compact_attrs[attnum];
|
||||||
Form_pg_attribute attr = TupleDescAttr(tupdesc, attnum);
|
Form_pg_attribute attr = TupleDescAttr(tupdesc, attnum);
|
||||||
CompactAttribute tmp;
|
CompactAttribute tmp;
|
||||||
@ -150,9 +150,8 @@ verify_compact_attribute(TupleDesc tupdesc, int attnum)
|
|||||||
|
|
||||||
/* Check the freshly populated CompactAttribute matches the TupleDesc's */
|
/* Check the freshly populated CompactAttribute matches the TupleDesc's */
|
||||||
Assert(memcmp(&tmp, cattr, sizeof(CompactAttribute)) == 0);
|
Assert(memcmp(&tmp, cattr, sizeof(CompactAttribute)) == 0);
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CreateTemplateTupleDesc
|
* CreateTemplateTupleDesc
|
||||||
|
@ -158,9 +158,7 @@ TupleDescAttr(TupleDesc tupdesc, int i)
|
|||||||
|
|
||||||
#undef TupleDescAttrAddress
|
#undef TupleDescAttrAddress
|
||||||
|
|
||||||
#ifdef USE_ASSERT_CHECKING
|
|
||||||
extern void verify_compact_attribute(TupleDesc, int attnum);
|
extern void verify_compact_attribute(TupleDesc, int attnum);
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Accessor for the i'th CompactAttribute element of tupdesc.
|
* Accessor for the i'th CompactAttribute element of tupdesc.
|
||||||
|
Reference in New Issue
Block a user