From 811807f4bb78eea38a25352cded6080b4075ca11 Mon Sep 17 00:00:00 2001 From: Aaron Son Date: Mon, 1 Mar 2021 14:31:50 -0800 Subject: [PATCH 1/2] sql/analyzer/prune_columns.go: Fix scope parameter in fixRemainingFieldsIndexes when fixing Child of a subquery alias. --- sql/analyzer/prune_columns.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/analyzer/prune_columns.go b/sql/analyzer/prune_columns.go index 06e841aa28..7d65605334 100644 --- a/sql/analyzer/prune_columns.go +++ b/sql/analyzer/prune_columns.go @@ -294,7 +294,7 @@ func fixRemainingFieldsIndexes(n sql.Node, scope *Scope) (sql.Node, error) { return plan.TransformUp(n, func(n sql.Node) (sql.Node, error) { switch n := n.(type) { case *plan.SubqueryAlias: - child, err := fixRemainingFieldsIndexes(n.Child, scope) + child, err := fixRemainingFieldsIndexes(n.Child, nil) if err != nil { return nil, err } From ce46117c7d63978f4df65f40aeebc400065797d9 Mon Sep 17 00:00:00 2001 From: Aaron Son Date: Tue, 2 Mar 2021 13:46:31 -0800 Subject: [PATCH 2/2] enginetest/queries.go: Add a test that exercises previously wrong behavior in prune_columns. --- enginetest/queries.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/enginetest/queries.go b/enginetest/queries.go index 0c89d493a7..f9c20515cf 100755 --- a/enginetest/queries.go +++ b/enginetest/queries.go @@ -661,6 +661,10 @@ var QueryTests = []QueryTest{ Query: "SELECT i FROM mytable ORDER BY i LIMIT 1 OFFSET 1;", Expected: []sql.Row{{int64(2)}}, }, + { + Query: "SELECT i FROM mytable WHERE i NOT IN (SELECT i FROM (SELECT * FROM (SELECT i as i, s as s FROM mytable) f) s)", + Expected: []sql.Row{}, + }, { Query: "SELECT i FROM (SELECT 1 AS i FROM DUAL UNION SELECT 2 AS i FROM DUAL) some_is WHERE i NOT IN (SELECT i FROM (SELECT 1 as i FROM DUAL) different_is);", Expected: []sql.Row{{int64(2)}},