mirror of
https://github.com/MariaDB/server.git
synced 2025-05-27 01:57:48 +03:00
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!
193 lines
8.2 KiB
Plaintext
193 lines
8.2 KiB
Plaintext
SET @start_global_value = @@global.read_rnd_buffer_size;
|
|
SELECT @start_global_value;
|
|
@start_global_value
|
|
262144
|
|
SET @start_session_value = @@session.read_rnd_buffer_size;
|
|
SELECT @start_session_value;
|
|
@start_session_value
|
|
262144
|
|
'#--------------------FN_DYNVARS_140_01-------------------------#'
|
|
SET @@global.read_rnd_buffer_size = 1000;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '1000'
|
|
SET @@global.read_rnd_buffer_size = DEFAULT;
|
|
SELECT @@global.read_rnd_buffer_size;
|
|
@@global.read_rnd_buffer_size
|
|
262144
|
|
SET @@session.read_rnd_buffer_size = 2000;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '2000'
|
|
SET @@session.read_rnd_buffer_size = DEFAULT;
|
|
SELECT @@session.read_rnd_buffer_size;
|
|
@@session.read_rnd_buffer_size
|
|
262144
|
|
'#--------------------FN_DYNVARS_140_02-------------------------#'
|
|
SET @@global.read_rnd_buffer_size = DEFAULT;
|
|
SELECT @@global.read_rnd_buffer_size = 262144;
|
|
@@global.read_rnd_buffer_size = 262144
|
|
1
|
|
SET @@session.read_rnd_buffer_size = DEFAULT;
|
|
SELECT @@session.read_rnd_buffer_size = 262144;
|
|
@@session.read_rnd_buffer_size = 262144
|
|
1
|
|
'Bug# 34876: This variable has invalid default value as compared to documentation';
|
|
'#--------------------FN_DYNVARS_140_03-------------------------#'
|
|
SET @@global.read_rnd_buffer_size = 8201;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8201'
|
|
SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
|
|
@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
|
|
1
|
|
SET @@global.read_rnd_buffer_size = 8200;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8200'
|
|
SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
|
|
@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
|
|
1
|
|
SET @@global.read_rnd_buffer_size = 2147479552;
|
|
SELECT @@global.read_rnd_buffer_size;
|
|
@@global.read_rnd_buffer_size
|
|
2147479552
|
|
SET @@global.read_rnd_buffer_size = 2147479551;
|
|
SELECT @@global.read_rnd_buffer_size;
|
|
@@global.read_rnd_buffer_size
|
|
2147475456
|
|
'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
|
|
'#--------------------FN_DYNVARS_140_04-------------------------#'
|
|
SET @@session.read_rnd_buffer_size = 8200;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8200'
|
|
SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
|
|
@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228
|
|
1
|
|
SET @@session.read_rnd_buffer_size = 8201;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8201'
|
|
SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
|
|
@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228
|
|
1
|
|
SET @@session.read_rnd_buffer_size = 2147479552;
|
|
SELECT @@session.read_rnd_buffer_size;
|
|
@@session.read_rnd_buffer_size
|
|
2147479552
|
|
SET @@session.read_rnd_buffer_size = 2147479551;
|
|
SELECT @@session.read_rnd_buffer_size;
|
|
@@session.read_rnd_buffer_size
|
|
2147475456
|
|
'#------------------FN_DYNVARS_140_05-----------------------#'
|
|
SET @@global.read_rnd_buffer_size = 8199;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8199'
|
|
SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
|
|
@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
|
|
1
|
|
SET @@global.read_rnd_buffer_size = -1024;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '0'
|
|
SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
|
|
@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
|
|
1
|
|
SET @@global.read_rnd_buffer_size = 2147479553;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '2147479553'
|
|
SELECT @@global.read_rnd_buffer_size;
|
|
@@global.read_rnd_buffer_size
|
|
2147479552
|
|
SET @@global.read_rnd_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_rnd_buffer_size;
|
|
@@global.read_rnd_buffer_size
|
|
2147479552
|
|
SET @@global.read_rnd_buffer_size = test;
|
|
ERROR 42000: Incorrect argument type to variable 'read_rnd_buffer_size'
|
|
SELECT @@global.read_rnd_buffer_size;
|
|
@@global.read_rnd_buffer_size
|
|
2147479552
|
|
SET @@session.read_rnd_buffer_size = 8199;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8199'
|
|
SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
|
|
@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228
|
|
1
|
|
SET @@session.read_rnd_buffer_size = -2;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '0'
|
|
SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228;
|
|
@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228
|
|
1
|
|
SET @@session.read_rnd_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_rnd_buffer_size = 2147479553;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '2147479553'
|
|
SELECT @@session.read_rnd_buffer_size;
|
|
@@session.read_rnd_buffer_size
|
|
2147479552
|
|
'Bug # 34837: Errors are not coming on assigning invalid values to variable';
|
|
SET @@session.read_rnd_buffer_size = test;
|
|
ERROR 42000: Incorrect argument type to variable 'read_rnd_buffer_size'
|
|
SELECT @@session.read_rnd_buffer_size;
|
|
@@session.read_rnd_buffer_size
|
|
2147479552
|
|
'#------------------FN_DYNVARS_140_06-----------------------#'
|
|
SELECT @@global.read_rnd_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='read_rnd_buffer_size';
|
|
@@global.read_rnd_buffer_size = VARIABLE_VALUE
|
|
1
|
|
'#------------------FN_DYNVARS_140_07-----------------------#'
|
|
SELECT @@session.read_rnd_buffer_size =
|
|
VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='read_rnd_buffer_size';
|
|
@@session.read_rnd_buffer_size =
|
|
VARIABLE_VALUE
|
|
1
|
|
'#------------------FN_DYNVARS_140_08-----------------------#'
|
|
SET @@global.read_rnd_buffer_size = TRUE;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '1'
|
|
SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
|
|
@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
|
|
1
|
|
SET @@global.read_rnd_buffer_size = FALSE;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '0'
|
|
SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228;
|
|
@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
|
|
1
|
|
'#---------------------FN_DYNVARS_140_09----------------------#'
|
|
SET @@global.read_rnd_buffer_size = 9000;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '9000'
|
|
SELECT @@read_rnd_buffer_size = @@global.read_rnd_buffer_size;
|
|
@@read_rnd_buffer_size = @@global.read_rnd_buffer_size
|
|
0
|
|
'#---------------------FN_DYNVARS_140_10----------------------#'
|
|
SET @@read_rnd_buffer_size = 9000;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '9000'
|
|
SELECT @@read_rnd_buffer_size = @@local.read_rnd_buffer_size;
|
|
@@read_rnd_buffer_size = @@local.read_rnd_buffer_size
|
|
1
|
|
SELECT @@local.read_rnd_buffer_size = @@session.read_rnd_buffer_size;
|
|
@@local.read_rnd_buffer_size = @@session.read_rnd_buffer_size
|
|
1
|
|
'#---------------------FN_DYNVARS_140_11----------------------#'
|
|
SET read_rnd_buffer_size = 9100;
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '9100'
|
|
SELECT @@read_rnd_buffer_size= 8200 OR @@read_rnd_buffer_size= 8228;
|
|
@@read_rnd_buffer_size= 8200 OR @@read_rnd_buffer_size= 8228
|
|
1
|
|
SELECT local.read_rnd_buffer_size;
|
|
ERROR 42S02: Unknown table 'local' in field list
|
|
SELECT session.read_rnd_buffer_size;
|
|
ERROR 42S02: Unknown table 'session' in field list
|
|
SELECT read_rnd_buffer_size = @@session.read_rnd_buffer_size;
|
|
ERROR 42S22: Unknown column 'read_rnd_buffer_size' in 'field list'
|
|
SET @@global.read_rnd_buffer_size = @start_global_value;
|
|
SELECT @@global.read_rnd_buffer_size;
|
|
@@global.read_rnd_buffer_size
|
|
262144
|
|
SET @@session.read_rnd_buffer_size = @start_session_value;
|
|
SELECT @@session.read_rnd_buffer_size;
|
|
@@session.read_rnd_buffer_size
|
|
262144
|