config root man

Current Path : /home/usr.opt/mysql57/mysql-test/suite/ndb/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //home/usr.opt/mysql57/mysql-test/suite/ndb/t/ndb_fk_db.test

-- source include/have_ndb.inc

create database mydb0;
use mydb0;

create table parent (
  a int primary key,
  b int not null,
  c int not null,
  unique(b) using hash,
  index(c)) engine = ndb;

create database mydb1;
use mydb1;

create table child (
  a int primary key,
  b int not null,
  c int not null,
  constraint fk1 foreign key(a) references mydb0.parent (a),
  unique(b) using hash,
  index(c)) engine = ndb;

show create table child;

alter table child algorithm=copy, add constraint fk2 foreign key (b)
  references mydb0.parent(a);

show create table child;

alter table child algorithm=inplace, add constraint fk3 foreign key (c)
  references mydb0.parent(a);

show create table child;

alter table child algorithm=copy, drop foreign key fk2;

show create table child;

alter table child algorithm=inplace, drop foreign key fk3;

show create table child;

alter table mydb0.parent algorithm=copy, rename mydb1.parent;

show create table child;

alter table mydb1.parent algorithm=inplace, rename mydb0.parent;

show create table child;

use test;
alter table mydb1.child algorithm=copy, add constraint fk2 foreign key (b)
  references mydb0.parent(a);
use mydb1;
show create table child;

use test;
alter table mydb1.child algorithm=inplace, add constraint fk3 foreign key (c)
  references mydb0.parent(a);
use mydb1;
show create table child;

# bug#16286164: the fix requires correct DROP order
use test;
drop database mydb1;
drop database mydb0;

#
#
#
let $i=2;
while ($i)
{
	eval set @i=$i;
	let $engine=`select if(@i=1,'ndb','innodb')`;
	create database mydb0;
	use mydb0;
	eval create table t0 (a int primary key) engine = $engine;
	eval create table t1 (a int primary key) engine = $engine;

	alter table mydb0.t0 add constraint fk0 foreign key (a)
	      references mydb0.t1(a);

	alter table mydb0.t1 add constraint fk1 foreign key (a)
	      references mydb0.t0(a);

	drop database mydb0;

	dec $i;
}

let $i=2;
while ($i)
{
	eval set @i=$i;
	let $engine=`select if(@i=1,'ndb','innodb')`;
	create database mydb0;
	use mydb0;
	eval create table t0 (a int primary key) engine = $engine;

	create database mydb1;
	use mydb1;
	eval create table t1 (a int primary key) engine = $engine;

	alter table mydb0.t0 add constraint fk0 foreign key (a)
	      references mydb1.t1(a);

	alter table mydb1.t1 add constraint fk1 foreign key (a)
	      references mydb0.t0(a);

	--error 1217
	drop database mydb0;
	--error 1217
	drop database mydb1;

        alter table mydb0.t0 drop foreign key fk0;

	--error 1217
	drop database mydb0;

        # t1 point into mydb0, but this is ok
	drop database mydb1;
	drop database mydb0;

	dec $i;
}

Man Man