Hello,
We have a situation in which we had a dml query within a procedure that was running fine but suddenly the plan flipped and it started running longer.
That sounds like something that bit me once. Took a while to figure out, and was very puzzling.
This list explained the problem and gave me the solution. If you run the same query multiple times in, after five executions, the PG query optimizer decides to use a generic plan. This disables that choice to use a generic plan:
set plan_cache_mode = force_custom_plan;
Setting that returned the procedures to their previously-rapid execution.
-- Death to <Redacted>, and butter sauce.
Don't boil me, I'm still alive.