CREATE TABLE t1(a int) ENGINE=EXAMPLE; ERROR 42000: Unknown storage engine 'EXAMPLE' INSTALL PLUGIN example SONAME 'ha_example'; INSTALL PLUGIN EXAMPLE SONAME 'ha_example'; ERROR HY000: Plugin 'EXAMPLE' already installed UNINSTALL PLUGIN example; INSTALL SONAME 'ha_example'; select * from information_schema.plugins where plugin_library like 'ha_example%'; PLUGIN_NAME EXAMPLE PLUGIN_VERSION 0.1 PLUGIN_STATUS ACTIVE PLUGIN_TYPE STORAGE ENGINE PLUGIN_TYPE_VERSION # PLUGIN_LIBRARY ha_example.so PLUGIN_LIBRARY_VERSION 1.15 PLUGIN_AUTHOR Brian Aker, MySQL AB PLUGIN_DESCRIPTION Example storage engine PLUGIN_LICENSE GPL LOAD_OPTION ON PLUGIN_MATURITY Experimental PLUGIN_AUTH_VERSION 0.1 PLUGIN_NAME UNUSABLE PLUGIN_VERSION 3.14 PLUGIN_STATUS ACTIVE PLUGIN_TYPE DAEMON PLUGIN_TYPE_VERSION # PLUGIN_LIBRARY ha_example.so PLUGIN_LIBRARY_VERSION 1.15 PLUGIN_AUTHOR Sergei Golubchik PLUGIN_DESCRIPTION Unusable Daemon PLUGIN_LICENSE GPL LOAD_OPTION ON PLUGIN_MATURITY Experimental PLUGIN_AUTH_VERSION 3.14.15.926 CREATE TABLE t1 (a int) ENGINE=EXAMPLE; CREATE TABLE t2 (a int) ENGINE=EXAMPLE; FLUSH TABLES; SELECT * FROM t1; a set global example_ulong_var=500; set global example_enum_var= e1; set session example_int_var= -1; set global example_deprecated_var=1; Warnings: Warning 1287 '@@example_deprecated_var' is deprecated and will be removed in a future release show status like 'example%'; Variable_name Value Example_func_example enum_var is 0, ulong_var is 500, int_var is -1, double_var is 8.500000, really show variables like 'example%'; Variable_name Value example_deprecated_var 0 example_double_thdvar 8.500000 example_double_var 8.500000 example_enum_var e1 example_int_var -1 example_ulong_var 500 example_varopt_default 5 select @@session.example_int_var; @@session.example_int_var -1 UNINSTALL SONAME 'ha_example'; Warnings: Warning 1620 Plugin is busy and will be uninstalled on shutdown select * from information_schema.plugins where plugin_library like 'ha_example%'; PLUGIN_NAME EXAMPLE PLUGIN_VERSION 0.1 PLUGIN_STATUS DELETED PLUGIN_TYPE STORAGE ENGINE PLUGIN_TYPE_VERSION # PLUGIN_LIBRARY ha_example.so PLUGIN_LIBRARY_VERSION 1.15 PLUGIN_AUTHOR Brian Aker, MySQL AB PLUGIN_DESCRIPTION Example storage engine PLUGIN_LICENSE GPL LOAD_OPTION ON PLUGIN_MATURITY Experimental PLUGIN_AUTH_VERSION 0.1 DROP TABLE t1; select * from information_schema.plugins where plugin_library like 'ha_example%'; SELECT * FROM t2; ERROR 42000: Unknown storage engine 'EXAMPLE' DROP TABLE t2; UNINSTALL PLUGIN EXAMPLE; ERROR 42000: PLUGIN EXAMPLE does not exist UNINSTALL PLUGIN non_exist; ERROR 42000: PLUGIN non_exist does not exist UNINSTALL SONAME 'non_exist'; ERROR 42000: SONAME non_exist.so 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'; 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'; 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 42000: Variable 'old' can't be set to the value of 'bla' #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; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL `complex`='c,f,f,f' ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `ULL`=10000 `STR`='dskj' `one_or_two`='one' `YESNO`=0 drop table t1; SET @OLD_SQL_MODE=@@SQL_MODE; SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS'; #illegal value fixed CREATE TABLE t1 (a int, b int) ENGINE=example ULL=10000000000000000000 one_or_two='ttt' YESNO=SSS; Warnings: Warning 1912 Incorrect value '10000000000000000000' for option 'ULL' Warning 1912 Incorrect value 'ttt' for option 'one_or_two' Warning 1912 Incorrect value 'SSS' for option 'YESNO' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `ULL`=10000000000000000000 `one_or_two`='ttt' `YESNO`=SSS #alter table alter table t1 ULL=10000000; Warnings: Note 1105 EXAMPLE DEBUG: ULL 4294967290 -> 10000000 show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `one_or_two`='ttt' `YESNO`=SSS `ULL`=10000000 alter table t1 change a a int complex='c,c,c'; Warnings: Note 1105 EXAMPLE DEBUG: Field `a` COMPLEX '(null)' -> 'c,c,c' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL `complex`='c,c,c', `b` int(11) DEFAULT NULL ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `one_or_two`='ttt' `YESNO`=SSS `ULL`=10000000 alter table t1 one_or_two=two; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL `complex`='c,c,c', `b` int(11) DEFAULT NULL ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `YESNO`=SSS `ULL`=10000000 `one_or_two`=two drop table t1; #illegal value error SET SQL_MODE=''; CREATE TABLE t1 (a int) ENGINE=example ULL=10000000000000000000 one_or_two='ttt' YESNO=SSS; ERROR HY000: Incorrect value '10000000000000000000' for option 'ULL' CREATE TABLE t1 (a int) ENGINE=example ULL=10.00; ERROR 42000: Only integers allowed as number here near '10.00' at line 1 CREATE TABLE t1 (a int) ENGINE=example ULL=1e2; ERROR 42000: Only integers allowed as number here near '1e2' at line 1 CREATE TABLE t1 (a int) ENGINE=example ULL=0x1234; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `ULL`=4660 SET example_varopt_default=33; select create_options from information_schema.tables where table_schema='test' and table_name='t1'; create_options `ULL`=4660 ALTER TABLE t1 ULL=DEFAULT; Warnings: Note 1105 EXAMPLE DEBUG: ULL 4660 -> 4294967295 SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 DROP TABLE t1; create table t1 (a int) engine=example; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `VAROPT`=33 drop table t1; create table t1 (a int) engine=example varopt=15; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `varopt`=15 alter table t1 varopt=default; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `VAROPT`=33 drop table t1; SET @@SQL_MODE=@OLD_SQL_MODE; select 1; 1 1 UNINSTALL PLUGIN example; # # Bug #16194302 SUPPORT FOR FLOATING-POINT SYSTEM # VARIABLES USING THE PLUGIN INTERFACE. # INSTALL PLUGIN example SONAME 'ha_example'; 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; UNINSTALL PLUGIN MyISAM; ERROR HY000: Built-in plugins cannot be deleted select plugin_name from information_schema.plugins where plugin_library like 'ha_example%'; plugin_name install soname 'ha_example'; select plugin_name from information_schema.plugins where plugin_library like 'ha_example%'; plugin_name EXAMPLE UNUSABLE uninstall plugin example; select plugin_name from information_schema.plugins where plugin_library like 'ha_example%'; plugin_name UNUSABLE install soname 'ha_example'; select plugin_name from information_schema.plugins where plugin_library like 'ha_example%'; plugin_name EXAMPLE UNUSABLE uninstall soname 'ha_example'; select plugin_name from information_schema.plugins where plugin_library like 'ha_example%'; plugin_name set names utf8; select convert('admin𝌆' using utf8); convert('admin\xF0\x9D\x8C\x86' using utf8) admin???? Warnings: Warning 1300 Invalid utf8mb3 character string: '\xF0\x9D\x8C\x86' install plugin foo soname 'admin𝌆'; ERROR HY000: No paths allowed for shared library # End of 5.5 test # # MDEV-5309 - RENAME TABLE does not check for existence of the table's # engine # INSTALL PLUGIN example SONAME 'ha_example'; CREATE TABLE t1(a INT) ENGINE=EXAMPLE; SELECT * FROM t1; a FLUSH TABLES; UNINSTALL PLUGIN example; RENAME TABLE t1 TO t2; ERROR 42S02: Table 'test.t1' doesn't exist DROP TABLE t1; # End of 10.1 test # # MDEV-21258: Can't uninstall plugin if the library file doesn't exist # insert into mysql.plugin values ("unexisting_plugin", "soname"); select * from mysql.plugin WHERE name='unexisting_plugin'; name dl unexisting_plugin soname UNINSTALL PLUGIN unexisting_plugin; select * from mysql.plugin WHERE name='unexisting_plugin'; name dl UNINSTALL PLUGIN unexisting_plugin; ERROR 42000: PLUGIN unexisting_plugin does not exist # # MDEV-26323 use-after-poison issue of MariaDB server # INSTALL PLUGIN DEALLOCATE SONAME ''; ERROR HY000: Can't open shared library '.so' INSTALL PLUGIN DEALLOCATE SONAME 'x'; ERROR HY000: Can't open shared library 'x.so' INSTALL PLUGIN DEALLOCATE SONAME 'xx'; ERROR HY000: Can't open shared library 'xx.so' # End of 10.2 tests # # MDEV-16294: INSTALL PLUGIN IF NOT EXISTS / UNINSTALL PLUGIN IF EXISTS # # INSTALL IF NOT EXISTS PLUGIN name SONAME library / # UNINSTALL IF EXISTS PLUGIN|SONAME name # select PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE from information_schema.plugins where plugin_library like 'ha_example%'; PLUGIN_NAME PLUGIN_STATUS PLUGIN_TYPE INSTALL PLUGIN IF NOT EXISTS example SONAME 'ha_example'; select PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE from information_schema.plugins where plugin_library like 'ha_example%'; PLUGIN_NAME PLUGIN_STATUS PLUGIN_TYPE EXAMPLE ACTIVE STORAGE ENGINE INSTALL PLUGIN example SONAME 'ha_example'; ERROR HY000: Plugin 'example' already installed INSTALL PLUGIN IF NOT EXISTS example SONAME 'ha_example'; Warnings: Note 1968 Plugin 'example' already installed SHOW WARNINGS; Level Code Message Note 1968 Plugin 'example' already installed UNINSTALL PLUGIN IF EXISTS example; select PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE from information_schema.plugins where plugin_library like 'ha_example%'; PLUGIN_NAME PLUGIN_STATUS PLUGIN_TYPE UNINSTALL PLUGIN IF EXISTS example; Warnings: Note 1305 PLUGIN example does not exist SHOW WARNINGS; Level Code Message Note 1305 PLUGIN example does not exist UNINSTALL PLUGIN example; ERROR 42000: PLUGIN example does not exist INSTALL SONAME 'ha_example'; select PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE from information_schema.plugins where plugin_library like 'ha_example%'; PLUGIN_NAME PLUGIN_STATUS PLUGIN_TYPE EXAMPLE ACTIVE STORAGE ENGINE UNUSABLE ACTIVE DAEMON UNINSTALL SONAME IF EXISTS 'ha_example'; UNINSTALL SONAME IF EXISTS 'ha_example'; Warnings: Note 1305 SONAME ha_example.so does not exist SHOW WARNINGS; Level Code Message Note 1305 SONAME ha_example.so does not exist select PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE from information_schema.plugins where plugin_library like 'ha_example%'; PLUGIN_NAME PLUGIN_STATUS PLUGIN_TYPE UNINSTALL SONAME 'ha_example'; ERROR 42000: SONAME ha_example.so does not exist # # Make sure temporary tables maintain plugin references properly # INSTALL PLUGIN example SONAME 'ha_example'; CREATE TEMPORARY TABLE t1(a INT) ENGINE=example; UNINSTALL PLUGIN example; Warnings: Warning 1620 Plugin is busy and will be uninstalled on shutdown INSTALL PLUGIN example SONAME 'ha_example'; ERROR HY000: Plugin 'example' already installed DROP TABLE t1; INSTALL PLUGIN example SONAME 'ha_example'; CREATE TEMPORARY TABLE t1(a INT) ENGINE=example; DROP TABLE t1; UNINSTALL PLUGIN example; # End of 10.4 tests