Skip to content

Commit e6186e6

Browse files
authored
don't erase dual table projection (#2889)
1 parent c5914f4 commit e6186e6

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

enginetest/queries/queries.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10171,6 +10171,18 @@ from typestable`,
1017110171
{2},
1017210172
},
1017310173
},
10174+
{
10175+
Query: "select ''",
10176+
Expected: []sql.Row{
10177+
{""},
10178+
},
10179+
},
10180+
{
10181+
Query: "select '' from dual",
10182+
Expected: []sql.Row{
10183+
{""},
10184+
},
10185+
},
1017410186

1017510187
{
1017610188
Query: "select @@sql_mode = 1",

sql/analyzer/optimization_rules.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ package analyzer
1717
import (
1818
"strings"
1919

20+
"github.com/dolthub/go-mysql-server/memory"
21+
2022
"github.com/dolthub/go-mysql-server/sql"
2123
"github.com/dolthub/go-mysql-server/sql/expression"
2224
"github.com/dolthub/go-mysql-server/sql/plan"
@@ -43,7 +45,9 @@ func eraseProjection(ctx *sql.Context, a *Analyzer, node sql.Node, scope *plan.S
4345
return transform.Node(node, func(node sql.Node) (sql.Node, transform.TreeIdentity, error) {
4446
project, ok := node.(*plan.Project)
4547
if ok {
46-
if project.Schema().CaseSensitiveEquals(project.Child.Schema()) {
48+
projSch := project.Schema()
49+
childSch := project.Child.Schema()
50+
if projSch.CaseSensitiveEquals(childSch) && !childSch.Equals(memory.DualTableSchema.Schema) {
4751
a.Log("project erased")
4852
return project.Child, transform.NewTree, nil
4953
}

0 commit comments

Comments
 (0)