diff --git a/.gitignore b/.gitignore index 285aa2d41..507b39f58 100644 --- a/.gitignore +++ b/.gitignore @@ -29,10 +29,10 @@ log/ target/ # Generated files -src/main/java/ru/yandex/clickhouse/jdbc/parser/*CharStream.java -src/main/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlParser*.java -src/main/java/ru/yandex/clickhouse/jdbc/parser/Token*.java -src/main/java/ru/yandex/clickhouse/jdbc/parser/ParseException.java +**/parser/*CharStream.java +**/parser/ClickHouseSqlParser*.java +**/parser/Token*.java +**/parser/ParseException.java # Shell scripts *.sh diff --git a/clickhouse-benchmark/pom.xml b/clickhouse-benchmark/pom.xml index c967c9eb6..97a0d63b5 100644 --- a/clickhouse-benchmark/pom.xml +++ b/clickhouse-benchmark/pom.xml @@ -2,15 +2,21 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - tech.clickhouse + + tech.clickhouse + clickhouse-java + ${revision} + + + ${parent.groupId} clickhouse-benchmark ${revision} jar clickhouse-benchmark + Benchmarks for ClickHouse clients - 0.3.0-SNAPSHOT 1.4.4 2.5.3 2.7.2 @@ -19,7 +25,6 @@ 1.15.2 UTF-8 1.27 - 1.8 benchmarks @@ -96,7 +101,6 @@ org.testcontainers testcontainers - ${testcontainers.version} @@ -105,17 +109,15 @@ org.apache.maven.plugins maven-compiler-plugin - 3.8.0 - ${javac.target} - ${javac.target} - ${javac.target} + ${jdk.version} + ${jdk.version} + ${jdk.version} org.apache.maven.plugins maven-shade-plugin - 3.2.1 package diff --git a/clickhouse-client/pom.xml b/clickhouse-client/pom.xml new file mode 100644 index 000000000..32b882d42 --- /dev/null +++ b/clickhouse-client/pom.xml @@ -0,0 +1,40 @@ + + 4.0.0 + + + tech.clickhouse + clickhouse-java + ${revision} + + + ${parent.groupId} + clickhouse-client + ${revision} + jar + + + + org.slf4j + slf4j-api + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${jdk.version} + ${jdk.version} + true + + -Xlint:all + -Werror + + + + + + diff --git a/clickhouse-grpc-client/pom.xml b/clickhouse-grpc-client/pom.xml new file mode 100644 index 000000000..41cb9243f --- /dev/null +++ b/clickhouse-grpc-client/pom.xml @@ -0,0 +1,41 @@ + + 4.0.0 + + + tech.clickhouse + clickhouse-java + ${revision} + + + ${parent.groupId} + clickhouse-grpc-client + ${revision} + jar + + + + ${parent.groupId} + clickhouse-client + ${revision} + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${jdk.version} + ${jdk.version} + true + + -Xlint:all + -Werror + + + + + + diff --git a/clickhouse-http-client/pom.xml b/clickhouse-http-client/pom.xml new file mode 100644 index 000000000..a89830997 --- /dev/null +++ b/clickhouse-http-client/pom.xml @@ -0,0 +1,41 @@ + + 4.0.0 + + + tech.clickhouse + clickhouse-java + ${revision} + + + ${parent.groupId} + clickhouse-http-client + ${revision} + jar + + + + ${parent.groupId} + clickhouse-client + ${revision} + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${jdk.version} + ${jdk.version} + true + + -Xlint:all + -Werror + + + + + + diff --git a/AUTHORS b/clickhouse-jdbc/AUTHORS similarity index 100% rename from AUTHORS rename to clickhouse-jdbc/AUTHORS diff --git a/docs/datetime.md b/clickhouse-jdbc/docs/datetime.md similarity index 100% rename from docs/datetime.md rename to clickhouse-jdbc/docs/datetime.md diff --git a/clickhouse-jdbc/pom.xml b/clickhouse-jdbc/pom.xml new file mode 100644 index 000000000..cf597a5a8 --- /dev/null +++ b/clickhouse-jdbc/pom.xml @@ -0,0 +1,272 @@ + + 4.0.0 + + + tech.clickhouse + clickhouse-java + ${revision} + + + ru.yandex.clickhouse + clickhouse-jdbc + ${revision} + jar + + + + serebrserg + Sergey Serebryanik + serebrserg@yandex-team.ru + + + jkee + Viktor Tarnavsky + jkee@yandex-team.ru + + + orantius + Yuriy Galitskiy + orantius@yandex-team.ru + + + krash + Alexandr Krasheninnikov + krash3@gmail.com + + + zhicwu + Zhichun Wu + zhicwu@gmail.com + + + + + 4.5.13 + 29.0-jre + 2.3.1 + 4.1.4 + ru.yandex.clickhouse.jdbc.internal + JDBC + 4.2 + + + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + org.apache.httpcomponents + httpmime + ${httpclient.version} + + + org.lz4 + lz4-java + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + com.google.guava + guava + ${guava.version} + + + org.slf4j + slf4j-api + + + javax.xml.bind + jaxb-api + ${jaxb.version} + + + + org.slf4j + slf4j-log4j12 + test + + + org.mockito + mockito-all + test + + + com.github.tomakehurst + wiremock-jre8 + test + + + org.testcontainers + testcontainers + test + + + org.testng + testng + test + + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + + + com.helger.maven + ph-javacc-maven-plugin + ${javacc-plugin.version} + + + jjc + generate-sources + + javacc + + + ${jdk.version} + true + ru.yandex.clickhouse.jdbc.parser + src/main/javacc + src/main/java + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${jdk.version} + ${jdk.version} + true + + + + org.apache.maven.plugins + maven-jar-plugin + + + + true + true + true + + + ${spec.title} + ${spec.version} + ${project.groupId} + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + jar-with-dependencies + + + + true + true + + + + + + org.apache.maven.plugins + maven-shade-plugin + + true + true + true + shaded + + + com.fasterxml.jackson + ${shade.base}.jackson + + + com.google + ${shade.base}.google + + + org.apache + ${shade.base}.apache + + + org.checkerframework + ${shade.base}.checker + + + net.jpountz + ${shade.base}.jpountz + + + org.slf4j + ${shade.base}.slf4j + + + + + + + + + + ${spec.title} + ${spec.version} + ${project.name} + ${project.version} + ${project.groupId} + + + + + + *:* + + javax/** + mozilla/** + darwin/** + linux/** + win32/** + META-INF/maven/** + META-INF/native-image/** + META-INF/versions/** + META-INF/*.xml + + + + + + + package + + shade + + + false + + + + + + + diff --git a/src/main/java/ru/yandex/clickhouse/BalancedClickhouseDataSource.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/BalancedClickhouseDataSource.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/BalancedClickhouseDataSource.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/BalancedClickhouseDataSource.java diff --git a/src/main/java/ru/yandex/clickhouse/BodyEntityWrapper.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/BodyEntityWrapper.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/BodyEntityWrapper.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/BodyEntityWrapper.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHouseArray.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseArray.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHouseArray.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseArray.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHouseConnection.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseConnection.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHouseConnection.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseConnection.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHouseConnectionImpl.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseConnectionImpl.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHouseConnectionImpl.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseConnectionImpl.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHouseDataSource.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseDataSource.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHouseDataSource.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseDataSource.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHouseDatabaseMetadata.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseDatabaseMetadata.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHouseDatabaseMetadata.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseDatabaseMetadata.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHouseDriver.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseDriver.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHouseDriver.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseDriver.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHouseExternalData.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseExternalData.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHouseExternalData.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseExternalData.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatement.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatement.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatement.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatement.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatementImpl.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatementImpl.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatementImpl.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatementImpl.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatementParameter.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatementParameter.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatementParameter.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHousePreparedStatementParameter.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHouseStatement.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseStatement.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHouseStatement.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseStatement.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHouseStatementImpl.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseStatementImpl.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHouseStatementImpl.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseStatementImpl.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickHouseUtil.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseUtil.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickHouseUtil.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseUtil.java diff --git a/src/main/java/ru/yandex/clickhouse/ClickhouseJdbcUrlParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickhouseJdbcUrlParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ClickhouseJdbcUrlParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickhouseJdbcUrlParser.java diff --git a/src/main/java/ru/yandex/clickhouse/ConfigurableApi.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ConfigurableApi.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ConfigurableApi.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ConfigurableApi.java diff --git a/src/main/java/ru/yandex/clickhouse/Jackson.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/Jackson.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/Jackson.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/Jackson.java diff --git a/src/main/java/ru/yandex/clickhouse/LZ4EntityWrapper.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/LZ4EntityWrapper.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/LZ4EntityWrapper.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/LZ4EntityWrapper.java diff --git a/src/main/java/ru/yandex/clickhouse/PreparedStatementParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/PreparedStatementParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/PreparedStatementParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/PreparedStatementParser.java diff --git a/src/main/java/ru/yandex/clickhouse/ResponseFactory.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ResponseFactory.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/ResponseFactory.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ResponseFactory.java diff --git a/src/main/java/ru/yandex/clickhouse/Writer.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/Writer.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/Writer.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/Writer.java diff --git a/src/main/java/ru/yandex/clickhouse/domain/ClickHouseCompression.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/domain/ClickHouseCompression.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/domain/ClickHouseCompression.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/domain/ClickHouseCompression.java diff --git a/src/main/java/ru/yandex/clickhouse/domain/ClickHouseDataType.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/domain/ClickHouseDataType.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/domain/ClickHouseDataType.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/domain/ClickHouseDataType.java diff --git a/src/main/java/ru/yandex/clickhouse/domain/ClickHouseFormat.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/domain/ClickHouseFormat.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/domain/ClickHouseFormat.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/domain/ClickHouseFormat.java diff --git a/src/main/java/ru/yandex/clickhouse/except/ClickHouseErrorCode.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/except/ClickHouseErrorCode.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/except/ClickHouseErrorCode.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/except/ClickHouseErrorCode.java diff --git a/src/main/java/ru/yandex/clickhouse/except/ClickHouseException.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/except/ClickHouseException.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/except/ClickHouseException.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/except/ClickHouseException.java diff --git a/src/main/java/ru/yandex/clickhouse/except/ClickHouseExceptionSpecifier.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/except/ClickHouseExceptionSpecifier.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/except/ClickHouseExceptionSpecifier.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/except/ClickHouseExceptionSpecifier.java diff --git a/src/main/java/ru/yandex/clickhouse/except/ClickHouseUnknownException.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/except/ClickHouseUnknownException.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/except/ClickHouseUnknownException.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/except/ClickHouseUnknownException.java diff --git a/src/main/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlStatement.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlStatement.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlStatement.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlStatement.java diff --git a/src/main/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlUtils.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlUtils.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlUtils.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlUtils.java diff --git a/src/main/java/ru/yandex/clickhouse/jdbc/parser/LanguageType.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/LanguageType.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/jdbc/parser/LanguageType.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/LanguageType.java diff --git a/src/main/java/ru/yandex/clickhouse/jdbc/parser/OperationType.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/OperationType.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/jdbc/parser/OperationType.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/OperationType.java diff --git a/src/main/java/ru/yandex/clickhouse/jdbc/parser/ParseHandler.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/ParseHandler.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/jdbc/parser/ParseHandler.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/ParseHandler.java diff --git a/src/main/java/ru/yandex/clickhouse/jdbc/parser/StatementType.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/StatementType.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/jdbc/parser/StatementType.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/jdbc/parser/StatementType.java diff --git a/src/main/java/ru/yandex/clickhouse/response/AbstractResultSet.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/AbstractResultSet.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/AbstractResultSet.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/AbstractResultSet.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ArrayByteFragment.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ArrayByteFragment.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ArrayByteFragment.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ArrayByteFragment.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ArrayToStringDeserializer.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ArrayToStringDeserializer.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ArrayToStringDeserializer.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ArrayToStringDeserializer.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ByteFragment.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ByteFragment.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ByteFragment.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ByteFragment.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ClickHouseColumnInfo.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseColumnInfo.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ClickHouseColumnInfo.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseColumnInfo.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ClickHouseLZ4Stream.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseLZ4Stream.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ClickHouseLZ4Stream.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseLZ4Stream.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ClickHouseResponse.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResponse.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ClickHouseResponse.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResponse.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ClickHouseResponseFactory.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResponseFactory.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ClickHouseResponseFactory.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResponseFactory.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ClickHouseResponseSummary.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResponseSummary.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ClickHouseResponseSummary.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResponseSummary.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ClickHouseResultBuilder.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResultBuilder.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ClickHouseResultBuilder.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResultBuilder.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ClickHouseResultSet.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResultSet.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ClickHouseResultSet.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResultSet.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ClickHouseResultSetMetaData.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResultSetMetaData.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ClickHouseResultSetMetaData.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseResultSetMetaData.java diff --git a/src/main/java/ru/yandex/clickhouse/response/ClickHouseScrollableResultSet.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseScrollableResultSet.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/ClickHouseScrollableResultSet.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/ClickHouseScrollableResultSet.java diff --git a/src/main/java/ru/yandex/clickhouse/response/FastByteArrayInputStream.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/FastByteArrayInputStream.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/FastByteArrayInputStream.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/FastByteArrayInputStream.java diff --git a/src/main/java/ru/yandex/clickhouse/response/FastByteArrayOutputStream.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/FastByteArrayOutputStream.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/FastByteArrayOutputStream.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/FastByteArrayOutputStream.java diff --git a/src/main/java/ru/yandex/clickhouse/response/StreamSplitter.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/StreamSplitter.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/StreamSplitter.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/StreamSplitter.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseDateValueParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseDateValueParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseDateValueParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseDateValueParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseDoubleParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseDoubleParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseDoubleParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseDoubleParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseInstantParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseInstantParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseInstantParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseInstantParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateTimeParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateTimeParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateTimeParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateTimeParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalTimeParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalTimeParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalTimeParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalTimeParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetDateTimeParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetDateTimeParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetDateTimeParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetDateTimeParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetTimeParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetTimeParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetTimeParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetTimeParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLDateParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLDateParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLDateParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLDateParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimeParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimeParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimeParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimeParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimestampParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimestampParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimestampParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimestampParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseStringParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseStringParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseStringParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseStringParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseValueParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseValueParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseValueParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseValueParser.java diff --git a/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseZonedDateTimeParser.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseZonedDateTimeParser.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseZonedDateTimeParser.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/response/parser/ClickHouseZonedDateTimeParser.java diff --git a/src/main/java/ru/yandex/clickhouse/settings/ClickHouseConnectionSettings.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/settings/ClickHouseConnectionSettings.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/settings/ClickHouseConnectionSettings.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/settings/ClickHouseConnectionSettings.java diff --git a/src/main/java/ru/yandex/clickhouse/settings/ClickHouseProperties.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/settings/ClickHouseProperties.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/settings/ClickHouseProperties.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/settings/ClickHouseProperties.java diff --git a/src/main/java/ru/yandex/clickhouse/settings/ClickHouseQueryParam.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/settings/ClickHouseQueryParam.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/settings/ClickHouseQueryParam.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/settings/ClickHouseQueryParam.java diff --git a/src/main/java/ru/yandex/clickhouse/settings/DriverPropertyCreator.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/settings/DriverPropertyCreator.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/settings/DriverPropertyCreator.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/settings/DriverPropertyCreator.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseArrayUtil.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseArrayUtil.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseArrayUtil.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseArrayUtil.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseBlockChecksum.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseBlockChecksum.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseBlockChecksum.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseBlockChecksum.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseCityHash.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseCityHash.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseCityHash.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseCityHash.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseFormat.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseFormat.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseFormat.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseFormat.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseHttpClientBuilder.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseHttpClientBuilder.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseHttpClientBuilder.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseHttpClientBuilder.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseLZ4OutputStream.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseLZ4OutputStream.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseLZ4OutputStream.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseLZ4OutputStream.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryInputStream.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryInputStream.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryInputStream.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryInputStream.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryStream.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryStream.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryStream.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryStream.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseStreamCallback.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseStreamCallback.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseStreamCallback.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseStreamCallback.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseStreamHttpEntity.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseStreamHttpEntity.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseStreamHttpEntity.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseStreamHttpEntity.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseValueFormatter.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseValueFormatter.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseValueFormatter.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseValueFormatter.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ClickHouseVersionNumberUtil.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseVersionNumberUtil.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ClickHouseVersionNumberUtil.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ClickHouseVersionNumberUtil.java diff --git a/src/main/java/ru/yandex/clickhouse/util/IpVersionPriorityResolver.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/IpVersionPriorityResolver.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/IpVersionPriorityResolver.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/IpVersionPriorityResolver.java diff --git a/src/main/java/ru/yandex/clickhouse/util/LogProxy.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/LogProxy.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/LogProxy.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/LogProxy.java diff --git a/src/main/java/ru/yandex/clickhouse/util/Logger.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/Logger.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/Logger.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/Logger.java diff --git a/src/main/java/ru/yandex/clickhouse/util/Utils.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/Utils.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/Utils.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/Utils.java diff --git a/src/main/java/ru/yandex/clickhouse/util/apache/StringUtils.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/apache/StringUtils.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/apache/StringUtils.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/apache/StringUtils.java diff --git a/src/main/java/ru/yandex/clickhouse/util/guava/StreamUtils.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/guava/StreamUtils.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/guava/StreamUtils.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/guava/StreamUtils.java diff --git a/src/main/java/ru/yandex/clickhouse/util/ssl/NonValidatingTrustManager.java b/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ssl/NonValidatingTrustManager.java similarity index 100% rename from src/main/java/ru/yandex/clickhouse/util/ssl/NonValidatingTrustManager.java rename to clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/util/ssl/NonValidatingTrustManager.java diff --git a/src/main/javacc/ClickHouseSqlParser.jj b/clickhouse-jdbc/src/main/javacc/ClickHouseSqlParser.jj similarity index 100% rename from src/main/javacc/ClickHouseSqlParser.jj rename to clickhouse-jdbc/src/main/javacc/ClickHouseSqlParser.jj diff --git a/src/main/resources/META-INF/services/java.sql.Driver b/clickhouse-jdbc/src/main/resources/META-INF/services/java.sql.Driver similarity index 100% rename from src/main/resources/META-INF/services/java.sql.Driver rename to clickhouse-jdbc/src/main/resources/META-INF/services/java.sql.Driver diff --git a/src/test/java/ru/yandex/clickhouse/BalancedClickhouseDataSourceTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/BalancedClickhouseDataSourceTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/BalancedClickhouseDataSourceTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/BalancedClickhouseDataSourceTest.java diff --git a/src/test/java/ru/yandex/clickhouse/ClickHouseConnectionTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHouseConnectionTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/ClickHouseConnectionTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHouseConnectionTest.java diff --git a/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java diff --git a/src/test/java/ru/yandex/clickhouse/ClickHouseDataSourceTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHouseDataSourceTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/ClickHouseDataSourceTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHouseDataSourceTest.java diff --git a/src/test/java/ru/yandex/clickhouse/ClickHousePreparedStatementParameterTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHousePreparedStatementParameterTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/ClickHousePreparedStatementParameterTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHousePreparedStatementParameterTest.java diff --git a/src/test/java/ru/yandex/clickhouse/ClickHousePreparedStatementTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHousePreparedStatementTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/ClickHousePreparedStatementTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHousePreparedStatementTest.java diff --git a/src/test/java/ru/yandex/clickhouse/ClickHouseStatementTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHouseStatementTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/ClickHouseStatementTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHouseStatementTest.java diff --git a/src/test/java/ru/yandex/clickhouse/ClickHouseUtilTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHouseUtilTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/ClickHouseUtilTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickHouseUtilTest.java diff --git a/src/test/java/ru/yandex/clickhouse/ClickhouseJdbcUrlParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickhouseJdbcUrlParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/ClickhouseJdbcUrlParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickhouseJdbcUrlParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/ClickhouseLZ4StreamTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickhouseLZ4StreamTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/ClickhouseLZ4StreamTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/ClickhouseLZ4StreamTest.java diff --git a/src/test/java/ru/yandex/clickhouse/PreparedStatementParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/PreparedStatementParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/PreparedStatementParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/PreparedStatementParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/WriterTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/WriterTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/WriterTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/WriterTest.java diff --git a/src/test/java/ru/yandex/clickhouse/domain/ClickHouseDataTypeTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/domain/ClickHouseDataTypeTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/domain/ClickHouseDataTypeTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/domain/ClickHouseDataTypeTest.java diff --git a/src/test/java/ru/yandex/clickhouse/domain/ClickHouseDataTypeTestDataProvider.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/domain/ClickHouseDataTypeTestDataProvider.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/domain/ClickHouseDataTypeTestDataProvider.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/domain/ClickHouseDataTypeTestDataProvider.java diff --git a/src/test/java/ru/yandex/clickhouse/domain/ClickHouseFormatTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/domain/ClickHouseFormatTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/domain/ClickHouseFormatTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/domain/ClickHouseFormatTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/ArrayTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ArrayTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/ArrayTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ArrayTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/BatchInsertsTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/BatchInsertsTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/BatchInsertsTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/BatchInsertsTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/CSVStreamTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/CSVStreamTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/CSVStreamTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/CSVStreamTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/ClickHouseConnectionImplTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHouseConnectionImplTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/ClickHouseConnectionImplTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHouseConnectionImplTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/ClickHouseDatabaseMetadataTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHouseDatabaseMetadataTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/ClickHouseDatabaseMetadataTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHouseDatabaseMetadataTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/ClickHousePreparedStatementTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHousePreparedStatementTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/ClickHousePreparedStatementTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHousePreparedStatementTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/ClickHouseStatementImplTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHouseStatementImplTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/ClickHouseStatementImplTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickHouseStatementImplTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/ClickhouseLZ4StreamTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickhouseLZ4StreamTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/ClickhouseLZ4StreamTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ClickhouseLZ4StreamTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/ErrorsTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ErrorsTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/ErrorsTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ErrorsTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/NativeStreamTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/NativeStreamTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/NativeStreamTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/NativeStreamTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/OnTime.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/OnTime.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/OnTime.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/OnTime.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/ResultSummaryTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ResultSummaryTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/ResultSummaryTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/ResultSummaryTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/RowBinaryStreamTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/RowBinaryStreamTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/RowBinaryStreamTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/RowBinaryStreamTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/StreamSQLTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/StreamSQLTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/StreamSQLTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/StreamSQLTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/TSVStreamTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/TSVStreamTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/TSVStreamTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/TSVStreamTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/TimeZoneTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/TimeZoneTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/TimeZoneTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/TimeZoneTest.java diff --git a/src/test/java/ru/yandex/clickhouse/integration/WriterTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/WriterTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/integration/WriterTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/integration/WriterTest.java diff --git a/src/test/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlUtilsTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlUtilsTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlUtilsTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlUtilsTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/ByteFragmentTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ByteFragmentTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/ByteFragmentTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ByteFragmentTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/ClickHouseColumnInfoTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ClickHouseColumnInfoTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/ClickHouseColumnInfoTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ClickHouseColumnInfoTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/ClickHouseResultBuilderTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ClickHouseResultBuilderTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/ClickHouseResultBuilderTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ClickHouseResultBuilderTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/ClickHouseResultSetMetaDataTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ClickHouseResultSetMetaDataTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/ClickHouseResultSetMetaDataTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ClickHouseResultSetMetaDataTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/ClickHouseResultSetTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ClickHouseResultSetTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/ClickHouseResultSetTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ClickHouseResultSetTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/ClickHouseScrollableResultSetTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ClickHouseScrollableResultSetTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/ClickHouseScrollableResultSetTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/ClickHouseScrollableResultSetTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseBigDecimalParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseBigDecimalParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseBigDecimalParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseBigDecimalParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseDoubleParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseDoubleParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseDoubleParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseDoubleParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseInstantParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseInstantParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseInstantParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseInstantParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateTimeParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateTimeParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateTimeParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalDateTimeParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalTimeParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalTimeParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalTimeParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseLocalTimeParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetDateTimeParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetDateTimeParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetDateTimeParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetDateTimeParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetTimeParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetTimeParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetTimeParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseOffsetTimeParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLDateParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLDateParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLDateParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLDateParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimeParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimeParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimeParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimeParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimestampParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimestampParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimestampParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseSQLTimestampParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseStringParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseStringParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseStringParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseStringParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseTimeParserTestDataProvider.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseTimeParserTestDataProvider.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseTimeParserTestDataProvider.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseTimeParserTestDataProvider.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseUUIDParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseUUIDParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseUUIDParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseUUIDParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseValueParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseValueParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseValueParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseValueParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseZonedDateTimeParserTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseZonedDateTimeParserTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseZonedDateTimeParserTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/response/parser/ClickHouseZonedDateTimeParserTest.java diff --git a/src/test/java/ru/yandex/clickhouse/settings/ClickHousePropertiesTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/settings/ClickHousePropertiesTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/settings/ClickHousePropertiesTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/settings/ClickHousePropertiesTest.java diff --git a/src/test/java/ru/yandex/clickhouse/util/ClickHouseArrayUtilTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseArrayUtilTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/util/ClickHouseArrayUtilTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseArrayUtilTest.java diff --git a/src/test/java/ru/yandex/clickhouse/util/ClickHouseBlockChecksumTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseBlockChecksumTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/util/ClickHouseBlockChecksumTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseBlockChecksumTest.java diff --git a/src/test/java/ru/yandex/clickhouse/util/ClickHouseHttpClientBuilderTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseHttpClientBuilderTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/util/ClickHouseHttpClientBuilderTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseHttpClientBuilderTest.java diff --git a/src/test/java/ru/yandex/clickhouse/util/ClickHouseLZ4OutputStreamTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseLZ4OutputStreamTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/util/ClickHouseLZ4OutputStreamTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseLZ4OutputStreamTest.java diff --git a/src/test/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryInputStreamTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryInputStreamTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryInputStreamTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryInputStreamTest.java diff --git a/src/test/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryStreamTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryStreamTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryStreamTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseRowBinaryStreamTest.java diff --git a/src/test/java/ru/yandex/clickhouse/util/ClickHouseValueFormatterTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseValueFormatterTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/util/ClickHouseValueFormatterTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseValueFormatterTest.java diff --git a/src/test/java/ru/yandex/clickhouse/util/ClickHouseVersionNumberUtilTest.java b/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseVersionNumberUtilTest.java similarity index 100% rename from src/test/java/ru/yandex/clickhouse/util/ClickHouseVersionNumberUtilTest.java rename to clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/util/ClickHouseVersionNumberUtilTest.java diff --git a/src/test/resources/data_samples/test_sample.orc.gz b/clickhouse-jdbc/src/test/resources/data_samples/test_sample.orc.gz similarity index 100% rename from src/test/resources/data_samples/test_sample.orc.gz rename to clickhouse-jdbc/src/test/resources/data_samples/test_sample.orc.gz diff --git a/src/test/resources/data_samples/test_sample.parquet.gz b/clickhouse-jdbc/src/test/resources/data_samples/test_sample.parquet.gz similarity index 100% rename from src/test/resources/data_samples/test_sample.parquet.gz rename to clickhouse-jdbc/src/test/resources/data_samples/test_sample.parquet.gz diff --git a/src/test/resources/log4j.properties b/clickhouse-jdbc/src/test/resources/log4j.properties similarity index 100% rename from src/test/resources/log4j.properties rename to clickhouse-jdbc/src/test/resources/log4j.properties diff --git a/src/test/resources/ru/yandex/clickhouse/users.d/foo.xml b/clickhouse-jdbc/src/test/resources/ru/yandex/clickhouse/users.d/foo.xml similarity index 100% rename from src/test/resources/ru/yandex/clickhouse/users.d/foo.xml rename to clickhouse-jdbc/src/test/resources/ru/yandex/clickhouse/users.d/foo.xml diff --git a/src/test/resources/ru/yandex/clickhouse/users.d/oof.xml b/clickhouse-jdbc/src/test/resources/ru/yandex/clickhouse/users.d/oof.xml similarity index 100% rename from src/test/resources/ru/yandex/clickhouse/users.d/oof.xml rename to clickhouse-jdbc/src/test/resources/ru/yandex/clickhouse/users.d/oof.xml diff --git a/src/test/resources/sqls/issue-441_with-totals.sql b/clickhouse-jdbc/src/test/resources/sqls/issue-441_with-totals.sql similarity index 100% rename from src/test/resources/sqls/issue-441_with-totals.sql rename to clickhouse-jdbc/src/test/resources/sqls/issue-441_with-totals.sql diff --git a/src/test/resources/sqls/issue-555_custom-format.sql b/clickhouse-jdbc/src/test/resources/sqls/issue-555_custom-format.sql similarity index 100% rename from src/test/resources/sqls/issue-555_custom-format.sql rename to clickhouse-jdbc/src/test/resources/sqls/issue-555_custom-format.sql diff --git a/src/test/resources/sqls/with-clause.sql b/clickhouse-jdbc/src/test/resources/sqls/with-clause.sql similarity index 100% rename from src/test/resources/sqls/with-clause.sql rename to clickhouse-jdbc/src/test/resources/sqls/with-clause.sql diff --git a/clickhouse-mysql-client/pom.xml b/clickhouse-mysql-client/pom.xml new file mode 100644 index 000000000..23430b915 --- /dev/null +++ b/clickhouse-mysql-client/pom.xml @@ -0,0 +1,68 @@ + + 4.0.0 + + + tech.clickhouse + clickhouse-java + ${revision} + + + ${parent.groupId} + clickhouse-mysql-client + ${revision} + jar + + + 2.7.2 + 8.0.23 + + + + + ${parent.groupId} + clickhouse-client + ${revision} + + + org.mariadb.jdbc + mariadb-java-client + ${mariadb-driver.version} + + + * + * + + + + + mysql + mysql-connector-java + ${mysql-driver.version} + + + * + * + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${jdk.version} + ${jdk.version} + true + + -Xlint:all + -Werror + + + + + + diff --git a/clickhouse-native-client/pom.xml b/clickhouse-native-client/pom.xml new file mode 100644 index 000000000..996318396 --- /dev/null +++ b/clickhouse-native-client/pom.xml @@ -0,0 +1,41 @@ + + 4.0.0 + + + tech.clickhouse + clickhouse-java + ${revision} + + + ${parent.groupId} + clickhouse-native-client + ${revision} + jar + + + + ${parent.groupId} + clickhouse-client + ${revision} + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${jdk.version} + ${jdk.version} + true + + -Xlint:all + -Werror + + + + + + diff --git a/pom.xml b/pom.xml index a387b7579..14e597546 100644 --- a/pom.xml +++ b/pom.xml @@ -1,15 +1,24 @@ - + + 4.0.0 - ru.yandex.clickhouse - clickhouse-jdbc + tech.clickhouse + clickhouse-java ${revision} - jar + pom - clickhouse-jdbc - JDBC driver for ClickHouse + clickhouse-java + Java Client and JDBC driver for ClickHouse https://github.com/ClickHouse/clickhouse-jdbc + 2015 + + + ClickHouse + https://clickhouse.tech/ + + The Apache Software License, Version 2.0 @@ -17,163 +26,280 @@ repo - - https://github.com/ClickHouse/clickhouse-jdbc - scm:git@github.com:ClickHouse/clickhouse-jdbc.git - scm:git@github.com:ClickHouse/clickhouse-jdbc.git - - - serebrserg - Sergey Serebryanik - serebrserg@yandex-team.ru - - - jkee - Viktor Tarnavsky - jkee@yandex-team.ru - - - orantius - Yuriy Galitskiy - orantius@yandex-team.ru - - - krash - Alexandr Krasheninnikov - krash3@gmail.com - zhicwu Zhichun Wu zhicwu@gmail.com + +8 + + clickhouse-client + clickhouse-grpc-client + clickhouse-http-client + clickhouse-native-client + clickhouse-jdbc + clickhouse-benchmark + + + + https://github.com/ClickHouse/clickhouse-jdbc + scm:git@github.com:ClickHouse/clickhouse-jdbc.git + scm:git@github.com:ClickHouse/clickhouse-jdbc.git + HEAD + + + + Github + https://github.com/ClickHouse/clickhouse-jdbc/issues + + + + Github + https://github.com/ClickHouse/clickhouse-jdbc/actions + + + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + 0.3.0-SNAPSHOT - 1.7.30 2021 UTF-8 - 4.5.13 + UTF-8 + 1.8 1.7.1 2.9.10 2.9.10.8 - 29.0-jre - 2.3.1 - 1.8 - 1.15.2 - 6.14.3 + 1.7.30 1.10.19 2.27.2 - 3.2.0 + 1.15.2 + 6.14.3 + 3.3.0 3.0.0-M1 1.6.8 1.6 - 4.1.4 3.8.1 + 3.2.4 3.2.1 + 0.8.6 3.2.0 3.2.0 3.0.0-M5 3.0.0-M5 3.3.0 - 3.2.4 - ru.yandex.clickhouse.jdbc.internal false ${skipTests} ${skipTests} - JDBC - 4.2 - - - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - org.apache.httpcomponents - httpmime - ${httpclient.version} - - - org.lz4 - lz4-java - ${lz4.version} - - - com.fasterxml.jackson.core - jackson-core - ${jackson-core.version} - - - com.fasterxml.jackson.core - jackson-databind - ${jackson-databind.version} - - - com.google.guava - guava - ${guava.version} - - - org.slf4j - slf4j-api - ${slf4j.version} - - - javax.xml.bind - jaxb-api - ${jaxb.version} - + clickhouse_clickhouse-jdbc + clickhouse + https://sonarcloud.io + 0.3.0 + - - org.slf4j - slf4j-log4j12 - ${slf4j.version} - test - - - org.testcontainers - testcontainers - ${testcontainers.version} - test - - - org.testng - testng - ${testng.version} - test - - - org.mockito - mockito-all - ${mockito.version} - test - - - com.github.tomakehurst - wiremock-jre8 - ${wiremock.version} - test - - + + + + com.fasterxml.jackson.core + jackson-core + ${jackson-core.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson-databind.version} + + + org.lz4 + lz4-java + ${lz4.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + + + org.mockito + mockito-all + ${mockito.version} + + + com.github.tomakehurst + wiremock-jre8 + ${wiremock.version} + + + org.testcontainers + testcontainers + ${testcontainers.version} + + + org.testng + testng + ${testng.version} + + + - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${assembly-plugin.version} + + + org.apache.maven.plugins + maven-compiler-plugin + ${compiler-plugin.version} + + + + org.apache.maven.plugins + maven-deploy-plugin + ${deploy-plugin.version} + + + org.apache.maven.plugins + maven-gpg-plugin + ${gpg-plugin.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${jar-plugin.version} + + + org.apache.maven.plugins + maven-javadoc-plugin + ${javadoc-plugin.version} + + + org.apache.maven.plugins + maven-shade-plugin + ${shade-plugin.version} + + + org.apache.maven.plugins + maven-source-plugin + ${source-plugin.version} + + + org.sonatype.plugins + nexus-staging-maven-plugin + ${staging-plugin.version} + + + org.apache.maven.plugins + maven-failsafe-plugin + ${failsafe-plugin.version} + + **/*.java + ${skipTests} + ${skipITs} + false + + + + run-integration-tests + integration-test + + integration-test + verify + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire-plugin.version} + + ${skipUTs} + false + + + + + + + analysis + + + + org.jacoco + jacoco-maven-plugin + ${jacoco-plugin.version} + + + + prepare-agent + + + + jacoco-report + test + + report + + + + jacoco-check + + check + + + + + PACKAGE + + + LINE + COVEREDRATIO + 0.0 + + + + + + + + + + + release @@ -181,7 +307,6 @@ org.apache.maven.plugins maven-source-plugin - ${source-plugin.version} attach-sources @@ -194,7 +319,6 @@ org.apache.maven.plugins maven-javadoc-plugin - ${javadoc-plugin.version} attach-javadocs @@ -207,7 +331,6 @@ org.apache.maven.plugins maven-gpg-plugin - ${gpg-plugin.version} @@ -228,7 +351,6 @@ org.apache.maven.plugins maven-deploy-plugin - ${deploy-plugin.version} true @@ -236,7 +358,6 @@ org.sonatype.plugins nexus-staging-maven-plugin - ${staging-plugin.version} default-deploy @@ -255,186 +376,4 @@ - - - - - org.apache.maven.plugins - maven-failsafe-plugin - ${failsafe-plugin.version} - - **/*.java - ${skipTests} - ${skipITs} - false - - - - run-integration-tests - integration-test - - integration-test - verify - - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${surefire-plugin.version} - - ${skipUTs} - false - - - - com.helger.maven - ph-javacc-maven-plugin - ${javacc-plugin.version} - - - jjc - generate-sources - - javacc - - - ${jdk.version} - true - ru.yandex.clickhouse.jdbc.parser - src/main/javacc - src/main/java - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${compiler-plugin.version} - - ${jdk.version} - ${jdk.version} - true - true - true - - - - org.apache.maven.plugins - maven-jar-plugin - ${jar-plugin.version} - - - - true - true - true - - - ${spec.title} - ${spec.version} - ${project.groupId} - - - - - - org.apache.maven.plugins - maven-assembly-plugin - ${assembly-plugin.version} - - - jar-with-dependencies - - - - true - true - - - - - - org.apache.maven.plugins - maven-shade-plugin - ${shade-plugin.version} - - true - true - true - shaded - - - com.fasterxml.jackson - ${shade.base}.jackson - - - com.google - ${shade.base}.google - - - org.apache - ${shade.base}.apache - - - org.checkerframework - ${shade.base}.checker - - - net.jpountz - ${shade.base}.jpountz - - - org.slf4j - ${shade.base}.slf4j - - - - - - - - - - ${spec.title} - ${spec.version} - ${project.name} - ${project.version} - ${project.groupId} - - - - - - *:* - - javax/** - mozilla/** - darwin/** - linux/** - win32/** - META-INF/maven/** - META-INF/native-image/** - META-INF/versions/** - META-INF/*.xml - - - - - - - package - - shade - - - false - - - - - - diff --git a/src/test/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlParserTest.java b/src/test/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlParserTest.java deleted file mode 100644 index 9e2768413..000000000 --- a/src/test/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlParserTest.java +++ /dev/null @@ -1,624 +0,0 @@ -package ru.yandex.clickhouse.jdbc.parser; - -import org.testng.annotations.Test; - -import ru.yandex.clickhouse.settings.ClickHouseProperties; - -import static org.testng.Assert.assertEquals; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.util.HashMap; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class ClickHouseSqlParserTest { - private ClickHouseSqlStatement[] parse(String sql) { - return ClickHouseSqlParser.parse(sql, new ClickHouseProperties()); - } - - private String loadSql(String file) { - InputStream inputStream = ClickHouseSqlParserTest.class.getResourceAsStream("/sqls/" + file); - - StringBuilder sql = new StringBuilder(); - try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { - String line; - while ((line = br.readLine()) != null) { - sql.append(line).append("\n"); - } - } catch (IOException e) { - throw new IllegalArgumentException(e); - } - - return sql.toString(); - } - - private void checkSingleStatement(ClickHouseSqlStatement[] stmts, String sql) { - checkSingleStatement(stmts, sql, StatementType.UNKNOWN, ClickHouseSqlStatement.DEFAULT_DATABASE, - ClickHouseSqlStatement.DEFAULT_TABLE); - } - - private void checkSingleStatement(ClickHouseSqlStatement[] stmts, String sql, StatementType stmtType) { - checkSingleStatement(stmts, sql, stmtType, ClickHouseSqlStatement.DEFAULT_DATABASE, - ClickHouseSqlStatement.DEFAULT_TABLE); - } - - private void checkSingleStatement(ClickHouseSqlStatement[] stmts, String sql, StatementType stmtType, - String database, String table) { - assertEquals(stmts.length, 1); - - ClickHouseSqlStatement s = stmts[0]; - assertEquals(s.getSQL(), sql); - assertEquals(s.getStatementType(), stmtType); - assertEquals(s.getDatabaseOrDefault(null), database); - assertEquals(s.getTable(), table); - } - - @Test - public void testParseNonSql() throws ParseException { - String sql; - - assertEquals(parse(sql = null), - new ClickHouseSqlStatement[] { new ClickHouseSqlStatement(sql, StatementType.UNKNOWN) }); - assertEquals(parse(sql = ""), - new ClickHouseSqlStatement[] { new ClickHouseSqlStatement(sql, StatementType.UNKNOWN) }); - - checkSingleStatement(parse(sql = "invalid sql"), sql); - checkSingleStatement(parse(sql = "-- some comments"), sql); - checkSingleStatement(parse(sql = "/*********\r\n\r\t some ***** comments*/"), sql); - - checkSingleStatement(parse(sql = "select"), sql, StatementType.UNKNOWN); - checkSingleStatement(parse(sql = "select ()"), sql, StatementType.UNKNOWN); - checkSingleStatement(parse(sql = "select (()"), sql, StatementType.UNKNOWN); - checkSingleStatement(parse(sql = "select [[]"), sql, StatementType.UNKNOWN); - // checkSingleStatement(parse(sql = "select 1 select"), sql, - // StatementType.UNKNOWN); - } - - @Test - public void testAlterStatement() { - String sql; - - checkSingleStatement(parse(sql = "ALTER TABLE alter_test ADD COLUMN Added0 UInt32"), sql, StatementType.ALTER, - "system", "alter_test"); - checkSingleStatement( - parse(sql = "ALTER TABLE test_db.test_table UPDATE a = 1, \"b\" = '2', `c`=3.3 WHERE d=123 and e=456"), - sql, StatementType.ALTER_UPDATE, "test_db", "test_table"); - checkSingleStatement(parse(sql = "ALTER TABLE tTt on cluster 'cc' delete WHERE d=123 and e=456"), sql, - StatementType.ALTER_DELETE, "system", "tTt"); - checkSingleStatement(parse(sql = "ALTER USER user DEFAULT ROLE role1, role2"), sql, StatementType.ALTER); - } - - @Test - public void testAttachStatement() { - String sql; - - checkSingleStatement(parse(sql = "ATTACH TABLE IF NOT EXISTS t.t ON CLUSTER cluster"), sql, - StatementType.ATTACH); - } - - @Test - public void testCheckStatement() { - String sql; - - checkSingleStatement(parse(sql = "check table a"), sql, StatementType.CHECK); - checkSingleStatement(parse(sql = "check table a.a"), sql, StatementType.CHECK); - } - - @Test - public void testCreateStatement() { - String sql; - - checkSingleStatement(parse(sql = "create table a(a String) engine=Memory"), sql, StatementType.CREATE); - } - - @Test - public void testDeleteStatement() { - String sql; - - checkSingleStatement(parse(sql = "delete from a"), sql, StatementType.DELETE, "system", "a"); - checkSingleStatement(parse(sql = "delete from c.a where upper(a)=upper(lower(b))"), sql, StatementType.DELETE, - "c", "a"); - } - - @Test - public void testDescribeStatement() { - String sql; - - checkSingleStatement(parse(sql = "desc a"), sql, StatementType.DESCRIBE, "system", "columns"); - checkSingleStatement(parse(sql = "desc table a"), sql, StatementType.DESCRIBE, "system", "columns"); - checkSingleStatement(parse(sql = "describe table a.a"), sql, StatementType.DESCRIBE, "a", "columns"); - checkSingleStatement(parse(sql = "desc table table"), sql, StatementType.DESCRIBE, "system", "columns"); - } - - @Test - public void testDetachStatement() { - String sql; - - checkSingleStatement(parse(sql = "detach TABLE t"), sql, StatementType.DETACH); - checkSingleStatement(parse(sql = "detach TABLE if exists t.t on cluster 'cc'"), sql, StatementType.DETACH); - } - - @Test - public void testDropStatement() { - String sql; - - checkSingleStatement(parse(sql = "drop TEMPORARY table t"), sql, StatementType.DROP); - checkSingleStatement(parse(sql = "drop TABLE if exists t.t on cluster 'cc'"), sql, StatementType.DROP); - } - - @Test - public void testExistsStatement() { - String sql; - - checkSingleStatement(parse(sql = "EXISTS TEMPORARY TABLE a"), sql, StatementType.EXISTS); - checkSingleStatement(parse(sql = "EXISTS TABLE a.a"), sql, StatementType.EXISTS); - checkSingleStatement(parse(sql = "EXISTS DICTIONARY c"), sql, StatementType.EXISTS); - } - - @Test - public void testExplainStatement() { - String sql; - - checkSingleStatement(parse( - sql = "EXPLAIN SELECT sum(number) FROM numbers(10) UNION ALL SELECT sum(number) FROM numbers(10) ORDER BY sum(number) ASC FORMAT TSV"), - sql, StatementType.EXPLAIN); - checkSingleStatement(parse(sql = "EXPLAIN AST SELECT 1"), sql, StatementType.EXPLAIN); - checkSingleStatement(parse( - sql = "EXPLAIN SYNTAX SELECT * FROM system.numbers AS a, system.numbers AS b, system.numbers AS c"), - sql, StatementType.EXPLAIN); - } - - @Test - public void testGrantStatement() { - String sql; - - checkSingleStatement(parse(sql = "GRANT SELECT(x,y) ON db.table TO john WITH GRANT OPTION"), sql, - StatementType.GRANT); - checkSingleStatement(parse(sql = "GRANT INSERT(x,y) ON db.table TO john"), sql, StatementType.GRANT); - } - - @Test - public void testInsertStatement() throws ParseException { - String sql; - - ClickHouseSqlStatement s = parse(sql = "insert into table test(a,b) Values (1,2)")[0]; - assertEquals(sql.substring(s.getStartPosition("values"), s.getEndPosition("VALUES")), "Values"); - assertEquals(sql.substring(0, s.getEndPosition("values")) + " (1,2)", sql); - - Pattern values = Pattern.compile("(?i)VALUES[\\s]*\\("); - int valuePosition = -1; - Matcher matcher = values.matcher(sql); - if (matcher.find()) { - valuePosition = matcher.start(); - } - assertEquals(s.getStartPosition("values"), valuePosition); - - checkSingleStatement(parse(sql = "insert into function null('a UInt8') values(1)"), sql, StatementType.INSERT); - checkSingleStatement(parse(sql = "insert into function null('a UInt8') values(1)(2)"), sql, - StatementType.INSERT); - checkSingleStatement(parse(sql = "insert into function null('a UInt8') select * from number(10)"), sql, - StatementType.INSERT); - checkSingleStatement(parse(sql = "insert into test2(a,b) values('values(',',')"), sql, StatementType.INSERT, - "system", "test2"); - checkSingleStatement(parse(sql = "INSERT INTO table t(a, b, c) values('1', ',', 'ccc')"), sql, - StatementType.INSERT, "system", "t"); - checkSingleStatement(parse(sql = "INSERT INTO table t(a, b, c) values('1', 2, 'ccc') (3,2,1)"), sql, - StatementType.INSERT, "system", "t"); - checkSingleStatement(parse(sql = "INSERT INTO table s.t select * from ttt"), sql, StatementType.INSERT, "s", - "t"); - checkSingleStatement(parse(sql = "INSERT INTO insert_select_testtable (* EXCEPT(b)) Values (2, 2)"), sql, - StatementType.INSERT, "system", "insert_select_testtable"); - - } - - @Test - public void testKillStatement() { - String sql; - - checkSingleStatement(parse(sql = "KILL QUERY WHERE query_id='2-857d-4a57-9ee0-327da5d60a90'"), sql, - StatementType.KILL); - checkSingleStatement(parse( - sql = "KILL MUTATION WHERE database = 'default' AND table = 'table' AND mutation_id = 'mutation_3.txt' SYNC"), - sql, StatementType.KILL); - } - - @Test - public void testOptimizeStatement() { - String sql; - - checkSingleStatement(parse(sql = "OPTIMIZE TABLE a ON CLUSTER cluster PARTITION ID 'partition_id' FINAL"), sql, - StatementType.OPTIMIZE); - } - - @Test - public void testRenameStatement() { - String sql; - - checkSingleStatement(parse(sql = "RENAME TABLE table1 TO table2, table3 TO table4 ON CLUSTER cluster"), sql, - StatementType.RENAME); - checkSingleStatement(parse( - sql = "RENAME TABLE db1.table1 TO db2.table2, db2.table3 to db2.table4, db3.table5 to db2.table6 ON CLUSTER 'c'"), - sql, StatementType.RENAME); - } - - @Test - public void testRevokeStatement() { - String sql; - - checkSingleStatement(parse(sql = "REVOKE SELECT ON accounts.* FROM john"), sql, StatementType.REVOKE); - checkSingleStatement(parse(sql = "REVOKE SELECT(wage) ON accounts.staff FROM mira"), sql, StatementType.REVOKE); - } - - @Test - public void testSelectStatement() { - String sql; - - assertEquals(parse(sql = "select\n1"), new ClickHouseSqlStatement[] { - new ClickHouseSqlStatement(sql, StatementType.SELECT, null, null, "unknown", null, null, null, null) }); - assertEquals(parse(sql = "select\r\n1"), new ClickHouseSqlStatement[] { - new ClickHouseSqlStatement(sql, StatementType.SELECT, null, null, "unknown", null, null, null, null) }); - - assertEquals(parse(sql = "select 314 limit 5\nFORMAT JSONCompact;"), - new ClickHouseSqlStatement[] { new ClickHouseSqlStatement("select 314 limit 5\nFORMAT JSONCompact", - StatementType.SELECT, null, null, "unknown", "JSONCompact", null, null, null) }); - - checkSingleStatement(parse(sql = "select (())"), sql, StatementType.SELECT); - checkSingleStatement(parse(sql = "select []"), sql, StatementType.SELECT); - checkSingleStatement(parse(sql = "select [[]]"), sql, StatementType.SELECT); - checkSingleStatement(parse(sql = "select *"), sql, StatementType.SELECT); - checkSingleStatement(parse(sql = "select timezone()"), sql, StatementType.SELECT); - checkSingleStatement(parse(sql = "select @@version, $version"), sql, StatementType.SELECT); - checkSingleStatement(parse(sql = "select * from jdbc('db', 'schema', 'select 1')"), sql, StatementType.SELECT, - "system", "jdbc"); - checkSingleStatement(parse(sql = "select 1 as a1, a.a as a2, aa(a1, a2) a3, length(a3) as a4 from x"), sql, - StatementType.SELECT, "system", "x"); - checkSingleStatement(parse(sql = "select x.* from (select [1,2] a, (1,2,3) b, a[1], b.2) x"), sql, - StatementType.SELECT, "system", "x"); - checkSingleStatement(parse(sql = "select (3, [[1,2],[3,4]]) as a, (a.2)[2][1]"), sql, StatementType.SELECT); - checkSingleStatement( - parse(sql = "select 1,1.1,'\"''`a' a, \"'`\"\"a\" as b, (1 + `a`.a) c, null, inf i, nan as n"), sql, - StatementType.SELECT); - checkSingleStatement(parse(sql = "select 1 as select"), sql, StatementType.SELECT); - checkSingleStatement(parse(sql = "select 1, 2 a, 3 as b, 1+1-2*3/4, *, c.* from c a"), sql, - StatementType.SELECT, "system", "c"); - checkSingleStatement(parse(sql = "select 1 as select"), sql, StatementType.SELECT); - checkSingleStatement(parse( - sql = " -- cc\nselect 1 as `a.b`, a, 1+1, b from \"a\".`b` inner join a on a.abb/* \n\r\n1*/\n=2 and a.abb = c.a and a=1 and (k is null and j not in(1,2))"), - sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "SELECT idx, s FROM test.mymetadata WHERE idx = ?"), sql, StatementType.SELECT, - "test", "mymetadata"); - checkSingleStatement(parse(sql = "WITH 2 AS two SELECT two * two"), sql, StatementType.SELECT); - checkSingleStatement(parse( - sql = "SELECT i, array(toUnixTimestamp(dt_server[1])), array(toUnixTimestamp(dt_berlin[1])), array(toUnixTimestamp(dt_lax[1])) FROM test.fun_with_timezones_array"), - sql, StatementType.SELECT, "test", "fun_with_timezones_array"); - checkSingleStatement(parse(sql = "SELECT SUM(x) FROM t WHERE y = ? GROUP BY ?"), sql, StatementType.SELECT, - "system", "t"); - - assertEquals(parse(sql = loadSql("issue-441_with-totals.sql")), - new ClickHouseSqlStatement[] { new ClickHouseSqlStatement(sql, StatementType.SELECT, null, null, - "unknown", null, null, null, new HashMap() { - { - put("TOTALS", 208); - } - }) }); - assertEquals(parse(sql = loadSql("issue-555_custom-format.sql")), - new ClickHouseSqlStatement[] { new ClickHouseSqlStatement(sql, StatementType.SELECT, null, null, "wrd", - "CSVWithNames", null, null, null) }); - assertEquals(parse(sql = loadSql("with-clause.sql")), new ClickHouseSqlStatement[] { - new ClickHouseSqlStatement(sql, StatementType.SELECT, null, null, "unknown", null, null, null, null) }); - } - - @Test - public void testSetStatement() { - String sql; - - checkSingleStatement(parse(sql = "SET profile = 'my-profile', mutations_sync=1"), sql, StatementType.SET); - checkSingleStatement(parse(sql = "SET DEFAULT ROLE role1, role2, role3 TO user"), sql, StatementType.SET); - } - - @Test - public void testShowStatement() { - String sql; - - checkSingleStatement(parse(sql = "SHOW DATABASES LIKE '%de%'"), sql, StatementType.SHOW, "system", "databases"); - checkSingleStatement(parse(sql = "show tables from db"), sql, StatementType.SHOW, "system", "tables"); - checkSingleStatement(parse(sql = "show dictionaries from db"), sql, StatementType.SHOW, "system", - "dictionaries"); - } - - @Test - public void testSystemStatement() { - String sql; - - checkSingleStatement(parse(sql = "SYSTEM DROP REPLICA 'replica_name' FROM ZKPATH '/path/to/table/in/zk'"), sql, - StatementType.SYSTEM); - checkSingleStatement(parse(sql = "SYSTEM RESTART REPLICA db.replicated_merge_tree_family_table_name"), sql, - StatementType.SYSTEM); - } - - @Test - public void testTruncateStatement() { - String sql; - - checkSingleStatement(parse(sql = "truncate table a.b"), sql, StatementType.TRUNCATE, "a", "b"); - } - - @Test - public void testUpdateStatement() { - String sql; - - checkSingleStatement(parse(sql = "update a set a='1'"), sql, StatementType.UPDATE); - checkSingleStatement(parse(sql = "update a.a set `a`=2 where upper(a)=upper(lower(b))"), sql, - StatementType.UPDATE); - } - - @Test - public void testUseStatement() throws ParseException { - String sql; - checkSingleStatement(parse(sql = "use system"), sql, StatementType.USE); - } - - @Test - public void testWatchStatement() throws ParseException { - String sql; - checkSingleStatement(parse(sql = "watch system.processes"), sql, StatementType.WATCH); - } - - @Test - public void testComments() throws ParseException { - String sql; - checkSingleStatement(parse(sql = "select\n--something\n//else\n1/*2*/ from a.b"), sql, StatementType.SELECT, - "a", "b"); - - checkSingleStatement(parse(sql = "select 1/*/**/*/ from a.b"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select 1/*/1/**/*2*/ from a.b"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "SELECT /*/**/*/ 1 from a.b"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "SELECT /*a/*b*/c*/ 1 from a.b"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "SELECT /*ab/*cd*/ef*/ 1 from a.b"), sql, StatementType.SELECT, "a", "b"); - } - - @Test - public void testMultipleStatements() throws ParseException { - assertEquals(parse("use ab;;;select 1; ;\t;\r;\n"), new ClickHouseSqlStatement[] { - new ClickHouseSqlStatement("use ab", StatementType.USE, null, "ab", null, null, null, null, null), - new ClickHouseSqlStatement("select 1", StatementType.SELECT) }); - assertEquals(parse("select * from \"a;1\".`b;c`;;;select 1 as `a ; a`; ;\t;\r;\n"), - new ClickHouseSqlStatement[] { - new ClickHouseSqlStatement("select * from \"a;1\".`b;c`", StatementType.SELECT, null, "a;1", - "b;c", null, null, null, null), - new ClickHouseSqlStatement("select 1 as `a ; a`", StatementType.SELECT) }); - } - - @Test - public void testAlias() throws ParseException { - String sql; - checkSingleStatement(parse(sql = "select 1 as c, 2 b"), sql, StatementType.SELECT); - checkSingleStatement(parse(sql = "select 1 from a.b c"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select 1 select from a.b c"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select 1 from (select 2) b"), sql, StatementType.SELECT, "system", "b"); - checkSingleStatement(parse(sql = "select 1 from (select 2) as from"), sql, StatementType.SELECT, "system", - "from"); - checkSingleStatement(parse(sql = "select 1 from a.b c1, b.a c2"), sql, StatementType.SELECT, "a", "b"); - } - - @Test - public void testExpression() throws ParseException { - String sql; - checkSingleStatement(parse(sql = "SELECT a._ from a.b"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "SELECT 2 BETWEEN 1 + 1 AND 3 - 1 from a.b"), sql, StatementType.SELECT, "a", - "b"); - checkSingleStatement(parse(sql = "SELECT CASE WHEN 1 THEN 2 WHEN 3 THEN 4 ELSE 5 END from a.b"), sql, - StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select (1,2) a1, a1.1, a1 .1, a1 . 1 from a.b"), sql, StatementType.SELECT, - "a", "b"); - checkSingleStatement(parse(sql = "select -.0, +.0, -a from a.b"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select 1 and `a`.\"b\" c1, c1 or (c2 and c3), c4 ? c5 : c6 from a.b"), sql, - StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select [[[1,2],[3,4],[5,6]]] a, a[1][1][2] from a.b"), sql, - StatementType.SELECT, "a", "b"); - checkSingleStatement( - parse(sql = "select [[[[]]]], a[1][2][3], ([[1]] || [[2]])[2][1] ,func(1,2) [1] [2] [ 3 ] from a.b"), - sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select c.c1, c.c2 c, c.c3 as cc, c.c4.1.2 from a.b"), sql, - StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select - (select (1,).1) from a.b"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select 1.1e1,(1) . 1 , ((1,2)).1 .2 . 3 from a.b"), sql, StatementType.SELECT, - "a", "b"); - checkSingleStatement(parse(sql = "select a.b.c1, c1, b.c1 from a.b"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select date'2020-02-04', timestamp '2020-02-04' from a.b"), sql, - StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select count (), sum(c1), fake(a1, count(), (1+1)) from a.b"), sql, - StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select {}, {'a':'b', 'c':'1'} from a.b"), sql, StatementType.SELECT, "a", - "b"); - checkSingleStatement(parse(sql = "select [], [1,2], [ [1,2], [3,4] ] from a.b"), sql, StatementType.SELECT, "a", - "b"); - checkSingleStatement(parse(sql = "select 1+1-1*1/1 from a.b"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select (1+(1-1)*1/1)-1 from a.b"), sql, StatementType.SELECT, "a", "b"); - checkSingleStatement(parse(sql = "select (1+(1+(-1))*1/1)-(select (1,).1) from a.b"), sql, StatementType.SELECT, - "a", "b"); - } - - @Test - public void testFormat() throws ParseException { - String sql = "select 1 as format, format csv"; - ClickHouseSqlStatement[] stmts = parse(sql); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), sql); - assertEquals(stmts[0].hasFormat(), false); - assertEquals(stmts[0].getFormat(), null); - - sql = "select 1 format csv"; - stmts = parse(sql); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), sql); - assertEquals(stmts[0].hasFormat(), true); - assertEquals(stmts[0].getFormat(), "csv"); - - sql = "select 1 a, a.a b, a.a.a c, e.* except(e1), e.e.* except(e2), 'aaa' format, format csv from numbers(2) FORMAT CSVWithNames"; - stmts = parse(sql); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), sql); - assertEquals(stmts[0].hasFormat(), true); - assertEquals(stmts[0].getFormat(), "CSVWithNames"); - } - - @Test - public void testOutfile() throws ParseException { - String sql = "select 1 into outfile '1.txt'"; - ClickHouseSqlStatement[] stmts = parse(sql); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), sql); - assertEquals(stmts[0].hasOutfile(), true); - assertEquals(stmts[0].getOutfile(), "'1.txt'"); - - sql = "insert into outfile values(1,2,3)"; - stmts = parse(sql); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), sql); - assertEquals(stmts[0].hasOutfile(), false); - assertEquals(stmts[0].getOutfile(), null); - } - - @Test - public void testWithTotals() throws ParseException { - String sql = "select 1 as with totals"; - ClickHouseSqlStatement[] stmts = parse(sql); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), sql); - assertEquals(stmts[0].hasWithTotals(), false); - - sql = "select 1 with totals"; - stmts = parse(sql); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), sql); - assertEquals(stmts[0].hasWithTotals(), true); - } - - @Test - public void testParameterHandling() throws ParseException { - String sql = "insert into table d.t(a1, a2, a3) values(?,?,?)"; - ClickHouseSqlStatement[] stmts = parse(sql); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), sql); - - stmts = ClickHouseSqlParser.parse(sql, new ClickHouseProperties(), new ParseHandler() { - @Override - public String handleParameter(String cluster, String database, String table, int columnIndex) { - return String.valueOf(columnIndex); - } - }); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), "insert into table d.t(a1, a2, a3) values(1,2,3)"); - } - - @Test - public void testMacroHandling() throws ParseException { - String sql = "select #listOfColumns #ignored from (#subQuery('1','2','3'))"; - ClickHouseSqlStatement[] stmts = parse(sql); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), "select from ()"); - - stmts = ClickHouseSqlParser.parse(sql, new ClickHouseProperties(), new ParseHandler() { - @Override - public String handleMacro(String name, List parameters) { - if ("listOfColumns".equals(name)) { - return "a, b"; - } else if ("subQuery".equals(name)) { - return "select " + String.join("+", parameters); - } else { - return null; - } - } - }); - assertEquals(stmts.length, 1); - assertEquals(stmts[0].getSQL(), "select a, b from (select 1+2+3)"); - } - - @Test - public void testExtractDBAndTableName() { - String sql; - - checkSingleStatement(parse(sql = "SELECT 1 from table"), sql, StatementType.SELECT, "system", "table"); - checkSingleStatement(parse(sql = "SELECT 1 from table a"), sql, StatementType.SELECT, "system", "table"); - checkSingleStatement(parse(sql = "SELECT 1 from\ntable a"), sql, StatementType.SELECT, "system", "table"); - checkSingleStatement(parse(sql = "SELECT 1\nfrom\ntable a"), sql, StatementType.SELECT, "system", "table"); - checkSingleStatement(parse(sql = "SELECT 1\nFrom\ntable a"), sql, StatementType.SELECT, "system", "table"); - checkSingleStatement(parse(sql = "SELECT 1 from db.table a"), sql, StatementType.SELECT, "db", "table"); - checkSingleStatement(parse(sql = " SELECT 1 from \"db.table\" a"), sql, StatementType.SELECT, "system", - "db.table"); - checkSingleStatement(parse(sql = "SELECT 1 from `db.table` a"), sql, StatementType.SELECT, "system", - "db.table"); - checkSingleStatement(parse(sql = "from `db.table` a"), sql, StatementType.UNKNOWN, "system", "unknown"); - checkSingleStatement(parse(sql = " from `db.table` a"), sql, StatementType.UNKNOWN, "system", "unknown"); - checkSingleStatement(parse(sql = "ELECT from `db.table` a"), sql, StatementType.UNKNOWN, "system", "unknown"); - checkSingleStatement(parse(sql = "SHOW tables"), sql, StatementType.SHOW, "system", "tables"); - checkSingleStatement(parse(sql = "desc table1"), sql, StatementType.DESCRIBE, "system", "columns"); - checkSingleStatement(parse(sql = "DESC table1"), sql, StatementType.DESCRIBE, "system", "columns"); - checkSingleStatement(parse(sql = "SELECT 'from db.table a' from tab"), sql, StatementType.SELECT, "system", - "tab"); - checkSingleStatement(parse(sql = "SELECT"), sql, StatementType.UNKNOWN, "system", "unknown"); - checkSingleStatement(parse(sql = "S"), sql, StatementType.UNKNOWN, "system", "unknown"); - checkSingleStatement(parse(sql = ""), sql, StatementType.UNKNOWN, "system", "unknown"); - checkSingleStatement(parse(sql = " SELECT 1 from table from"), sql, StatementType.SELECT, "system", "table"); - checkSingleStatement(parse(sql = " SELECT 1 from table from"), sql, StatementType.SELECT, "system", "table"); - checkSingleStatement(parse(sql = "SELECT fromUnixTimestamp64Milli(time) as x from table"), sql, - StatementType.SELECT, "system", "table"); - checkSingleStatement(parse(sql = " SELECT fromUnixTimestamp64Milli(time)from table"), sql, StatementType.SELECT, - "system", "table"); - checkSingleStatement(parse(sql = "/*qq*/ SELECT fromUnixTimestamp64Milli(time)from table"), sql, - StatementType.SELECT, "system", "table"); - checkSingleStatement(parse(sql = " SELECTfromUnixTimestamp64Milli(time)from table"), sql, StatementType.UNKNOWN, - "system", "unknown"); - checkSingleStatement(parse(sql = " SELECT fromUnixTimestamp64Milli(time)from \".inner.a\""), sql, - StatementType.SELECT, "system", ".inner.a"); - checkSingleStatement(parse(sql = " SELECT fromUnixTimestamp64Milli(time)from db.`.inner.a`"), sql, - StatementType.SELECT, "db", ".inner.a"); - } - - static void parseAllSqlFiles(File f) throws IOException { - if (f.isDirectory()) { - File[] files = f.listFiles(); - for (File file : files) { - parseAllSqlFiles(file); - } - } else if (f.getName().endsWith(".sql")) { - StringBuilder sql = new StringBuilder(); - try (BufferedReader br = new BufferedReader( - new InputStreamReader(new FileInputStream(f), StandardCharsets.UTF_8))) { - String line; - while ((line = br.readLine()) != null) { - sql.append(line).append("\n"); - } - } catch (IOException e) { - throw new IllegalArgumentException(e); - } - - ClickHouseSqlParser p = new ClickHouseSqlParser(sql.toString(), null, null); - try { - p.sql(); - } catch (ParseException e) { - System.out.println(f.getAbsolutePath() + " -> " + e.getMessage()); - } catch (TokenMgrException e) { - System.out.println(f.getAbsolutePath() + " -> " + e.getMessage()); - } - } - } - - // TODO: add a sub-module points to ClickHouse/tests/queries? - public static void main(String[] args) throws Exception { - String chTestQueryDir = "D:/Sources/Github/ch/queries"; - if (args != null && args.length > 0) { - chTestQueryDir = args[0]; - } - chTestQueryDir = System.getProperty("chTestQueryDir", chTestQueryDir); - parseAllSqlFiles(new File(chTestQueryDir)); - } -}