mirror of
https://github.com/MariaDB/server.git
synced 2025-01-21 06:22:28 +01:00
70f36562bc
storage engine system variables was not validated and unexpected value was assigned. The check_func_enum function used subtraction from the uint value with the probably negative result. That result of type uint was compared with 0 after casting to signed long type. On architectures where long type is longer than int type the result of comparison was unexpected.
41 lines
855 B
Text
41 lines
855 B
Text
--source include/have_example_plugin.inc
|
|
|
|
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
|
DROP TABLE t1;
|
|
|
|
INSTALL PLUGIN example SONAME 'ha_example.so';
|
|
--error 1125
|
|
INSTALL PLUGIN EXAMPLE SONAME 'ha_example.so';
|
|
|
|
UNINSTALL PLUGIN example;
|
|
|
|
INSTALL PLUGIN example SONAME 'ha_example.so';
|
|
|
|
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
|
|
|
# Let's do some advanced ops with the example engine :)
|
|
SELECT * FROM t1;
|
|
|
|
DROP TABLE t1;
|
|
|
|
UNINSTALL PLUGIN example;
|
|
--error 1305
|
|
UNINSTALL PLUGIN EXAMPLE;
|
|
|
|
--error 1305
|
|
UNINSTALL PLUGIN 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.so';
|
|
|
|
SET GLOBAL example_enum_var= e1;
|
|
SET GLOBAL example_enum_var= e2;
|
|
--error 1231
|
|
SET GLOBAL example_enum_var= impossible;
|
|
|
|
UNINSTALL PLUGIN example;
|