mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 14:54:20 +01:00
0855019e3a
mysql-test/r/func_misc.result: Move test that requires query cache from main.func_misc to main.query_cache. mysql-test/r/mysqltest.result: Fix test failure due to race. This test case creates > 300 connections in a tight loop, and depending on thread scheduling and load, even though each connection is immediately disconnected before connecting the next one, the server max connections may still be exceeded due to server not being able to free old connections as fast as new ones are made. mysql-test/r/query_cache.result: Move test that requires query cache from main.func_misc to main.query_cache. Move test that requires query cache from main.variables to main.query_cache. mysql-test/r/query_cache_notembedded.result: Move test that requires query cache from main.sp_notembedded to main.query_cache_notembedded. mysql-test/r/sp_notembedded.result: Move test that requires query cache from main.sp_notembedded to main.query_cache_notembedded. mysql-test/r/udf.result: Move test in main.udf that requires query cache to separate file. mysql-test/r/udf_query_cache.result: Move test in main.udf that requires query cache to separate file. mysql-test/r/variables.result: Move test that requires query cache from main.variables to main.query_cache. mysql-test/suite/funcs_1/datadict/processlist_val.inc: Fix race where result file may show state "cleaning up" in the small window between setting COMMAND to 'Sleep' and clearing STATE. mysql-test/suite/rpl/r/rpl_temporary.result: Fix race with suppression of warning message by fixing the test to not generate the warning message in the first place. Problem was a race between creating an anonymous account and resetting the slave. If the slave reset happens before replicating the account, the subsequest deletion of the account will fail to replicate correctly due to missing row. mysql-test/suite/rpl/t/rpl_temporary.test: Fix race with suppression of warning message by fixing the test to not generate the warning message in the first place. Problem was a race between creating an anonymous account and resetting the slave. If the slave reset happens before replicating the account, the subsequest deletion of the account will fail to replicate correctly due to missing row. mysql-test/t/func_misc.test: Move test that requires query cache from main.func_misc to main.query_cache. Move test that requires query cache from main.variables to main.query_cache. mysql-test/t/mysqltest.test: Fix test failure due to race. This test case creates > 300 connections in a tight loop, and depending on thread scheduling and load, even though each connection is immediately disconnected before connecting the next one, the server max connections may still be exceeded due to server not being able to free old connections as fast as new ones are made. mysql-test/t/query_cache.test: Move test that requires query cache to main.query_cache. mysql-test/t/query_cache_notembedded.test: Move test that requires query cache from main.sp_notembedded to main.query_cache_notembedded. mysql-test/t/sp_notembedded.test: Move test that requires query cache from main.sp_notembedded to main.query_cache_notembedded. mysql-test/t/udf.test: Move test in main.udf that requires query cache to separate file. mysql-test/t/udf_query_cache-master.opt: Move test in main.udf that requires query cache to separate file. mysql-test/t/udf_query_cache.test: Move test in main.udf that requires query cache to separate file. mysql-test/t/variables.test: Move test that requires query cache from main.variables to main.query_cache. tests/mysql_client_test.c: In tests that require query cache, skip the test if query cache not available. Do this dynamically rather than using HAVE_QUERY_CACHE, as there is no guarantee that the server we run against was compiled with same preprocessor #define as the mysql_client_test program (and since it is trivial to check dynamically).
282 lines
7 KiB
Text
282 lines
7 KiB
Text
#
|
|
# Testing of misc functions
|
|
#
|
|
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1, t2;
|
|
--enable_warnings
|
|
|
|
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);
|
|
|
|
select inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"));
|
|
select inet_aton("255.255.255.255.255"),inet_aton("255.255.1.255"),inet_aton("0.1.255");
|
|
select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511);
|
|
|
|
select hex(inet_aton('127'));
|
|
select hex(inet_aton('127.1'));
|
|
select hex(inet_aton('127.1.1'));
|
|
|
|
select length(uuid()), charset(uuid()), length(unhex(replace(uuid(),_utf8'-',_utf8'')));
|
|
|
|
# As we can assume we are the only user for the mysqld server, the difference
|
|
# between two calls should be -1
|
|
set @a= uuid_short();
|
|
set @b= uuid_short();
|
|
select cast(@a - @b as signed);
|
|
|
|
#
|
|
# Test for core dump with nan
|
|
#
|
|
select length(format('nan', 2)) > 0;
|
|
|
|
#
|
|
# Test for bug #628
|
|
#
|
|
select concat("$",format(2500,2));
|
|
|
|
# Test for BUG#7716
|
|
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) );
|
|
select a from t1 where left(a+0,6) = ( left(20040106,6) );
|
|
|
|
select a from t1 where right(a+0,6) in ( right(20040106123400,6) );
|
|
select a from t1 where right(a+0,6) = ( right(20040106123400,6) );
|
|
|
|
select a from t1 where mid(a+0,6,3) in ( mid(20040106123400,6,3) );
|
|
select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) );
|
|
|
|
drop table t1;
|
|
|
|
|
|
#
|
|
# Bug#16501: IS_USED_LOCK does not appear to work
|
|
#
|
|
|
|
CREATE TABLE t1 (conn CHAR(7), connection_id INT);
|
|
INSERT INTO t1 VALUES ('default', CONNECTION_ID());
|
|
|
|
SELECT GET_LOCK('bug16501',600);
|
|
|
|
connect (con1,localhost,root,,);
|
|
INSERT INTO t1 VALUES ('con1', CONNECTION_ID());
|
|
SELECT IS_USED_LOCK('bug16501') = connection_id
|
|
FROM t1
|
|
WHERE conn = 'default';
|
|
send SELECT GET_LOCK('bug16501',600);
|
|
|
|
connection default;
|
|
SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID();
|
|
SELECT RELEASE_LOCK('bug16501');
|
|
connection con1;
|
|
reap;
|
|
connection default;
|
|
SELECT IS_USED_LOCK('bug16501') = connection_id
|
|
FROM t1
|
|
WHERE conn = 'con1';
|
|
|
|
connection con1;
|
|
SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID();
|
|
SELECT RELEASE_LOCK('bug16501');
|
|
SELECT IS_USED_LOCK('bug16501');
|
|
|
|
disconnect con1;
|
|
connection default;
|
|
|
|
DROP TABLE t1;
|
|
|
|
#
|
|
# Bug #21531: EXPORT_SET() doesn't accept args with coercible character sets
|
|
#
|
|
select export_set(3, _latin1'foo', _utf8'bar', ',', 4);
|
|
|
|
--echo End of 4.1 tests
|
|
|
|
|
|
#
|
|
# Test for BUG#9535
|
|
#
|
|
--disable_warnings
|
|
create table t1 as select uuid(), length(uuid());
|
|
--enable_warnings
|
|
show create table t1;
|
|
drop table t1;
|
|
|
|
#
|
|
# Bug #21466: INET_ATON() returns signed, not unsigned
|
|
#
|
|
|
|
create table t1 select INET_ATON('255.255.0.1') as `a`;
|
|
show create table t1;
|
|
drop table t1;
|
|
|
|
#
|
|
# Bug#26093 (SELECT BENCHMARK() for SELECT statements does not produce
|
|
# valid results)
|
|
#
|
|
|
|
--disable_warnings
|
|
drop table if exists table_26093;
|
|
drop function if exists func_26093_a;
|
|
drop function if exists func_26093_b;
|
|
--enable_warnings
|
|
|
|
create table table_26093(a int);
|
|
insert into table_26093 values
|
|
(1), (2), (3), (4), (5),
|
|
(6), (7), (8), (9), (10);
|
|
|
|
delimiter //;
|
|
|
|
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//
|
|
|
|
delimiter ;//
|
|
|
|
select avg(a) from table_26093;
|
|
|
|
select benchmark(100, (select avg(a) from table_26093));
|
|
|
|
set @invoked := 0;
|
|
select benchmark(100, (select avg(func_26093_a(a)) from table_26093));
|
|
# Returns only 10, since intermediate results are cached.
|
|
select @invoked;
|
|
|
|
set @invoked := 0;
|
|
select benchmark(100, (select avg(func_26093_b(a, rand())) from table_26093));
|
|
# Returns 1000, due to rand() preventing caching.
|
|
select @invoked;
|
|
|
|
--error ER_SUBQUERY_NO_1_ROW
|
|
select benchmark(100, (select (a) from table_26093));
|
|
|
|
--error ER_OPERAND_COLUMNS
|
|
select benchmark(100, (select 1, 1));
|
|
|
|
drop table table_26093;
|
|
drop function func_26093_a;
|
|
drop function func_26093_b;
|
|
|
|
#
|
|
# Bug #30832: Assertion + crash with select name_const('test',now());
|
|
#
|
|
--error ER_WRONG_ARGUMENTS
|
|
SELECT NAME_CONST('test', NOW());
|
|
--error ER_WRONG_ARGUMENTS
|
|
SELECT NAME_CONST('test', UPPER('test'));
|
|
|
|
SELECT NAME_CONST('test', NULL);
|
|
SELECT NAME_CONST('test', 1);
|
|
SELECT NAME_CONST('test', -1);
|
|
SELECT NAME_CONST('test', 1.0);
|
|
SELECT NAME_CONST('test', -1.0);
|
|
SELECT NAME_CONST('test', 'test');
|
|
|
|
#
|
|
# Bug #34749: Server crash when using NAME_CONST() with an aggregate function
|
|
#
|
|
|
|
CREATE TABLE t1 (a INT);
|
|
INSERT INTO t1 VALUES (1),(2),(3);
|
|
# NAME_CONST() + aggregate.
|
|
SELECT NAME_CONST('flag',1) * MAX(a) FROM t1;
|
|
SELECT NAME_CONST('flag',1.5) * MAX(a) FROM t1;
|
|
# Now, wrap the INT_ITEM in Item_func_neg and watch the pretty explosions
|
|
SELECT NAME_CONST('flag',-1) * MAX(a) FROM t1;
|
|
SELECT NAME_CONST('flag',-1.5) * MAX(a) FROM t1;
|
|
--error ER_WRONG_ARGUMENTS
|
|
SELECT NAME_CONST('flag', SQRT(4)) * MAX(a) FROM t1;
|
|
--error ER_WRONG_ARGUMENTS
|
|
SELECT NAME_CONST('flag',-SQRT(4)) * MAX(a) FROM t1;
|
|
DROP TABLE t1;
|
|
|
|
#
|
|
# Bug #27545: erroneous usage of NAME_CONST with a name as the first parameter
|
|
# resolved against a column name of a derived table hangs the client
|
|
#
|
|
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 VALUES (5), (2);
|
|
|
|
--error ER_WRONG_ARGUMENTS
|
|
SELECT NAME_CONST(x,2) FROM (SELECT a x FROM t1) t;
|
|
|
|
DROP TABLE t1;
|
|
|
|
|
|
#
|
|
# Bug #32559: connection hangs on query with name_const
|
|
#
|
|
CREATE TABLE t1(a INT);
|
|
INSERT INTO t1 VALUES (), (), ();
|
|
--error ER_WRONG_ARGUMENTS
|
|
SELECT NAME_CONST(a, '1') FROM t1;
|
|
--error ER_WRONG_ARGUMENTS
|
|
SET INSERT_ID= NAME_CONST(a, a);
|
|
DROP TABLE t1;
|
|
|
|
#
|
|
# Bug #31349: ERROR 1062 (23000): Duplicate entry '' for key 'group_key'
|
|
#
|
|
create table t1 (a int not null);
|
|
insert into t1 values (-1), (-2);
|
|
select min(a) from t1 group by inet_ntoa(a);
|
|
drop table t1;
|
|
|
|
#
|
|
# BUG#34289 - Incorrect NAME_CONST substitution in stored procedures breaks
|
|
# replication
|
|
#
|
|
SELECT NAME_CONST('var', 'value') COLLATE latin1_general_cs;
|
|
|
|
#
|
|
# Bug #35848: UUID() returns UUIDs with the wrong time
|
|
#
|
|
select @@session.time_zone into @save_tz;
|
|
|
|
# make sure all times are UTC so the DayNr won't differ
|
|
set @@session.time_zone='UTC';
|
|
select uuid() into @my_uuid;
|
|
# if version nibble isn't 1, the following calculations will be rubbish
|
|
select mid(@my_uuid,15,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;
|
|
# these should be identical; date part of UUID should be current date
|
|
select @my_uuid_date - @my_uuid_synthetic;
|
|
|
|
set @@session.time_zone=@save_tz;
|
|
|
|
|
|
#
|
|
# Bug#42014: Crash, name_const with collate
|
|
#
|
|
CREATE TABLE t1 (a DATE);
|
|
SELECT * FROM t1 WHERE a = NAME_CONST('reportDate',
|
|
_binary'2009-01-09' COLLATE 'binary');
|
|
DROP TABLE t1;
|
|
|
|
#
|
|
# Bug#35515: Aliases of variables in binary log are ignored with NAME_CONST
|
|
#
|
|
select NAME_CONST('_id',1234) as id;
|
|
|
|
--echo End of 5.0 tests
|
|
|
|
#
|
|
# Bug #30389: connection_id() always return 0 in embedded server
|
|
#
|
|
|
|
select connection_id() > 0;
|
|
|
|
--echo End of tests
|