mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	If setting a system-variable provided by a plug-in failed, no OK or error was sent in some cases, hanging the client. We now send an error in the case from the ticket (integer-argument out of range in STRICT mode). We also provide a semi-generic fallback message for possible future cases like this where an error is signalled, but no message is sent to the client. The error/warning handling is unified so it's the same again for variables provided by plugins and those in the server proper.
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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;
 | 
						|
INSTALL PLUGIN example SONAME 'ha_example.so';
 | 
						|
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 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 '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 HY000: Variable 'old' is a read only variable
 | 
						|
UNINSTALL PLUGIN example;
 |