diff --git a/src/test/regress/expected/extract_deparse.out b/src/test/regress/expected/extract_deparse.out index 8698d0bbdc4..c8d26470386 100644 --- a/src/test/regress/expected/extract_deparse.out +++ b/src/test/regress/expected/extract_deparse.out @@ -26,9 +26,20 @@ EXCEPTION WHEN invalid_parameter_value THEN NULL; END $$; -SELECT bool_and(result::boolean) AS extract_field_injection_blocked +-- Positive control: the same expression with a valid field must still be +-- pushed down, so the check below cannot pass merely because the expression +-- stopped reaching the workers. +SELECT EXTRACT('year' FROM ts) = 2026 AS extract_field_pushdown_works +FROM extract_deparse_source +WHERE id = 1; + extract_field_pushdown_works +--------------------------------------------------------------------- + t +(1 row) + +SELECT bool_and(result::int = 0) AS extract_field_injection_blocked FROM run_command_on_workers($$ - SELECT to_regclass('extract_deparse.injected') IS NULL + SELECT count(*) FROM pg_class WHERE relname = 'injected' $$); extract_field_injection_blocked --------------------------------------------------------------------- diff --git a/src/test/regress/expected/pg19.out b/src/test/regress/expected/pg19.out index 5fca06f1c91..de3ca4aa83e 100644 --- a/src/test/regress/expected/pg19.out +++ b/src/test/regress/expected/pg19.out @@ -45,9 +45,20 @@ EXCEPTION WHEN invalid_parameter_value THEN NULL; END $$; -SELECT bool_and(result::boolean) AS extract_field_injection_blocked +-- Positive control: the same expression with a valid field must still be +-- pushed down, so the check below cannot pass merely because the expression +-- stopped reaching the workers. +SELECT EXTRACT('year' FROM ts) = 2026 AS extract_field_pushdown_works +FROM extract_deparse_source +WHERE id = 1; + extract_field_pushdown_works +--------------------------------------------------------------------- + t +(1 row) + +SELECT bool_and(result::int = 0) AS extract_field_injection_blocked FROM run_command_on_workers($$ - SELECT to_regclass('pg19_repack.injected') IS NULL + SELECT count(*) FROM pg_class WHERE relname = 'injected' $$); extract_field_injection_blocked --------------------------------------------------------------------- diff --git a/src/test/regress/sql/extract_deparse.sql b/src/test/regress/sql/extract_deparse.sql index 2aab2d53012..39e0b2d5eba 100644 --- a/src/test/regress/sql/extract_deparse.sql +++ b/src/test/regress/sql/extract_deparse.sql @@ -25,9 +25,16 @@ EXCEPTION END $$; -SELECT bool_and(result::boolean) AS extract_field_injection_blocked +-- Positive control: the same expression with a valid field must still be +-- pushed down, so the check below cannot pass merely because the expression +-- stopped reaching the workers. +SELECT EXTRACT('year' FROM ts) = 2026 AS extract_field_pushdown_works +FROM extract_deparse_source +WHERE id = 1; + +SELECT bool_and(result::int = 0) AS extract_field_injection_blocked FROM run_command_on_workers($$ - SELECT to_regclass('extract_deparse.injected') IS NULL + SELECT count(*) FROM pg_class WHERE relname = 'injected' $$); SET client_min_messages TO ERROR; diff --git a/src/test/regress/sql/pg19.sql b/src/test/regress/sql/pg19.sql index f691cf8a558..0dd5bec7c77 100644 --- a/src/test/regress/sql/pg19.sql +++ b/src/test/regress/sql/pg19.sql @@ -46,9 +46,16 @@ EXCEPTION END $$; -SELECT bool_and(result::boolean) AS extract_field_injection_blocked +-- Positive control: the same expression with a valid field must still be +-- pushed down, so the check below cannot pass merely because the expression +-- stopped reaching the workers. +SELECT EXTRACT('year' FROM ts) = 2026 AS extract_field_pushdown_works +FROM extract_deparse_source +WHERE id = 1; + +SELECT bool_and(result::int = 0) AS extract_field_injection_blocked FROM run_command_on_workers($$ - SELECT to_regclass('pg19_repack.injected') IS NULL + SELECT count(*) FROM pg_class WHERE relname = 'injected' $$); SET citus.shard_count TO 4;