Re: Restore support for USE_ASSERT_CHECKING in extensions only

David Rowley <dgrowleyml@gmail.com>

From: David Rowley <dgrowleyml@gmail.com>
To: Andrew Kane <andrew@ankane.org>
Cc: pgsql-hackers@postgresql.org
Date: 2025-01-10T23:17:23Z
Lists: pgsql-hackers

Attachments

On Sat, 11 Jan 2025 at 11:27, Andrew Kane <andrew@ankane.org> wrote:
> Prior to 6f3820f, extensions could be compiled with -DUSE_ASSERT_CHECKING whether or not the Postgres installation was configured with --enable-cassert (to enable at least some assertion checking). However, after 6f3820f, linking fails with `undefined symbol: verify_compact_attribute`. I'm not sure if this use case is officially supported, but it has been helpful for developing pgvector.
>
> The attached patch fixes it, but there may be a better way to do this.

hmm, I didn't think of that scenario.  I think since
verify_compact_attribute() does nothing when USE_ASSERT_CHECKING isn't
defined that we might as well define a ((void) 0) macro to avoid the
undefined symbol error. That'll avoid the useless call in your debug
builds.

I looked around for inspiration and that's what pgstat_assert_is_up()
does. Most of the other examples are static functions.

David

Commits

  1. Make verify_compact_attribute available in non-assert builds