Browse Source
Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
Bug#37803: Test "partition_alter2_innodb" exhausts resources (time and/or memory)
It is a very big test and as such it takes a lot of time. Solution is to divide the test in two parts, one for testing increasing column size and one for decreasing size. The innodb branch does extended tests (that myisam is not) due to the $do_pk_tests variabel, that is the reason why the innodb branch takes longer. No increase of memory usage in innodb was found when analyzing, (tested with looping some millions time of create/drop and alter commands) The memory exhaust discovered in the test is due to mysqltest which stores the result in memory (result-file) and this was the biggest result file in the test framework, so by dividing the test into two parts also cuts the memory usage of mysqltest.pull/47/merge
12 changed files with 136476 additions and 136286 deletions
-
136mysql-test/suite/parts/inc/partition_alter2_1.inc
-
159mysql-test/suite/parts/inc/partition_alter2_2.inc
-
59281mysql-test/suite/parts/r/partition_alter2_1_innodb.result
-
36885mysql-test/suite/parts/r/partition_alter2_1_myisam.result
-
20222mysql-test/suite/parts/r/partition_alter2_2_innodb.result
-
37094mysql-test/suite/parts/r/partition_alter2_2_myisam.result
-
118866mysql-test/suite/parts/r/partition_alter2_innodb.result
-
1mysql-test/suite/parts/t/disabled.def
-
4mysql-test/suite/parts/t/partition_alter2_1_innodb.test
-
4mysql-test/suite/parts/t/partition_alter2_1_myisam.test
-
31mysql-test/suite/parts/t/partition_alter2_2_innodb.test
-
79mysql-test/suite/parts/t/partition_alter2_2_myisam.test
@ -0,0 +1,159 @@ |
|||
################################################################################ |
|||
# inc/partition_alter2_2.inc # |
|||
# # |
|||
# Purpose: # |
|||
# Tests where the columns used within the partitioning function are altered. # |
|||
# This routine is only useful for the partition_<feature>_<engine> tests. .# |
|||
# Part 2: decreasing size of column |
|||
# # |
|||
#------------------------------------------------------------------------------# |
|||
# Original Author: mleich # |
|||
# Original Date: 2006-03-05 # |
|||
# Change Author: MattiasJ # |
|||
# Change Date: 2008-09-08 # |
|||
# Change: Splitted the test in two different parts (increasing/decreasing col) # |
|||
################################################################################ |
|||
|
|||
--echo |
|||
--echo #======================================================================== |
|||
--echo # 2 Decrease the size of the column used in the partitioning |
|||
--echo # function and/or PRIMARY KEY and/or UNIQUE INDEX |
|||
--echo #======================================================================== |
|||
--echo #------------------------------------------------------------------------ |
|||
--echo # 2.1 ALTER column f_int2 not used in partitioning function |
|||
--echo #------------------------------------------------------------------------ |
|||
# Rule: Only f_int1 is used within the partitioning function |
|||
# ---> inc/partition_alter_11.inc |
|||
let $alter= ALTER TABLE t1 MODIFY f_int2 MEDIUMINT; |
|||
--echo # 2.1.1 no PRIMARY KEY or UNIQUE INDEX exists |
|||
let $unique= ; |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
# |
|||
if ($do_pk_tests) |
|||
{ |
|||
# The value of the direct following test is maybe covered by the test with |
|||
# the PRIMARY KEY containing two columns. |
|||
if ($more_pk_ui_tests) |
|||
{ |
|||
--echo # 2.1.2 PRIMARY KEY exists |
|||
let $unique= , PRIMARY KEY (f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
} |
|||
let $unique= , PRIMARY KEY (f_int1,f_int2); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
let $unique= , PRIMARY KEY (f_int2,f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
} |
|||
# |
|||
--echo # 2.1.3 UNIQUE INDEX exists |
|||
# The value of the direct following test is maybe covered by the test with |
|||
# the UNIQUE INDEX containing two columns. |
|||
if ($more_pk_ui_tests) |
|||
{ |
|||
let $unique= , UNIQUE INDEX uidx1 (f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
} |
|||
let $unique= , UNIQUE INDEX uidx1 (f_int1,f_int2); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
let $unique= , UNIQUE INDEX uidx1 (f_int2,f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
# |
|||
if ($more_pk_ui_tests) |
|||
{ |
|||
# The value of the tests 2.2 is maybe covered by the tests 2.3 |
|||
--echo #------------------------------------------------------------------------ |
|||
--echo # 2.2 ALTER column f_int1 used in partitioning function |
|||
--echo #------------------------------------------------------------------------ |
|||
# Rule: Only f_int1 is used within the partitioning function |
|||
# ---> inc/partition_alter_11.inc |
|||
let $alter= ALTER TABLE t1 MODIFY f_int1 MEDIUMINT; |
|||
--echo # 2.2.1 no PRIMARY KEY or UNIQUE INDEX exists |
|||
let $unique= ; |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
--source suite/parts/inc/partition_alter_13.inc |
|||
# |
|||
if ($do_pk_tests) |
|||
{ |
|||
--echo # 2.2.2 PRIMARY KEY exists |
|||
let $unique= , PRIMARY KEY (f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
let $unique= , PRIMARY KEY (f_int1,f_int2); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
--source suite/parts/inc/partition_alter_13.inc |
|||
let $unique= , PRIMARY KEY (f_int2,f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
--source suite/parts/inc/partition_alter_13.inc |
|||
} |
|||
# |
|||
--echo # 2.2.3 UNIQUE INDEX exists |
|||
let $unique= , UNIQUE INDEX uidx (f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
let $unique= , UNIQUE INDEX uidx (f_int1,f_int2); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
--source suite/parts/inc/partition_alter_13.inc |
|||
let $unique= , UNIQUE INDEX uidx (f_int2,f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
--source suite/parts/inc/partition_alter_13.inc |
|||
} |
|||
# |
|||
--echo #------------------------------------------------------------------------ |
|||
--echo # 2.3 ALTER column f_int1 and f_int2 used in partitioning function |
|||
--echo #------------------------------------------------------------------------ |
|||
# Rule: f_int1 and f_int2 is used within the partitioning function |
|||
# ---> inc/partition_alter_13.inc |
|||
let $alter= ALTER TABLE t1 MODIFY f_int1 MEDIUMINT, MODIFY f_int2 MEDIUMINT; |
|||
--echo # 2.3.1 no PRIMARY KEY or UNIQUE INDEX exists |
|||
let $unique= ; |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
--source suite/parts/inc/partition_alter_13.inc |
|||
# |
|||
if ($do_pk_tests) |
|||
{ |
|||
--echo # 2.3.2 PRIMARY KEY exists |
|||
# The value of the direct following test is maybe covered by the test with |
|||
# the PRIMARY KEY containing two columns. |
|||
if ($more_pk_ui_tests) |
|||
{ |
|||
let $unique= , PRIMARY KEY (f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
} |
|||
let $unique= , PRIMARY KEY (f_int1,f_int2); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
--source suite/parts/inc/partition_alter_13.inc |
|||
let $unique= , PRIMARY KEY (f_int2,f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
--source suite/parts/inc/partition_alter_13.inc |
|||
} |
|||
# |
|||
--echo # 2.3.3 UNIQUE INDEX exists |
|||
# The value of the direct following test is maybe covered by the test with |
|||
# the UNIQUE INDEX containing two columns. |
|||
if ($more_pk_ui_tests) |
|||
{ |
|||
let $unique= , UNIQUE INDEX uidx (f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
} |
|||
let $unique= , UNIQUE INDEX uidx (f_int1,f_int2); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
--source suite/parts/inc/partition_alter_13.inc |
|||
let $unique= , UNIQUE INDEX uidx (f_int2,f_int1); |
|||
--source suite/parts/inc/partition_alter_11.inc |
|||
--source suite/parts/inc/partition_alter_13.inc |
|||
# |
|||
|
|||
if (0) |
|||
{ |
|||
--echo |
|||
--echo #======================================================================== |
|||
--echo # 3 ALTER the type of the column used in the partitioning |
|||
--echo # function and/or PRIMARY KEY and/or UNIQUE INDEX |
|||
--echo # INTEGER --> FLOAT |
|||
--echo # INTEGER --> DECIMAL |
|||
--echo # INTEGER --> VARCHAR |
|||
--echo # mleich: I assume that at least the first two variants are of |
|||
--echo # some interest. But I am unsure if the server allows such |
|||
--echo # conversions. I also think that such operations have a |
|||
--echo # conversions very small likelihood. |
|||
--echo # To be implemented. |
|||
--echo #======================================================================== |
|||
} |
|||
59281
mysql-test/suite/parts/r/partition_alter2_1_innodb.result
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
36885
mysql-test/suite/parts/r/partition_alter2_1_myisam.result
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
20222
mysql-test/suite/parts/r/partition_alter2_2_innodb.result
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
37094
mysql-test/suite/parts/r/partition_alter2_2_myisam.result
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
118866
mysql-test/suite/parts/r/partition_alter2_innodb.result
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,79 @@ |
|||
################################################################################ |
|||
# t/partition_alter2_2_myisam.test # |
|||
# # |
|||
# Purpose: # |
|||
# Tests around Alter column used in partitioning function # |
|||
# MyISAM branch # |
|||
# # |
|||
#------------------------------------------------------------------------------# |
|||
# Original Author: mleich # |
|||
# Original Date: 2006-03-05 # |
|||
# Change Author: # |
|||
# Change Date: # |
|||
# Change: # |
|||
################################################################################ |
|||
|
|||
# |
|||
# NOTE: PLEASE DO NOT ADD NOT MYISAM SPECIFIC TESTCASES HERE ! |
|||
# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN |
|||
# THE SOURCED FILES ONLY. |
|||
# |
|||
# Please read the README at the end of inc/partition.pre before changing |
|||
# any of the variables. |
|||
# |
|||
|
|||
#------------------------------------------------------------------------------# |
|||
# General not engine specific settings and requirements |
|||
|
|||
##### Options, for debugging support ##### |
|||
let $debug= 0; |
|||
let $with_partitioning= 1; |
|||
|
|||
##### Option, for displaying files ##### |
|||
let $ls= 1; |
|||
|
|||
##### Number of rows for the INSERT/UPDATE/DELETE/SELECT experiments ##### |
|||
# on partioned tables |
|||
SET @max_row = 20; |
|||
|
|||
##### Execute more tests ##### |
|||
let $more_trigger_tests= 0; |
|||
let $more_pk_ui_tests= 0; |
|||
|
|||
# The server must support partitioning. |
|||
--source include/have_partition.inc |
|||
|
|||
#------------------------------------------------------------------------------# |
|||
# Engine specific settings and requirements |
|||
|
|||
##### Storage engine to be tested |
|||
let $engine= 'MyISAM'; |
|||
|
|||
##### Execute the test of "table" files |
|||
# MyISAM has files per PK, UI, ... |
|||
let $do_file_tests= 1; |
|||
|
|||
##### Execute PRIMARY KEY tests ##### |
|||
# AFAIK MyISAM treats PRIMARY KEYs like UNIQUE INDEXes |
|||
let $do_pk_tests= 0; |
|||
|
|||
##### Assign a big number smaller than the maximum value for partitions ##### |
|||
# and smaller than the maximum value of SIGNED INTEGER |
|||
let $MAX_VALUE= (2147483646); |
|||
|
|||
# Generate the prerequisites ($variables, @variables, tables) needed |
|||
--source suite/parts/inc/partition.pre |
|||
|
|||
##### Workarounds for known open engine specific bugs |
|||
# none |
|||
|
|||
#------------------------------------------------------------------------------# |
|||
# Execute the tests to be applied to all storage engines |
|||
--source suite/parts/inc/partition_alter2_2.inc |
|||
|
|||
#------------------------------------------------------------------------------# |
|||
# Execute storage engine specific tests |
|||
|
|||
#------------------------------------------------------------------------------# |
|||
# Cleanup |
|||
--source suite/parts/inc/partition_cleanup.inc |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue