mariadb/mysql-test/t/plugin.test
unknown 69762c0581 Fixed bug #32034: On 64bit platforms assigning values of
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.
2007-11-14 13:48:21 +04:00

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;