From 1378092cd530ca4a70dd8afd048e278d816c558f Mon Sep 17 00:00:00 2001 From: Nathan DEBUCQUOIS Date: Wed, 16 Oct 2024 10:16:18 +0200 Subject: [PATCH] fix use the database from InsertSettings if set --- .../api/internal/HttpAPIClientHelper.java | 6 ++- .../clickhouse/client/insert/InsertTests.java | 45 +++++++++++++++++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/client-v2/src/main/java/com/clickhouse/client/api/internal/HttpAPIClientHelper.java b/client-v2/src/main/java/com/clickhouse/client/api/internal/HttpAPIClientHelper.java index cf7162eb4..a1b749014 100644 --- a/client-v2/src/main/java/com/clickhouse/client/api/internal/HttpAPIClientHelper.java +++ b/client-v2/src/main/java/com/clickhouse/client/api/internal/HttpAPIClientHelper.java @@ -391,8 +391,12 @@ private void addHeaders(HttpPost req, Map chConfig, Map 0); } + + @Test(groups = { "integration" }) + public void testInsertSettingsAddDatabase() throws Exception { + final String tableName = "insert_settings_database_test"; + final String new_database = "new_database"; + final String createDatabaseSQL = "CREATE DATABASE " + new_database; + final String createTableSQL = "CREATE TABLE " + new_database + "." + tableName + + " (Id UInt32, event_ts Timestamp, name String, p1 Int64, p2 String) ENGINE = MergeTree() ORDER BY ()"; + final String dropDatabaseSQL = "DROP DATABASE IF EXISTS " + new_database; + + try (ClickHouseClient client = ClickHouseClient.builder().config(new ClickHouseConfig()) + .nodeSelector(ClickHouseNodeSelector.of(ClickHouseProtocol.HTTP)) + .build()) { + client.read(getServer(ClickHouseProtocol.HTTP)).query(dropDatabaseSQL).executeAndWait().close(); + client.read(getServer(ClickHouseProtocol.HTTP)).query(createDatabaseSQL).executeAndWait().close(); + client.read(getServer(ClickHouseProtocol.HTTP)).query(createTableSQL).executeAndWait().close(); + } + + + InsertSettings insertSettings = settings.setInputStreamCopyBufferSize(8198 * 2) + .setDeduplicationToken(RandomStringUtils.randomAlphabetic(36)) + .setQueryId(String.valueOf(UUID.randomUUID())); + insertSettings.setDatabase(new_database); + + ByteArrayOutputStream data = new ByteArrayOutputStream(); + PrintWriter writer = new PrintWriter(data); + for (int i = 0; i < 1000; i++) { + writer.printf("%d\t%s\t%s\t%d\t%s\n", i, "2021-01-01 00:00:00", "name" + i, i, "p2"); + } + writer.flush(); + InsertResponse response = client.insert(tableName, new ByteArrayInputStream(data.toByteArray()), + ClickHouseFormat.TSV, insertSettings).get(30, TimeUnit.SECONDS); + assertEquals((int)response.getWrittenRows(), 1000 ); + + List records = client.queryAll("SELECT * FROM " + new_database + "." + tableName); + assertEquals(records.size(), 1000); + } }