Thread
-
Re: BUG #19356: Unexpected result of prepared UPDATE with force_generic_plan
ZhangChi <798604270@qq.com> — 2025-12-26T06:59:54Z
Hi, Has anyone had a look at this report? Best, Chi Original From: PG Bug reporting form <noreply@postgresql.org> Date: 2025-12-16 11:06 To: pgsql-bugs <pgsql-bugs@lists.postgresql.org> Cc: 798604270 <798604270@qq.com> Subject: BUG #19356: Unexpected result of prepared UPDATE with force_generic_plan The following bug has been logged on the website: Bug reference: 19356 Logged by: Chi Zhang Email address: 798604270@qq.com PostgreSQL version: 17.6 Operating system: ubuntu 24.04 with docker Description: Hi, In the following test case, the WHERE condition of UPDATE is true; however, the value in the table is not updated: ``` SET plan_cache_mode = force_generic_plan; CREATE TABLE t2(c0 int4range); INSERT INTO t2(c0) VALUES('[-1372225904,-410785016)'::int4range) ON CONFLICT DO NOTHING; PREPARE prepare_query (text, int4range, text, text, inet) AS UPDATE t2 SET c0=DEFAULT WHERE NOT (((((CAST($1 AS int4range))&&(((t2.c0)-($2)))))AND((quote_literal($3) SIMILAR TO (($4)||($5)))))); EXECUTE prepare_query('-2073583882', '[-1190073754,1650158810)'::int4range, '?', 'j&Q', '171.191.143.34'); DEALLOCATE prepare_query; SELECT DISTINCT * FROM t2; c0 -------------------------- [-1372225904,-410785016) (1 row) ``` This is the result of the condition: ``` PREPARE prepare_query (text, int4range, text, text, inet) AS SELECT ((((quote_literal($3) SIMILAR TO (($4)||($5)))))); EXECUTE prepare_query('-2073583882', '[-1190073754,1650158810)'::int4range, '?', 'j&Q', '171.191.143.34'); ?column? ---------- f (1 row) ``` The equivalent normal UPDATE can execute correctly `UPDATE t2 SET c0=DEFAULT WHERE NOT (((((CAST('-2073583882'::text AS int4range))&&(((t2.c0)-('[-1190073754,1650158810)'::int4range)))))AND((quote_literal('?'::text) SIMILAR TO (('j&Q'::text)||('171.191.143.34'::inet))))));`