From 980a99e54518388b60e5a50e0054fdd0110943ea Mon Sep 17 00:00:00 2001 From: Meng Xin Date: Wed, 14 Sep 2022 14:48:46 +0800 Subject: [PATCH 1/4] ignore castRealAsDatetime consistent with TiDB --- push-down-test/sql/randgen/6_date_1.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/push-down-test/sql/randgen/6_date_1.sql b/push-down-test/sql/randgen/6_date_1.sql index 13f8e23..5808b6c 100644 --- a/push-down-test/sql/randgen/6_date_1.sql +++ b/push-down-test/sql/randgen/6_date_1.sql @@ -186,7 +186,7 @@ SELECT HOUR( ( DATE_FORMAT( `col_decimal_unsigned`, 0 ) ) ) AS field1, DATE_SUB( `col_tinyint_key`, INTERVAL '1978-04-20 01:40:36.040594' DAY_HOUR ) AS field2, MONTH( NULL ) AS field3 FROM `table1_int_autoinc` WHERE MICROSECOND( `col_double_unsigned_key` ) /* QNO 187 CON_ID 164 */ ; SELECT `col_date_key` - ( EXTRACT( DAY FROM `col_datetime_key` ) ) AS field1, -7334 + ( TIME( '2028-05-24' ) ) AS field2 FROM `table1000_int_autoinc` WHERE FROM_UNIXTIME( `col_varchar_64_key` ) /* QNO 188 CON_ID 164 */ ; SELECT '06:43:28.019366' % ( DATE_ADD( `col_set`, INTERVAL ( DAYOFMONTH( -4014396117847375872 ) ) DAY_MICROSECOND ) ) AS field1 FROM `table1000_int_autoinc` WHERE NOT ( NOT 'q' ) /* QNO 189 CON_ID 164 */ ; - SELECT WEEKOFYEAR( ( YEARWEEK( `col_varbinary_32_key` ) ) ) AS field1, UNIX_TIMESTAMP( 'nfbfvufhkdrpalxsuzsdsiqpucziftkqrwcmduexqzeqzixqczvwlcziytxzmsmmxfmwckuxpmldzdqos' ) AS field2 FROM `table1000_int_autoinc` WHERE DAYOFYEAR( `col_double_key` ) /* QNO 190 CON_ID 164 */ ; +-- SELECT WEEKOFYEAR( ( YEARWEEK( `col_varbinary_32_key` ) ) ) AS field1, UNIX_TIMESTAMP( 'nfbfvufhkdrpalxsuzsdsiqpucziftkqrwcmduexqzeqzixqczvwlcziytxzmsmmxfmwckuxpmldzdqos' ) AS field2 FROM `table1000_int_autoinc` WHERE DAYOFYEAR( `col_double_key` ) /* QNO 190 CON_ID 164 */ ; SELECT PERIOD_DIFF( arg_period, arg_period ) AS field1 FROM `table20_int_autoinc` WHERE ( SUBTIME( ( DAYNAME( ( `col_smallint_unsigned` XOR ( WEEKOFYEAR( `col_varchar_64` ) ) ) ) ), ( TIMESTAMPADD( MONTH, '1973-03-21 02:38:08.041965', ( WEEK( `col_timestamp_key` ) ) ) ) ) ) / ( 'f' ^ ( MAKETIME( ( YEAR( ( `col_double_unsigned_key` << ( DAY( 0 ) ) ) ) ), '06:59:18.014556', `col_smallint_unsigned` ) ) ) /* QNO 191 CON_ID 164 */ ; SELECT ADDDATE( `col_varchar_1_key`, INTERVAL `col_bigint_unsigned` QUARTER ) AS field1 FROM `table20_int_autoinc` WHERE DATE_FORMAT( NULL, -643 ) /* QNO 192 CON_ID 164 */ ; SELECT DAYNAME( '04:21:01.043794' ) AS field1, YEARWEEK( '05:29:47.039331', 7 ) AS field2, ! ( LAST_DAY( ( MINUTE( `col_text` ) ) ) ) AS field3 FROM `table1000_int_autoinc` WHERE ( FROM_UNIXTIME( `col_timestamp_key`, 0 ) ) << ( FROM_DAYS( -7767301982330552320 ) ) /* QNO 193 CON_ID 164 */ ; From 657bf90a4f43daefe879ebb4ff90d61cb136a5c3 Mon Sep 17 00:00:00 2001 From: Meng Xin Date: Wed, 14 Sep 2022 15:27:55 +0800 Subject: [PATCH 2/4] ignore more tests --- push-down-test/sql/randgen/4_cast_2.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/push-down-test/sql/randgen/4_cast_2.sql b/push-down-test/sql/randgen/4_cast_2.sql index eae568d..3fb6aee 100644 --- a/push-down-test/sql/randgen/4_cast_2.sql +++ b/push-down-test/sql/randgen/4_cast_2.sql @@ -500,7 +500,7 @@ SELECT CONVERT( ( BINARY 29181 ) USING latin1 ) AS field1, CAST( `col_varchar_64_key` AS CHAR ) AS field2, BINARY ( CONVERT( `col_double_unsigned` USING latin1 ) ) AS field3 FROM `table20_int_autoinc` WHERE CONVERT( `col_int_key` USING utf8 ) /* QNO 501 CON_ID 200 */ ; SELECT CONVERT( -3577828428969148416, DATE ) AS field1 FROM `table1000_int_autoinc` WHERE CONVERT( ( CONVERT( `col_float_unsigned_key` USING latin1 ) ), SIGNED ) /* QNO 502 CON_ID 200 */ ; SELECT CONVERT( `col_time_key`, DECIMAL(24,21) ) AS field1, CONVERT( ( CONVERT( 0 USING latin1 ) ) USING utf8 ) AS field2, BINARY `col_varchar_1_key` AS field3, BINARY 8710524629287960576 AS field4, CAST( '21:12:02.062165' AS DATE ) AS field5 FROM `table1_int_autoinc` WHERE BINARY `col_double_key` /* QNO 503 CON_ID 200 */ ; - SELECT CONVERT( `col_date`, UNSIGNED ) AS field1, CONVERT( 0, TIME ) AS field2, CAST( `col_float_unsigned_key` AS DATE ) AS field3, CONVERT( ( CONVERT( ( BINARY 3493104460979240960 ) USING latin1 ) ) USING utf8 ) AS field4, CAST( -7660622966157213696 AS DECIMAL ) AS field5 FROM `table1000_int_autoinc` WHERE CAST( `col_smallint_unsigned` AS DATE ) /* QNO 504 CON_ID 200 */ ; +-- SELECT CONVERT( `col_date`, UNSIGNED ) AS field1, CONVERT( 0, TIME ) AS field2, CAST( `col_float_unsigned_key` AS DATE ) AS field3, CONVERT( ( CONVERT( ( BINARY 3493104460979240960 ) USING latin1 ) ) USING utf8 ) AS field4, CAST( -7660622966157213696 AS DECIMAL ) AS field5 FROM `table1000_int_autoinc` WHERE CAST( `col_smallint_unsigned` AS DATE ) /* QNO 504 CON_ID 200 */ ; SELECT CONVERT( ( CONVERT( `col_varchar_1_key`, DECIMAL(32) ) ) USING latin1 ) AS field1, CONVERT( ( BINARY `col_time` ) USING latin1 ) AS field2, BINARY ( BINARY '20:10:36.049095' ) AS field3 FROM `table1000_int_autoinc` WHERE BINARY ( CAST( 'a' AS CHAR ) ) /* QNO 505 CON_ID 200 */ ; SELECT CONVERT( `col_double_unsigned` USING latin1 ) AS field1, BINARY `col_text_key` AS field2 FROM `table20_int_autoinc` WHERE CONVERT( `col_int_key`, DECIMAL(32) ) /* QNO 506 CON_ID 200 */ ; SELECT CAST( '1998-10-10' AS BINARY ) AS field1 FROM `table20_int_autoinc` WHERE CONVERT( `col_decimal_unsigned`, DATETIME ) /* QNO 507 CON_ID 200 */ ; @@ -2565,7 +2565,7 @@ SELECT CONVERT( `col_bit_key`, CHAR(7) ) AS field1 FROM `table1000_int_autoinc` WHERE CONVERT( `col_float_unsigned` USING latin1 ) /* QNO 2566 CON_ID 200 */ ; SELECT CAST( `col_year` AS DATE ) AS field1 FROM `table0_int_autoinc` WHERE CAST( ( CONVERT( `col_varbinary_32` USING utf8 ) ) AS DECIMAL ) /* QNO 2567 CON_ID 200 */ ; SELECT CONVERT( `col_enum`, BINARY ) AS field1 FROM `table20_int_autoinc` /* QNO 2568 CON_ID 200 */ ; - SELECT BINARY NULL AS field1 FROM `table10_int_autoinc` WHERE BINARY ( CONVERT( ( CAST( `col_float_unsigned_key` AS DATE ) ), SIGNED ) ) /* QNO 2569 CON_ID 200 */ ; +-- SELECT BINARY NULL AS field1 FROM `table10_int_autoinc` WHERE BINARY ( CONVERT( ( CAST( `col_float_unsigned_key` AS DATE ) ), SIGNED ) ) /* QNO 2569 CON_ID 200 */ ; SELECT BINARY '08:07:30.050422' AS field1 FROM `table1000_int_autoinc` WHERE CAST( NULL AS CHAR(7) ) /* QNO 2570 CON_ID 200 */ ; SELECT BINARY `col_text` AS field1 FROM `table0_int_autoinc` WHERE BINARY `col_int` /* QNO 2571 CON_ID 200 */ ; SELECT CONVERT( 'pixccylazicj', DECIMAL(15,13) ) AS field1 FROM `table1_int_autoinc` WHERE CAST( ( BINARY `col_decimal` ) AS SIGNED ) /* QNO 2572 CON_ID 200 */ ; From a466df58b45438162465ccc85139505a825f87db Mon Sep 17 00:00:00 2001 From: Meng Xin Date: Wed, 14 Sep 2022 16:08:31 +0800 Subject: [PATCH 3/4] test --- push-down-test/sql/randgen/4_cast_1.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/push-down-test/sql/randgen/4_cast_1.sql b/push-down-test/sql/randgen/4_cast_1.sql index f398ef3..c40f3a6 100644 --- a/push-down-test/sql/randgen/4_cast_1.sql +++ b/push-down-test/sql/randgen/4_cast_1.sql @@ -925,7 +925,7 @@ SELECT CONVERT( `pk` USING latin1 ) AS field1 FROM `table10_int_autoinc` WHERE CONVERT( ( BINARY `col_tinyint` ) USING utf8 ) /* QNO 926 CON_ID 104 */ ; SELECT CONVERT( ( CONVERT( ( CAST( ( CONVERT( ( BINARY ( CONVERT( ( CAST( ( CAST( 't' AS DECIMAL(41) ) ) AS TIME ) ) USING utf8 ) ) ) USING latin1 ) ) AS DECIMAL(11) ) ) USING latin1 ) ) USING latin1 ) AS field1, CONVERT( ( CAST( 0 AS DECIMAL(59,5) ) ) USING utf8 ) AS field2 FROM `table20_int_autoinc` /* QNO 927 CON_ID 104 */ ; SELECT CONVERT( -8271986615572758528 USING utf8 ) AS field1 FROM `table0_int_autoinc` WHERE CONVERT( NULL, BINARY(2) ) /* QNO 928 CON_ID 104 */ ; - SELECT CAST( ( CONVERT( `col_blob` USING latin1 ) ) AS UNSIGNED ) AS field1, CAST( '2009-09-27' AS DECIMAL(10,2) ) AS field2 FROM `table1000_int_autoinc` WHERE CAST( -4124171358764531712 AS BINARY ) /* QNO 929 CON_ID 104 */ ; + SELECT `col_blob`, CAST( ( CONVERT( `col_blob` USING latin1 ) ) AS UNSIGNED ) AS field1, CAST( '2009-09-27' AS DECIMAL(10,2) ) AS field2 FROM `table1000_int_autoinc` WHERE CAST( -4124171358764531712 AS BINARY ) /* QNO 929 CON_ID 104 */ ; SELECT CONVERT( `col_float_key` USING utf8 ) AS field1 FROM `table10_int_autoinc` WHERE CONVERT( `col_set_key` USING latin1 ) /* QNO 930 CON_ID 104 */ ; SELECT CAST( ( CAST( `col_text_key` AS TIME ) ) AS DATE ) AS field1 FROM `table1_int_autoinc` WHERE CONVERT( `col_set_key`, CHAR ) /* QNO 931 CON_ID 104 */ ; SELECT BINARY ( CONVERT( ( CAST( 'x' AS DATE ) ), DECIMAL(62,30) ) ) AS field1 FROM `table1_int_autoinc` WHERE CONVERT( NULL USING utf8 ) /* QNO 932 CON_ID 104 */ ; From 28dda905e2de10a4fbe6b6dd4cd1b13af68bea7e Mon Sep 17 00:00:00 2001 From: Meng Xin Date: Wed, 14 Sep 2022 16:21:53 +0800 Subject: [PATCH 4/4] test --- push-down-test/sql/randgen-topn/4_cast_2.sql | 4 ++-- push-down-test/sql/randgen-topn/6_date_1.sql | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/push-down-test/sql/randgen-topn/4_cast_2.sql b/push-down-test/sql/randgen-topn/4_cast_2.sql index cfa02fc..68d2518 100644 --- a/push-down-test/sql/randgen-topn/4_cast_2.sql +++ b/push-down-test/sql/randgen-topn/4_cast_2.sql @@ -500,7 +500,7 @@ SELECT CONVERT( ( BINARY 29181 ) USING latin1 ) AS field1, CAST( `col_varchar_64_key` AS CHAR ) AS field2, BINARY ( CONVERT( `col_double_unsigned` USING latin1 ) ) AS field3 FROM `table20_int_autoinc` WHERE CONVERT( `col_int_key` USING utf8 ) ORDER BY field1, field2, field3 LIMIT 10 /* QNO 501 CON_ID 200 */ ; SELECT CONVERT( -3577828428969148416, DATE ) AS field1 FROM `table1000_int_autoinc` WHERE CONVERT( ( CONVERT( `col_float_unsigned_key` USING latin1 ) ), SIGNED ) ORDER BY field1 LIMIT 5 /* QNO 502 CON_ID 200 */ ; SELECT CONVERT( `col_time_key`, DECIMAL(24,21) ) AS field1, CONVERT( ( CONVERT( 0 USING latin1 ) ) USING utf8 ) AS field2, BINARY `col_varchar_1_key` AS field3, BINARY 8710524629287960576 AS field4, CAST( '21:12:02.062165' AS DATE ) AS field5 FROM `table1_int_autoinc` WHERE BINARY `col_double_key` ORDER BY field1, field2, field3, field4, field5 LIMIT 1 /* QNO 503 CON_ID 200 */ ; - SELECT CONVERT( `col_date`, UNSIGNED ) AS field1, CONVERT( 0, TIME ) AS field2, CAST( `col_float_unsigned_key` AS DATE ) AS field3, CONVERT( ( CONVERT( ( BINARY 3493104460979240960 ) USING latin1 ) ) USING utf8 ) AS field4, CAST( -7660622966157213696 AS DECIMAL ) AS field5 FROM `table1000_int_autoinc` WHERE CAST( `col_smallint_unsigned` AS DATE ) ORDER BY field1, field2, field3, field4, field5 LIMIT 7 /* QNO 504 CON_ID 200 */ ; +-- SELECT CONVERT( `col_date`, UNSIGNED ) AS field1, CONVERT( 0, TIME ) AS field2, CAST( `col_float_unsigned_key` AS DATE ) AS field3, CONVERT( ( CONVERT( ( BINARY 3493104460979240960 ) USING latin1 ) ) USING utf8 ) AS field4, CAST( -7660622966157213696 AS DECIMAL ) AS field5 FROM `table1000_int_autoinc` WHERE CAST( `col_smallint_unsigned` AS DATE ) ORDER BY field1, field2, field3, field4, field5 LIMIT 7 /* QNO 504 CON_ID 200 */ ; SELECT CONVERT( ( CONVERT( `col_varchar_1_key`, DECIMAL(32) ) ) USING latin1 ) AS field1, CONVERT( ( BINARY `col_time` ) USING latin1 ) AS field2, BINARY ( BINARY '20:10:36.049095' ) AS field3 FROM `table1000_int_autoinc` WHERE BINARY ( CAST( 'a' AS CHAR ) ) ORDER BY field1, field2, field3 LIMIT 7 /* QNO 505 CON_ID 200 */ ; SELECT CONVERT( `col_double_unsigned` USING latin1 ) AS field1, BINARY `col_text_key` AS field2 FROM `table20_int_autoinc` WHERE CONVERT( `col_int_key`, DECIMAL(32) ) ORDER BY field1, field2 LIMIT 10 /* QNO 506 CON_ID 200 */ ; SELECT CAST( '1998-10-10' AS BINARY ) AS field1 FROM `table20_int_autoinc` WHERE CONVERT( `col_decimal_unsigned`, DATETIME ) ORDER BY field1 LIMIT 2 /* QNO 507 CON_ID 200 */ ; @@ -2562,7 +2562,7 @@ SELECT CONVERT( `col_bit_key`, CHAR(7) ) AS field1 FROM `table1000_int_autoinc` WHERE CONVERT( `col_float_unsigned` USING latin1 ) ORDER BY field1 LIMIT 6 /* QNO 2566 CON_ID 200 */ ; SELECT CAST( `col_year` AS DATE ) AS field1 FROM `table0_int_autoinc` WHERE CAST( ( CONVERT( `col_varbinary_32` USING utf8 ) ) AS DECIMAL ) ORDER BY field1 LIMIT 2 /* QNO 2567 CON_ID 200 */ ; SELECT CONVERT( `col_enum`, BINARY ) AS field1 FROM `table20_int_autoinc` ORDER BY field1 LIMIT 7 /* QNO 2568 CON_ID 200 */ ; - SELECT BINARY NULL AS field1 FROM `table10_int_autoinc` WHERE BINARY ( CONVERT( ( CAST( `col_float_unsigned_key` AS DATE ) ), SIGNED ) ) ORDER BY field1 LIMIT 9 /* QNO 2569 CON_ID 200 */ ; +-- SELECT BINARY NULL AS field1 FROM `table10_int_autoinc` WHERE BINARY ( CONVERT( ( CAST( `col_float_unsigned_key` AS DATE ) ), SIGNED ) ) ORDER BY field1 LIMIT 9 /* QNO 2569 CON_ID 200 */ ; SELECT BINARY '08:07:30.050422' AS field1 FROM `table1000_int_autoinc` WHERE CAST( NULL AS CHAR(7) ) ORDER BY field1 LIMIT 1 /* QNO 2570 CON_ID 200 */ ; SELECT BINARY `col_text` AS field1 FROM `table0_int_autoinc` WHERE BINARY `col_int` ORDER BY field1 LIMIT 3 /* QNO 2571 CON_ID 200 */ ; SELECT CONVERT( 'pixccylazicj', DECIMAL(15,13) ) AS field1 FROM `table1_int_autoinc` WHERE CAST( ( BINARY `col_decimal` ) AS SIGNED ) ORDER BY field1 LIMIT 8 /* QNO 2572 CON_ID 200 */ ; diff --git a/push-down-test/sql/randgen-topn/6_date_1.sql b/push-down-test/sql/randgen-topn/6_date_1.sql index db18b20..05b83b5 100644 --- a/push-down-test/sql/randgen-topn/6_date_1.sql +++ b/push-down-test/sql/randgen-topn/6_date_1.sql @@ -186,7 +186,7 @@ SELECT HOUR( ( DATE_FORMAT( `col_decimal_unsigned`, 0 ) ) ) AS field1, DATE_SUB( `col_tinyint_key`, INTERVAL '1978-04-20 01:40:36.040594' DAY_HOUR ) AS field2, MONTH( NULL ) AS field3 FROM `table1_int_autoinc` WHERE MICROSECOND( `col_double_unsigned_key` ) ORDER BY field1, field2, field3 LIMIT 4 /* QNO 187 CON_ID 164 */ ; SELECT `col_date_key` - ( EXTRACT( DAY FROM `col_datetime_key` ) ) AS field1, -7334 + ( TIME( '2028-05-24' ) ) AS field2 FROM `table1000_int_autoinc` WHERE FROM_UNIXTIME( `col_varchar_64_key` ) ORDER BY field1, field2 LIMIT 5 /* QNO 188 CON_ID 164 */ ; SELECT '06:43:28.019366' % ( DATE_ADD( `col_set`, INTERVAL ( DAYOFMONTH( -4014396117847375872 ) ) DAY_MICROSECOND ) ) AS field1 FROM `table1000_int_autoinc` WHERE NOT ( NOT 'q' ) ORDER BY field1 LIMIT 9 /* QNO 189 CON_ID 164 */ ; - SELECT WEEKOFYEAR( ( YEARWEEK( `col_varbinary_32_key` ) ) ) AS field1, UNIX_TIMESTAMP( 'nfbfvufhkdrpalxsuzsdsiqpucziftkqrwcmduexqzeqzixqczvwlcziytxzmsmmxfmwckuxpmldzdqos' ) AS field2 FROM `table1000_int_autoinc` WHERE DAYOFYEAR( `col_double_key` ) ORDER BY field1, field2 LIMIT 1 /* QNO 190 CON_ID 164 */ ; +-- SELECT WEEKOFYEAR( ( YEARWEEK( `col_varbinary_32_key` ) ) ) AS field1, UNIX_TIMESTAMP( 'nfbfvufhkdrpalxsuzsdsiqpucziftkqrwcmduexqzeqzixqczvwlcziytxzmsmmxfmwckuxpmldzdqos' ) AS field2 FROM `table1000_int_autoinc` WHERE DAYOFYEAR( `col_double_key` ) ORDER BY field1, field2 LIMIT 1 /* QNO 190 CON_ID 164 */ ; SELECT PERIOD_DIFF( arg_period, arg_period ) AS field1 FROM `table20_int_autoinc` WHERE ( SUBTIME( ( DAYNAME( ( `col_smallint_unsigned` XOR ( WEEKOFYEAR( `col_varchar_64` ) ) ) ) ), ( TIMESTAMPADD( MONTH, '1973-03-21 02:38:08.041965', ( WEEK( `col_timestamp_key` ) ) ) ) ) ) / ( 'f' ^ ( MAKETIME( ( YEAR( ( `col_double_unsigned_key` << ( DAY( 0 ) ) ) ) ), '06:59:18.014556', `col_smallint_unsigned` ) ) ) ORDER BY field1 LIMIT 3 /* QNO 191 CON_ID 164 */ ; SELECT ADDDATE( `col_varchar_1_key`, INTERVAL `col_bigint_unsigned` QUARTER ) AS field1 FROM `table20_int_autoinc` WHERE DATE_FORMAT( NULL, -643 ) ORDER BY field1 LIMIT 8 /* QNO 192 CON_ID 164 */ ; SELECT DAYNAME( '04:21:01.043794' ) AS field1, YEARWEEK( '05:29:47.039331', 7 ) AS field2, ! ( LAST_DAY( ( MINUTE( `col_text` ) ) ) ) AS field3 FROM `table1000_int_autoinc` WHERE ( FROM_UNIXTIME( `col_timestamp_key`, 0 ) ) << ( FROM_DAYS( -7767301982330552320 ) ) ORDER BY field1, field2, field3 LIMIT 8 /* QNO 193 CON_ID 164 */ ;