diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok
index c3ca14ab929b30f582523aedd1630d5f0a65d075..f72b47da6510d29fe80ec7eab47e73de241ea9cd 100644
--- a/BitKeeper/etc/logging_ok
+++ b/BitKeeper/etc/logging_ok
@@ -102,6 +102,7 @@ miguel@light.local
 miguel@sartre.local
 mikron@c-fb0ae253.1238-1-64736c10.cust.bredbandsbolaget.se
 mikron@mikael-ronstr-ms-dator.local
+mleich@mysql.com
 mmatthew@markslaptop.
 monty@bitch.mysql.fi
 monty@butch.
diff --git a/mysql-test/include/ps_modify.inc b/mysql-test/include/ps_modify.inc
index 04c5cbaad6b22cf9a479590f0c34c13931f70eee..ba7ccefdd98abaa60c4f65cb082171f008cc5122 100644
--- a/mysql-test/include/ps_modify.inc
+++ b/mysql-test/include/ps_modify.inc
@@ -110,10 +110,10 @@ select a,b from t1 where a=@arg00;
 set @arg00=NULL;
 set @arg01=2;
 execute stmt1 using @arg00, @arg01;
-select a,b from t1;
+select a,b from t1 order by a;
 set @arg00=0;
 execute stmt1 using @arg01, @arg00;
-select a,b from t1;
+select a,b from t1 order by a;
 
 ## update with subquery and several parameters
 set @arg00=23;
@@ -134,7 +134,7 @@ prepare stmt1 from 'update t1 set a=? where b=?
                     and a not in (select ? from t2
                               where b = ? or a = ?)';
 execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
-select a,b from t1 ;
+select a,b from t1 order by a;
 drop table t2 ;
 
 ## update with parameters in limit
@@ -202,7 +202,7 @@ set @arg01=1 ;
 prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
                     on duplicate key update a=a + ?, b=concat(b,''modified'') ';
 execute stmt1 using @arg00, @arg01;
-select * from t1;
+select * from t1 order by a;
 set @arg00=81 ;
 set @arg01=1 ;
 --error 1062
@@ -221,17 +221,17 @@ set @updated="updated" ;
 insert into t1 values(1000,'x1000_1') ;
 insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
                on duplicate key update a = a + @100, b = concat(b,@updated) ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 delete from t1 where a >= 1000 ;
 insert into t1 values(1000,'x1000_1') ;
 prepare stmt1 from ' insert into t1 values(?,?),(?,?)
                on duplicate key update a = a + ?, b = concat(b,?) ';
 execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 delete from t1 where a >= 1000 ;
 insert into t1 values(1000,'x1000_1') ;
 execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 delete from t1 where a >= 1000 ;
 
 ## replace
diff --git a/mysql-test/include/ps_modify1.inc b/mysql-test/include/ps_modify1.inc
index 0b192a526254d2485b644ffdbfcf9ece871920e4..da3bea806693ef9383420b0b78f778af3b9db0f4 100644
--- a/mysql-test/include/ps_modify1.inc
+++ b/mysql-test/include/ps_modify1.inc
@@ -45,19 +45,19 @@
 set @duplicate='duplicate ' ;
 set @1000=1000 ;
 set @5=5 ;
-select a,b from t1 where a < 5 ;
+select a,b from t1 where a < 5 order by a ;
 --enable_info
 insert into t1 select a + @1000, concat(@duplicate,b) from t1
 where a < @5 ;
 --disable_info
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 delete from t1 where a >= 1000 ;
 prepare stmt1 from ' insert into t1 select a + ?, concat(?,b) from t1
 where a < ? ' ;
 --enable_info
 execute stmt1 using @1000, @duplicate, @5;
 --disable_info
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 delete from t1 where a >= 1000 ;
 
 set @float=1.00;
@@ -78,7 +78,7 @@ select b, a + @100 from t1
   where (a,b) in ( select sqrt(a+@1)+CAST(@float AS signed),b 
                  from t1);
 --disable_info
-select a,b from t2;
+select a,b from t2 order by a ;
 delete from t2 ;
 prepare stmt1 from ' insert into t2 (b,a) 
 select ?, sum(first.a)
@@ -93,5 +93,5 @@ select b, a + ? from t1
 --enable_info
 execute stmt1 using @duplicate, @5, @five, @2, @100, @1, @float ;
 --disable_info
-select a,b from t2;
+select a,b from t2 order by a ;
 drop table t2;
diff --git a/mysql-test/r/ps_2myisam.result b/mysql-test/r/ps_2myisam.result
index 7e183118e6199fd37dc7e527356ba124d92ec70d..13b54973b8d9c75e18c2299d2510afe71e3372c6 100644
--- a/mysql-test/r/ps_2myisam.result
+++ b/mysql-test/r/ps_2myisam.result
@@ -1016,15 +1016,15 @@ set @arg01=2;
 execute stmt1 using @arg00, @arg01;
 Warnings:
 Warning	1263	Data truncated; NULL supplied to NOT NULL column 'a' at row 1
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
-1	one
 0	two
+1	one
 3	three
 4	four
 set @arg00=0;
 execute stmt1 using @arg01, @arg00;
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
 1	one
 2	two
@@ -1048,7 +1048,7 @@ prepare stmt1 from 'update t1 set a=? where b=?
                     and a not in (select ? from t2
                               where b = ? or a = ?)';
 execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
-select a,b from t1 ;
+select a,b from t1 order by a;
 a	b
 1	one
 2	two
@@ -1142,19 +1142,19 @@ set @arg01=1 ;
 prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
                     on duplicate key update a=a + ?, b=concat(b,''modified'') ';
 execute stmt1 using @arg00, @arg01;
-select * from t1;
+select * from t1 order by a;
 a	b
+0	NULL
 1	one
 2	two
 3	three
 4	four
 5	five
 7	sixmodified
-0	NULL
 8	eight
+9	nine
 81	8-1
 82	8-2
-9	nine
 set @arg00=81 ;
 set @arg01=1 ;
 execute stmt1 using @arg00, @arg01;
@@ -1170,7 +1170,7 @@ set @updated="updated" ;
 insert into t1 values(1000,'x1000_1') ;
 insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
 on duplicate key update a = a + @100, b = concat(b,@updated) ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
@@ -1179,14 +1179,14 @@ insert into t1 values(1000,'x1000_1') ;
 prepare stmt1 from ' insert into t1 values(?,?),(?,?)
                on duplicate key update a = a + ?, b = concat(b,?) ';
 execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
 delete from t1 where a >= 1000 ;
 insert into t1 values(1000,'x1000_1') ;
 execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1200	x1000_1updatedupdated
 delete from t1 where a >= 1000 ;
@@ -1195,37 +1195,37 @@ ERROR HY000: This command is not supported in the prepared statement protocol ye
 set @duplicate='duplicate ' ;
 set @1000=1000 ;
 set @5=5 ;
-select a,b from t1 where a < 5 ;
+select a,b from t1 where a < 5 order by a ;
 a	b
+0	NULL
 1	one
 2	two
 3	three
 4	four
-0	NULL
 insert into t1 select a + @1000, concat(@duplicate,b) from t1
 where a < @5 ;
 affected rows: 5
 info: Records: 5  Duplicates: 0  Warnings: 0
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
+1000	NULL
 1001	duplicate one
 1002	duplicate two
 1003	duplicate three
 1004	duplicate four
-1000	NULL
 delete from t1 where a >= 1000 ;
 prepare stmt1 from ' insert into t1 select a + ?, concat(?,b) from t1
 where a < ? ' ;
 execute stmt1 using @1000, @duplicate, @5;
 affected rows: 5
 info: Records: 5  Duplicates: 0  Warnings: 0
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
-1004	duplicate four
-1003	duplicate three
-1002	duplicate two
-1001	duplicate one
 1000	NULL
+1001	duplicate one
+1002	duplicate two
+1003	duplicate three
+1004	duplicate four
 delete from t1 where a >= 1000 ;
 set @float=1.00;
 set @five='five' ;
@@ -1243,15 +1243,15 @@ where (a,b) in ( select sqrt(a+@1)+CAST(@float AS signed),b
 from t1);
 affected rows: 8
 info: Records: 8  Duplicates: 0  Warnings: 0
-select a,b from t2;
+select a,b from t2 order by a ;
 a	b
-81	duplicate
-82	duplicate
-8	duplicate
+3	duplicate
 4	duplicate
-9	duplicate
 7	duplicate
-3	duplicate
+8	duplicate
+9	duplicate
+81	duplicate
+82	duplicate
 103	three
 delete from t2 ;
 prepare stmt1 from ' insert into t2 (b,a) 
@@ -1267,15 +1267,15 @@ select b, a + ? from t1
 execute stmt1 using @duplicate, @5, @five, @2, @100, @1, @float ;
 affected rows: 8
 info: Records: 8  Duplicates: 0  Warnings: 0
-select a,b from t2;
+select a,b from t2 order by a ;
 a	b
-81	duplicate
-82	duplicate
-8	duplicate
+3	duplicate
 4	duplicate
-9	duplicate
 7	duplicate
-3	duplicate
+8	duplicate
+9	duplicate
+81	duplicate
+82	duplicate
 103	three
 drop table t2;
 drop table t1, t_many_col_types;
diff --git a/mysql-test/r/ps_3innodb.result b/mysql-test/r/ps_3innodb.result
index d33e3c610c02e2952fdb17620ae6463537dc4876..17e56b8e0010b9e6263c492587fa5d27072c0dea 100644
--- a/mysql-test/r/ps_3innodb.result
+++ b/mysql-test/r/ps_3innodb.result
@@ -1016,7 +1016,7 @@ set @arg01=2;
 execute stmt1 using @arg00, @arg01;
 Warnings:
 Warning	1263	Data truncated; NULL supplied to NOT NULL column 'a' at row 1
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
 0	two
 1	one
@@ -1024,7 +1024,7 @@ a	b
 4	four
 set @arg00=0;
 execute stmt1 using @arg01, @arg00;
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
 1	one
 2	two
@@ -1048,7 +1048,7 @@ prepare stmt1 from 'update t1 set a=? where b=?
                     and a not in (select ? from t2
                               where b = ? or a = ?)';
 execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
-select a,b from t1 ;
+select a,b from t1 order by a;
 a	b
 1	one
 2	two
@@ -1142,7 +1142,7 @@ set @arg01=1 ;
 prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
                     on duplicate key update a=a + ?, b=concat(b,''modified'') ';
 execute stmt1 using @arg00, @arg01;
-select * from t1;
+select * from t1 order by a;
 a	b
 0	NULL
 1	one
@@ -1170,7 +1170,7 @@ set @updated="updated" ;
 insert into t1 values(1000,'x1000_1') ;
 insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
 on duplicate key update a = a + @100, b = concat(b,@updated) ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
@@ -1179,14 +1179,14 @@ insert into t1 values(1000,'x1000_1') ;
 prepare stmt1 from ' insert into t1 values(?,?),(?,?)
                on duplicate key update a = a + ?, b = concat(b,?) ';
 execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
 delete from t1 where a >= 1000 ;
 insert into t1 values(1000,'x1000_1') ;
 execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1200	x1000_1updatedupdated
 delete from t1 where a >= 1000 ;
@@ -1195,7 +1195,7 @@ ERROR HY000: This command is not supported in the prepared statement protocol ye
 set @duplicate='duplicate ' ;
 set @1000=1000 ;
 set @5=5 ;
-select a,b from t1 where a < 5 ;
+select a,b from t1 where a < 5 order by a ;
 a	b
 0	NULL
 1	one
@@ -1206,7 +1206,7 @@ insert into t1 select a + @1000, concat(@duplicate,b) from t1
 where a < @5 ;
 affected rows: 5
 info: Records: 5  Duplicates: 0  Warnings: 0
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	NULL
 1001	duplicate one
@@ -1219,7 +1219,7 @@ where a < ? ' ;
 execute stmt1 using @1000, @duplicate, @5;
 affected rows: 5
 info: Records: 5  Duplicates: 0  Warnings: 0
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	NULL
 1001	duplicate one
@@ -1243,7 +1243,7 @@ where (a,b) in ( select sqrt(a+@1)+CAST(@float AS signed),b
 from t1);
 affected rows: 8
 info: Records: 8  Duplicates: 0  Warnings: 0
-select a,b from t2;
+select a,b from t2 order by a ;
 a	b
 3	duplicate
 4	duplicate
@@ -1267,7 +1267,7 @@ select b, a + ? from t1
 execute stmt1 using @duplicate, @5, @five, @2, @100, @1, @float ;
 affected rows: 8
 info: Records: 8  Duplicates: 0  Warnings: 0
-select a,b from t2;
+select a,b from t2 order by a ;
 a	b
 3	duplicate
 4	duplicate
diff --git a/mysql-test/r/ps_4heap.result b/mysql-test/r/ps_4heap.result
index b5888795666be225c7930c7b25cf7b38c36c0d03..afca7c9f1437faf55c60d7f764bc56782cccba39 100644
--- a/mysql-test/r/ps_4heap.result
+++ b/mysql-test/r/ps_4heap.result
@@ -1017,15 +1017,15 @@ set @arg01=2;
 execute stmt1 using @arg00, @arg01;
 Warnings:
 Warning	1263	Data truncated; NULL supplied to NOT NULL column 'a' at row 1
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
-1	one
 0	two
+1	one
 3	three
 4	four
 set @arg00=0;
 execute stmt1 using @arg01, @arg00;
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
 1	one
 2	two
@@ -1049,7 +1049,7 @@ prepare stmt1 from 'update t1 set a=? where b=?
                     and a not in (select ? from t2
                               where b = ? or a = ?)';
 execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
-select a,b from t1 ;
+select a,b from t1 order by a;
 a	b
 1	one
 2	two
@@ -1143,19 +1143,19 @@ set @arg01=1 ;
 prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
                     on duplicate key update a=a + ?, b=concat(b,''modified'') ';
 execute stmt1 using @arg00, @arg01;
-select * from t1;
+select * from t1 order by a;
 a	b
+0	NULL
 1	one
 2	two
 3	three
 4	four
 5	five
 7	sixmodified
-0	NULL
 8	eight
+9	nine
 81	8-1
 82	8-2
-9	nine
 set @arg00=81 ;
 set @arg01=1 ;
 execute stmt1 using @arg00, @arg01;
@@ -1171,23 +1171,23 @@ set @updated="updated" ;
 insert into t1 values(1000,'x1000_1') ;
 insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
 on duplicate key update a = a + @100, b = concat(b,@updated) ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
-1100	x1000_1updated
 1000	x1000_3
+1100	x1000_1updated
 delete from t1 where a >= 1000 ;
 insert into t1 values(1000,'x1000_1') ;
 prepare stmt1 from ' insert into t1 values(?,?),(?,?)
                on duplicate key update a = a + ?, b = concat(b,?) ';
 execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
 delete from t1 where a >= 1000 ;
 insert into t1 values(1000,'x1000_1') ;
 execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1200	x1000_1updatedupdated
 delete from t1 where a >= 1000 ;
@@ -1196,37 +1196,37 @@ ERROR HY000: This command is not supported in the prepared statement protocol ye
 set @duplicate='duplicate ' ;
 set @1000=1000 ;
 set @5=5 ;
-select a,b from t1 where a < 5 ;
+select a,b from t1 where a < 5 order by a ;
 a	b
+0	NULL
 1	one
 2	two
 3	three
 4	four
-0	NULL
 insert into t1 select a + @1000, concat(@duplicate,b) from t1
 where a < @5 ;
 affected rows: 5
 info: Records: 5  Duplicates: 0  Warnings: 0
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
-1002	duplicate two
+1000	NULL
 1001	duplicate one
+1002	duplicate two
 1003	duplicate three
 1004	duplicate four
-1000	NULL
 delete from t1 where a >= 1000 ;
 prepare stmt1 from ' insert into t1 select a + ?, concat(?,b) from t1
 where a < ? ' ;
 execute stmt1 using @1000, @duplicate, @5;
 affected rows: 5
 info: Records: 5  Duplicates: 0  Warnings: 0
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	NULL
-1004	duplicate four
-1003	duplicate three
-1002	duplicate two
 1001	duplicate one
+1002	duplicate two
+1003	duplicate three
+1004	duplicate four
 delete from t1 where a >= 1000 ;
 set @float=1.00;
 set @five='five' ;
@@ -1244,15 +1244,15 @@ where (a,b) in ( select sqrt(a+@1)+CAST(@float AS signed),b
 from t1);
 affected rows: 8
 info: Records: 8  Duplicates: 0  Warnings: 0
-select a,b from t2;
+select a,b from t2 order by a ;
 a	b
-81	duplicate
-82	duplicate
-8	duplicate
+3	duplicate
 4	duplicate
-9	duplicate
 7	duplicate
-3	duplicate
+8	duplicate
+9	duplicate
+81	duplicate
+82	duplicate
 103	three
 delete from t2 ;
 prepare stmt1 from ' insert into t2 (b,a) 
@@ -1268,15 +1268,15 @@ select b, a + ? from t1
 execute stmt1 using @duplicate, @5, @five, @2, @100, @1, @float ;
 affected rows: 8
 info: Records: 8  Duplicates: 0  Warnings: 0
-select a,b from t2;
+select a,b from t2 order by a ;
 a	b
-81	duplicate
-82	duplicate
-8	duplicate
+3	duplicate
 4	duplicate
-9	duplicate
 7	duplicate
-3	duplicate
+8	duplicate
+9	duplicate
+81	duplicate
+82	duplicate
 103	three
 drop table t2;
 drop table t1, t_many_col_types;
diff --git a/mysql-test/r/ps_5merge.result b/mysql-test/r/ps_5merge.result
index 7d78f4b9e1c9536787a173c7dc94791163b86ced..cb894df53d2bb6a1536163d72420e1a73482eba4 100644
--- a/mysql-test/r/ps_5merge.result
+++ b/mysql-test/r/ps_5merge.result
@@ -1059,19 +1059,19 @@ set @arg01=2;
 execute stmt1 using @arg00, @arg01;
 Warnings:
 Warning	1263	Data truncated; NULL supplied to NOT NULL column 'a' at row 1
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
-3	three
 0	two
 1	one
+3	three
 4	four
 set @arg00=0;
 execute stmt1 using @arg01, @arg00;
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
-3	three
-2	two
 1	one
+2	two
+3	three
 4	four
 set @arg00=23;
 set @arg01='two';
@@ -1091,11 +1091,11 @@ prepare stmt1 from 'update t1 set a=? where b=?
                     and a not in (select ? from t2
                               where b = ? or a = ?)';
 execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
-select a,b from t1 ;
+select a,b from t1 order by a;
 a	b
-3	three
-2	two
 1	one
+2	two
+3	three
 4	four
 drop table t2 ;
 set @arg00=1;
@@ -1185,19 +1185,19 @@ set @arg01=1 ;
 prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
                     on duplicate key update a=a + ?, b=concat(b,''modified'') ';
 execute stmt1 using @arg00, @arg01;
-select * from t1;
+select * from t1 order by a;
 a	b
-4	four
-3	three
-2	two
+0	NULL
 1	one
+2	two
+3	three
+4	four
 5	five
 7	sixmodified
-0	NULL
 8	eight
+9	nine
 81	8-1
 82	8-2
-9	nine
 set @arg00=81 ;
 set @arg01=1 ;
 execute stmt1 using @arg00, @arg01;
@@ -1213,7 +1213,7 @@ set @updated="updated" ;
 insert into t1 values(1000,'x1000_1') ;
 insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
 on duplicate key update a = a + @100, b = concat(b,@updated) ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
@@ -1222,14 +1222,14 @@ insert into t1 values(1000,'x1000_1') ;
 prepare stmt1 from ' insert into t1 values(?,?),(?,?)
                on duplicate key update a = a + ?, b = concat(b,?) ';
 execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
 delete from t1 where a >= 1000 ;
 insert into t1 values(1000,'x1000_1') ;
 execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1200	x1000_1updatedupdated
 delete from t1 where a >= 1000 ;
@@ -2254,19 +2254,19 @@ set @arg01=2;
 execute stmt1 using @arg00, @arg01;
 Warnings:
 Warning	1263	Data truncated; NULL supplied to NOT NULL column 'a' at row 1
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
-3	three
 0	two
 1	one
+3	three
 4	four
 set @arg00=0;
 execute stmt1 using @arg01, @arg00;
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
-3	three
-2	two
 1	one
+2	two
+3	three
 4	four
 set @arg00=23;
 set @arg01='two';
@@ -2286,11 +2286,11 @@ prepare stmt1 from 'update t1 set a=? where b=?
                     and a not in (select ? from t2
                               where b = ? or a = ?)';
 execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
-select a,b from t1 ;
+select a,b from t1 order by a;
 a	b
-3	three
-2	two
 1	one
+2	two
+3	three
 4	four
 drop table t2 ;
 set @arg00=1;
@@ -2380,19 +2380,19 @@ set @arg01=1 ;
 prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
                     on duplicate key update a=a + ?, b=concat(b,''modified'') ';
 execute stmt1 using @arg00, @arg01;
-select * from t1;
+select * from t1 order by a;
 a	b
-4	four
-3	three
-2	two
+0	NULL
 1	one
+2	two
+3	three
+4	four
 5	five
 7	sixmodified
-0	NULL
 8	eight
+9	nine
 81	8-1
 82	8-2
-9	nine
 set @arg00=81 ;
 set @arg01=1 ;
 execute stmt1 using @arg00, @arg01;
@@ -2408,7 +2408,7 @@ set @updated="updated" ;
 insert into t1 values(1000,'x1000_1') ;
 insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
 on duplicate key update a = a + @100, b = concat(b,@updated) ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
@@ -2417,14 +2417,14 @@ insert into t1 values(1000,'x1000_1') ;
 prepare stmt1 from ' insert into t1 values(?,?),(?,?)
                on duplicate key update a = a + ?, b = concat(b,?) ';
 execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
 delete from t1 where a >= 1000 ;
 insert into t1 values(1000,'x1000_1') ;
 execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1200	x1000_1updatedupdated
 delete from t1 where a >= 1000 ;
diff --git a/mysql-test/r/ps_6bdb.result b/mysql-test/r/ps_6bdb.result
index c5cde1b755a0fe24a42b8b7432ca0080b6fe4ddb..0ff2025ee2a0f217ccb97d7903c1f3494f47ffcf 100644
--- a/mysql-test/r/ps_6bdb.result
+++ b/mysql-test/r/ps_6bdb.result
@@ -1016,7 +1016,7 @@ set @arg01=2;
 execute stmt1 using @arg00, @arg01;
 Warnings:
 Warning	1263	Data truncated; NULL supplied to NOT NULL column 'a' at row 1
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
 0	two
 1	one
@@ -1024,7 +1024,7 @@ a	b
 4	four
 set @arg00=0;
 execute stmt1 using @arg01, @arg00;
-select a,b from t1;
+select a,b from t1 order by a;
 a	b
 1	one
 2	two
@@ -1048,7 +1048,7 @@ prepare stmt1 from 'update t1 set a=? where b=?
                     and a not in (select ? from t2
                               where b = ? or a = ?)';
 execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
-select a,b from t1 ;
+select a,b from t1 order by a;
 a	b
 1	one
 2	two
@@ -1142,7 +1142,7 @@ set @arg01=1 ;
 prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
                     on duplicate key update a=a + ?, b=concat(b,''modified'') ';
 execute stmt1 using @arg00, @arg01;
-select * from t1;
+select * from t1 order by a;
 a	b
 0	NULL
 1	one
@@ -1170,7 +1170,7 @@ set @updated="updated" ;
 insert into t1 values(1000,'x1000_1') ;
 insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
 on duplicate key update a = a + @100, b = concat(b,@updated) ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
@@ -1179,14 +1179,14 @@ insert into t1 values(1000,'x1000_1') ;
 prepare stmt1 from ' insert into t1 values(?,?),(?,?)
                on duplicate key update a = a + ?, b = concat(b,?) ';
 execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	x1000_3
 1100	x1000_1updated
 delete from t1 where a >= 1000 ;
 insert into t1 values(1000,'x1000_1') ;
 execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1200	x1000_1updatedupdated
 delete from t1 where a >= 1000 ;
@@ -1195,7 +1195,7 @@ ERROR HY000: This command is not supported in the prepared statement protocol ye
 set @duplicate='duplicate ' ;
 set @1000=1000 ;
 set @5=5 ;
-select a,b from t1 where a < 5 ;
+select a,b from t1 where a < 5 order by a ;
 a	b
 0	NULL
 1	one
@@ -1206,7 +1206,7 @@ insert into t1 select a + @1000, concat(@duplicate,b) from t1
 where a < @5 ;
 affected rows: 5
 info: Records: 5  Duplicates: 0  Warnings: 0
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	NULL
 1001	duplicate one
@@ -1219,7 +1219,7 @@ where a < ? ' ;
 execute stmt1 using @1000, @duplicate, @5;
 affected rows: 5
 info: Records: 5  Duplicates: 0  Warnings: 0
-select a,b from t1 where a >= 1000 ;
+select a,b from t1 where a >= 1000 order by a ;
 a	b
 1000	NULL
 1001	duplicate one
@@ -1243,7 +1243,7 @@ where (a,b) in ( select sqrt(a+@1)+CAST(@float AS signed),b
 from t1);
 affected rows: 8
 info: Records: 8  Duplicates: 0  Warnings: 0
-select a,b from t2;
+select a,b from t2 order by a ;
 a	b
 3	duplicate
 4	duplicate
@@ -1267,7 +1267,7 @@ select b, a + ? from t1
 execute stmt1 using @duplicate, @5, @five, @2, @100, @1, @float ;
 affected rows: 8
 info: Records: 8  Duplicates: 0  Warnings: 0
-select a,b from t2;
+select a,b from t2 order by a ;
 a	b
 3	duplicate
 4	duplicate
diff --git a/ndb/src/kernel/vm/Configuration.cpp b/ndb/src/kernel/vm/Configuration.cpp
index 8907cb9f640601520953787b70bd17613c0d2e42..3099c71b7923291714670bededad4c2739ec702d 100644
--- a/ndb/src/kernel/vm/Configuration.cpp
+++ b/ndb/src/kernel/vm/Configuration.cpp
@@ -159,6 +159,7 @@ Configuration::Configuration()
   _initialStart = false;
   _daemonMode = false;
   m_config_retriever= 0;
+  m_clusterConfig= 0;
 }
 
 Configuration::~Configuration(){
diff --git a/ndb/test/ndbapi/Makefile.am b/ndb/test/ndbapi/Makefile.am
index 95fcf621e896f4ae048e1af6dad3403f049cf0b0..787589dd9b6b8ff2141a2f577e09b4e01633c8b0 100644
--- a/ndb/test/ndbapi/Makefile.am
+++ b/ndb/test/ndbapi/Makefile.am
@@ -30,7 +30,7 @@ testSystemRestart \
 testTimeout \
 testTransactions \
 testDeadlock \
-test_event ndbapi_slow_select testReadPerf
+test_event ndbapi_slow_select testReadPerf testLcp
 
 #flexTimedAsynch
 #testBlobs
@@ -68,6 +68,7 @@ testDeadlock_SOURCES = testDeadlock.cpp
 test_event_SOURCES = test_event.cpp
 ndbapi_slow_select_SOURCES = slow_select.cpp
 testReadPerf_SOURCES = testReadPerf.cpp
+testLcp_SOURCES = testLcp.cpp
 
 INCLUDES_LOC = -I$(top_srcdir)/ndb/include/kernel
 
diff --git a/ndb/test/ndbapi/bank/Bank.cpp b/ndb/test/ndbapi/bank/Bank.cpp
index 7a2c5b057a14427645ccdb150102064ba15a432a..4581d1a9842a5eb766f71be4d1ce6bcf487a9877 100644
--- a/ndb/test/ndbapi/bank/Bank.cpp
+++ b/ndb/test/ndbapi/bank/Bank.cpp
@@ -2097,47 +2097,50 @@ int Bank::increaseSystemValue(SystemValueId sysValId, Uint64 &value){
    *
    */
 
+  DBUG_ENTER("Bank::increaseSystemValue");
+
   int check;
     
   NdbConnection* pTrans = m_ndb.startTransaction();
   if (pTrans == NULL){
     ERR(m_ndb.getNdbError());
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
     
   NdbOperation* pOp = pTrans->getNdbOperation("SYSTEM_VALUES");
   if (pOp == NULL) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
     
   check = pOp->readTupleExclusive();
+  //  check = pOp->readTuple();
   if( check == -1 ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
     
   check = pOp->equal("SYSTEM_VALUES_ID", sysValId);
   if( check == -1 ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
     
   NdbRecAttr* valueRec = pOp->getValue("VALUE");
   if( valueRec ==NULL ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
     
   check = pTrans->execute(NoCommit);
   if( check == -1 ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
     
   value = valueRec->u_64_value();
@@ -2147,49 +2150,56 @@ int Bank::increaseSystemValue(SystemValueId sysValId, Uint64 &value){
   if (pOp2 == NULL) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
     
   check = pOp2->updateTuple();
   if( check == -1 ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
     
   check = pOp2->equal("SYSTEM_VALUES_ID", sysValId);
   if( check == -1 ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
     
   check = pOp2->setValue("VALUE", value);
   if( check == -1 ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
+  }
+
+  check = pTrans->execute(NoCommit);
+  if( check == -1 ) {
+    ERR(pTrans->getNdbError());
+    m_ndb.closeTransaction(pTrans);
+    DBUG_RETURN(NDBT_FAILED);
   }
 
   NdbOperation* pOp3 = pTrans->getNdbOperation("SYSTEM_VALUES");
   if (pOp3 == NULL) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
 
   check = pOp3->readTuple();
   if( check == -1 ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
     
   check = pOp3->equal("SYSTEM_VALUES_ID", sysValId);
   if( check == -1 ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
 
   // Read new value
@@ -2197,28 +2207,31 @@ int Bank::increaseSystemValue(SystemValueId sysValId, Uint64 &value){
   if( valueNewRec ==NULL ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
 
   check = pTrans->execute(Commit);
   if( check == -1 ) {
     ERR(pTrans->getNdbError());
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
 
   // Check that value updated equals the value we read after the update
   if (valueNewRec->u_64_value() != value){
+
+    printf("value actual=%lld\n", valueNewRec->u_64_value());
+    printf("value expected=%lld actual=%lld\n", value, valueNewRec->u_64_value());
+
+    DBUG_PRINT("info", ("value expected=%ld actual=%ld", value, valueNewRec->u_64_value()));
     g_err << "getNextTransactionId: value was not updated" << endl;
     m_ndb.closeTransaction(pTrans);
-    return NDBT_FAILED;
+    DBUG_RETURN(NDBT_FAILED);
   }
 
   m_ndb.closeTransaction(pTrans);
-    
-
-  return 0;
 
+  DBUG_RETURN(0);
 }
 
 int Bank::increaseSystemValue2(SystemValueId sysValId, Uint64 &value){
diff --git a/ndb/test/ndbapi/testLcp.cpp b/ndb/test/ndbapi/testLcp.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c92be091a97d68bb22bea0d37e98429d0b0ea1bb
--- /dev/null
+++ b/ndb/test/ndbapi/testLcp.cpp
@@ -0,0 +1,320 @@
+
+#include <NDBT.hpp>
+#include <NdbApi.hpp>
+#include <NdbRestarter.hpp>
+#include <HugoOperations.hpp>
+#include <UtilTransactions.hpp>
+#include <signaldata/DumpStateOrd.hpp>
+
+struct CASE 
+{
+  bool start_row;
+  bool end_row;
+  bool curr_row;
+  const char * op1;
+  const char * op2;
+  int val;
+};
+
+static CASE g_ops[] =
+{
+  { false, true,  false, "INSERT", 0,        0 },
+  { false, true,  false, "INSERT", "UPDATE", 0 },
+  { false, false, false, "INSERT", "DELETE", 0 },
+  { true,  true,  false, "UPDATE", 0,        0 },
+  { true,  true,  false, "UPDATE", "UPDATE", 0 },
+  { true,  false, false, "UPDATE", "DELETE", 0 },
+  { true,  false, false, "DELETE", 0,        0 },
+  { true,  true,  false, "DELETE", "INSERT", 0 }
+};
+const size_t OP_COUNT = (sizeof(g_ops)/sizeof(g_ops[0]));
+
+static Ndb* g_ndb = 0;
+static CASE* g_cases;
+static HugoOperations* g_hugo_ops;
+
+static int g_rows = 1000;
+static int g_setup_tables = 1;
+static const char * g_tablename = "T1";
+static const NdbDictionary::Table* g_table = 0;
+static NdbRestarter g_restarter;
+
+static int init_ndb(int argc, char** argv);
+static int parse_args(int argc, char** argv);
+static int connect_ndb();
+static int drop_all_tables();
+static int load_table();
+static int pause_lcp();
+static int do_op(int row);
+static int continue_lcp(int error);
+static int commit();
+static int restart();
+static int validate();
+
+#define require(x) { bool b = x; if(!b){g_err << __LINE__ << endl; abort();}}
+
+int 
+main(int argc, char ** argv){
+
+  require(!init_ndb(argc, argv));
+  require(!parse_args(argc, argv));
+  require(!connect_ndb());
+  
+  if(g_setup_tables){
+    require(!drop_all_tables());
+    
+    if(NDBT_Tables::createTable(g_ndb, g_tablename) != 0){
+      exit(-1);
+    }
+  }
+  
+  g_table = g_ndb->getDictionary()->getTable(g_tablename);
+  if(g_table == 0){
+    g_err << "Failed to retreive table: " << g_tablename << endl;
+    exit(-1);
+  }
+  require(g_hugo_ops = new HugoOperations(* g_table));
+  require(!g_hugo_ops->startTransaction(g_ndb));
+  
+  g_cases= new CASE[g_rows];
+  require(!load_table());
+  
+  g_info << "Performing all ops wo/ inteference of LCP" << endl;
+  
+  g_info << "Testing pre LCP operations, ZLCP_OP_WRITE_RT_BREAK" << endl;
+  g_info << "  where ZLCP_OP_WRITE_RT_BREAK is finished before SAVE_PAGES"
+	 << endl;
+  require(!pause_lcp());
+  for(size_t j = 0; j<g_rows; j++){
+    require(!do_op(j));
+  }
+  require(!continue_lcp(5900));
+  require(!commit());
+  require(!restart());
+  require(!validate());
+  
+  g_info << "Testing pre LCP operations, ZLCP_OP_WRITE_RT_BREAK" << endl;
+  g_info << "  where ZLCP_OP_WRITE_RT_BREAK is finished after SAVE_PAGES"
+	 << endl;
+  require(!load_table());
+  require(!pause_lcp());
+  for(size_t j = 0; j<g_rows; j++){
+    require(!do_op(j));
+  }
+  require(!continue_lcp(5901));
+  require(!commit());
+  require(!restart());
+  require(!validate());
+  
+  g_info << "Testing pre LCP operations, undo-ed at commit" << endl;
+  require(!load_table());
+  require(!pause_lcp());
+  for(size_t j = 0; j<g_rows; j++){
+    require(!do_op(j));
+  }
+  require(!continue_lcp(5902));
+  require(!commit());
+  require(!continue_lcp(5903));
+  require(!restart());
+  require(!validate());
+}
+
+static int init_ndb(int argc, char** argv)
+{
+  return 0;
+}
+
+static int parse_args(int argc, char** argv)
+{
+  return 0;
+}
+
+static int connect_ndb()
+{
+  g_ndb = new Ndb("TEST_DB");
+  g_ndb->init();
+  if(g_ndb->waitUntilReady(30) == 0){
+    int args[] = { DumpStateOrd::DihMaxTimeBetweenLCP };
+    return g_restarter.dumpStateAllNodes(args, 1);
+  }
+  return -1;
+}
+
+static int disconnect_ndb()
+{
+  delete g_ndb;
+  g_ndb = 0;
+  g_table = 0;
+  return 0;
+}
+
+static int drop_all_tables()
+{
+  NdbDictionary::Dictionary * dict = g_ndb->getDictionary();
+  require(dict);
+
+  BaseString db = g_ndb->getDatabaseName();
+  BaseString schema = g_ndb->getSchemaName();
+
+  NdbDictionary::Dictionary::List list;
+  if (dict->listObjects(list, NdbDictionary::Object::TypeUndefined) == -1){
+      g_err << "Failed to list tables: " << endl
+	    << dict->getNdbError() << endl;
+      return -1;
+  }
+  for (unsigned i = 0; i < list.count; i++) {
+    NdbDictionary::Dictionary::List::Element& elt = list.elements[i];
+    switch (elt.type) {
+    case NdbDictionary::Object::SystemTable:
+    case NdbDictionary::Object::UserTable:
+      g_ndb->setDatabaseName(elt.database);
+      g_ndb->setSchemaName(elt.schema);
+      if(dict->dropTable(elt.name) != 0){
+	g_err << "Failed to drop table: " 
+	      << elt.database << "/" << elt.schema << "/" << elt.name <<endl;
+	g_err << dict->getNdbError() << endl;
+	return -1;
+      }
+      break;
+    case NdbDictionary::Object::UniqueHashIndex:
+    case NdbDictionary::Object::OrderedIndex:
+    case NdbDictionary::Object::HashIndexTrigger:
+    case NdbDictionary::Object::IndexTrigger:
+    case NdbDictionary::Object::SubscriptionTrigger:
+    case NdbDictionary::Object::ReadOnlyConstraint:
+    default:
+      break;
+    }
+  }
+  
+  g_ndb->setDatabaseName(db.c_str());
+  g_ndb->setSchemaName(schema.c_str());
+  
+  return 0;
+}
+
+static int load_table()
+{
+  UtilTransactions clear(* g_table);
+  require(!clear.clearTable(g_ndb));
+  
+  HugoOperations ops(* g_table);
+  require(!ops.startTransaction(g_ndb));
+  for(size_t i = 0; i<g_rows; i++){
+    g_cases[i] = g_ops[ i % OP_COUNT];
+    if(g_cases[i].start_row){
+      g_cases[i].curr_row = true;
+      g_cases[i].val = rand();
+      require(!ops.pkInsertRecord(g_ndb, i, 1, g_cases[i].val));
+    }
+    if((i+1) % 100 == 0){
+      require(!ops.execute_Commit(g_ndb));
+      require(!ops.getTransaction()->restart());
+    }
+  }
+  if((g_rows+1) % 100 != 0)
+    require(!ops.execute_Commit(g_ndb));
+  return 0;
+}
+
+static int pause_lcp()
+{
+  return 0;
+}
+
+static int do_op(int row)
+{
+  HugoOperations & ops = * g_hugo_ops;
+  if(strcmp(g_cases[row].op1, "INSERT") == 0){
+    require(!g_cases[row].curr_row);
+    g_cases[row].curr_row = true;
+    g_cases[row].val = rand();
+    require(!ops.pkInsertRecord(g_ndb, row, 1, g_cases[row].val));
+  } else if(strcmp(g_cases[row].op1, "UPDATE") == 0){
+    require(g_cases[row].curr_row);
+    g_cases[row].val = rand();
+    require(!ops.pkUpdateRecord(g_ndb, row, 1, g_cases[row].val));
+  } else if(strcmp(g_cases[row].op1, "DELETE") == 0){
+    require(g_cases[row].curr_row);    
+    g_cases[row].curr_row = false;
+    require(!ops.pkDeleteRecord(g_ndb, row, 1));
+  }
+
+  require(!ops.execute_NoCommit(g_ndb));
+  
+  if(g_cases[row].op2 == 0){
+  } else if(strcmp(g_cases[row].op2, "INSERT") == 0){
+    require(!g_cases[row].curr_row);
+    g_cases[row].curr_row = true;
+    g_cases[row].val = rand();
+    require(!ops.pkInsertRecord(g_ndb, row, 1, g_cases[row].val));
+  } else if(strcmp(g_cases[row].op2, "UPDATE") == 0){
+    require(g_cases[row].curr_row);
+    g_cases[row].val = rand();
+    require(!ops.pkUpdateRecord(g_ndb, row, 1, g_cases[row].val));
+  } else if(strcmp(g_cases[row].op2, "DELETE") == 0){
+    require(g_cases[row].curr_row);    
+    g_cases[row].curr_row = false;    
+    require(!ops.pkDeleteRecord(g_ndb, row, 1));
+  }
+  
+  if(g_cases[row].op2 != 0)
+    require(!ops.execute_NoCommit(g_ndb));  
+  return 0;
+}
+
+static int continue_lcp(int error)
+{
+  error = 0;
+  if(g_restarter.insertErrorInAllNodes(error) == 0){
+    int args[] = { DumpStateOrd::DihStartLcpImmediately };
+    return g_restarter.dumpStateAllNodes(args, 1);
+  }
+  return -1;
+}
+
+static int commit()
+{
+  HugoOperations & ops = * g_hugo_ops;  
+  int res = ops.execute_Commit(g_ndb);
+  if(res == 0){
+    return ops.getTransaction()->restart();
+  }
+  return res;
+}
+
+static int restart()
+{
+  g_info << "Restarting cluster" << endl;
+  disconnect_ndb();
+  delete g_hugo_ops;
+  
+  require(!g_restarter.restartAll());
+  require(!g_restarter.waitClusterStarted(30));
+  require(!connect_ndb());
+  
+  g_table = g_ndb->getDictionary()->getTable(g_tablename);
+  require(g_table);
+  require(g_hugo_ops = new HugoOperations(* g_table));
+  require(!g_hugo_ops->startTransaction(g_ndb));
+  return 0;
+}
+
+static int validate()
+{
+  HugoOperations ops(* g_table);
+  for(size_t i = 0; i<g_rows; i++){
+    require(g_cases[i].curr_row == g_cases[i].end_row);
+    require(!ops.startTransaction(g_ndb));
+    ops.pkReadRecord(g_ndb, i, 1);
+    int res = ops.execute_Commit(g_ndb);
+    if(g_cases[i].curr_row){
+      require(res == 0 && ops.verifyUpdatesValue(g_cases[i].val) == 0);
+    } else {
+      require(res == 626);
+    }
+    ops.closeTransaction(g_ndb);
+  }
+  return 0;
+}
+
diff --git a/ndb/test/src/NDBT_Test.cpp b/ndb/test/src/NDBT_Test.cpp
index 7ccc9e5588fa6b78008ba176c626edaf6a37f971..ba316bac01b9ac850e551655d1e7b7c97effdb2d 100644
--- a/ndb/test/src/NDBT_Test.cpp
+++ b/ndb/test/src/NDBT_Test.cpp
@@ -859,6 +859,11 @@ void NDBT_TestSuite::execute(Ndb* ndb, const NdbDictionary::Table* pTab,
     else
       numTestsOk++;
     numTestsExecuted++;
+
+    if (result == NDBT_OK && createTable == true){
+      pDict->dropTable(pTab->getName());
+    }
+    
     delete ctx;
   }
 }