diff --git a/assembly-thin/pom.xml b/assembly-thin/pom.xml new file mode 100644 index 0000000000..83313186bd --- /dev/null +++ b/assembly-thin/pom.xml @@ -0,0 +1,261 @@ + + + 4.0.0 + + + com.databricks + databricks-jdbc-parent + 3.2.2-SNAPSHOT + + + databricks-jdbc-thin + jar + Databricks JDBC thin jar + + Databricks JDBC thin jar. + + https://github.com/databricks/databricks-jdbc + + + + Apache License, Version 2.0 + + https://github.com/databricks/databricks-jdbc/blob/main/LICENSE + + + + + + Databricks JDBC Team + eng-oss-sql-driver@databricks.com + Databricks + https://www.databricks.com + + + + scm:git:https://github.com/databricks/databricks-jdbc.git + + + scm:git:https://github.com/databricks/databricks-jdbc.git + + https://github.com/databricks/databricks-jdbc + + + GitHub Issues + https://github.com/databricks/databricks-jdbc/issues + + + + + com.databricks + databricks-jdbc-core + 3.2.2-SNAPSHOT + + + + + false + + + + + + org.codehaus.mojo + flatten-maven-plugin + 1.6.0 + + true + oss + + expand + remove + + + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.5.0 + + + shade and package jars + package + + shade + + + true + true + + true + + + true + + + false + + + true + + + + org.apache.arrow:* + + com.databricks:databricks-jdbc-core + + + + + + org.apache.arrow + + com.databricks.internal.apache.arrow + + + + + + *:* + + META-INF/*.DSA + META-INF/*.RSA + META-INF/*.SF + META-INF/DEPENDENCIES + META-INF/LICENSE.txt + META-INF/versions/** + + + + + + + com.databricks.client.jdbc.Driver + + + + ${project.artifactId} + + + ${project.version} + + + + + + + + + + + + + + release + + + + + org.sonatype.central + central-publishing-maven-plugin + + false + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + none + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + none + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-javadoc + package + + copy + + + + + com.databricks + databricks-jdbc-core + ${project.version} + javadoc + jar + ${project.artifactId}-${project.version}-javadoc.jar + + + ${project.build.directory} + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-javadoc + package + + attach-artifact + + + + + ${project.build.directory}/${project.artifactId}-${project.version}-javadoc.jar + jar + javadoc + + + + + + + + + + + + \ No newline at end of file diff --git a/assembly-thin/src/main/resources/README.md b/assembly-thin/src/main/resources/README.md new file mode 100644 index 0000000000..506fc8b4c7 --- /dev/null +++ b/assembly-thin/src/main/resources/README.md @@ -0,0 +1 @@ +Shading Arrow in the driver. \ No newline at end of file diff --git a/assembly-uber/pom.xml b/assembly-uber/pom.xml new file mode 100644 index 0000000000..689ad0d832 --- /dev/null +++ b/assembly-uber/pom.xml @@ -0,0 +1,357 @@ + + + 4.0.0 + + + com.databricks + databricks-jdbc-parent + 3.2.2-SNAPSHOT + + + databricks-jdbc + jar + Databricks JDBC uber jar + + Databricks JDBC uber jar. + + https://github.com/databricks/databricks-jdbc + + + + Apache License, Version 2.0 + + https://github.com/databricks/databricks-jdbc/blob/main/LICENSE + + + + + + Databricks JDBC Team + eng-oss-sql-driver@databricks.com + Databricks + https://www.databricks.com + + + + scm:git:https://github.com/databricks/databricks-jdbc.git + + + scm:git:https://github.com/databricks/databricks-jdbc.git + + https://github.com/databricks/databricks-jdbc + + + GitHub Issues + https://github.com/databricks/databricks-jdbc/issues + + + + + com.databricks + databricks-jdbc-core + 3.2.2-SNAPSHOT + + + + + false + + + + + + org.codehaus.mojo + flatten-maven-plugin + 1.6.0 + + true + oss + + expand + remove + + + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.5.0 + + + org.apache.logging.log4j + + log4j-transform-maven-shade-plugin-extensions + + 0.1.0 + + + + + shade and package jars + package + + shade + + + + false + + + + codegen + + com.databricks.internal.codegen + + + + com.databricks.sdk + com.databricks.internal.sdk + + + + com.fasterxml + + com.databricks.internal.fasterxml + + + + com.google + + com.databricks.internal.google + + + + com.nimbusds + + com.databricks.internal.nimbusds + + + + io + com.databricks.internal.io + + + + net.jpountz + + com.databricks.internal.jpountz + + + + org.apache + + com.databricks.internal.apache + + + + org.bouncycastle + + com.databricks.internal.bouncycastle + + + + org.checkerframework + + com.databricks.internal.checkerframework + + + + org.ini4j + + com.databricks.internal.ini4j + + + + org.json + + com.databricks.internal.json + + + + org.locationtech.jts + com.databricks.internal.jts + + + + org.osgi + + com.databricks.internal.osgi + + + + org.slf4j + + com.databricks.internal.slf4j + + + + + + *:* + + META-INF/*.DSA + META-INF/*.RSA + META-INF/*.SF + META-INF/DEPENDENCIES + META-INF/LICENSE.txt + META-INF/versions/** + + + + *:* + + edu/** + javax/** + jakarta/** + net/jcip/** + + + + + + + + com.databricks.client.jdbc.Driver + + + + ${project.artifactId} + + + ${project.version} + + + + + + + + + + + + + + + release + + + + + org.sonatype.central + central-publishing-maven-plugin + + false + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + none + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + none + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-sources-javadoc + package + + copy + + + + + com.databricks + databricks-jdbc-core + ${project.version} + sources + jar + ${project.artifactId}-${project.version}-sources.jar + + + com.databricks + databricks-jdbc-core + ${project.version} + javadoc + jar + ${project.artifactId}-${project.version}-javadoc.jar + + + ${project.build.directory} + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-sources-javadoc + package + + attach-artifact + + + + + ${project.build.directory}/${project.artifactId}-${project.version}-sources.jar + jar + sources + + + ${project.build.directory}/${project.artifactId}-${project.version}-javadoc.jar + jar + javadoc + + + + + + + + + + + + diff --git a/assembly-uber/src/main/resources/README.md b/assembly-uber/src/main/resources/README.md new file mode 100644 index 0000000000..f8e46b4805 --- /dev/null +++ b/assembly-uber/src/main/resources/README.md @@ -0,0 +1 @@ +Shaded version of the driver. \ No newline at end of file diff --git a/jdbc-core/pom.xml b/jdbc-core/pom.xml new file mode 100644 index 0000000000..53eb8551e0 --- /dev/null +++ b/jdbc-core/pom.xml @@ -0,0 +1,536 @@ + + + 4.0.0 + + + com.databricks + databricks-jdbc-parent + 3.2.2-SNAPSHOT + + + databricks-jdbc-core + jar + Databricks JDBC Driver + Databricks JDBC Driver. + https://github.com/databricks/databricks-jdbc + + + Apache License, Version 2.0 + https://github.com/databricks/databricks-jdbc/blob/main/LICENSE + + + + + Databricks JDBC Team + eng-oss-sql-driver@databricks.com + Databricks + https://www.databricks.com + + + + scm:git:https://github.com/databricks/databricks-jdbc.git + scm:git:https://github.com/databricks/databricks-jdbc.git + https://github.com/databricks/databricks-jdbc + + + GitHub Issues + https://github.com/databricks/databricks-jdbc/issues + + + + local-test-repo + file://${project.build.directory}/local-repo + + + + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + com.google.code.gson + gson + ${gson.version} + + + + + + com.databricks + databricks-sdk-java + ${databricks-sdk.version} + + + org.apache.commons + commons-configuration2 + ${commons-configuration.version} + + + org.apache.arrow + arrow-memory-core + ${arrow.version} + + + org.apache.arrow + arrow-memory-unsafe + ${arrow.version} + + + org.apache.arrow + arrow-vector + ${arrow.version} + + + org.apache.arrow + arrow-memory-netty + ${arrow.version} + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + org.apache.thrift + libthrift + ${thrift.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.apache.logging.log4j + log4j-slf4j2-impl + ${log4j.version} + test + + + org.apache.logging.log4j + log4j-core + ${log4j.version} + test + + + org.apache.logging.log4j + log4j-api + ${log4j.version} + test + + + commons-io + commons-io + ${commons-io.version} + + + com.google.code.findbugs + annotations + ${google.findbugs.annotations.version} + + + com.google.guava + guava + ${google.guava.version} + + + org.junit.jupiter + junit-jupiter + ${junit.jupiter.version} + test + + + com.nimbusds + nimbus-jose-jwt + ${nimbusjose.version} + + + org.bouncycastle + bcprov-jdk18on + ${bouncycastle.version} + + + org.bouncycastle + bcpkix-jdk18on + ${bouncycastle.version} + + + org.mockito + mockito-inline + ${mockito.version} + test + + + org.mockito + mockito-junit-jupiter + ${mockito.version} + test + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + org.immutables + value + ${immutables.value.version} + provided + + + net.hydromatic + sql-logic-test + ${sql-logic-test.version} + test + + + org.lz4 + lz4-java + ${lz4-compression.version} + + + + io.grpc + grpc-context + ${grpc.version} + + + + io.netty + netty-common + ${netty.version} + + + + io.netty + netty-buffer + ${netty.version} + + + jakarta.annotation + jakarta.annotation-api + ${annotation.version} + + + org.wiremock + wiremock + ${wiremock.version} + test + + + commons-fileupload + commons-fileupload + + + + + org.apache.httpcomponents.client5 + httpclient5 + ${async-httpclient.version} + + + org.apache.httpcomponents.core5 + httpcore5 + ${async-httpclient.version} + + + io.github.resilience4j + resilience4j-circuitbreaker + ${resilience4j.version} + + + io.github.resilience4j + resilience4j-core + ${resilience4j.version} + + + org.locationtech.jts + jts-core + 1.20.0 + + + + org.openjdk.jmh + jmh-core + ${jmh.version} + test + + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh.version} + test + + + + + + ${project.artifactId}-${project.version} + + + org.apache.maven.plugins + maven-jar-plugin + + + + com.databricks.client.jdbc.Driver + true + + + + + + attach-test-jar + + test-jar + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/DatabricksDriverExamples.java + **/integration/**/*.java + **/ErrorTypes.java + **/ErrorCodes.java + **/ProxyTest.java + **/LoggingTest.java + **/SSLTest.java + + **/ArrowBufferAllocatorNettyManagerTest.java + **/ArrowBufferAllocatorUnsafeManagerTest.java + **/ArrowBufferAllocatorUnknownManagerTest.java + + + @{argLine} + -Xmx5g + --add-opens=java.base/java.nio=ALL-UNNAMED + -Dnet.bytebuddy.experimental=true + + + JDKLOGGER + ${project.basedir}/src/test/resources/logging.properties + + + + + org.codehaus.mojo + exec-maven-plugin + + java + + --add-opens=java.base/java.nio=ALL-UNNAMED + -classpath + + com.databricks.jdbc.sqllogictest.SLTMain + -e + ${slt.executor} + -p + ${slt.token} + + test + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + org.immutables + value + ${immutables.value.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh.version} + + + + + + org.owasp + dependency-check-maven + + + HTML + JSON + + + 7 + ${nvd.api.key} + 10 + 4000 + true + ${ossindex.username} + ${ossindex.password} + + + + + check + + + + + + org.jacoco + jacoco-maven-plugin + + + + prepare-agent + + + + report + prepare-package + + report + + + + + + **/*Constants* + **/*Exception* + **/CommandName* + **/DatabricksJdbcConstants* + **/DatabricksJdbcUrlParams* + **/Driver* + **/EnvironmentVariables* + **/model/** + **/thrift/generated/** + + + + + + + + + low-memory + + + + org.apache.maven.plugins + maven-surefire-plugin + + + @{argLine} -Xmx100m -Darrow.memory.debug.allocator=true + + + + + + + + + + jdk17-NioNotOpen + + + + org.apache.maven.plugins + maven-toolchains-plugin + + + + toolchain + + + + + + + 17 + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + @{argLine} -Darrow.memory.debug.allocator=true + + + + + + + + + + jdk21-NioNotOpen + + + + org.apache.maven.plugins + maven-toolchains-plugin + + + + toolchain + + + + + + + 21 + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + @{argLine} -Darrow.memory.debug.allocator=true + + + + + + + + + + diff --git a/jdbc-core/src b/jdbc-core/src new file mode 120000 index 0000000000..5cd551cf26 --- /dev/null +++ b/jdbc-core/src @@ -0,0 +1 @@ +../src \ No newline at end of file diff --git a/pom.xml b/pom.xml index 26ea002cce..c542af6749 100644 --- a/pom.xml +++ b/pom.xml @@ -3,13 +3,22 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.databricks - databricks-jdbc + databricks-jdbc-parent - 3.2.1 - jar - Databricks JDBC Driver - Databricks JDBC Driver. + 3.2.2-SNAPSHOT + pom + Databricks JDBC Parent + Parent POM for Databricks JDBC Driver. https://github.com/databricks/databricks-jdbc + + + jdbc-core + assembly-thin + assembly-uber + test-assembly-thin + test-assembly-uber + + Apache License, Version 2.0 @@ -33,425 +42,118 @@ GitHub Issues https://github.com/databricks/databricks-jdbc/issues - - - local-test-repo - file://${project.build.directory}/local-repo - - + + UTF-8 UTF-8 - 18.3.0 - 3.18.0 11 11 - 5.2.0 - 2.18.3 - 2.25.3 - 2.0.13 - 33.0.0-jre - 5.9.2 - 3.0.1 - 2.13.2 - 2.9.2 - 4.5.14 + true + + + 3.2.0 + 3.14.1 + 3.1.2 + 3.3.0 + 1.2.1 + 12.1.6 + 0.8.11 + 2.39.0 + 3.6.1 + + + 3.2.2-SNAPSHOT + 18.3.0 + 3.18.0 2.10.1 2.14.0 0.69.0 - 3.1.2 - 0.3 - 1.10.1 + 4.5.14 + 5.3.1 0.19.0 + 2.0.13 + 2.25.3 + 2.18.3 + 2.13.2 + 33.0.0-jre + 3.0.1 + 2.9.2 + 1.8.1 1.3.5 - dbsql - dummy-token - 3.5.4 - 10.0.2 - 1.79 - 5.3.1 4.2.6.Final 1.71.0 1.7.0 - 3.2.0 + 10.0.2 + 1.79 1.37 + + + 5.9.2 + 5.2.0 + 3.5.4 + 0.3 + + + dbsql + dummy-token - - - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - - - - com.google.code.gson - gson - ${gson.version} - - - - - - com.databricks - databricks-sdk-java - ${databricks-sdk.version} - - - org.apache.commons - commons-configuration2 - ${commons-configuration.version} - - - org.apache.arrow - arrow-memory-core - ${arrow.version} - - - org.apache.arrow - arrow-memory-unsafe - ${arrow.version} - - - org.apache.arrow - arrow-vector - ${arrow.version} - - - org.apache.arrow - arrow-memory-netty - ${arrow.version} - - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - org.apache.thrift - libthrift - ${thrift.version} - - - org.slf4j - slf4j-api - ${slf4j.version} - - - org.apache.logging.log4j - log4j-slf4j2-impl - ${log4j.version} - test - - - org.apache.logging.log4j - log4j-core - ${log4j.version} - test - - - org.apache.logging.log4j - log4j-api - ${log4j.version} - test - - - commons-io - commons-io - ${commons-io.version} - - - com.google.code.findbugs - annotations - ${google.findbugs.annotations.version} - - - com.google.guava - guava - ${google.guava.version} - - - org.junit.jupiter - junit-jupiter - ${junit.jupiter.version} - test - - - com.nimbusds - nimbus-jose-jwt - ${nimbusjose.version} - - - org.bouncycastle - bcprov-jdk18on - ${bouncycastle.version} - - - org.bouncycastle - bcpkix-jdk18on - ${bouncycastle.version} - - - org.mockito - mockito-inline - ${mockito.version} - test - - - org.mockito - mockito-junit-jupiter - ${mockito.version} - test - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-annotations - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-core - ${jackson.version} - - - org.immutables - value - ${immutables.value.version} - provided - - - net.hydromatic - sql-logic-test - ${sql-logic-test.version} - test - - - at.yawk.lz4 - lz4-java - ${lz4-compression.version} - - - - io.grpc - grpc-context - ${grpc.version} - - - - io.netty - netty-common - ${netty.version} - - - - io.netty - netty-buffer - ${netty.version} - - - jakarta.annotation - jakarta.annotation-api - ${annotation.version} - - - org.wiremock - wiremock - ${wiremock.version} - test - - - commons-fileupload - commons-fileupload - - - - - org.apache.httpcomponents.client5 - httpclient5 - ${async-httpclient.version} - - - org.apache.httpcomponents.core5 - httpcore5 - ${async-httpclient.version} - - - io.github.resilience4j - resilience4j-circuitbreaker - ${resilience4j.version} - - - io.github.resilience4j - resilience4j-core - ${resilience4j.version} - - - org.locationtech.jts - jts-core - 1.20.0 - - - - org.openjdk.jmh - jmh-core - ${jmh.version} - test - - - - org.openjdk.jmh - jmh-generator-annprocess - ${jmh.version} - test - - - - ${project.artifactId}-${project.version} + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven-jar-plugin.version} + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + + org.owasp + dependency-check-maven + ${dependency-check-maven.version} + + + org.jacoco + jacoco-maven-plugin + ${jacoco-maven-plugin.version} + + + com.diffplug.spotless + spotless-maven-plugin + ${spotless-maven-plugin.version} + + + org.apache.maven.plugins + maven-toolchains-plugin + ${maven-toolchains-plugin.version} + + + org.codehaus.mojo + build-helper-maven-plugin + ${build-helper-maven-plugin.version} + + + + - - org.apache.maven.plugins - maven-jar-plugin - 3.3.0 - - - - com.databricks.client.jdbc.Driver - true - - - - - - attach-thin-jar - package - - jar - - - thin - - - - attach-test-jar - - test-jar - - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - **/DatabricksDriverExamples.java - **/integration/**/*.java - **/ErrorTypes.java - **/ErrorCodes.java - **/ProxyTest.java - **/LoggingTest.java - **/SSLTest.java - - **/ArrowBufferAllocatorNettyManagerTest.java - **/ArrowBufferAllocatorUnsafeManagerTest.java - **/ArrowBufferAllocatorUnknownManagerTest.java - - - @{argLine} - --add-opens=java.base/java.nio=ALL-UNNAMED - -Dnet.bytebuddy.experimental=true - - - JDKLOGGER - ${project.basedir}/src/test/resources/logging.properties - - - - - org.codehaus.mojo - exec-maven-plugin - 1.2.1 - - java - - --add-opens=java.base/java.nio=ALL-UNNAMED - -classpath - - com.databricks.jdbc.sqllogictest.SLTMain - -e - ${slt.executor} - -p - ${slt.token} - - test - - - - org.apache.maven.plugins - maven-compiler-plugin - - - - org.immutables - value - ${immutables.value.version} - - - org.openjdk.jmh - jmh-generator-annprocess - ${jmh.version} - - - - - - org.owasp - dependency-check-maven - 12.1.6 - - - HTML - JSON - - - 7 - ${nvd.api.key} - 10 - 4000 - true - ${ossindex.username} - ${ossindex.password} - - - - - check - - - - com.diffplug.spotless spotless-maven-plugin - 2.39.0 format @@ -466,163 +168,20 @@ 1.18.1 + + + + **/MemoryUtil.java + **/ArrowBuf.java + **/DecimalUtility.java + - - org.jacoco - jacoco-maven-plugin - 0.8.11 - - - - prepare-agent - - - - report - prepare-package - - report - - - - - - **/*Constants* - **/*Exception* - **/CommandName* - **/DatabricksJdbcConstants* - **/DatabricksJdbcUrlParams* - **/Driver* - **/EnvironmentVariables* - **/model/** - **/thrift/generated/** - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.5.0 - - - org.apache.logging.log4j - log4j-transform-maven-shade-plugin-extensions - 0.1.0 - - - - - shade and package jars - package - - shade - - - - false - - - codegen - com.databricks.internal.codegen - - - com.databricks.sdk - com.databricks.internal.sdk - - - com.fasterxml - com.databricks.internal.fasterxml - - - com.google - com.databricks.internal.google - - - com.nimbusds - com.databricks.internal.nimbusds - - - io - com.databricks.internal.io - - - net.jpountz - com.databricks.internal.jpountz - - - org.apache - com.databricks.internal.apache - - - org.bouncycastle - com.databricks.internal.bouncycastle - - - org.checkerframework - com.databricks.internal.checkerframework - - - org.ini4j - com.databricks.internal.ini4j - - - org.json - com.databricks.internal.json - - - org.locationtech.jts - com.databricks.internal.jts - - - org.osgi - com.databricks.internal.osgi - - - org.slf4j - com.databricks.internal.slf4j - - - - - *:* - - META-INF/*.DSA - META-INF/*.RSA - META-INF/*.SF - META-INF/DEPENDENCIES - META-INF/LICENSE.txt - META-INF/versions/** - - - - *:* - - edu/** - javax/** - jakarta/** - net/jcip/** - - - - - - - com.databricks.client.jdbc.Driver - - ${project.artifactId} - ${project.version} - - - - - - - - + @@ -673,28 +232,6 @@ release - - org.codehaus.mojo - build-helper-maven-plugin - 3.6.1 - - - attach-uber-minimal-pom - - attach-artifact - - package - - - - ${project.basedir}/uber-minimal-pom.xml - pom - - - - - - org.apache.maven.plugins maven-source-plugin @@ -755,197 +292,12 @@ central true published - - - - - - - - jdk11 - - - - org.apache.maven.plugins - maven-toolchains-plugin - ${maven-toolchains-plugin.version} - - - - toolchain - - - - - - - 11 - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - @{argLine} - - - - - - - - jdk17 - - - - org.apache.maven.plugins - maven-toolchains-plugin - ${maven-toolchains-plugin.version} - - - - toolchain - - - - - - - 17 - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - @{argLine} -Darrow.memory.debug.allocator=true - - - - - - - - jdk17-nio-open - - - - org.apache.maven.plugins - maven-toolchains-plugin - ${maven-toolchains-plugin.version} - - - - toolchain - - - - - - - 17 - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - - @{argLine} --add-opens=java.base/java.nio=ALL-UNNAMED - -Darrow.memory.debug.allocator=true - - - - - - - - - jdk21 - - - - org.apache.maven.plugins - maven-toolchains-plugin - ${maven-toolchains-plugin.version} - - - - toolchain - - - - - - - 21 - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - @{argLine} -Darrow.memory.debug.allocator=true - - - - - - - - jdk21-nio-open - - - - org.apache.maven.plugins - maven-toolchains-plugin - ${maven-toolchains-plugin.version} - - - - toolchain - - - - - - - 21 - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - - @{argLine} --add-opens=java.base/java.nio=ALL-UNNAMED - -Darrow.memory.debug.allocator=true - + + true - - + \ No newline at end of file diff --git a/test-assembly-thin/pom.xml b/test-assembly-thin/pom.xml new file mode 100644 index 0000000000..66bf788b1d --- /dev/null +++ b/test-assembly-thin/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + + com.databricks + databricks-jdbc-parent + 3.2.2-SNAPSHOT + + + test-databricks-jdbc-thin + jar + Test thin + Test JDBC databricks driver thin jar. + + + + com.databricks + databricks-jdbc-thin + 3.2.2-SNAPSHOT + + + org.junit.jupiter + junit-jupiter + ${junit.jupiter.version} + test + + + \ No newline at end of file diff --git a/test-assembly-thin/src/test/java/com/databricks/jdbc/TestThinPackaging.java b/test-assembly-thin/src/test/java/com/databricks/jdbc/TestThinPackaging.java new file mode 100644 index 0000000000..b74a5bd792 --- /dev/null +++ b/test-assembly-thin/src/test/java/com/databricks/jdbc/TestThinPackaging.java @@ -0,0 +1,198 @@ +package com.databricks.jdbc; + +import com.databricks.jdbc.api.impl.arrow.ArrowBufferAllocator; +import com.databricks.jdbc.common.DatabricksJdbcUrlParams; +import com.databricks.sdk.core.DatabricksConfig; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.collect.ImmutableList; +import com.google.flatbuffers.FlatBufferBuilder; +import com.google.gson.Gson; +import com.google.protobuf.ByteString; +import com.nimbusds.jose.JWSAlgorithm; +import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig; +import io.grpc.Context; +import io.netty.buffer.ByteBufAllocator; +import io.vavr.collection.List; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.Properties; +import java.util.logging.Logger; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; +import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.core5.http.HttpStatus; +import org.apache.thrift.TException; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.json.JSONObject; +import org.junit.jupiter.api.Test; +import org.locationtech.jts.geom.GeometryFactory; + +/** Test artifacts are packaged properly. */ +public class TestThinPackaging { + /** Logger instance. */ + private static final Logger logger = Logger.getLogger(TestThinPackaging.class.getName()); + + /** Test packages are shaded as expected. */ + @Test + public void testThinPackaging() { + // Test that Arrow packages is relocated. + com.databricks.internal.apache.arrow.memory.BufferAllocator bufferAllocator = + ArrowBufferAllocator.getBufferAllocator(); + logger.info("Shaded buffer allocator " + bufferAllocator); + + // Test that jackson packages are not relocated. + ObjectMapper jacksonMapper = new ObjectMapper(); + logger.info("Jackson ObjectMapper: " + jacksonMapper); + + // Test that guava is not relocated. + ImmutableList guavaList = ImmutableList.of("test"); + logger.info("Guava ImmutableList: " + guavaList); + + // Test that protobuf is not relocated. + ByteString protoByteString = ByteString.copyFromUtf8("test"); + logger.info("Protobuf ByteString: " + protoByteString); + + // Test that commons-lang3 is not relocated. + String commonsResult = StringUtils.upperCase("test"); + logger.info("Commons-Lang3 result: " + commonsResult); + + // Test that commons-codec is not relocated. + byte[] commonsCodec = Base64.encodeBase64("test".getBytes()); + logger.info("Commons-Codec Base64: " + new String(commonsCodec)); + + // Test that commons-io is not relocated. + try { + String commonsIo = IOUtils.toString(new ByteArrayInputStream("test".getBytes()), "UTF-8"); + logger.info("Commons-IO result: " + commonsIo); + } catch (IOException e) { + throw new RuntimeException("Failed to test Commons-IO", e); + } + + // Test that httpclient5 is not relocated. + HttpClientBuilder httpClientBuilder = HttpClients.custom(); + logger.info("HttpClient5 builder: " + httpClientBuilder); + + // Test that httpcore5 is not relocated. + int httpStatus = HttpStatus.SC_OK; + logger.info("HttpCore5 status: " + httpStatus); + + // Test that thrift is not relocated. + TException thriftException = new TException("test"); + logger.info("Thrift TException: " + thriftException.getMessage()); + + // Test that gson is not relocated. + Gson gson = new Gson(); + logger.info("Gson: " + gson); + + // Test that flatbuffers is not relocated. + FlatBufferBuilder flatBuilder = new FlatBufferBuilder(); + logger.info("FlatBuffers: " + flatBuilder); + + // Test that netty is not relocated. + ByteBufAllocator nettyAllocator = ByteBufAllocator.DEFAULT; + logger.info("Netty ByteBufAllocator: " + nettyAllocator); + + // Test that grpc is not relocated. + Context grpcContext = Context.current(); + logger.info("gRPC Context: " + grpcContext); + + // Test that bouncycastle is not relocated. + BouncyCastleProvider bcProvider = new BouncyCastleProvider(); + logger.info("BouncyCastle Provider: " + bcProvider.getName()); + + // Test that resilience4j is not relocated. + CircuitBreakerConfig cbConfig = CircuitBreakerConfig.ofDefaults(); + logger.info("Resilience4j CircuitBreakerConfig: " + cbConfig); + + // Test that vavr is not relocated. + List vavrList = List.of("test"); + logger.info("Vavr List: " + vavrList); + + // Test that JTS is not relocated. + GeometryFactory jtsFactory = new GeometryFactory(); + logger.info("JTS GeometryFactory: " + jtsFactory); + + // Test that Databricks SDK is not relocated. + Class sdkClass = DatabricksConfig.class; + logger.info("Databricks SDK class: " + sdkClass.getName()); + + // Test that JSON is not relocated. + JSONObject jsonObject = new JSONObject().put("key", "value"); + logger.info("JSON object: " + jsonObject); + + // Test that Nimbus JOSE JWT is not relocated. + JWSAlgorithm jwsAlgorithm = JWSAlgorithm.HS256; + logger.info("Nimbus JWSAlgorithm: " + jwsAlgorithm); + } + + /** Test large query execution with Arrow result format works. */ + @Test + public void executeLargeQuery() throws SQLException { + Map params = new HashMap<>(); + params.put(DatabricksJdbcUrlParams.ENABLE_ARROW.getParamName(), "1"); + params.put(DatabricksJdbcUrlParams.USE_THRIFT_CLIENT.getParamName(), "0"); + + try (Connection connection = connect(params)) { + try (Statement statement = connection.createStatement()) { + final String sql = "SELECT * FROM samples.tpch.lineitem where 1 = 0"; + ResultSet result = statement.executeQuery(sql); + int totalRows = 0; + while (result.next()) { + if (totalRows % 100_000 == 0) { + logger.info("Processed " + totalRows + " rows"); + } + totalRows++; + } + + logger.info("Total " + totalRows + " rows processed"); + } + } + } + + private Connection connect(Map urlParams) throws SQLException { + Properties props = new Properties(); + props.setProperty("user", getDatabricksUser()); + props.setProperty("password", getDatabricksToken()); + for (Map.Entry entry : urlParams.entrySet()) { + props.setProperty(entry.getKey(), entry.getValue().toString()); + } + + String url = getDogfoodJDBCUrl(); + + return new com.databricks.client.jdbc.Driver().connect(url, props); + } + + private String getDogfoodJDBCUrl() { + String template = + "jdbc:databricks://%s/default;transportMode=http;ssl=1;AuthMech=3;httpPath=%s"; + String host = getDatabricksHost(); + String httpPath = getDatabricksHttpPath(); + + return String.format(template, host, httpPath); + } + + private String getDatabricksHttpPath() { + return System.getenv("DATABRICKS_HTTP_PATH"); + } + + private String getDatabricksHost() { + return System.getenv("DATABRICKS_HOST"); + } + + private String getDatabricksUser() { + return Optional.ofNullable(System.getenv("DATABRICKS_USER")).orElse("token"); + } + + private String getDatabricksToken() { + return System.getenv("DATABRICKS_TOKEN"); + } +} diff --git a/test-assembly-uber/pom.xml b/test-assembly-uber/pom.xml new file mode 100644 index 0000000000..0d140c8416 --- /dev/null +++ b/test-assembly-uber/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + + com.databricks + databricks-jdbc-parent + 3.2.2-SNAPSHOT + + + test-databricks-jdbc-uber + jar + Test Uber + Test JDBC databricks driver uber jar. + + + + com.databricks + databricks-jdbc + 3.2.2-SNAPSHOT + + + org.junit.jupiter + junit-jupiter + ${junit.jupiter.version} + test + + + \ No newline at end of file diff --git a/test-assembly-uber/src/test/java/com/databricks/jdbc/TestUberPackaging.java b/test-assembly-uber/src/test/java/com/databricks/jdbc/TestUberPackaging.java new file mode 100644 index 0000000000..b8254cec38 --- /dev/null +++ b/test-assembly-uber/src/test/java/com/databricks/jdbc/TestUberPackaging.java @@ -0,0 +1,204 @@ +package com.databricks.jdbc; + +import com.databricks.internal.apache.commons.codec.binary.Base64; +import com.databricks.internal.apache.commons.io.IOUtils; +import com.databricks.internal.apache.commons.lang3.StringUtils; +import com.databricks.internal.apache.hc.client5.http.impl.classic.HttpClientBuilder; +import com.databricks.internal.apache.hc.client5.http.impl.classic.HttpClients; +import com.databricks.internal.apache.hc.core5.http.HttpStatus; +import com.databricks.internal.apache.thrift.TException; +import com.databricks.internal.bouncycastle.jce.provider.BouncyCastleProvider; +import com.databricks.internal.fasterxml.jackson.databind.ObjectMapper; +import com.databricks.internal.google.common.collect.ImmutableList; +import com.databricks.internal.google.flatbuffers.FlatBufferBuilder; +import com.databricks.internal.google.gson.Gson; +import com.databricks.internal.google.protobuf.ByteString; +import com.databricks.internal.io.github.resilience4j.circuitbreaker.CircuitBreakerConfig; +import com.databricks.internal.io.grpc.Context; +import com.databricks.internal.io.netty.buffer.ByteBufAllocator; +import com.databricks.internal.io.vavr.collection.List; +import com.databricks.internal.json.JSONObject; +import com.databricks.internal.jts.geom.GeometryFactory; +import com.databricks.internal.nimbusds.jose.JWSAlgorithm; +import com.databricks.internal.sdk.core.DatabricksConfig; +import com.databricks.jdbc.api.impl.arrow.ArrowBufferAllocator; +import com.databricks.jdbc.common.DatabricksJdbcUrlParams; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.Properties; +import java.util.logging.Logger; +import org.junit.jupiter.api.Test; + +/** Test artifacts are packaged properly. */ +public class TestUberPackaging { + /** Logger instance. */ + private static final java.util.logging.Logger logger = + Logger.getLogger(TestUberPackaging.class.getName()); + + /** Test packages are shaded as expected. */ + @Test + public void testThinPackaging() { + // Test that the "arrow" package is relocated. + com.databricks.internal.apache.arrow.memory.BufferAllocator bufferAllocator = + ArrowBufferAllocator.getBufferAllocator(); + logger.info("Shaded buffer allocator " + bufferAllocator); + + // Test that jackson packages are relocated. + ObjectMapper jacksonMapper = new ObjectMapper(); + logger.info("Shaded Jackson ObjectMapper: " + jacksonMapper); + + // Test that guava is relocated. + ImmutableList guavaList = ImmutableList.of("test"); + logger.info("Shaded Guava ImmutableList: " + guavaList); + + // Test that protobuf is relocated. + ByteString protoByteString = ByteString.copyFromUtf8("test"); + logger.info("Shaded Protobuf ByteString: " + protoByteString); + + // Test that commons-lang3 is relocated. + String commonsResult = StringUtils.upperCase("test"); + logger.info("Shaded Commons-Lang3 result: " + commonsResult); + + // Test that commons-codec is relocated (org.apache.commons.codec -> + // com.databricks.internal.apache.commons.codec). + byte[] commonsCodec = Base64.encodeBase64("test".getBytes()); + logger.info("Shaded Commons-Codec Base64: " + new String(commonsCodec)); + + // Test that commons-io is relocated. + try { + String commonsIo = IOUtils.toString(new ByteArrayInputStream("test".getBytes()), "UTF-8"); + logger.info("Shaded Commons-IO result: " + commonsIo); + } catch (IOException e) { + throw new RuntimeException("Failed to test Commons-IO shading", e); + } + + // Test that httpclient5 is relocated (org.apache.hc.client5 -> + // com.databricks.internal.apache.hc.client5). + HttpClientBuilder httpClientBuilder = HttpClients.custom(); + logger.info("Shaded HttpClient5 builder: " + httpClientBuilder); + + // Test that httpcore5 is relocated (org.apache.hc.core5 -> + // com.databricks.internal.apache.hc.core5). + int httpStatus = HttpStatus.SC_OK; + logger.info("Shaded HttpCore5 status: " + httpStatus); + + // Test that thrift is relocated. + TException thriftException = new TException("test"); + logger.info("Shaded Thrift TException: " + thriftException.getMessage()); + + // Test that gson is relocated. + Gson gson = new Gson(); + logger.info("Shaded Gson: " + gson); + + // Test that flatbuffers is relocated. + FlatBufferBuilder flatBuilder = new FlatBufferBuilder(); + logger.info("Shaded FlatBuffers: " + flatBuilder); + + // Test that netty is relocated (io.netty -> com.databricks.internal.io.netty). + ByteBufAllocator nettyAllocator = ByteBufAllocator.DEFAULT; + logger.info("Shaded Netty ByteBufAllocator: " + nettyAllocator); + + // Test that grpc is relocated (io.grpc -> com.databricks.internal.io.grpc). + Context grpcContext = Context.current(); + logger.info("Shaded gRPC Context: " + grpcContext); + + // Test that bouncycastle is relocated (org.bouncycastle -> + // com.databricks.internal.bouncycastle). + BouncyCastleProvider bcProvider = new BouncyCastleProvider(); + logger.info("Shaded BouncyCastle Provider: " + bcProvider.getName()); + + // Test that resilience4j is relocated (io.github.resilience4j -> + // com.databricks.internal.io.github.resilience4j). + CircuitBreakerConfig cbConfig = CircuitBreakerConfig.ofDefaults(); + logger.info("Shaded Resilience4j CircuitBreakerConfig: " + cbConfig); + + // Test that vavr is relocated (io.vavr -> com.databricks.internal.io.vavr). + List vavrList = List.of("test"); + logger.info("Shaded Vavr List: " + vavrList); + + // Test that JTS is relocated (org.locationtech.jts -> com.databricks.internal.jts). + GeometryFactory jtsFactory = new GeometryFactory(); + logger.info("Shaded JTS GeometryFactory: " + jtsFactory); + + // Test that Databricks SDK is relocated (com.databricks.sdk -> com.databricks.internal.sdk). + Class sdkClass = DatabricksConfig.class; + logger.info("Shaded Databricks SDK class: " + sdkClass.getName()); + + // Test that JSON is relocated (org.json -> com.databricks.internal.json). + JSONObject jsonObject = new JSONObject().put("key", "value"); + logger.info("Shaded JSON object: " + jsonObject); + + // Test that Nimbus JOSE JWT is relocated (com.nimbusds -> com.databricks.internal.nimbusds). + JWSAlgorithm jwsAlgorithm = JWSAlgorithm.HS256; + logger.info("Shaded Nimbus JWSAlgorithm: " + jwsAlgorithm); + } + + /** Test large query execution with Arrow result format works. */ + @Test + public void executeLargeQuery() throws SQLException { + Map params = new HashMap<>(); + params.put(DatabricksJdbcUrlParams.ENABLE_ARROW.getParamName(), "1"); + params.put(DatabricksJdbcUrlParams.USE_THRIFT_CLIENT.getParamName(), "0"); + + try (Connection connection = connect(params)) { + try (Statement statement = connection.createStatement()) { + final String sql = "SELECT * FROM samples.tpch.lineitem where 1 = 0"; + ResultSet result = statement.executeQuery(sql); + int totalRows = 0; + while (result.next()) { + if (totalRows % 100_000 == 0) { + logger.info("Processed " + totalRows + " rows"); + } + totalRows++; + } + + logger.info("Total " + totalRows + " rows processed"); + } + } + } + + private Connection connect(Map urlParams) throws SQLException { + Properties props = new Properties(); + props.setProperty("user", getDatabricksUser()); + props.setProperty("password", getDatabricksToken()); + for (Map.Entry entry : urlParams.entrySet()) { + props.setProperty(entry.getKey(), entry.getValue().toString()); + } + + String url = getDogfoodJDBCUrl(); + + return new com.databricks.client.jdbc.Driver().connect(url, props); + } + + private String getDogfoodJDBCUrl() { + String template = + "jdbc:databricks://%s/default;transportMode=http;ssl=1;AuthMech=3;httpPath=%s"; + String host = getDatabricksHost(); + String httpPath = getDatabricksHttpPath(); + + return String.format(template, host, httpPath); + } + + private String getDatabricksHttpPath() { + return System.getenv("DATABRICKS_HTTP_PATH"); + } + + private String getDatabricksHost() { + return System.getenv("DATABRICKS_HOST"); + } + + private String getDatabricksUser() { + return Optional.ofNullable(System.getenv("DATABRICKS_USER")).orElse("token"); + } + + private String getDatabricksToken() { + return System.getenv("DATABRICKS_TOKEN"); + } +} diff --git a/thin_public_pom.xml b/thin_public_pom.xml deleted file mode 100644 index 5b2afec7f2..0000000000 --- a/thin_public_pom.xml +++ /dev/null @@ -1,214 +0,0 @@ - - - 4.0.0 - com.databricks - databricks-jdbc-thin - 3.1.2 - jar - Databricks JDBC Driver Thin - Databricks JDBC Driver Thin JAR - requires external dependencies. - https://github.com/databricks/databricks-jdbc - - - - Apache License, Version 2.0 - https://github.com/databricks/databricks-jdbc/blob/main/LICENSE - - - - - - Databricks JDBC Team - eng-oss-sql-driver@databricks.com - Databricks - https://www.databricks.com - - - - - scm:git:https://github.com/databricks/databricks-jdbc.git - scm:git:https://github.com/databricks/databricks-jdbc.git - https://github.com/databricks/databricks-jdbc - - - - GitHub Issues - https://github.com/databricks/databricks-jdbc/issues - - - - - - com.databricks - databricks-sdk-java - 0.69.0 - - - - - org.apache.commons - commons-lang3 - 3.18.0 - - - org.apache.commons - commons-configuration2 - 2.10.1 - - - commons-io - commons-io - 2.14.0 - - - - - org.apache.arrow - arrow-memory-core - 17.0.0 - - - org.apache.arrow - arrow-memory-unsafe - 17.0.0 - - - org.apache.arrow - arrow-vector - 17.0.0 - - - org.apache.arrow - arrow-memory-netty - 17.0.0 - - - - - org.apache.httpcomponents - httpclient - 4.5.14 - - - org.apache.httpcomponents.client5 - httpclient5 - 5.3.1 - - - org.apache.httpcomponents.core5 - httpcore5 - 5.3.1 - - - - - org.apache.thrift - libthrift - 0.19.0 - - - - - org.slf4j - slf4j-api - 2.0.13 - - - - - com.google.code.findbugs - annotations - 3.0.1 - - - com.google.guava - guava - 33.0.0-jre - - - - - com.nimbusds - nimbus-jose-jwt - 10.0.2 - - - org.bouncycastle - bcprov-jdk18on - 1.79 - - - org.bouncycastle - bcpkix-jdk18on - 1.79 - - - - - com.fasterxml.jackson.core - jackson-databind - 2.18.3 - - - com.fasterxml.jackson.core - jackson-annotations - 2.18.3 - - - com.fasterxml.jackson.core - jackson-core - 2.18.3 - - - com.google.code.gson - gson - 2.13.2 - - - - - at.yawk.lz4 - lz4-java - 1.10.1 - - - - - io.grpc - grpc-context - 1.71.0 - - - - - io.netty - netty-common - 4.2.6.Final - - - io.netty - netty-buffer - 4.2.6.Final - - - - - jakarta.annotation - jakarta.annotation-api - 1.3.5 - - - - - io.github.resilience4j - resilience4j-circuitbreaker - 1.7.0 - - - io.github.resilience4j - resilience4j-core - 1.7.0 - - - \ No newline at end of file diff --git a/uber-minimal-pom.xml b/uber-minimal-pom.xml deleted file mode 100644 index b2bd5cbe90..0000000000 --- a/uber-minimal-pom.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - 4.0.0 - com.databricks - databricks-jdbc - - 3.2.1 - jar - Databricks JDBC Driver - Databricks JDBC Driver. - https://github.com/databricks/databricks-jdbc - - - Apache License, Version 2.0 - https://github.com/databricks/databricks-jdbc/blob/main/LICENSE - - - - - Databricks JDBC Team - eng-oss-sql-driver@databricks.com - Databricks - https://www.databricks.com - - - - scm:git:https://github.com/databricks/databricks-jdbc.git - scm:git:https://github.com/databricks/databricks-jdbc.git - https://github.com/databricks/databricks-jdbc - - - GitHub Issues - https://github.com/databricks/databricks-jdbc/issues - -