mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Backporting 273d8eb12c
Proper fix for disabling warnings in read_statistics_for_table()
This commit is contained in:
@ -14,6 +14,7 @@ SHOW CREATE TABLE t1;
|
|||||||
|
|
||||||
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
||||||
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
|
EXPLAIN SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
||||||
DELETE FROM t1;
|
DELETE FROM t1;
|
||||||
|
@ -100,3 +100,23 @@ CREATE TABLE t1(a INT ZEROFILL);
|
|||||||
SELECT 1 FROM t1 WHERE t1.a IN (1, t1.a) AND t1.a=2;
|
SELECT 1 FROM t1 WHERE t1.a IN (1, t1.a) AND t1.a=2;
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a char(2), index (a));
|
||||||
|
insert into t1 values ("aa"),("bb");
|
||||||
|
select * from t1 where a="aa";
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
select * from t1 where a="aaa";
|
||||||
|
a
|
||||||
|
select * from t1 where a="aa ";
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
select * from t1 where a>="aaa";
|
||||||
|
a
|
||||||
|
bb
|
||||||
|
explain select * from t1 where a="aaa";
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref a a 3 const 1 Using where; Using index
|
||||||
|
explain select * from t1 where a="aa ";
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref a a 3 const 1 Using where; Using index
|
||||||
|
drop table t1;
|
||||||
|
@ -6748,14 +6748,13 @@ t1 CREATE TABLE `t1` (
|
|||||||
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
||||||
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
EXPLAIN SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
DELETE FROM t1;
|
DELETE FROM t1;
|
||||||
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
||||||
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
||||||
@ -6771,22 +6770,14 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -6829,8 +6820,6 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -6850,14 +6839,10 @@ ab
|
|||||||
az
|
az
|
||||||
aЀ
|
aЀ
|
||||||
aր
|
aր
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -6877,8 +6862,6 @@ ab
|
|||||||
az
|
az
|
||||||
aЀ
|
aЀ
|
||||||
aր
|
aր
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
@ -6889,24 +6872,16 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
ALTER TABLE t1 DROP KEY ch;
|
ALTER TABLE t1 DROP KEY ch;
|
||||||
# 0xD18F would be a good 2-byte character, 0xD1 is an incomplete sequence
|
# 0xD18F would be a good 2-byte character, 0xD1 is an incomplete sequence
|
||||||
SET @query=CONCAT('SELECT ch FROM t1 WHERE ch=''a', 0xD1,'''');
|
SET @query=CONCAT('SELECT ch FROM t1 WHERE ch=''a', 0xD1,'''');
|
||||||
@ -6992,14 +6967,13 @@ t1 CREATE TABLE `t1` (
|
|||||||
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
||||||
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
EXPLAIN SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
DELETE FROM t1;
|
DELETE FROM t1;
|
||||||
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
||||||
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
||||||
@ -7015,22 +6989,14 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
|
@ -23,14 +23,13 @@ t1 CREATE TABLE `t1` (
|
|||||||
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
||||||
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
EXPLAIN SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
DELETE FROM t1;
|
DELETE FROM t1;
|
||||||
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
||||||
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
||||||
@ -46,22 +45,14 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -104,8 +95,6 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -125,14 +114,10 @@ ab
|
|||||||
az
|
az
|
||||||
aЀ
|
aЀ
|
||||||
aր
|
aր
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -152,8 +137,6 @@ ab
|
|||||||
az
|
az
|
||||||
aЀ
|
aЀ
|
||||||
aր
|
aր
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
@ -164,24 +147,16 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
ALTER TABLE t1 DROP KEY ch;
|
ALTER TABLE t1 DROP KEY ch;
|
||||||
# 0xD18F would be a good 2-byte character, 0xD1 is an incomplete sequence
|
# 0xD18F would be a good 2-byte character, 0xD1 is an incomplete sequence
|
||||||
SET @query=CONCAT('SELECT ch FROM t1 WHERE ch=''a', 0xD1,'''');
|
SET @query=CONCAT('SELECT ch FROM t1 WHERE ch=''a', 0xD1,'''');
|
||||||
|
@ -5467,14 +5467,13 @@ t1 CREATE TABLE `t1` (
|
|||||||
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
||||||
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
EXPLAIN SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
DELETE FROM t1;
|
DELETE FROM t1;
|
||||||
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
||||||
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
||||||
@ -5490,22 +5489,14 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -5548,8 +5539,6 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -5569,14 +5558,10 @@ ab
|
|||||||
az
|
az
|
||||||
aЀ
|
aЀ
|
||||||
aր
|
aր
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -5596,8 +5581,6 @@ ab
|
|||||||
az
|
az
|
||||||
aЀ
|
aЀ
|
||||||
aր
|
aր
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
@ -5608,24 +5591,16 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
ALTER TABLE t1 DROP KEY ch;
|
ALTER TABLE t1 DROP KEY ch;
|
||||||
# 0xD18F would be a good 2-byte character, 0xD1 is an incomplete sequence
|
# 0xD18F would be a good 2-byte character, 0xD1 is an incomplete sequence
|
||||||
SET @query=CONCAT('SELECT ch FROM t1 WHERE ch=''a', 0xD1,'''');
|
SET @query=CONCAT('SELECT ch FROM t1 WHERE ch=''a', 0xD1,'''');
|
||||||
@ -5711,14 +5686,13 @@ t1 CREATE TABLE `t1` (
|
|||||||
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
||||||
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
EXPLAIN SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
DELETE FROM t1;
|
DELETE FROM t1;
|
||||||
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
||||||
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
||||||
@ -5734,22 +5708,14 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -5792,8 +5758,6 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -5813,14 +5777,10 @@ ab
|
|||||||
az
|
az
|
||||||
aЀ
|
aЀ
|
||||||
aր
|
aր
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch<'a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
@ -5840,8 +5800,6 @@ ab
|
|||||||
az
|
az
|
||||||
aЀ
|
aЀ
|
||||||
aր
|
aր
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
@ -5852,24 +5810,16 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
1 SIMPLE t1 index ch ch 183 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch>'a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
z
|
z
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
ALTER TABLE t1 DROP KEY ch;
|
ALTER TABLE t1 DROP KEY ch;
|
||||||
# 0xD18F would be a good 2-byte character, 0xD1 is an incomplete sequence
|
# 0xD18F would be a good 2-byte character, 0xD1 is an incomplete sequence
|
||||||
SET @query=CONCAT('SELECT ch FROM t1 WHERE ch=''a', 0xD1,'''');
|
SET @query=CONCAT('SELECT ch FROM t1 WHERE ch=''a', 0xD1,'''');
|
||||||
@ -5955,14 +5905,13 @@ t1 CREATE TABLE `t1` (
|
|||||||
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
INSERT INTO t1 (ch) VALUES ('admin'),('admin1');
|
||||||
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
EXPLAIN SELECT ch FROM t1 WHERE ch='admin𝌆';
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='admin𝌆';
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
DELETE FROM t1;
|
DELETE FROM t1;
|
||||||
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
INSERT INTO t1 (ch) VALUES ('a'), ('a?'), ('a??'), ('a???'), ('a????');
|
||||||
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
INSERT INTO t1 (ch) VALUES ('ab'),('a?b'),('a??b'),('a???b'),('a????b');
|
||||||
@ -5978,22 +5927,14 @@ EXPLAIN
|
|||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86' for column `test`.`t1`.`ch` at row 1
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL # Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
SELECT ch FROM t1 FORCE KEY (ch) WHERE ch='a𝌆b' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9D\x8C\x86b' for column `test`.`t1`.`ch` at row 1
|
|
||||||
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
SELECT ch FROM t1 IGNORE KEY (ch) WHERE ch<'a𝌆' ORDER BY ch;
|
||||||
ch
|
ch
|
||||||
a
|
a
|
||||||
|
@ -36,10 +36,6 @@ SELECT INFO, INFO_BINARY, 'xxx😎yyy' AS utf8mb4_string FROM INFORMATION_SCHEMA
|
|||||||
INFO SELECT INFO, INFO_BINARY, 'xxx????yyy' AS utf8mb4_string FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE '%xxx%yyy%'
|
INFO SELECT INFO, INFO_BINARY, 'xxx????yyy' AS utf8mb4_string FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE '%xxx%yyy%'
|
||||||
INFO_BINARY SELECT INFO, INFO_BINARY, 'xxx😎yyy' AS utf8mb4_string FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE '%xxx%yyy%'
|
INFO_BINARY SELECT INFO, INFO_BINARY, 'xxx😎yyy' AS utf8mb4_string FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE '%xxx%yyy%'
|
||||||
utf8mb4_string xxx😎yyy
|
utf8mb4_string xxx😎yyy
|
||||||
Warnings:
|
|
||||||
Level Warning
|
|
||||||
Code 1366
|
|
||||||
Message Incorrect string value: '\xF0\x9F\x98\x8Eyy...' for column `information_schema`.`(temporary)`.`INFO` at row 1
|
|
||||||
#
|
#
|
||||||
# End of 10.1 tests
|
# End of 10.1 tests
|
||||||
#
|
#
|
||||||
|
@ -2077,23 +2077,15 @@ explain
|
|||||||
SELECT * FROM t1 WHERE fd='😁';
|
SELECT * FROM t1 WHERE fd='😁';
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x81' for column `test`.`t1`.`fd` at row 1
|
|
||||||
SELECT * FROM t1 WHERE fd='😁';
|
SELECT * FROM t1 WHERE fd='😁';
|
||||||
id fd
|
id fd
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x81' for column `test`.`t1`.`fd` at row 1
|
|
||||||
# The following must not use range access:
|
# The following must not use range access:
|
||||||
explain select count(*) from t1 where fd <'😁';
|
explain select count(*) from t1 where fd <'😁';
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ix_fd ix_fd 63 NULL # Using where; Using index
|
1 SIMPLE t1 index ix_fd ix_fd 63 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x81' for column `test`.`t1`.`fd` at row 1
|
|
||||||
select count(*) from t1 where fd <'😁';
|
select count(*) from t1 where fd <'😁';
|
||||||
count(*)
|
count(*)
|
||||||
40960
|
40960
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x81' for column `test`.`t1`.`fd` at row 1
|
|
||||||
select count(*) from t1 ignore index (ix_fd) where fd <'😁';
|
select count(*) from t1 ignore index (ix_fd) where fd <'😁';
|
||||||
count(*)
|
count(*)
|
||||||
40960
|
40960
|
||||||
@ -2314,8 +2306,6 @@ INSERT INTO t1 VALUES ('a'),('b'),('c'),('d'),('e');
|
|||||||
EXPLAIN SELECT * FROM t1 WHERE a<=>'😎';
|
EXPLAIN SELECT * FROM t1 WHERE a<=>'😎';
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x8E' for column `test`.`t1`.`a` at row 1
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
# MDEV-10185: Assertion `tree1->keys[key_no] && tree2->keys[key_no]' failed in
|
# MDEV-10185: Assertion `tree1->keys[key_no] && tree2->keys[key_no]' failed in
|
||||||
|
@ -2079,23 +2079,15 @@ explain
|
|||||||
SELECT * FROM t1 WHERE fd='😁';
|
SELECT * FROM t1 WHERE fd='😁';
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x81' for column `test`.`t1`.`fd` at row 1
|
|
||||||
SELECT * FROM t1 WHERE fd='😁';
|
SELECT * FROM t1 WHERE fd='😁';
|
||||||
id fd
|
id fd
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x81' for column `test`.`t1`.`fd` at row 1
|
|
||||||
# The following must not use range access:
|
# The following must not use range access:
|
||||||
explain select count(*) from t1 where fd <'😁';
|
explain select count(*) from t1 where fd <'😁';
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index ix_fd ix_fd 63 NULL # Using where; Using index
|
1 SIMPLE t1 index ix_fd ix_fd 63 NULL # Using where; Using index
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x81' for column `test`.`t1`.`fd` at row 1
|
|
||||||
select count(*) from t1 where fd <'😁';
|
select count(*) from t1 where fd <'😁';
|
||||||
count(*)
|
count(*)
|
||||||
40960
|
40960
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x81' for column `test`.`t1`.`fd` at row 1
|
|
||||||
select count(*) from t1 ignore index (ix_fd) where fd <'😁';
|
select count(*) from t1 ignore index (ix_fd) where fd <'😁';
|
||||||
count(*)
|
count(*)
|
||||||
40960
|
40960
|
||||||
@ -2316,8 +2308,6 @@ INSERT INTO t1 VALUES ('a'),('b'),('c'),('d'),('e');
|
|||||||
EXPLAIN SELECT * FROM t1 WHERE a<=>'😎';
|
EXPLAIN SELECT * FROM t1 WHERE a<=>'😎';
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
|
||||||
Warning 1366 Incorrect string value: '\xF0\x9F\x98\x8E' for column `test`.`t1`.`a` at row 1
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
# MDEV-10185: Assertion `tree1->keys[key_no] && tree2->keys[key_no]' failed in
|
# MDEV-10185: Assertion `tree1->keys[key_no] && tree2->keys[key_no]' failed in
|
||||||
|
@ -94,3 +94,17 @@ DROP TABLE t1;
|
|||||||
CREATE TABLE t1(a INT ZEROFILL);
|
CREATE TABLE t1(a INT ZEROFILL);
|
||||||
SELECT 1 FROM t1 WHERE t1.a IN (1, t1.a) AND t1.a=2;
|
SELECT 1 FROM t1 WHERE t1.a IN (1, t1.a) AND t1.a=2;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check what happens when comparing to long string
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a char(2), index (a));
|
||||||
|
insert into t1 values ("aa"),("bb");
|
||||||
|
select * from t1 where a="aa";
|
||||||
|
select * from t1 where a="aaa";
|
||||||
|
select * from t1 where a="aa ";
|
||||||
|
select * from t1 where a>="aaa";
|
||||||
|
explain select * from t1 where a="aaa";
|
||||||
|
explain select * from t1 where a="aa ";
|
||||||
|
drop table t1;
|
||||||
|
37
sql/field.cc
37
sql/field.cc
@ -79,7 +79,7 @@ const char field_separator=',';
|
|||||||
ptr < table->record[0] + table->s->reclength))))
|
ptr < table->record[0] + table->s->reclength))))
|
||||||
|
|
||||||
#define ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED \
|
#define ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED \
|
||||||
DBUG_ASSERT(is_stat_field || !table || \
|
DBUG_ASSERT(!table || \
|
||||||
(!table->write_set || \
|
(!table->write_set || \
|
||||||
bitmap_is_set(table->write_set, field_index) || \
|
bitmap_is_set(table->write_set, field_index) || \
|
||||||
(!(ptr >= table->record[0] && \
|
(!(ptr >= table->record[0] && \
|
||||||
@ -1822,8 +1822,7 @@ Field::Field(uchar *ptr_arg,uint32 length_arg,uchar *null_ptr_arg,
|
|||||||
flags=null_ptr ? 0: NOT_NULL_FLAG;
|
flags=null_ptr ? 0: NOT_NULL_FLAG;
|
||||||
comment.str= (char*) "";
|
comment.str= (char*) "";
|
||||||
comment.length=0;
|
comment.length=0;
|
||||||
field_index= 0;
|
field_index= 0;
|
||||||
is_stat_field= FALSE;
|
|
||||||
cond_selectivity= 1.0;
|
cond_selectivity= 1.0;
|
||||||
next_equal_field= NULL;
|
next_equal_field= NULL;
|
||||||
}
|
}
|
||||||
@ -2436,8 +2435,7 @@ Field *Field::clone(MEM_ROOT *root, TABLE *new_table)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Field *Field::clone(MEM_ROOT *root, TABLE *new_table, my_ptrdiff_t diff,
|
Field *Field::clone(MEM_ROOT *root, TABLE *new_table, my_ptrdiff_t diff)
|
||||||
bool stat_flag)
|
|
||||||
{
|
{
|
||||||
Field *tmp;
|
Field *tmp;
|
||||||
if ((tmp= (Field*) memdup_root(root,(char*) this,size_of())))
|
if ((tmp= (Field*) memdup_root(root,(char*) this,size_of())))
|
||||||
@ -2446,7 +2444,6 @@ Field *Field::clone(MEM_ROOT *root, TABLE *new_table, my_ptrdiff_t diff,
|
|||||||
tmp->init(new_table);
|
tmp->init(new_table);
|
||||||
tmp->move_field_offset(diff);
|
tmp->move_field_offset(diff);
|
||||||
}
|
}
|
||||||
tmp->is_stat_field= stat_flag;
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2829,7 +2826,7 @@ int Field_decimal::store(const char *from_arg, uint len, CHARSET_INFO *cs)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
Write digits of the frac_% parts ;
|
Write digits of the frac_% parts ;
|
||||||
Depending on get_thd()->count_cutted_fields, we may also want
|
Depending on get_thd()->count_cuted_fields, we may also want
|
||||||
to know if some non-zero tail of these parts will
|
to know if some non-zero tail of these parts will
|
||||||
be truncated (for example, 0.002->0.00 will generate a warning,
|
be truncated (for example, 0.002->0.00 will generate a warning,
|
||||||
while 0.000->0.00 will not)
|
while 0.000->0.00 will not)
|
||||||
@ -7069,7 +7066,7 @@ Field_longstr::check_string_copy_error(const String_copier *copier,
|
|||||||
if (!(pos= copier->most_important_error_pos()))
|
if (!(pos= copier->most_important_error_pos()))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (!is_stat_field)
|
if (get_thd()->count_cuted_fields)
|
||||||
{
|
{
|
||||||
convert_to_printable(tmp, sizeof(tmp), pos, (end - pos), cs, 6);
|
convert_to_printable(tmp, sizeof(tmp), pos, (end - pos), cs, 6);
|
||||||
set_warning_truncated_wrong_value("string", tmp);
|
set_warning_truncated_wrong_value("string", tmp);
|
||||||
@ -7102,8 +7099,9 @@ int
|
|||||||
Field_longstr::report_if_important_data(const char *pstr, const char *end,
|
Field_longstr::report_if_important_data(const char *pstr, const char *end,
|
||||||
bool count_spaces)
|
bool count_spaces)
|
||||||
{
|
{
|
||||||
THD *thd= get_thd();
|
THD *thd;
|
||||||
if ((pstr < end) && thd->count_cuted_fields)
|
if ((pstr < end) &&
|
||||||
|
(thd=get_thd())->count_cuted_fields)
|
||||||
{
|
{
|
||||||
if (test_if_important_data(field_charset, pstr, end))
|
if (test_if_important_data(field_charset, pstr, end))
|
||||||
{
|
{
|
||||||
@ -7114,7 +7112,8 @@ Field_longstr::report_if_important_data(const char *pstr, const char *end,
|
|||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
else if (count_spaces)
|
else if (count_spaces)
|
||||||
{ /* If we lost only spaces then produce a NOTE, not a WARNING */
|
{
|
||||||
|
/* If we lost only spaces then produce a NOTE, not a WARNING */
|
||||||
set_note(WARN_DATA_TRUNCATED, 1);
|
set_note(WARN_DATA_TRUNCATED, 1);
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
@ -11054,13 +11053,17 @@ void Field::set_warning_truncated_wrong_value(const char *type_arg,
|
|||||||
const char *value)
|
const char *value)
|
||||||
{
|
{
|
||||||
THD *thd= get_thd();
|
THD *thd= get_thd();
|
||||||
const char *db_name= table->s->db.str;
|
const char *db_name;
|
||||||
const char *table_name= table->s->table_name.str;
|
const char *table_name;
|
||||||
|
/*
|
||||||
|
table has in the past been 0 in case of wrong calls when processing
|
||||||
|
statistics tables. Let's protect against that.
|
||||||
|
*/
|
||||||
|
DBUG_ASSERT(table);
|
||||||
|
|
||||||
if (!db_name)
|
db_name= (table && table->s->db.str) ? table->s->db.str : "";
|
||||||
db_name= "";
|
table_name= (table && table->s->table_name.str) ?
|
||||||
if (!table_name)
|
table->s->table_name.str : "";
|
||||||
table_name= "";
|
|
||||||
|
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
ER_TRUNCATED_WRONG_VALUE_FOR_FIELD,
|
ER_TRUNCATED_WRONG_VALUE_FOR_FIELD,
|
||||||
|
@ -781,9 +781,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool is_created_from_null_item;
|
bool is_created_from_null_item;
|
||||||
|
|
||||||
/* TRUE in Field objects created for column min/max values */
|
|
||||||
bool is_stat_field;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Selectivity of the range condition over this field.
|
Selectivity of the range condition over this field.
|
||||||
When calculating this selectivity a range predicate
|
When calculating this selectivity a range predicate
|
||||||
@ -1218,8 +1215,7 @@ public:
|
|||||||
uchar *new_ptr, uint32 length,
|
uchar *new_ptr, uint32 length,
|
||||||
uchar *new_null_ptr, uint new_null_bit);
|
uchar *new_null_ptr, uint new_null_bit);
|
||||||
Field *clone(MEM_ROOT *mem_root, TABLE *new_table);
|
Field *clone(MEM_ROOT *mem_root, TABLE *new_table);
|
||||||
Field *clone(MEM_ROOT *mem_root, TABLE *new_table, my_ptrdiff_t diff,
|
Field *clone(MEM_ROOT *mem_root, TABLE *new_table, my_ptrdiff_t diff);
|
||||||
bool stat_flag= FALSE);
|
|
||||||
inline void move_field(uchar *ptr_arg,uchar *null_ptr_arg,uchar null_bit_arg)
|
inline void move_field(uchar *ptr_arg,uchar *null_ptr_arg,uchar null_bit_arg)
|
||||||
{
|
{
|
||||||
ptr=ptr_arg; null_ptr=null_ptr_arg; null_bit=null_bit_arg;
|
ptr=ptr_arg; null_ptr=null_ptr_arg; null_bit=null_bit_arg;
|
||||||
|
@ -1044,6 +1044,9 @@ public:
|
|||||||
{
|
{
|
||||||
char buff[MAX_FIELD_WIDTH];
|
char buff[MAX_FIELD_WIDTH];
|
||||||
String val(buff, sizeof(buff), &my_charset_bin);
|
String val(buff, sizeof(buff), &my_charset_bin);
|
||||||
|
my_bitmap_map *old_map;
|
||||||
|
|
||||||
|
old_map= dbug_tmp_use_all_columns(stat_table, stat_table->read_set);
|
||||||
|
|
||||||
for (uint i= COLUMN_STAT_MIN_VALUE; i <= COLUMN_STAT_HISTOGRAM; i++)
|
for (uint i= COLUMN_STAT_MIN_VALUE; i <= COLUMN_STAT_HISTOGRAM; i++)
|
||||||
{
|
{
|
||||||
@ -1102,6 +1105,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
dbug_tmp_restore_column_map(stat_table->read_set, old_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1153,14 +1157,12 @@ public:
|
|||||||
case COLUMN_STAT_MIN_VALUE:
|
case COLUMN_STAT_MIN_VALUE:
|
||||||
table_field->read_stats->min_value->set_notnull();
|
table_field->read_stats->min_value->set_notnull();
|
||||||
stat_field->val_str(&val);
|
stat_field->val_str(&val);
|
||||||
DBUG_ASSERT(table_field->read_stats->min_value->is_stat_field);
|
|
||||||
table_field->read_stats->min_value->store(val.ptr(), val.length(),
|
table_field->read_stats->min_value->store(val.ptr(), val.length(),
|
||||||
&my_charset_bin);
|
&my_charset_bin);
|
||||||
break;
|
break;
|
||||||
case COLUMN_STAT_MAX_VALUE:
|
case COLUMN_STAT_MAX_VALUE:
|
||||||
table_field->read_stats->max_value->set_notnull();
|
table_field->read_stats->max_value->set_notnull();
|
||||||
stat_field->val_str(&val);
|
stat_field->val_str(&val);
|
||||||
DBUG_ASSERT(table_field->read_stats->min_value->is_stat_field);
|
|
||||||
table_field->read_stats->max_value->store(val.ptr(), val.length(),
|
table_field->read_stats->max_value->store(val.ptr(), val.length(),
|
||||||
&my_charset_bin);
|
&my_charset_bin);
|
||||||
break;
|
break;
|
||||||
@ -1980,7 +1982,7 @@ void create_min_max_statistical_fields_for_table(TABLE *table)
|
|||||||
my_ptrdiff_t diff= record-table->record[0];
|
my_ptrdiff_t diff= record-table->record[0];
|
||||||
if (!bitmap_is_set(table->read_set, table_field->field_index))
|
if (!bitmap_is_set(table->read_set, table_field->field_index))
|
||||||
continue;
|
continue;
|
||||||
if (!(fld= table_field->clone(&table->mem_root, table, diff, TRUE)))
|
if (!(fld= table_field->clone(&table->mem_root, table, diff)))
|
||||||
continue;
|
continue;
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
table_field->collected_stats->min_value= fld;
|
table_field->collected_stats->min_value= fld;
|
||||||
@ -2047,7 +2049,7 @@ void create_min_max_statistical_fields_for_table_share(THD *thd,
|
|||||||
Field *fld;
|
Field *fld;
|
||||||
Field *table_field= *field_ptr;
|
Field *table_field= *field_ptr;
|
||||||
my_ptrdiff_t diff= record - table_share->default_values;
|
my_ptrdiff_t diff= record - table_share->default_values;
|
||||||
if (!(fld= table_field->clone(&stats_cb->mem_root, NULL, diff, TRUE)))
|
if (!(fld= table_field->clone(&stats_cb->mem_root, NULL, diff)))
|
||||||
continue;
|
continue;
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
table_field->read_stats->min_value= fld;
|
table_field->read_stats->min_value= fld;
|
||||||
@ -2995,9 +2997,13 @@ int read_statistics_for_table(THD *thd, TABLE *table, TABLE_LIST *stat_tables)
|
|||||||
KEY *key_info, *key_info_end;
|
KEY *key_info, *key_info_end;
|
||||||
TABLE_SHARE *table_share= table->s;
|
TABLE_SHARE *table_share= table->s;
|
||||||
Table_statistics *read_stats= table_share->stats_cb.table_stats;
|
Table_statistics *read_stats= table_share->stats_cb.table_stats;
|
||||||
|
enum_check_fields old_check_level= thd->count_cuted_fields;
|
||||||
|
|
||||||
DBUG_ENTER("read_statistics_for_table");
|
DBUG_ENTER("read_statistics_for_table");
|
||||||
|
|
||||||
|
/* Don't write warnings for internal field conversions */
|
||||||
|
thd->count_cuted_fields= CHECK_FIELD_IGNORE;
|
||||||
|
|
||||||
/* Read statistics from the statistical table table_stats */
|
/* Read statistics from the statistical table table_stats */
|
||||||
stat_table= stat_tables[TABLE_STAT].table;
|
stat_table= stat_tables[TABLE_STAT].table;
|
||||||
Table_stat table_stat(stat_table, table);
|
Table_stat table_stat(stat_table, table);
|
||||||
@ -3078,6 +3084,7 @@ int read_statistics_for_table(THD *thd, TABLE *table, TABLE_LIST *stat_tables)
|
|||||||
}
|
}
|
||||||
|
|
||||||
table->stats_is_read= TRUE;
|
table->stats_is_read= TRUE;
|
||||||
|
thd->count_cuted_fields= old_check_level;
|
||||||
|
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user