BUG: IS NOT NULL on RECORD variable fails in 17.5-dev

Peter Praxmarer <ppraxmarer@gmail.com>

From: Peter Praxmarer <ppraxmarer@gmail.com>
To: pgsql-bugs@lists.postgresql.org
Date: 2025-08-07T19:43:54Z
Lists: pgsql-bugs
Hello,
I have discovered what appears to be a severe bug in a development version
of PostgreSQL 17 where a populated RECORD variable incorrectly fails an IS
NOT NULL check.

Version Information:

PostgreSQL 17.5 (Debian 17.5-1) on x86_64-pc-linux-gnu, compiled by gcc
(Debian 14.2.0-19) 14.2.0, 64-bit


*Minimal Reproducible Example:*

DO $$
DECLARE
    r RECORD;
BEGIN
    RAISE NOTICE '--- Assigning a row with a NULL column into "r" ---';
    SELECT 42 AS id, NULL::text AS name INTO r;
    RAISE NOTICE 'The value of r is: %', r;
    ASSERT r IS NOT NULL, 'ASSERTION FAILED: r IS NULL!';
    RAISE NOTICE 'Assertion Passed.';
END $$;


*Actual Output:*
NOTICE:  --- Assigning a row with a NULL column into "r" ---
NOTICE:  The value of r is: (42,)
ERROR:  ASSERTION FAILED: r IS NULL!
CONTEXT:  PL/pgSQL function inline_code_block line 8 at ASSERT

*Expected Output:* The ASSERT should pass without error. The RAISE NOTICE
proves the record is populated immediately before the ASSERT fails. Thank
you.