summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNayuta Yanagisawa <nayuta.yanagisawa@hey.com>2021-07-28 06:54:24 +0000
committerNayuta Yanagisawa <nayuta.yanagisawa@hey.com>2021-07-28 08:59:10 +0000
commit3efc826bff5ad40869da5fb6367b8b250182ad04 (patch)
tree4b1af69986941abbfea73d9697f6dd1e2567531e
parentdfadc90303aeb36c7f9c52119f0ef757348f3ff2 (diff)
downloadmariadb-git-bb-10.2-mdev-26111.tar.gz
MDEV-26111 Spider handle ">=" as "=" in some casesbb-10.2-mdev-26111
It is wrong to set `key_eq = TRUE` when `!use_both && tgt_key_part_map > 1`, because it doesn't imply, at all, the original search condition is an equality. In fact, if we specify the search condition `t1.b >= 1 AND t1.c > 0`, then we get `end_key == NULL` and thus `!use_both`.
-rw-r--r--storage/spider/mysql-test/spider/include/init_master_1.inc2
-rw-r--r--storage/spider/mysql-test/spider/r/spider_fixes_part.result7
-rw-r--r--storage/spider/mysql-test/spider/t/spider_fixes_part.test6
-rw-r--r--storage/spider/spd_db_conn.cc5
4 files changed, 14 insertions, 6 deletions
diff --git a/storage/spider/mysql-test/spider/include/init_master_1.inc b/storage/spider/mysql-test/spider/include/init_master_1.inc
index 460142b9c7d..47b5a95fce1 100644
--- a/storage/spider/mysql-test/spider/include/init_master_1.inc
+++ b/storage/spider/mysql-test/spider/include/init_master_1.inc
@@ -152,7 +152,7 @@ let $MASTER_1_COMMENT_TEXT_PK1_1=
COMMENT 'tbl "t1", srv "s_2_1"';
let $MASTER_1_COMMENT_TEXT_KEY1_1=
COMMENT 'tbl "t1", srv "s_2_1"';
-let $MASTER_1_COMMENT_MDEV_25985=
+let $MASTER_1_COMMENT_MULTI_COLUMN_INDEX=
COMMENT='table "t1"'
PARTITION BY LIST COLUMNS(`a`) (
PARTITION `pt1` DEFAULT COMMENT = 'srv "s_2_1"'
diff --git a/storage/spider/mysql-test/spider/r/spider_fixes_part.result b/storage/spider/mysql-test/spider/r/spider_fixes_part.result
index ad8a87db727..092e4eb8552 100644
--- a/storage/spider/mysql-test/spider/r/spider_fixes_part.result
+++ b/storage/spider/mysql-test/spider/r/spider_fixes_part.result
@@ -264,6 +264,7 @@ a b c d e f
093B37A93A534DF883787AF5F6799674 996C7F14989D480589A553717D735E3E 51041110620302 2018-08-02 13:48:30 510411 0
#
# MDEV-25985 Spider handle ">=" as ">" in some cases
+# MDEV-26111 Spider handle ">=" as "=" in some cases
#
connection child2_1;
DROP TABLE IF EXISTS t1;
@@ -288,6 +289,7 @@ KEY (b,c)
PARTITION `pt1` DEFAULT COMMENT = 'srv "s_2_1"'
);
connection master_1;
+# MDEV-25985
SELECT * FROM t1 WHERE c > 0 AND b >= 1 AND b <= 2;
a b c
1 1 1
@@ -296,6 +298,11 @@ SELECT * FROM t1 WHERE c < 3 AND b <= 2;
a b c
1 1 1
2 2 1
+# MDEV-26111
+SELECT * FROM t1 WHERE b >= 1 AND c > 0;
+a b c
+1 1 1
+2 2 1
deinit
connection master_1;
diff --git a/storage/spider/mysql-test/spider/t/spider_fixes_part.test b/storage/spider/mysql-test/spider/t/spider_fixes_part.test
index 68594458434..97098e0f5d8 100644
--- a/storage/spider/mysql-test/spider/t/spider_fixes_part.test
+++ b/storage/spider/mysql-test/spider/t/spider_fixes_part.test
@@ -729,6 +729,7 @@ if ($HAVE_PARTITION)
--echo #
--echo # MDEV-25985 Spider handle ">=" as ">" in some cases
+--echo # MDEV-26111 Spider handle ">=" as "=" in some cases
--echo #
--connection child2_1
@@ -755,11 +756,14 @@ eval CREATE TABLE t1 (
c int,
PRIMARY KEY (a),
KEY (b,c)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_MDEV_25985;
+) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_MULTI_COLUMN_INDEX;
--connection master_1
+--echo # MDEV-25985
SELECT * FROM t1 WHERE c > 0 AND b >= 1 AND b <= 2;
SELECT * FROM t1 WHERE c < 3 AND b <= 2;
+--echo # MDEV-26111
+SELECT * FROM t1 WHERE b >= 1 AND c > 0;
--echo
--echo deinit
diff --git a/storage/spider/spd_db_conn.cc b/storage/spider/spd_db_conn.cc
index df6c0ceb5f5..34f32a5d873 100644
--- a/storage/spider/spd_db_conn.cc
+++ b/storage/spider/spd_db_conn.cc
@@ -1734,10 +1734,7 @@ int spider_db_append_key_where_internal(
}
} else {
DBUG_PRINT("info", ("spider tgt_key_part_map=%lu", tgt_key_part_map));
- if (tgt_key_part_map > 1)
- key_eq = TRUE;
- else
- key_eq = FALSE;
+ key_eq = FALSE;
}
if (
(key_eq && use_key == start_key) ||