### This test checks whether limiting the number of ###
### concurrent triggers being executed is correct   ###
### and it eases the resource usage like job buffer ###

-- source include/have_ndb.inc

### Test limiting deferred parent key checking by: ###
###   Updating child table having FK constraints   ###

# Server that create tables and fill them
connect (ddl,localhost,root,,test);

# Servers provoke trigger handling
connect (s2,localhost,root,,test);
connect (s3,localhost,root,,test);

connection ddl;

--disable_warnings
drop table if exists parentt1, childt2, childt3;
--enable_warnings

create table parentt1(
  a int not null,
  b int not null,
  c int not null,
  unique key uk13(c)
)engine=ndb;

create table childt2(
  a int,
  b int,
  c int,
  d int,
  e int,
  foreign key fk21(a) references parentt1(c),
  foreign key fk22(b) references parentt1(c),
  foreign key fk23(c) references parentt1(c),
  foreign key fk24(d) references parentt1(c),
  foreign key fk25(e) references parentt1(c)
)engine=ndb;

create table childt3(
  a int,
  b int,
  c int,
  d int,
  e int,
  foreign key fk31(a) references parentt1(c),
  foreign key fk32(b) references parentt1(c),
  foreign key fk33(c) references parentt1(c),
  foreign key fk34(d) references parentt1(c),
  foreign key fk35(e) references parentt1(c)
)engine=ndb;


# Fill the parent table

let $max_rows = 10000;

--disable_query_log
let $loops = $max_rows;

while ($loops)
{
  eval insert into parentt1 values ($loops, $loops, $loops);
  dec $loops;
}


# Fill the child tables
let $loops = $max_rows;
while ($loops)
{
  eval insert into childt2 values ($loops, $loops, $loops, $loops, $loops);
  eval insert into childt3 values ($loops, $loops, $loops, $loops, $loops);
  dec $loops;
}
--enable_query_log

# Update the children such that the updated value will be checked against
# the parent table, as a deferred trigger.
# Provoke a high load on job buffer

let $query2 = update childt2 set a=$max_rows, b=$max_rows, c=$max_rows, d=$max_rows, e=$max_rows;
let $query3 = update childt3 set a=$max_rows, b=$max_rows, c=$max_rows, d=$max_rows, e=$max_rows;

connection s2;
send_eval $query2;

connection s3;
send_eval $query3;

connection s2;
--reap

connection s3;
--reap

# Cleanup
# Key constraints are dropped automatically when child tables are dropped
drop table childt2, childt3;
# Drop parent table
drop table parentt1;
