On Tue, 27 Aug 2024 at 14:03, Tom Lane <tgl@xxxxxxxxxxxxx> wrote: > Yeah, I got that same result by bisecting. It seems like it's > somehow related to the cast to information_schema.sql_identifier: > we are able to get rid of that normally but seem to fail to do so > in this query. In case it saves you a bit of time, I stripped as much of the unrelated stuff out as I could and got: create table t (a name, b int); explain select * from (select a::varchar,b from (select distinct a,b from t) st) t right join t t2 on t.b=t2.b where t.a='test'; getting rid of the cast or swapping to INNER JOIN rather than RIGHT JOIN means that qual_is_pushdown_safe() gets a Var rather than a PlaceHolderVar. David