diff --git a/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseStatementImpl.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseStatementImpl.java index d2eb21e2d..41d3807b1 100644 --- a/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseStatementImpl.java +++ b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseStatementImpl.java @@ -731,27 +731,13 @@ private InputStream getInputStream( ? new EnumMap(ClickHouseQueryParam.class) : additionalClickHouseDBParams); - URI uri; - if (externalData == null || externalData.isEmpty()) { - uri = buildRequestUri( - null, - null, - additionalClickHouseDBParams, - additionalRequestParams, - ignoreDatabase - ); - } else { - // write sql in query params when there is external data - // as it is impossible to pass both external data and sql in body - // TODO move sql to request body when it is supported in clickhouse - uri = buildRequestUri( - sql, - externalData, - additionalClickHouseDBParams, - additionalRequestParams, - ignoreDatabase - ); - } + URI uri = buildRequestUri( + null, + externalData, + additionalClickHouseDBParams, + additionalRequestParams, + ignoreDatabase + ); log.debug("Request url: {}", uri); @@ -760,6 +746,7 @@ private InputStream getInputStream( requestEntity = new StringEntity(sql, StandardCharsets.UTF_8); } else { MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create(); + entityBuilder.addTextBody("query", sql); try { for (ClickHouseExternalData externalDataItem : externalData) { diff --git a/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHouseStatementImplTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHouseStatementImplTest.java index 0720bc21e..c1235bff5 100644 --- a/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHouseStatementImplTest.java +++ b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHouseStatementImplTest.java @@ -155,6 +155,7 @@ public void testExternalData() throws SQLException, UnsupportedEncodingException } // reproduce issue #634 + @Test public void testLargeQueryWithExternalData() throws Exception { String serverVersion = connection.getServerVersion(); String[] rows = ClickHouseVersionNumberUtil.getMajorVersion(serverVersion) >= 21