@@ -1404,6 +1404,7 @@ func TestExprPushDownToTiKV(t *testing.T) {
1404
1404
//datetimeColumn := genColumn(mysql.TypeDatetime, 6)
1405
1405
binaryStringColumn := genColumn (mysql .TypeString , 7 )
1406
1406
dateColumn := genColumn (mysql .TypeDate , 8 )
1407
+ byteColumn := genColumn (mysql .TypeBit , 9 )
1407
1408
binaryStringColumn .RetType .SetCollate (charset .CollationBin )
1408
1409
1409
1410
// Test exprs that cannot be pushed.
@@ -1443,6 +1444,24 @@ func TestExprPushDownToTiKV(t *testing.T) {
1443
1444
require .Len (t , pushed , 0 )
1444
1445
require .Len (t , remained , len (exprs ))
1445
1446
1447
+ // Test Conv function
1448
+ exprs = exprs [:0 ]
1449
+ function , err = NewFunction (mock .NewContext (), ast .Conv , types .NewFieldType (mysql .TypeString ), stringColumn , intColumn , intColumn )
1450
+ require .NoError (t , err )
1451
+ exprs = append (exprs , function )
1452
+ pushed , remained = PushDownExprs (sc , exprs , client , kv .TiKV )
1453
+ require .Len (t , pushed , len (exprs ))
1454
+ require .Len (t , remained , 0 )
1455
+ exprs = exprs [:0 ]
1456
+ castByteAsStringFunc , err := NewFunction (mock .NewContext (), ast .Cast , types .NewFieldType (mysql .TypeString ), byteColumn )
1457
+ require .NoError (t , err )
1458
+ function , err = NewFunction (mock .NewContext (), ast .Conv , types .NewFieldType (mysql .TypeString ), castByteAsStringFunc , intColumn , intColumn )
1459
+ require .NoError (t , err )
1460
+ exprs = append (exprs , function )
1461
+ pushed , remained = PushDownExprs (sc , exprs , client , kv .TiKV )
1462
+ require .Len (t , pushed , 0 )
1463
+ require .Len (t , remained , len (exprs ))
1464
+
1446
1465
// Test exprs that can be pushed.
1447
1466
exprs = exprs [:0 ]
1448
1467
pushed = pushed [:0 ]
0 commit comments