Skip to content

Commit b9384fb

Browse files
authored
Merge pull request #2142 from ClickHouse/v2_fix_get_table_schema
fixed getTableSchema by passing database to settings
2 parents d4336a6 + 706de32 commit b9384fb

File tree

4 files changed

+28
-8
lines changed

4 files changed

+28
-8
lines changed

client-v2/src/main/java/com/clickhouse/client/api/Client.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1882,8 +1882,9 @@ public TableSchema getTableSchemaFromQuery(String sql) {
18821882
private TableSchema getTableSchemaImpl(String describeQuery, String name, String originalQuery, String database) {
18831883
int operationTimeout = getOperationTimeout();
18841884

1885-
try (QueryResponse response = operationTimeout == 0 ? query(describeQuery).get() :
1886-
query(describeQuery).get(getOperationTimeout(), TimeUnit.SECONDS)) {
1885+
QuerySettings settings = new QuerySettings().setDatabase(database);
1886+
try (QueryResponse response = operationTimeout == 0 ? query(describeQuery, settings).get() :
1887+
query(describeQuery, settings).get(getOperationTimeout(), TimeUnit.SECONDS)) {
18871888
return TableSchemaParser.readTSKV(response.getInputStream(), name, originalQuery, database);
18881889
} catch (TimeoutException e) {
18891890
throw new ClientException("Operation has likely timed out after " + getOperationTimeout() + " seconds.", e);

client-v2/src/test/java/com/clickhouse/client/insert/InsertTests.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,7 @@ protected Client.Builder newClient() {
105105
.useHttpCompression(useHttpCompression)
106106
.setDefaultDatabase(ClickHouseServerForTest.getDatabase())
107107
.serverSetting(ServerSettings.ASYNC_INSERT, "0")
108-
.serverSetting(ServerSettings.WAIT_END_OF_QUERY, "1")
109-
.useNewImplementation(System.getProperty("client.tests.useNewImplementation", "true").equals("true"));
108+
.serverSetting(ServerSettings.WAIT_END_OF_QUERY, "1");
110109
}
111110

112111
@AfterMethod(groups = { "integration" })
@@ -162,7 +161,7 @@ public void insertPOJOWithJSON() throws Exception {
162161
client.execute("DROP TABLE IF EXISTS " + tableName, commandSettings).get(EXECUTE_CMD_TIMEOUT, TimeUnit.SECONDS);
163162
client.execute(createSQL, commandSettings).get(EXECUTE_CMD_TIMEOUT, TimeUnit.SECONDS);
164163

165-
client.register(PojoWithJSON.class, client.getTableSchema(tableName, "default"));
164+
client.register(PojoWithJSON.class, client.getTableSchema(tableName));
166165
PojoWithJSON pojo = new PojoWithJSON();
167166
pojo.setEventPayload(originalJsonStr);
168167
List<Object> data = Arrays.asList(pojo);
@@ -189,7 +188,7 @@ public void insertPOJOAndReadBack() throws Exception {
189188

190189
initTable(tableName, createSQL);
191190

192-
client.register(SamplePOJO.class, client.getTableSchema(tableName, "default"));
191+
client.register(SamplePOJO.class, client.getTableSchema(tableName));
193192

194193
System.out.println("Inserting POJO: " + pojo);
195194
try (InsertResponse response = client.insert(tableName, Collections.singletonList(pojo), settings).get(EXECUTE_CMD_TIMEOUT, TimeUnit.SECONDS)) {
@@ -231,7 +230,7 @@ public void testInsertingPOJOWithNullValueForNonNullableColumn() throws Exceptio
231230

232231
initTable(tableName, createSQL);
233232

234-
client.register(SamplePOJO.class, client.getTableSchema(tableName, "default"));
233+
client.register(SamplePOJO.class, client.getTableSchema(tableName));
235234

236235
try (InsertResponse response = client.insert(tableName, Collections.singletonList(pojo), settings).get(30, TimeUnit.SECONDS)) {
237236
fail("Should have thrown an exception");

client-v2/src/test/java/com/clickhouse/client/metadata/MetadataTests.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
import com.clickhouse.client.api.internal.ServerSettings;
1515
import com.clickhouse.client.api.metadata.DefaultColumnToMethodMatchingStrategy;
1616
import com.clickhouse.client.api.metadata.TableSchema;
17+
import com.clickhouse.client.api.query.QuerySettings;
1718
import com.clickhouse.data.ClickHouseColumn;
19+
import com.clickhouse.data.ClickHouseDataType;
1820
import com.clickhouse.data.ClickHouseRecord;
1921
import org.testng.Assert;
2022
import org.testng.annotations.BeforeMethod;
@@ -49,6 +51,24 @@ public void testGetTableSchema() {
4951
Assert.assertEquals(columns.get(0).getDataType().name(), "UInt32");
5052
}
5153

54+
@Test(groups = { "integration" })
55+
56+
public void testGetTableSchemaDifferentDb() throws Exception {
57+
String table = "test_get_table_schema_different_db";
58+
String db = ClickHouseServerForTest.getDatabase() + "_schema_test" ;
59+
try {
60+
QuerySettings settings = new QuerySettings().setDatabase(db);
61+
client.execute("DROP DATABASE IF EXISTS " + db).get().close();
62+
client.execute("CREATE DATABASE " + db).get().close();
63+
client.query("DROP TABLE IF EXISTS " + table, settings).get().close();
64+
client.query("CREATE TABLE " + table + " (rowId Int32) Engine=MergeTree ORDER BY ()", settings).get().close();
65+
TableSchema tableSchema = client.getTableSchema(table, db);
66+
Assert.assertEquals(tableSchema.getColumnByName("rowId").getDataType(), ClickHouseDataType.Int32);
67+
} finally {
68+
client.execute("DROP DATABASE IF EXISTS " + db).get().close();
69+
}
70+
}
71+
5272
private void prepareDataSet(String tableName) {
5373

5474
try {

client-v2/src/test/java/com/clickhouse/client/query/QueryTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1883,7 +1883,7 @@ public void testReadingBitmap() throws Exception {
18831883
throw e;
18841884
}
18851885

1886-
client.register(AggregateFuncDTO.class, client.getTableSchema(tableName, "default"));
1886+
client.register(AggregateFuncDTO.class, client.getTableSchema(tableName));
18871887

18881888
try (InsertResponse response = client.insert(tableName, Collections.singletonList(pojo)).get(30, TimeUnit.SECONDS)) {
18891889
Assert.assertEquals(response.getWrittenRows(), 1);

0 commit comments

Comments
 (0)