Commit 06eaca9b authored by Marko Mäkelä's avatar Marko Mäkelä

Merge 10.5 into 10.6 (MDEV-27913)

parents e04b5eaa f42d6234
call mtr.add_suppression("InnoDB: Total InnoDB FTS size .* for the table .* exceeds the innodb_ft_cache_size .*");
# #
# Bug#32831765 SERVER HITS OOM CONDITION WHEN LOADING TWO # Bug#32831765 SERVER HITS OOM CONDITION WHEN LOADING TWO
# INNODB TABLES WITH FTS INDEXES # INNODB TABLES WITH FTS INDEXES
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
--source include/have_debug.inc --source include/have_debug.inc
--source include/big_test.inc --source include/big_test.inc
call mtr.add_suppression("InnoDB: Total InnoDB FTS size .* for the table .* exceeds the innodb_ft_cache_size .*");
--echo # --echo #
--echo # Bug#32831765 SERVER HITS OOM CONDITION WHEN LOADING TWO --echo # Bug#32831765 SERVER HITS OOM CONDITION WHEN LOADING TWO
--echo # INNODB TABLES WITH FTS INDEXES --echo # INNODB TABLES WITH FTS INDEXES
......
...@@ -16,6 +16,15 @@ select * from information_schema.session_variables where variable_name='innodb_f ...@@ -16,6 +16,15 @@ select * from information_schema.session_variables where variable_name='innodb_f
VARIABLE_NAME VARIABLE_VALUE VARIABLE_NAME VARIABLE_VALUE
INNODB_FT_CACHE_SIZE 8000000 INNODB_FT_CACHE_SIZE 8000000
set global innodb_ft_cache_size=1; set global innodb_ft_cache_size=1;
ERROR HY000: Variable 'innodb_ft_cache_size' is a read only variable Warnings:
Warning 1292 Truncated incorrect innodb_ft_cache_size value: '1'
SHOW VARIABLES like 'innodb_ft_cache_size';
Variable_name Value
innodb_ft_cache_size 1600000
set session innodb_ft_cache_size=1; set session innodb_ft_cache_size=1;
ERROR HY000: Variable 'innodb_ft_cache_size' is a read only variable ERROR HY000: Variable 'innodb_ft_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
set global innodb_ft_cache_size=512*1024*1024;
SHOW VARIABLES like 'innodb_ft_cache_size';
Variable_name Value
innodb_ft_cache_size 536870912
set global innodb_ft_cache_size=default;
...@@ -16,6 +16,15 @@ select * from information_schema.session_variables where variable_name='innodb_f ...@@ -16,6 +16,15 @@ select * from information_schema.session_variables where variable_name='innodb_f
VARIABLE_NAME VARIABLE_VALUE VARIABLE_NAME VARIABLE_VALUE
INNODB_FT_TOTAL_CACHE_SIZE 640000000 INNODB_FT_TOTAL_CACHE_SIZE 640000000
set global innodb_ft_total_cache_size=1; set global innodb_ft_total_cache_size=1;
ERROR HY000: Variable 'innodb_ft_total_cache_size' is a read only variable Warnings:
Warning 1292 Truncated incorrect innodb_ft_total_cache_size value: '1'
set session innodb_ft_total_cache_size=1; set session innodb_ft_total_cache_size=1;
ERROR HY000: Variable 'innodb_ft_total_cache_size' is a read only variable ERROR HY000: Variable 'innodb_ft_total_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
SHOW VARIABLES like 'innodb_ft_total_cache_size';
Variable_name Value
innodb_ft_total_cache_size 32000000
set global innodb_ft_total_cache_size=512*1024*1024;
show variables like 'innodb_ft_total_cache_size';
Variable_name Value
innodb_ft_total_cache_size 536870912
set global innodb_ft_total_cache_size=default;
--- sysvars_innodb.result
+++ sysvars_innodb,32bit.result
@@ -49,7 +49,7 @@ @@ -49,7 +49,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 8 DEFAULT_VALUE 8
...@@ -18,7 +16,7 @@ ...@@ -18,7 +16,7 @@
VARIABLE_COMMENT The AUTOINC lock modes supported by InnoDB: 0 => Old style AUTOINC locking (for backward compatibility); 1 => New style AUTOINC locking; 2 => No AUTOINC locking (unsafe for SBR) VARIABLE_COMMENT The AUTOINC lock modes supported by InnoDB: 0 => Old style AUTOINC locking (for backward compatibility); 1 => New style AUTOINC locking; 2 => No AUTOINC locking (unsafe for SBR)
NUMERIC_MIN_VALUE 0 NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 2 NUMERIC_MAX_VALUE 2
@@ -97,10 +97,10 @@ @@ -85,10 +85,10 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 134217728 DEFAULT_VALUE 134217728
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -31,7 +29,7 @@ ...@@ -31,7 +29,7 @@
NUMERIC_BLOCK_SIZE 1048576 NUMERIC_BLOCK_SIZE 1048576
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY YES READ_ONLY YES
@@ -133,7 +133,7 @@ @@ -121,7 +121,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 25 DEFAULT_VALUE 25
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -40,7 +38,7 @@ ...@@ -40,7 +38,7 @@
VARIABLE_COMMENT Dump only the hottest N% of each buffer pool, defaults to 25 VARIABLE_COMMENT Dump only the hottest N% of each buffer pool, defaults to 25
NUMERIC_MIN_VALUE 1 NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100 NUMERIC_MAX_VALUE 100
@@ -217,7 +217,7 @@ @@ -205,7 +205,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 0 DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -49,7 +47,7 @@ ...@@ -49,7 +47,7 @@
VARIABLE_COMMENT A number between [0, 100] that tells how oftern buffer pool dump status in percentages should be printed. E.g. 10 means that buffer pool dump status is printed when every 10% of number of buffer pool pages are dumped. Default is 0 (only start and end status is printed). VARIABLE_COMMENT A number between [0, 100] that tells how oftern buffer pool dump status in percentages should be printed. E.g. 10 means that buffer pool dump status is printed when every 10% of number of buffer pool pages are dumped. Default is 0 (only start and end status is printed).
NUMERIC_MIN_VALUE 0 NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100 NUMERIC_MAX_VALUE 100
@@ -337,7 +337,7 @@ @@ -325,7 +325,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 5 DEFAULT_VALUE 5
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -58,7 +56,7 @@ ...@@ -58,7 +56,7 @@
VARIABLE_COMMENT If the compression failure rate of a table is greater than this number more padding is added to the pages to reduce the failures. A value of zero implies no padding VARIABLE_COMMENT If the compression failure rate of a table is greater than this number more padding is added to the pages to reduce the failures. A value of zero implies no padding
NUMERIC_MIN_VALUE 0 NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100 NUMERIC_MAX_VALUE 100
@@ -361,7 +361,7 @@ @@ -349,7 +349,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 50 DEFAULT_VALUE 50
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -67,7 +65,7 @@ ...@@ -67,7 +65,7 @@
VARIABLE_COMMENT Percentage of empty space on a data page that can be reserved to make the page compressible. VARIABLE_COMMENT Percentage of empty space on a data page that can be reserved to make the page compressible.
NUMERIC_MIN_VALUE 0 NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 75 NUMERIC_MAX_VALUE 75
@@ -661,7 +661,7 @@ @@ -649,7 +649,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 600 DEFAULT_VALUE 600
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -76,7 +74,7 @@ ...@@ -76,7 +74,7 @@
VARIABLE_COMMENT Maximum number of seconds that semaphore times out in InnoDB. VARIABLE_COMMENT Maximum number of seconds that semaphore times out in InnoDB.
NUMERIC_MIN_VALUE 1 NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295 NUMERIC_MAX_VALUE 4294967295
@@ -709,7 +709,7 @@ @@ -697,7 +697,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 30 DEFAULT_VALUE 30
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -85,7 +83,7 @@ ...@@ -85,7 +83,7 @@
VARIABLE_COMMENT Number of iterations over which the background flushing is averaged. VARIABLE_COMMENT Number of iterations over which the background flushing is averaged.
NUMERIC_MIN_VALUE 1 NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1000 NUMERIC_MAX_VALUE 1000
@@ -733,7 +733,7 @@ @@ -721,7 +721,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 1 DEFAULT_VALUE 1
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -94,7 +92,7 @@ ...@@ -94,7 +92,7 @@
VARIABLE_COMMENT Controls the durability/speed trade-off for commits. Set to 0 (write and flush redo log to disk only once per second), 1 (flush to disk at each commit), 2 (write to log at commit but flush to disk only once per second) or 3 (flush to disk at prepare and at commit, slower and usually redundant). 1 and 3 guarantees that after a crash, committed transactions will not be lost and will be consistent with the binlog and other transactional engines. 2 can get inconsistent and lose transactions if there is a power failure or kernel crash but not if mysqld crashes. 0 has no guarantees in case of crash. 0 and 2 can be faster than 1 or 3. VARIABLE_COMMENT Controls the durability/speed trade-off for commits. Set to 0 (write and flush redo log to disk only once per second), 1 (flush to disk at each commit), 2 (write to log at commit but flush to disk only once per second) or 3 (flush to disk at prepare and at commit, slower and usually redundant). 1 and 3 guarantees that after a crash, committed transactions will not be lost and will be consistent with the binlog and other transactional engines. 2 can get inconsistent and lose transactions if there is a power failure or kernel crash but not if mysqld crashes. 0 has no guarantees in case of crash. 0 and 2 can be faster than 1 or 3.
NUMERIC_MIN_VALUE 0 NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 3 NUMERIC_MAX_VALUE 3
@@ -757,7 +757,7 @@ @@ -745,7 +745,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 1 DEFAULT_VALUE 1
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -103,7 +101,7 @@ ...@@ -103,7 +101,7 @@
VARIABLE_COMMENT Set to 0 (don't flush neighbors from buffer pool), 1 (flush contiguous neighbors from buffer pool) or 2 (flush neighbors from buffer pool), when flushing a block VARIABLE_COMMENT Set to 0 (don't flush neighbors from buffer pool), 1 (flush contiguous neighbors from buffer pool) or 2 (flush neighbors from buffer pool), when flushing a block
NUMERIC_MIN_VALUE 0 NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 2 NUMERIC_MAX_VALUE 2
@@ -805,7 +805,7 @@ @@ -781,7 +781,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 0 DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -112,7 +110,7 @@ ...@@ -112,7 +110,7 @@
VARIABLE_COMMENT Helps to save your data in case the disk image of the database becomes corrupt. Value 5 can return bogus data, and 6 can permanently corrupt data. VARIABLE_COMMENT Helps to save your data in case the disk image of the database becomes corrupt. Value 5 can return bogus data, and 6 can permanently corrupt data.
NUMERIC_MIN_VALUE 0 NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 6 NUMERIC_MAX_VALUE 6
@@ -829,7 +829,7 @@ @@ -805,10 +805,10 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 8000000 DEFAULT_VALUE 8000000
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -120,8 +118,12 @@ ...@@ -120,8 +118,12 @@
+VARIABLE_TYPE INT UNSIGNED +VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT InnoDB Fulltext search cache size in bytes VARIABLE_COMMENT InnoDB Fulltext search cache size in bytes
NUMERIC_MIN_VALUE 1600000 NUMERIC_MIN_VALUE 1600000
NUMERIC_MAX_VALUE 80000000 -NUMERIC_MAX_VALUE 1099511627776
@@ -865,7 +865,7 @@ +NUMERIC_MAX_VALUE 536870912
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
@@ -841,7 +841,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 84 DEFAULT_VALUE 84
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -130,7 +132,7 @@ ...@@ -130,7 +132,7 @@
VARIABLE_COMMENT InnoDB Fulltext search maximum token size in characters VARIABLE_COMMENT InnoDB Fulltext search maximum token size in characters
NUMERIC_MIN_VALUE 10 NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 84 NUMERIC_MAX_VALUE 84
@@ -877,7 +877,7 @@ @@ -853,7 +853,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 3 DEFAULT_VALUE 3
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -139,7 +141,7 @@ ...@@ -139,7 +141,7 @@
VARIABLE_COMMENT InnoDB Fulltext search minimum token size in characters VARIABLE_COMMENT InnoDB Fulltext search minimum token size in characters
NUMERIC_MIN_VALUE 0 NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16 NUMERIC_MAX_VALUE 16
@@ -889,7 +889,7 @@ @@ -865,7 +865,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 2000 DEFAULT_VALUE 2000
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -148,7 +150,7 @@ ...@@ -148,7 +150,7 @@
VARIABLE_COMMENT InnoDB Fulltext search number of words to optimize for each optimize table call VARIABLE_COMMENT InnoDB Fulltext search number of words to optimize for each optimize table call
NUMERIC_MIN_VALUE 1000 NUMERIC_MIN_VALUE 1000
NUMERIC_MAX_VALUE 10000 NUMERIC_MAX_VALUE 10000
@@ -901,10 +901,10 @@ @@ -877,10 +877,10 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 2000000000 DEFAULT_VALUE 2000000000
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -161,7 +163,7 @@ ...@@ -161,7 +163,7 @@
NUMERIC_BLOCK_SIZE 0 NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY NO READ_ONLY NO
@@ -925,7 +925,7 @@ @@ -901,7 +901,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 2 DEFAULT_VALUE 2
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -170,7 +172,7 @@ ...@@ -170,7 +172,7 @@
VARIABLE_COMMENT InnoDB Fulltext search parallel sort degree, will round up to nearest power of 2 number VARIABLE_COMMENT InnoDB Fulltext search parallel sort degree, will round up to nearest power of 2 number
NUMERIC_MIN_VALUE 1 NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 16 NUMERIC_MAX_VALUE 16
@@ -937,7 +937,7 @@ @@ -913,10 +913,10 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 640000000 DEFAULT_VALUE 640000000
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -178,8 +180,12 @@ ...@@ -178,8 +180,12 @@
+VARIABLE_TYPE INT UNSIGNED +VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Total memory allocated for InnoDB Fulltext Search cache VARIABLE_COMMENT Total memory allocated for InnoDB Fulltext Search cache
NUMERIC_MIN_VALUE 32000000 NUMERIC_MIN_VALUE 32000000
NUMERIC_MAX_VALUE 1600000000 -NUMERIC_MAX_VALUE 1099511627776
@@ -985,22 +985,22 @@ +NUMERIC_MAX_VALUE 1600000000
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
@@ -961,22 +961,22 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 200 DEFAULT_VALUE 200
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -207,7 +213,7 @@ ...@@ -207,7 +213,7 @@
NUMERIC_BLOCK_SIZE 0 NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY NO READ_ONLY NO
@@ -1033,10 +1033,10 @@ @@ -1009,10 +1009,10 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 16777216 DEFAULT_VALUE 16777216
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -220,7 +226,7 @@ ...@@ -220,7 +226,7 @@
NUMERIC_BLOCK_SIZE 1024 NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY YES READ_ONLY YES
@@ -1081,7 +1081,7 @@ @@ -1057,7 +1057,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 8192 DEFAULT_VALUE 8192
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -229,7 +235,7 @@ ...@@ -229,7 +235,7 @@
VARIABLE_COMMENT Redo log write ahead unit size to avoid read-on-write, it should match the OS cache block IO size VARIABLE_COMMENT Redo log write ahead unit size to avoid read-on-write, it should match the OS cache block IO size
NUMERIC_MIN_VALUE 512 NUMERIC_MIN_VALUE 512
NUMERIC_MAX_VALUE 16384 NUMERIC_MAX_VALUE 16384
@@ -1093,10 +1093,10 @@ @@ -1069,10 +1069,10 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 32 DEFAULT_VALUE 32
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -242,7 +248,7 @@ ...@@ -242,7 +248,7 @@
NUMERIC_BLOCK_SIZE 0 NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY NO READ_ONLY NO
@@ -1105,10 +1105,10 @@ @@ -1081,10 +1081,10 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 1536 DEFAULT_VALUE 1536
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -255,7 +261,7 @@ ...@@ -255,7 +261,7 @@
NUMERIC_BLOCK_SIZE 0 NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY NO READ_ONLY NO
@@ -1153,10 +1153,10 @@ @@ -1129,10 +1129,10 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 0 DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -268,7 +274,7 @@ ...@@ -268,7 +274,7 @@
NUMERIC_BLOCK_SIZE 0 NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY NO READ_ONLY NO
@@ -1165,7 +1165,7 @@ @@ -1141,7 +1141,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 0 DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -277,7 +283,7 @@ ...@@ -277,7 +283,7 @@
VARIABLE_COMMENT Maximum delay of user threads in micro-seconds VARIABLE_COMMENT Maximum delay of user threads in micro-seconds
NUMERIC_MIN_VALUE 0 NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 10000000 NUMERIC_MAX_VALUE 10000000
@@ -1297,10 +1297,10 @@ @@ -1273,10 +1273,10 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 0 DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -290,7 +296,7 @@ ...@@ -290,7 +296,7 @@
NUMERIC_BLOCK_SIZE 0 NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY YES READ_ONLY YES
@@ -1333,7 +1333,7 @@ @@ -1309,7 +1309,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 16384 DEFAULT_VALUE 16384
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -299,7 +305,7 @@ ...@@ -299,7 +305,7 @@
VARIABLE_COMMENT Page size to use for all InnoDB tablespaces. VARIABLE_COMMENT Page size to use for all InnoDB tablespaces.
NUMERIC_MIN_VALUE 4096 NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 65536 NUMERIC_MAX_VALUE 65536
@@ -1369,7 +1369,7 @@ @@ -1345,7 +1345,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 300 DEFAULT_VALUE 300
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -308,7 +314,7 @@ ...@@ -308,7 +314,7 @@
VARIABLE_COMMENT Number of UNDO log pages to purge in one batch from the history list. VARIABLE_COMMENT Number of UNDO log pages to purge in one batch from the history list.
NUMERIC_MIN_VALUE 1 NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 5000 NUMERIC_MAX_VALUE 5000
@@ -1381,7 +1381,7 @@ @@ -1357,7 +1357,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 128 DEFAULT_VALUE 128
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -317,7 +323,7 @@ ...@@ -317,7 +323,7 @@
VARIABLE_COMMENT Dictates rate at which UNDO records are purged. Value N means purge rollback segment(s) on every Nth iteration of purge invocation VARIABLE_COMMENT Dictates rate at which UNDO records are purged. Value N means purge rollback segment(s) on every Nth iteration of purge invocation
NUMERIC_MIN_VALUE 1 NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 128 NUMERIC_MAX_VALUE 128
@@ -1417,7 +1417,7 @@ @@ -1393,7 +1393,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 56 DEFAULT_VALUE 56
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -326,7 +332,7 @@ ...@@ -326,7 +332,7 @@
VARIABLE_COMMENT Number of pages that must be accessed sequentially for InnoDB to trigger a readahead. VARIABLE_COMMENT Number of pages that must be accessed sequentially for InnoDB to trigger a readahead.
NUMERIC_MIN_VALUE 0 NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 64 NUMERIC_MAX_VALUE 64
@@ -1501,7 +1501,7 @@ @@ -1465,7 +1465,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 1048576 DEFAULT_VALUE 1048576
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -335,7 +341,7 @@ ...@@ -335,7 +341,7 @@
VARIABLE_COMMENT Memory buffer size for index creation VARIABLE_COMMENT Memory buffer size for index creation
NUMERIC_MIN_VALUE 65536 NUMERIC_MIN_VALUE 65536
NUMERIC_MAX_VALUE 67108864 NUMERIC_MAX_VALUE 67108864
@@ -1669,10 +1669,10 @@ @@ -1633,10 +1633,10 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 30 DEFAULT_VALUE 30
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
...@@ -348,7 +354,7 @@ ...@@ -348,7 +354,7 @@
NUMERIC_BLOCK_SIZE 0 NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY NO READ_ONLY NO
@@ -1765,7 +1765,7 @@ @@ -1729,7 +1729,7 @@
SESSION_VALUE NULL SESSION_VALUE NULL
DEFAULT_VALUE 0 DEFAULT_VALUE 0
VARIABLE_SCOPE GLOBAL VARIABLE_SCOPE GLOBAL
......
...@@ -808,10 +808,10 @@ VARIABLE_SCOPE GLOBAL ...@@ -808,10 +808,10 @@ VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT InnoDB Fulltext search cache size in bytes VARIABLE_COMMENT InnoDB Fulltext search cache size in bytes
NUMERIC_MIN_VALUE 1600000 NUMERIC_MIN_VALUE 1600000
NUMERIC_MAX_VALUE 80000000 NUMERIC_MAX_VALUE 1099511627776
NUMERIC_BLOCK_SIZE 0 NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY YES READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_FT_ENABLE_DIAG_PRINT VARIABLE_NAME INNODB_FT_ENABLE_DIAG_PRINT
SESSION_VALUE NULL SESSION_VALUE NULL
...@@ -916,10 +916,10 @@ VARIABLE_SCOPE GLOBAL ...@@ -916,10 +916,10 @@ VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Total memory allocated for InnoDB Fulltext Search cache VARIABLE_COMMENT Total memory allocated for InnoDB Fulltext Search cache
NUMERIC_MIN_VALUE 32000000 NUMERIC_MIN_VALUE 32000000
NUMERIC_MAX_VALUE 1600000000 NUMERIC_MAX_VALUE 1099511627776
NUMERIC_BLOCK_SIZE 0 NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL ENUM_VALUE_LIST NULL
READ_ONLY YES READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_FT_USER_STOPWORD_TABLE VARIABLE_NAME INNODB_FT_USER_STOPWORD_TABLE
SESSION_VALUE SESSION_VALUE
......
...@@ -18,11 +18,12 @@ select * from information_schema.global_variables where variable_name='innodb_ft ...@@ -18,11 +18,12 @@ select * from information_schema.global_variables where variable_name='innodb_ft
select * from information_schema.session_variables where variable_name='innodb_ft_cache_size'; select * from information_schema.session_variables where variable_name='innodb_ft_cache_size';
--enable_warnings --enable_warnings
#
# show that it's read-only
#
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
set global innodb_ft_cache_size=1; set global innodb_ft_cache_size=1;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR SHOW VARIABLES like 'innodb_ft_cache_size';
--error ER_GLOBAL_VARIABLE
set session innodb_ft_cache_size=1; set session innodb_ft_cache_size=1;
set global innodb_ft_cache_size=512*1024*1024;
SHOW VARIABLES like 'innodb_ft_cache_size';
set global innodb_ft_cache_size=default;
...@@ -18,11 +18,11 @@ select * from information_schema.global_variables where variable_name='innodb_ft ...@@ -18,11 +18,11 @@ select * from information_schema.global_variables where variable_name='innodb_ft
select * from information_schema.session_variables where variable_name='innodb_ft_total_cache_size'; select * from information_schema.session_variables where variable_name='innodb_ft_total_cache_size';
--enable_warnings --enable_warnings
#
# show that it's read-only
#
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
set global innodb_ft_total_cache_size=1; set global innodb_ft_total_cache_size=1;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR --error ER_GLOBAL_VARIABLE
set session innodb_ft_total_cache_size=1; set session innodb_ft_total_cache_size=1;
SHOW VARIABLES like 'innodb_ft_total_cache_size';
set global innodb_ft_total_cache_size=512*1024*1024;
show variables like 'innodb_ft_total_cache_size';
set global innodb_ft_total_cache_size=default;
...@@ -52,14 +52,14 @@ by looking up the key word in the obsolete table names */ ...@@ -52,14 +52,14 @@ by looking up the key word in the obsolete table names */
/** This is maximum FTS cache for each table and would be /** This is maximum FTS cache for each table and would be
a configurable variable */ a configurable variable */
ulong fts_max_cache_size; Atomic_relaxed<size_t> fts_max_cache_size;
/** Whether the total memory used for FTS cache is exhausted, and we will /** Whether the total memory used for FTS cache is exhausted, and we will
need a sync to free some memory */ need a sync to free some memory */
bool fts_need_sync = false; bool fts_need_sync = false;
/** Variable specifying the total memory allocated for FTS cache */ /** Variable specifying the total memory allocated for FTS cache */
ulong fts_max_total_cache_size; Atomic_relaxed<size_t> fts_max_total_cache_size;
/** This is FTS result cache limit for each query and would be /** This is FTS result cache limit for each query and would be
a configurable variable */ a configurable variable */
...@@ -4219,11 +4219,17 @@ fts_sync( ...@@ -4219,11 +4219,17 @@ fts_sync(
fts_sync_begin(sync); fts_sync_begin(sync);
begin_sync: begin_sync:
if (cache->total_size > fts_max_cache_size) { const size_t fts_cache_size= fts_max_cache_size;
if (cache->total_size > fts_cache_size) {
/* Avoid the case: sync never finish when /* Avoid the case: sync never finish when
insert/update keeps comming. */ insert/update keeps comming. */
ut_ad(sync->unlock_cache); ut_ad(sync->unlock_cache);
sync->unlock_cache = false; sync->unlock_cache = false;
ib::warn() << "Total InnoDB FTS size "
<< cache->total_size << " for the table "
<< cache->sync->table->name
<< " exceeds the innodb_ft_cache_size "
<< fts_cache_size;
} }
for (i = 0; i < ib_vector_size(cache->indexes); ++i) { for (i = 0; i < ib_vector_size(cache->indexes); ++i) {
...@@ -4244,6 +4250,13 @@ fts_sync( ...@@ -4244,6 +4250,13 @@ fts_sync(
if (error != DB_SUCCESS) { if (error != DB_SUCCESS) {
goto end_sync; goto end_sync;
} }
if (!sync->unlock_cache
&& cache->total_size < fts_max_cache_size) {
/* Reset the unlock cache if the value
is less than innodb_ft_cache_size */
sync->unlock_cache = true;
}
} }
DBUG_EXECUTE_IF("fts_instrument_sync_interrupted", DBUG_EXECUTE_IF("fts_instrument_sync_interrupted",
......
...@@ -706,6 +706,18 @@ innodb_stopword_table_validate( ...@@ -706,6 +706,18 @@ innodb_stopword_table_validate(
for update function */ for update function */
struct st_mysql_value* value); /*!< in: incoming string */ struct st_mysql_value* value); /*!< in: incoming string */
static
void innodb_ft_cache_size_update(THD*, st_mysql_sys_var*, void*, const void* save)
{
fts_max_cache_size= *static_cast<const size_t*>(save);
}
static
void innodb_ft_total_cache_size_update(THD*, st_mysql_sys_var*, void*, const void* save)
{
fts_max_total_cache_size= *static_cast<const size_t*>(save);
}
static bool is_mysql_datadir_path(const char *path); static bool is_mysql_datadir_path(const char *path);
/** Validate passed-in "value" is a valid directory name. /** Validate passed-in "value" is a valid directory name.
...@@ -19253,15 +19265,35 @@ static MYSQL_SYSVAR_STR(ft_aux_table, innodb_ft_aux_table, ...@@ -19253,15 +19265,35 @@ static MYSQL_SYSVAR_STR(ft_aux_table, innodb_ft_aux_table,
"FTS internal auxiliary table to be checked", "FTS internal auxiliary table to be checked",
innodb_ft_aux_table_validate, NULL, NULL); innodb_ft_aux_table_validate, NULL, NULL);
static MYSQL_SYSVAR_ULONG(ft_cache_size, fts_max_cache_size, #if UNIV_WORD_SIZE == 4
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
static MYSQL_SYSVAR_SIZE_T(ft_cache_size,
*reinterpret_cast<size_t*>(&fts_max_cache_size),
PLUGIN_VAR_RQCMDARG,
"InnoDB Fulltext search cache size in bytes", "InnoDB Fulltext search cache size in bytes",
NULL, NULL, 8000000, 1600000, 80000000, 0); NULL, innodb_ft_cache_size_update, 8000000, 1600000, 1U << 29, 0);
static MYSQL_SYSVAR_ULONG(ft_total_cache_size, fts_max_total_cache_size, static MYSQL_SYSVAR_SIZE_T(ft_total_cache_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, *reinterpret_cast<size_t*>(&fts_max_total_cache_size),
PLUGIN_VAR_RQCMDARG,
"Total memory allocated for InnoDB Fulltext Search cache", "Total memory allocated for InnoDB Fulltext Search cache",
NULL, NULL, 640000000, 32000000, 1600000000, 0); NULL, innodb_ft_total_cache_size_update, 640000000, 32000000, 1600000000, 0);
#else
static MYSQL_SYSVAR_SIZE_T(ft_cache_size,
*reinterpret_cast<size_t*>(&fts_max_cache_size),
PLUGIN_VAR_RQCMDARG,
"InnoDB Fulltext search cache size in bytes",
NULL, innodb_ft_cache_size_update, 8000000, 1600000, 1ULL << 40, 0);
static MYSQL_SYSVAR_SIZE_T(ft_total_cache_size,
*reinterpret_cast<size_t*>(&fts_max_total_cache_size),
PLUGIN_VAR_RQCMDARG,
"Total memory allocated for InnoDB Fulltext Search cache",
NULL, innodb_ft_total_cache_size_update, 640000000, 32000000, 1ULL << 40, 0);
#endif
static MYSQL_SYSVAR_SIZE_T(ft_result_cache_limit, fts_result_cache_limit, static MYSQL_SYSVAR_SIZE_T(ft_result_cache_limit, fts_result_cache_limit,
PLUGIN_VAR_RQCMDARG, PLUGIN_VAR_RQCMDARG,
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 2011, 2018, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2011, 2018, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2016, 2021, MariaDB Corporation. Copyright (c) 2016, 2022, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software the terms of the GNU General Public License as published by the Free Software
...@@ -355,10 +355,10 @@ struct fts_stopword_t; ...@@ -355,10 +355,10 @@ struct fts_stopword_t;
extern const char* fts_default_stopword[]; extern const char* fts_default_stopword[];
/** Variable specifying the maximum FTS cache size for each table */ /** Variable specifying the maximum FTS cache size for each table */
extern ulong fts_max_cache_size; extern Atomic_relaxed<size_t> fts_max_cache_size;
/** Variable specifying the total memory allocated for FTS cache */ /** Variable specifying the total memory allocated for FTS cache */
extern ulong fts_max_total_cache_size; extern Atomic_relaxed<size_t> fts_max_total_cache_size;
/** Variable specifying the FTS result cache limit for each query */ /** Variable specifying the FTS result cache limit for each query */
extern size_t fts_result_cache_limit; extern size_t fts_result_cache_limit;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment