@@ -3,13 +3,13 @@ package analyzer
3
3
import (
4
4
"testing"
5
5
6
- "github.com/stretchr/testify/require"
7
6
"github.com/src-d/go-mysql-server/mem"
8
7
"github.com/src-d/go-mysql-server/sql"
9
8
"github.com/src-d/go-mysql-server/sql/expression"
10
9
"github.com/src-d/go-mysql-server/sql/expression/function"
11
10
"github.com/src-d/go-mysql-server/sql/expression/function/aggregation"
12
11
"github.com/src-d/go-mysql-server/sql/plan"
12
+ "github.com/stretchr/testify/require"
13
13
)
14
14
15
15
func TestConvertDates (t * testing.T ) {
@@ -249,6 +249,39 @@ func TestConvertDatesGroupBy(t *testing.T) {
249
249
require .Equal (t , expected , result )
250
250
}
251
251
252
+ func TestConvertDatesFieldReference (t * testing.T ) {
253
+ table := plan .NewResolvedTable (mem .NewTable ("t" , nil ))
254
+ input := plan .NewFilter (
255
+ expression .NewEquals (
256
+ expression .NewGetField (0 , sql .Int64 , "DAYOFWEEK(foo)" , false ),
257
+ expression .NewLiteral ("2019-06-06 00:00:00" , sql .Text ),
258
+ ),
259
+ plan .NewProject ([]sql.Expression {
260
+ function .NewDayOfWeek (
261
+ expression .NewGetField (0 , sql .Timestamp , "foo" , false ),
262
+ ),
263
+ }, table ),
264
+ )
265
+ expected := plan .NewFilter (
266
+ expression .NewEquals (
267
+ expression .NewGetField (0 , sql .Int64 , "DAYOFWEEK(convert(foo, datetime))" , false ),
268
+ expression .NewLiteral ("2019-06-06 00:00:00" , sql .Text ),
269
+ ),
270
+ plan .NewProject ([]sql.Expression {
271
+ function .NewDayOfWeek (
272
+ expression .NewConvert (
273
+ expression .NewGetField (0 , sql .Timestamp , "foo" , false ),
274
+ expression .ConvertToDatetime ,
275
+ ),
276
+ ),
277
+ }, table ),
278
+ )
279
+
280
+ result , err := convertDates (sql .NewEmptyContext (), nil , input )
281
+ require .NoError (t , err )
282
+ require .Equal (t , expected , result )
283
+ }
284
+
252
285
func newDateAdd (l , r sql.Expression ) sql.Expression {
253
286
e , _ := function .NewDateAdd (l , r )
254
287
return e
0 commit comments