diff --git a/.github/workflows/ci-build-extension.yml b/.github/workflows/ci-build-extension.yml index f950a485..dd1232be 100644 --- a/.github/workflows/ci-build-extension.yml +++ b/.github/workflows/ci-build-extension.yml @@ -7,7 +7,7 @@ on: pull_request: jobs: - build: + build-extension: runs-on: ubuntu-22.04 concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/ci-build-next-java.yml b/.github/workflows/ci-build-next-java.yml index 9a97c472..b9c4278f 100644 --- a/.github/workflows/ci-build-next-java.yml +++ b/.github/workflows/ci-build-next-java.yml @@ -18,7 +18,7 @@ jobs: with: fetch-depth: 0 - name: Set up JDK 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: "temurin" java-version: 17 diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index e32c5b19..4bc1a6f9 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -1,5 +1,4 @@ name: CI Build - on: push: branches: @@ -7,16 +6,15 @@ on: pull_request: jobs: - build: - name: Build with Exasol ${{ matrix.exasol_db_version }} - runs-on: ubuntu-20.04 # UDFs fail with "VM error: Internal error: VM crashed" on ubuntu-latest + matrix-build: + runs-on: ubuntu-20.04 concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.exasol_db_version }} cancel-in-progress: true strategy: fail-fast: false matrix: - exasol_db_version: ["7.1.24", "8.23.1"] + exasol_db_version: ["8.23.1", "7.1.24"] env: DEFAULT_EXASOL_DB_VERSION: "8.23.1" steps: @@ -29,7 +27,7 @@ jobs: with: fetch-depth: 0 - name: Set up JDK 11 & 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: "temurin" java-version: | @@ -46,7 +44,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v4 with: - go-version: "1.20" + go-version: "1.21" cache: false - name: Cache Go modules @@ -62,11 +60,20 @@ jobs: - name: Enable testcontainer reuse run: echo 'testcontainers.reuse.enable=true' > "$HOME/.testcontainers.properties" - name: Run scalafix linting - run: mvn --batch-mode clean compile test-compile scalastyle:check scalafix:scalafix + if: ${{ matrix.exasol_db_version == env.DEFAULT_EXASOL_DB_VERSION }} + run: mvn --batch-mode clean compile test-compile scalastyle:check scalafix:scalafix spotless:check + - name: Build extension + run: | + mvn package -DskipTests + cd extension + npm ci + npm run build + npm run test + npm run lint - name: Run tests and build with Maven run: > JAVA_HOME=$JAVA_HOME_11_X64 - mvn --batch-mode clean verify + mvn --batch-mode verify -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -DtrimStackTrace=false -Dcom.exasol.dockerdb.image=${{ matrix.exasol_db_version }} @@ -75,7 +82,7 @@ jobs: # not forward it to the test. So we use this environment variable, # see BaseIntegrationTest.scala.getExasolDockerImageVersion() EXASOL_DB_VERSION: ${{ matrix.exasol_db_version }} - - name: Publish Test Report + - name: Publish Test Report for Exasol ${{ matrix.exasol_db_version }} uses: scacap/action-surefire-report@v1 if: ${{ always() && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' }} with: @@ -93,3 +100,9 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + build: + needs: matrix-build + runs-on: ubuntu-latest + steps: + - run: echo "Build successful" diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml deleted file mode 100644 index f0b3e748..00000000 --- a/.github/workflows/linting.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Scala Linting - -on: - push: - branches: - - main - pull_request: - -jobs: - build: - runs-on: ubuntu-latest - concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - steps: - - name: Checkout the repository - uses: actions/checkout@v3 - - name: Set up JDK 11 - uses: actions/setup-java@v3 - with: - distribution: "temurin" - java-version: 11 - cache: "maven" - - name: Run scalafix checks - run: mvn --batch-mode clean compile test-compile scalastyle:check scalafix:scalafix spotless:check diff --git a/.github/workflows/release_droid_prepare_original_checksum.yml b/.github/workflows/release_droid_prepare_original_checksum.yml index 8a260282..c2328a26 100644 --- a/.github/workflows/release_droid_prepare_original_checksum.yml +++ b/.github/workflows/release_droid_prepare_original_checksum.yml @@ -16,7 +16,7 @@ jobs: with: fetch-depth: 0 - name: Set up JDK 11 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: "temurin" java-version: 11 @@ -24,7 +24,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: 1.19 + go-version: "1.21" - name: Enable testcontainer reuse run: echo 'testcontainers.reuse.enable=true' > "$HOME/.testcontainers.properties" - name: Run tests and build with Maven diff --git a/.github/workflows/release_droid_upload_github_release_assets.yml b/.github/workflows/release_droid_upload_github_release_assets.yml index 1c35bc93..2320ca3f 100644 --- a/.github/workflows/release_droid_upload_github_release_assets.yml +++ b/.github/workflows/release_droid_upload_github_release_assets.yml @@ -16,7 +16,7 @@ jobs: with: fetch-depth: 0 - name: Set up JDK 11 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: "temurin" java-version: 11 diff --git a/.project-keeper.yml b/.project-keeper.yml index 92ab7bcc..8ea690d6 100644 --- a/.project-keeper.yml +++ b/.project-keeper.yml @@ -14,3 +14,9 @@ excludes: - "E-PK-CORE-18: Outdated content: '.github/workflows/ci-build-next-java.yml'" - "E-PK-CORE-18: Outdated content: '.github/workflows/release_droid_upload_github_release_assets.yml'" - "E-PK-CORE-18: Outdated content: '.github/workflows/release_droid_prepare_original_checksum.yml'" +build: + runnerOs: ubuntu-20.04 + freeDiskSpace: false + exasolDbVersions: + - "8.23.1" + - "7.1.24" diff --git a/.vscode/settings.json b/.vscode/settings.json index f9fe5818..7de7e377 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,8 @@ { "editor.formatOnSave": true, "editor.codeActionsOnSave": { - "source.organizeImports": true, - "source.generate.finalModifiers": true + "source.organizeImports": "explicit", + "source.generate.finalModifiers": "explicit" }, "java.saveActions.organizeImports": true, "java.sources.organizeImports.starThreshold": 3, diff --git a/dependencies.md b/dependencies.md index e4d184ad..1cb7f744 100644 --- a/dependencies.md +++ b/dependencies.md @@ -36,67 +36,66 @@ | [Apache Ivy][31] | [The Apache Software License, Version 2.0][5] | | [Parquet for Java][32] | [MIT License][33] | | [JUL to SLF4J bridge][34] | [MIT License][35] | -| [SLF4J Reload4j Provider][36] | [MIT License][35] | -| [Apache Log4j API][37] | [Apache-2.0][3] | -| [Apache Log4j 1.x Compatibility API][38] | [Apache-2.0][3] | -| [Apache Log4j Core][39] | [Apache-2.0][3] | -| [scala-logging][40] | [Apache 2.0 License][30] | +| [Apache Log4j API][36] | [Apache-2.0][3] | +| [Apache Log4j 1.x Compatibility API][37] | [Apache-2.0][3] | +| [Apache Log4j Core][38] | [Apache-2.0][3] | +| [scala-logging][39] | [Apache 2.0 License][30] | ### Test Dependencies | Dependency | License | | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| [scalatest][41] | [the Apache License, ASL Version 2.0][28] | -| [scalatestplus-mockito][42] | [Apache-2.0][28] | -| [mockito-core][43] | [MIT][44] | -| [Hamcrest][45] | [BSD License 3][46] | -| [testcontainers-scala-scalatest][47] | [The MIT License (MIT)][44] | -| [Testcontainers :: Localstack][48] | [MIT][49] | -| [Test containers for Exasol on Docker][50] | [MIT License][51] | -| [Test Database Builder for Java][52] | [MIT License][53] | -| [Matcher for SQL Result Sets][54] | [MIT License][55] | -| [EqualsVerifier \| release normal jar][56] | [Apache License, Version 2.0][3] | -| [JUnit Jupiter Engine][57] | [Eclipse Public License v2.0][58] | -| [Maven Project Version Getter][59] | [MIT License][60] | -| [Extension integration tests library][61] | [MIT License][62] | -| [jersey-core-common][63] | [EPL 2.0][64]; [The GNU General Public License (GPL), Version 2, With Classpath Exception][65]; [Apache License, 2.0][30]; [Public Domain][66] | +| [scalatest][40] | [the Apache License, ASL Version 2.0][28] | +| [scalatestplus-mockito][41] | [Apache-2.0][28] | +| [mockito-core][42] | [MIT][43] | +| [Hamcrest][44] | [BSD License 3][45] | +| [testcontainers-scala-scalatest][46] | [The MIT License (MIT)][43] | +| [Testcontainers :: Localstack][47] | [MIT][48] | +| [Test containers for Exasol on Docker][49] | [MIT License][50] | +| [Test Database Builder for Java][51] | [MIT License][52] | +| [Matcher for SQL Result Sets][53] | [MIT License][54] | +| [EqualsVerifier \| release normal jar][55] | [Apache License, Version 2.0][3] | +| [JUnit Jupiter Engine][56] | [Eclipse Public License v2.0][57] | +| [Maven Project Version Getter][58] | [MIT License][59] | +| [Extension integration tests library][60] | [MIT License][61] | +| [jersey-core-common][62] | [EPL 2.0][63]; [The GNU General Public License (GPL), Version 2, With Classpath Exception][64]; [Apache License, 2.0][30]; [Public Domain][65] | ### Runtime Dependencies | Dependency | License | | ---------------------------- | ----------------------------------------------------------------------------- | -| [Logback Classic Module][67] | [Eclipse Public License - v 1.0][68]; [GNU Lesser General Public License][69] | -| [Logback Core Module][70] | [Eclipse Public License - v 1.0][68]; [GNU Lesser General Public License][69] | +| [Logback Classic Module][66] | [Eclipse Public License - v 1.0][67]; [GNU Lesser General Public License][68] | +| [Logback Core Module][69] | [Eclipse Public License - v 1.0][67]; [GNU Lesser General Public License][68] | ### Plugin Dependencies | Dependency | License | | ------------------------------------------------------- | --------------------------------------------- | -| [SonarQube Scanner for Maven][71] | [GNU LGPL 3][72] | -| [Apache Maven Compiler Plugin][73] | [Apache-2.0][3] | -| [Apache Maven Enforcer Plugin][74] | [Apache-2.0][3] | -| [Maven Flatten Plugin][75] | [Apache Software Licenese][3] | -| [org.sonatype.ossindex.maven:ossindex-maven-plugin][76] | [ASL2][5] | -| [scala-maven-plugin][77] | [Public domain (Unlicense)][78] | -| [ScalaTest Maven Plugin][79] | [the Apache License, ASL Version 2.0][28] | -| [Apache Maven Javadoc Plugin][80] | [Apache-2.0][3] | -| [Maven Surefire Plugin][81] | [Apache-2.0][3] | -| [Versions Maven Plugin][82] | [Apache License, Version 2.0][3] | -| [duplicate-finder-maven-plugin Maven Mojo][83] | [Apache License 2.0][30] | -| [Apache Maven Assembly Plugin][84] | [Apache-2.0][3] | -| [Apache Maven JAR Plugin][85] | [Apache License, Version 2.0][3] | -| [Artifact reference checker and unifier][86] | [MIT License][87] | -| [Maven Failsafe Plugin][88] | [Apache-2.0][3] | -| [JaCoCo :: Maven Plugin][89] | [Eclipse Public License 2.0][90] | -| [error-code-crawler-maven-plugin][91] | [MIT License][92] | -| [Reproducible Build Maven Plugin][93] | [Apache 2.0][5] | -| [Project Keeper Maven plugin][94] | [The MIT License][95] | -| [OpenFastTrace Maven Plugin][96] | [GNU General Public License v3.0][97] | -| [Scalastyle Maven Plugin][98] | [Apache 2.0][30] | -| [spotless-maven-plugin][99] | [The Apache Software License, Version 2.0][3] | -| [scalafix-maven-plugin][100] | [BSD-3-Clause][21] | -| [Exec Maven Plugin][101] | [Apache License 2][3] | -| [Apache Maven Clean Plugin][102] | [Apache-2.0][3] | +| [SonarQube Scanner for Maven][70] | [GNU LGPL 3][71] | +| [Apache Maven Compiler Plugin][72] | [Apache-2.0][3] | +| [Apache Maven Enforcer Plugin][73] | [Apache-2.0][3] | +| [Maven Flatten Plugin][74] | [Apache Software Licenese][3] | +| [org.sonatype.ossindex.maven:ossindex-maven-plugin][75] | [ASL2][5] | +| [scala-maven-plugin][76] | [Public domain (Unlicense)][77] | +| [ScalaTest Maven Plugin][78] | [the Apache License, ASL Version 2.0][28] | +| [Apache Maven Javadoc Plugin][79] | [Apache-2.0][3] | +| [Maven Surefire Plugin][80] | [Apache-2.0][3] | +| [Versions Maven Plugin][81] | [Apache License, Version 2.0][3] | +| [duplicate-finder-maven-plugin Maven Mojo][82] | [Apache License 2.0][30] | +| [Apache Maven Assembly Plugin][83] | [Apache-2.0][3] | +| [Apache Maven JAR Plugin][84] | [Apache License, Version 2.0][3] | +| [Artifact reference checker and unifier][85] | [MIT License][86] | +| [Maven Failsafe Plugin][87] | [Apache-2.0][3] | +| [JaCoCo :: Maven Plugin][88] | [Eclipse Public License 2.0][89] | +| [error-code-crawler-maven-plugin][90] | [MIT License][91] | +| [Reproducible Build Maven Plugin][92] | [Apache 2.0][5] | +| [Project Keeper Maven plugin][93] | [The MIT License][94] | +| [OpenFastTrace Maven Plugin][95] | [GNU General Public License v3.0][96] | +| [Scalastyle Maven Plugin][97] | [Apache 2.0][30] | +| [spotless-maven-plugin][98] | [The Apache Software License, Version 2.0][3] | +| [scalafix-maven-plugin][99] | [BSD-3-Clause][21] | +| [Exec Maven Plugin][100] | [Apache License 2][3] | +| [Apache Maven Clean Plugin][101] | [Apache-2.0][3] | ## Extension @@ -104,7 +103,7 @@ | Dependency | License | | ------------------------------------------ | ------- | -| [@exasol/extension-manager-interface][103] | MIT | +| [@exasol/extension-manager-interface][102] | MIT | [0]: https://www.scala-lang.org/ [1]: https://www.apache.org/licenses/LICENSE-2.0 @@ -142,71 +141,70 @@ [33]: https://github.com/exasol/parquet-io-java/blob/main/LICENSE [34]: http://www.slf4j.org [35]: http://www.opensource.org/licenses/mit-license.php -[36]: http://reload4j.qos.ch -[37]: https://logging.apache.org/log4j/2.x/log4j/log4j-api/ -[38]: https://logging.apache.org/log4j/2.x/log4j/log4j-1.2-api/ -[39]: https://logging.apache.org/log4j/2.x/log4j/log4j-core/ -[40]: https://github.com/lightbend/scala-logging -[41]: http://www.scalatest.org -[42]: https://github.com/scalatest/scalatestplus-mockito -[43]: https://github.com/mockito/mockito -[44]: https://opensource.org/licenses/MIT -[45]: http://hamcrest.org/JavaHamcrest/ -[46]: http://opensource.org/licenses/BSD-3-Clause -[47]: https://github.com/testcontainers/testcontainers-scala -[48]: https://java.testcontainers.org -[49]: http://opensource.org/licenses/MIT -[50]: https://github.com/exasol/exasol-testcontainers/ -[51]: https://github.com/exasol/exasol-testcontainers/blob/main/LICENSE -[52]: https://github.com/exasol/test-db-builder-java/ -[53]: https://github.com/exasol/test-db-builder-java/blob/main/LICENSE -[54]: https://github.com/exasol/hamcrest-resultset-matcher/ -[55]: https://github.com/exasol/hamcrest-resultset-matcher/blob/main/LICENSE -[56]: https://www.jqno.nl/equalsverifier -[57]: https://junit.org/junit5/ -[58]: https://www.eclipse.org/legal/epl-v20.html -[59]: https://github.com/exasol/maven-project-version-getter/ -[60]: https://github.com/exasol/maven-project-version-getter/blob/main/LICENSE -[61]: https://github.com/exasol/extension-manager/ -[62]: https://github.com/exasol/extension-manager/blob/main/LICENSE -[63]: https://projects.eclipse.org/projects/ee4j.jersey/jersey-common -[64]: http://www.eclipse.org/legal/epl-2.0 -[65]: https://www.gnu.org/software/classpath/license.html -[66]: https://creativecommons.org/publicdomain/zero/1.0/ -[67]: http://logback.qos.ch/logback-classic -[68]: http://www.eclipse.org/legal/epl-v10.html -[69]: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html -[70]: http://logback.qos.ch/logback-core -[71]: http://sonarsource.github.io/sonar-scanner-maven/ -[72]: http://www.gnu.org/licenses/lgpl.txt -[73]: https://maven.apache.org/plugins/maven-compiler-plugin/ -[74]: https://maven.apache.org/enforcer/maven-enforcer-plugin/ -[75]: https://www.mojohaus.org/flatten-maven-plugin/ -[76]: https://sonatype.github.io/ossindex-maven/maven-plugin/ -[77]: http://github.com/davidB/scala-maven-plugin -[78]: http://unlicense.org/ -[79]: https://www.scalatest.org/user_guide/using_the_scalatest_maven_plugin -[80]: https://maven.apache.org/plugins/maven-javadoc-plugin/ -[81]: https://maven.apache.org/surefire/maven-surefire-plugin/ -[82]: https://www.mojohaus.org/versions/versions-maven-plugin/ -[83]: https://basepom.github.io/duplicate-finder-maven-plugin -[84]: https://maven.apache.org/plugins/maven-assembly-plugin/ -[85]: https://maven.apache.org/plugins/maven-jar-plugin/ -[86]: https://github.com/exasol/artifact-reference-checker-maven-plugin/ -[87]: https://github.com/exasol/artifact-reference-checker-maven-plugin/blob/main/LICENSE -[88]: https://maven.apache.org/surefire/maven-failsafe-plugin/ -[89]: https://www.jacoco.org/jacoco/trunk/doc/maven.html -[90]: https://www.eclipse.org/legal/epl-2.0/ -[91]: https://github.com/exasol/error-code-crawler-maven-plugin/ -[92]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE -[93]: http://zlika.github.io/reproducible-build-maven-plugin -[94]: https://github.com/exasol/project-keeper/ -[95]: https://github.com/exasol/project-keeper/blob/main/LICENSE -[96]: https://github.com/itsallcode/openfasttrace-maven-plugin -[97]: https://www.gnu.org/licenses/gpl-3.0.html -[98]: http://www.scalastyle.org -[99]: https://github.com/diffplug/spotless -[100]: https://github.com/evis/scalafix-maven-plugin -[101]: https://www.mojohaus.org/exec-maven-plugin -[102]: https://maven.apache.org/plugins/maven-clean-plugin/ -[103]: https://registry.npmjs.org/@exasol/extension-manager-interface/-/extension-manager-interface-0.4.0.tgz +[36]: https://logging.apache.org/log4j/2.x/log4j/log4j-api/ +[37]: https://logging.apache.org/log4j/2.x/log4j/log4j-1.2-api/ +[38]: https://logging.apache.org/log4j/2.x/log4j/log4j-core/ +[39]: https://github.com/lightbend/scala-logging +[40]: http://www.scalatest.org +[41]: https://github.com/scalatest/scalatestplus-mockito +[42]: https://github.com/mockito/mockito +[43]: https://opensource.org/licenses/MIT +[44]: http://hamcrest.org/JavaHamcrest/ +[45]: http://opensource.org/licenses/BSD-3-Clause +[46]: https://github.com/testcontainers/testcontainers-scala +[47]: https://java.testcontainers.org +[48]: http://opensource.org/licenses/MIT +[49]: https://github.com/exasol/exasol-testcontainers/ +[50]: https://github.com/exasol/exasol-testcontainers/blob/main/LICENSE +[51]: https://github.com/exasol/test-db-builder-java/ +[52]: https://github.com/exasol/test-db-builder-java/blob/main/LICENSE +[53]: https://github.com/exasol/hamcrest-resultset-matcher/ +[54]: https://github.com/exasol/hamcrest-resultset-matcher/blob/main/LICENSE +[55]: https://www.jqno.nl/equalsverifier +[56]: https://junit.org/junit5/ +[57]: https://www.eclipse.org/legal/epl-v20.html +[58]: https://github.com/exasol/maven-project-version-getter/ +[59]: https://github.com/exasol/maven-project-version-getter/blob/main/LICENSE +[60]: https://github.com/exasol/extension-manager/ +[61]: https://github.com/exasol/extension-manager/blob/main/LICENSE +[62]: https://projects.eclipse.org/projects/ee4j.jersey/jersey-common +[63]: http://www.eclipse.org/legal/epl-2.0 +[64]: https://www.gnu.org/software/classpath/license.html +[65]: https://creativecommons.org/publicdomain/zero/1.0/ +[66]: http://logback.qos.ch/logback-classic +[67]: http://www.eclipse.org/legal/epl-v10.html +[68]: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html +[69]: http://logback.qos.ch/logback-core +[70]: http://sonarsource.github.io/sonar-scanner-maven/ +[71]: http://www.gnu.org/licenses/lgpl.txt +[72]: https://maven.apache.org/plugins/maven-compiler-plugin/ +[73]: https://maven.apache.org/enforcer/maven-enforcer-plugin/ +[74]: https://www.mojohaus.org/flatten-maven-plugin/ +[75]: https://sonatype.github.io/ossindex-maven/maven-plugin/ +[76]: http://github.com/davidB/scala-maven-plugin +[77]: http://unlicense.org/ +[78]: https://www.scalatest.org/user_guide/using_the_scalatest_maven_plugin +[79]: https://maven.apache.org/plugins/maven-javadoc-plugin/ +[80]: https://maven.apache.org/surefire/maven-surefire-plugin/ +[81]: https://www.mojohaus.org/versions/versions-maven-plugin/ +[82]: https://basepom.github.io/duplicate-finder-maven-plugin +[83]: https://maven.apache.org/plugins/maven-assembly-plugin/ +[84]: https://maven.apache.org/plugins/maven-jar-plugin/ +[85]: https://github.com/exasol/artifact-reference-checker-maven-plugin/ +[86]: https://github.com/exasol/artifact-reference-checker-maven-plugin/blob/main/LICENSE +[87]: https://maven.apache.org/surefire/maven-failsafe-plugin/ +[88]: https://www.jacoco.org/jacoco/trunk/doc/maven.html +[89]: https://www.eclipse.org/legal/epl-2.0/ +[90]: https://github.com/exasol/error-code-crawler-maven-plugin/ +[91]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE +[92]: http://zlika.github.io/reproducible-build-maven-plugin +[93]: https://github.com/exasol/project-keeper/ +[94]: https://github.com/exasol/project-keeper/blob/main/LICENSE +[95]: https://github.com/itsallcode/openfasttrace-maven-plugin +[96]: https://www.gnu.org/licenses/gpl-3.0.html +[97]: http://www.scalastyle.org +[98]: https://github.com/diffplug/spotless +[99]: https://github.com/evis/scalafix-maven-plugin +[100]: https://www.mojohaus.org/exec-maven-plugin +[101]: https://maven.apache.org/plugins/maven-clean-plugin/ +[102]: https://registry.npmjs.org/@exasol/extension-manager-interface/-/extension-manager-interface-0.4.1.tgz diff --git a/doc/changes/changes_2.7.5.md b/doc/changes/changes_2.7.5.md index aa23e655..2aeb46d9 100644 --- a/doc/changes/changes_2.7.5.md +++ b/doc/changes/changes_2.7.5.md @@ -9,6 +9,7 @@ This release adds log messages to allow debugging issues during import. ## Features * #280: Improved log messages for import + ## Dependency Updates ### Cloud Storage Extension diff --git a/doc/changes/changes_2.7.9.md b/doc/changes/changes_2.7.9.md index 310f9e00..60e68cd3 100644 --- a/doc/changes/changes_2.7.9.md +++ b/doc/changes/changes_2.7.9.md @@ -1,4 +1,4 @@ -# Cloud Storage Extension 2.7.9, released 2023-??-?? +# Cloud Storage Extension 2.7.9, released 2023-12-11 Code name: Fix CVE-2023-6378 @@ -13,18 +13,66 @@ This release fixes vulnerability CVE-2023-6378 (CWE-502: Deserialization of Untr * #288: Fixed CVE-2023-6378 in `ch.qos.logback:logback-core:jar:1.2.10:compile` * #289: Fixed CVE-2023-6378 in `ch.qos.logback:logback-classic:jar:1.2.10:compile` +## Refactoring + +* #290: Added tests to verify importing many files works + ## Dependency Updates ### Cloud Storage Extension +#### Compile Dependency Updates + +* Updated `com.exasol:import-export-udf-common-scala_2.13:1.1.1` to `2.0.0` +* Updated `com.google.protobuf:protobuf-java:3.25.0` to `3.25.1` +* Updated `io.dropwizard.metrics:metrics-core:4.2.22` to `4.2.23` +* Updated `io.grpc:grpc-netty:1.59.0` to `1.60.0` +* Updated `io.netty:netty-handler:4.1.100.Final` to `4.1.101.Final` +* Updated `org.apache.commons:commons-compress:1.24.0` to `1.25.0` +* Updated `org.apache.commons:commons-lang3:3.13.0` to `3.14.0` +* Updated `org.apache.logging.log4j:log4j-1.2-api:2.21.1` to `2.22.0` +* Updated `org.apache.logging.log4j:log4j-api:2.21.1` to `2.22.0` +* Updated `org.apache.logging.log4j:log4j-core:2.21.1` to `2.22.0` +* Updated `org.apache.orc:orc-core:1.9.1` to `1.9.2` +* Updated `org.jetbrains.kotlin:kotlin-stdlib:1.9.20` to `1.9.21` +* Removed `org.slf4j:slf4j-reload4j:2.0.9` + #### Runtime Dependency Updates * Added `ch.qos.logback:logback-classic:1.2.13` * Added `ch.qos.logback:logback-core:1.2.13` +#### Test Dependency Updates + +* Updated `com.exasol:exasol-testcontainers:6.6.3` to `7.0.0` +* Updated `com.exasol:extension-manager-integration-test-java:0.5.5` to `0.5.7` +* Updated `com.exasol:hamcrest-resultset-matcher:1.6.2` to `1.6.3` +* Updated `com.exasol:test-db-builder-java:3.5.1` to `3.5.3` +* Updated `nl.jqno.equalsverifier:equalsverifier:3.15.3` to `3.15.4` +* Updated `org.mockito:mockito-core:5.7.0` to `5.8.0` +* Updated `org.testcontainers:localstack:1.19.1` to `1.19.3` + #### Plugin Dependency Updates +* Updated `com.diffplug.spotless:spotless-maven-plugin:2.40.0` to `2.41.0` * Updated `com.exasol:project-keeper-maven-plugin:2.9.15` to `2.9.17` * Updated `org.apache.maven.plugins:maven-failsafe-plugin:3.1.2` to `3.2.2` +* Updated `org.apache.maven.plugins:maven-javadoc-plugin:3.6.2` to `3.6.3` * Updated `org.apache.maven.plugins:maven-surefire-plugin:3.1.2` to `3.2.2` +* Updated `org.codehaus.mojo:exec-maven-plugin:3.1.0` to `3.1.1` * Updated `org.codehaus.mojo:versions-maven-plugin:2.16.1` to `2.16.2` + +### Extension + +#### Compile Dependency Updates + +* Updated `@exasol/extension-manager-interface:0.4.0` to `0.4.1` + +#### Development Dependency Updates + +* Updated `eslint:^8.53.0` to `^8.55.0` +* Updated `@types/node:^20.8.10` to `^20.10.4` +* Updated `@typescript-eslint/parser:^6.9.1` to `^6.13.2` +* Updated `typescript:^5.2.2` to `^5.3.3` +* Updated `@typescript-eslint/eslint-plugin:^6.9.1` to `^6.13.2` +* Updated `esbuild:^0.19.5` to `^0.19.8` diff --git a/extension/package-lock.json b/extension/package-lock.json index acfca6be..546f9edf 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -9,19 +9,19 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@exasol/extension-manager-interface": "0.4.0" + "@exasol/extension-manager-interface": "0.4.1" }, "devDependencies": { "@jest/globals": "^29.7.0", - "@types/node": "^20.8.10", - "@typescript-eslint/eslint-plugin": "^6.9.1", - "@typescript-eslint/parser": "^6.9.1", - "esbuild": "^0.19.5", - "eslint": "^8.53.0", + "@types/node": "^20.10.4", + "@typescript-eslint/eslint-plugin": "^6.13.2", + "@typescript-eslint/parser": "^6.13.2", + "esbuild": "^0.19.8", + "eslint": "^8.55.0", "jest": "29.7.0", "ts-jest": "^29.1.1", "ts-node": "^10.9.1", - "typescript": "^5.2.2" + "typescript": "^5.3.3" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -724,9 +724,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.5.tgz", - "integrity": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", + "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", "cpu": [ "arm" ], @@ -740,9 +740,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz", - "integrity": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", + "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", "cpu": [ "arm64" ], @@ -756,9 +756,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.5.tgz", - "integrity": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", + "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", "cpu": [ "x64" ], @@ -772,9 +772,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz", - "integrity": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", + "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", "cpu": [ "arm64" ], @@ -788,9 +788,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz", - "integrity": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", + "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", "cpu": [ "x64" ], @@ -804,9 +804,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz", - "integrity": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", + "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", "cpu": [ "arm64" ], @@ -820,9 +820,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz", - "integrity": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", + "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", "cpu": [ "x64" ], @@ -836,9 +836,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz", - "integrity": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", + "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", "cpu": [ "arm" ], @@ -852,9 +852,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz", - "integrity": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", + "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", "cpu": [ "arm64" ], @@ -868,9 +868,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz", - "integrity": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", + "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", "cpu": [ "ia32" ], @@ -884,9 +884,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz", - "integrity": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", + "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", "cpu": [ "loong64" ], @@ -900,9 +900,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz", - "integrity": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", + "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", "cpu": [ "mips64el" ], @@ -916,9 +916,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz", - "integrity": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", + "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", "cpu": [ "ppc64" ], @@ -932,9 +932,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz", - "integrity": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", + "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", "cpu": [ "riscv64" ], @@ -948,9 +948,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz", - "integrity": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", + "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", "cpu": [ "s390x" ], @@ -964,9 +964,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz", - "integrity": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", + "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", "cpu": [ "x64" ], @@ -980,9 +980,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz", - "integrity": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", + "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", "cpu": [ "x64" ], @@ -996,9 +996,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz", - "integrity": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", + "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", "cpu": [ "x64" ], @@ -1012,9 +1012,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz", - "integrity": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", + "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", "cpu": [ "x64" ], @@ -1028,9 +1028,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz", - "integrity": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", + "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", "cpu": [ "arm64" ], @@ -1044,9 +1044,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz", - "integrity": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", + "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", "cpu": [ "ia32" ], @@ -1060,9 +1060,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz", - "integrity": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", + "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", "cpu": [ "x64" ], @@ -1100,9 +1100,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -1123,18 +1123,18 @@ } }, "node_modules/@eslint/js": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", - "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@exasol/extension-manager-interface": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@exasol/extension-manager-interface/-/extension-manager-interface-0.4.0.tgz", - "integrity": "sha512-EFldVsmR93PurlWFT3zVFrkBw1c+ahnhrL4jaek1XTi+zWdLHsY0ffjkqWrwWBnQvAuH/POU3KwM7/Yf/NurGA==" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@exasol/extension-manager-interface/-/extension-manager-interface-0.4.1.tgz", + "integrity": "sha512-jzYwDXQMwzp7FS9TuSgyEniMMkEGYmLTq4wiswURYsNxVZWlpo7epyPLk6m4ytm8zvdz2qHSbSH/x8uURMdY+w==" }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", @@ -1761,24 +1761,24 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/node": { - "version": "20.8.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", - "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", "dev": true }, "node_modules/@types/stack-utils": { @@ -1803,16 +1803,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz", - "integrity": "sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz", + "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.9.1", - "@typescript-eslint/type-utils": "6.9.1", - "@typescript-eslint/utils": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/type-utils": "6.13.2", + "@typescript-eslint/utils": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -1838,15 +1838,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.1.tgz", - "integrity": "sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz", + "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.9.1", - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/typescript-estree": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4" }, "engines": { @@ -1866,13 +1866,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz", - "integrity": "sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz", + "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1" + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1883,13 +1883,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz", - "integrity": "sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz", + "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.9.1", - "@typescript-eslint/utils": "6.9.1", + "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/utils": "6.13.2", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -1910,9 +1910,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.1.tgz", - "integrity": "sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", + "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1923,13 +1923,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz", - "integrity": "sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz", + "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/visitor-keys": "6.9.1", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1950,17 +1950,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.1.tgz", - "integrity": "sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz", + "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.9.1", - "@typescript-eslint/types": "6.9.1", - "@typescript-eslint/typescript-estree": "6.9.1", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/typescript-estree": "6.13.2", "semver": "^7.5.4" }, "engines": { @@ -1975,12 +1975,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz", - "integrity": "sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", + "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.9.1", + "@typescript-eslint/types": "6.13.2", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -2647,9 +2647,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz", - "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==", + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", + "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", "dev": true, "hasInstallScript": true, "bin": { @@ -2659,28 +2659,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.19.5", - "@esbuild/android-arm64": "0.19.5", - "@esbuild/android-x64": "0.19.5", - "@esbuild/darwin-arm64": "0.19.5", - "@esbuild/darwin-x64": "0.19.5", - "@esbuild/freebsd-arm64": "0.19.5", - "@esbuild/freebsd-x64": "0.19.5", - "@esbuild/linux-arm": "0.19.5", - "@esbuild/linux-arm64": "0.19.5", - "@esbuild/linux-ia32": "0.19.5", - "@esbuild/linux-loong64": "0.19.5", - "@esbuild/linux-mips64el": "0.19.5", - "@esbuild/linux-ppc64": "0.19.5", - "@esbuild/linux-riscv64": "0.19.5", - "@esbuild/linux-s390x": "0.19.5", - "@esbuild/linux-x64": "0.19.5", - "@esbuild/netbsd-x64": "0.19.5", - "@esbuild/openbsd-x64": "0.19.5", - "@esbuild/sunos-x64": "0.19.5", - "@esbuild/win32-arm64": "0.19.5", - "@esbuild/win32-ia32": "0.19.5", - "@esbuild/win32-x64": "0.19.5" + "@esbuild/android-arm": "0.19.8", + "@esbuild/android-arm64": "0.19.8", + "@esbuild/android-x64": "0.19.8", + "@esbuild/darwin-arm64": "0.19.8", + "@esbuild/darwin-x64": "0.19.8", + "@esbuild/freebsd-arm64": "0.19.8", + "@esbuild/freebsd-x64": "0.19.8", + "@esbuild/linux-arm": "0.19.8", + "@esbuild/linux-arm64": "0.19.8", + "@esbuild/linux-ia32": "0.19.8", + "@esbuild/linux-loong64": "0.19.8", + "@esbuild/linux-mips64el": "0.19.8", + "@esbuild/linux-ppc64": "0.19.8", + "@esbuild/linux-riscv64": "0.19.8", + "@esbuild/linux-s390x": "0.19.8", + "@esbuild/linux-x64": "0.19.8", + "@esbuild/netbsd-x64": "0.19.8", + "@esbuild/openbsd-x64": "0.19.8", + "@esbuild/sunos-x64": "0.19.8", + "@esbuild/win32-arm64": "0.19.8", + "@esbuild/win32-ia32": "0.19.8", + "@esbuild/win32-x64": "0.19.8" } }, "node_modules/escalade": { @@ -2705,15 +2705,15 @@ } }, "node_modules/eslint": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", - "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.53.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -5101,9 +5101,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", diff --git a/extension/package.json b/extension/package.json index 9a074a4c..8e43d4a7 100644 --- a/extension/package.json +++ b/extension/package.json @@ -14,18 +14,18 @@ "test-watch": "jest --watch" }, "dependencies": { - "@exasol/extension-manager-interface": "0.4.0" + "@exasol/extension-manager-interface": "0.4.1" }, "devDependencies": { "@jest/globals": "^29.7.0", - "@types/node": "^20.8.10", - "@typescript-eslint/eslint-plugin": "^6.9.1", - "@typescript-eslint/parser": "^6.9.1", - "esbuild": "^0.19.5", - "eslint": "^8.53.0", + "@types/node": "^20.10.4", + "@typescript-eslint/eslint-plugin": "^6.13.2", + "@typescript-eslint/parser": "^6.13.2", + "esbuild": "^0.19.8", + "eslint": "^8.55.0", "jest": "29.7.0", "ts-jest": "^29.1.1", "ts-node": "^10.9.1", - "typescript": "^5.2.2" + "typescript": "^5.3.3" } } \ No newline at end of file diff --git a/extension/src/extension.ts b/extension/src/extension.ts index 27cf758f..8ee67532 100644 --- a/extension/src/extension.ts +++ b/extension/src/extension.ts @@ -47,7 +47,7 @@ export function createExtension(): ExasolExtension { description: "Access data formatted with Avro, Orc and Parquet on public cloud storage systems", category: "cloud-storage-importer", version: EXTENSION_DESCRIPTION.version, - file: { name: EXTENSION_DESCRIPTION.fileName, size: EXTENSION_DESCRIPTION.fileSizeBytes }, + files: [{ name: EXTENSION_DESCRIPTION.fileName, size: EXTENSION_DESCRIPTION.fileSizeBytes }], scripts: SCRIPTS, scriptVersionExtractor: jarFileVersionExtractor(/exasol-cloud-storage-extension-(\d+\.\d+\.\d+).jar/) } diff --git a/pom.xml b/pom.xml index b543a1cf..fc5e0f22 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,8 @@ 2.13.11 2.13 3.3.6 - 2.21.1 + 2.22.0 + 1.2.13 src/main/,extension/src/ extension/src/*.test.ts src/test/,extension/src @@ -33,7 +34,7 @@ org.apache.commons commons-lang3 - 3.13.0 + 3.14.0 com.google.guava @@ -44,13 +45,13 @@ io.grpc grpc-netty - 1.59.0 + 1.60.0 io.netty netty-handler - 4.1.100.Final + 4.1.101.Final org.xerial.snappy @@ -60,30 +61,7 @@ com.exasol import-export-udf-common-scala_${scala.compat.version} - 1.1.1 - - - - org.scala-lang - scala-library - - - org.slf4j - slf4j-simple - - - org.slf4j - slf4j-api - - - org.apache.avro - avro - - - org.apache.commons - commons-compress - - + 2.0.0 com.exasol @@ -180,9 +158,15 @@ commons-logging + org.slf4j slf4j-api + + + org.slf4j + slf4j-reload4j + @@ -200,14 +184,14 @@ ch.qos.logback logback-classic - 1.2.13 + ${logback.version} runtime ch.qos.logback logback-core - 1.2.13 + ${logback.version} runtime @@ -298,7 +282,7 @@ org.jetbrains.kotlin kotlin-stdlib - 1.9.20 + 1.9.21 @@ -389,12 +373,12 @@ io.dropwizard.metrics metrics-core - 4.2.22 + 4.2.23 com.google.protobuf protobuf-java - 3.25.0 + 3.25.1 com.google.cloud.bigdataoss @@ -410,13 +394,18 @@ org.apache.orc orc-core - 1.9.1 + 1.9.2 org.slf4j slf4j-api + + + org.apache.hadoop + hadoop-client-api + @@ -439,7 +428,7 @@ org.apache.commons commons-compress - 1.24.0 + 1.25.0 io.delta @@ -503,22 +492,6 @@ jul-to-slf4j 2.0.9 - - org.slf4j - slf4j-reload4j - 2.0.9 - - - log4j - log4j - - - - ch.qos.reload4j - reload4j - - - org.apache.logging.log4j log4j-api @@ -555,7 +528,7 @@ org.mockito mockito-core - 5.7.0 + 5.8.0 test @@ -573,31 +546,31 @@ org.testcontainers localstack - 1.19.1 + 1.19.3 test com.exasol exasol-testcontainers - 6.6.3 + 7.0.0 test com.exasol test-db-builder-java - 3.5.1 + 3.5.3 test com.exasol hamcrest-resultset-matcher - 1.6.2 + 1.6.3 test nl.jqno.equalsverifier equalsverifier - 3.15.3 + 3.15.4 test @@ -615,7 +588,7 @@ com.exasol extension-manager-integration-test-java - 0.5.5 + 0.5.7 test @@ -735,7 +708,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.6.2 + 3.6.3 UTF-8 @@ -803,11 +776,6 @@ .*\.proto$ - - com.exasol - import-export-udf-common-scala_${scala.compat.version} - 1.1.1 - @@ -867,7 +835,7 @@ com.diffplug.spotless spotless-maven-plugin - 2.40.0 + 2.41.0 @@ -911,7 +879,7 @@ org.codehaus.mojo exec-maven-plugin - 3.1.0 + 3.1.1 npm-ci diff --git a/src/main/scala/com/exasol/cloudetl/scriptclasses/FilesDataImporter.scala b/src/main/scala/com/exasol/cloudetl/scriptclasses/FilesDataImporter.scala index 5d9f53ff..881dfb7e 100644 --- a/src/main/scala/com/exasol/cloudetl/scriptclasses/FilesDataImporter.scala +++ b/src/main/scala/com/exasol/cloudetl/scriptclasses/FilesDataImporter.scala @@ -36,7 +36,8 @@ object FilesDataImporter extends LazyLogging { var intervalCount = 0 files.foreach { case (filename, intervals) => logger.info( - s"Importing intervals '${getIntervalString(intervals)}' for file $filename on node '$nodeId' and vm '$vmId'." + s"Importing ${intervals.size()} intervals '${getIntervalString(intervals)}' " + + s"for file $filename on node '$nodeId' and vm '$vmId'." ) intervalCount += intervals.size() } diff --git a/src/test/java/com/exasol/cloudetl/extension/ExtensionIT.java b/src/test/java/com/exasol/cloudetl/extension/ExtensionIT.java index 887587fc..68d58b13 100644 --- a/src/test/java/com/exasol/cloudetl/extension/ExtensionIT.java +++ b/src/test/java/com/exasol/cloudetl/extension/ExtensionIT.java @@ -33,7 +33,7 @@ class ExtensionIT extends AbstractScriptExtensionIT { private static final Logger LOGGER = Logger.getLogger(ExtensionIT.class.getName()); private static final String EXTENSION_ID = "cloud-storage-extension.js"; - private static final String PREVIOUS_VERSION = "2.7.6"; + private static final String PREVIOUS_VERSION = "2.7.8"; private static final Path EXTENSION_SOURCE_DIR = Paths.get("extension").toAbsolutePath(); private static final String PROJECT_VERSION = MavenProjectVersionGetter.getCurrentProjectVersion(); private static final String S3_CONNECTION = "S3_CONNECTION"; @@ -46,9 +46,6 @@ class ExtensionIT extends AbstractScriptExtensionIT { @BeforeAll static void setup() throws FileNotFoundException, BucketAccessException, TimeoutException, SQLException { - if (System.getProperty("com.exasol.dockerdb.image") == null) { - System.setProperty("com.exasol.dockerdb.image", "8.23.1"); - } exasolTestSetup = new ExasolTestSetupFactory(Paths.get("no-cloud-setup")).getTestSetup(); ExasolVersionCheck.assumeExasolVersion8(exasolTestSetup); setup = ExtensionManagerSetup.create(exasolTestSetup, ExtensionBuilder.createDefaultNpmBuilder( diff --git a/src/test/java/com/exasol/cloudetl/scriptclasses/ExaIteratorMock.java b/src/test/java/com/exasol/cloudetl/scriptclasses/ExaIteratorMock.java index db8c64d9..4cefd175 100644 --- a/src/test/java/com/exasol/cloudetl/scriptclasses/ExaIteratorMock.java +++ b/src/test/java/com/exasol/cloudetl/scriptclasses/ExaIteratorMock.java @@ -8,17 +8,28 @@ import com.exasol.ExaIterator; +import scala.collection.JavaConverters; +import scala.collection.Seq; + public class ExaIteratorMock implements ExaIterator { - private int currentRow = 0; private final Object[][] values; private final List emittedRows = new ArrayList<>(); + private int currentRow = 0; public static ExaIteratorMock empty() { return new ExaIteratorMock(new Object[0][0]); } - public ExaIteratorMock(final Object[]... values) { + public static ExaIteratorMock fromSeq(final Seq values) { + return fromList(JavaConverters.asJava(values)); + } + + public static ExaIteratorMock fromList(final List values) { + return new ExaIteratorMock(values.toArray(new Object[0][0])); + } + + private ExaIteratorMock(final Object[][] values) { this.values = values; } @@ -31,6 +42,33 @@ public List getEmittedRows() { return emittedRows; } + @Override + public Long getLong(final int col) { + return get(Long.class, col); + } + + @Override + public String getString(final int col) { + return get(String.class, col); + } + + private T get(final Class type, final int col) { + if (values.length > currentRow) { + return type.cast(values[currentRow][col]); + } else { + return null; + } + } + + @Override + public boolean next() { + if (currentRow + 1 >= values.length) { + return false; + } + currentRow++; + return true; + } + @Override public BigDecimal getBigDecimal(final int col) { throw new UnsupportedOperationException("Unimplemented method 'getBigDecimal'"); @@ -81,11 +119,6 @@ public Integer getInteger(final String col) { throw new UnsupportedOperationException("Unimplemented method 'getInteger'"); } - @Override - public Long getLong(final int col) { - return get(Long.class, col); - } - @Override public Long getLong(final String col) { throw new UnsupportedOperationException("Unimplemented method 'getLong'"); @@ -101,19 +134,6 @@ public Object getObject(final String col) { throw new UnsupportedOperationException("Unimplemented method 'getObject'"); } - @Override - public String getString(final int col) { - return get(String.class, col); - } - - private T get(final Class type, final int col) { - if (values.length > currentRow) { - return type.cast(values[currentRow][col]); - } else { - return null; - } - } - @Override public String getString(final String col) { throw new UnsupportedOperationException("Unimplemented method 'getString'"); @@ -129,15 +149,6 @@ public Timestamp getTimestamp(final int col) { throw new UnsupportedOperationException("Unimplemented method 'getTimestamp'"); } - @Override - public boolean next() { - if (currentRow + 1 >= values.length) { - return false; - } - currentRow++; - return true; - } - @Override public void reset() { throw new UnsupportedOperationException("Unimplemented method 'reset'"); diff --git a/src/test/scala/com/exasol/cloudetl/it/BaseIntegrationTest.scala b/src/test/scala/com/exasol/cloudetl/it/BaseIntegrationTest.scala index b476a2ea..57d5664b 100644 --- a/src/test/scala/com/exasol/cloudetl/it/BaseIntegrationTest.scala +++ b/src/test/scala/com/exasol/cloudetl/it/BaseIntegrationTest.scala @@ -16,7 +16,7 @@ import org.scalatest.funsuite.AnyFunSuite trait BaseIntegrationTest extends AnyFunSuite with BeforeAndAfterAll with LazyLogging { private[this] val JAR_NAME_PATTERN = "exasol-cloud-storage-extension-" - val DEFAULT_EXASOL_DOCKER_IMAGE = "7.1.24" + val DEFAULT_EXASOL_DOCKER_IMAGE = "8.23.1" val network = DockerNamedNetwork("it-tests", true) val exasolContainer = { val c: ExasolContainer[_] = new ExasolContainer(getExasolDockerImageVersion()) @@ -40,7 +40,7 @@ trait BaseIntegrationTest extends AnyFunSuite with BeforeAndAfterAll with LazyLo } def prepareExasolDatabase(schemaName: String): Unit = { - executeStmt(s"DROP SCHEMA IF EXISTS $schemaName CASCADE;") + executeStmt(s"DROP SCHEMA IF EXISTS $schemaName CASCADE") factory = new ExasolObjectFactory(getConnection()) logger.info("Creating schema " + schemaName) schema = factory.createSchema(schemaName) @@ -50,6 +50,7 @@ trait BaseIntegrationTest extends AnyFunSuite with BeforeAndAfterAll with LazyLo } def executeStmt(sql: String): Unit = { + logger.info(s"Executing statement $sql...") try { getConnection().createStatement().execute(sql) } catch { @@ -123,9 +124,10 @@ trait BaseIntegrationTest extends AnyFunSuite with BeforeAndAfterAll with LazyLo } private[this] def uploadJarToBucket(): Unit = { - val jarPath = Paths.get("target", assembledJarName) - logger.info("Uploading JAR " + jarPath + " to bucket...") + val jarPath = Paths.get("target", assembledJarName).toAbsolutePath() + logger.info(s"Uploading JAR $jarPath to bucket at $assembledJarName...") exasolContainer.getDefaultBucket.uploadFile(jarPath, assembledJarName) + logger.info(s"Upload to $assembledJarName finished.") } private[this] def findFileOrDirectory(searchDirectory: String, name: String): String = { diff --git a/src/test/scala/com/exasol/cloudetl/it/BaseS3IntegrationTest.scala b/src/test/scala/com/exasol/cloudetl/it/BaseS3IntegrationTest.scala index 699cb43f..f16f0776 100644 --- a/src/test/scala/com/exasol/cloudetl/it/BaseS3IntegrationTest.scala +++ b/src/test/scala/com/exasol/cloudetl/it/BaseS3IntegrationTest.scala @@ -105,7 +105,7 @@ trait BaseS3IntegrationTest extends BaseIntegrationTest { dataFormat: String ): Unit = { val bucketPath = s"s3a://$bucket/$file" - logger.debug(s"Importing $bucketPath of format $dataFormat into table ${table.getFullyQualifiedName()}...") + logger.info(s"Importing $bucketPath of format $dataFormat into table ${table.getFullyQualifiedName()}...") executeStmt( s"""|IMPORT INTO ${table.getFullyQualifiedName()} |FROM SCRIPT $schemaName.IMPORT_PATH WITH diff --git a/src/test/scala/com/exasol/cloudetl/scriptclasses/FilesDataImporterTest.scala b/src/test/scala/com/exasol/cloudetl/scriptclasses/FilesDataImporterTest.scala index b716d9b7..faf1ac64 100644 --- a/src/test/scala/com/exasol/cloudetl/scriptclasses/FilesDataImporterTest.scala +++ b/src/test/scala/com/exasol/cloudetl/scriptclasses/FilesDataImporterTest.scala @@ -33,7 +33,7 @@ class FilesDataImporterTest extends StorageTest with Matchers { val storageProperties = StorageProperties(properties) val iter = - new ExaIteratorMock(iteratorRow(storageProperties, file1, 0, 1), iteratorRow(storageProperties, file2, 0, 1)) + exaIteratorMock(iteratorRow(storageProperties, file1, 0, 1), iteratorRow(storageProperties, file2, 0, 1)) FilesDataImporter.run(mock[ExaMetadata], iter) assert(iter.getEmittedRows().size() == expectedNumberOfRecords) @@ -42,7 +42,7 @@ class FilesDataImporterTest extends StorageTest with Matchers { test("run emits records for single interval") { val file1 = s"$testResourceDir/import/parquet/sales_positions1.snappy.parquet" val storageProperties = StorageProperties(properties) - val iter = new ExaIteratorMock(iteratorRow(storageProperties, file1, 0, 1)) + val iter = exaIteratorMock(iteratorRow(storageProperties, file1, 0, 1)) FilesDataImporter.run(mock[ExaMetadata], iter) assert(iter.getEmittedRows().size() == 500) } @@ -51,7 +51,7 @@ class FilesDataImporterTest extends StorageTest with Matchers { val file = s"$testResourceDir/import/parquet/sales_positions1.snappy.parquet" val storageProperties = StorageProperties(properties) val iter = - new ExaIteratorMock(iteratorRow(storageProperties, file, 0, 1), iteratorRow(storageProperties, file, 0, 1)) + exaIteratorMock(iteratorRow(storageProperties, file, 0, 1), iteratorRow(storageProperties, file, 0, 1)) FilesDataImporter.run(mock[ExaMetadata], iter) assert(iter.getEmittedRows().size() == 500) } @@ -89,14 +89,14 @@ class FilesDataImporterTest extends StorageTest with Matchers { test("collectFiles for iterator with single entry") { val result = - FilesDataImporter.collectFiles(new ExaIteratorMock(iteratorRow("file1.parquet", 17L, 42L))) + FilesDataImporter.collectFiles(exaIteratorMock(iteratorRow("file1.parquet", 17L, 42L))) result.get("file1.parquet").get.should(contain).theSameElementsAs(List(chunk(17, 42))) } test("collectFiles for iterator with single file but multiple chunks") { val result = FilesDataImporter.collectFiles( - new ExaIteratorMock( + exaIteratorMock( iteratorRow("file1.parquet", 17L, 42L), iteratorRow("file1.parquet", 1L, 2L) ) @@ -108,7 +108,7 @@ class FilesDataImporterTest extends StorageTest with Matchers { test("collectFiles for iterator with multiple files and multiple chunks") { val result = FilesDataImporter.collectFiles( - new ExaIteratorMock( + exaIteratorMock( iteratorRow("file1.parquet", 17L, 42L), iteratorRow("file1.parquet", 1L, 2L), iteratorRow("file2.parquet", 0L, 1L) @@ -122,7 +122,7 @@ class FilesDataImporterTest extends StorageTest with Matchers { test("collectFiles for iterator with two files") { val result = FilesDataImporter.collectFiles( - new ExaIteratorMock( + exaIteratorMock( iteratorRow("file1.parquet", 17L, 42L), iteratorRow("file2.parquet", 1L, 2L) ) @@ -132,11 +132,25 @@ class FilesDataImporterTest extends StorageTest with Matchers { result.get("file2.parquet").get.should(contain).theSameElementsAs(List(chunk(1, 2))) } - private def iteratorRow(file: String, intervalStart: Long, intervalEnd: Long) = - Array[Any](null, null, file, intervalStart, intervalEnd) + test("collectFiles with 40k files") { + val files = (0 until 40000).map(i => iteratorRow(s"file$i.parquet", 0L, 1L)) + val result = FilesDataImporter.collectFiles(ExaIteratorMock.fromSeq(files)) + assert(result.size == 40000) + result.values.foreach(intervals => assert(intervals.size() == 1)) + } + + private def exaIteratorMock(files: Array[Object]*) = ExaIteratorMock.fromSeq(files) + + private def iteratorRow(file: String, intervalStart: java.lang.Long, intervalEnd: java.lang.Long) = + Array[Object](null, null, file, intervalStart, intervalEnd) - private def iteratorRow(storageProperties: StorageProperties, file: String, intervalStart: Long, intervalEnd: Long) = - Array[Any](storageProperties.getStoragePath(), storageProperties.mkString(), file, intervalStart, intervalEnd) + private def iteratorRow( + storageProperties: StorageProperties, + file: String, + intervalStart: java.lang.Long, + intervalEnd: java.lang.Long + ) = + Array[Object](storageProperties.getStoragePath(), storageProperties.mkString(), file, intervalStart, intervalEnd) private[this] def chunk(start: Long, end: Long): ChunkInterval = new ChunkIntervalImpl(start, end)