Re: BUG #19435: Error: "No relation entry for relid 2" Triggered by Complex Join with Self-Referencing Tables
Alexander Korotkov <aekorotkov@gmail.com>
From: Alexander Korotkov <aekorotkov@gmail.com>
To: Andrei Lepikhov <lepihov@gmail.com>
Cc: Tender Wang <tndrwang@gmail.com>, Kirill Reshke <reshkekirill@gmail.com>, Fujii Masao <masao.fujii@gmail.com>, ammmkilo@163.com,
pgsql-bugs@lists.postgresql.org
Date: 2026-03-18T12:21:34Z
Lists: pgsql-bugs
On Wed, Mar 18, 2026 at 2:18 PM Andrei Lepikhov <lepihov@gmail.com> wrote: > > On 18/3/26 09:40, Alexander Korotkov wrote: > > What about being more generic and call ChangeVarNodes_walker() for the > > node in ChangeVarNodesWalkExpression()? It also works with out case > > and avoids code duplication. > I’ve reached the same conclusion. We lost a possible case when the > RestrictInfo→clause contains a bare Var that isn’t pushed into either > the left or right subtree. > I think we can fix this by replacing the expression walker with > ChangeVarNodes_walker(). I see. This is even better. > What is the reason for the second change? Tender, can you show us how to > reproduce the issue so we can support your update to > restrict_infos_logically_equal? If we include it, we should add a test. I think Tender already shown this in [1]. The same qual is present twice in the plan. Links. 1. https://www.postgresql.org/message-id/CAHewXN%3D7kDJjUcgEm%2B6qhaKOXuqzvhRqAAKdafNCRgn0yH7BGg%40mail.gmail.com ------ Regards, Alexander Korotkov Supabase
Commits
-
Further improve commentary about ChangeVarNodesWalkExpression()
- 6888658516a2 19 (unreleased) landed
- 8c73ab9da9f1 18.4 landed
-
Improve commentary about ChangeVarNodesWalkExpression().
- a0e0b3cc685a 18.4 landed
- 360dd6f7b4c5 19 (unreleased) landed
-
Fix self-join removal to update bare Var references in join clauses
- e8b9d6497469 18.4 landed
- 07b7a964d368 19 (unreleased) landed
-
Implement Self-Join Elimination
- fc069a3a6319 18.0 cited