From 7dc5c00453e3ed894123c92c6264ff5abd99bdbf Mon Sep 17 00:00:00 2001
From: unknown <tomas@whalegate.ndb.mysql.com>
Date: Fri, 23 Mar 2007 17:14:38 +0100
Subject: [PATCH] enabled and extended single user test

---
 mysql-test/r/ndb_single_user.result | 10 ++++++
 mysql-test/t/disabled.def           |  1 -
 mysql-test/t/ndb_single_user.test   | 53 ++++++++++++++++++++---------
 3 files changed, 47 insertions(+), 17 deletions(-)

diff --git a/mysql-test/r/ndb_single_user.result b/mysql-test/r/ndb_single_user.result
index debb74a6a4..907cb17fec 100644
--- a/mysql-test/r/ndb_single_user.result
+++ b/mysql-test/r/ndb_single_user.result
@@ -43,4 +43,14 @@ update t1 set b=b+100;
 ERROR HY000: Got error 299 'Operation not allowed or aborted due to single user mode' from ndbcluster
 update t1 set b=b+100 where a > 7;
 ERROR HY000: Got error 299 'Operation not allowed or aborted due to single user mode' from ndbcluster
+BEGIN;
+update t1 set b=b+100 where a=1;
+BEGIN;
+update t1 set b=b+100 where a=2;
+update t1 set b=b+100 where a=3;
+COMMIT;
+update t1 set b=b+100 where a=4;
+ERROR HY000: Got error 299 'Operation not allowed or aborted due to single user mode' from ndbcluster
+COMMIT;
+ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
 drop table t1;
diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def
index 2116e9f51e..df56165950 100644
--- a/mysql-test/t/disabled.def
+++ b/mysql-test/t/disabled.def
@@ -12,4 +12,3 @@
 
 ndb_load        : Bug#17233
 user_limits     : Bug#23921 random failure of user_limits.test
-ndb_single_user : Bug#27021 Error codes in mysqld in single user mode varies
diff --git a/mysql-test/t/ndb_single_user.test b/mysql-test/t/ndb_single_user.test
index c655124f79..b191e57399 100644
--- a/mysql-test/t/ndb_single_user.test
+++ b/mysql-test/t/ndb_single_user.test
@@ -51,34 +51,55 @@ insert into t1 select * from t2;
 --connection server2
 --error 1051
 drop table t1;
---error 1146
-#--error 1296
+--error 1296
 create index new_index on t1 (c);
---error 1146
-#--error 1296
+--error 1296
 insert into t1 values (1,1,0),(2,2,0),(3,3,0),(4,4,0),(5,5,0),(6,6,0),(7,7,0),(8,8,0),(9,9,0),(10,10,0);
---error 1146
-#--error 1296
+--error 1296
 select * from t1 where a = 1;
---error 1146
-#--error 1296
+--error 1296
 select * from t1 where b = 4;
---error 1146
-#--error 1296
+--error 1296
 update t1 set b=102 where a = 2;
---error 1146
-#--error 1296
+--error 1296
 update t1 set b=103 where b = 3;
---error 1146
-#--error 1296
+--error 1296
 update t1 set b=b+100;
---error 1146
-#--error 1296
+--error 1296
 update t1 set b=b+100 where a > 7;
 
 --exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "exit single user mode" >> $NDB_TOOLS_OUTPUT
 --exec $NDB_TOOLS_DIR/ndb_waiter --no-defaults >> $NDB_TOOLS_OUTPUT
 
+#
+# we should be able to run transaction while in single user mode
+#
+--connection server1
+BEGIN;
+update t1 set b=b+100 where a=1;
+
+--connection server2
+BEGIN;
+update t1 set b=b+100 where a=2;
+
+# enter single user mode
+--exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "enter single user mode $node_id" >> $NDB_TOOLS_OUTPUT
+--exec $NDB_TOOLS_DIR/ndb_waiter --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" --single-user >> $NDB_TOOLS_OUTPUT
+
+--connection server1
+update t1 set b=b+100 where a=3;
+COMMIT;
+
+# while on other mysqld it should be aborted
+--connection server2
+--error 1296
+update t1 set b=b+100 where a=4;
+--error 1296
+COMMIT;
+
+--exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "exit single user mode" >> $NDB_TOOLS_OUTPUT
+--exec $NDB_TOOLS_DIR/ndb_waiter --no-defaults >> $NDB_TOOLS_OUTPUT
+
 # cleanup
 --connection server1
 drop table t1;
-- 
2.30.9