Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/5.5' into 10.1
Browse files Browse the repository at this point in the history
  • Loading branch information
abarkov committed Oct 1, 2019
2 parents 9b80f93 + d481f69 commit 4bcf524
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 8 deletions.
23 changes: 23 additions & 0 deletions mysql-test/r/myisam.result
Original file line number Diff line number Diff line change
Expand Up @@ -2560,3 +2560,26 @@ myisam_block_size 1024
select @@global.myisam_block_size;
@@global.myisam_block_size
1024
#
# MDEV-20704 An index on a double column erroneously uses prefix compression
#
CREATE TABLE t1 (
id INT NOT NULL PRIMARY KEY,
d DOUBLE,
KEY (d)
) ENGINE=MyISAM;

MyISAM file: MYSQLD_DATADIR/test/t1
Record format: Fixed length
Character set: latin1_swedish_ci (8)
Data records: 0 Deleted blocks: 0
Recordlength: 13

table description:
Key Start Len Index Type
1 2 4 unique long
2 6 8 multip. double NULL
DROP TABLE t1;
#
# End of 5.5 tests
#
19 changes: 19 additions & 0 deletions mysql-test/t/myisam.test
Original file line number Diff line number Diff line change
Expand Up @@ -1781,3 +1781,22 @@ drop table t1;
#
show variables like 'myisam_block_size';
select @@global.myisam_block_size;


--echo #
--echo # MDEV-20704 An index on a double column erroneously uses prefix compression
--echo #

CREATE TABLE t1 (
id INT NOT NULL PRIMARY KEY,
d DOUBLE,
KEY (d)
) ENGINE=MyISAM;
let $MYSQLD_DATADIR= `select @@datadir`;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
--exec $MYISAMCHK -d $MYSQLD_DATADIR/test/t1
DROP TABLE t1;

--echo #
--echo # End of 5.5 tests
--echo #
16 changes: 8 additions & 8 deletions sql/sql_table.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4059,16 +4059,16 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info,
/* Use packed keys for long strings on the first column */
if (!((*db_options) & HA_OPTION_NO_PACK_KEYS) &&
!((create_info->table_options & HA_OPTION_NO_PACK_KEYS)) &&
(key_part_length >= KEY_DEFAULT_PACK_LENGTH &&
(sql_field->sql_type == MYSQL_TYPE_STRING ||
sql_field->sql_type == MYSQL_TYPE_VARCHAR ||
sql_field->pack_flag & FIELDFLAG_BLOB)))
(key_part_length >= KEY_DEFAULT_PACK_LENGTH &&
(sql_field->sql_type == MYSQL_TYPE_STRING ||
sql_field->sql_type == MYSQL_TYPE_VARCHAR ||
f_is_blob(sql_field->pack_flag))))
{
if ((column_nr == 0 && (sql_field->pack_flag & FIELDFLAG_BLOB)) ||
if ((column_nr == 0 && f_is_blob(sql_field->pack_flag)) ||
sql_field->sql_type == MYSQL_TYPE_VARCHAR)
key_info->flags|= HA_BINARY_PACK_KEY | HA_VAR_LENGTH_KEY;
else
key_info->flags|= HA_PACK_KEY;
key_info->flags|= HA_BINARY_PACK_KEY | HA_VAR_LENGTH_KEY;
else
key_info->flags|= HA_PACK_KEY;
}
/* Check if the key segment is partial, set the key flag accordingly */
if (key_part_length != sql_field->key_length)
Expand Down

0 comments on commit 4bcf524

Please sign in to comment.