From: | Dmitry Dolgov <9erthalion6(at)gmail(dot)com> |
---|---|
To: | Sami Imseih <samimseih(at)gmail(dot)com> |
Cc: | Michael Paquier <michael(at)paquier(dot)xyz>, Álvaro Herrera <alvherre(at)kurilemu(dot)de>, Junwang Zhao <zhjwpku(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: queryId constant squashing does not support prepared statements |
Date: | 2025-05-23 07:06:16 |
Message-ID: | krunf4aboagoefzshkvg4mxeo5nvs75nwsrvdchn6zctubhtxd@lbejsl63o5yu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> On Thu, May 22, 2025 at 10:23:31PM GMT, Sami Imseih wrote:
> > This does not get squashed:
> > Q: select where 2 in (1, 4) and
> > 1 in (5, cast(7 as int), 6, (cast(8 as int)), 9, 10, (cast(8 as text))::int);
> > R: select where $1 in ($2 /*, ... */) and
> > $3 in ($4, cast($5 as int), $6, (cast($7 as int)), $8, $9, (cast($10 as text))::int)
>
> This is interesting actually. This is the behavior on HEAD, and I don't get why
> the first list with the casts does not get squashed, while the second one does.
> I will check IsSquashableConst tomorrow unless Dmitry gets to it first.
IsSquashableConst has intentionally a limited set of test for
"constantness", in particular it does not recurse. The case above
(cast(8 as text))::int
features two CoerceViaIO expressions one inside another, hence
IsSquashableConst returns false.
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2025-05-23 07:18:34 | Re: Retiring some encodings? |
Previous Message | shveta malik | 2025-05-23 06:45:00 | Re: Conflict detection for update_deleted in logical replication |