mariadb/mysql-test/suite/innodb/t/innodb_force_pk.test
Jan Lindström 3307eaab68 MDEV-8582: innodb_force_primary_key option does not force PK or unique key
Analysis: Handler table flag HA_REQUIRE_PRIMARY_KEY alone is not enough
to force primary or unique key, if table has at least one NOT NULL
column and secondary key for that column.

Fix: Add additional check that table really has primary key or
unique key for InnoDB terms.
2015-08-08 10:39:01 +03:00

49 lines
1.2 KiB
Text

-- source include/have_innodb.inc
let $force_pk=`select @@innodb_force_primary_key`;
-- error 1173
create table t1(a integer) engine=innodb;
show warnings;
-- error 1173
create table t1(a integer unique key) engine=innodb;
show warnings;
-- error 1173
create table t1(a integer not null, b integer,
unique key(a,b)) engine=innodb;
show warnings;
create table t1(a integer not null primary key) engine=innodb;
show create table t1;
show warnings;
drop table t1;
create table t1(a integer not null unique key) engine=innodb;
show create table t1;
show warnings;
drop table t1;
set global innodb_force_primary_key = 0;
create table t1(a integer) engine=innodb;
show warnings;
insert into t1 values (1),(2),(3);
set global innodb_force_primary_key = 1;
select * from t1;
-- error 1173
create table t2(a integer) engine=innodb;
show warnings;
drop table t1;
#
# MDEV-8582: innodb_force_primary_key option does not
# force PK or unique key
#
--error 1173
create table t1 (i int not null, key(i)) engine=innodb;
create table t1 (i int not null, unique key(i)) engine=innodb;
show warnings;
show create table t1;
drop table t1;
--disable_query_log
eval set global innodb_force_primary_key=$force_pk;
--enable_query_log