1674 lines
75 KiB
Plaintext
1674 lines
75 KiB
Plaintext
# TestWeightString
|
|
drop table if exists t;
|
|
create table t (id int, a varchar(20) collate utf8mb4_general_ci);
|
|
insert into t values (0, 'aAÁàãăâ'),(1, 'a'),(2, 'a '),(3, '中'),(4, '中 ');
|
|
select hex(weight_string(a)) from t order by id;
|
|
select hex(weight_string(a as char(1))) from t order by id;
|
|
select hex(weight_string(a as char(3))) from t order by id;
|
|
select hex(weight_string(a as binary(1))) from t order by id;
|
|
select hex(weight_string(a as binary(5))) from t order by id;
|
|
select hex(weight_string(NULL));
|
|
select hex(weight_string(7));
|
|
select hex(weight_string(cast(7 as decimal(5))));
|
|
select hex(weight_string(cast(20190821 as date)));
|
|
select hex(weight_string(cast(20190821 as date) as binary(5)));
|
|
select hex(weight_string(7.0));
|
|
select hex(weight_string(7 AS BINARY(2)));
|
|
select hex(weight_string('中 ' collate utf8mb4_general_ci));
|
|
select hex(weight_string('中 ' collate utf8mb4_bin));
|
|
select hex(weight_string('中 ' collate utf8mb4_unicode_ci));
|
|
select collation(a collate utf8mb4_general_ci) from t order by id;
|
|
select collation('中 ' collate utf8mb4_general_ci);
|
|
select hex(weight_string(a collate utf8mb4_bin)) from t order by id;
|
|
-- error 1253
|
|
select weight_string(a collate utf8_general_ci) from t order by id;
|
|
-- error 1253
|
|
select weight_string('中' collate utf8_bin);
|
|
|
|
# TestMathBuiltin
|
|
select degrees(0), degrees(1);
|
|
select degrees(2), degrees(5);
|
|
select sin(0), sin(1.5707963267949);
|
|
select sin(1), sin(100);
|
|
select sin('abcd');
|
|
select cos(0), cos(3.1415926535898);
|
|
select cos('abcd');
|
|
# On Mac arm64 floating point calculations slightly different than x86
|
|
--replace_regex /0.9999999999999998/1/
|
|
select tan(0.00), tan(PI()/4);
|
|
select tan('abcd');
|
|
select log2(0.0);
|
|
select log2(4);
|
|
select log2('8.0abcd');
|
|
select log2(-1);
|
|
select log2(NULL);
|
|
select log10(0.0);
|
|
select log10(100);
|
|
select log10('1000.0abcd');
|
|
select log10(-1);
|
|
select log10(NULL);
|
|
select log(0.0);
|
|
select log(100);
|
|
select log('100.0abcd');
|
|
select log(-1);
|
|
select log(NULL);
|
|
select log(NULL, NULL);
|
|
select log(1, 100);
|
|
select log(0.5, 0.25);
|
|
select log(-1, 0.25);
|
|
select atan(0), atan(-1), atan(1), atan(1,2);
|
|
select atan('tidb');
|
|
select asin(0), asin(-2), asin(2), asin(1);
|
|
select asin('tidb');
|
|
select acos(0), acos(-2), acos(2), acos(1);
|
|
select acos('tidb');
|
|
select pi();
|
|
select floor(0), floor(null), floor(1.23), floor(-1.23), floor(1);
|
|
select floor('tidb'), floor('1tidb'), floor('tidb1');
|
|
SELECT floor(t.c_datetime) FROM (select CAST('2017-07-19 00:00:00' AS DATETIME) AS c_datetime) AS t;
|
|
SELECT floor(t.c_time) FROM (select CAST('12:34:56' AS TIME) AS c_time) AS t;
|
|
SELECT floor(t.c_time) FROM (select CAST('00:34:00' AS TIME) AS c_time) AS t;
|
|
SELECT floor(t.c_time) FROM (select CAST('00:00:00' AS TIME) AS c_time) AS t;
|
|
SELECT floor(t.c_decimal) FROM (SELECT CAST('-10.01' AS DECIMAL(10,2)) AS c_decimal) AS t;
|
|
SELECT floor(t.c_decimal) FROM (SELECT CAST('-10.01' AS DECIMAL(10,1)) AS c_decimal) AS t;
|
|
select ceil(0), ceil(null), ceil(1.23), ceil(-1.23), ceil(1);
|
|
select ceiling(0), ceiling(null), ceiling(1.23), ceiling(-1.23), ceiling(1);
|
|
select ceil('tidb'), ceil('1tidb'), ceil('tidb1'), ceiling('tidb'), ceiling('1tidb'), ceiling('tidb1');
|
|
select ceil(t.c_datetime), ceiling(t.c_datetime) from (select cast('2017-07-20 00:00:00' as datetime) as c_datetime) as t;
|
|
select ceil(t.c_time), ceiling(t.c_time) from (select cast('12:34:56' as time) as c_time) as t;
|
|
select ceil(t.c_time), ceiling(t.c_time) from (select cast('00:34:00' as time) as c_time) as t;
|
|
select ceil(t.c_time), ceiling(t.c_time) from (select cast('00:00:00' as time) as c_time) as t;
|
|
select ceil(t.c_decimal), ceiling(t.c_decimal) from (select cast('-10.01' as decimal(10,2)) as c_decimal) as t;
|
|
select ceil(t.c_decimal), ceiling(t.c_decimal) from (select cast('-10.01' as decimal(10,1)) as c_decimal) as t;
|
|
select floor(18446744073709551615), ceil(18446744073709551615);
|
|
select floor(18446744073709551615.1233), ceil(18446744073709551615.1233);
|
|
select floor(-18446744073709551617), ceil(-18446744073709551617), floor(-18446744073709551617.11), ceil(-18446744073709551617.11);
|
|
drop table if exists t;
|
|
create table t(a decimal(40,20) UNSIGNED);
|
|
insert into t values(2.99999999900000000000), (12), (0);
|
|
select a, ceil(a) from t where ceil(a) > 1;
|
|
select a, ceil(a) from t;
|
|
select ceil(-29464);
|
|
select a, floor(a) from t where floor(a) > 1;
|
|
select a, floor(a) from t;
|
|
select floor(-29464);
|
|
drop table if exists t;
|
|
create table t(a decimal(40,20), b bigint);
|
|
insert into t values(-2.99999990000000000000, -1);
|
|
select floor(a), floor(a), floor(a) from t;
|
|
select b, floor(b) from t;
|
|
select cot(1), cot(-1), cot(NULL);
|
|
select cot('1tidb');
|
|
-- error 1690
|
|
select cot(0);
|
|
select exp(0), exp(1), exp(-1), exp(1.2), exp(NULL);
|
|
select exp('tidb'), exp('1tidb');
|
|
-- error 1690
|
|
select exp(1000000);
|
|
drop table if exists t;
|
|
create table t(a float);
|
|
insert into t values(1000000);
|
|
-- error 1690
|
|
select exp(a) from t;
|
|
SELECT CONV('a', 16, 2);
|
|
SELECT CONV('6E', 18, 8);
|
|
SELECT CONV(-17, 10, -18);
|
|
SELECT CONV(10+'10'+'10'+X'0a', 10, 10);
|
|
SELECT CONV('a', 1, 10);
|
|
SELECT CONV('a', 37, 10);
|
|
SELECT CONV(0x0020, 2, 2);
|
|
SELECT CONV(0b10, 16, 2);
|
|
SELECT CONV(0b10, 16, 8);
|
|
drop table if exists bit;
|
|
create table bit(b bit(10));
|
|
INSERT INTO bit (b) VALUES
|
|
(0b0000010101),
|
|
(0b0000010101),
|
|
(NULL),
|
|
(0b0000000001),
|
|
(0b0000000000),
|
|
(0b1111111111),
|
|
(0b1111111111),
|
|
(0b1111111111),
|
|
(0b0000000000),
|
|
(0b0000000000),
|
|
(0b0000000000),
|
|
(0b0000000000),
|
|
(0b0000100000);
|
|
select conv(b, 2, 2) from `bit`;
|
|
SELECT ABS(-1);
|
|
SELECT ABS('abc');
|
|
SELECT ABS(18446744073709551615);
|
|
SELECT ABS(123.4);
|
|
SELECT ABS(-123.4);
|
|
SELECT ABS(1234E-1);
|
|
SELECT ABS(-9223372036854775807);
|
|
SELECT ABS(NULL);
|
|
-- error 1690
|
|
SELECT ABS(-9223372036854775808);
|
|
SELECT ROUND(2.5), ROUND(-2.5), ROUND(25E-1);
|
|
SELECT ROUND(2.5, NULL), ROUND(NULL, 4), ROUND(NULL, NULL), ROUND(NULL);
|
|
SELECT ROUND('123.4'), ROUND('123e-2');
|
|
SELECT ROUND(-9223372036854775808);
|
|
SELECT ROUND(123.456, 0), ROUND(123.456, 1), ROUND(123.456, 2), ROUND(123.456, 3), ROUND(123.456, 4), ROUND(123.456, -1), ROUND(123.456, -2), ROUND(123.456, -3), ROUND(123.456, -4);
|
|
SELECT ROUND(123456E-3, 0), ROUND(123456E-3, 1), ROUND(123456E-3, 2), ROUND(123456E-3, 3), ROUND(123456E-3, 4), ROUND(123456E-3, -1), ROUND(123456E-3, -2), ROUND(123456E-3, -3), ROUND(123456E-3, -4);
|
|
SELECT ROUND(1e14, 1), ROUND(1e15, 1), ROUND(1e308, 1);
|
|
SELECT ROUND(1e-14, 1), ROUND(1e-15, 1), ROUND(1e-308, 1);
|
|
SELECT truncate(123, -2), truncate(123, 2), truncate(123, 1), truncate(123, -1);
|
|
SELECT truncate(123.456, -2), truncate(123.456, 2), truncate(123.456, 1), truncate(123.456, 3), truncate(1.23, 100), truncate(123456E-3, 2);
|
|
SELECT truncate(9223372036854775807, -7), truncate(9223372036854775808, -10), truncate(cast(-1 as unsigned), -10);
|
|
select truncate(42, -9223372036854775808);
|
|
select truncate(42, 9223372036854775808);
|
|
select truncate(42, -2147483648);
|
|
select truncate(42, 2147483648);
|
|
select truncate(42, 18446744073709551615);
|
|
select truncate(42, 4294967295);
|
|
select truncate(42, -0);
|
|
select truncate(42, -307);
|
|
select truncate(42, -308);
|
|
select truncate(42, -309);
|
|
drop table if exists t;
|
|
create table t (a bigint unsigned);
|
|
insert into t values (18446744073709551615), (4294967295), (9223372036854775808), (2147483648);
|
|
select truncate(42, a) from t;
|
|
drop table if exists t;
|
|
create table t(a date, b datetime, c timestamp, d varchar(20));
|
|
insert into t select "1234-12-29", "1234-12-29 16:24:13.9912", "2014-12-29 16:19:28", "12.34567";
|
|
select truncate(a, -1), truncate(a, 1), truncate(a, -2), truncate(a, 2) from t;
|
|
select truncate(b, -1), truncate(b, 1), truncate(b, -2), truncate(b, 2) from t;
|
|
select truncate(c, -1), truncate(c, 1), truncate(c, -2), truncate(c, 2) from t;
|
|
select truncate(d, -1), truncate(d, 1), truncate(d, -2), truncate(d, 2) from t;
|
|
select truncate(json_array(), 1), truncate("cascasc", 1);
|
|
SELECT POW('12', 2), POW(1.2e1, '2.0'), POW(12, 2.0);
|
|
SELECT POW(null, 2), POW(2, null), POW(null, null);
|
|
SELECT POW(0, 0);
|
|
SELECT POW(0, 0.1), POW(0, 0.5), POW(0, 1);
|
|
-- error 1690
|
|
SELECT POW(0, -1);
|
|
SELECT SIGN('12'), SIGN(1.2e1), SIGN(12), SIGN(0.0000012);
|
|
SELECT SIGN('-12'), SIGN(-1.2e1), SIGN(-12), SIGN(-0.0000012);
|
|
SELECT SIGN('0'), SIGN('-0'), SIGN(0);
|
|
SELECT SIGN(NULL);
|
|
SELECT SIGN(-9223372036854775808), SIGN(9223372036854775808);
|
|
SELECT SQRT(-10), SQRT(144), SQRT(4.84), SQRT(0.04), SQRT(0);
|
|
SELECT crc32(0), crc32(-0), crc32('0'), crc32('abc'), crc32('ABC'), crc32(NULL), crc32(''), crc32('hello world!');
|
|
SELECT radians(1.0), radians(pi()), radians(pi()/2), radians(180), radians(1.009);
|
|
drop table if exists t;
|
|
create table t(a int);
|
|
insert into t values(1),(2),(3);
|
|
-- sorted_result
|
|
select rand(1) from t;
|
|
select rand(a) from t;
|
|
select rand(1), rand(2), rand(3);
|
|
set @@rand_seed1=10000000,@@rand_seed2=1000000;
|
|
select rand();
|
|
select rand(1);
|
|
select rand();
|
|
|
|
# TestBuiltin
|
|
drop table if exists t;
|
|
create table t (a int, b int, index idx_b (b));
|
|
insert t values (1, 1);
|
|
insert t values (2, 2);
|
|
insert t values (3, 2);
|
|
select * from t where b is true;
|
|
select all + a from t where a = 1;
|
|
select * from t where a is false;
|
|
select * from t where a is not true;
|
|
select 1 is true, 0 is true, null is true, "aaa" is true, "" is true, -12.00 is true, 0.0 is true, 0.0000001 is true;
|
|
select 1 is false, 0 is false, null is false, "aaa" is false, "" is false, -12.00 is false, 0.0 is false, 0.0000001 is false;
|
|
select 1 from dual where sec_to_time(2/10) is true;
|
|
select 1 from dual where sec_to_time(2/10) is false;
|
|
select 1 from dual where timediff((7/'2014-07-07 02:30:02'),'2012-01-16') is true;
|
|
select 1 from dual where timediff((7/'2014-07-07 02:30:02'),'2012-01-16') is false;
|
|
select 1 from dual where time(0.0001) is true;
|
|
select 1 from dual where time(0.0001) is false;
|
|
select * from t where b in (a);
|
|
select * from t where b not in (a);
|
|
select cast(1 as decimal(3,2));
|
|
select cast('1991-09-05 11:11:11' as datetime);
|
|
select cast(cast('1991-09-05 11:11:11' as datetime) as char);
|
|
select cast('11:11:11' as time);
|
|
select * from t where a > cast(2 as decimal);
|
|
select cast(-1 as unsigned);
|
|
drop table if exists t;
|
|
create table t(a decimal(3, 1), b double, c datetime, d time, e int);
|
|
insert into t value(12.3, 1.23, '2017-01-01 12:12:12', '12:12:12', 123);
|
|
select cast(a as json), cast(b as json), cast(c as json), cast(d as json), cast(e as json) from t;
|
|
select cast(10101000000 as time);
|
|
select cast(10101001000 as time);
|
|
select cast(10000000000 as time);
|
|
select cast(20171222020005 as time);
|
|
select cast(8380000 as time);
|
|
select cast(8390000 as time);
|
|
select cast(8386000 as time);
|
|
select cast(8385960 as time);
|
|
select cast(cast('2017-01-01 01:01:11.12' as date) as datetime(2));
|
|
select cast(20170118.999 as datetime);
|
|
select convert(a2.a, unsigned int) from (select cast('"9223372036854775808"' as json) as a) as a2;
|
|
create table tb5(a bigint(64) unsigned, b double);
|
|
insert into tb5 (a, b) values (9223372036854776000, 9223372036854776000);
|
|
insert into tb5 (a, b) select * from (select cast(a as json) as a1, b from tb5) as t where t.a1 = t.b;
|
|
drop table tb5;
|
|
create table tb5(a float(53));
|
|
insert into tb5(a) values (13835058055282163712);
|
|
select convert(t.a1, signed int) from (select convert(a, json) as a1 from tb5) as t;
|
|
drop table tb5;
|
|
select cast(0xffffffffffffffff as signed);
|
|
select cast(0x9999999999999999999999999999999999999999999 as signed);
|
|
create table tb5(a bigint);
|
|
set sql_mode='';
|
|
insert into tb5(a) values (0xfffffffffffffffffffffffff);
|
|
select * from tb5;
|
|
drop table tb5;
|
|
create table tb5(a double);
|
|
insert into tb5 (a) values (18446744073709551616);
|
|
insert into tb5 (a) values (184467440737095516160);
|
|
select cast(a as unsigned) from tb5;
|
|
drop table tb5;
|
|
create table tb5(a bigint(64) unsigned, b decimal(64, 10));
|
|
insert into tb5 (a, b) values (9223372036854775808, 9223372036854775808);
|
|
insert into tb5 (select * from tb5 where a = b);
|
|
select * from tb5;
|
|
drop table tb5;
|
|
create table tb5(a bigint(64) unsigned, b double(64, 10));
|
|
insert into tb5 (a, b) values (13835058000000000000, 13835058000000000000);
|
|
insert into tb5 (select * from tb5 where a = b);
|
|
select * from tb5;
|
|
drop table tb5;
|
|
create table tb5(a double, b float);
|
|
insert into tb5 (a, b) values (184467440737095516160, 184467440737095516160);
|
|
# TODO: fix https://github.com/pingcap/tidb/issues/47693
|
|
# --enable_warnings
|
|
select * from tb5 where cast(a as unsigned int)=0;
|
|
select * from tb5 where cast(b as unsigned int)=0;
|
|
--disable_warnings
|
|
drop table tb5;
|
|
create table tb5(a double, b bigint unsigned);
|
|
insert into tb5 (a, b) values (18446744073709551616, 18446744073709551615);
|
|
# TODO: fix https://github.com/pingcap/tidb/issues/47693
|
|
# --enable_warnings
|
|
select * from tb5 where cast(a as unsigned int)=b;
|
|
--disable_warnings
|
|
drop table tb5;
|
|
create table tb5(a json, b bigint unsigned);
|
|
insert into tb5 (a, b) values ('184467440737095516160', 18446744073709551615);
|
|
# TODO: fix https://github.com/pingcap/tidb/issues/47693
|
|
# --enable_warnings
|
|
select * from tb5 where cast(a as unsigned int)=b;
|
|
select * from tb5 where cast(b as unsigned int)=0;
|
|
--disable_warnings
|
|
drop table tb5;
|
|
create table tb5(a json, b bigint unsigned);
|
|
insert into tb5 (a, b) values ('92233720368547758080', 18446744073709551615);
|
|
# TODO: fix https://github.com/pingcap/tidb/issues/47693
|
|
# --enable_warnings
|
|
select * from tb5 where cast(a as signed int)=b;
|
|
--disable_warnings
|
|
drop table tb5;
|
|
create table tb5(a bigint(64) unsigned,b varchar(50));
|
|
insert into tb5(a, b) values (9223372036854775808, '9223372036854775808');
|
|
insert into tb5(select * from tb5 where a = b);
|
|
select * from tb5;
|
|
drop table tb5;
|
|
drop table if exists tb5;
|
|
create table tb5 (a decimal(65), b bigint(64) unsigned);
|
|
insert into tb5 (a, b) values (9223372036854775808, 9223372036854775808);
|
|
select cast(b as decimal(64)) from tb5 union all select b from tb5;
|
|
drop table tb5;
|
|
drop table if exists tb5;
|
|
create table tb5 (a bigint(64) unsigned, b double(64, 10));
|
|
insert into tb5 (a, b) values (9223372036854775808, 9223372036854775808);
|
|
select a from tb5 where a = b union all select b from tb5;
|
|
drop table tb5;
|
|
select cast("170102034" as datetime);
|
|
select cast("1701020304" as datetime);
|
|
select cast("1701020304." as datetime);
|
|
select cast("1701020304.1" as datetime);
|
|
--enable_warnings
|
|
select cast("1701020304.111" as datetime);
|
|
--disable_warnings
|
|
select cast("17011" as datetime);
|
|
select cast("150101." as datetime);
|
|
--enable_warnings
|
|
select cast("150101.a" as datetime);
|
|
select cast("150101.1a" as datetime);
|
|
select cast("150101.1a1" as datetime);
|
|
select cast("1101010101.111" as datetime);
|
|
select cast("1101010101.11aaaaa" as datetime);
|
|
select cast("1101010101.a1aaaaa" as datetime);
|
|
--disable_warnings
|
|
select cast("1101010101.11" as datetime);
|
|
select @@warning_count;
|
|
--enable_warnings
|
|
select cast("1101010101.111" as datetime);
|
|
--disable_warnings
|
|
select cast("970101.111" as datetime);
|
|
select @@warning_count;
|
|
select cast("970101.11111" as datetime);
|
|
select @@warning_count;
|
|
--enable_warnings
|
|
select cast("970101.111a1" as datetime);
|
|
--disable_warnings
|
|
drop table if exists t;
|
|
create table t (a int, b int, c int, d char(10), e datetime, f float, g decimal(10, 3));
|
|
insert t values (1, 0, null, null, null, null, null);
|
|
select ISNULL(a), ISNULL(b), ISNULL(c), ISNULL(d), ISNULL(e), ISNULL(f), ISNULL(g) from t;
|
|
select cast('-24 100:00:00' as time);
|
|
select cast('12:00:00.000000' as datetime);
|
|
select cast('-34 100:00:00' as time);
|
|
DROP TABLE IF EXISTS t;
|
|
CREATE TABLE t (ix TIME);
|
|
SET SQL_MODE='';
|
|
--enable_warnings
|
|
select cast('10009010' as time);
|
|
insert into t select cast('10009010' as time);
|
|
select cast('239010' as time);
|
|
insert into t select cast('239010' as time);
|
|
select cast('233070' as time);
|
|
insert into t select cast('233070' as time);
|
|
select cast('23:90:10' as time);
|
|
insert into t select cast('23:90:10' as time);
|
|
select cast('23:30:70' as time);
|
|
insert into t select cast('23:30:70' as time);
|
|
select cast('239010.2' as time);
|
|
insert into t select cast('239010.2' as time);
|
|
select cast('233070.8' as time);
|
|
insert into t select cast('233070.8' as time);
|
|
--disable_warnings
|
|
set sql_mode = 'STRICT_TRANS_TABLES';
|
|
--enable_warnings
|
|
select cast('10009010' as time);
|
|
--disable_warnings
|
|
-- error 1292
|
|
insert into t select cast('10009010' as time);
|
|
--enable_warnings
|
|
select cast('239010' as time);
|
|
--disable_warnings
|
|
-- error 1292
|
|
insert into t select cast('239010' as time);
|
|
--enable_warnings
|
|
select cast('233070' as time);
|
|
--disable_warnings
|
|
-- error 1292
|
|
insert into t select cast('233070' as time);
|
|
--enable_warnings
|
|
select cast('23:90:10' as time);
|
|
--disable_warnings
|
|
-- error 1292
|
|
insert into t select cast('23:90:10' as time);
|
|
--enable_warnings
|
|
select cast('23:30:70' as time);
|
|
--disable_warnings
|
|
-- error 1292
|
|
insert into t select cast('23:30:70' as time);
|
|
--enable_warnings
|
|
select cast('239010.2' as time);
|
|
--disable_warnings
|
|
-- error 1292
|
|
insert into t select cast('239010.2' as time);
|
|
--enable_warnings
|
|
select cast('233070.8' as time);
|
|
--disable_warnings
|
|
-- error 1292
|
|
insert into t select cast('233070.8' as time);
|
|
select cast('18446744073709551616' as unsigned);
|
|
select cast('18446744073709551616' as signed);
|
|
select cast('9223372036854775808' as signed);
|
|
select cast('9223372036854775809' as signed);
|
|
select cast('9223372036854775807' as signed);
|
|
select cast('18446744073709551615' as signed);
|
|
select cast('18446744073709551614' as signed);
|
|
select cast(18446744073709551615 as unsigned);
|
|
select cast(18446744073709551616 as unsigned);
|
|
select cast(18446744073709551616 as signed);
|
|
select cast(18446744073709551617 as signed);
|
|
select cast(18446744073709551615 as signed);
|
|
select cast(18446744073709551614 as signed);
|
|
select cast(-18446744073709551616 as signed);
|
|
select cast(18446744073709551614.9 as unsigned);
|
|
select cast(18446744073709551614.4 as unsigned);
|
|
select cast(-9223372036854775809 as signed);
|
|
select cast(-9223372036854775809 as unsigned);
|
|
select cast(-9223372036854775808 as unsigned);
|
|
select cast('-9223372036854775809' as unsigned);
|
|
select cast('-9223372036854775807' as unsigned);
|
|
select cast('-2' as unsigned);
|
|
select cast(cast(1-2 as unsigned) as signed integer);
|
|
select cast(1 as signed int);
|
|
select cast(1 as double);
|
|
select cast(cast(12345 as unsigned) as double);
|
|
select cast(1.1 as double);
|
|
select cast(-1.1 as double);
|
|
select cast('123.321' as double);
|
|
select cast('12345678901234567890' as double) = 1.2345678901234567e19;
|
|
select cast(-1 as double);
|
|
select cast(null as double);
|
|
select cast(12345678901234567890 as double) = 1.2345678901234567e19;
|
|
select cast(cast(-1 as unsigned) as double) = 1.8446744073709552e19;
|
|
select cast(1e100 as double) = 1e100;
|
|
select cast(123456789012345678901234567890 as double) = 1.2345678901234568e29;
|
|
select cast(0x12345678 as double);
|
|
select cast(1 as float);
|
|
select cast(cast(12345 as unsigned) as float);
|
|
select cast(1.1 as float) = 1.1;
|
|
select cast(-1.1 as float) = -1.1;
|
|
select cast('123.321' as float) =123.321;
|
|
select cast('12345678901234567890' as float) = 1.2345678901234567e19;
|
|
select cast(-1 as float);
|
|
select cast(null as float);
|
|
select cast(12345678901234567890 as float) = 1.2345678901234567e19;
|
|
select cast(cast(-1 as unsigned) as float) = 1.8446744073709552e19;
|
|
select cast(1e100 as float(40)) = 1e100;
|
|
select cast(123456789012345678901234567890 as float(40)) = 1.2345678901234568e29;
|
|
select cast(0x12345678 as float(40)) = 305419896;
|
|
select cast(1 as real);
|
|
select cast(cast(12345 as unsigned) as real);
|
|
select cast(1.1 as real) = 1.1;
|
|
select cast(-1.1 as real) = -1.1;
|
|
select cast('123.321' as real) =123.321;
|
|
select cast('12345678901234567890' as real) = 1.2345678901234567e19;
|
|
select cast(-1 as real);
|
|
select cast(null as real);
|
|
select cast(12345678901234567890 as real) = 1.2345678901234567e19;
|
|
select cast(cast(-1 as unsigned) as real) = 1.8446744073709552e19;
|
|
select cast(1e100 as real) = 1e100;
|
|
select cast(123456789012345678901234567890 as real) = 1.2345678901234568e29;
|
|
select cast(0x12345678 as real) = 305419896;
|
|
drop table if exists t1;
|
|
create table t1(s1 time);
|
|
insert into t1 values('11:11:11');
|
|
select cast(s1 as decimal(7, 2)) from t1;
|
|
select cast(s1 as decimal(8, 2)) from t1;
|
|
-- error 1690
|
|
insert into t1 values(cast('111111.00' as decimal(7, 2)));
|
|
select CAST(0x8fffffffffffffff as signed) a,
|
|
CAST(0xfffffffffffffffe as signed) b,
|
|
CAST(0xffffffffffffffff as unsigned) c;
|
|
select cast("1:2:3" as TIME) = "1:02:03";
|
|
drop table if exists t;
|
|
create table t(a time(6));
|
|
insert into t value('12:59:59.999999');
|
|
select cast(a as signed) from t;
|
|
select -9223372036854775809;
|
|
select --9223372036854775809;
|
|
select -9223372036854775808;
|
|
drop table if exists t;
|
|
create table t(a bigint(30));
|
|
-- error 1264
|
|
insert into t values(-9223372036854775809);
|
|
-- error 1427
|
|
select cast(12.1 as decimal(3, 4));
|
|
-- error 1426
|
|
SELECT CAST(1 AS DATETIME(7));
|
|
select unhex('4D7953514C');
|
|
select unhex(hex('string'));
|
|
select unhex('ggg');
|
|
select unhex(-1);
|
|
select hex(unhex('1267'));
|
|
select hex(unhex(1267));
|
|
drop table if exists t;
|
|
create table t(a binary(8));
|
|
insert into t values('test');
|
|
select hex(a) from t;
|
|
select unhex(a) from t;
|
|
select from_unixtime(1451606400);
|
|
select from_unixtime(14516064000/10);
|
|
select from_unixtime('14516064000'/10);
|
|
select from_unixtime(cast(1451606400 as double));
|
|
select from_unixtime(cast(cast(1451606400 as double) as DECIMAL));
|
|
select from_unixtime(cast(cast(1451606400 as double) as DECIMAL(65,1)));
|
|
select from_unixtime(1451606400.123456);
|
|
select from_unixtime(1451606400.1234567);
|
|
select from_unixtime(1451606400.999999);
|
|
select from_unixtime(1511247196661);
|
|
select from_unixtime('1451606400.123');
|
|
drop table if exists t;
|
|
create table t(a int);
|
|
insert into t value(1451606400);
|
|
select from_unixtime(a) from t;
|
|
select strcmp('abc', 'def');
|
|
select strcmp('abc', 'aba');
|
|
select strcmp('abc', 'abc');
|
|
select substr(null, 1, 2);
|
|
select substr('123', null, 2);
|
|
select substr('123', 1, null);
|
|
drop table if exists t;
|
|
create table t (a varchar(255), b int);
|
|
insert t values ('str1', 1);
|
|
select * from t where a = case b when 1 then 'str1' when 2 then 'str2' end;
|
|
select * from t where a = case b when 1 then 'str2' when 2 then 'str3' end;
|
|
insert t values ('str2', 2);
|
|
select * from t where a = case b when 2 then 'str2' when 3 then 'str3' end;
|
|
insert t values ('str3', 3);
|
|
select * from t where a = case b when 4 then 'str4' when 5 then 'str5' else 'str3' end;
|
|
select * from t where a = case b when 4 then 'str4' when 5 then 'str5' else 'str6' end;
|
|
select * from t where a = case when b then 'str3' when 1 then 'str1' else 'str2' end;
|
|
delete from t;
|
|
insert t values ('str2', 0);
|
|
select * from t where a = case when b then 'str3' when 0 then 'str1' else 'str2' end;
|
|
insert t values ('str1', null);
|
|
select * from t where a = case b when null then 'str3' when 10 then 'str1' else 'str2' end;
|
|
select * from t where a = case null when b then 'str3' when 10 then 'str1' else 'str2' end;
|
|
insert t values (null, 4);
|
|
select * from t where b < case a when null then 0 when 'str2' then 0 else 9 end;
|
|
select * from t where b = case when a is null then 4 when a = 'str5' then 7 else 9 end;
|
|
SELECT -Max(+23) * -+Cast(--10 AS SIGNED) * -CASE
|
|
WHEN 0 > 85 THEN NULL
|
|
WHEN NOT
|
|
CASE +55
|
|
WHEN +( +82 ) + -89 * -69 THEN +Count(-88)
|
|
WHEN +CASE 57
|
|
WHEN +89 THEN -89 * Count(*)
|
|
WHEN 17 THEN NULL
|
|
END THEN ( -10 )
|
|
END IS NULL THEN NULL
|
|
ELSE 83 + 48
|
|
END AS col0;
|
|
drop table if exists t1;
|
|
create table t1(c1 int not null);
|
|
insert into t1 values(1);
|
|
select (case when null then c1 end) is null from t1;
|
|
select (case when null then c1 end) is not null from t1;
|
|
--enable_warnings
|
|
select case when b=0 then 1 else 1/b end from t;
|
|
select if(b=0, 1, 1/b) from t;
|
|
select ifnull(b, b/0) from t;
|
|
select case when 1 then 1 else 1/0 end;
|
|
select if(1,1,1/0);
|
|
select ifnull(1, 1/0);
|
|
--disable_warnings
|
|
delete from t;
|
|
insert t values ('str2', 0);
|
|
--enable_warnings
|
|
select case when b < 1 then 1 else 1/0 end from t;
|
|
select case when b < 1 then 1 when 1/0 then b else 1/0 end from t;
|
|
select if(b < 1 , 1, 1/0) from t;
|
|
select ifnull(b, 1/0) from t;
|
|
select COALESCE(1, b, b/0) from t;
|
|
select 0 and b/0 from t;
|
|
select 1 or b/0 from t;
|
|
select 1 or 1/0;
|
|
select 0 and 1/0;
|
|
select COALESCE(1, 1/0);
|
|
select interval(1,0,1,2,1/0);
|
|
--disable_warnings
|
|
select case 2.0 when 2.0 then 3.0 when 3.0 then 2.0 end;
|
|
select case 2.0 when 3.0 then 2.0 when 4.0 then 3.0 else 5.0 end;
|
|
select case cast('2011-01-01' as date) when cast('2011-01-01' as date) then cast('2011-02-02' as date) end;
|
|
select case cast('2012-01-01' as date) when cast('2011-01-01' as date) then cast('2011-02-02' as date) else cast('2011-03-03' as date) end;
|
|
select case cast('10:10:10' as time) when cast('10:10:10' as time) then cast('11:11:11' as time) end;
|
|
select case cast('10:10:13' as time) when cast('10:10:10' as time) then cast('11:11:11' as time) else cast('22:22:22' as time) end;
|
|
select cast(1234 as char(3));
|
|
--enable_warnings
|
|
select cast(1234 as char(0));
|
|
--disable_warnings
|
|
select CAST( - 8 AS DECIMAL ) * + 52 + 87 < - 86;
|
|
select char(97, 100, 256, 89);
|
|
select char(97, null, 100, 256, 89);
|
|
select char(97, null, 100, 256, 89 using utf8);
|
|
select char(97, null, 100, 256, 89 using ascii);
|
|
-- error 1115
|
|
select char(97, null, 100, 256, 89 using tidb);
|
|
drop table if exists t;
|
|
CREATE TABLE t (c1 date, c2 datetime, c3 timestamp, c4 time, c5 year);
|
|
INSERT INTO t values ('2000-01-01', '2000-01-01 12:12:12', '2000-01-01 12:12:12', '12:12:12', '2000');
|
|
INSERT INTO t values ('2000-02-01', '2000-02-01 12:12:12', '2000-02-01 12:12:12', '13:12:12', 2000);
|
|
INSERT INTO t values ('2000-03-01', '2000-03-01', '2000-03-01 12:12:12', '1 12:12:12', 2000);
|
|
INSERT INTO t SET c1 = '2000-04-01', c2 = '2000-04-01', c3 = '2000-04-01 12:12:12', c4 = '-1 13:12:12', c5 = 2000;
|
|
SELECT c4 FROM t where c4 < '-13:12:12';
|
|
SELECT 1 DIV - - 28 + ( - SUM( - + 25 ) ) * - CASE - 18 WHEN 44 THEN NULL ELSE - 41 + 32 + + - 70 - + COUNT( - 95 ) * 15 END + 92;
|
|
drop table if exists t;
|
|
create table t (a char(10), b varchar(10), c binary(10), d varbinary(10));
|
|
insert into t values ('text','text','text','text');
|
|
select a regexp 'xt' from t;
|
|
select b regexp 'xt' from t;
|
|
select b regexp binary 'Xt' from t;
|
|
select c regexp 'Xt' from t;
|
|
select d regexp 'Xt' from t;
|
|
select a rlike 'xt' from t;
|
|
select a rlike binary 'Xt' from t;
|
|
select b rlike 'xt' from t;
|
|
select c rlike 'Xt' from t;
|
|
select d rlike 'Xt' from t;
|
|
select 'a' regexp 'A', 'a' regexp binary 'A';
|
|
drop table if exists t;
|
|
create table t (a varchar(255), b int);
|
|
insert into t values('a', 0);
|
|
select * from t where a like 'a';
|
|
delete from t where b = 0;
|
|
insert into t values('b', 1);
|
|
select * from t where a like 'a';
|
|
delete from t where b = 1;
|
|
insert into t values('Aa', 2);
|
|
select * from t where a like 'aA';
|
|
delete from t where b = 2;
|
|
insert into t values('aAab', 3);
|
|
select * from t where a like 'aA%';
|
|
delete from t where b = 3;
|
|
insert into t values('Aaab', 4);
|
|
select * from t where a like 'aA_';
|
|
delete from t where b = 4;
|
|
insert into t values('Aab', 5);
|
|
select * from t where a like 'Aa_';
|
|
delete from t where b = 5;
|
|
insert into t values('', 6);
|
|
select * from t where a like '';
|
|
delete from t where b = 6;
|
|
insert into t values('a', 7);
|
|
select * from t where a like '';
|
|
delete from t where b = 7;
|
|
drop table if exists t;
|
|
create table t (a varchar(255), b int);
|
|
insert into t values('a', 0);
|
|
select * from t where a regexp '^$';
|
|
delete from t where b = 0;
|
|
insert into t values('a', 1);
|
|
select * from t where a regexp 'a';
|
|
delete from t where b = 1;
|
|
insert into t values('b', 2);
|
|
select * from t where a regexp 'a';
|
|
delete from t where b = 2;
|
|
insert into t values('aA', 3);
|
|
select * from t where a regexp 'aA';
|
|
delete from t where b = 3;
|
|
insert into t values('a', 4);
|
|
select * from t where a regexp '.';
|
|
delete from t where b = 4;
|
|
insert into t values('ab', 5);
|
|
select * from t where a regexp '^.$';
|
|
delete from t where b = 5;
|
|
insert into t values('b', 6);
|
|
select * from t where a regexp '..';
|
|
delete from t where b = 6;
|
|
insert into t values('aab', 7);
|
|
select * from t where a regexp '.ab';
|
|
delete from t where b = 7;
|
|
insert into t values('abcd', 8);
|
|
select * from t where a regexp 'ab.';
|
|
delete from t where b = 8;
|
|
insert into t values('abcd', 9);
|
|
select * from t where a regexp '.*';
|
|
delete from t where b = 9;
|
|
select cast(1 as signed) + cast(9223372036854775807 as unsigned);
|
|
select cast(9223372036854775807 as unsigned) + cast(1 as signed);
|
|
-- error 1690
|
|
select cast(9223372036854775807 as signed) + cast(9223372036854775809 as unsigned);
|
|
-- error 1690
|
|
select cast(9223372036854775809 as unsigned) + cast(9223372036854775807 as signed);
|
|
-- error 1690
|
|
select cast(-9223372036854775807 as signed) + cast(9223372036854775806 as unsigned);
|
|
-- error 1690
|
|
select cast(9223372036854775806 as unsigned) + cast(-9223372036854775807 as signed);
|
|
select 1 / '2007' div 1;
|
|
set sql_mode=default;
|
|
|
|
# TestFuncREPEAT
|
|
DROP TABLE IF EXISTS table_string;
|
|
CREATE TABLE table_string(a CHAR(20), b VARCHAR(20), c TINYTEXT, d TEXT(20), e MEDIUMTEXT, f LONGTEXT, g BIGINT);
|
|
INSERT INTO table_string (a, b, c, d, e, f, g) VALUES ('a', 'b', 'c', 'd', 'e', 'f', 2);
|
|
SELECT REPEAT(a, g), REPEAT(b, g), REPEAT(c, g), REPEAT(d, g), REPEAT(e, g), REPEAT(f, g) FROM table_string;
|
|
SELECT REPEAT(NULL, g), REPEAT(NULL, g), REPEAT(NULL, g), REPEAT(NULL, g), REPEAT(NULL, g), REPEAT(NULL, g) FROM table_string;
|
|
SELECT REPEAT(a, NULL), REPEAT(b, NULL), REPEAT(c, NULL), REPEAT(d, NULL), REPEAT(e, NULL), REPEAT(f, NULL) FROM table_string;
|
|
SELECT REPEAT(a, 2), REPEAT(b, 2), REPEAT(c, 2), REPEAT(d, 2), REPEAT(e, 2), REPEAT(f, 2) FROM table_string;
|
|
SELECT REPEAT(NULL, 2), REPEAT(NULL, 2), REPEAT(NULL, 2), REPEAT(NULL, 2), REPEAT(NULL, 2), REPEAT(NULL, 2) FROM table_string;
|
|
SELECT REPEAT(a, -1), REPEAT(b, -2), REPEAT(c, -2), REPEAT(d, -2), REPEAT(e, -2), REPEAT(f, -2) FROM table_string;
|
|
SELECT REPEAT(a, 0), REPEAT(b, 0), REPEAT(c, 0), REPEAT(d, 0), REPEAT(e, 0), REPEAT(f, 0) FROM table_string;
|
|
SELECT REPEAT(a, 16777217), REPEAT(b, 16777217), REPEAT(c, 16777217), REPEAT(d, 16777217), REPEAT(e, 16777217), REPEAT(f, 16777217) FROM table_string;
|
|
|
|
# TestFuncLpadAndRpad
|
|
DROP TABLE IF EXISTS t;
|
|
CREATE TABLE t(a BINARY(10), b CHAR(10));
|
|
INSERT INTO t SELECT "中文", "abc";
|
|
SELECT LPAD(a, 11, "a"), LPAD(b, 2, "xx") FROM t;
|
|
SELECT LPAD("abc", 5, "");
|
|
SELECT LPAD(a, 11, ""), LPAD(b, 5, "") FROM t;
|
|
SELECT RPAD(a, 11, "a"), RPAD(b, 2, "xx") FROM t;
|
|
SELECT RPAD("abc", 5, "");
|
|
SELECT RPAD(a, 11, ""), RPAD(b, 5, "") FROM t;
|
|
|
|
# TestStringBuiltin
|
|
drop table if exists t;
|
|
create table t(a int, b double, c datetime, d time, e char(20), f bit(10));
|
|
insert into t values(1, 1.1, "2017-01-01 12:01:01", "12:01:01", "abcdef", 0b10101);
|
|
select length(a), length(b), length(c), length(d), length(e), length(f), length(null) from t;
|
|
drop table if exists t;
|
|
create table t(a char(20));
|
|
insert into t values("tidb "), (concat("a ", "b "));
|
|
select a, length(a) from t;
|
|
drop table if exists t;
|
|
create table t(a int, b double, c datetime, d time, e char(20));
|
|
insert into t values(1, 1.1, "2017-01-01 12:01:01", "12:01:01", "abcdef");
|
|
select concat(a, b, c, d, e) from t;
|
|
select concat(null);
|
|
select concat(null, a, b) from t;
|
|
drop table if exists t;
|
|
create table t(a int, b double, c datetime, d time, e char(20));
|
|
insert into t values(1, 1.1, "2017-01-01 12:01:01", "12:01:01", "abcdef");
|
|
select concat_ws('|', a, b, c, d, e) from t;
|
|
select concat_ws(null, null);
|
|
select concat_ws(null, a, b) from t;
|
|
select concat_ws(',', 'a', 'b');
|
|
select concat_ws(',','First name',NULL,'Last Name');
|
|
drop table if exists t;
|
|
create table t(a tinyint(2), b varchar(10));
|
|
insert into t values (1, 'a'), (12, 'a'), (126, 'a'), (127, 'a');
|
|
select concat_ws('#', a, b) from t;
|
|
drop table if exists t;
|
|
create table t(a binary(3));
|
|
insert into t values('a');
|
|
select concat_ws(',', a, 'test') = 'a\0\0,test' from t;
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time, f bit(4));
|
|
insert into t values('2', 2, 2.3, "2017-01-01 12:01:01", "12:01:01", 0b1010);
|
|
select ascii(a), ascii(b), ascii(c), ascii(d), ascii(e), ascii(f) from t;
|
|
select ascii('123'), ascii(123), ascii(''), ascii('你好'), ascii(NULL);
|
|
drop table if exists t;
|
|
create table t(a int, b double, c datetime, d time, e char(20), f binary(3), g binary(3));
|
|
insert into t values(1, 1.1, "2017-01-01 12:01:01", "12:01:01", "abcdef", 'aa', 'BB');
|
|
select lower(a), lower(b), lower(c), lower(d), lower(e), lower(f), lower(g), lower(null) from t;
|
|
select upper(a), upper(b), upper(c), upper(d), upper(e), upper(f), upper(g), upper(null) from t;
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time);
|
|
insert into t values("123", 123, 12.34, "2017-01-01 12:01:01", "12:01:01");
|
|
select strcmp(a, "123"), strcmp(b, "123"), strcmp(c, "12.34"), strcmp(d, "2017-01-01 12:01:01"), strcmp(e, "12:01:01") from t;
|
|
select strcmp("1", "123"), strcmp("123", "1"), strcmp("123", "45"), strcmp("123", null), strcmp(null, "123");
|
|
select strcmp("", "123"), strcmp("123", ""), strcmp("", ""), strcmp("", null), strcmp(null, "");
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time);
|
|
insert into t values('abcde', 1234, 12.34, "2017-01-01 12:01:01", "12:01:01");
|
|
select left(a, 2), left(b, 2), left(c, 2), left(d, 2), left(e, 2) from t;
|
|
select left("abc", 0), left("abc", -1), left(NULL, 1), left("abc", NULL);
|
|
select left("abc", "a"), left("abc", 1.9), left("abc", 1.2);
|
|
select left("中文abc", 2), left("中文abc", 3), left("中文abc", 4);
|
|
select right(a, 3), right(b, 3), right(c, 3), right(d, 3), right(e, 3) from t;
|
|
select right("abcde", 0), right("abcde", -1), right("abcde", 100), right(NULL, 1), right("abcde", NULL);
|
|
select right("abcde", "a"), right("abcde", 1.9), right("abcde", 1.2);
|
|
select right("中文abc", 2), right("中文abc", 4), right("中文abc", 5);
|
|
drop table if exists t;
|
|
create table t(a binary(10));
|
|
insert into t select "中文abc";
|
|
select left(a, 3), left(a, 6), left(a, 7) from t;
|
|
select right(a, 2), right(a, 7) from t;
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time, f bit(4), g binary(20), h blob(10), i text(30));
|
|
insert into t values('2', 2, 2.3, "2017-01-01 12:01:01", "12:01:01", 0b1010, "512", "48", "tidb");
|
|
select ord(a), ord(b), ord(c), ord(d), ord(e), ord(f), ord(g), ord(h), ord(i) from t;
|
|
select ord('123'), ord(123), ord(''), ord('你好'), ord(NULL), ord('👍');
|
|
select ord(X''), ord(X'6161'), ord(X'e4bd'), ord(X'e4bda0'), ord(_ascii'你'), ord(_latin1'你');
|
|
select space(0), space(2), space(-1), space(1.1), space(1.9);
|
|
select space("abc"), space("2"), space("1.1"), space(''), space(null);
|
|
drop table if exists t;
|
|
create table t(a char(20), b int, c double, d datetime, e time);
|
|
insert into t values('www.mysql.com', 1234, 12.34, "2017-01-01 12:01:01", "12:01:01");
|
|
select replace(a, 'mysql', 'pingcap'), replace(b, 2, 55), replace(c, 34, 0), replace(d, '-', '/'), replace(e, '01', '22') from t;
|
|
select replace('aaa', 'a', ''), replace(null, 'a', 'b'), replace('a', null, 'b'), replace('a', 'b', null);
|
|
drop table if exists t;
|
|
create table t(a int, b double, c datetime, d time, e char(20), f bit(10), g binary(20), h blob(10));
|
|
insert into t values(1, 1.1, "2017-01-01 12:01:01", "12:01:01", "abcdef", 0b10101, "512", "abc");
|
|
select to_base64(a), to_base64(b), to_base64(c), to_base64(d), to_base64(e), to_base64(f), to_base64(g), to_base64(h), to_base64(null) from t;
|
|
select hex(from_base64("abcd")), hex(from_base64("asc"));
|
|
select hex(from_base64("MQ==")), hex(from_base64(1234));
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time);
|
|
insert into t values('Sakila', 12345, 123.45, "2017-01-01 12:01:01", "12:01:01");
|
|
select substr(a, 3), substr(b, 2, 3), substr(c, -3), substr(d, -8), substr(e, -3, 100) from t;
|
|
select substr('Sakila', 100), substr('Sakila', -100), substr('Sakila', -5, 3), substr('Sakila', 2, -1);
|
|
select substr('foobarbar' from 4), substr('Sakila' from -4 for 2);
|
|
select substr(null, 2, 3), substr('foo', null, 3), substr('foo', 2, null);
|
|
select substr('中文abc', 2), substr('中文abc', 3), substr("中文abc", 1, 2);
|
|
drop table if exists t;
|
|
create table t(a binary(10));
|
|
insert into t select "中文abc";
|
|
select substr(a, 4), substr(a, 1, 3), substr(a, 1, 6) from t;
|
|
select substr("string", -1), substr("string", -2), substr("中文", -1), substr("中文", -2) from t;
|
|
drop table if exists t;
|
|
create table t(a int, b double, c datetime, d time, e char(20), f bit(10), g binary(20), h varbinary(20));
|
|
insert into t values(1, 1.1, "2017-01-01 12:01:01", "12:01:01", "abcdef", 0b10101, "g", "h");
|
|
select bit_length(a), bit_length(b), bit_length(c), bit_length(d), bit_length(e), bit_length(f), bit_length(g), bit_length(h), bit_length(null) from t;
|
|
drop table if exists t;
|
|
create table t(a char(20), b int, c double, d datetime, e time);
|
|
insert into t values('www.pingcap.com', 12345, 123.45, "2017-01-01 12:01:01", "12:01:01");
|
|
select substring_index(a, '.', 2), substring_index(b, '.', 2), substring_index(c, '.', -1), substring_index(d, '-', 1), substring_index(e, ':', -2) from t;
|
|
select substring_index('www.pingcap.com', '.', 0), substring_index('www.pingcap.com', '.', 100), substring_index('www.pingcap.com', '.', -100);
|
|
select substring_index('www.pingcap.com', 'd', 1), substring_index('www.pingcap.com', '', 1), substring_index('', '.', 1);
|
|
select substring_index(null, '.', 1), substring_index('www.pingcap.com', null, 1), substring_index('www.pingcap.com', '.', null);
|
|
select substring_index('xyz', 'abc', 9223372036854775808);
|
|
select substring_index("aaa.bbb.ccc.ddd.eee",'.',18446744073709551613);
|
|
select substring_index("aaa.bbb.ccc.ddd.eee",'.',-18446744073709551613);
|
|
select substring_index('aaa.bbb.ccc.ddd.eee', '.', 18446744073709551615 - 1 + id) from (select 1 as id) as t1;
|
|
select substring_index('aaa.bbb.ccc.ddd.eee', '.', -18446744073709551615 - 1 + id) from (select 1 as id) as t1;
|
|
set tidb_enable_vectorized_expression = 0;
|
|
select substring_index("aaa.bbb.ccc.ddd.eee",'.',18446744073709551613);
|
|
select substring_index("aaa.bbb.ccc.ddd.eee",'.',-18446744073709551613);
|
|
select substring_index('aaa.bbb.ccc.ddd.eee', '.', 18446744073709551615 - 1 + id) from (select 1 as id) as t1;
|
|
select substring_index('aaa.bbb.ccc.ddd.eee', '.', -18446744073709551615 - 1 + id) from (select 1 as id) as t1;
|
|
set tidb_enable_vectorized_expression = 1;
|
|
drop table if exists t;
|
|
create table t(a char(20), b int, c double, d datetime, e time, f decimal(5, 2), g bit(4));
|
|
insert into t values('www.pingcap.com', 12345, 123.45, "2017-01-01 12:01:01", "12:01:01", 123.45, 0b1100);
|
|
select hex(a), hex(b), hex(c), hex(d), hex(e), hex(f), hex(g) from t;
|
|
select hex('abc'), hex('你好'), hex(12), hex(12.3), hex(12.8);
|
|
select hex(-1), hex(-12.3), hex(-12.8), hex(0x12), hex(null);
|
|
drop table if exists t;
|
|
CREATE TABLE t(i int primary key auto_increment, a binary, b binary(0), c binary(20), d binary(255)) character set utf8 collate utf8_bin;
|
|
insert into t(a, b, c, d) values ('a', NULL, 'a','a');
|
|
select i, hex(a), hex(b), hex(c), hex(d) from t;
|
|
select unhex('4D7953514C'), unhex('313233'), unhex(313233), unhex('');
|
|
select unhex('string'), unhex('你好'), unhex(123.4), unhex(null);
|
|
select hex(ltrim(' bar ')), hex(ltrim('bar')), hex(ltrim('')), hex(ltrim(null));
|
|
select hex(rtrim(' bar ')), hex(rtrim('bar')), hex(rtrim('')), hex(rtrim(null));
|
|
select hex(ltrim("\t bar ")), hex(ltrim(" \tbar")), hex(ltrim("\n bar")), hex(ltrim("\r bar"));
|
|
select hex(rtrim(" bar \t")), hex(rtrim("bar\t ")), hex(rtrim("bar \n")), hex(rtrim("bar \r"));
|
|
DROP TABLE IF EXISTS t;
|
|
CREATE TABLE t(a BINARY(6));
|
|
INSERT INTO t VALUES("中文");
|
|
SELECT hex(a), hex(REVERSE(a)), hex(REVERSE("中文")), hex(REVERSE("123 ")) FROM t;
|
|
SELECT hex(REVERSE(123)), hex(REVERSE(12.09)) FROM t;
|
|
select trim(' bar '), trim(leading 'x' from 'xxxbarxxx'), trim(trailing 'xyz' from 'barxxyz'), trim(both 'x' from 'xxxbarxxx');
|
|
select hex(trim('\t bar\n ')), hex(trim(' \rbar \t'));
|
|
select hex(trim(leading from ' bar')), hex(trim('x' from 'xxxbarxxx')), hex(trim('x' from 'bar')), hex(trim('' from ' bar '));
|
|
select hex(trim('')), hex(trim('x' from ''));
|
|
select hex(trim(null from 'bar')), hex(trim('x' from null)), hex(trim(null)), hex(trim(leading null from 'bar'));
|
|
drop table if exists t;
|
|
create table t(a char(20), b int, c double, d datetime, e time, f binary(5));
|
|
insert into t values('www.pingcap.com', 12345, 123.45, "2017-01-01 12:01:01", "12:01:01", "HelLo");
|
|
select locate(".ping", a), locate(".ping", a, 5) from t;
|
|
select locate("234", b), locate("235", b, 10) from t;
|
|
select locate(".45", c), locate(".35", b) from t;
|
|
select locate("El", f), locate("ll", f), locate("lL", f), locate("Lo", f), locate("lo", f) from t;
|
|
select locate("01 12", d) from t;
|
|
select locate("文", "中文字符串", 2);
|
|
select locate("文", "中文字符串", 3);
|
|
select locate("文", "中文字符串");
|
|
select bin(-1);
|
|
select bin(5);
|
|
select bin("中文");
|
|
select character_length(null), character_length("Hello"), character_length("a中b文c"),
|
|
character_length(123), character_length(12.3456);
|
|
select char_length(null), char_length("Hello"), char_length("a中b文c"), char_length(123),char_length(12.3456);
|
|
select char_length(null), char_length("Hello"), char_length("a 中 b 文 c"), char_length("НОЧЬ НА ОКРАИНЕ МОСКВЫ");
|
|
select char_length(null), char_length(binary("Hello")), char_length(binary("a 中 b 文 c")), char_length(binary("НОЧЬ НА ОКРАИНЕ МОСКВЫ"));
|
|
select elt(0, "abc", "def"), elt(2, "hello", "中文", "tidb"), elt(4, "hello", "中文",
|
|
"tidb");
|
|
select instr("中国", "国"), instr("中国", ""), instr("abc", ""), instr("", ""), instr("", "abc");
|
|
select instr("中国", null), instr(null, ""), instr(null, null);
|
|
drop table if exists t;
|
|
create table t(a binary(20), b char(20));
|
|
insert into t values("中国", cast("国" as binary)), ("中国", ""), ("abc", ""), ("", ""), ("", "abc");
|
|
select instr(a, b) from t;
|
|
select oct("aaaa"), oct("-1.9"), oct("-9999999999999999999999999"), oct("9999999999999999999999999");
|
|
select oct(-1.9), oct(1.9), oct(-1), oct(1), oct(-9999999999999999999999999), oct(9999999999999999999999999);
|
|
select oct(""), oct(" "), oct(NULL);
|
|
drop table if exists t_oct;
|
|
CREATE TABLE t_oct (a VARCHAR(20));
|
|
INSERT INTO t_oct VALUES (''), (' '), (NULL), ('123'), ('abc'), ('0'), ('255');
|
|
SELECT oct(CONCAT(a, '')) FROM t_oct;
|
|
select find_in_set("", ""), find_in_set("", ","), find_in_set("中文", "字符串,中文"), find_in_set("b,", "a,b,c,d");
|
|
select find_in_set(NULL, ""), find_in_set("", NULL), find_in_set(1, "2,3,1");
|
|
select make_set(0, "12"), make_set(3, "aa", "11"), make_set(3, NULL, "中文"), make_set(NULL, "aa");
|
|
select quote("aaaa"), quote(""), quote("\"\""), quote("\n\n");
|
|
select quote(0121), quote(0000), quote("中文"), quote(NULL);
|
|
select quote(null) is NULL;
|
|
select quote(null) is NOT NULL;
|
|
select length(quote(null));
|
|
select quote(null) REGEXP binary 'null';
|
|
select quote(null) REGEXP binary 'NULL';
|
|
select quote(null) REGEXP 'NULL';
|
|
select quote(null) REGEXP 'null';
|
|
select convert("123" using "binary"), convert("中文" using "binary"), convert("中文" using "utf8"), convert("中文" using "utf8mb4"), convert(cast("中文" as binary) using "utf8");
|
|
-- error 1115
|
|
select convert("123" using "866");
|
|
select hex(insert("中文", 1, 1, cast("aaa" as binary))), hex(insert("ba", -1, 1, "aaa")), hex(insert("ba", 1, 100, "aaa")), hex(insert("ba", 100, 1, "aaa"));
|
|
select insert("bb", NULL, 1, "aa"), insert("bb", 1, NULL, "aa"), insert(NULL, 1, 1, "aaa"), insert("bb", 1, 1, NULL);
|
|
SELECT INSERT("bb", 0, 1, NULL), INSERT("bb", 0, NULL, "aaa");
|
|
SELECT INSERT("中文", 0, 1, NULL), INSERT("中文", 0, NULL, "aaa");
|
|
select export_set(7, "1", "0", ",", 65);
|
|
select export_set(7, "1", "0", ",", -1);
|
|
select export_set(7, "1", "0", ",");
|
|
select export_set(7, "1", "0");
|
|
select export_set(NULL, "1", "0", ",", 65);
|
|
select export_set(7, "1", "0", ",", 1);
|
|
select format(12332.1, 4), format(12332.2, 0), format(12332.2, 2,'en_US');
|
|
select format(NULL, 4), format(12332.2, NULL);
|
|
--enable_warnings
|
|
select format(12332.2, 2,'es_EC');
|
|
--disable_warnings
|
|
select field(1, 2, 1), field(1, 0, NULL), field(1, NULL, 2, 1), field(NULL, 1, 2, NULL);
|
|
select field("1", 2, 1), field(1, "0", NULL), field("1", NULL, 2, 1), field(NULL, 1, "2", NULL);
|
|
select field("1", 2, 1), field(1, "abc", NULL), field("1", NULL, 2, 1), field(NULL, 1, "2", NULL);
|
|
select field("abc", "a", 1), field(1.3, "1.3", 1.5);
|
|
drop table if exists t;
|
|
create table t(a decimal(11, 8), b decimal(11,8));
|
|
insert into t values('114.57011441','38.04620115'), ('-38.04620119', '38.04620115');
|
|
select a,b,concat_ws(',',a,b) from t;
|
|
drop table if exists t1;
|
|
CREATE TABLE t1 (c1 INT UNSIGNED NOT NULL );
|
|
INSERT INTO t1 VALUES (0);
|
|
SELECT c1 FROM t1 WHERE c1 <> CAST(POW(-'0', 1) AS BINARY);
|
|
SELECT c1 FROM t1 WHERE c1 = CAST('-000' AS BINARY);
|
|
|
|
# TestInvalidStrings
|
|
drop table if exists t;
|
|
create table t (a binary(5));
|
|
insert into t values (0x1e240), ('ABCDE');
|
|
set tidb_enable_vectorized_expression = on;
|
|
select convert(t.a using utf8) from t;
|
|
select convert(0x1e240 using utf8);
|
|
set tidb_enable_vectorized_expression = off;
|
|
select convert(t.a using utf8) from t;
|
|
select convert(0x1e240 using utf8);
|
|
set tidb_enable_vectorized_expression = default;
|
|
|
|
# TestOpBuiltin
|
|
select 1 && 1, 1 && 0, 0 && 1, 0 && 0, 2 && -1, null && 1, '1a' && 'a';
|
|
select ~123, ~-123, ~null;
|
|
select !1, !123, !0, !null;
|
|
select 1 xor 1, 1 xor 0, 0 xor 1, 0 xor 0, 2 xor -1, null xor 1, '1a' xor 'a';
|
|
select 123 & 321, -123 & 321, null & 1;
|
|
select 123 | 321, -123 | 321, null | 1;
|
|
select 123 ^ 321, -123 ^ 321, null ^ 1;
|
|
select 123 << 2, -123 << 2, null << 1;
|
|
select 123 >> 2, -123 >> 2, null >> 1;
|
|
select 1 || 1, 1 || 0, 0 || 1, 0 || 0, 2 || -1, null || 1, '1a' || 'a';
|
|
select +1, +0, +(-9), +(-0.001), +0.999, +null, +"aaa";
|
|
drop table if exists f;
|
|
create table f(a decimal(65,0));
|
|
insert into f value (-17000000000000000000);
|
|
select a from f;
|
|
|
|
# TestControlBuiltin
|
|
select ifnull(1, 2);
|
|
select ifnull(null, 2);
|
|
select ifnull(1, null);
|
|
select ifnull(null, null);
|
|
drop table if exists t1;
|
|
create table t1(a bigint not null);
|
|
select ifnull(max(a),0) from t1;
|
|
drop table if exists t1;
|
|
drop table if exists t2;
|
|
create table t1(a decimal(20,4));
|
|
create table t2(a decimal(20,4));
|
|
insert into t1 select 1.2345;
|
|
insert into t2 select 1.2345;
|
|
select sum(ifnull(a, 0)) from (
|
|
select ifnull(a, 0) as a from t1
|
|
union all
|
|
select ifnull(a, 0) as a from t2
|
|
) t;
|
|
select IF(0,"ERROR","this"),IF(1,"is","ERROR"),IF(NULL,"ERROR","a"),IF(1,2,3)|0,IF(1,2.0,3.0)+0;
|
|
drop table if exists t1;
|
|
CREATE TABLE t1 (st varchar(255) NOT NULL, u int(11) NOT NULL);
|
|
INSERT INTO t1 VALUES ('a',1),('A',1),('aa',1),('AA',1),('a',1),('aaa',0),('BBB',0);
|
|
select if(1,st,st) s from t1 order by s;
|
|
select if(u=1,st,st) s from t1 order by s;
|
|
drop table if exists t1;
|
|
CREATE TABLE t1 (a varchar(255), b time, c int);
|
|
INSERT INTO t1 VALUE('abc', '12:00:00', 0);
|
|
INSERT INTO t1 VALUE('1abc', '00:00:00', 1);
|
|
INSERT INTO t1 VALUE('0abc', '12:59:59', 0);
|
|
select if(a, b, c), if(b, a, c), if(c, a, b) from t1;
|
|
select if(1, 1.0, 1);
|
|
select if(1, 1, 1.0);
|
|
select if(count(*), cast('2000-01-01' as date), cast('2011-01-01' as date)) from t1;
|
|
select if(count(*)=0, cast('2000-01-01' as date), cast('2011-01-01' as date)) from t1;
|
|
select if(count(*), cast('[]' as json), cast('{}' as json)) from t1;
|
|
select if(count(*)=0, cast('[]' as json), cast('{}' as json)) from t1;
|
|
SELECT 79 + + + CASE -87 WHEN -30 THEN COALESCE(COUNT(*), +COALESCE(+15, -33, -12 ) + +72) WHEN +COALESCE(+AVG(DISTINCT(60)), 21) THEN NULL ELSE NULL END AS col0;
|
|
SELECT -63 + COALESCE ( - 83, - 61 + - + 72 * - CAST( NULL AS SIGNED ) + + 3 );
|
|
|
|
# TestArithmeticBuiltin
|
|
DROP TABLE IF EXISTS t;
|
|
CREATE TABLE t(a DECIMAL(4, 2), b DECIMAL(5, 3));
|
|
INSERT INTO t(a, b) VALUES(1.09, 1.999), (-1.1, -0.1);
|
|
SELECT a+b FROM t;
|
|
SELECT b+12, b+0.01, b+0.00001, b+12.00001 FROM t;
|
|
SELECT 1+12, 21+0.01, 89+"11", 12+"a", 12+NULL, NULL+1, NULL+NULL;
|
|
DROP TABLE IF EXISTS t;
|
|
CREATE TABLE t(a BIGINT UNSIGNED, b BIGINT UNSIGNED);
|
|
INSERT INTO t SELECT 1<<63, 1<<63;
|
|
-- error 1690
|
|
SELECT a+b FROM t;
|
|
-- error 1690
|
|
select cast(-3 as signed) + cast(2 as unsigned);
|
|
-- error 1690
|
|
select cast(2 as unsigned) + cast(-3 as signed);
|
|
DROP TABLE IF EXISTS t;
|
|
CREATE TABLE t(a DECIMAL(4, 2), b DECIMAL(5, 3));
|
|
INSERT INTO t(a, b) VALUES(1.09, 1.999), (-1.1, -0.1);
|
|
SELECT a-b FROM t;
|
|
SELECT b-12, b-0.01, b-0.00001, b-12.00001 FROM t;
|
|
SELECT 1-12, 21-0.01, 89-"11", 12-"a", 12-NULL, NULL-1, NULL-NULL;
|
|
DROP TABLE IF EXISTS t;
|
|
CREATE TABLE t(a BIGINT UNSIGNED, b BIGINT UNSIGNED);
|
|
INSERT INTO t SELECT 1, 4;
|
|
-- error 1690
|
|
SELECT a-b FROM t;
|
|
-- error 1690
|
|
select cast(1 as unsigned) - cast(4 as unsigned);
|
|
-- error 1690
|
|
select cast(-1 as signed) - cast(-1 as unsigned);
|
|
-- error 1690
|
|
select cast(1 as signed) - cast(-1 as unsigned);
|
|
-- error 1690
|
|
select cast(-1 as unsigned) - cast(-1 as signed);
|
|
-- error 1690
|
|
select cast(-9223372036854775808 as unsigned) - (-9223372036854775808);
|
|
-- error 1690
|
|
select cast(12 as unsigned) - (14);
|
|
-- error 1690
|
|
select cast(9223372036854775807 as signed) - cast(-1 as signed);
|
|
-- error 1690
|
|
select cast(-9223372036854775808 as signed) - cast(1 as signed);
|
|
-- error 1690
|
|
select cast(12 as signed) - cast(-9223372036854775808 as signed);
|
|
create table tb5(a int(10));
|
|
insert into tb5 (a) values (10);
|
|
# TODO: fix https://github.com/pingcap/tidb/issues/47692
|
|
#-- error 1690
|
|
# select * from tb5 where a - -9223372036854775808;
|
|
drop table tb5;
|
|
select cast(-9223372036854775808 as unsigned) - (-9223372036854775807);
|
|
select cast(-3 as unsigned) - cast(-1 as signed);
|
|
select 1.11 - 1.11;
|
|
select cast(-1 as unsigned) - cast(-12 as unsigned);
|
|
select cast(-1 as unsigned) - cast(0 as unsigned);
|
|
select 1234567890 * 1234567890;
|
|
-- error 1690
|
|
select 1234567890 * 12345671890;
|
|
select cast(1234567890 as unsigned int) * 12345671890;
|
|
select 123344532434234234267890.0 * 1234567118923479823749823749.230;
|
|
-- error 1690
|
|
select 123344532434234234267890.0 * 12345671189234798237498232384982309489238402830480239849238048239084749.230;
|
|
-- error 1690
|
|
select 1.797693134862315708145274237317043567981e+308 * 1.1;
|
|
-- error 1690
|
|
select 1.797693134862315708145274237317043567981e+308 * -1.1;
|
|
select 0.0 * -1;
|
|
DROP TABLE IF EXISTS t;
|
|
CREATE TABLE t(a DECIMAL(4, 2), b DECIMAL(5, 3));
|
|
INSERT INTO t(a, b) VALUES(-1.09, 1.999);
|
|
--enable_warnings
|
|
SELECT a/b, a/12, a/-0.01, b/12, b/-0.01, b/0.000, NULL/b, b/NULL, NULL/NULL FROM t;
|
|
--disable_warnings
|
|
-- error 1690
|
|
select 1e200/1e-200;
|
|
SELECT 13 DIV 12, 13 DIV 0.01, -13 DIV 2, 13 DIV NULL, NULL DIV 13, NULL DIV NULL;
|
|
SELECT 2.4 div 1.1, 2.4 div 1.2, 2.4 div 1.3;
|
|
--enable_warnings
|
|
SELECT 1.175494351E-37 div 1.7976931348623157E+308, 1.7976931348623157E+308 div -1.7976931348623157E+307, 1 div 1e-82;
|
|
--disable_warnings
|
|
-- error 1690
|
|
select 1e300 DIV 1.5;
|
|
drop table if exists t;
|
|
CREATE TABLE t (c_varchar varchar(255), c_time time, nonzero int, zero int, c_int_unsigned int unsigned, c_timestamp timestamp, c_enum enum('a','b','c'));
|
|
INSERT INTO t VALUE('abc', '12:00:00', 12, 0, 5, '2017-08-05 18:19:03', 'b');
|
|
select c_varchar div nonzero, c_time div nonzero, c_time div zero, c_timestamp div nonzero, c_timestamp div zero, c_varchar div zero from t;
|
|
select c_enum div nonzero from t;
|
|
select c_enum div zero from t;
|
|
--enable_warnings
|
|
select nonzero div zero from t;
|
|
--disable_warnings
|
|
select c_time div c_enum, c_timestamp div c_time, c_timestamp div c_enum from t;
|
|
--enable_warnings
|
|
select c_int_unsigned div nonzero, nonzero div c_int_unsigned, c_int_unsigned div zero from t;
|
|
--disable_warnings
|
|
SELECT CAST(1 AS UNSIGNED) MOD -9223372036854775808, -9223372036854775808 MOD CAST(1 AS UNSIGNED);
|
|
SELECT 13 MOD 12, 13 MOD 0.01, -13 MOD 2, 13 MOD NULL, NULL MOD 13, NULL DIV NULL;
|
|
SELECT 2.4 MOD 1.1, 2.4 MOD 1.2, 2.4 mod 1.30;
|
|
drop table if exists t;
|
|
CREATE TABLE t (c_varchar varchar(255), c_time time, nonzero int, zero int, c_timestamp timestamp, c_enum enum('a','b','c'));
|
|
INSERT INTO t VALUE('abc', '12:00:00', 12, 0, '2017-08-05 18:19:03', 'b');
|
|
select c_varchar MOD nonzero, c_time MOD nonzero, c_timestamp MOD nonzero, c_enum MOD nonzero from t;
|
|
select c_time MOD c_enum, c_timestamp MOD c_time, c_timestamp MOD c_enum from t;
|
|
--enable_warnings
|
|
select c_enum MOD zero from t;
|
|
--disable_warnings
|
|
SET SQL_MODE='ERROR_FOR_DIVISION_BY_ZERO,STRICT_ALL_TABLES';
|
|
drop table if exists t;
|
|
CREATE TABLE t (v int);
|
|
--enable_warnings
|
|
INSERT IGNORE INTO t VALUE(12 MOD 0);
|
|
--disable_warnings
|
|
select v from t;
|
|
select 0.000 % 0.11234500000000000000;
|
|
-- error 1365
|
|
INSERT INTO t VALUE(12 MOD 0);
|
|
select sum(1.2e2) * 0.1;
|
|
drop table if exists t;
|
|
create table t(a double);
|
|
insert into t value(1.2);
|
|
select sum(a) * 0.1 from t;
|
|
drop table if exists t;
|
|
create table t(a double);
|
|
insert into t value(1.2);
|
|
# TODO: fix https://github.com/pingcap/tidb/issues/47692
|
|
# --enable_warnings
|
|
select * from t where a/0 > 1;
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t;
|
|
CREATE TABLE t(a BIGINT, b DECIMAL(6, 2));
|
|
INSERT INTO t VALUES(0, 1.12), (1, 1.21);
|
|
SELECT a/b FROM t;
|
|
|
|
# TestNullifWithIsNull
|
|
# issue 23157: make sure if Nullif expr is correct combined with IsNull expr.
|
|
drop table if exists t;
|
|
create table t(a int not null);
|
|
insert into t values(1),(2);
|
|
select * from t where nullif(a,a) is null;
|
|
|
|
# TestAggregationBuiltin
|
|
drop table if exists t;
|
|
create table t(a decimal(7, 6));
|
|
insert into t values(1.123456), (1.123456);
|
|
select avg(a) from t;
|
|
drop table t;
|
|
CREATE TABLE `t` ( `a` int, KEY `idx_a` (`a`));
|
|
select avg(a) from t;
|
|
select max(a), min(a) from t;
|
|
select distinct a from t;
|
|
select sum(a) from t;
|
|
select count(a) from t;
|
|
select bit_or(a) from t;
|
|
select bit_xor(a) from t;
|
|
select bit_and(a) from t;
|
|
select count(1) from (select count(1) from t) as t1;
|
|
|
|
# TestAggregationBuiltinBitOr
|
|
drop table if exists t;
|
|
create table t(a bigint);
|
|
insert into t values(null);
|
|
select bit_or(a) from t;
|
|
insert into t values(1);
|
|
select bit_or(a) from t;
|
|
insert into t values(2);
|
|
select bit_or(a) from t;
|
|
insert into t values(4);
|
|
select bit_or(a) from t;
|
|
select a, bit_or(a) from t group by a order by a;
|
|
insert into t values(-1);
|
|
select bit_or(a) from t;
|
|
|
|
# TestAggregationBuiltinBitXor
|
|
drop table if exists t;
|
|
create table t(a bigint);
|
|
insert into t values(null);
|
|
select bit_xor(a) from t;
|
|
insert into t values(1);
|
|
select bit_xor(a) from t;
|
|
insert into t values(2);
|
|
select bit_xor(a) from t;
|
|
insert into t values(3);
|
|
select bit_xor(a) from t;
|
|
insert into t values(3);
|
|
select bit_xor(a) from t;
|
|
select a, bit_xor(a) from t group by a order by a;
|
|
|
|
# TestAggregationBuiltinBitAnd
|
|
drop table if exists t;
|
|
create table t(a bigint);
|
|
insert into t values(null);
|
|
select bit_and(a) from t;
|
|
insert into t values(7);
|
|
select bit_and(a) from t;
|
|
insert into t values(5);
|
|
select bit_and(a) from t;
|
|
insert into t values(3);
|
|
select bit_and(a) from t;
|
|
insert into t values(2);
|
|
select bit_and(a) from t;
|
|
select a, bit_and(a) from t group by a order by a desc;
|
|
|
|
# TestAggregationBuiltinGroupConcat
|
|
drop table if exists t, d;
|
|
create table t(a varchar(100));
|
|
create table d(a varchar(100));
|
|
insert into t values('hello'), ('hello');
|
|
select group_concat(a) from t;
|
|
set @@group_concat_max_len=7;
|
|
--enable_warnings
|
|
select group_concat(a) from t;
|
|
--disable_warnings
|
|
-- error 1260
|
|
insert into d select group_concat(a) from t;
|
|
set sql_mode='';
|
|
--enable_warnings
|
|
insert into d select group_concat(a) from t;
|
|
--disable_warnings
|
|
select * from d;
|
|
set group_concat_max_len=default;
|
|
set sql_mode=default;
|
|
|
|
# TestOtherBuiltin
|
|
drop table if exists t;
|
|
create table t(a int, b double, c varchar(20), d datetime, e time);
|
|
insert into t value(1, 2, 'string', '2017-01-01 12:12:12', '12:12:12');
|
|
select 1 in (a, b, c), 'string' in (a, b, c), '2017-01-01 12:12:12' in (c, d, e), '12:12:12' in (c, d, e) from t;
|
|
select 1 in (null, c), 2 in (null, c) from t;
|
|
select 0 in (a, b, c), 0 in (a, b, c), 3 in (a, b, c), 4 in (a, b, c) from t;
|
|
select (0,1) in ((0,1), (0,2)), (0,1) in ((0,0), (0,2));
|
|
select bit_count(121), bit_count(-1), bit_count(null), bit_count("1231aaa");
|
|
drop table if exists t;
|
|
create table t(a int primary key, b time, c double, d varchar(10));
|
|
insert into t values(1, '01:01:01', 1.1, "1"), (2, '02:02:02', 2.2, "2");
|
|
insert into t(a, b) values(1, '12:12:12') on duplicate key update a = values(b);
|
|
select a from t order by a;
|
|
insert into t values(2, '12:12:12', 1.1, "3.3") on duplicate key update a = values(c) + values(d);
|
|
select a from t order by a;
|
|
set @varname = "Abc";
|
|
select @varname, @VARNAME;
|
|
drop table t;
|
|
CREATE TABLE `t` (`id` varchar(32) NOT NULL, `count` decimal(18,2), PRIMARY KEY (`id`));
|
|
INSERT INTO t (id,count)VALUES('abc',2) ON DUPLICATE KEY UPDATE count=if(VALUES(count) > count,VALUES(count),count);
|
|
select count from t where id = 'abc';
|
|
INSERT INTO t (id,count)VALUES('abc',265.0) ON DUPLICATE KEY UPDATE count=if(VALUES(count) > count,VALUES(count),count);
|
|
select count from t where id = 'abc';
|
|
drop table if exists t;
|
|
create table test(id int not null, val text, primary key(id));
|
|
insert into test values(1,'hello');
|
|
select * from test;
|
|
insert into test values(1, NULL) on duplicate key update val = VALUES(val);
|
|
select * from test;
|
|
drop table if exists test;
|
|
create table test(
|
|
id int not null,
|
|
a text,
|
|
b blob,
|
|
c varchar(20),
|
|
d int,
|
|
e float,
|
|
f DECIMAL(6,4),
|
|
g JSON,
|
|
primary key(id));
|
|
insert into test values(1,'txt hello', 'blb hello', 'vc hello', 1, 1.1, 1.0, '{"key1": "value1", "key2": "value2"}');
|
|
insert into test values(1, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
|
|
on duplicate key update
|
|
a = values(a),
|
|
b = values(b),
|
|
c = values(c),
|
|
d = values(d),
|
|
e = values(e),
|
|
f = values(f),
|
|
g = values(g);
|
|
select * from test;
|
|
|
|
# TestDateBuiltin
|
|
DROP TABLE IF EXISTS t;
|
|
create table t (d date);
|
|
insert into t values ('1997-01-02');
|
|
insert into t values ('1998-01-02');
|
|
select * from t where d < date '1998-01-01';
|
|
select date'20171212';
|
|
select date'2017/12/12';
|
|
select date'2017/12-12';
|
|
set sql_mode = '';
|
|
select date '0000-00-00';
|
|
set sql_mode = 'NO_ZERO_IN_DATE';
|
|
select date '0000-00-00';
|
|
set sql_mode = 'NO_ZERO_DATE';
|
|
-- error 1292
|
|
select date '0000-00-00';
|
|
set sql_mode = '';
|
|
select date '2007-10-00';
|
|
set sql_mode = 'NO_ZERO_IN_DATE';
|
|
-- error 1292
|
|
select date '2007-10-00';
|
|
set sql_mode = 'NO_ZERO_DATE';
|
|
select date '2007-10-00';
|
|
set sql_mode = 'NO_ZERO_IN_DATE,NO_ZERO_DATE';
|
|
-- error 1292
|
|
select date '2007-10-00';
|
|
-- error 1292
|
|
select date '0000-00-00';
|
|
select date'1998~01~02';
|
|
select date'731124', date '011124';
|
|
-- error 1292
|
|
select date '0000-00-00 00:00:00';
|
|
-- error 1292
|
|
select date '2017-99-99';
|
|
-- error 1292
|
|
select date '2017-2-31';
|
|
-- error 1292
|
|
select date '201712-31';
|
|
-- error 1292
|
|
select date 'abcdefg';
|
|
set sql_mode = default;
|
|
|
|
# TestApproximatePercentile
|
|
drop table if exists t;
|
|
create table t (a bit(10));
|
|
insert into t values(b'1111');
|
|
select approx_percentile(a, 10) from t;
|
|
|
|
# TestFuncNameConst
|
|
DROP TABLE IF EXISTS t;
|
|
CREATE TABLE t(a CHAR(20), b VARCHAR(20), c BIGINT);
|
|
INSERT INTO t (b, c) values('hello', 1);
|
|
SELECT name_const('test_int', 1), name_const('test_float', 3.1415);
|
|
SELECT name_const('test_string', 'hello'), name_const('test_nil', null);
|
|
SELECT name_const('test_string', 1) + c FROM t;
|
|
SELECT concat('hello', name_const('test_string', 'world')) FROM t;
|
|
SELECT NAME_CONST('come', -1);
|
|
SELECT NAME_CONST('come', -1.0);
|
|
-- error 1210
|
|
select name_const(a,b) from t;
|
|
-- error 1210
|
|
select name_const(a,"hello") from t;
|
|
-- error 1210
|
|
select name_const("hello", b) from t;
|
|
-- error 1210
|
|
select name_const("hello", 1+1) from t;
|
|
-- error 1210
|
|
select name_const(concat('a', 'b'), 555) from t;
|
|
-- error 1582
|
|
select name_const(555) from t;
|
|
select name_const("hello", 1);
|
|
|
|
# TestTranslate
|
|
drop table if exists t;
|
|
create table if not exists `translate`(id int);
|
|
create table t(str varchar(100), i int);
|
|
insert into t set str='ABC', i=0;
|
|
insert into t set str='AABC', i=1;
|
|
insert into t set str='A.B.C', i=2;
|
|
insert into t set str='aaaaabbbbb', i=3;
|
|
insert into t set str='abc', i=4;
|
|
insert into t set str='aaa', i=5;
|
|
insert into t set str=NULL, i=6;
|
|
set @@tidb_enable_vectorized_expression=true;
|
|
select translate(str, 'AAa', 'Zz') from t;
|
|
select translate(str, NULL, 'Zz') from t;
|
|
select translate(str, 'AAa', NULL) from t;
|
|
select translate(str, 'AAa', '') from t;
|
|
select translate(str, '', 'Zzz') from t;
|
|
set @@tidb_enable_vectorized_expression=false;
|
|
select translate(str, 'AAa', 'Zz') from t;
|
|
select translate(str, NULL, 'Zz') from t;
|
|
select translate(str, 'AAa', NULL) from t;
|
|
select translate(str, 'AAa', '') from t;
|
|
select translate(str, '', 'Zzz') from t;
|
|
select translate(i, '0123456', 'abcdefg') from t;
|
|
set tidb_enable_vectorized_expression=default;
|
|
|
|
# TestEncryptionBuiltin
|
|
drop table if exists t;
|
|
create table t(a char(41), b char(41), c char(41));
|
|
insert into t values(NULL, '', 'abc');
|
|
select password(a) from t;
|
|
select password(b) from t;
|
|
select password(c) from t;
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time, f bit(4), g binary(20), h blob(10), i text(30));
|
|
insert into t values('2', 2, 2.3, "2017-01-01 12:01:01", "12:01:01", 0b1010, "512", "48", "tidb");
|
|
select md5(a), md5(b), md5(c), md5(d), md5(e), md5(f), md5(g), md5(h), md5(i) from t;
|
|
select md5('123'), md5(123), md5(''), md5('你好'), md5(NULL), md5('👍');
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time, f bit(4), g binary(20), h blob(10), i text(30));
|
|
insert into t values('2', 2, 2.3, "2017-01-01 12:01:01", "12:01:01", 0b1010, "512", "48", "tidb");
|
|
select sha1(a), sha1(b), sha1(c), sha1(d), sha1(e), sha1(f), sha1(g), sha1(h), sha1(i) from t;
|
|
select sha1('123'), sha1(123), sha1(''), sha1('你好'), sha1(NULL);
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time, f bit(4), g binary(20), h blob(10), i text(30));
|
|
insert into t values('2', 2, 2.3, "2017-01-01 12:01:01", "12:01:01", 0b1010, "512", "48", "tidb");
|
|
select sha(a), sha(b), sha(c), sha(d), sha(e), sha(f), sha(g), sha(h), sha(i) from t;
|
|
select sha('123'), sha(123), sha(''), sha('你好'), sha(NULL);
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time, f bit(4), g binary(20), h blob(10), i text(30));
|
|
insert into t values('2', 2, 2.3, "2017-01-01 12:01:01", "12:01:01", 0b1010, "512", "48", "tidb");
|
|
select sha2(a, 224), sha2(b, 0), sha2(c, 512), sha2(d, 256), sha2(e, 384), sha2(f, 0), sha2(g, 512), sha2(h, 256), sha2(i, 224) from t;
|
|
select sha2('123', 512), sha2(123, 512), sha2('', 512), sha2('你好', 224), sha2(NULL, 256), sha2('foo', 123);
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time, f bit(4), g binary(20), h blob(10), i text(30));
|
|
insert into t values('2', 2, 2.3, "2017-01-01 12:01:01", "12:01:01", 0b1010, "512", "48", "tidb");
|
|
select sm3(a), sm3(b), sm3(c), sm3(d), sm3(e), sm3(f), sm3(g), sm3(h), sm3(i) from t;
|
|
select sm3('123'), sm3(123), sm3(''), sm3('你好'), sm3(NULL);
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time, f bit(4), g binary(20), h blob(10), i text(30));
|
|
insert into t values('2', 2, 2.3, "2017-01-01 12:01:01", "12:01:01", 0b1010, "512", "48", "tidb");
|
|
select sm3(a), sm3(b), sm3(c), sm3(d), sm3(e), sm3(f), sm3(g), sm3(h), sm3(i) from t;
|
|
select sm3('123'), sm3(123), sm3(''), sm3('你好'), sm3(NULL);
|
|
drop table if exists t;
|
|
create table t(a char(10), b int, c double, d datetime, e time, f bit(4), g binary(20), h blob(10), i text(30));
|
|
insert into t values('2', 2, 2.3, "2017-01-01 12:01:01", "12:01:01", 0b1010, "512", "48", "tidb");
|
|
SET block_encryption_mode='aes-128-ecb';
|
|
select HEX(AES_ENCRYPT(a, 'key')), HEX(AES_ENCRYPT(b, 'key')), HEX(AES_ENCRYPT(c, 'key')), HEX(AES_ENCRYPT(d, 'key')), HEX(AES_ENCRYPT(e, 'key')), HEX(AES_ENCRYPT(f, 'key')), HEX(AES_ENCRYPT(g, 'key')), HEX(AES_ENCRYPT(h, 'key')), HEX(AES_ENCRYPT(i, 'key')) from t;
|
|
select HEX(AES_ENCRYPT('123', 'foobar')), HEX(AES_ENCRYPT(123, 'foobar')), HEX(AES_ENCRYPT('', 'foobar')), HEX(AES_ENCRYPT('你好', 'foobar')), AES_ENCRYPT(NULL, 'foobar');
|
|
select HEX(AES_ENCRYPT(a, 'key', 'iv')), HEX(AES_ENCRYPT(b, 'key', 'iv')) from t;
|
|
show warnings;
|
|
SET block_encryption_mode='aes-128-cbc';
|
|
select HEX(AES_ENCRYPT(a, 'key', '1234567890123456')), HEX(AES_ENCRYPT(b, 'key', '1234567890123456')), HEX(AES_ENCRYPT(c, 'key', '1234567890123456')), HEX(AES_ENCRYPT(d, 'key', '1234567890123456')), HEX(AES_ENCRYPT(e, 'key', '1234567890123456')), HEX(AES_ENCRYPT(f, 'key', '1234567890123456')), HEX(AES_ENCRYPT(g, 'key', '1234567890123456')), HEX(AES_ENCRYPT(h, 'key', '1234567890123456')), HEX(AES_ENCRYPT(i, 'key', '1234567890123456')) from t;
|
|
select HEX(AES_ENCRYPT('123', 'foobar', '1234567890123456')), HEX(AES_ENCRYPT(123, 'foobar', '1234567890123456')), HEX(AES_ENCRYPT('', 'foobar', '1234567890123456')), HEX(AES_ENCRYPT('你好', 'foobar', '1234567890123456')), AES_ENCRYPT(NULL, 'foobar', '1234567890123456');
|
|
SET block_encryption_mode='aes-128-ofb';
|
|
select HEX(AES_ENCRYPT(a, 'key', '1234567890123456')), HEX(AES_ENCRYPT(b, 'key', '1234567890123456')), HEX(AES_ENCRYPT(c, 'key', '1234567890123456')), HEX(AES_ENCRYPT(d, 'key', '1234567890123456')), HEX(AES_ENCRYPT(e, 'key', '1234567890123456')), HEX(AES_ENCRYPT(f, 'key', '1234567890123456')), HEX(AES_ENCRYPT(g, 'key', '1234567890123456')), HEX(AES_ENCRYPT(h, 'key', '1234567890123456')), HEX(AES_ENCRYPT(i, 'key', '1234567890123456')) from t;
|
|
select HEX(AES_ENCRYPT('123', 'foobar', '1234567890123456')), HEX(AES_ENCRYPT(123, 'foobar', '1234567890123456')), HEX(AES_ENCRYPT('', 'foobar', '1234567890123456')), HEX(AES_ENCRYPT('你好', 'foobar', '1234567890123456')), AES_ENCRYPT(NULL, 'foobar', '1234567890123456');
|
|
SET block_encryption_mode='aes-192-ofb';
|
|
select HEX(AES_ENCRYPT(a, 'key', '1234567890123456')), HEX(AES_ENCRYPT(b, 'key', '1234567890123456')), HEX(AES_ENCRYPT(c, 'key', '1234567890123456')), HEX(AES_ENCRYPT(d, 'key', '1234567890123456')), HEX(AES_ENCRYPT(e, 'key', '1234567890123456')), HEX(AES_ENCRYPT(f, 'key', '1234567890123456')), HEX(AES_ENCRYPT(g, 'key', '1234567890123456')), HEX(AES_ENCRYPT(h, 'key', '1234567890123456')), HEX(AES_ENCRYPT(i, 'key', '1234567890123456')) from t;
|
|
select HEX(AES_ENCRYPT('123', 'foobar', '1234567890123456')), HEX(AES_ENCRYPT(123, 'foobar', '1234567890123456')), HEX(AES_ENCRYPT('', 'foobar', '1234567890123456')), HEX(AES_ENCRYPT('你好', 'foobar', '1234567890123456')), AES_ENCRYPT(NULL, 'foobar', '1234567890123456');
|
|
SET block_encryption_mode='aes-256-ofb';
|
|
select HEX(AES_ENCRYPT(a, 'key', '1234567890123456')), HEX(AES_ENCRYPT(b, 'key', '1234567890123456')), HEX(AES_ENCRYPT(c, 'key', '1234567890123456')), HEX(AES_ENCRYPT(d, 'key', '1234567890123456')), HEX(AES_ENCRYPT(e, 'key', '1234567890123456')), HEX(AES_ENCRYPT(f, 'key', '1234567890123456')), HEX(AES_ENCRYPT(g, 'key', '1234567890123456')), HEX(AES_ENCRYPT(h, 'key', '1234567890123456')), HEX(AES_ENCRYPT(i, 'key', '1234567890123456')) from t;
|
|
select HEX(AES_ENCRYPT('123', 'foobar', '1234567890123456')), HEX(AES_ENCRYPT(123, 'foobar', '1234567890123456')), HEX(AES_ENCRYPT('', 'foobar', '1234567890123456')), HEX(AES_ENCRYPT('你好', 'foobar', '1234567890123456')), AES_ENCRYPT(NULL, 'foobar', '1234567890123456');
|
|
SET block_encryption_mode='aes-128-ecb';
|
|
select AES_DECRYPT(AES_ENCRYPT('foo', 'bar'), 'bar');
|
|
select AES_DECRYPT(UNHEX('45ABDD5C4802EFA6771A94C43F805208'), 'foobar'), AES_DECRYPT(UNHEX('791F1AEB6A6B796E6352BF381895CA0E'), 'foobar'), AES_DECRYPT(UNHEX('D0147E2EB856186F146D9F6DE33F9546'), 'foobar'), AES_DECRYPT(NULL, 'foobar'), AES_DECRYPT('SOME_THING_STRANGE', 'foobar');
|
|
SET block_encryption_mode='aes-128-cbc';
|
|
select AES_DECRYPT(AES_ENCRYPT('foo', 'bar', '1234567890123456'), 'bar', '1234567890123456');
|
|
select AES_DECRYPT(UNHEX('80D5646F07B4654B05A02D9085759770'), 'foobar', '1234567890123456'), AES_DECRYPT(UNHEX('B3C14BA15030D2D7E99376DBE011E752'), 'foobar', '1234567890123456'), AES_DECRYPT(UNHEX('0CD2936EE4FEC7A8CDF6208438B2BC05'), 'foobar', '1234567890123456'), AES_DECRYPT(NULL, 'foobar', '1234567890123456'), AES_DECRYPT('SOME_THING_STRANGE', 'foobar', '1234567890123456');
|
|
SET block_encryption_mode='aes-128-ofb';
|
|
select AES_DECRYPT(AES_ENCRYPT('foo', 'bar', '1234567890123456'), 'bar', '1234567890123456');
|
|
select AES_DECRYPT(UNHEX('48E38A'), 'foobar', '1234567890123456'), AES_DECRYPT(UNHEX(''), 'foobar', '1234567890123456'), AES_DECRYPT(UNHEX('9D6C199101C3'), 'foobar', '1234567890123456'), AES_DECRYPT(NULL, 'foobar', '1234567890123456'), HEX(AES_DECRYPT('SOME_THING_STRANGE', 'foobar', '1234567890123456'));
|
|
SET block_encryption_mode='aes-192-ofb';
|
|
select AES_DECRYPT(AES_ENCRYPT('foo', 'bar', '1234567890123456'), 'bar', '1234567890123456');
|
|
select AES_DECRYPT(UNHEX('3A76B0'), 'foobar', '1234567890123456'), AES_DECRYPT(UNHEX(''), 'foobar', '1234567890123456'), AES_DECRYPT(UNHEX('EFF92304268E'), 'foobar', '1234567890123456'), AES_DECRYPT(NULL, 'foobar', '1234567890123456'), HEX(AES_DECRYPT('SOME_THING_STRANGE', 'foobar', '1234567890123456'));
|
|
SET block_encryption_mode='aes-256-ofb';
|
|
select AES_DECRYPT(AES_ENCRYPT('foo', 'bar', '1234567890123456'), 'bar', '1234567890123456');
|
|
select AES_DECRYPT(UNHEX('E842C5'), 'foobar', '1234567890123456'), AES_DECRYPT(UNHEX(''), 'foobar', '1234567890123456'), AES_DECRYPT(UNHEX('3DCD5646767D'), 'foobar', '1234567890123456'), AES_DECRYPT(NULL, 'foobar', '1234567890123456'), HEX(AES_DECRYPT('SOME_THING_STRANGE', 'foobar', '1234567890123456'));
|
|
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1(a VARCHAR(1000));
|
|
INSERT INTO t1 VALUES('12345'), ('23456');
|
|
SELECT HEX(COMPRESS(a)) FROM t1;
|
|
DROP TABLE IF EXISTS t2;
|
|
CREATE TABLE t2(a VARCHAR(1000), b VARBINARY(1000));
|
|
INSERT INTO t2 (a, b) SELECT a, COMPRESS(a) from t1;
|
|
SELECT a, HEX(b) FROM t2;
|
|
SELECT UNCOMPRESS(COMPRESS('123'));
|
|
SELECT UNCOMPRESS(UNHEX('03000000789C3334320600012D0097'));
|
|
SELECT UNCOMPRESS(UNHEX('03000000789C32343206040000FFFF012D0097'));
|
|
INSERT INTO t2 VALUES ('12345', UNHEX('05000000789C3334323631050002F80100'));
|
|
SELECT UNCOMPRESS(a), UNCOMPRESS(b) FROM t2;
|
|
SELECT UNCOMPRESSED_LENGTH(COMPRESS('123'));
|
|
SELECT UNCOMPRESSED_LENGTH(UNHEX('03000000789C3334320600012D0097'));
|
|
SELECT UNCOMPRESSED_LENGTH(UNHEX('03000000789C32343206040000FFFF012D0097'));
|
|
SELECT UNCOMPRESSED_LENGTH('');
|
|
SELECT UNCOMPRESSED_LENGTH(UNHEX('0100'));
|
|
SELECT UNCOMPRESSED_LENGTH(a), UNCOMPRESSED_LENGTH(b) FROM t2;
|
|
-- error 1690
|
|
SELECT RANDOM_BYTES(0);
|
|
-- error 1690
|
|
SELECT RANDOM_BYTES(-5);
|
|
-- error 1690
|
|
SELECT RANDOM_BYTES(1025);
|
|
-- error 1690
|
|
SELECT RANDOM_BYTES(4000);
|
|
SELECT length(RANDOM_BYTES('1'));
|
|
SELECT length(RANDOM_BYTES(1024));
|
|
SELECT RANDOM_BYTES(NULL);
|
|
SET GLOBAL validate_password.dictionary='password';
|
|
SET GLOBAL validate_password.enable = 1;
|
|
SELECT validate_password_strength('root');
|
|
SELECT validate_password_strength('toor');
|
|
SELECT validate_password_strength('ROOT');
|
|
SELECT validate_password_strength('TOOR');
|
|
SELECT validate_password_strength('fooHoHo%1');
|
|
SELECT validate_password_strength('pass');
|
|
SELECT validate_password_strength('password');
|
|
SELECT validate_password_strength('password0000');
|
|
SELECT validate_password_strength('password1A#');
|
|
SELECT validate_password_strength('PA12wrd!#');
|
|
SELECT VALIDATE_PASSWORD_STRENGTH(REPEAT("aA1#", 26));
|
|
SELECT validate_password_strength(null);
|
|
SELECT validate_password_strength('null');
|
|
SELECT VALIDATE_PASSWORD_STRENGTH( 0x6E616E646F73617135234552 );
|
|
SELECT VALIDATE_PASSWORD_STRENGTH(CAST(0xd2 AS BINARY(10)));
|
|
SET GLOBAL validate_password.dictionary=default;
|
|
SET GLOBAL validate_password.enable = default;
|
|
SET block_encryption_mode=default;
|
|
|
|
# TestMiscellaneousBuiltin
|
|
select uuid() REGEXP '[[:alnum:]]{8}-[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{12}',
|
|
uuid() REGEXP '[[:alnum:]]{8}-[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{12}',
|
|
uuid() REGEXP '[[:alnum:]]{8}-[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{12}',
|
|
uuid() REGEXP '[[:alnum:]]{8}-[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{12}',
|
|
uuid() REGEXP '[[:alnum:]]{8}-[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{12}';
|
|
select sleep(1);
|
|
select sleep(0);
|
|
select sleep('a');
|
|
show warnings;
|
|
-- error 1210
|
|
select sleep(-1);
|
|
SELECT INET_ATON('10.0.5.9');
|
|
SELECT INET_NTOA(167773449);
|
|
SELECT HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089'));
|
|
SELECT HEX(INET6_ATON('10.0.5.9'));
|
|
SELECT INET6_NTOA(INET6_ATON('fdfe::5a55:caff:fefa:9089'));
|
|
SELECT INET6_NTOA(INET6_ATON('10.0.5.9'));
|
|
SELECT INET6_NTOA(UNHEX('FDFE0000000000005A55CAFFFEFA9089'));
|
|
SELECT INET6_NTOA(UNHEX('0A000509'));
|
|
SELECT IS_IPV4('10.0.5.9'), IS_IPV4('10.0.5.256');
|
|
SELECT IS_IPV4_COMPAT(INET6_ATON('::10.0.5.9'));
|
|
SELECT IS_IPV4_COMPAT(INET6_ATON('::ffff:10.0.5.9'));
|
|
SELECT
|
|
IS_IPV4_COMPAT(INET6_ATON('::192.168.0.1')),
|
|
IS_IPV4_COMPAT(INET6_ATON('::c0a8:0001')),
|
|
IS_IPV4_COMPAT(INET6_ATON('::c0a8:1'));
|
|
SELECT IS_IPV4_MAPPED(INET6_ATON('::10.0.5.9'));
|
|
SELECT IS_IPV4_MAPPED(INET6_ATON('::ffff:10.0.5.9'));
|
|
SELECT
|
|
IS_IPV4_MAPPED(INET6_ATON('::ffff:192.168.0.1')),
|
|
IS_IPV4_MAPPED(INET6_ATON('::ffff:c0a8:0001')),
|
|
IS_IPV4_MAPPED(INET6_ATON('::ffff:c0a8:1'));
|
|
SELECT IS_IPV6('10.0.5.9'), IS_IPV6('::1');
|
|
drop table if exists t1;
|
|
create table t1(
|
|
a int,
|
|
b int not null,
|
|
c int not null default 0,
|
|
d int default 0,
|
|
unique key(b,c),
|
|
unique key(b,d)
|
|
);
|
|
insert into t1 (a,b) values(1,10),(1,20),(2,30),(2,40);
|
|
select any_value(a), sum(b) from t1;
|
|
select a,any_value(b),sum(c) from t1 group by a order by a;
|
|
SELECT GET_LOCK('test_lock1', 10);
|
|
SELECT GET_LOCK('test_lock2', 10);
|
|
SELECT IS_USED_LOCK('test_lock1') = CONNECTION_ID();
|
|
SELECT IS_USED_LOCK('foobar');
|
|
SELECT IS_FREE_LOCK('test_lock1');
|
|
SELECT IS_FREE_LOCK('foobar');
|
|
SELECT RELEASE_LOCK('test_lock2');
|
|
SELECT RELEASE_LOCK('test_lock1');
|
|
SELECT RELEASE_LOCK('test_lock3');
|
|
SELECT RELEASE_ALL_LOCKS();
|
|
|
|
# Issue #49566
|
|
drop table if exists t;
|
|
create table t (col bit(37) NOT NULL);
|
|
insert into t (col) values(x'05d3a46d88'), (x'04dba3570c'), (x'0ed284dfee'), (x'12657141bf');
|
|
select hex(col), hex(reverse(col)) from t order by reverse(col);
|
|
# Issue #50855
|
|
drop table if exists t2;
|
|
create table t2 (col bit(45) NOT NULL);
|
|
insert into t2 (col) values (x'09a1441d083c');
|
|
select hex(r) from (select REVERSE(col) as r from t2 group by REVERSE(col)) as t;
|
|
select hex(r) from (select distinct REVERSE(col) as r from t2) as t;
|
|
# Issue #50850
|
|
drop table if exists t3;
|
|
create table t3 (col1 double NOT NULL, col2 bit(8) NOT NULL);
|
|
insert into t3 (col1, col2) values (2306.9705216860984, x'31'), (6779.239615471537, x'65'), (7601.530447792593, x'd5'), (7058.842877388801, x'a5'), (615.6011553350702, x'34'), (5613.036187642952, x'01'), (7047.649466854864, x'a6'), (8632.659024782468, x'5d'), (9546.629394674586, x'ff'), (2972.7118048537704, x'b1');
|
|
select hex(r) as r0 from (select ELT(2, col1, col2) as r from t3 group by ELT(2, col1, col2)) as t order by r0;
|
|
select hex(r) as r0 from (select distinct ELT(2, col1, col2) as r from t3) as t order by r0;
|
|
drop table t, t2, t3;
|
|
|
|
# Issue #52420
|
|
SELECT MID('abc',2,1);
|
|
SELECT MID('abc',2);
|
|
|
|
# Issue #56451
|
|
-- error 1064
|
|
SELECT CURRENT_TIME(-1);
|
|
-- error 1426
|
|
SELECT CURRENT_TIME(2147483647);
|
|
-- error 1064
|
|
SELECT CURRENT_TIME(2147483648);
|
|
-- error 1064
|
|
SELECT CURRENT_TIMESTAMP(-1);
|
|
-- error 1426
|
|
SELECT CURRENT_TIMESTAMP(2147483647);
|
|
-- error 1064
|
|
SELECT CURRENT_TIMESTAMP(2147483648);
|
|
-- error 1064
|
|
SELECT CURTIME(-1);
|
|
-- error 1426
|
|
SELECT CURTIME(2147483647);
|
|
-- error 1064
|
|
SELECT CURTIME(2147483648);
|
|
-- error 1064
|
|
SELECT LOCALTIME(-1);
|
|
-- error 1426
|
|
SELECT LOCALTIME(2147483647);
|
|
-- error 1064
|
|
SELECT LOCALTIME(2147483648);
|
|
-- error 1064
|
|
SELECT LOCALTIMESTAMP(-1);
|
|
-- error 1426
|
|
SELECT LOCALTIMESTAMP(2147483647);
|
|
-- error 1064
|
|
SELECT LOCALTIMESTAMP(2147483648);
|
|
-- error 1064
|
|
SELECT NOW(-1);
|
|
-- error 1426
|
|
SELECT NOW(2147483647);
|
|
-- error 1064
|
|
SELECT NOW(2147483648);
|
|
-- error 1064
|
|
SELECT SYSDATE(-1);
|
|
-- error 1426
|
|
SELECT SYSDATE(2147483647);
|
|
-- error 1064
|
|
SELECT SYSDATE(2147483648);
|
|
-- error 1064
|
|
SELECT UTC_TIME(-1);
|
|
-- error 1426
|
|
SELECT UTC_TIME(2147483647);
|
|
-- error 1064
|
|
SELECT UTC_TIME(2147483648);
|
|
-- error 1064
|
|
SELECT UTC_TIMESTAMP(-1);
|
|
-- error 1426
|
|
SELECT UTC_TIMESTAMP(2147483647);
|
|
-- error 1064
|
|
SELECT UTC_TIMESTAMP(2147483648);
|
|
|
|
# Issue 59417
|
|
set sql_mode = 'NO_ZERO_IN_DATE';
|
|
select date(0), date('0000-00-00');
|
|
show warnings;
|
|
select date('0000-00-01'), date('0000-12-00'), date('2024-00-00');
|
|
show warnings;
|
|
select date('0000-12-01'), date('2024-00-01'), date('2024-12-00');
|
|
show warnings;
|
|
select date('2024-12-01');
|
|
show warnings;
|
|
drop table if exists t;
|
|
create table t(test_date DATETIME);
|
|
SET sql_mode = '';
|
|
INSERT INTO t VALUES (0),('0000-00-00'),('0000-00-01'),('0000-12-00'),('2024-00-00'),('0000-12-01'),('2024-00-01'),('2024-12-00'),('2024-12-01');
|
|
SET sql_mode = 'NO_ZERO_IN_DATE';
|
|
SELECT DATE(test_date) FROM t;
|
|
show warnings;
|
|
drop table if exists t;
|
|
|
|
# Issue 59420
|
|
SELECT GET_FORMAT(TIME, 'usa'), GET_FORMAT(TIME, 'USA'), GET_FORMAT(TIME, 'UsA'), GET_FORMAT(time, 'UsA'), GET_FORMAT(TIme, 'UsA');
|
|
SELECT GET_FORMAT(DATE, 'jis'),GET_FORMAT(DATETIME, 'iso'),GET_FORMAT(TIMESTAMP, 'eur'),GET_FORMAT(TIME, 'internal'); |