package org.mariadb.jdbc; import org.junit.Assume; import org.junit.Test; import java.sql.*; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class StateChangeTest extends BaseTest { @Test public void databaseStateChange() throws SQLException { Assume.assumeTrue((isMariadbServer() && minVersion(10,2)) || (!isMariadbServer() && minVersion(5,7))); try (Connection connection = setConnection()) { try (Statement stmt = connection.createStatement()) { stmt.execute("drop database if exists " + MariaDbConnection.quoteIdentifier("_test_db")); stmt.execute("create database " + MariaDbConnection.quoteIdentifier("_test_db")); assertEquals(database, connection.getCatalog()); stmt.execute("USE " + MariaDbConnection.quoteIdentifier("_test_db")); assertEquals("_test_db", connection.getCatalog()); } } } @Test public void timeZoneChange() throws SQLException { Assume.assumeTrue((isMariadbServer() && minVersion(10,2)) || (!isMariadbServer() && minVersion(5,7))); try (Connection connection = setConnection()) { try (Statement stmt = connection.createStatement()) { stmt.execute("drop database if exists " + MariaDbConnection.quoteIdentifier("_test_db")); stmt.execute("create database " + MariaDbConnection.quoteIdentifier("_test_db")); assertEquals(database, connection.getCatalog()); stmt.execute("USE " + MariaDbConnection.quoteIdentifier("_test_db")); assertEquals("_test_db", connection.getCatalog()); } } } @Test public void autocommitChange() throws SQLException { try (Connection connection = setConnection()) { try (Statement stmt = connection.createStatement()) { assertTrue(connection.getAutoCommit()); stmt.execute("SET autocommit=false"); assertFalse(connection.getAutoCommit()); } } } @Test public void autoIncrementChange() throws SQLException { Assume.assumeTrue((isMariadbServer() && minVersion(10,2)) || (!isMariadbServer() && minVersion(5,7))); createTable("autoIncrementChange", "id int not null primary key auto_increment, name char(20)"); try (Connection connection = setConnection()) { try (Statement stmt = connection.createStatement()) { try (PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO autoIncrementChange(name) value (?)", Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setString(1, "a"); preparedStatement.execute(); ResultSet rs = preparedStatement.getGeneratedKeys(); assertTrue(rs.next()); assertEquals(1, rs.getInt(1)); preparedStatement.setString(1, "b"); preparedStatement.execute(); rs = preparedStatement.getGeneratedKeys(); assertTrue(rs.next()); assertEquals(2, rs.getInt(1)); stmt.execute("SET @@session.auto_increment_increment=10"); ResultSet rs2 = stmt.executeQuery("SHOW VARIABLES WHERE Variable_name like 'auto_increment_increment'"); assertTrue(rs2.next()); assertEquals(10, rs2.getInt(2)); preparedStatement.setString(1, "c"); preparedStatement.execute(); rs = preparedStatement.getGeneratedKeys(); assertTrue(rs.next()); assertEquals(11, rs.getInt(1)); rs2 = stmt.executeQuery("select * from autoIncrementChange"); assertTrue(rs2.next()); assertEquals("a", rs2.getString(2)); assertEquals(1, rs2.getInt(1)); assertTrue(rs2.next()); assertEquals("b", rs2.getString(2)); assertEquals(2, rs2.getInt(1)); assertTrue(rs2.next()); assertEquals("c", rs2.getString(2)); assertEquals(11, rs2.getInt(1)); assertFalse(rs2.next()); } } } } }