mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug #18010711 UNIQUE PREFIX INDEX ON BINARY COLUMN:
FAILING ASSERTION: FLEN == LEN Problem: Broken invariant triggered when building a unique index on a binary column and the input data contains duplicate keys. This was broken in debug builds only. Fix: Fixed length of the binary datatype can be greater than length of the shorter prefix on which index is being created.
This commit is contained in:
9
mysql-test/suite/innodb/r/create-index.result
Normal file
9
mysql-test/suite/innodb/r/create-index.result
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#
|
||||||
|
# Bug #18010711 UNIQUE PREFIX INDEX ON BINARY COLUMN: FAILING
|
||||||
|
# ASSERTION: FLEN == LEN
|
||||||
|
#
|
||||||
|
create table t1 (f1 binary(5)) engine=innodb;
|
||||||
|
insert into t1 values ('w'), ('w');
|
||||||
|
create unique index index_t1 on t1(f1(4));
|
||||||
|
ERROR 23000: Duplicate entry 'w' for key 'index_t1'
|
||||||
|
drop table t1;
|
11
mysql-test/suite/innodb/t/create-index.test
Normal file
11
mysql-test/suite/innodb/t/create-index.test
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #18010711 UNIQUE PREFIX INDEX ON BINARY COLUMN: FAILING
|
||||||
|
--echo # ASSERTION: FLEN == LEN
|
||||||
|
--echo #
|
||||||
|
create table t1 (f1 binary(5)) engine=innodb;
|
||||||
|
insert into t1 values ('w'), ('w');
|
||||||
|
--error ER_DUP_ENTRY
|
||||||
|
create unique index index_t1 on t1(f1(4));
|
||||||
|
drop table t1;
|
@ -110,16 +110,16 @@ innobase_col_to_mysql(
|
|||||||
/* These column types should never be shipped to MySQL. */
|
/* These column types should never be shipped to MySQL. */
|
||||||
ut_ad(0);
|
ut_ad(0);
|
||||||
|
|
||||||
case DATA_FIXBINARY:
|
|
||||||
case DATA_FLOAT:
|
case DATA_FLOAT:
|
||||||
case DATA_DOUBLE:
|
case DATA_DOUBLE:
|
||||||
case DATA_DECIMAL:
|
case DATA_DECIMAL:
|
||||||
/* Above are the valid column types for MySQL data. */
|
/* Above are the valid column types for MySQL data. */
|
||||||
ut_ad(flen == len);
|
ut_ad(flen == len);
|
||||||
/* fall through */
|
/* fall through */
|
||||||
|
case DATA_FIXBINARY:
|
||||||
case DATA_CHAR:
|
case DATA_CHAR:
|
||||||
/* We may have flen > len when there is a shorter
|
/* We may have flen > len when there is a shorter
|
||||||
prefix on a CHAR column. */
|
prefix on the CHAR and BINARY column. */
|
||||||
ut_ad(flen >= len);
|
ut_ad(flen >= len);
|
||||||
#else /* UNIV_DEBUG */
|
#else /* UNIV_DEBUG */
|
||||||
default:
|
default:
|
||||||
|
Reference in New Issue
Block a user