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));
- }
-}