From 7b14c48574ecf32768eb1567569588b5b8f28838 Mon Sep 17 00:00:00 2001 From: James Cor Date: Wed, 12 Mar 2025 13:29:35 -0700 Subject: [PATCH 1/2] don't erase dual table projection --- enginetest/queries/queries.go | 13 +++++++++++++ sql/analyzer/optimization_rules.go | 7 +++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/enginetest/queries/queries.go b/enginetest/queries/queries.go index 78391e3f97..ac1dbee062 100644 --- a/enginetest/queries/queries.go +++ b/enginetest/queries/queries.go @@ -10171,6 +10171,18 @@ from typestable`, {2}, }, }, + { + Query: "select ''", + Expected: []sql.Row{ + {""}, + }, + }, + { + Query: "select '' from dual", + Expected: []sql.Row{ + {""}, + }, + }, { Query: "select @@sql_mode = 1", @@ -10206,6 +10218,7 @@ from typestable`, {" └─ name: "}, }, }, + } var KeylessQueries = []QueryTest{ diff --git a/sql/analyzer/optimization_rules.go b/sql/analyzer/optimization_rules.go index 9d53294a9b..bd60bf99f3 100644 --- a/sql/analyzer/optimization_rules.go +++ b/sql/analyzer/optimization_rules.go @@ -15,7 +15,8 @@ package analyzer import ( - "strings" + "github.com/dolthub/go-mysql-server/memory" +"strings" "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/go-mysql-server/sql/expression" @@ -43,7 +44,9 @@ func eraseProjection(ctx *sql.Context, a *Analyzer, node sql.Node, scope *plan.S return transform.Node(node, func(node sql.Node) (sql.Node, transform.TreeIdentity, error) { project, ok := node.(*plan.Project) if ok { - if project.Schema().CaseSensitiveEquals(project.Child.Schema()) { + projSch := project.Schema() + childSch := project.Child.Schema() + if projSch.CaseSensitiveEquals(childSch) && !childSch.Equals(memory.DualTableSchema.Schema) { a.Log("project erased") return project.Child, transform.NewTree, nil } From 9b1413530daf74fb48ffb361439ec6c21f704dbe Mon Sep 17 00:00:00 2001 From: jycor Date: Wed, 12 Mar 2025 20:35:04 +0000 Subject: [PATCH 2/2] [ga-format-pr] Run ./format_repo.sh to fix formatting --- enginetest/queries/queries.go | 1 - sql/analyzer/optimization_rules.go | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/enginetest/queries/queries.go b/enginetest/queries/queries.go index ac1dbee062..79d1192e2e 100644 --- a/enginetest/queries/queries.go +++ b/enginetest/queries/queries.go @@ -10218,7 +10218,6 @@ from typestable`, {" └─ name: "}, }, }, - } var KeylessQueries = []QueryTest{ diff --git a/sql/analyzer/optimization_rules.go b/sql/analyzer/optimization_rules.go index bd60bf99f3..71c4c5e520 100644 --- a/sql/analyzer/optimization_rules.go +++ b/sql/analyzer/optimization_rules.go @@ -15,8 +15,9 @@ package analyzer import ( + "strings" + "github.com/dolthub/go-mysql-server/memory" -"strings" "github.com/dolthub/go-mysql-server/sql" "github.com/dolthub/go-mysql-server/sql/expression"