mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
b2c2656b62
Backporting patch committed for bug 18008907 to 5.5 and 5.6.
215 lines
6.9 KiB
Text
215 lines
6.9 KiB
Text
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
|
Warnings:
|
|
Warning 1286 Unknown storage engine 'EXAMPLE'
|
|
Warning 1266 Using storage engine MyISAM for table 't1'
|
|
DROP TABLE t1;
|
|
INSTALL PLUGIN example SONAME 'ha_example.so';
|
|
INSTALL PLUGIN EXAMPLE SONAME 'ha_example.so';
|
|
ERROR HY000: Function 'EXAMPLE' already exists
|
|
UNINSTALL PLUGIN example;
|
|
INSTALL PLUGIN example SONAME 'ha_example.so';
|
|
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
|
SELECT * FROM t1;
|
|
a
|
|
DROP TABLE t1;
|
|
set global example_ulong_var=500;
|
|
set global example_enum_var= e1;
|
|
show status like 'example%';
|
|
Variable_name Value
|
|
example_func_example enum_var is 0, ulong_var is 500, double_var is 8.500000, really
|
|
show variables like 'example%';
|
|
Variable_name Value
|
|
example_double_thdvar 8.500000
|
|
example_double_var 8.500000
|
|
example_enum_var e1
|
|
example_ulong_var 500
|
|
UNINSTALL PLUGIN example;
|
|
UNINSTALL PLUGIN EXAMPLE;
|
|
ERROR 42000: PLUGIN EXAMPLE does not exist
|
|
UNINSTALL PLUGIN non_exist;
|
|
ERROR 42000: PLUGIN non_exist does not exist
|
|
#
|
|
# Bug#32034: check_func_enum() does not check correct values but set it
|
|
# to impossible int val
|
|
#
|
|
INSTALL PLUGIN example SONAME 'ha_example.so';
|
|
SET GLOBAL example_enum_var= e1;
|
|
SET GLOBAL example_enum_var= e2;
|
|
SET GLOBAL example_enum_var= impossible;
|
|
ERROR 42000: Variable 'example_enum_var' can't be set to the value of 'impossible'
|
|
UNINSTALL PLUGIN example;
|
|
INSTALL PLUGIN example SONAME 'ha_example.so';
|
|
select @@session.sql_mode into @old_sql_mode;
|
|
set session sql_mode='';
|
|
set global example_ulong_var=500;
|
|
select @@global.example_ulong_var;
|
|
@@global.example_ulong_var
|
|
500
|
|
set global example_ulong_var=1111;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect example_ulong_var value: '1111'
|
|
select @@global.example_ulong_var;
|
|
@@global.example_ulong_var
|
|
1000
|
|
set session sql_mode='STRICT_ALL_TABLES';
|
|
set global example_ulong_var=500;
|
|
select @@global.example_ulong_var;
|
|
@@global.example_ulong_var
|
|
500
|
|
set global example_ulong_var=1111;
|
|
ERROR 42000: Variable 'example_ulong_var' can't be set to the value of '1111'
|
|
select @@global.example_ulong_var;
|
|
@@global.example_ulong_var
|
|
500
|
|
set session sql_mode=@old_sql_mode;
|
|
set session old=bla;
|
|
ERROR HY000: Variable 'old' is a read only variable
|
|
UNINSTALL PLUGIN example;
|
|
#
|
|
# Bug #16194302 SUPPORT FOR FLOATING-POINT SYSTEM
|
|
# VARIABLES USING THE PLUGIN INTERFACE.
|
|
#
|
|
INSTALL PLUGIN example SONAME 'ha_example.so';
|
|
SET GLOBAL example_double_var = -0.1;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect example_double_var value: '-0.1'
|
|
SELECT @@GLOBAL.example_double_var;
|
|
@@GLOBAL.example_double_var
|
|
0.500000
|
|
SET GLOBAL example_double_var = 0.000001;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect example_double_var value: '0.000001'
|
|
SELECT @@GLOBAL.example_double_var;
|
|
@@GLOBAL.example_double_var
|
|
0.500000
|
|
SET GLOBAL example_double_var = 0.4;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect example_double_var value: '0.4'
|
|
SELECT @@GLOBAL.example_double_var;
|
|
@@GLOBAL.example_double_var
|
|
0.500000
|
|
SET GLOBAL example_double_var = 123.456789;
|
|
SELECT @@GLOBAL.example_double_var;
|
|
@@GLOBAL.example_double_var
|
|
123.456789
|
|
SET GLOBAL example_double_var = 500;
|
|
SELECT @@GLOBAL.example_double_var;
|
|
@@GLOBAL.example_double_var
|
|
500.000000
|
|
SET GLOBAL example_double_var = 999.999999;
|
|
SELECT @@GLOBAL.example_double_var;
|
|
@@GLOBAL.example_double_var
|
|
999.999999
|
|
SET GLOBAL example_double_var = 1000.51;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect example_double_var value: '1000.51'
|
|
SELECT @@GLOBAL.example_double_var;
|
|
@@GLOBAL.example_double_var
|
|
1000.500000
|
|
SET SESSION example_double_thdvar = -0.1;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect example_double_thdvar value: '-0.1'
|
|
SELECT @@SESSION.example_double_thdvar;
|
|
@@SESSION.example_double_thdvar
|
|
0.500000
|
|
SET SESSION example_double_thdvar = 0.000001;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect example_double_thdvar value: '0.000001'
|
|
SELECT @@SESSION.example_double_thdvar;
|
|
@@SESSION.example_double_thdvar
|
|
0.500000
|
|
SET SESSION example_double_thdvar = 0.4;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect example_double_thdvar value: '0.4'
|
|
SELECT @@SESSION.example_double_thdvar;
|
|
@@SESSION.example_double_thdvar
|
|
0.500000
|
|
SET SESSION example_double_thdvar = 123.456789;
|
|
SELECT @@SESSION.example_double_thdvar;
|
|
@@SESSION.example_double_thdvar
|
|
123.456789
|
|
SET SESSION example_double_thdvar = 500;
|
|
SELECT @@SESSION.example_double_thdvar;
|
|
@@SESSION.example_double_thdvar
|
|
500.000000
|
|
SET SESSION example_double_thdvar = 999.999999;
|
|
SELECT @@SESSION.example_double_thdvar;
|
|
@@SESSION.example_double_thdvar
|
|
999.999999
|
|
SET SESSION example_double_thdvar = 1000.51;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect example_double_thdvar value: '1000.51'
|
|
SELECT @@SESSION.example_double_thdvar;
|
|
@@SESSION.example_double_thdvar
|
|
1000.500000
|
|
UNINSTALL PLUGIN example;
|
|
#
|
|
# BUG#18008907 - DEADLOCK BETWEEN MYSQL_CHANGE_USER(), SHOW VARIABLES AND INSTALL PLUGIN
|
|
#
|
|
CREATE PROCEDURE p_install()
|
|
BEGIN
|
|
INSTALL PLUGIN no_such_plugin SONAME 'no_such_object';
|
|
END
|
|
|
|
|
CREATE PROCEDURE p_show_vars()
|
|
BEGIN
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES;
|
|
END|
|
|
connect con1, localhost, root,,;
|
|
# Case 18008907_1: Deadlock situation cause by
|
|
# con1: has LOCK_system_variables_hash and waits on LOCK_plugin AND
|
|
# default: has LOCK_plugin and waits on LOCK_system_variables_hash.
|
|
#
|
|
SET DEBUG_SYNC='acquired_LOCK_system_variables_hash SIGNAL install_plugin WAIT_FOR cont_show_vars';
|
|
call p_show_vars();;
|
|
connection default;
|
|
SET DEBUG_SYNC='now WAIT_FOR install_plugin';
|
|
SET DEBUG_SYNC='acquired_LOCK_plugin SIGNAL cont_show_vars';
|
|
call p_install();;
|
|
connection con1;
|
|
COUNT(*)
|
|
#
|
|
SET DEBUG_SYNC='RESET';
|
|
connection default;
|
|
ERROR HY000: Can't open shared library
|
|
SET DEBUG_SYNC='RESET';
|
|
# Case 18008907_2: Deadlock situation caused by
|
|
# default: has LOCK_system_variables_hash and waits on LOCK_global_system_variables,
|
|
# con1: has LOCK_plugin and waits on LOCK_system_variables_hash AND
|
|
# con2: has LOCK_global_system_variables and waits on LOCK_plugin.
|
|
SET DEBUG_SYNC='acquired_LOCK_system_variables_hash SIGNAL install_plugin WAIT_FOR nothing TIMEOUT 10';
|
|
call p_show_vars();;
|
|
connection con1;
|
|
SET DEBUG_SYNC='now WAIT_FOR install_plugin';
|
|
SET DEBUG_SYNC='acquired_LOCK_plugin SIGNAL create_connection WAIT_FOR nothing TIMEOUT 10';
|
|
call p_install();;
|
|
connect con2, localhost, root,,;
|
|
SET DEBUG_SYNC='now WAIT_FOR create_connection';
|
|
connection con1;
|
|
ERROR HY000: Can't open shared library
|
|
connection default;
|
|
COUNT(*)
|
|
#
|
|
Warnings:
|
|
# 1639 debug sync point wait timed out
|
|
disconnect con2;
|
|
# Case 18008907_3: Testing Concurrent "Show Variables" and "Plugin Uninstall" operations.
|
|
INSTALL PLUGIN example SONAME 'ha_example.so';
|
|
connection con1;
|
|
SET DEBUG_SYNC='acquired_LOCK_system_variables_hash SIGNAL uninstall_plugin WAIT_FOR go';
|
|
call p_show_vars();;
|
|
connect con2, localhost, root,,;
|
|
SET DEBUG_SYNC='now WAIT_FOR uninstall_plugin';
|
|
UNINSTALL PLUGIN example;;
|
|
connection default;
|
|
SET DEBUG_SYNC='now SIGNAL go';
|
|
connection con1;
|
|
COUNT(*)
|
|
#
|
|
connection con2;
|
|
connection default;
|
|
DROP PROCEDURE p_show_vars;
|
|
DROP PROCEDURE p_install;
|
|
SET DEBUG_SYNC='RESET';
|
|
disconnect con1;
|
|
disconnect con2;
|