@Test public void testOtherDatabaseNames() throws SQLException { mockConnection.setEmptyResults(); new Connection(mockConnection, "foobar").createStatement().executeQuery(SELECT); assertTrue(mockConnection.lastRequest.hasDatabaseName()); assertEquals("foobar", mockConnection.lastRequest.getDatabaseName()); }
@Test public void testClientIds() throws SQLException { mockConnection.setEmptyResults(); connection.createStatement().executeQuery(SELECT); int id1 = mockConnection.lastRequest.getTransactionId(); new Connection(mockConnection, "test").createStatement().executeQuery(SELECT); int id2 = mockConnection.lastRequest.getTransactionId(); assertTrue(id1 != id2); }
@Test public void testFailedTransactionRollback() throws SQLException { connection.setAutoCommit(false); // Failed statement mockConnection.setError(42, "bad"); Statement s = connection.createStatement(); try { s.executeUpdate("DELETE bad"); fail("expected exception"); } catch (SQLException e) { } assertNull(mockConnection.lastFinish); // All future statements should also fail mockConnection.setUpdateCount(42); try { s.executeUpdate("DELETE good"); fail("expected exception"); } catch (SQLException e) { } connection.enableStrictMode(true); try { connection.commit(); fail("expected exception"); } catch (SQLException e) { } // rollback this transaction connection.rollback(); assertNull(mockConnection.lastFinish); try { // Can't rollback: no transaction! connection.rollback(); fail("expected exception"); } catch (SQLException e) { } assertEquals(42, s.executeUpdate("DELETE good")); }
@Test public void testDeadlockTransactionRollback() throws SQLException { connection.setAutoCommit(false); // Failed statement mockConnection.setError(Jdbc.ErrorCode.DEADLOCK.getNumber(), "deadlock"); Statement s = connection.createStatement(); try { s.executeUpdate("DELETE bad"); fail("expected exception"); } catch (SQLException e) { assertEquals(Jdbc.ErrorCode.DEADLOCK.getNumber(), e.getErrorCode()); assertEquals("40001", e.getSQLState()); } assertNull(mockConnection.lastFinish); }