You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# MDEV-8695 Wrong result for SELECT..WHERE varchar_column='a' AND CRC32(varchar_column)=3904355907
3049
+
#
3050
+
CREATE TABLE t1 (a VARBINARY(10));
3051
+
INSERT INTO t1 VALUES ('a'),('a ');
3052
+
SELECT a, LENGTH(a), CRC32(a) FROM t1 WHERE CRC32(a)=3904355907;
3053
+
a LENGTH(a) CRC32(a)
3054
+
a 1 3904355907
3055
+
SELECT a, LENGTH(a), CRC32(a) FROM t1 WHERE a='a' AND CRC32(a)=3904355907;
3056
+
a LENGTH(a) CRC32(a)
3057
+
a 1 3904355907
3058
+
# Okey to propagate 'a' into CRC32(a)
3059
+
EXPLAIN EXTENDED SELECT a, LENGTH(a), CRC32(a) FROM t1 WHERE a='a' AND CRC32(a)=3904355907;
3060
+
id select_type table type possible_keys key key_len ref rows filtered Extra
3061
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
3062
+
Warnings:
3063
+
Note 1003 select `test`.`t1`.`a` AS `a`,length(`test`.`t1`.`a`) AS `LENGTH(a)`,crc32(`test`.`t1`.`a`) AS `CRC32(a)` from `test`.`t1` where (`test`.`t1`.`a` = 'a')
3064
+
SELECT a, HEX(a) FROM t1 WHERE HEX(a)='61';
3065
+
a HEX(a)
3066
+
a 61
3067
+
SELECT *,HEX(a) FROM t1 WHERE a='a' AND HEX(a)='61';
3068
+
a HEX(a)
3069
+
a 61
3070
+
# Okey to propagate 'a' into HEX(a)
3071
+
EXPLAIN EXTENDED SELECT *,HEX(a) FROM t1 WHERE a='a' AND HEX(a)='61';
3072
+
id select_type table type possible_keys key key_len ref rows filtered Extra
3073
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
3074
+
Warnings:
3075
+
Note 1003 select `test`.`t1`.`a` AS `a`,hex(`test`.`t1`.`a`) AS `HEX(a)` from `test`.`t1` where (`test`.`t1`.`a` = 'a')
3076
+
SELECT * FROM t1 WHERE a='a';
3077
+
a
3078
+
a
3079
+
SELECT * FROM t1 WHERE LENGTH(a)=2;
3080
+
a
3081
+
a
3082
+
SELECT * FROM t1 WHERE a='a' AND LENGTH(a)=2;
3083
+
a
3084
+
# Okey to propagate 'a' into LENGTH(a)
3085
+
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='a' AND LENGTH(a)=2;
3086
+
id select_type table type possible_keys key key_len ref rows filtered Extra
Copy file name to clipboardExpand all lines: mysql-test/r/ctype_latin1.result
+46Lines changed: 46 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -8103,5 +8103,51 @@ SELECT * FROM t1 WHERE a=b AND a=DATE'2001-01-01';
8103
8103
a b
8104
8104
DROP TABLE t1;
8105
8105
#
8106
+
# MDEV-8695 Wrong result for SELECT..WHERE varchar_column='a' AND CRC32(varchar_column)=3904355907
8107
+
#
8108
+
CREATE TABLE t1 (a VARCHAR(10) COLLATE latin1_bin);
8109
+
INSERT INTO t1 VALUES ('a'),('a ');
8110
+
SELECT a, LENGTH(a), CRC32(a) FROM t1 WHERE CRC32(a)=3904355907;
8111
+
a LENGTH(a) CRC32(a)
8112
+
a 1 3904355907
8113
+
SELECT a, LENGTH(a), CRC32(a) FROM t1 WHERE a='a' AND CRC32(a)=3904355907;
8114
+
a LENGTH(a) CRC32(a)
8115
+
a 1 3904355907
8116
+
# 'a' should not be propagated into CRC32(a)
8117
+
EXPLAIN EXTENDED SELECT a, LENGTH(a), CRC32(a) FROM t1 WHERE a='a' AND CRC32(a)=3904355907;
8118
+
id select_type table type possible_keys key key_len ref rows filtered Extra
8119
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
8120
+
Warnings:
8121
+
Note 1003 select `test`.`t1`.`a` AS `a`,length(`test`.`t1`.`a`) AS `LENGTH(a)`,crc32(`test`.`t1`.`a`) AS `CRC32(a)` from `test`.`t1` where ((`test`.`t1`.`a` = 'a') and (crc32(`test`.`t1`.`a`) = 3904355907))
8122
+
SELECT a, HEX(a) FROM t1 WHERE HEX(a)='61';
8123
+
a HEX(a)
8124
+
a 61
8125
+
SELECT *,HEX(a) FROM t1 WHERE a='a' AND HEX(a)='61';
8126
+
a HEX(a)
8127
+
a 61
8128
+
# 'a' should not be propagated into HEX(a)
8129
+
EXPLAIN EXTENDED SELECT *,HEX(a) FROM t1 WHERE a='a' AND HEX(a)='61';
8130
+
id select_type table type possible_keys key key_len ref rows filtered Extra
8131
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
8132
+
Warnings:
8133
+
Note 1003 select `test`.`t1`.`a` AS `a`,hex(`test`.`t1`.`a`) AS `HEX(a)` from `test`.`t1` where ((`test`.`t1`.`a` = 'a') and (hex(`test`.`t1`.`a`) = '61'))
8134
+
SELECT * FROM t1 WHERE a='a';
8135
+
a
8136
+
a
8137
+
a
8138
+
SELECT * FROM t1 WHERE LENGTH(a)=2;
8139
+
a
8140
+
a
8141
+
SELECT * FROM t1 WHERE a='a' AND LENGTH(a)=2;
8142
+
a
8143
+
a
8144
+
# 'a' should not be propagated into LENGTH(a)
8145
+
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='a' AND LENGTH(a)=2;
8146
+
id select_type table type possible_keys key key_len ref rows filtered Extra
8147
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
8148
+
Warnings:
8149
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where ((`test`.`t1`.`a` = 'a') and (length(`test`.`t1`.`a`) = 2))
0 commit comments