mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fix for bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0,
file .\ha_innodb. Problem: if a partial unique key followed by a non-partial one we declare the second one as a primary key. Fix: sort non-partial unique keys before partial ones. include/my_base.h: Fix for bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0, file .\ha_innodb. - sort unique keys that don't contain partial segments before other keys: set HA_KEY_HAS_PART_KEY_SEG flag for such keys in the mysql_prepare_table(), use it in the sort_keys(); mysql-test/r/innodb_mysql.result: Fix for bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0, file .\ha_innodb. - test result. mysql-test/r/key.result: Fix for bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0, file .\ha_innodb. - test result. mysql-test/t/innodb_mysql.test: Fix for bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0, file .\ha_innodb. - test case. mysql-test/t/key.test: Fix for bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0, file .\ha_innodb. - test case. sql/sql_table.cc: Fix for bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0, file .\ha_innodb. - sort unique keys that don't contain partial segments before other keys: set HA_KEY_HAS_PART_KEY_SEG flag for such keys in the mysql_prepare_table(), use it in the sort_keys(); sql/structs.h: Fix for bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0, file .\ha_innodb. - sort unique keys that don't contain partial segments before other keys: set HA_KEY_HAS_PART_KEY_SEG flag for such keys in the mysql_prepare_table(), use it in the sort_keys();
This commit is contained in:
@ -1211,4 +1211,19 @@ a b
|
||||
3 2
|
||||
1 1
|
||||
DROP TABLE t1;
|
||||
create table t1(a char(10) not null, unique key aa(a(1)),
|
||||
b char(4) not null, unique key bb(b(4))) engine=innodb;
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a char(10) NO UNI NULL
|
||||
b char(4) NO PRI NULL
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` char(10) NOT NULL,
|
||||
`b` char(4) NOT NULL,
|
||||
UNIQUE KEY `bb` (`b`),
|
||||
UNIQUE KEY `aa` (`a`(1))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
End of 5.0 tests
|
||||
|
@ -462,4 +462,48 @@ EXPLAIN SELECT MAX(a) FROM t1 FORCE INDEX(a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
||||
DROP TABLE t1;
|
||||
create table t1(a int not null, key aa(a),
|
||||
b char(10) not null, unique key bb(b(1)),
|
||||
c char(4) not null, unique key cc(c));
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO MUL NULL
|
||||
b char(10) NO UNI NULL
|
||||
c char(4) NO PRI NULL
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL,
|
||||
`b` char(10) NOT NULL,
|
||||
`c` char(4) NOT NULL,
|
||||
UNIQUE KEY `cc` (`c`),
|
||||
UNIQUE KEY `bb` (`b`(1)),
|
||||
KEY `aa` (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1(a int not null, key aa(a),
|
||||
b char(10) not null, unique key bb(b(1)),
|
||||
c char(4) not null);
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO MUL NULL
|
||||
b char(10) NO UNI NULL
|
||||
c char(4) NO NULL
|
||||
alter table t1 add unique key cc(c);
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO MUL NULL
|
||||
b char(10) NO UNI NULL
|
||||
c char(4) NO PRI NULL
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL,
|
||||
`b` char(10) NOT NULL,
|
||||
`c` char(4) NOT NULL,
|
||||
UNIQUE KEY `cc` (`c`),
|
||||
UNIQUE KEY `bb` (`b`(1)),
|
||||
KEY `aa` (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
End of 5.0 tests.
|
||||
|
@ -960,4 +960,13 @@ SELECT * FROM t1 ORDER BY b DESC, a ASC;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0
|
||||
#
|
||||
create table t1(a char(10) not null, unique key aa(a(1)),
|
||||
b char(4) not null, unique key bb(b(4))) engine=innodb;
|
||||
desc t1;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -443,4 +443,22 @@ ALTER TABLE t1 DISABLE KEYS;
|
||||
EXPLAIN SELECT MAX(a) FROM t1 FORCE INDEX(a);
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #31137: Assertion failed: primary_key_no == -1 || primary_key_no == 0
|
||||
#
|
||||
create table t1(a int not null, key aa(a),
|
||||
b char(10) not null, unique key bb(b(1)),
|
||||
c char(4) not null, unique key cc(c));
|
||||
desc t1;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
create table t1(a int not null, key aa(a),
|
||||
b char(10) not null, unique key bb(b(1)),
|
||||
c char(4) not null);
|
||||
desc t1;
|
||||
alter table t1 add unique key cc(c);
|
||||
desc t1;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
Reference in New Issue
Block a user