Skip to content

Commit 3f17c87

Browse files
committed
fixed getTableSchema by passing database to settings
1 parent d4336a6 commit 3f17c87

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
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/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 {

0 commit comments

Comments
 (0)