mirror of
https://github.com/MariaDB/server.git
synced 2025-01-23 15:24:16 +01:00
69762c0581
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. storage/example/ha_example.cc: Fixed bug #32034. Sample system variable example_enum_var has been added to the EXAMPLE storage to test ENUM variables. sql/sql_plugin.cc: Fixed bug #32034. 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. uint value has been casted to long type before subtraction. mysql-test/t/plugin.test: Added test case for bug #32034. mysql-test/r/plugin.result: Added test case for bug #32034.
29 lines
986 B
Text
29 lines
986 B
Text
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
|
Warnings:
|
|
Warning 1286 Unknown table 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;
|
|
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 'enum_var' can't be set to the value of 'impossible'
|
|
UNINSTALL PLUGIN example;
|