@@ -1456,6 +1456,7 @@ func TestExprPushDownToTiKV(t *testing.T) {
1456
1456
//datetimeColumn := genColumn(mysql.TypeDatetime, 6)
1457
1457
binaryStringColumn := genColumn (mysql .TypeString , 7 )
1458
1458
dateColumn := genColumn (mysql .TypeDate , 8 )
1459
+ byteColumn := genColumn (mysql .TypeBit , 9 )
1459
1460
binaryStringColumn .RetType .SetCollate (charset .CollationBin )
1460
1461
1461
1462
// Test exprs that cannot be pushed.
@@ -1497,6 +1498,24 @@ func TestExprPushDownToTiKV(t *testing.T) {
1497
1498
require .Len (t , pushed , 0 )
1498
1499
require .Len (t , remained , len (exprs ))
1499
1500
1501
+ // Test Conv function
1502
+ exprs = exprs [:0 ]
1503
+ function , err = NewFunction (mock .NewContext (), ast .Conv , types .NewFieldType (mysql .TypeString ), stringColumn , intColumn , intColumn )
1504
+ require .NoError (t , err )
1505
+ exprs = append (exprs , function )
1506
+ pushed , remained = PushDownExprs (pushDownCtx , exprs , kv .TiKV )
1507
+ require .Len (t , pushed , len (exprs ))
1508
+ require .Len (t , remained , 0 )
1509
+ exprs = exprs [:0 ]
1510
+ castByteAsStringFunc , err := NewFunction (mock .NewContext (), ast .Cast , types .NewFieldType (mysql .TypeString ), byteColumn )
1511
+ require .NoError (t , err )
1512
+ function , err = NewFunction (mock .NewContext (), ast .Conv , types .NewFieldType (mysql .TypeString ), castByteAsStringFunc , intColumn , intColumn )
1513
+ require .NoError (t , err )
1514
+ exprs = append (exprs , function )
1515
+ pushed , remained = PushDownExprs (pushDownCtx , exprs , kv .TiKV )
1516
+ require .Len (t , pushed , 0 )
1517
+ require .Len (t , remained , len (exprs ))
1518
+
1500
1519
// Test exprs that can be pushed.
1501
1520
exprs = exprs [:0 ]
1502
1521
pushed = pushed [:0 ]
0 commit comments