--source include/not_windows_embedded.inc --source include/have_example_plugin.inc --error ER_UNKNOWN_STORAGE_ENGINE CREATE TABLE t1(a int) ENGINE=EXAMPLE; INSTALL PLUGIN example SONAME 'ha_example'; --replace_regex /\.dll/.so/ --error ER_PLUGIN_INSTALLED INSTALL PLUGIN EXAMPLE SONAME 'ha_example'; UNINSTALL PLUGIN example; INSTALL SONAME 'ha_example'; --replace_column 5 # --replace_regex /\.dll/.so/ --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; # a couple of tests for variables set global example_ulong_var=500; set global example_enum_var= e1; set session example_int_var= -1; set global example_deprecated_var=1; show status like 'example%'; show variables like 'example%'; select @@session.example_int_var; UNINSTALL SONAME 'ha_example'; # the engine is NOT uninstalled yet, # because the table `t1` is open, sitting in the table defintion cache --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; # # 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 # 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; # # Bug #32757 hang with sql_mode set when setting some global variables # INSTALL PLUGIN example SONAME 'ha_example'; 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 set session old=bla; ############################################################### # 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; 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; 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; 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; UNINSTALL PLUGIN example; --echo # --echo # Bug #16194302 SUPPORT FOR FLOATING-POINT SYSTEM --echo # VARIABLES USING THE PLUGIN INTERFACE. --echo # --replace_regex /\.dll/.so/ 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; # # 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%'; # # # --disable_service_connection set names utf8; select convert('admin𝌆' using utf8); --error ER_UDF_NO_PATHS install plugin foo soname 'admin𝌆'; --enable_service_connection --echo # End of 5.5 test --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; --echo # End of 10.1 test --echo # --echo # MDEV-21258: Can't uninstall plugin if the library file doesn't exist --echo # insert into mysql.plugin values ("unexisting_plugin", "soname"); # check that we have the plugin installed select * from mysql.plugin WHERE name='unexisting_plugin'; # make attempt to uninstall the plugin UNINSTALL PLUGIN unexisting_plugin; # check that we have the plugin uninstalled select * from mysql.plugin WHERE name='unexisting_plugin'; --error ER_SP_DOES_NOT_EXIST UNINSTALL PLUGIN unexisting_plugin; --echo # --echo # MDEV-26323 use-after-poison issue of MariaDB server --echo # --replace_regex /library '.*[\\/].(dll|so)' [(].*[)]/library '.so'/ --error ER_CANT_OPEN_LIBRARY INSTALL PLUGIN DEALLOCATE SONAME ''; --replace_regex /library '.*[\\/]x.(dll|so)' [(].*[)]/library 'x.so'/ --error ER_CANT_OPEN_LIBRARY INSTALL PLUGIN DEALLOCATE SONAME 'x'; --replace_regex /library '.*[\\/]xx.(dll|so)' [(].*[)]/library 'xx.so'/ --error ER_CANT_OPEN_LIBRARY INSTALL PLUGIN DEALLOCATE SONAME 'xx'; --echo # End of 10.2 tests --source include/install_plugin_if_exists.inc --echo # --echo # Make sure temporary tables maintain plugin references properly --echo # INSTALL PLUGIN example SONAME 'ha_example'; CREATE TEMPORARY TABLE t1(a INT) ENGINE=example; UNINSTALL PLUGIN example; --error ER_PLUGIN_INSTALLED INSTALL PLUGIN example SONAME 'ha_example'; DROP TABLE t1; INSTALL PLUGIN example SONAME 'ha_example'; CREATE TEMPORARY TABLE t1(a INT) ENGINE=example; DROP TABLE t1; UNINSTALL PLUGIN example; --echo # End of 10.4 tests