diff --strip-trailing-cr -U3 C:/cirrus/src/test/regress/expected/plancache.out C:/cirrus/build/testrun/pg_upgrade/002_pg_upgrade/data/results/plancache.out --- C:/cirrus/src/test/regress/expected/plancache.out 2025-08-23 17:08:12.939439000 +0000 +++ C:/cirrus/build/testrun/pg_upgrade/002_pg_upgrade/data/results/plancache.out 2025-08-23 17:12:23.084624800 +0000 @@ -398,3 +398,36 @@ (1 row) drop table test_mode; +-- Check the interference between plan_cache_mode and cursor_options +-- EXPLAIN (COSTS OFF, GENERIC_PLAN) +SELECT prepare_spi_plan(NULL, NULL, NULL); -- ERROR +ERROR: query text cannot be null +SELECT prepare_spi_plan( + 'EXPLAIN (COSTS OFF) SELECT * FROM pcachetest WHERE q1 = $1', + NULL, 'integer') AS p1 \gset +SELECT prepare_spi_plan( + 'SELECT * FROM pcachetest WHERE q1 = $1 OR q1 = $2', + NULL, 'integer', NULL); --ERROR +ERROR: type name cannot be NULL +SELECT prepare_spi_plan( + 'SELECT * FROM pcachetest WHERE q1 = $1 OR q1 = 3', + NULL, 'integer', 'numeric') AS p2 \gset +SELECT execute_spi_plan(:p1, 'generic_plan', 42); + execute_spi_plan +---------------------------- + ("Seq Scan on pcachetest") + (" Filter: (q1 = 42)") +(2 rows) + +SELECT free_spi_plan(:p1); + free_spi_plan +--------------- + +(1 row) + +SELECT free_spi_plan(:p2); + free_spi_plan +--------------- + +(1 row) +