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
MDEV-20100 MariaDB 13.3.9 Crash "[ERROR] mysqld got signal 11 ;"
Some functions on ha_partition call functions on all partitions, but handler->reset() is only called that pruned by m_partitions_to_reset. So Spider didn't clear pointer on unpruned partitions, if the unpruned partitions are used by next query, Spider reference the pointer that is already freed.
- Loading branch information
Showing
6 changed files
with
320 additions
and
29 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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| --let $MASTER_1_COMMENT_P_2_1= $MASTER_1_COMMENT_P_2_1_BACKUP | ||
| --let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP | ||
| --let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP | ||
| --let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP | ||
| --disable_warnings | ||
| --disable_query_log | ||
| --disable_result_log | ||
| --source ../t/test_deinit.inc | ||
| --enable_result_log | ||
| --enable_query_log | ||
| --enable_warnings |
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,46 @@ | ||
| --disable_warnings | ||
| --disable_query_log | ||
| --disable_result_log | ||
| --source ../t/test_init.inc | ||
| --enable_result_log | ||
| --enable_query_log | ||
| --enable_warnings | ||
| --let $MASTER_1_COMMENT_P_2_1_BACKUP= $MASTER_1_COMMENT_P_2_1 | ||
| let $MASTER_1_COMMENT_P_2_1= | ||
| PARTITION BY RANGE(a) ( | ||
| PARTITION pt1 VALUES LESS THAN (5) COMMENT='srv "s_2_1", table "ta_r2"', | ||
| PARTITION pt2 VALUES LESS THAN (10) COMMENT='srv "s_2_1", table "ta_r3"', | ||
| PARTITION pt3 VALUES LESS THAN MAXVALUE COMMENT='srv "s_2_1", table "ta_r4"' | ||
| ); | ||
| --let $CHILD2_1_DROP_TABLES_BACKUP= $CHILD2_1_DROP_TABLES | ||
| let $CHILD2_1_DROP_TABLES= | ||
| DROP TABLE IF EXISTS ta_r2 $STR_SEMICOLON | ||
| DROP TABLE IF EXISTS ta_r3 $STR_SEMICOLON | ||
| DROP TABLE IF EXISTS ta_r4; | ||
| --let $CHILD2_1_CREATE_TABLES_BACKUP= $CHILD2_1_CREATE_TABLES | ||
| let $CHILD2_1_CREATE_TABLES= | ||
| CREATE TABLE ta_r2 ( | ||
| a INT, | ||
| b CHAR(1), | ||
| c DATETIME, | ||
| PRIMARY KEY(a) | ||
| ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET $STR_SEMICOLON | ||
| CREATE TABLE ta_r3 ( | ||
| a INT, | ||
| b CHAR(1), | ||
| c DATETIME, | ||
| PRIMARY KEY(a) | ||
| ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET $STR_SEMICOLON | ||
| CREATE TABLE ta_r4 ( | ||
| a INT, | ||
| b CHAR(1), | ||
| c DATETIME, | ||
| PRIMARY KEY(a) | ||
| ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; | ||
| --let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES | ||
| let $CHILD2_1_SELECT_TABLES= | ||
| SELECT a, b, c FROM ta_r2 ORDER BY a $STR_SEMICOLON | ||
| SELECT a, b, c FROM ta_r3 ORDER BY a $STR_SEMICOLON | ||
| SELECT a, b, c FROM ta_r4 ORDER BY a; | ||
| let $CHILD2_1_SELECT_ARGUMENT1= | ||
| SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; |
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,119 @@ | ||
| for master_1 | ||
| for child2 | ||
| child2_1 | ||
| child2_2 | ||
| child2_3 | ||
| for child3 | ||
|
|
||
| this test is for MDEV-20100 | ||
|
|
||
| drop and create databases | ||
| connection master_1; | ||
| CREATE DATABASE auto_test_local; | ||
| USE auto_test_local; | ||
| connection child2_1; | ||
| SET @old_log_output = @@global.log_output; | ||
| SET GLOBAL log_output = 'TABLE,FILE'; | ||
| CREATE DATABASE auto_test_remote; | ||
| USE auto_test_remote; | ||
|
|
||
| create table and insert | ||
| connection child2_1; | ||
| CHILD2_1_CREATE_TABLES | ||
| TRUNCATE TABLE mysql.general_log; | ||
| connection master_1; | ||
| CREATE TABLE tbl_a ( | ||
| a INT, | ||
| b CHAR(1), | ||
| c DATETIME, | ||
| PRIMARY KEY(a) | ||
| ) ENGINE=Spider PARTITION BY RANGE(a) ( | ||
| PARTITION pt1 VALUES LESS THAN (5) COMMENT='srv "s_2_1", table "ta_r2"', | ||
| PARTITION pt2 VALUES LESS THAN (10) COMMENT='srv "s_2_1", table "ta_r3"', | ||
| PARTITION pt3 VALUES LESS THAN MAXVALUE COMMENT='srv "s_2_1", table "ta_r4"' | ||
| ) | ||
| INSERT INTO tbl_a (a, b, c) VALUES | ||
| (1, 'a', '2008-08-01 10:21:39'), | ||
| (2, 'b', '2000-01-01 00:00:00'), | ||
| (3, 'e', '2007-06-04 20:03:11'), | ||
| (4, 'd', '2003-11-30 05:01:03'), | ||
| (5, 'c', '2001-12-31 23:59:59'); | ||
|
|
||
| test 1 | ||
| connection child2_1; | ||
| TRUNCATE TABLE mysql.general_log; | ||
| connection master_1; | ||
| SELECT a, b, c FROM tbl_a PARTITION (pt2) WHERE b = 'c'; | ||
| a b c | ||
| 5 c 2001-12-31 23:59:59 | ||
| SELECT a, b, c FROM tbl_a PARTITION (pt1,pt2); | ||
| a b c | ||
| 1 a 2008-08-01 10:21:39 | ||
| 2 b 2000-01-01 00:00:00 | ||
| 3 e 2007-06-04 20:03:11 | ||
| 4 d 2003-11-30 05:01:03 | ||
| 5 c 2001-12-31 23:59:59 | ||
| SELECT a, b, c FROM tbl_a PARTITION (pt3) WHERE b = 'c'; | ||
| a b c | ||
| SELECT a, b, c FROM tbl_a PARTITION (pt1,pt2); | ||
| a b c | ||
| 1 a 2008-08-01 10:21:39 | ||
| 2 b 2000-01-01 00:00:00 | ||
| 3 e 2007-06-04 20:03:11 | ||
| 4 d 2003-11-30 05:01:03 | ||
| 5 c 2001-12-31 23:59:59 | ||
| SELECT a, b, c FROM tbl_a PARTITION (pt1) WHERE b = 'c'; | ||
| a b c | ||
| SELECT a, b, c FROM tbl_a PARTITION (pt1,pt3); | ||
| a b c | ||
| 1 a 2008-08-01 10:21:39 | ||
| 2 b 2000-01-01 00:00:00 | ||
| 3 e 2007-06-04 20:03:11 | ||
| 4 d 2003-11-30 05:01:03 | ||
| SELECT a, b, c FROM tbl_a PARTITION (pt1) WHERE b = 'c'; | ||
| a b c | ||
| SELECT a, b, c FROM tbl_a PARTITION (pt2,pt3); | ||
| a b c | ||
| 5 c 2001-12-31 23:59:59 | ||
| connection child2_1; | ||
| SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; | ||
| argument | ||
| select t0.`a` `a`,t0.`b` `b`,t0.`c` `c` from `auto_test_remote`.`ta_r3` t0 where (t0.`b` = 'c') | ||
| select `a`,`b`,`c` from `auto_test_remote`.`ta_r2` | ||
| select `a`,`b`,`c` from `auto_test_remote`.`ta_r3` | ||
| select t0.`a` `a`,t0.`b` `b`,t0.`c` `c` from `auto_test_remote`.`ta_r4` t0 where (t0.`b` = 'c') | ||
| select `a`,`b`,`c` from `auto_test_remote`.`ta_r2` | ||
| select `a`,`b`,`c` from `auto_test_remote`.`ta_r3` | ||
| select t0.`a` `a`,t0.`b` `b`,t0.`c` `c` from `auto_test_remote`.`ta_r2` t0 where (t0.`b` = 'c') | ||
| select `a`,`b`,`c` from `auto_test_remote`.`ta_r2` | ||
| select `a`,`b`,`c` from `auto_test_remote`.`ta_r4` | ||
| select t0.`a` `a`,t0.`b` `b`,t0.`c` `c` from `auto_test_remote`.`ta_r2` t0 where (t0.`b` = 'c') | ||
| select `a`,`b`,`c` from `auto_test_remote`.`ta_r3` | ||
| select `a`,`b`,`c` from `auto_test_remote`.`ta_r4` | ||
| SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' | ||
| SELECT a, b, c FROM ta_r2 ORDER BY a ; | ||
| SELECT a, b, c FROM ta_r3 ORDER BY a ; | ||
| SELECT a, b, c FROM ta_r4 ORDER BY a; | ||
| a b c | ||
| 1 a 2008-08-01 10:21:39 | ||
| 2 b 2000-01-01 00:00:00 | ||
| 3 e 2007-06-04 20:03:11 | ||
| 4 d 2003-11-30 05:01:03 | ||
| a b c | ||
| 5 c 2001-12-31 23:59:59 | ||
| a b c | ||
|
|
||
| deinit | ||
| connection master_1; | ||
| DROP DATABASE IF EXISTS auto_test_local; | ||
| connection child2_1; | ||
| DROP DATABASE IF EXISTS auto_test_remote; | ||
| SET GLOBAL log_output = @old_log_output; | ||
| for master_1 | ||
| for child2 | ||
| child2_1 | ||
| child2_2 | ||
| child2_3 | ||
| for child3 | ||
|
|
||
| end of test |
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,3 @@ | ||
| !include include/default_mysqld.cnf | ||
| !include ../my_1_1.cnf | ||
| !include ../my_2_1.cnf |
Oops, something went wrong.