361 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			361 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | DROP TABLE IF EXISTS t1, t2; | ||
|  | select format(1.5555,0),format(123.5555,1),format(1234.5555,2),format(12345.55555,3),format(123456.5555,4),format(1234567.5555,5),format("12345.2399",2); | ||
|  | format(1.5555,0)	format(123.5555,1)	format(1234.5555,2)	format(12345.55555,3)	format(123456.5555,4)	format(1234567.5555,5)	format("12345.2399",2) | ||
|  | 2	123.6	1,234.56	12,345.556	123,456.5555	1,234,567.55550	12,345.24 | ||
|  | select inet_ntoa(inet_aton("255.255.255.255.255.255.255.255")); | ||
|  | inet_ntoa(inet_aton("255.255.255.255.255.255.255.255")) | ||
|  | NULL | ||
|  | select inet_aton("255.255.255.255.255"),inet_aton("255.255.1.255"),inet_aton("0.1.255"); | ||
|  | inet_aton("255.255.255.255.255")	inet_aton("255.255.1.255")	inet_aton("0.1.255") | ||
|  | 1099511627775	4294902271	65791 | ||
|  | select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511); | ||
|  | inet_ntoa(1099511627775)	inet_ntoa(4294902271)	inet_ntoa(511) | ||
|  | NULL	255.255.1.255	0.0.1.255 | ||
|  | select hex(inet_aton('127')); | ||
|  | hex(inet_aton('127')) | ||
|  | 7F | ||
|  | select hex(inet_aton('127.1')); | ||
|  | hex(inet_aton('127.1')) | ||
|  | 7F000001 | ||
|  | select hex(inet_aton('127.1.1')); | ||
|  | hex(inet_aton('127.1.1')) | ||
|  | 7F010001 | ||
|  | select length(uuid()), charset(uuid()), length(unhex(replace(uuid(),_utf8'-',_utf8''))); | ||
|  | length(uuid())	charset(uuid())	length(unhex(replace(uuid(),_utf8'-',_utf8''))) | ||
|  | 36	utf8	16 | ||
|  | set @a= uuid_short(); | ||
|  | set @b= uuid_short(); | ||
|  | select cast(@a - @b as signed); | ||
|  | cast(@a - @b as signed) | ||
|  | -1 | ||
|  | select length(format('nan', 2)) > 0; | ||
|  | length(format('nan', 2)) > 0 | ||
|  | 1 | ||
|  | Warnings: | ||
|  | Warning	1292	Truncated incorrect DOUBLE value: 'nan' | ||
|  | select concat("$",format(2500,2)); | ||
|  | concat("$",format(2500,2)) | ||
|  | $2,500.00 | ||
|  | create table t1 ( a timestamp ); | ||
|  | insert into t1 values ( '2004-01-06 12:34' ); | ||
|  | select a from t1 where left(a+0,6) in ( left(20040106,6) ); | ||
|  | a | ||
|  | 2004-01-06 12:34:00 | ||
|  | select a from t1 where left(a+0,6) = ( left(20040106,6) ); | ||
|  | a | ||
|  | 2004-01-06 12:34:00 | ||
|  | select a from t1 where right(a+0,6) in ( right(20040106123400,6) ); | ||
|  | a | ||
|  | 2004-01-06 12:34:00 | ||
|  | select a from t1 where right(a+0,6) = ( right(20040106123400,6) ); | ||
|  | a | ||
|  | 2004-01-06 12:34:00 | ||
|  | select a from t1 where mid(a+0,6,3) in ( mid(20040106123400,6,3) ); | ||
|  | a | ||
|  | 2004-01-06 12:34:00 | ||
|  | select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) ); | ||
|  | a | ||
|  | 2004-01-06 12:34:00 | ||
|  | drop table t1; | ||
|  | CREATE TABLE t1 (conn CHAR(7), connection_id INT); | ||
|  | INSERT INTO t1 VALUES ('default', CONNECTION_ID()); | ||
|  | SELECT GET_LOCK('bug16501',600); | ||
|  | GET_LOCK('bug16501',600) | ||
|  | 1 | ||
|  | INSERT INTO t1 VALUES ('con1', CONNECTION_ID()); | ||
|  | SELECT IS_USED_LOCK('bug16501') = connection_id | ||
|  | FROM t1 | ||
|  | WHERE conn = 'default'; | ||
|  | IS_USED_LOCK('bug16501') = connection_id | ||
|  | 1 | ||
|  | SELECT GET_LOCK('bug16501',600); | ||
|  | SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID(); | ||
|  | IS_USED_LOCK('bug16501') = CONNECTION_ID() | ||
|  | 1 | ||
|  | SELECT RELEASE_LOCK('bug16501'); | ||
|  | RELEASE_LOCK('bug16501') | ||
|  | 1 | ||
|  | GET_LOCK('bug16501',600) | ||
|  | 1 | ||
|  | SELECT IS_USED_LOCK('bug16501') = connection_id | ||
|  | FROM t1 | ||
|  | WHERE conn = 'con1'; | ||
|  | IS_USED_LOCK('bug16501') = connection_id | ||
|  | 1 | ||
|  | SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID(); | ||
|  | IS_USED_LOCK('bug16501') = CONNECTION_ID() | ||
|  | 1 | ||
|  | SELECT RELEASE_LOCK('bug16501'); | ||
|  | RELEASE_LOCK('bug16501') | ||
|  | 1 | ||
|  | SELECT IS_USED_LOCK('bug16501'); | ||
|  | IS_USED_LOCK('bug16501') | ||
|  | NULL | ||
|  | DROP TABLE t1; | ||
|  | select export_set(3, _latin1'foo', _utf8'bar', ',', 4); | ||
|  | export_set(3, _latin1'foo', _utf8'bar', ',', 4) | ||
|  | foo,foo,bar,bar | ||
|  | End of 4.1 tests | ||
|  | create table t1 as select uuid(), length(uuid()); | ||
|  | show create table t1; | ||
|  | Table	Create Table | ||
|  | t1	CREATE TABLE `t1` ( | ||
|  |   `uuid()` varchar(36) CHARACTER SET utf8 NOT NULL DEFAULT '', | ||
|  |   `length(uuid())` int(10) NOT NULL DEFAULT '0' | ||
|  | ) ENGINE=MyISAM DEFAULT CHARSET=latin1 | ||
|  | drop table t1; | ||
|  | #------------------------------------------------------------------------ | ||
|  | # Tests for Bug#6760 and Bug#12689 | ||
|  | SET @row_count = 4; | ||
|  | SET @sleep_time_per_result_row = 1; | ||
|  | SET @max_acceptable_delay = 2; | ||
|  | SET @@global.query_cache_size = 1024 * 64; | ||
|  | DROP TEMPORARY TABLE IF EXISTS t_history; | ||
|  | DROP TABLE IF EXISTS t1; | ||
|  | CREATE TEMPORARY TABLE t_history (attempt SMALLINT, | ||
|  | start_ts DATETIME, end_ts DATETIME, | ||
|  | start_cached INTEGER, end_cached INTEGER); | ||
|  | CREATE TABLE t1 (f1 BIGINT); | ||
|  | INSERT INTO t1 VALUES (1); | ||
|  | INSERT INTO t1 VALUES (1); | ||
|  | INSERT INTO t1 VALUES (1); | ||
|  | INSERT INTO t1 VALUES (1); | ||
|  | INSERT INTO t_history | ||
|  | SET attempt = 4 - 4 + 1, start_ts = NOW(), | ||
|  | start_cached = 0; | ||
|  | SELECT *, SLEEP(@sleep_time_per_result_row) FROM t1; | ||
|  | f1	SLEEP(@sleep_time_per_result_row) | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | UPDATE t_history SET end_ts = NOW() | ||
|  | WHERE attempt = 4 - 4 + 1; | ||
|  | UPDATE t_history SET end_cached = 0 | ||
|  | WHERE attempt = 4 - 4 + 1; | ||
|  | INSERT INTO t_history | ||
|  | SET attempt = 4 - 3 + 1, start_ts = NOW(), | ||
|  | start_cached = 0; | ||
|  | SELECT *, SLEEP(@sleep_time_per_result_row) FROM t1; | ||
|  | f1	SLEEP(@sleep_time_per_result_row) | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | UPDATE t_history SET end_ts = NOW() | ||
|  | WHERE attempt = 4 - 3 + 1; | ||
|  | UPDATE t_history SET end_cached = 0 | ||
|  | WHERE attempt = 4 - 3 + 1; | ||
|  | INSERT INTO t_history | ||
|  | SET attempt = 4 - 2 + 1, start_ts = NOW(), | ||
|  | start_cached = 0; | ||
|  | SELECT *, SLEEP(@sleep_time_per_result_row) FROM t1; | ||
|  | f1	SLEEP(@sleep_time_per_result_row) | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | UPDATE t_history SET end_ts = NOW() | ||
|  | WHERE attempt = 4 - 2 + 1; | ||
|  | UPDATE t_history SET end_cached = 0 | ||
|  | WHERE attempt = 4 - 2 + 1; | ||
|  | INSERT INTO t_history | ||
|  | SET attempt = 4 - 1 + 1, start_ts = NOW(), | ||
|  | start_cached = 0; | ||
|  | SELECT *, SLEEP(@sleep_time_per_result_row) FROM t1; | ||
|  | f1	SLEEP(@sleep_time_per_result_row) | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | 1	0 | ||
|  | UPDATE t_history SET end_ts = NOW() | ||
|  | WHERE attempt = 4 - 1 + 1; | ||
|  | UPDATE t_history SET end_cached = 0 | ||
|  | WHERE attempt = 4 - 1 + 1; | ||
|  | # Test 1: Does the query with SLEEP need a reasonable time? | ||
|  | SELECT COUNT(*) >= 4 - 1 INTO @aux1 FROM t_history | ||
|  | WHERE TIMEDIFF(end_ts,start_ts) - @sleep_time_per_result_row * @row_count | ||
|  | BETWEEN 0 AND @max_acceptable_delay; | ||
|  | SELECT @aux1 AS "Expect 1"; | ||
|  | Expect 1 | ||
|  | 1 | ||
|  | # Test 2: Does the query with SLEEP need a reasonable time even in case | ||
|  | #         of the non first execution? | ||
|  | SELECT COUNT(*) >= 4 - 1 - 1 INTO @aux2 FROM t_history | ||
|  | WHERE TIMEDIFF(end_ts,start_ts) - @sleep_time_per_result_row * @row_count | ||
|  | BETWEEN 0 AND @max_acceptable_delay | ||
|  | AND attempt > 1; | ||
|  | SELECT @aux2 AS "Expect 1"; | ||
|  | Expect 1 | ||
|  | 1 | ||
|  | # Test 3: The query with SLEEP must be not cached. | ||
|  | SELECT COUNT(*) = 4 INTO @aux3 FROM t_history | ||
|  | WHERE end_cached = start_cached; | ||
|  | SELECT @aux3 AS "Expect 1"; | ||
|  | Expect 1 | ||
|  | 1 | ||
|  | DROP TABLE t1; | ||
|  | DROP TEMPORARY TABLE t_history; | ||
|  | SET @@global.query_cache_size = default; | ||
|  | create table t1 select INET_ATON('255.255.0.1') as `a`; | ||
|  | show create table t1; | ||
|  | Table	Create Table | ||
|  | t1	CREATE TABLE `t1` ( | ||
|  |   `a` bigint(21) unsigned DEFAULT NULL | ||
|  | ) ENGINE=MyISAM DEFAULT CHARSET=latin1 | ||
|  | drop table t1; | ||
|  | drop table if exists table_26093; | ||
|  | drop function if exists func_26093_a; | ||
|  | drop function if exists func_26093_b; | ||
|  | create table table_26093(a int); | ||
|  | insert into table_26093 values | ||
|  | (1), (2), (3), (4), (5), | ||
|  | (6), (7), (8), (9), (10); | ||
|  | create function func_26093_a(x int) returns int | ||
|  | begin | ||
|  | set @invoked := @invoked + 1; | ||
|  | return x; | ||
|  | end// | ||
|  | create function func_26093_b(x int, y int) returns int | ||
|  | begin | ||
|  | set @invoked := @invoked + 1; | ||
|  | return x; | ||
|  | end// | ||
|  | select avg(a) from table_26093; | ||
|  | avg(a) | ||
|  | 5.5000 | ||
|  | select benchmark(100, (select avg(a) from table_26093)); | ||
|  | benchmark(100, (select avg(a) from table_26093)) | ||
|  | 0 | ||
|  | set @invoked := 0; | ||
|  | select benchmark(100, (select avg(func_26093_a(a)) from table_26093)); | ||
|  | benchmark(100, (select avg(func_26093_a(a)) from table_26093)) | ||
|  | 0 | ||
|  | select @invoked; | ||
|  | @invoked | ||
|  | 10 | ||
|  | set @invoked := 0; | ||
|  | select benchmark(100, (select avg(func_26093_b(a, rand())) from table_26093)); | ||
|  | benchmark(100, (select avg(func_26093_b(a, rand())) from table_26093)) | ||
|  | 0 | ||
|  | select @invoked; | ||
|  | @invoked | ||
|  | 1000 | ||
|  | select benchmark(100, (select (a) from table_26093)); | ||
|  | ERROR 21000: Subquery returns more than 1 row | ||
|  | select benchmark(100, (select 1, 1)); | ||
|  | ERROR 21000: Operand should contain 1 column(s) | ||
|  | drop table table_26093; | ||
|  | drop function func_26093_a; | ||
|  | drop function func_26093_b; | ||
|  | SELECT NAME_CONST('test', NOW()); | ||
|  | ERROR HY000: Incorrect arguments to NAME_CONST | ||
|  | SELECT NAME_CONST('test', UPPER('test')); | ||
|  | ERROR HY000: Incorrect arguments to NAME_CONST | ||
|  | SELECT NAME_CONST('test', NULL); | ||
|  | test | ||
|  | NULL | ||
|  | SELECT NAME_CONST('test', 1); | ||
|  | test | ||
|  | 1 | ||
|  | SELECT NAME_CONST('test', -1); | ||
|  | test | ||
|  | -1 | ||
|  | SELECT NAME_CONST('test', 1.0); | ||
|  | test | ||
|  | 1.0 | ||
|  | SELECT NAME_CONST('test', -1.0); | ||
|  | test | ||
|  | -1.0 | ||
|  | SELECT NAME_CONST('test', 'test'); | ||
|  | test | ||
|  | test | ||
|  | CREATE TABLE t1 (a INT); | ||
|  | INSERT INTO t1 VALUES (1),(2),(3); | ||
|  | SELECT NAME_CONST('flag',1)    * MAX(a) FROM t1; | ||
|  | NAME_CONST('flag',1)    * MAX(a) | ||
|  | 3 | ||
|  | SELECT NAME_CONST('flag',1.5)  * MAX(a) FROM t1; | ||
|  | NAME_CONST('flag',1.5)  * MAX(a) | ||
|  | 4.5 | ||
|  | SELECT NAME_CONST('flag',-1)   * MAX(a) FROM t1; | ||
|  | NAME_CONST('flag',-1)   * MAX(a) | ||
|  | -3 | ||
|  | SELECT NAME_CONST('flag',-1.5) * MAX(a) FROM t1; | ||
|  | NAME_CONST('flag',-1.5) * MAX(a) | ||
|  | -4.5 | ||
|  | SELECT NAME_CONST('flag', SQRT(4)) * MAX(a) FROM t1; | ||
|  | ERROR HY000: Incorrect arguments to NAME_CONST | ||
|  | SELECT NAME_CONST('flag',-SQRT(4)) * MAX(a) FROM t1; | ||
|  | ERROR HY000: Incorrect arguments to NAME_CONST | ||
|  | DROP TABLE t1; | ||
|  | CREATE TABLE t1 (a int); | ||
|  | INSERT INTO t1 VALUES (5), (2); | ||
|  | SELECT NAME_CONST(x,2) FROM (SELECT a x FROM t1) t; | ||
|  | ERROR HY000: Incorrect arguments to NAME_CONST | ||
|  | DROP TABLE t1; | ||
|  | CREATE TABLE t1(a INT); | ||
|  | INSERT INTO t1 VALUES (), (), (); | ||
|  | SELECT NAME_CONST(a, '1') FROM t1; | ||
|  | ERROR HY000: Incorrect arguments to NAME_CONST | ||
|  | SET INSERT_ID= NAME_CONST(a, a); | ||
|  | ERROR HY000: Incorrect arguments to NAME_CONST | ||
|  | DROP TABLE t1; | ||
|  | create table t1 (a int not null); | ||
|  | insert into t1 values (-1), (-2); | ||
|  | select min(a) from t1 group by inet_ntoa(a); | ||
|  | min(a) | ||
|  | -2 | ||
|  | drop table t1; | ||
|  | SELECT NAME_CONST('var', 'value') COLLATE latin1_general_cs; | ||
|  | NAME_CONST('var', 'value') COLLATE latin1_general_cs | ||
|  | value | ||
|  | select @@session.time_zone into @save_tz; | ||
|  | set @@session.time_zone='UTC'; | ||
|  | select uuid() into @my_uuid; | ||
|  | select mid(@my_uuid,15,1); | ||
|  | mid(@my_uuid,15,1) | ||
|  | 1 | ||
|  | select 24 * 60 * 60 * 1000 * 1000 * 10 into @my_uuid_one_day; | ||
|  | select concat('0',mid(@my_uuid,16,3),mid(@my_uuid,10,4),left(@my_uuid,8)) into @my_uuidate; | ||
|  | select floor(conv(@my_uuidate,16,10)/@my_uuid_one_day) into @my_uuid_date; | ||
|  | select 141427 + datediff(curdate(),'1970-01-01') into @my_uuid_synthetic; | ||
|  | select @my_uuid_date - @my_uuid_synthetic; | ||
|  | @my_uuid_date - @my_uuid_synthetic | ||
|  | 0 | ||
|  | set @@session.time_zone=@save_tz; | ||
|  | CREATE TABLE t1 (a DATE); | ||
|  | SELECT * FROM t1 WHERE a = NAME_CONST('reportDate', | ||
|  | _binary'2009-01-09' COLLATE 'binary'); | ||
|  | a | ||
|  | DROP TABLE t1; | ||
|  | select NAME_CONST('_id',1234) as id; | ||
|  | id | ||
|  | 1234 | ||
|  | End of 5.0 tests | ||
|  | select connection_id() > 0; | ||
|  | connection_id() > 0 | ||
|  | 1 | ||
|  | # | ||
|  | # Bug #54461: crash with longblob and union or update with subquery | ||
|  | # | ||
|  | CREATE TABLE t1 (a INT, b LONGBLOB); | ||
|  | INSERT INTO t1 VALUES (1, '2'), (2, '3'), (3, '2'); | ||
|  | SELECT DISTINCT LEAST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1; | ||
|  | LEAST(a, (SELECT b FROM t1 LIMIT 1)) | ||
|  | 1 | ||
|  | 2 | ||
|  | SELECT DISTINCT GREATEST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1; | ||
|  | GREATEST(a, (SELECT b FROM t1 LIMIT 1)) | ||
|  | 2 | ||
|  | 3 | ||
|  | 1 | ||
|  | DROP TABLE t1; | ||
|  | SELECT INET_NTOA(0); | ||
|  | INET_NTOA(0) | ||
|  | 0.0.0.0 | ||
|  | SELECT '1' IN ('1', INET_NTOA(0)); | ||
|  | '1' IN ('1', INET_NTOA(0)) | ||
|  | 1 | ||
|  | End of tests |