Re: pg_plan_advice - Mailing list pgsql-hackers

From Alexander Lakhin
Subject Re: pg_plan_advice
Date
Msg-id 0afba1ce-c946-4131-972d-191d9a1c097c@gmail.com
Whole thread Raw
In response to Re: pg_plan_advice  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
Hello Robert.

27.03.2026 01:25, Robert Haas wrote:
Thanks. Committed. Nothing has obviously broken so far, BUT even
machines like skink that were failing weren't failing on every run, so
it may be a while before we get a clear view of the situation --
unless of course this didn't fix it or even made things worse, in
which case we might find out a lot faster. Hopefully not, but then I
thought this was going to work the first time.

I could not reproduce recent failures from skink and morepork so far, but
I found that changing some GUCs can trigger similar warnings, e.g.:
echo "join_collapse_limit = 1000" >/tmp/extra.config
TEMP_CONFIG=/tmp/extra.config make -s check -C src/test/modules/test_plan_advice/
--- .../src/test/regress/expected/identity.out       2026-02-13 06:15:55.871368851 +0200
+++ .../src/test/modules/test_plan_advice/tmp_check/results/identity.out     2026-03-27 06:50:11.123234266 +0200
@@ -10,6 +10,8 @@
 ALTER TABLE itest3 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY;  -- error
 ERROR:  column "a" of relation "itest3" is already an identity column
 SELECT table_name, column_name, column_default, is_nullable, is_identity, identity_generation, identity_start, identity_increment, identity_maximum, identity_minimum, identity_cycle FROM information_schema.columns WHERE table_name LIKE 'itest_' ORDER BY 1, 2;
+WARNING:  supplied plan advice was not enforced
+DETAIL:  advice JOIN_ORDER(nc (co nco (c a)) t (bt nbt) ad nt (dep seq)) feedback is "matched, failed"
...

echo "geqo_threshold = 8" >/tmp/extra.config
TEMP_CONFIG=/tmp/extra.config make -s check -C src/test/modules/test_plan_advice/
--- .../src/test/regress/expected/create_function_sql.out    2026-02-13 06:15:55.865368936 +0200
+++ .../src/test/modules/test_plan_advice/tmp_check/results/create_function_sql.out  2026-03-27 06:53:44.235504942 +0200
@@ -482,6 +482,9 @@
     FROM information_schema.parameters JOIN information_schema.routines USING (specific_schema, specific_name)
     WHERE routine_schema = 'temp_func_test' AND routine_name ~ '^functest_is_'
     ORDER BY 1, 2;
+WARNING:  supplied plan advice was not enforced
+DETAIL:  advice JOIN_ORDER(n (ss (p (t#2 nt#2) l)) t nt) feedback is "matched, failed"
+advice NESTED_LOOP_PLAIN((ss p l t#2 nt#2)) feedback is "matched, failed"
  routine_name  | ordinal_position | parameter_name | parameter_default
...

and an assertion failure with:
enable_parallel_append = off
enable_partitionwise_aggregate = on
cpu_tuple_cost = 1000

TRAP: failed Assert("relids != NULL"), File: "pgpa_scan.c", Line: 248, PID: 1956762
...
2026-03-27 07:51:02.562 EET postmaster[1956525] LOG:  client backend (PID 1956762) was terminated by signal 6: Aborted
2026-03-27 07:51:02.562 EET postmaster[1956525] DETAIL:  Failed process was running: SELECT COUNT(*) FROM stats_import.part_parent;

Best regards,
Alexander

pgsql-hackers by date:

Previous
From: shveta malik
Date:
Subject: Re: Skipping schema changes in publication
Next
From: Fujii Masao
Date:
Subject: Re: Use SIGTERM instead of SIGUSR1 for slotsync worker to exit during promotion?