From 989ddcb05fcfc6ea5546f3f76d9516c4a8b3fba0 Mon Sep 17 00:00:00 2001 From: Nick Tobey Date: Tue, 17 Feb 2026 18:03:12 -0800 Subject: [PATCH 1/2] Add additional query test for nested lateral join with field references. --- enginetest/queries/join_queries.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/enginetest/queries/join_queries.go b/enginetest/queries/join_queries.go index a94542a3a4..411af14110 100644 --- a/enginetest/queries/join_queries.go +++ b/enginetest/queries/join_queries.go @@ -1668,6 +1668,15 @@ LATERAL ( {1, 2, 1, 2, 0, 3, 1, 1, 0, 111}, }, }, + { + Query: `select * from ab ab1 join lateral (select * from ab ab2 join lateral (select col < ab1.b from ab ab3 join three_pk where pk1 = ab1.a and pk2 = ab2.a and pk3 = ab3.a) inner2) inner3;`, + Expected: []sql.Row{ + {0, 3, 0, 3, false}, + {0, 3, 1, 2, false}, + {1, 2, 0, 3, false}, + {1, 2, 1, 2, false}, + }, + }, { Query: `select * from ab ab1 where exists (select * from ab ab2 where exists (select * from three_pk where pk1 = ab1.a and pk2 = ab2.a));`, Expected: []sql.Row{ From 2f09688f90ea480b06422d9100b2d494ab869440 Mon Sep 17 00:00:00 2001 From: Nick Tobey Date: Mon, 16 Feb 2026 17:31:00 -0800 Subject: [PATCH 2/2] Set join.scopeLen to be the size of all outer scopes, not just the closest one. --- sql/analyzer/fix_exec_indexes.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sql/analyzer/fix_exec_indexes.go b/sql/analyzer/fix_exec_indexes.go index 92f5a7115a..b14367263d 100644 --- a/sql/analyzer/fix_exec_indexes.go +++ b/sql/analyzer/fix_exec_indexes.go @@ -655,8 +655,10 @@ func (s *idxScope) finalizeSelf(n sql.Node) (sql.Node, error) { if len(s.parentScopes) == 0 { return n, nil } - // TODO: combine scopes? - scopeLen := len(s.parentScopes[0].columns) + scopeLen := 0 + for _, parentScope := range s.parentScopes { + scopeLen += len(parentScope.columns) + } if scopeLen == 0 { return n, nil }