Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Added tmp_disk_table_size to limit size of Aria temp tables in tmpdir
- Added variable tmp_disk_table_size - Added variable tmp_memory_table_size as an alias for tmp_table_size - Changed internal variable tmp_table_size to tmp_memory_table_size - create_info.data_file_length is now set with tmp_disk_table_size - Fixed that Aria doesn't reset max_data_file_length for internal tables - Added status flag if table is full so that we can detect this on next insert. This ensures that the table is always 'correct', but we get the error one row after the row that grow the table too big. - Removed some mutex lock for internal temporary tables
- Loading branch information
Showing
18 changed files
with
882 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,146 @@ | ||
| SET @start_global_value = @@global.tmp_disk_table_size; | ||
| SET @start_session_value = @@session.tmp_disk_table_size; | ||
| '#--------------------FN_DYNVARS_005_01-------------------------#' | ||
| SET @@global.tmp_disk_table_size = 100; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_disk_table_size value: '100' | ||
| SET @@global.tmp_disk_table_size = DEFAULT; | ||
| SET @@session.tmp_disk_table_size = 200; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_disk_table_size value: '200' | ||
| SET @@session.tmp_disk_table_size = DEFAULT; | ||
| '#--------------------FN_DYNVARS_005_02-------------------------#' | ||
| SELECT @@global.tmp_disk_table_size >= 16777216; | ||
| @@global.tmp_disk_table_size >= 16777216 | ||
| 1 | ||
| SELECT @@session.tmp_disk_table_size >= 16777216; | ||
| @@session.tmp_disk_table_size >= 16777216 | ||
| 1 | ||
| '#--------------------FN_DYNVARS_005_03-------------------------#' | ||
| SET @@global.tmp_disk_table_size = 1024; | ||
| SELECT @@global.tmp_disk_table_size; | ||
| @@global.tmp_disk_table_size | ||
| 1024 | ||
| SET @@global.tmp_disk_table_size = 60020; | ||
| SELECT @@global.tmp_disk_table_size; | ||
| @@global.tmp_disk_table_size | ||
| 60020 | ||
| SET @@global.tmp_disk_table_size = 4294967295; | ||
| SELECT @@global.tmp_disk_table_size; | ||
| @@global.tmp_disk_table_size | ||
| 4294967295 | ||
| '#--------------------FN_DYNVARS_005_04-------------------------#' | ||
| SET @@session.tmp_disk_table_size = 1024; | ||
| SELECT @@session.tmp_disk_table_size; | ||
| @@session.tmp_disk_table_size | ||
| 1024 | ||
| SET @@session.tmp_disk_table_size = 4294967295; | ||
| SELECT @@session.tmp_disk_table_size; | ||
| @@session.tmp_disk_table_size | ||
| 4294967295 | ||
| SET @@session.tmp_disk_table_size = 65535; | ||
| SELECT @@session.tmp_disk_table_size; | ||
| @@session.tmp_disk_table_size | ||
| 65535 | ||
| '#------------------FN_DYNVARS_005_05-----------------------#' | ||
| SET @@global.tmp_disk_table_size = 0; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_disk_table_size value: '0' | ||
| SELECT @@global.tmp_disk_table_size; | ||
| @@global.tmp_disk_table_size | ||
| 1024 | ||
| SET @@global.tmp_disk_table_size = -1024; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_disk_table_size value: '-1024' | ||
| SELECT @@global.tmp_disk_table_size; | ||
| @@global.tmp_disk_table_size | ||
| 1024 | ||
| SET @@global.tmp_disk_table_size = 1000; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_disk_table_size value: '1000' | ||
| SELECT @@global.tmp_disk_table_size; | ||
| @@global.tmp_disk_table_size | ||
| 1024 | ||
| SET @@global.tmp_disk_table_size = ON; | ||
| ERROR 42000: Incorrect argument type to variable 'tmp_disk_table_size' | ||
| SET @@global.tmp_disk_table_size = OFF; | ||
| ERROR 42000: Incorrect argument type to variable 'tmp_disk_table_size' | ||
| SET @@global.tmp_disk_table_size = True; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_disk_table_size value: '1' | ||
| SELECT @@global.tmp_disk_table_size; | ||
| @@global.tmp_disk_table_size | ||
| 1024 | ||
| SET @@global.tmp_disk_table_size = False; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_disk_table_size value: '0' | ||
| SELECT @@global.tmp_disk_table_size; | ||
| @@global.tmp_disk_table_size | ||
| 1024 | ||
| SET @@global.tmp_disk_table_size = 65530.34; | ||
| ERROR 42000: Incorrect argument type to variable 'tmp_disk_table_size' | ||
| SET @@global.tmp_disk_table_size ="Test"; | ||
| ERROR 42000: Incorrect argument type to variable 'tmp_disk_table_size' | ||
| SET @@session.tmp_disk_table_size = ON; | ||
| ERROR 42000: Incorrect argument type to variable 'tmp_disk_table_size' | ||
| SET @@session.tmp_disk_table_size = OFF; | ||
| ERROR 42000: Incorrect argument type to variable 'tmp_disk_table_size' | ||
| SET @@session.tmp_disk_table_size = True; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_disk_table_size value: '1' | ||
| SELECT @@session.tmp_disk_table_size; | ||
| @@session.tmp_disk_table_size | ||
| 1024 | ||
| SET @@session.tmp_disk_table_size = False; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_disk_table_size value: '0' | ||
| SELECT @@session.tmp_disk_table_size; | ||
| @@session.tmp_disk_table_size | ||
| 1024 | ||
| SET @@session.tmp_disk_table_size = "Test"; | ||
| ERROR 42000: Incorrect argument type to variable 'tmp_disk_table_size' | ||
| SET @@session.tmp_disk_table_size = 12345678901; | ||
| SELECT @@session.tmp_disk_table_size IN (12345678901,4294967295); | ||
| @@session.tmp_disk_table_size IN (12345678901,4294967295) | ||
| 1 | ||
| '#------------------FN_DYNVARS_005_06-----------------------#' | ||
| SELECT @@global.tmp_disk_table_size = VARIABLE_VALUE | ||
| FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES | ||
| WHERE VARIABLE_NAME='tmp_disk_table_size'; | ||
| @@global.tmp_disk_table_size = VARIABLE_VALUE | ||
| 1 | ||
| '#------------------FN_DYNVARS_005_07-----------------------#' | ||
| SELECT @@session.tmp_disk_table_size = VARIABLE_VALUE | ||
| FROM INFORMATION_SCHEMA.SESSION_VARIABLES | ||
| WHERE VARIABLE_NAME='tmp_disk_table_size'; | ||
| @@session.tmp_disk_table_size = VARIABLE_VALUE | ||
| 1 | ||
| '#---------------------FN_DYNVARS_001_09----------------------#' | ||
| SET @@global.tmp_disk_table_size = 1024; | ||
| SET @@tmp_disk_table_size = 4294967295; | ||
| SELECT @@tmp_disk_table_size = @@global.tmp_disk_table_size; | ||
| @@tmp_disk_table_size = @@global.tmp_disk_table_size | ||
| 0 | ||
| '#---------------------FN_DYNVARS_001_10----------------------#' | ||
| SET @@tmp_disk_table_size = 100; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_disk_table_size value: '100' | ||
| SELECT @@tmp_disk_table_size = @@local.tmp_disk_table_size; | ||
| @@tmp_disk_table_size = @@local.tmp_disk_table_size | ||
| 1 | ||
| SELECT @@local.tmp_disk_table_size = @@session.tmp_disk_table_size; | ||
| @@local.tmp_disk_table_size = @@session.tmp_disk_table_size | ||
| 1 | ||
| '#---------------------FN_DYNVARS_001_11----------------------#' | ||
| SET tmp_disk_table_size = 1027; | ||
| SELECT @@tmp_disk_table_size; | ||
| @@tmp_disk_table_size | ||
| 1027 | ||
| SELECT local.tmp_disk_table_size; | ||
| ERROR 42S02: Unknown table 'local' in field list | ||
| SELECT global.tmp_disk_table_size; | ||
| ERROR 42S02: Unknown table 'global' in field list | ||
| SELECT tmp_disk_table_size = @@session.tmp_disk_table_size; | ||
| ERROR 42S22: Unknown column 'tmp_disk_table_size' in 'field list' | ||
| SET @@global.tmp_disk_table_size = @start_global_value; | ||
| SET @@session.tmp_disk_table_size = @start_session_value; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
|
|
||
| "Ensure that we get an error if we exceed tmp_disk_table_size" | ||
|
|
||
| SET @start_tmp_memory_table_size=@@session.tmp_memory_table_size; | ||
| SET @start_tmp_disk_table_size=@@session.tmp_disk_table_size; | ||
| set @@session.tmp_memory_table_size=1000; | ||
| Warnings: | ||
| Warning 1292 Truncated incorrect tmp_memory_table_size value: '1000' | ||
| set @@session.tmp_disk_table_size=3000000; | ||
| create table t1 (a int primary key, b varchar(2000)); | ||
| insert into t1 select seq,repeat(char(mod(seq,62)+64),seq) from seq_1_to_2000; | ||
| insert into t1 values (20000,"A"); | ||
| select count(*) as c from t1 group by b having c>1; | ||
| c | ||
| 2 | ||
| show status like "created_tmp_disk%"; | ||
| Variable_name Value | ||
| Created_tmp_disk_tables 1 | ||
| set @@session.tmp_disk_table_size=1000000; | ||
| select count(*) as c from t1 group by b having c>1; | ||
| ERROR HY000: The table '#sql_xxx' is full | ||
| show status like "created_tmp_disk%"; | ||
| Variable_name Value | ||
| Created_tmp_disk_tables 2 | ||
| drop table t1; |
Oops, something went wrong.