Skip to content

Commit 9e58b36

Browse files
authored
Merge pull request #997 from zhicwu/develop
max_result_rows should never be applied to metadata queries
2 parents db0bd80 + 81168a2 commit 9e58b36

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

clickhouse-jdbc/src/main/java/com/clickhouse/jdbc/ClickHouseDatabaseMetaData.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.clickhouse.client.ClickHouseChecker;
2020
import com.clickhouse.client.ClickHouseColumn;
2121
import com.clickhouse.client.ClickHouseDataType;
22+
import com.clickhouse.client.ClickHouseFormat;
2223
import com.clickhouse.client.ClickHouseParameterizedQuery;
2324
import com.clickhouse.client.ClickHouseUtils;
2425
import com.clickhouse.client.ClickHouseValues;
@@ -66,9 +67,11 @@ protected ResultSet query(String sql, ClickHouseRecordTransformer func, boolean
6667
SQLException error = null;
6768
try {
6869
ClickHouseStatement stmt = connection.createStatement();
70+
stmt.setLargeMaxRows(0L);
6971
return new ClickHouseResultSet("", "", stmt,
7072
// load everything into memory
7173
ClickHouseSimpleResponse.of(stmt.getRequest()
74+
.format(ClickHouseFormat.RowBinaryWithNamesAndTypes)
7275
.option(ClickHouseClientOption.RENAME_RESPONSE_COLUMN, ClickHouseRenameMethod.NONE)
7376
.query(sql).execute().get(), func));
7477
} catch (InterruptedException e) {

clickhouse-jdbc/src/main/java/com/clickhouse/jdbc/internal/ClickHouseStatementImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,10 +388,10 @@ public void setLargeMaxRows(long max) throws SQLException {
388388

389389
if (this.maxRows != max) {
390390
if (max == 0L || !connection.allowCustomSetting()) {
391-
request.removeSetting("max_result_rows");
391+
request.removeSetting(ClickHouseClientOption.MAX_RESULT_ROWS.getKey());
392392
request.removeSetting("result_overflow_mode");
393393
} else {
394-
request.set("max_result_rows", max);
394+
request.set(ClickHouseClientOption.MAX_RESULT_ROWS.getKey(), max);
395395
request.set("result_overflow_mode", "break");
396396
}
397397
this.maxRows = max;

clickhouse-jdbc/src/test/java/com/clickhouse/jdbc/ClickHouseDatabaseMetaDataTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,21 @@ public void testGetColumns(String columnType, Integer columnSize, Integer decima
102102
}
103103
}
104104

105+
@Test(groups = "integration")
106+
public void testMaxRows() throws SQLException {
107+
Properties props = new Properties();
108+
props.setProperty(ClickHouseClientOption.MAX_RESULT_ROWS.getKey(), "1");
109+
int count = 0;
110+
try (ClickHouseConnection conn = newConnection(props)) {
111+
try (ResultSet rs = conn.getMetaData().getColumns(conn.getCatalog(), conn.getSchema(), "%", "%")) {
112+
while (rs.next()) {
113+
count++;
114+
}
115+
}
116+
}
117+
Assert.assertTrue(count > 1, "Should have more than one row returned");
118+
}
119+
105120
@Test(groups = "integration")
106121
public void testTableComment() throws SQLException {
107122
String tableName = "test_table_comment";

0 commit comments

Comments
 (0)