public void conn_setIsolationLevel() { string conn_string = "server=test-db-server;database=demodb;port=33000;user=dba;password="******"drop table if exists test_isolation"; cmd.ExecuteNonQuery(); // open another session CUBRIDConnection conn2 = new CUBRIDConnection(); conn2.ConnectionString = conn_string; conn2.Open(); CUBRIDCommand cmd2 = new CUBRIDCommand(); cmd2.Connection = conn2; // set up the isolation level to conn.SetAutoCommit(false); conn.SetIsolationLevel(CUBRIDIsolationLevel.TRAN_REP_CLASS_COMMIT_INSTANCE); cmd.CommandText = "create table test_isolation(a int)"; cmd.ExecuteNonQuery(); conn.Commit(); conn.Close(); }
/// <summary> /// Initializes a new instance of the <see cref="CUBRIDTransaction" /> class. /// </summary> /// <param name="conn"> The connection. </param> /// <param name="isolationLevel"> The isolation level. </param> public CUBRIDTransaction(CUBRIDConnection conn, CUBRIDIsolationLevel isolationLevel) { if (isolationLevel == CUBRIDIsolationLevel.TRAN_UNKNOWN_ISOLATION) throw new ArgumentException(Utils.GetStr(MsgId.UnknownIsolationLevelNotSupported)); this.conn = conn; conn.IsolationLevel = isolationLevel; conn.SetIsolationLevel(isolationLevel); open = true; }
/// <summary> /// Test CUBRID Isolation Levels /// </summary> private static void Test_IsolationLevel() { string sqlTablesCount = "select count(*) from db_class"; int tablesCount, newTableCount; using (CUBRIDConnection conn = new CUBRIDConnection()) { conn.ConnectionString = TestCases.connString; conn.Open(); TestCases.ExecuteSQL("drop table if exists isol", conn); conn.SetIsolationLevel(CUBRIDIsolationLevel.TRAN_REP_READ); Debug.Assert(conn.GetIsolationLevel() == CUBRIDIsolationLevel.TRAN_REP_READ); tablesCount = (int)TestCases.GetSingleValue(sqlTablesCount, conn); TestCases.ExecuteSQL("create table isol(id int)", conn); newTableCount = (int)TestCases.GetSingleValue(sqlTablesCount, conn); //Verify table was created Debug.Assert(newTableCount == tablesCount + 1); using (CUBRIDConnection connOut = new CUBRIDConnection()) { connOut.ConnectionString = TestCases.connString; connOut.Open(); newTableCount = (int)TestCases.GetSingleValue(sqlTablesCount, connOut); //CREATE TABLE is visible from another connection Debug.Assert(newTableCount == tablesCount + 1); } TestCases.ExecuteSQL("drop table if exists isol", conn); } using (CUBRIDConnection conn = new CUBRIDConnection()) { conn.ConnectionString = TestCases.connString; conn.Open(); conn.SetIsolationLevel(CUBRIDIsolationLevel.TRAN_REP_CLASS_COMMIT_INSTANCE); Debug.Assert(conn.GetIsolationLevel() == CUBRIDIsolationLevel.TRAN_REP_CLASS_COMMIT_INSTANCE); tablesCount = (int)TestCases.GetSingleValue(sqlTablesCount, conn); conn.BeginTransaction(); TestCases.ExecuteSQL("create table isol(id int)", conn); newTableCount = (int)TestCases.GetSingleValue(sqlTablesCount, conn); //Verify table was created Debug.Assert(newTableCount == tablesCount + 1); using (CUBRIDConnection connOut = new CUBRIDConnection()) { connOut.ConnectionString = TestCases.connString; connOut.Open(); newTableCount = (int)TestCases.GetSingleValue(sqlTablesCount, connOut); Debug.Assert(newTableCount == tablesCount + 1); } conn.Commit(); newTableCount = (int)TestCases.GetSingleValue(sqlTablesCount, conn); //Verify table was created Debug.Assert(newTableCount == tablesCount + 1); TestCases.ExecuteSQL("drop table if exists isol", conn); newTableCount = (int)TestCases.GetSingleValue(sqlTablesCount, conn); Debug.Assert(newTableCount == tablesCount); } }