Fixed bug mdev-4373:
Valgrind complained on usage of uninitialized memory.
This commit is contained in:
parent
1ae352afbe
commit
b2d0a33ea0
@ -850,4 +850,21 @@ set optimizer_switch=@save_optimizer_switch;
|
||||
set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity;
|
||||
DROP TABLE t1,t2;
|
||||
set use_stat_tables=@save_use_stat_tables;
|
||||
#
|
||||
# Bug mdev-4373: condition on a short varchar column
|
||||
# with optimizer_use_condition_selectivity=3
|
||||
#
|
||||
set use_stat_tables=PREFERABLY;
|
||||
CREATE TABLE t1 (a varchar(1));
|
||||
INSERT INTO t1 VALUES ('x'), ('y');
|
||||
ANALYZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
FLUSH TABLES;
|
||||
set optimizer_use_condition_selectivity=3;
|
||||
SELECT * FROM t1 WHERE a <= 'w';
|
||||
a
|
||||
set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity;
|
||||
DROP TABLE t1;
|
||||
set use_stat_tables=@save_use_stat_tables;
|
||||
set use_stat_tables=@save_use_stat_tables;
|
||||
|
@ -858,6 +858,23 @@ set optimizer_switch=@save_optimizer_switch;
|
||||
set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity;
|
||||
DROP TABLE t1,t2;
|
||||
set use_stat_tables=@save_use_stat_tables;
|
||||
#
|
||||
# Bug mdev-4373: condition on a short varchar column
|
||||
# with optimizer_use_condition_selectivity=3
|
||||
#
|
||||
set use_stat_tables=PREFERABLY;
|
||||
CREATE TABLE t1 (a varchar(1));
|
||||
INSERT INTO t1 VALUES ('x'), ('y');
|
||||
ANALYZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
FLUSH TABLES;
|
||||
set optimizer_use_condition_selectivity=3;
|
||||
SELECT * FROM t1 WHERE a <= 'w';
|
||||
a
|
||||
set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity;
|
||||
DROP TABLE t1;
|
||||
set use_stat_tables=@save_use_stat_tables;
|
||||
set use_stat_tables=@save_use_stat_tables;
|
||||
set optimizer_switch=@save_optimizer_switch_for_selectivity_test;
|
||||
SET SESSION STORAGE_ENGINE=DEFAULT;
|
||||
|
@ -444,5 +444,28 @@ DROP TABLE t1,t2;
|
||||
|
||||
set use_stat_tables=@save_use_stat_tables;
|
||||
|
||||
--echo #
|
||||
--echo # Bug mdev-4373: condition on a short varchar column
|
||||
--echo # with optimizer_use_condition_selectivity=3
|
||||
--echo #
|
||||
|
||||
set use_stat_tables=PREFERABLY;
|
||||
|
||||
CREATE TABLE t1 (a varchar(1));
|
||||
INSERT INTO t1 VALUES ('x'), ('y');
|
||||
|
||||
ANALYZE TABLE t1;
|
||||
FLUSH TABLES;
|
||||
|
||||
set optimizer_use_condition_selectivity=3;
|
||||
|
||||
SELECT * FROM t1 WHERE a <= 'w';
|
||||
|
||||
set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
set use_stat_tables=@save_use_stat_tables;
|
||||
|
||||
|
||||
set use_stat_tables=@save_use_stat_tables;
|
||||
|
12
sql/field.cc
12
sql/field.cc
@ -6202,14 +6202,16 @@ double Field_str::middle_point_pos(Field *min, Field *max)
|
||||
uchar minp_prefix[sizeof(ulonglong)];
|
||||
uchar maxp_prefix[sizeof(ulonglong)];
|
||||
ulonglong mp, minp, maxp;
|
||||
uint dsz= min(field_length, sizeof(ulonglong) * charset()->mbmaxlen);
|
||||
memset(mp_prefix, 0, sizeof(ulonglong));
|
||||
memset(minp_prefix, 0, sizeof(ulonglong));
|
||||
memset(maxp_prefix, 0, sizeof(ulonglong));
|
||||
my_strnxfrm(charset(), mp_prefix, sizeof(mp),
|
||||
ptr + length_size(), sizeof(mp) * charset()->mbmaxlen);
|
||||
ptr + length_size(), dsz);
|
||||
my_strnxfrm(charset(), minp_prefix, sizeof(minp),
|
||||
min->ptr + length_size(),
|
||||
sizeof(minp) * charset()->mbmaxlen);
|
||||
min->ptr + length_size(), dsz);
|
||||
my_strnxfrm(charset(), maxp_prefix, sizeof(maxp),
|
||||
max->ptr + length_size(),
|
||||
sizeof(maxp) * charset()->mbmaxlen);
|
||||
max->ptr + length_size(), dsz);
|
||||
mp= char_prefix_to_ulonglong(mp_prefix);
|
||||
minp= char_prefix_to_ulonglong(minp_prefix);
|
||||
maxp= char_prefix_to_ulonglong(maxp_prefix);
|
||||
|
Loading…
x
Reference in New Issue
Block a user