mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
d98dee2c3b
This test uses SHOW STATUS and the like, which may be unstable in the face of logging to table, since the CSV handler is actively executing operations and thus incrementing the counters. Fixed by disabling logging to table for the duration of the test and restoring it afterwards. This causes various counters to properly start counting from zero and never advance due to CSV operations.
242 lines
6.7 KiB
Text
242 lines
6.7 KiB
Text
set @old_concurrent_insert= @@global.concurrent_insert;
|
|
set @@global.concurrent_insert= 0;
|
|
SET @old_log_output = @@global.log_output;
|
|
SET GLOBAL LOG_OUTPUT = 'FILE';
|
|
flush status;
|
|
show status like 'Table_lock%';
|
|
Variable_name Value
|
|
Table_locks_immediate 0
|
|
Table_locks_waited 0
|
|
select * from information_schema.session_status where variable_name like 'Table_lock%';
|
|
VARIABLE_NAME VARIABLE_VALUE
|
|
TABLE_LOCKS_IMMEDIATE 0
|
|
TABLE_LOCKS_WAITED 0
|
|
# Switched to connection: con1
|
|
set sql_log_bin=0;
|
|
set @old_general_log = @@global.general_log;
|
|
set global general_log = 'OFF';
|
|
drop table if exists t1;
|
|
create table t1(n int) engine=myisam;
|
|
insert into t1 values(1);
|
|
select 1;
|
|
1
|
|
1
|
|
# Switched to connection: con2
|
|
lock tables t1 read;
|
|
unlock tables;
|
|
lock tables t1 read;
|
|
# Switched to connection: con1
|
|
update t1 set n = 3;
|
|
# Switched to connection: con2
|
|
unlock tables;
|
|
# Switched to connection: con1
|
|
show status like 'Table_locks_waited';
|
|
Variable_name Value
|
|
Table_locks_waited 1
|
|
drop table t1;
|
|
set global general_log = @old_general_log;
|
|
# Switched to connection: default
|
|
select 1;
|
|
1
|
|
1
|
|
show status like 'last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 0.000000
|
|
create table t1 (a int);
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
select * from t1 where a=6;
|
|
a
|
|
6
|
|
6
|
|
6
|
|
6
|
|
6
|
|
show status like 'last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 12.084449
|
|
show status like 'last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 12.084449
|
|
select 1;
|
|
1
|
|
1
|
|
show status like 'last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 0.000000
|
|
drop table t1;
|
|
FLUSH STATUS;
|
|
SHOW STATUS LIKE 'max_used_connections';
|
|
Variable_name Value
|
|
Max_used_connections 1
|
|
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
|
VARIABLE_NAME VARIABLE_VALUE
|
|
MAX_USED_CONNECTIONS 1
|
|
SET @save_thread_cache_size=@@thread_cache_size;
|
|
SET GLOBAL thread_cache_size=3;
|
|
SHOW STATUS LIKE 'max_used_connections';
|
|
Variable_name Value
|
|
Max_used_connections 3
|
|
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
|
VARIABLE_NAME VARIABLE_VALUE
|
|
MAX_USED_CONNECTIONS 3
|
|
FLUSH STATUS;
|
|
SHOW STATUS LIKE 'max_used_connections';
|
|
Variable_name Value
|
|
Max_used_connections 2
|
|
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
|
VARIABLE_NAME VARIABLE_VALUE
|
|
MAX_USED_CONNECTIONS 2
|
|
SHOW STATUS LIKE 'max_used_connections';
|
|
Variable_name Value
|
|
Max_used_connections 3
|
|
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
|
VARIABLE_NAME VARIABLE_VALUE
|
|
MAX_USED_CONNECTIONS 3
|
|
SHOW STATUS LIKE 'max_used_connections';
|
|
Variable_name Value
|
|
Max_used_connections 4
|
|
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME LIKE 'max_used_connections';
|
|
VARIABLE_NAME VARIABLE_VALUE
|
|
MAX_USED_CONNECTIONS 4
|
|
SET GLOBAL thread_cache_size=@save_thread_cache_size;
|
|
CREATE TABLE t1 ( a INT );
|
|
INSERT INTO t1 VALUES (1), (2);
|
|
SELECT a FROM t1 LIMIT 1;
|
|
a
|
|
1
|
|
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 2.402418
|
|
EXPLAIN SELECT a FROM t1;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
|
|
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 2.402418
|
|
SELECT a FROM t1 UNION SELECT a FROM t1 ORDER BY a;
|
|
a
|
|
1
|
|
2
|
|
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 0.000000
|
|
EXPLAIN SELECT a FROM t1 UNION SELECT a FROM t1 ORDER BY a;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
|
2 UNION t1 ALL NULL NULL NULL NULL 2
|
|
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL Using filesort
|
|
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 0.000000
|
|
SELECT a IN (SELECT a FROM t1) FROM t1 LIMIT 1;
|
|
a IN (SELECT a FROM t1)
|
|
1
|
|
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 0.000000
|
|
SELECT (SELECT a FROM t1 LIMIT 1) x FROM t1 LIMIT 1;
|
|
x
|
|
1
|
|
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 0.000000
|
|
SELECT * FROM t1 a, t1 b LIMIT 1;
|
|
a a
|
|
1 1
|
|
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
|
Variable_name Value
|
|
Last_query_cost 4.805836
|
|
DROP TABLE t1;
|
|
show status like 'com_show_status';
|
|
Variable_name Value
|
|
Com_show_status 3
|
|
show status like 'hand%write%';
|
|
Variable_name Value
|
|
Handler_write 0
|
|
show status like '%tmp%';
|
|
Variable_name Value
|
|
Created_tmp_disk_tables 0
|
|
Created_tmp_files 0
|
|
Created_tmp_tables 0
|
|
show status like 'hand%write%';
|
|
Variable_name Value
|
|
Handler_write 0
|
|
show status like '%tmp%';
|
|
Variable_name Value
|
|
Created_tmp_disk_tables 0
|
|
Created_tmp_files 0
|
|
Created_tmp_tables 0
|
|
show status like 'com_show_status';
|
|
Variable_name Value
|
|
Com_show_status 8
|
|
rnd_diff tmp_table_diff
|
|
20 8
|
|
flush status;
|
|
show status like 'Com%function';
|
|
Variable_name Value
|
|
Com_alter_function 0
|
|
Com_create_function 0
|
|
Com_drop_function 0
|
|
create function f1 (x INTEGER) returns integer
|
|
begin
|
|
declare ret integer;
|
|
set ret = x * 10;
|
|
return ret;
|
|
end //
|
|
drop function f1;
|
|
show status like 'Com%function';
|
|
Variable_name Value
|
|
Com_alter_function 0
|
|
Com_create_function 1
|
|
Com_drop_function 1
|
|
create database db37908;
|
|
create table db37908.t1(f1 int);
|
|
insert into db37908.t1 values(1);
|
|
grant usage,execute on test.* to mysqltest_1@localhost;
|
|
create procedure proc37908() begin select 1; end |
|
|
create function func37908() returns int sql security invoker
|
|
return (select * from db37908.t1 limit 1)|
|
|
select * from db37908.t1;
|
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
|
show status where variable_name ='uptime' and 2 in (select * from db37908.t1);
|
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
|
show procedure status where name ='proc37908' and 1 in (select f1 from db37908.t1);
|
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
|
show function status where name ='func37908' and 1 in (select func37908());
|
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
|
drop database db37908;
|
|
drop procedure proc37908;
|
|
drop function func37908;
|
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
|
|
DROP USER mysqltest_1@localhost;
|
|
DROP PROCEDURE IF EXISTS p1;
|
|
DROP FUNCTION IF EXISTS f1;
|
|
CREATE FUNCTION f1() RETURNS INTEGER
|
|
BEGIN
|
|
DECLARE foo INTEGER;
|
|
DECLARE bar INTEGER;
|
|
SET foo=1;
|
|
SET bar=2;
|
|
RETURN foo;
|
|
END $$
|
|
CREATE PROCEDURE p1()
|
|
BEGIN
|
|
SELECT 1;
|
|
END $$
|
|
SELECT f1();
|
|
f1()
|
|
1
|
|
CALL p1();
|
|
1
|
|
1
|
|
SELECT 9;
|
|
9
|
|
9
|
|
DROP PROCEDURE p1;
|
|
DROP FUNCTION f1;
|
|
set @@global.concurrent_insert= @old_concurrent_insert;
|
|
SET GLOBAL log_output = @old_log_output;
|