Index: org/postgresql/test/jdbc2/ConnectionTest.java =================================================================== RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/test/jdbc2/ConnectionTest.java,v retrieving revision 1.3 diff -c -r1.3 ConnectionTest.java *** org/postgresql/test/jdbc2/ConnectionTest.java 2001/09/07 22:17:48 1.3 --- org/postgresql/test/jdbc2/ConnectionTest.java 2001/09/08 13:59:54 *************** *** 203,238 **** } } ! /** ! * Transaction Isolation Levels ! */ ! public void testTransactionIsolation() { ! try { ! Connection con = JDBC2Tests.openDB(); ! ! con.setAutoCommit(false); ! ! // These are the currently available ones ! con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); ! assert(con.getTransactionIsolation()==Connection.TRANSACTION_SERIALIZABLE); ! ! con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); ! assert(con.getTransactionIsolation()==Connection.TRANSACTION_READ_COMMITTED); ! ! // Now turn on AutoCommit. Transaction Isolation doesn't work outside of ! // a transaction, so they should return READ_COMMITTED at all times! ! con.setAutoCommit(true); ! con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); ! assert(con.getTransactionIsolation()==Connection.TRANSACTION_READ_COMMITTED); ! ! con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); ! assert(con.getTransactionIsolation()==Connection.TRANSACTION_READ_COMMITTED); ! ! JDBC2Tests.closeDB(con); ! } catch(SQLException ex) { ! assert(ex.getMessage(),false); ! } ! } /** * JDBC2 Type mappings --- 203,296 ---- } } ! /** ! * Transaction Isolation Levels ! */ ! public void testTransactionIsolation() ! { ! try ! { ! Connection con = JDBC2Tests.openDB(); ! ! // PostgreSQL defaults to READ COMMITTED ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_READ_COMMITTED ); ! ! // Begin a transaction ! con.setAutoCommit(false); ! ! // The isolation level should not have changed ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_READ_COMMITTED ); ! ! // Now change the default for future transactions ! con.setTransactionIsolation( Connection.TRANSACTION_SERIALIZABLE ); ! ! // Since the call to setTransactionIsolation() above was made ! // inside the transaction, the isolation level of the current ! // transaction did not change. It affects only future transactions. ! // This behaviour is recommended by the JDBC spec. ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_READ_COMMITTED ); ! ! // Begin a new transaction ! con.commit(); ! ! // Now we should see the new isolation level ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_SERIALIZABLE ); ! ! // Repeat the steps above with the transition back to ! // READ COMMITTED. ! con.setTransactionIsolation( ! Connection.TRANSACTION_READ_COMMITTED ); ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_SERIALIZABLE ); ! con.commit(); ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_READ_COMMITTED ); ! ! // Now run some tests with autocommit enabled. ! con.setAutoCommit(true); ! ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_READ_COMMITTED ); ! ! con.setTransactionIsolation( Connection.TRANSACTION_SERIALIZABLE ); ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_SERIALIZABLE ); ! ! con.setTransactionIsolation( ! Connection.TRANSACTION_READ_COMMITTED ); ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_READ_COMMITTED ); ! ! // Test if a change of isolation level before beginning the ! // transaction affects the isolation level inside the transaction. ! con.setTransactionIsolation( Connection.TRANSACTION_SERIALIZABLE ); ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_SERIALIZABLE ); ! con.setAutoCommit(false); ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_SERIALIZABLE ); ! con.setAutoCommit(true); ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_SERIALIZABLE ); ! con.setTransactionIsolation( ! Connection.TRANSACTION_READ_COMMITTED ); ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_READ_COMMITTED ); ! con.setAutoCommit(false); ! assertEquals( con.getTransactionIsolation(), ! Connection.TRANSACTION_READ_COMMITTED ); ! ! JDBC2Tests.closeDB(con); ! } ! catch ( SQLException ex ) ! { ! fail( ex.getMessage() ); ! } ! } /** * JDBC2 Type mappings