mariadb/mysql-test/t/plugin.test

268 lines
7.3 KiB
Text
Raw Normal View History

--source include/not_windows_embedded.inc
--source include/have_example_plugin.inc
--error ER_UNKNOWN_STORAGE_ENGINE
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
2013-01-09 17:29:51 +01:00
INSTALL PLUGIN example SONAME 'ha_example';
--replace_regex /\.dll/.so/
--error ER_PLUGIN_INSTALLED
2013-01-09 17:29:51 +01:00
INSTALL PLUGIN EXAMPLE SONAME 'ha_example';
UNINSTALL PLUGIN example;
2013-01-09 17:29:51 +01:00
INSTALL SONAME 'ha_example';
2012-03-05 21:48:06 +01:00
--replace_column 5 #
--replace_regex /\.dll/.so/
2012-03-05 21:48:06 +01:00
--query_vertical select * from information_schema.plugins where plugin_library like 'ha_example%'
CREATE TABLE t1 (a int) ENGINE=EXAMPLE;
CREATE TABLE t2 (a int) ENGINE=EXAMPLE;
FLUSH TABLES;
# Let's do some advanced ops with the example engine :)
SELECT * FROM t1;
2010-03-03 15:44:14 +01:00
# a couple of tests for variables
set global example_ulong_var=500;
set global example_enum_var= e1;
set session example_int_var= -1;
2010-03-03 15:44:14 +01:00
show status like 'example%';
show variables like 'example%';
select @@session.example_int_var;
2013-01-09 17:29:51 +01:00
UNINSTALL SONAME 'ha_example';
# the engine is NOT uninstalled yet,
# because the table `t1` is open, sitting in the table defintion cache
2012-03-05 21:48:06 +01:00
--replace_column 5 #
--replace_regex /\.dll/.so/
--query_vertical select * from information_schema.plugins where plugin_library like 'ha_example%'
DROP TABLE t1;
# now the engine IS unloaded
# and the table `t2` belongs to an unknown engine
--replace_column 5 #
--replace_regex /\.dll/.so/
--query_vertical select * from information_schema.plugins where plugin_library like 'ha_example%'
--error ER_UNKNOWN_STORAGE_ENGINE
SELECT * FROM t2;
DROP TABLE t2;
--error 1305
UNINSTALL PLUGIN EXAMPLE;
--error 1305
UNINSTALL PLUGIN non_exist;
2013-01-09 17:29:51 +01:00
#
# MDEV-3985 crash: uninstall soname 'a'
#
--replace_regex /\.dll/.so/
--error 1305
UNINSTALL SONAME 'non_exist';
--echo #
--echo # Bug#32034: check_func_enum() does not check correct values but set it
--echo # to impossible int val
--echo #
2013-01-09 17:29:51 +01:00
INSTALL PLUGIN example SONAME 'ha_example';
SET GLOBAL example_enum_var= e1;
SET GLOBAL example_enum_var= e2;
--error 1231
SET GLOBAL example_enum_var= impossible;
UNINSTALL PLUGIN example;
2008-02-24 14:12:17 +01:00
#
# Bug #32757 hang with sql_mode set when setting some global variables
#
2013-01-09 17:29:51 +01:00
INSTALL PLUGIN example SONAME 'ha_example';
2008-02-24 14:12:17 +01:00
select @@session.sql_mode into @old_sql_mode;
# first, try normal sql_mode (no error, send OK)
set session sql_mode='';
set global example_ulong_var=500;
select @@global.example_ulong_var;
# overflow -- correct value, but throw warning
set global example_ulong_var=1111;
select @@global.example_ulong_var;
# now, try STRICT (error occurrs, no message is sent, so send default)
set session sql_mode='STRICT_ALL_TABLES';
set global example_ulong_var=500;
select @@global.example_ulong_var;
# overflow -- throw warning, do NOT change value
--error ER_WRONG_VALUE_FOR_VAR
set global example_ulong_var=1111;
select @@global.example_ulong_var;
set session sql_mode=@old_sql_mode;
# finally, show that conditions that already raised an error are not
# adversely affected (error was already sent, do nothing)
--error ER_WRONG_VALUE_FOR_VAR
2008-02-24 14:12:17 +01:00
set session old=bla;
MWL#43 CREATE TABLE options (by Sanja) Docs/sp-imp-spec.txt: New sql_mode added. include/my_base.h: Flag in frm of create options. libmysqld/CMakeLists.txt: New files added. libmysqld/Makefile.am: New files added. mysql-test/r/events_bugs.result: New sql_mode added. mysql-test/r/information_schema.result: New sql_mode added. mysql-test/r/sp.result: New sql_mode added. mysql-test/r/system_mysql_db.result: New sql_mode added. mysql-test/suite/funcs_1/r/is_columns_mysql.result: New sql_mode added. mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result: New sql_mode added. mysql-test/t/events_bugs.test: New sql_mode added. mysql-test/t/sp.test: New sql_mode added. scripts/mysql_system_tables.sql: New sql_mode added. scripts/mysql_system_tables_fix.sql: New sql_mode added. sql/CMakeLists.txt: New files added. sql/Makefile.am: New files added. sql/event_db_repository.cc: New sql_mode added. sql/field.cc: Create options support added. sql/field.h: Create options support added. sql/ha_partition.cc: Create options support added. sql/handler.cc: Create options support added. sql/handler.h: Create options support added. sql/log_event.h: New sql_mode added. sql/mysql_priv.h: New sql_mode added. sql/mysqld.cc: New sql_mode added. sql/share/errmsg.txt: New error messages added. sql/sp.cc: New sql_mode added. sql/sp_head.cc: Create options support added. sql/sql_class.cc: Create options support added. Debug added. sql/sql_class.h: Create options support added. sql/sql_insert.cc: my_safe_a* moved to mysqld_priv.h sql/sql_lex.h: Create options support added. sql/sql_parse.cc: Create options support added. sql/sql_show.cc: Create options support added. sql/sql_table.cc: Create options support added. sql/sql_view.cc: New sql_mode added. sql/sql_yacc.yy: Create options support added. sql/structs.h: Create options support added. sql/table.cc: Create options support added. sql/table.h: Create options support added. sql/unireg.cc: Create options support added. storage/example/ha_example.cc: Create options example. storage/example/ha_example.h: Create options example. storage/pbxt/src/discover_xt.cc: Create options support added.
2010-04-08 14:10:05 +02:00
###############################################################
# engine-specific clauses in the CREATE TABLE:
--echo #legal values
CREATE TABLE t1 ( a int complex='c,f,f,f' ) ENGINE=example ULL=10000 STR='dskj' one_or_two='one' YESNO=0;
show create table t1;
drop table t1;
SET @OLD_SQL_MODE=@@SQL_MODE;
SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS';
--echo #illegal value fixed
CREATE TABLE t1 (a int, b int) ENGINE=example ULL=10000000000000000000 one_or_two='ttt' YESNO=SSS;
MWL#43 CREATE TABLE options (by Sanja) Docs/sp-imp-spec.txt: New sql_mode added. include/my_base.h: Flag in frm of create options. libmysqld/CMakeLists.txt: New files added. libmysqld/Makefile.am: New files added. mysql-test/r/events_bugs.result: New sql_mode added. mysql-test/r/information_schema.result: New sql_mode added. mysql-test/r/sp.result: New sql_mode added. mysql-test/r/system_mysql_db.result: New sql_mode added. mysql-test/suite/funcs_1/r/is_columns_mysql.result: New sql_mode added. mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result: New sql_mode added. mysql-test/t/events_bugs.test: New sql_mode added. mysql-test/t/sp.test: New sql_mode added. scripts/mysql_system_tables.sql: New sql_mode added. scripts/mysql_system_tables_fix.sql: New sql_mode added. sql/CMakeLists.txt: New files added. sql/Makefile.am: New files added. sql/event_db_repository.cc: New sql_mode added. sql/field.cc: Create options support added. sql/field.h: Create options support added. sql/ha_partition.cc: Create options support added. sql/handler.cc: Create options support added. sql/handler.h: Create options support added. sql/log_event.h: New sql_mode added. sql/mysql_priv.h: New sql_mode added. sql/mysqld.cc: New sql_mode added. sql/share/errmsg.txt: New error messages added. sql/sp.cc: New sql_mode added. sql/sp_head.cc: Create options support added. sql/sql_class.cc: Create options support added. Debug added. sql/sql_class.h: Create options support added. sql/sql_insert.cc: my_safe_a* moved to mysqld_priv.h sql/sql_lex.h: Create options support added. sql/sql_parse.cc: Create options support added. sql/sql_show.cc: Create options support added. sql/sql_table.cc: Create options support added. sql/sql_view.cc: New sql_mode added. sql/sql_yacc.yy: Create options support added. sql/structs.h: Create options support added. sql/table.cc: Create options support added. sql/table.h: Create options support added. sql/unireg.cc: Create options support added. storage/example/ha_example.cc: Create options example. storage/example/ha_example.h: Create options example. storage/pbxt/src/discover_xt.cc: Create options support added.
2010-04-08 14:10:05 +02:00
show create table t1;
--echo #alter table
alter table t1 ULL=10000000;
show create table t1;
alter table t1 change a a int complex='c,c,c';
show create table t1;
alter table t1 one_or_two=two;
show create table t1;
MWL#43 CREATE TABLE options (by Sanja) Docs/sp-imp-spec.txt: New sql_mode added. include/my_base.h: Flag in frm of create options. libmysqld/CMakeLists.txt: New files added. libmysqld/Makefile.am: New files added. mysql-test/r/events_bugs.result: New sql_mode added. mysql-test/r/information_schema.result: New sql_mode added. mysql-test/r/sp.result: New sql_mode added. mysql-test/r/system_mysql_db.result: New sql_mode added. mysql-test/suite/funcs_1/r/is_columns_mysql.result: New sql_mode added. mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result: New sql_mode added. mysql-test/t/events_bugs.test: New sql_mode added. mysql-test/t/sp.test: New sql_mode added. scripts/mysql_system_tables.sql: New sql_mode added. scripts/mysql_system_tables_fix.sql: New sql_mode added. sql/CMakeLists.txt: New files added. sql/Makefile.am: New files added. sql/event_db_repository.cc: New sql_mode added. sql/field.cc: Create options support added. sql/field.h: Create options support added. sql/ha_partition.cc: Create options support added. sql/handler.cc: Create options support added. sql/handler.h: Create options support added. sql/log_event.h: New sql_mode added. sql/mysql_priv.h: New sql_mode added. sql/mysqld.cc: New sql_mode added. sql/share/errmsg.txt: New error messages added. sql/sp.cc: New sql_mode added. sql/sp_head.cc: Create options support added. sql/sql_class.cc: Create options support added. Debug added. sql/sql_class.h: Create options support added. sql/sql_insert.cc: my_safe_a* moved to mysqld_priv.h sql/sql_lex.h: Create options support added. sql/sql_parse.cc: Create options support added. sql/sql_show.cc: Create options support added. sql/sql_table.cc: Create options support added. sql/sql_view.cc: New sql_mode added. sql/sql_yacc.yy: Create options support added. sql/structs.h: Create options support added. sql/table.cc: Create options support added. sql/table.h: Create options support added. sql/unireg.cc: Create options support added. storage/example/ha_example.cc: Create options example. storage/example/ha_example.h: Create options example. storage/pbxt/src/discover_xt.cc: Create options support added.
2010-04-08 14:10:05 +02:00
drop table t1;
--echo #illegal value error
SET SQL_MODE='';
--error ER_BAD_OPTION_VALUE
CREATE TABLE t1 (a int) ENGINE=example ULL=10000000000000000000 one_or_two='ttt' YESNO=SSS;
--error ER_PARSE_ERROR
CREATE TABLE t1 (a int) ENGINE=example ULL=10.00;
--error ER_PARSE_ERROR
CREATE TABLE t1 (a int) ENGINE=example ULL=1e2;
CREATE TABLE t1 (a int) ENGINE=example ULL=0x1234;
SHOW CREATE TABLE t1;
SET example_varopt_default=33; # does not affect varopt of t1
select create_options from information_schema.tables where table_schema='test' and table_name='t1';
ALTER TABLE t1 ULL=DEFAULT;
SHOW CREATE TABLE t1;
DROP TABLE t1;
create table t1 (a int) engine=example; # varopt is 10
show create table t1;
drop table t1;
create table t1 (a int) engine=example varopt=15;
show create table t1;
alter table t1 varopt=default;
show create table t1;
drop table t1;
MWL#43 CREATE TABLE options (by Sanja) Docs/sp-imp-spec.txt: New sql_mode added. include/my_base.h: Flag in frm of create options. libmysqld/CMakeLists.txt: New files added. libmysqld/Makefile.am: New files added. mysql-test/r/events_bugs.result: New sql_mode added. mysql-test/r/information_schema.result: New sql_mode added. mysql-test/r/sp.result: New sql_mode added. mysql-test/r/system_mysql_db.result: New sql_mode added. mysql-test/suite/funcs_1/r/is_columns_mysql.result: New sql_mode added. mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result: New sql_mode added. mysql-test/t/events_bugs.test: New sql_mode added. mysql-test/t/sp.test: New sql_mode added. scripts/mysql_system_tables.sql: New sql_mode added. scripts/mysql_system_tables_fix.sql: New sql_mode added. sql/CMakeLists.txt: New files added. sql/Makefile.am: New files added. sql/event_db_repository.cc: New sql_mode added. sql/field.cc: Create options support added. sql/field.h: Create options support added. sql/ha_partition.cc: Create options support added. sql/handler.cc: Create options support added. sql/handler.h: Create options support added. sql/log_event.h: New sql_mode added. sql/mysql_priv.h: New sql_mode added. sql/mysqld.cc: New sql_mode added. sql/share/errmsg.txt: New error messages added. sql/sp.cc: New sql_mode added. sql/sp_head.cc: Create options support added. sql/sql_class.cc: Create options support added. Debug added. sql/sql_class.h: Create options support added. sql/sql_insert.cc: my_safe_a* moved to mysqld_priv.h sql/sql_lex.h: Create options support added. sql/sql_parse.cc: Create options support added. sql/sql_show.cc: Create options support added. sql/sql_table.cc: Create options support added. sql/sql_view.cc: New sql_mode added. sql/sql_yacc.yy: Create options support added. sql/structs.h: Create options support added. sql/table.cc: Create options support added. sql/table.h: Create options support added. sql/unireg.cc: Create options support added. storage/example/ha_example.cc: Create options example. storage/example/ha_example.h: Create options example. storage/pbxt/src/discover_xt.cc: Create options support added.
2010-04-08 14:10:05 +02:00
SET @@SQL_MODE=@OLD_SQL_MODE;
#
# The only preparable statement above was CREATE TABLE.
# We need to prepare another statement here to force the
# previous one to be deallocated (mysqltest reuses the same handle)
# and to unlock all thread-local plugin locks. Otherwise the plugin won't
# uninstall.
#
select 1;
2008-02-24 14:12:17 +01:00
UNINSTALL PLUGIN example;
--echo #
--echo # Bug #16194302 SUPPORT FOR FLOATING-POINT SYSTEM
--echo # VARIABLES USING THE PLUGIN INTERFACE.
--echo #
--replace_regex /\.dll/.so/
2013-09-06 22:31:30 +02:00
eval INSTALL PLUGIN example SONAME 'ha_example';
SET GLOBAL example_double_var = -0.1;
SELECT @@GLOBAL.example_double_var;
SET GLOBAL example_double_var = 0.000001;
SELECT @@GLOBAL.example_double_var;
SET GLOBAL example_double_var = 0.4;
SELECT @@GLOBAL.example_double_var;
SET GLOBAL example_double_var = 123.456789;
SELECT @@GLOBAL.example_double_var;
SET GLOBAL example_double_var = 500;
SELECT @@GLOBAL.example_double_var;
SET GLOBAL example_double_var = 999.999999;
SELECT @@GLOBAL.example_double_var;
SET GLOBAL example_double_var = 1000.51;
SELECT @@GLOBAL.example_double_var;
SET SESSION example_double_thdvar = -0.1;
SELECT @@SESSION.example_double_thdvar;
SET SESSION example_double_thdvar = 0.000001;
SELECT @@SESSION.example_double_thdvar;
SET SESSION example_double_thdvar = 0.4;
SELECT @@SESSION.example_double_thdvar;
SET SESSION example_double_thdvar = 123.456789;
SELECT @@SESSION.example_double_thdvar;
SET SESSION example_double_thdvar = 500;
SELECT @@SESSION.example_double_thdvar;
SET SESSION example_double_thdvar = 999.999999;
SELECT @@SESSION.example_double_thdvar;
SET SESSION example_double_thdvar = 1000.51;
SELECT @@SESSION.example_double_thdvar;
UNINSTALL PLUGIN example;
2013-09-06 22:31:30 +02:00
#
# MDEV-4573 UNINSTALL PLUGIN misleading error message for non-dynamic plugins
#
--error ER_PLUGIN_DELETE_BUILTIN
UNINSTALL PLUGIN MyISAM;
#
# MDEV-4529 Assertion `tmp->state == 4' fails on mix of INSTALL SONAME / UNINSTALL PLUGIN
#
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
install soname 'ha_example';
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
uninstall plugin example;
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
install soname 'ha_example';
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
uninstall soname 'ha_example';
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
--echo #
--echo # MDEV-5309 - RENAME TABLE does not check for existence of the table's
--echo # engine
--echo #
INSTALL PLUGIN example SONAME 'ha_example';
CREATE TABLE t1(a INT) ENGINE=EXAMPLE;
SELECT * FROM t1;
FLUSH TABLES;
UNINSTALL PLUGIN example;
--error ER_NO_SUCH_TABLE
RENAME TABLE t1 TO t2;
DROP TABLE t1;