diff --git a/jdbc-v2/src/main/java/com/clickhouse/jdbc/StatementImpl.java b/jdbc-v2/src/main/java/com/clickhouse/jdbc/StatementImpl.java index 22b81d5c9..96ee2378a 100644 --- a/jdbc-v2/src/main/java/com/clickhouse/jdbc/StatementImpl.java +++ b/jdbc-v2/src/main/java/com/clickhouse/jdbc/StatementImpl.java @@ -367,6 +367,13 @@ public boolean execute(String sql, QuerySettings settings) throws SQLException { } } return false; + } else if (type == StatementType.USE) { + executeUpdate(sql, settings); + //USE Database + List tokens = JdbcUtils.tokenizeSQL(sql); + this.schema = tokens.get(1).replace("\"", ""); + LOG.info("Changed statement schema " + schema); + return false; } else { executeUpdate(sql, settings); return false; diff --git a/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementTest.java b/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementTest.java index 027272e74..be54b520e 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementTest.java @@ -559,4 +559,17 @@ void testWithClause() throws Exception { } assertEquals(count, 100); } + + @Test(groups = { "integration" }) + public void testSwitchDatabase() throws Exception { + String createSql = "CREATE TABLE switchDatabaseWithUse (id UInt8, words String) ENGINE = MergeTree ORDER BY ()"; + try (Connection conn = getJdbcConnection()) { + try (Statement stmt = conn.createStatement()) { + assertEquals(stmt.executeUpdate(createSql), 0); + assertEquals(stmt.executeUpdate("CREATE DATABASE \"newDatabase\" ENGINE=Atomic"), 0); + assertFalse(stmt.execute("USE \"newDatabase\"")); + assertEquals(stmt.executeUpdate(createSql), 0); + } + } + } }