mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 22:12:30 +01:00
0c4f4ff015
USING THE PLUGIN INTERFACE. ISSUE: No support for floating-point plugin system variables. SOLUTION: Allowing plugins to define and expose floating-point system variables of type double. MYSQL_SYSVAR_DOUBLE and MYSQL_THDVAR_DOUBLE are added. ISSUE: Fractional part of the def, min, max values of system variables are ignored. SOLUTION: Adding functions that are used to store the raw representation of a double in the raw bits of unsigned longlong in a way that the binary representation remains the same.
139 lines
3.6 KiB
Text
139 lines
3.6 KiB
Text
--source include/not_windows_embedded.inc
|
|
--source include/have_example_plugin.inc
|
|
|
|
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
|
DROP TABLE t1;
|
|
|
|
--replace_regex /\.dll/.so/
|
|
eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';
|
|
--replace_regex /\.dll/.so/
|
|
--error 1125
|
|
eval INSTALL PLUGIN EXAMPLE SONAME '$EXAMPLE_PLUGIN';
|
|
|
|
UNINSTALL PLUGIN example;
|
|
|
|
--replace_regex /\.dll/.so/
|
|
eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';
|
|
|
|
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
|
|
|
# Let's do some advanced ops with the example engine :)
|
|
SELECT * FROM t1;
|
|
|
|
DROP TABLE t1;
|
|
|
|
# a couple of tests for variables
|
|
set global example_ulong_var=500;
|
|
set global example_enum_var= e1;
|
|
show status like 'example%';
|
|
show variables like 'example%';
|
|
|
|
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 #
|
|
--replace_regex /\.dll/.so/
|
|
eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';
|
|
|
|
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
|
|
#
|
|
--replace_regex /\.dll/.so/
|
|
eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';
|
|
|
|
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_INCORRECT_GLOBAL_LOCAL_VAR
|
|
set session old=bla;
|
|
|
|
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 '$EXAMPLE_PLUGIN';
|
|
|
|
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;
|