From 589f086c3d4e0c04325316bc93b5702e318555de Mon Sep 17 00:00:00 2001 From: Zhichun Wu Date: Thu, 22 Apr 2021 07:33:46 +0800 Subject: [PATCH] Move query to request body along with external data --- .../clickhouse/ClickHouseStatementImpl.java | 29 +++++-------------- .../ClickHouseStatementImplTest.java | 1 + 2 files changed, 9 insertions(+), 21 deletions(-) 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