1
0
mirror of https://github.com/MariaDB/server.git synced 2025-05-27 01:57:48 +03:00
mariadb/mysql-test/r/read_buffer_size_basic.result
Tatiana A. Nurnberg 95e0d3bd06 Bug#31177: Server variables can't be set to their current values
Bounds-checks and blocksize corrections were applied to user-input,
but constants in the server were trusted implicitly. If these values
did not actually meet the requirements, the user could not set change
a variable, then set it back to the (wonky) factory default or maximum
by explicitly specifying it (SET <var>=<value> vs SET <var>=DEFAULT).

Now checks also apply to the server's presets. Wonky values and maxima
get corrected at startup. Consequently all non-offsetted values the user
sees are valid, and users can set the variable to that exact value if
they so desire.

mysql-test/r/read_buffer_size_basic.result:
  test sets out of bounds value; we now throw a warning for this.
  This is a side-effect: before, the maximum was higher than the
  value we set here. The value was corrected to block-size, the
  maximum was not, hence the value was smaller than the maximum
  in this particular case. Now that we align the maxima at startup,
  the value in SET is larger than the (corrected) maximum, and we
  see a warning in this particular case. "This means we're doing it right."
mysql-test/r/read_rnd_buffer_size_basic.result:
  test sets out of bounds value; we now throw a warning for this.
  This is a side-effect: before, the maximum was higher than the
  value we set here. The value was corrected to block-size, the
  maximum was not, hence the value was smaller than the maximum
  in this particular case. Now that we align the maxima at startup,
  the value in SET is larger than the (corrected) maximum, and we
  see a warning in this particular case. "This means we're doing it right."
mysys/my_getopt.c:
  Do bounds-checking at start-up time so we'll catch and correct
  wonky default values and upper limits.
sql/mysqld.cc:
  If 0 is a legal value per the docs, not to mention the default, we shouldn't give 1 as
  the lower limit.
storage/innobase/handler/ha_innodb.cc:
  We are setting upper bounds here.
  ~0L gives -1. That is NOT what we want!
2009-01-12 06:32:49 +01:00

194 lines
7.5 KiB
Plaintext

SET @start_global_value = @@global.read_buffer_size;
SELECT @start_global_value;
@start_global_value
131072
SET @start_session_value = @@session.read_buffer_size;
SELECT @start_session_value;
@start_session_value
131072
'#--------------------FN_DYNVARS_138_01-------------------------#'
SET @@global.read_buffer_size = 1000;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '1000'
SET @@global.read_buffer_size = DEFAULT;
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
131072
SET @@session.read_buffer_size = 2000;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '2000'
SET @@session.read_buffer_size = DEFAULT;
SELECT @@session.read_buffer_size;
@@session.read_buffer_size
131072
'#--------------------FN_DYNVARS_138_02-------------------------#'
SET @@global.read_buffer_size = DEFAULT;
SELECT @@global.read_buffer_size = 131072;
@@global.read_buffer_size = 131072
1
SET @@session.read_buffer_size = DEFAULT;
SELECT @@session.read_buffer_size = 131072;
@@session.read_buffer_size = 131072
1
'#--------------------FN_DYNVARS_138_03-------------------------#'
SET @@global.read_buffer_size = 8201;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8201'
SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
1
SET @@global.read_buffer_size = 8200;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8200'
SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
1
SET @@global.read_buffer_size = 2147479552;
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
2147479552
SET @@global.read_buffer_size = 2147479551;
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
2147475456
'#--------------------FN_DYNVARS_138_04-------------------------#'
SET @@session.read_buffer_size = 8200;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8200'
SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228
1
SET @@session.read_buffer_size = 8201;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8201'
SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228
1
SET @@session.read_buffer_size = 2147479552;
SELECT @@session.read_buffer_size;
@@session.read_buffer_size
2147479552
SET @@session.read_buffer_size = 2147479551;
SELECT @@session.read_buffer_size;
@@session.read_buffer_size
2147475456
'#------------------FN_DYNVARS_138_05-----------------------#'
SET @@global.read_buffer_size = 8199;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8199'
SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
1
SET @@global.read_buffer_size = -1024;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '0'
SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
1
SET @@global.read_buffer_size = 2147479553;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '2147479553'
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
2147479552
SET @@global.read_buffer_size = 65530.34.;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
2147479552
SET @@global.read_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'read_buffer_size'
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
2147479552
SET @@session.read_buffer_size = 8199;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '8199'
SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228
1
SET @@session.read_buffer_size = -2;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '0'
SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228
1
SET @@session.read_buffer_size = 65530.34.;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
SET @@session.read_buffer_size = 2147479553;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '2147479553'
SELECT @@session.read_buffer_size;
@@session.read_buffer_size
2147479552
'Bug # 34837: Errors are not coming on assigning invalid values to variable';
SET @@session.read_buffer_size = test;
ERROR 42000: Incorrect argument type to variable 'read_buffer_size'
SELECT @@session.read_buffer_size;
@@session.read_buffer_size
2147479552
'#------------------FN_DYNVARS_138_06-----------------------#'
SELECT @@global.read_buffer_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='read_buffer_size';
@@global.read_buffer_size = VARIABLE_VALUE
1
'#------------------FN_DYNVARS_138_07-----------------------#'
SELECT @@session.read_buffer_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='read_buffer_size';
@@session.read_buffer_size = VARIABLE_VALUE
1
'#------------------FN_DYNVARS_138_08-----------------------#'
SET @@global.read_buffer_size = TRUE;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '1'
SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
1
SET @@global.read_buffer_size = FALSE;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '0'
SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
1
'Bug: FN_DYNVARS_138_08- Errors are not coming on assigning TRUE/FALSE to variable'
'#---------------------FN_DYNVARS_138_09----------------------#'
SET @@global.read_buffer_size = 9000;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '9000'
SELECT @@read_buffer_size = @@global.read_buffer_size;
@@read_buffer_size = @@global.read_buffer_size
0
'#---------------------FN_DYNVARS_138_10----------------------#'
SET @@read_buffer_size = 9000;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '9000'
SELECT @@read_buffer_size = @@local.read_buffer_size;
@@read_buffer_size = @@local.read_buffer_size
1
SELECT @@local.read_buffer_size = @@session.read_buffer_size;
@@local.read_buffer_size = @@session.read_buffer_size
1
'#---------------------FN_DYNVARS_138_11----------------------#'
SET read_buffer_size = 9100;
Warnings:
Warning 1292 Truncated incorrect read_buffer_size value: '9100'
SELECT @@read_buffer_size= 8200 OR @@read_buffer_size= 8228 ;
@@read_buffer_size= 8200 OR @@read_buffer_size= 8228
1
SELECT local.read_buffer_size;
ERROR 42S02: Unknown table 'local' in field list
SELECT session.read_buffer_size;
ERROR 42S02: Unknown table 'session' in field list
SELECT read_buffer_size = @@session.read_buffer_size;
ERROR 42S22: Unknown column 'read_buffer_size' in 'field list'
SET @@global.read_buffer_size = @start_global_value;
SELECT @@global.read_buffer_size;
@@global.read_buffer_size
131072
SET @@session.read_buffer_size = @start_session_value;
SELECT @@session.read_buffer_size;
@@session.read_buffer_size
131072