2000-12-28 02:56:38 +01:00
|
|
|
#
|
|
|
|
# Testing of misc functions
|
|
|
|
#
|
|
|
|
|
2007-08-16 15:47:31 +02:00
|
|
|
--disable_warnings
|
2007-11-30 19:17:11 +01:00
|
|
|
DROP TABLE IF EXISTS t1, t2;
|
2007-08-16 15:47:31 +02:00
|
|
|
--enable_warnings
|
|
|
|
|
2004-02-28 11:24:49 +01:00
|
|
|
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);
|
2000-12-28 02:56:38 +01:00
|
|
|
|
|
|
|
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);
|
2003-05-13 09:54:07 +02:00
|
|
|
|
2004-01-19 21:32:25 +01:00
|
|
|
select hex(inet_aton('127'));
|
|
|
|
select hex(inet_aton('127.1'));
|
|
|
|
select hex(inet_aton('127.1.1'));
|
|
|
|
|
2004-03-16 16:35:53 +01:00
|
|
|
select length(uuid()), charset(uuid()), length(unhex(replace(uuid(),_utf8'-',_utf8'')));
|
|
|
|
|
2007-04-27 00:12:09 +02:00
|
|
|
# As we can assume we are the only user for the mysqld server, the difference
|
|
|
|
# between two calls should be -1
|
2007-05-31 16:45:22 +02:00
|
|
|
set @a= uuid_short();
|
|
|
|
set @b= uuid_short();
|
|
|
|
select cast(@a - @b as signed);
|
2007-04-27 00:12:09 +02:00
|
|
|
|
2003-05-13 09:54:07 +02:00
|
|
|
#
|
|
|
|
# Test for core dump with nan
|
|
|
|
#
|
|
|
|
select length(format('nan', 2)) > 0;
|
2003-07-03 13:48:47 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# Test for bug #628
|
|
|
|
#
|
|
|
|
select concat("$",format(2500,2));
|
2005-02-04 07:14:22 +01:00
|
|
|
|
|
|
|
# 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;
|
|
|
|
|
2006-04-24 16:06:43 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# 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');
|
2006-05-06 16:24:41 +02:00
|
|
|
connection con1;
|
|
|
|
reap;
|
|
|
|
connection default;
|
2006-04-24 16:06:43 +02:00
|
|
|
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;
|
|
|
|
|
2006-08-24 02:02:31 +02:00
|
|
|
#
|
|
|
|
# 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
|
2006-08-24 02:24:59 +02:00
|
|
|
|
2005-07-28 16:09:54 +02:00
|
|
|
|
|
|
|
#
|
2005-05-17 20:31:26 +02:00
|
|
|
# Test for BUG#9535
|
2005-07-28 16:09:54 +02:00
|
|
|
#
|
2007-05-27 22:20:01 +02:00
|
|
|
--disable_warnings
|
2005-05-17 20:31:26 +02:00
|
|
|
create table t1 as select uuid(), length(uuid());
|
2007-05-27 22:20:01 +02:00
|
|
|
--enable_warnings
|
2005-05-17 20:31:26 +02:00
|
|
|
show create table t1;
|
|
|
|
drop table t1;
|
2005-08-12 03:58:22 +02:00
|
|
|
|
2006-08-24 02:24:59 +02:00
|
|
|
#
|
2005-08-12 03:58:22 +02:00
|
|
|
# Bug #6760: Add SLEEP() function
|
2006-08-24 02:24:59 +02:00
|
|
|
#
|
2005-08-12 03:58:22 +02:00
|
|
|
create table t1 (a timestamp default '2005-05-05 01:01:01',
|
|
|
|
b timestamp default '2005-05-05 01:01:01');
|
|
|
|
insert into t1 set a = now();
|
|
|
|
select sleep(3);
|
|
|
|
update t1 set b = now();
|
|
|
|
select timediff(b, a) >= '00:00:03' from t1;
|
|
|
|
drop table t1;
|
2005-08-20 00:51:40 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# Bug #12689: SLEEP() gets incorrectly cached/optimized-away
|
|
|
|
#
|
|
|
|
set global query_cache_size=1355776;
|
|
|
|
create table t1 (a int);
|
|
|
|
insert into t1 values (1),(1),(1);
|
|
|
|
create table t2 (a datetime default null, b datetime default null);
|
|
|
|
insert into t2 set a = now();
|
|
|
|
select a from t1 where sleep(1);
|
|
|
|
update t2 set b = now() where b is null;
|
|
|
|
insert into t2 set a = now();
|
|
|
|
select a from t1 where sleep(a);
|
|
|
|
update t2 set b = now() where b is null;
|
|
|
|
insert into t2 set a = now();
|
|
|
|
select a from t1 where sleep(1);
|
|
|
|
update t2 set b = now() where b is null;
|
|
|
|
select timediff(b, a) >= '00:00:03' from t2;
|
|
|
|
drop table t2;
|
|
|
|
drop table t1;
|
|
|
|
set global query_cache_size=default;
|
|
|
|
|
2006-09-25 20:58:10 +02:00
|
|
|
#
|
|
|
|
# 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;
|
2007-03-02 03:20:47 +01:00
|
|
|
|
|
|
|
#
|
|
|
|
# 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;
|
|
|
|
|
2007-09-28 18:05:23 +02:00
|
|
|
#
|
|
|
|
# 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);
|
2007-10-09 11:36:05 +02:00
|
|
|
SELECT NAME_CONST('test', -1);
|
2007-09-28 18:05:23 +02:00
|
|
|
SELECT NAME_CONST('test', 1.0);
|
2007-10-09 11:36:05 +02:00
|
|
|
SELECT NAME_CONST('test', -1.0);
|
2007-09-28 18:05:23 +02:00
|
|
|
SELECT NAME_CONST('test', 'test');
|
|
|
|
|
2007-12-08 08:36:58 +01:00
|
|
|
#
|
|
|
|
# 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);
|
|
|
|
|
2007-12-13 12:47:23 +01:00
|
|
|
--error ER_WRONG_ARGUMENTS
|
2007-12-08 08:36:58 +01:00
|
|
|
SELECT NAME_CONST(x,2) FROM (SELECT a x FROM t1) t;
|
|
|
|
|
|
|
|
DROP TABLE t1;
|
|
|
|
|
2007-09-28 18:05:23 +02:00
|
|
|
|
2007-11-27 06:36:43 +01:00
|
|
|
#
|
|
|
|
# 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;
|
2007-09-28 18:05:23 +02:00
|
|
|
|
2007-10-19 11:54:05 +02:00
|
|
|
#
|
|
|
|
# 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;
|
|
|
|
|
2006-08-24 02:24:59 +02:00
|
|
|
--echo End of 5.0 tests
|
2007-08-27 22:31:27 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# Bug #30389: connection_id() always return 0 in embedded server
|
|
|
|
#
|
|
|
|
|
|
|
|
select connection_id() > 0;
|
|
|
|
|
|
|
|
--echo End of tests
|