@@ -75,9 +75,9 @@ func SquashJoins(
75
75
return n , nil
76
76
}
77
77
78
- squashedProject , err := squashProjects (project , child )
79
- if err != nil {
80
- return nil , err
78
+ squashedProject , ok := squashProjects (project , child )
79
+ if ! ok {
80
+ return n , nil
81
81
}
82
82
83
83
projectSquashes --
@@ -100,22 +100,19 @@ func countProjectSquashes(n sql.Node) int {
100
100
return squashableProjects - 1
101
101
}
102
102
103
- // ErrWrongProjection is raised if a plan.Project node contains a wrong expression.
104
- var ErrWrongProjection = errors .NewKind ("wrong expression found in project node %s" )
105
-
106
- func squashProjects (parent , child * plan.Project ) (sql.Node , error ) {
103
+ func squashProjects (parent , child * plan.Project ) (sql.Node , bool ) {
107
104
projections := []sql.Expression {}
108
105
for _ , expr := range parent .Expressions () {
109
106
parentField , ok := expr .(* expression.GetField )
110
107
if ! ok {
111
- return nil , ErrWrongProjection . New ( parent . String ())
108
+ return nil , false
112
109
}
113
110
114
111
index := parentField .Index ()
115
112
for _ , e := range child .Expressions () {
116
113
childField , ok := e .(* expression.GetField )
117
114
if ! ok {
118
- return nil , ErrWrongProjection . New ( child . String ())
115
+ return nil , false
119
116
}
120
117
121
118
if referenceSameColumn (parentField , childField ) {
@@ -134,7 +131,7 @@ func squashProjects(parent, child *plan.Project) (sql.Node, error) {
134
131
projections = append (projections , projection )
135
132
}
136
133
137
- return plan .NewProject (projections , child .Child ), nil
134
+ return plan .NewProject (projections , child .Child ), true
138
135
}
139
136
140
137
func referenceSameColumn (parent , child * expression.GetField ) bool {
0 commit comments