From 8ddaa3671f06d75adcac42a3fec17fd3c31b7b44 Mon Sep 17 00:00:00 2001 From: gfunc Date: Tue, 11 Feb 2025 18:07:51 +0800 Subject: [PATCH 1/3] change connection schema after USE is executed --- .../java/com/clickhouse/jdbc/StatementImpl.java | 7 +++++++ .../java/com/clickhouse/jdbc/StatementTest.java | 13 +++++++++++++ 2 files changed, 20 insertions(+) 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 16dadc003..9c7b4153e 100644 --- a/jdbc-v2/src/main/java/com/clickhouse/jdbc/StatementImpl.java +++ b/jdbc-v2/src/main/java/com/clickhouse/jdbc/StatementImpl.java @@ -366,6 +366,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 6c31a81a3..c8c944c34 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementTest.java @@ -539,4 +539,17 @@ public void testTextFormatInResponse() throws Exception { Assert.expectThrows(SQLException.class, () ->stmt.executeQuery("SELECT 1 FORMAT JSON")); } } + + @Test(groups = { "integration" }) + public void testSwitchDatabase() throws Exception { + String createSql = "CREATE TABLE strings (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 \"test\" ENGINE=Atomic"), 0); + assertFalse(stmt.execute("USE \"test\"")); + assertEquals(stmt.executeUpdate(createSql), 0); + } + } + } } From c567bd1ac5d7b7cb372e802f383c14f64d46c82e Mon Sep 17 00:00:00 2001 From: gfunc Date: Wed, 12 Feb 2025 14:44:21 +0800 Subject: [PATCH 2/3] rename test table and database --- .../src/test/java/com/clickhouse/jdbc/StatementTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 c6669ca9d..be54b520e 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/StatementTest.java @@ -562,12 +562,12 @@ void testWithClause() throws Exception { @Test(groups = { "integration" }) public void testSwitchDatabase() throws Exception { - String createSql = "CREATE TABLE strings (id UInt8, words String) ENGINE = MergeTree ORDER BY ()"; + 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 \"test\" ENGINE=Atomic"), 0); - assertFalse(stmt.execute("USE \"test\"")); + assertEquals(stmt.executeUpdate("CREATE DATABASE \"newDatabase\" ENGINE=Atomic"), 0); + assertFalse(stmt.execute("USE \"newDatabase\"")); assertEquals(stmt.executeUpdate(createSql), 0); } } From dbcfedf8b7ad17ec38a07e7bdc4fc891b07e85cb Mon Sep 17 00:00:00 2001 From: gfunc Date: Wed, 12 Feb 2025 17:53:11 +0800 Subject: [PATCH 3/3] remove typo --- jdbc-v2/src/main/java/com/clickhouse/jdbc/StatementImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 1caa01a44..96ee2378a 100644 --- a/jdbc-v2/src/main/java/com/clickhouse/jdbc/StatementImpl.java +++ b/jdbc-v2/src/main/java/com/clickhouse/jdbc/StatementImpl.java @@ -371,7 +371,7 @@ public boolean execute(String sql, QuerySettings settings) throws SQLException { executeUpdate(sql, settings); //USE Database List tokens = JdbcUtils.tokenizeSQL(sql); - this.schema = tokens.get(1).replace("\"", "");; + this.schema = tokens.get(1).replace("\"", ""); LOG.info("Changed statement schema " + schema); return false; } else {