diff --git a/.gitattributes b/.gitattributes index 93cafaa..4a31adb 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,10 +2,12 @@ pk_generated_parent.pom linguist-genera dependencies.md linguist-generated=true doc/changes/changelog.md linguist-generated=true .github/workflows/broken_links_checker.yml linguist-generated=true +.github/workflows/ci-build.yml linguist-generated=true .github/workflows/ci-build-next-java.yml linguist-generated=true .github/workflows/dependencies_check.yml linguist-generated=true .github/workflows/release_droid_print_quick_checksum.yml linguist-generated=true - +.github/workflows/release_droid_upload_github_release_assets.yml linguist-generated=true +.github/workflows/release_droid_prepare_original_checksum.yml linguist-generated=true .settings/org.eclipse.jdt.core.prefs linguist-generated=true .settings/org.eclipse.jdt.ui.prefs linguist-generated=true extension/package-lock.json linguist-generated=true diff --git a/.github/workflows/broken_links_checker.yml b/.github/workflows/broken_links_checker.yml index 82ec1cd..0fbcad5 100644 --- a/.github/workflows/broken_links_checker.yml +++ b/.github/workflows/broken_links_checker.yml @@ -1,3 +1,5 @@ +# Generated by Project Keeper +# https://github.com/exasol/project-keeper/blob/main/project-keeper/src/main/resources/templates/.github/workflows/broken_links_checker.yml name: Broken Links Checker on: diff --git a/.github/workflows/ci-build-next-java.yml b/.github/workflows/ci-build-next-java.yml index 7cbab08..e3acdb7 100644 --- a/.github/workflows/ci-build-next-java.yml +++ b/.github/workflows/ci-build-next-java.yml @@ -1,5 +1,6 @@ +# Generated by Project Keeper +# https://github.com/exasol/project-keeper/blob/main/project-keeper/src/main/resources/templates/.github/workflows/ci-build-next-java.yml name: CI Build next Java - on: push: branches: @@ -18,7 +19,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 @@ -26,8 +27,9 @@ jobs: - name: Run tests and build with Maven run: | mvn --batch-mode --update-snapshots clean package -DtrimStackTrace=false \ + -Djava.version=17 \ -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn - - name: Publish Test Report + - name: Publish Test Report for Java 17 uses: scacap/action-surefire-report@v1 if: ${{ always() && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' }} with: diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index cae7cbb..4317696 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -1,5 +1,6 @@ +# Generated by Project Keeper +# https://github.com/exasol/project-keeper/blob/main/project-keeper/src/main/resources/templates/.github/workflows/ci-build-db-version-matrix.yml name: CI Build - on: push: branches: @@ -7,17 +8,20 @@ on: pull_request: jobs: - build: - 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: ["7.1.25", "8.24.0"] + env: + DEFAULT_EXASOL_DB_VERSION: "7.1.25" steps: - name: Free Disk Space + if: ${{ true }} run: | sudo rm -rf /usr/local/lib/android sudo rm -rf /usr/share/dotnet @@ -25,13 +29,13 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Set up JDK 11 & 17 - uses: actions/setup-java@v3 + - name: Set up JDKs + uses: actions/setup-java@v4 with: distribution: "temurin" java-version: | - 17 11 + 17 cache: "maven" - name: Cache SonarCloud packages uses: actions/cache@v3 @@ -39,45 +43,36 @@ jobs: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: "1.20" - cache: false - - - name: Cache Go modules - uses: actions/cache@v3 - with: - path: | - ~/.cache/go-build - ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('pom.xml') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Enable testcontainer reuse run: echo 'testcontainers.reuse.enable=true' > "$HOME/.testcontainers.properties" - name: Run tests and build with Maven run: | - JAVA_HOME=$JAVA_HOME_11_X64 mvn --batch-mode clean verify \ + mvn --batch-mode clean verify \ -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \ -DtrimStackTrace=false \ -Dcom.exasol.dockerdb.image=${{ matrix.exasol_db_version }} - - name: Publish Test Report + env: + # Set additional environment variable as in scala projects the scalatest plugin does not forward + # the system property -Dcom.exasol.dockerdb.image to the test's implementation. + EXASOL_DB_VERSION: ${{ matrix.exasol_db_version }} + - 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: github_token: ${{ secrets.GITHUB_TOKEN }} - name: Sonar analysis - if: ${{ env.SONAR_TOKEN != null }} + if: ${{ env.SONAR_TOKEN != null && matrix.exasol_db_version == env.DEFAULT_EXASOL_DB_VERSION }} run: | - JAVA_HOME=$JAVA_HOME_17_X64 mvn --batch-mode org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \ + mvn --batch-mode org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \ -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \ -DtrimStackTrace=false \ - -Dsonar.organization=exasol \ - -Dsonar.host.url=https://sonarcloud.io \ -Dsonar.token=$SONAR_TOKEN 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/dependencies_check.yml b/.github/workflows/dependencies_check.yml index 4b6eadf..87b64ba 100644 --- a/.github/workflows/dependencies_check.yml +++ b/.github/workflows/dependencies_check.yml @@ -1,5 +1,6 @@ +# Generated by Project Keeper +# https://github.com/exasol/project-keeper/blob/main/project-keeper/src/main/resources/templates/.github/workflows/dependencies_check.yml name: Report Security Issues for Repository - on: workflow_dispatch: schedule: @@ -13,11 +14,13 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Set up JDK 11 - uses: actions/setup-java@v3 + - name: Set up JDKs + uses: actions/setup-java@v4 with: distribution: "temurin" - java-version: 11 + java-version: | + 11 + 17 cache: "maven" - name: Generate ossindex report diff --git a/.github/workflows/release_droid_prepare_original_checksum.yml b/.github/workflows/release_droid_prepare_original_checksum.yml index 40a17f1..1a3db47 100644 --- a/.github/workflows/release_droid_prepare_original_checksum.yml +++ b/.github/workflows/release_droid_prepare_original_checksum.yml @@ -1,5 +1,6 @@ +# Generated by Project Keeper +# https://github.com/exasol/project-keeper/blob/main/project-keeper/src/main/resources/templates/.github/workflows/release_droid_prepare_original_checksum.yml name: Release Droid - Prepare Original Checksum - on: workflow_dispatch: @@ -8,6 +9,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Free Disk Space + if: ${{ true }} run: | sudo rm -rf /usr/local/lib/android sudo rm -rf /usr/share/dotnet @@ -15,16 +17,14 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Set up JDK 11 - uses: actions/setup-java@v3 + - name: Set up JDKs + uses: actions/setup-java@v4 with: distribution: "temurin" - java-version: 11 + java-version: | + 11 + 17 cache: "maven" - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version: "1.20" - 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_print_quick_checksum.yml b/.github/workflows/release_droid_print_quick_checksum.yml index aed4444..86979cd 100644 --- a/.github/workflows/release_droid_print_quick_checksum.yml +++ b/.github/workflows/release_droid_print_quick_checksum.yml @@ -1,5 +1,6 @@ +# Generated by Project Keeper +# https://github.com/exasol/project-keeper/blob/main/project-keeper/src/main/resources/templates/.github/workflows/release_droid_print_quick_checksum.yml name: Release Droid - Print Quick Checksum - on: workflow_dispatch: @@ -11,11 +12,13 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Set up JDK 11 - uses: actions/setup-java@v3 + - name: Set up JDKs + uses: actions/setup-java@v4 with: distribution: "temurin" - java-version: 11 + java-version: | + 11 + 17 cache: "maven" - name: Build with Maven skipping tests run: mvn --batch-mode clean verify -DskipTests diff --git a/.github/workflows/release_droid_upload_github_release_assets.yml b/.github/workflows/release_droid_upload_github_release_assets.yml index 5d02b10..b19f7cf 100644 --- a/.github/workflows/release_droid_upload_github_release_assets.yml +++ b/.github/workflows/release_droid_upload_github_release_assets.yml @@ -1,5 +1,6 @@ +# Generated by Project Keeper +# https://github.com/exasol/project-keeper/blob/main/project-keeper/src/main/resources/templates/.github/workflows/release_droid_upload_github_release_assets.yml name: Release Droid - Upload GitHub Release Assets - on: workflow_dispatch: inputs: @@ -15,11 +16,13 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Set up JDK 11 - uses: actions/setup-java@v3 + - name: Set up JDKs + uses: actions/setup-java@v4 with: distribution: "temurin" - java-version: 11 + java-version: | + 11 + 17 cache: "maven" - name: Build with Maven skipping tests run: mvn --batch-mode clean verify -DskipTests @@ -27,21 +30,11 @@ jobs: run: | cd target find . -maxdepth 1 -name \*.jar -exec bash -c 'sha256sum {} > {}.sha256' \; - - name: Generate sha256sum files for extension - run: | - cd extension/dist/ - sha256sum oracle-vs-extension.js > oracle-vs-extension.js.sha256 - - name: Upload assets to the GitHub release draft uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: ${{ github.event.inputs.upload_url }} asset_path: target/*.jar - - name: Upload extension - uses: shogo82148/actions-upload-release-asset@v1 - with: - upload_url: ${{ github.event.inputs.upload_url }} - asset_path: extension/dist/oracle-vs-extension.js* - name: Upload sha256sum files uses: shogo82148/actions-upload-release-asset@v1 with: diff --git a/.project-keeper.yml b/.project-keeper.yml index f035b05..5d177d6 100644 --- a/.project-keeper.yml +++ b/.project-keeper.yml @@ -9,8 +9,10 @@ sources: path: extension/package.json version: fromSource: pom.xml -excludes: - - "E-PK-CORE-18: Outdated content: '.github/workflows/ci-build.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: true + exasolDbVersions: + - "7.1.25" + - "8.24.0" diff --git a/dependencies.md b/dependencies.md index 2614492..2b06f63 100644 --- a/dependencies.md +++ b/dependencies.md @@ -15,52 +15,54 @@ | Dependency | License | | ----------------------------------------------- | ------------------------------------------------- | +| [Maven Project Version Getter][6] | [MIT License][7] | | [Virtual Schema Common JDBC][0] | [MIT License][1] | -| [Hamcrest][6] | [BSD License 3][7] | -| [JUnit Jupiter (Aggregator)][8] | [Eclipse Public License v2.0][9] | -| [mockito-junit-jupiter][10] | [MIT][11] | -| [EqualsVerifier \| release normal jar][12] | [Apache License, Version 2.0][13] | -| [SLF4J JDK14 Provider][14] | [MIT License][15] | -| [Test containers for Exasol on Docker][16] | [MIT License][17] | -| [Testcontainers :: JUnit Jupiter Extension][18] | [MIT][19] | -| [Testcontainers :: JDBC :: Oracle XE][18] | [MIT][19] | -| [ojdbc8][20] | [Oracle Free Use Terms and Conditions (FUTC)][21] | -| [Test Database Builder for Java][22] | [MIT License][23] | -| [udf-debugging-java][24] | [MIT License][25] | -| [Matcher for SQL Result Sets][26] | [MIT License][27] | -| [virtual-schema-shared-integration-tests][28] | [MIT License][29] | -| [Extension integration tests library][30] | [MIT License][31] | -| [JaCoCo :: Agent][32] | [Eclipse Public License 2.0][33] | +| [Hamcrest][8] | [BSD License 3][9] | +| [JUnit Jupiter (Aggregator)][10] | [Eclipse Public License v2.0][11] | +| [mockito-junit-jupiter][12] | [MIT][13] | +| [EqualsVerifier \| release normal jar][14] | [Apache License, Version 2.0][15] | +| [SLF4J JDK14 Provider][16] | [MIT License][17] | +| [Test containers for Exasol on Docker][18] | [MIT License][19] | +| [Testcontainers :: JUnit Jupiter Extension][20] | [MIT][21] | +| [Testcontainers :: JDBC :: Oracle XE][20] | [MIT][21] | +| [ojdbc8][22] | [Oracle Free Use Terms and Conditions (FUTC)][23] | +| [Test Database Builder for Java][24] | [MIT License][25] | +| [udf-debugging-java][26] | [MIT License][27] | +| [Matcher for SQL Result Sets][28] | [MIT License][29] | +| [virtual-schema-shared-integration-tests][30] | [MIT License][31] | +| [Extension integration tests library][32] | [MIT License][33] | +| [JaCoCo :: Agent][34] | [Eclipse Public License 2.0][35] | ### Runtime Dependencies | Dependency | License | | ----------------------------- | -------------------------------------------------------------------------------------------------------------- | -| [JSON-P Default Provider][34] | [Eclipse Public License 2.0][35]; [GNU General Public License, version 2 with the GNU Classpath Exception][36] | +| [JSON-P Default Provider][36] | [Eclipse Public License 2.0][37]; [GNU General Public License, version 2 with the GNU Classpath Exception][38] | ### Plugin Dependencies | Dependency | License | | ------------------------------------------------------- | --------------------------------- | -| [SonarQube Scanner for Maven][37] | [GNU LGPL 3][38] | -| [Apache Maven Compiler Plugin][39] | [Apache-2.0][13] | -| [Apache Maven Enforcer Plugin][40] | [Apache-2.0][13] | -| [Maven Flatten Plugin][41] | [Apache Software Licenese][13] | -| [org.sonatype.ossindex.maven:ossindex-maven-plugin][42] | [ASL2][43] | -| [Maven Surefire Plugin][44] | [Apache-2.0][13] | -| [Versions Maven Plugin][45] | [Apache License, Version 2.0][13] | -| [duplicate-finder-maven-plugin Maven Mojo][46] | [Apache License 2.0][47] | -| [Project keeper maven plugin][48] | [The MIT License][49] | -| [Apache Maven Assembly Plugin][50] | [Apache-2.0][13] | -| [Apache Maven JAR Plugin][51] | [Apache License, Version 2.0][13] | -| [Artifact reference checker and unifier][52] | [MIT License][53] | -| [Apache Maven Dependency Plugin][54] | [Apache-2.0][13] | -| [Maven Failsafe Plugin][55] | [Apache-2.0][13] | -| [JaCoCo :: Maven Plugin][56] | [Eclipse Public License 2.0][33] | -| [error-code-crawler-maven-plugin][57] | [MIT License][58] | -| [Reproducible Build Maven Plugin][59] | [Apache 2.0][43] | -| [Apache Maven Clean Plugin][60] | [Apache-2.0][13] | -| [Exec Maven Plugin][61] | [Apache License 2][13] | +| [SonarQube Scanner for Maven][39] | [GNU LGPL 3][40] | +| [Apache Maven Toolchains Plugin][41] | [Apache License, Version 2.0][15] | +| [Apache Maven Compiler Plugin][42] | [Apache-2.0][15] | +| [Apache Maven Enforcer Plugin][43] | [Apache-2.0][15] | +| [Maven Flatten Plugin][44] | [Apache Software Licenese][15] | +| [org.sonatype.ossindex.maven:ossindex-maven-plugin][45] | [ASL2][46] | +| [Maven Surefire Plugin][47] | [Apache-2.0][15] | +| [Versions Maven Plugin][48] | [Apache License, Version 2.0][15] | +| [duplicate-finder-maven-plugin Maven Mojo][49] | [Apache License 2.0][50] | +| [Project Keeper Maven plugin][51] | [The MIT License][52] | +| [Apache Maven Assembly Plugin][53] | [Apache-2.0][15] | +| [Apache Maven JAR Plugin][54] | [Apache License, Version 2.0][15] | +| [Artifact reference checker and unifier][55] | [MIT License][56] | +| [Apache Maven Dependency Plugin][57] | [Apache-2.0][15] | +| [Maven Failsafe Plugin][58] | [Apache-2.0][15] | +| [JaCoCo :: Maven Plugin][59] | [Eclipse Public License 2.0][35] | +| [error-code-crawler-maven-plugin][60] | [MIT License][61] | +| [Reproducible Build Maven Plugin][62] | [Apache 2.0][46] | +| [Apache Maven Clean Plugin][63] | [Apache-2.0][15] | +| [Exec Maven Plugin][64] | [Apache License 2][15] | ## Extension @@ -68,7 +70,7 @@ | Dependency | License | | ----------------------------------------- | ------- | -| [@exasol/extension-manager-interface][62] | MIT | +| [@exasol/extension-manager-interface][65] | MIT | [0]: https://github.com/exasol/virtual-schema-common-jdbc/ [1]: https://github.com/exasol/virtual-schema-common-jdbc/blob/main/LICENSE @@ -76,60 +78,63 @@ [3]: https://github.com/exasol/db-fundamentals-java/blob/main/LICENSE [4]: https://github.com/exasol/error-reporting-java/ [5]: https://github.com/exasol/error-reporting-java/blob/main/LICENSE -[6]: http://hamcrest.org/JavaHamcrest/ -[7]: http://opensource.org/licenses/BSD-3-Clause -[8]: https://junit.org/junit5/ -[9]: https://www.eclipse.org/legal/epl-v20.html -[10]: https://github.com/mockito/mockito -[11]: https://opensource.org/licenses/MIT -[12]: https://www.jqno.nl/equalsverifier -[13]: https://www.apache.org/licenses/LICENSE-2.0.txt -[14]: http://www.slf4j.org -[15]: http://www.opensource.org/licenses/mit-license.php -[16]: https://github.com/exasol/exasol-testcontainers/ -[17]: https://github.com/exasol/exasol-testcontainers/blob/main/LICENSE -[18]: https://java.testcontainers.org -[19]: http://opensource.org/licenses/MIT -[20]: https://www.oracle.com/database/technologies/maven-central-guide.html -[21]: https://www.oracle.com/downloads/licenses/oracle-free-license.html -[22]: https://github.com/exasol/test-db-builder-java/ -[23]: https://github.com/exasol/test-db-builder-java/blob/main/LICENSE -[24]: https://github.com/exasol/udf-debugging-java/ -[25]: https://github.com/exasol/udf-debugging-java/blob/main/LICENSE -[26]: https://github.com/exasol/hamcrest-resultset-matcher/ -[27]: https://github.com/exasol/hamcrest-resultset-matcher/blob/main/LICENSE -[28]: https://github.com/exasol/virtual-schema-shared-integration-tests/ -[29]: https://github.com/exasol/virtual-schema-shared-integration-tests/blob/main/LICENSE -[30]: https://github.com/exasol/extension-manager/ -[31]: https://github.com/exasol/extension-manager/blob/main/LICENSE -[32]: https://www.eclemma.org/jacoco/index.html -[33]: https://www.eclipse.org/legal/epl-2.0/ -[34]: https://github.com/eclipse-ee4j/jsonp -[35]: https://projects.eclipse.org/license/epl-2.0 -[36]: https://projects.eclipse.org/license/secondary-gpl-2.0-cp -[37]: http://sonarsource.github.io/sonar-scanner-maven/ -[38]: http://www.gnu.org/licenses/lgpl.txt -[39]: https://maven.apache.org/plugins/maven-compiler-plugin/ -[40]: https://maven.apache.org/enforcer/maven-enforcer-plugin/ -[41]: https://www.mojohaus.org/flatten-maven-plugin/ -[42]: https://sonatype.github.io/ossindex-maven/maven-plugin/ -[43]: http://www.apache.org/licenses/LICENSE-2.0.txt -[44]: https://maven.apache.org/surefire/maven-surefire-plugin/ -[45]: https://www.mojohaus.org/versions/versions-maven-plugin/ -[46]: https://basepom.github.io/duplicate-finder-maven-plugin -[47]: http://www.apache.org/licenses/LICENSE-2.0.html -[48]: https://github.com/exasol/project-keeper/ -[49]: https://github.com/exasol/project-keeper/blob/main/LICENSE -[50]: https://maven.apache.org/plugins/maven-assembly-plugin/ -[51]: https://maven.apache.org/plugins/maven-jar-plugin/ -[52]: https://github.com/exasol/artifact-reference-checker-maven-plugin/ -[53]: https://github.com/exasol/artifact-reference-checker-maven-plugin/blob/main/LICENSE -[54]: https://maven.apache.org/plugins/maven-dependency-plugin/ -[55]: https://maven.apache.org/surefire/maven-failsafe-plugin/ -[56]: https://www.jacoco.org/jacoco/trunk/doc/maven.html -[57]: https://github.com/exasol/error-code-crawler-maven-plugin/ -[58]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE -[59]: http://zlika.github.io/reproducible-build-maven-plugin -[60]: https://maven.apache.org/plugins/maven-clean-plugin/ -[61]: https://www.mojohaus.org/exec-maven-plugin -[62]: https://registry.npmjs.org/@exasol/extension-manager-interface/-/extension-manager-interface-0.4.1.tgz +[6]: https://github.com/exasol/maven-project-version-getter/ +[7]: https://github.com/exasol/maven-project-version-getter/blob/main/LICENSE +[8]: http://hamcrest.org/JavaHamcrest/ +[9]: http://opensource.org/licenses/BSD-3-Clause +[10]: https://junit.org/junit5/ +[11]: https://www.eclipse.org/legal/epl-v20.html +[12]: https://github.com/mockito/mockito +[13]: https://opensource.org/licenses/MIT +[14]: https://www.jqno.nl/equalsverifier +[15]: https://www.apache.org/licenses/LICENSE-2.0.txt +[16]: http://www.slf4j.org +[17]: http://www.opensource.org/licenses/mit-license.php +[18]: https://github.com/exasol/exasol-testcontainers/ +[19]: https://github.com/exasol/exasol-testcontainers/blob/main/LICENSE +[20]: https://java.testcontainers.org +[21]: http://opensource.org/licenses/MIT +[22]: https://www.oracle.com/database/technologies/maven-central-guide.html +[23]: https://www.oracle.com/downloads/licenses/oracle-free-license.html +[24]: https://github.com/exasol/test-db-builder-java/ +[25]: https://github.com/exasol/test-db-builder-java/blob/main/LICENSE +[26]: https://github.com/exasol/udf-debugging-java/ +[27]: https://github.com/exasol/udf-debugging-java/blob/main/LICENSE +[28]: https://github.com/exasol/hamcrest-resultset-matcher/ +[29]: https://github.com/exasol/hamcrest-resultset-matcher/blob/main/LICENSE +[30]: https://github.com/exasol/virtual-schema-shared-integration-tests/ +[31]: https://github.com/exasol/virtual-schema-shared-integration-tests/blob/main/LICENSE +[32]: https://github.com/exasol/extension-manager/ +[33]: https://github.com/exasol/extension-manager/blob/main/LICENSE +[34]: https://www.eclemma.org/jacoco/index.html +[35]: https://www.eclipse.org/legal/epl-2.0/ +[36]: https://github.com/eclipse-ee4j/jsonp +[37]: https://projects.eclipse.org/license/epl-2.0 +[38]: https://projects.eclipse.org/license/secondary-gpl-2.0-cp +[39]: http://sonarsource.github.io/sonar-scanner-maven/ +[40]: http://www.gnu.org/licenses/lgpl.txt +[41]: https://maven.apache.org/plugins/maven-toolchains-plugin/ +[42]: https://maven.apache.org/plugins/maven-compiler-plugin/ +[43]: https://maven.apache.org/enforcer/maven-enforcer-plugin/ +[44]: https://www.mojohaus.org/flatten-maven-plugin/ +[45]: https://sonatype.github.io/ossindex-maven/maven-plugin/ +[46]: http://www.apache.org/licenses/LICENSE-2.0.txt +[47]: https://maven.apache.org/surefire/maven-surefire-plugin/ +[48]: https://www.mojohaus.org/versions/versions-maven-plugin/ +[49]: https://basepom.github.io/duplicate-finder-maven-plugin +[50]: http://www.apache.org/licenses/LICENSE-2.0.html +[51]: https://github.com/exasol/project-keeper/ +[52]: https://github.com/exasol/project-keeper/blob/main/LICENSE +[53]: https://maven.apache.org/plugins/maven-assembly-plugin/ +[54]: https://maven.apache.org/plugins/maven-jar-plugin/ +[55]: https://github.com/exasol/artifact-reference-checker-maven-plugin/ +[56]: https://github.com/exasol/artifact-reference-checker-maven-plugin/blob/main/LICENSE +[57]: https://maven.apache.org/plugins/maven-dependency-plugin/ +[58]: https://maven.apache.org/surefire/maven-failsafe-plugin/ +[59]: https://www.jacoco.org/jacoco/trunk/doc/maven.html +[60]: https://github.com/exasol/error-code-crawler-maven-plugin/ +[61]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE +[62]: http://zlika.github.io/reproducible-build-maven-plugin +[63]: https://maven.apache.org/plugins/maven-clean-plugin/ +[64]: https://www.mojohaus.org/exec-maven-plugin +[65]: https://registry.npmjs.org/@exasol/extension-manager-interface/-/extension-manager-interface-0.4.1.tgz diff --git a/doc/changes/changelog.md b/doc/changes/changelog.md index 927ce84..61b4891 100644 --- a/doc/changes/changelog.md +++ b/doc/changes/changelog.md @@ -1,5 +1,6 @@ # Changes +* [3.0.0](changes_3.0.0.md) * [2.4.3](changes_2.4.3.md) * [2.4.2](changes_2.4.2.md) * [2.4.1](changes_2.4.1.md) diff --git a/doc/changes/changes_3.0.0.md b/doc/changes/changes_3.0.0.md new file mode 100644 index 0000000..ed399fc --- /dev/null +++ b/doc/changes/changes_3.0.0.md @@ -0,0 +1,83 @@ +# Oracle Virtual Schema 3.0.0, released 2024-02-22 + +Code name: Char set is always `utf-8`, deprecated IMPORT_DATA_TYPES `FROM_RESULT_SET` value + +## Summary + +The behaviour when it comes to character sets is now simplified, +The target char set is now always UTF-8. +The `IMPORT_DATA_TYPES` property (and value `FROM_RESULT_SET`) are now deprecated (change in vs-common-jdbc): +An exception will be thrown when users use `FROM_RESULT_SET`. The exception message warns the user that the value is no longer supported and the property itself is also deprecated. + +We also updated dependencies and resolved the following 2 CVEs in test dependency `org.apache.commons:commons-compress`: +- CVE-2024-26308 +- CVE-2024-25710 + +## Features + +* #42: Updated vs-common-jdbc to v12.0.0 for Exasol V8 changes + adapt tests refactoring + +## Security + +* #43: Fixed CVE-2024-25710 in `org.apache.commons:commons-compress:jar:1.24.0:test` +* #44: Fixed CVE-2024-26308 in `org.apache.commons:commons-compress:jar:1.24.0:test` + +## Dependency Updates + +### Virtual Schema for Oracle + +#### Compile Dependency Updates + +* Updated `com.exasol:virtual-schema-common-jdbc:11.0.2` to `12.0.0` +* Removed `com.oracle.database.jdbc:ojdbc8:23.3.0.23.09` + +#### Test Dependency Updates + +* Updated `com.exasol:exasol-testcontainers:6.6.2` to `7.0.1` +* Added `com.exasol:extension-manager-integration-test-java:0.5.7` +* Updated `com.exasol:hamcrest-resultset-matcher:1.6.1` to `1.6.4` +* Added `com.exasol:maven-project-version-getter:1.2.0` +* Updated `com.exasol:test-db-builder-java:3.5.1` to `3.5.3` +* Updated `com.exasol:virtual-schema-common-jdbc:11.0.2` to `12.0.0` +* Updated `com.exasol:virtual-schema-shared-integration-tests:2.2.5` to `3.0.0` +* Added `com.oracle.database.jdbc:ojdbc8:23.3.0.23.09` +* Updated `nl.jqno.equalsverifier:equalsverifier:3.15.2` to `3.15.6` +* Updated `org.jacoco:org.jacoco.agent:0.8.10` to `0.8.11` +* Updated `org.junit.jupiter:junit-jupiter:5.10.0` to `5.10.1` +* Updated `org.mockito:mockito-junit-jupiter:5.5.0` to `5.10.0` +* Updated `org.slf4j:slf4j-jdk14:2.0.9` to `2.0.11` +* Updated `org.testcontainers:junit-jupiter:1.19.1` to `1.19.3` +* Updated `org.testcontainers:oracle-xe:1.19.1` to `1.19.3` + +#### Plugin Dependency Updates + +* Updated `com.exasol:error-code-crawler-maven-plugin:1.3.0` to `1.3.1` +* Updated `com.exasol:project-keeper-maven-plugin:2.9.12` to `3.0.1` +* Updated `org.apache.maven.plugins:maven-clean-plugin:2.5` to `3.3.2` +* Updated `org.apache.maven.plugins:maven-dependency-plugin:3.6.0` to `3.6.1` +* Updated `org.apache.maven.plugins:maven-enforcer-plugin:3.4.0` to `3.4.1` +* Updated `org.apache.maven.plugins:maven-failsafe-plugin:3.1.2` to `3.2.3` +* Updated `org.apache.maven.plugins:maven-surefire-plugin:3.1.2` to `3.2.3` +* Added `org.apache.maven.plugins:maven-toolchains-plugin:3.1.0` +* Added `org.codehaus.mojo:exec-maven-plugin:3.1.0` +* Updated `org.codehaus.mojo:versions-maven-plugin:2.16.0` to `2.16.2` +* Updated `org.jacoco:jacoco-maven-plugin:0.8.10` to `0.8.11` +* Updated `org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.1.2184` to `3.10.0.2594` + +### Extension + +#### Compile Dependency Updates + +* Added `@exasol/extension-manager-interface:0.4.1` + +#### Development Dependency Updates + +* Added `eslint:^8.53.0` +* Added `@typescript-eslint/parser:^6.10.0` +* Added `ts-jest:^29.1.1` +* Added `@types/jest:^29.5.8` +* Added `typescript:^5.2.2` +* Added `@typescript-eslint/eslint-plugin:^6.10.0` +* Added `jest:29.7.0` +* Added `ts-node:^10.9.1` +* Added `esbuild:^0.19.5` diff --git a/doc/user_guide/oracle_user_guide.md b/doc/user_guide/oracle_user_guide.md index 138d6b2..3a4b802 100644 --- a/doc/user_guide/oracle_user_guide.md +++ b/doc/user_guide/oracle_user_guide.md @@ -48,7 +48,7 @@ The SQL statement below creates the adapter script, defines the Java class that ```sql CREATE JAVA ADAPTER SCRIPT ADAPTER.JDBC_ADAPTER AS %scriptclass com.exasol.adapter.RequestDispatcher; - %jar /buckets///virtual-schema-dist-11.0.2-oracle-2.4.3.jar; + %jar /buckets///virtual-schema-dist-12.0.0-oracle-3.0.0.jar; %jar /buckets///ojdbc.jar; / ; diff --git a/pk_generated_parent.pom b/pk_generated_parent.pom index 5b387fd..ea47dd7 100644 --- a/pk_generated_parent.pom +++ b/pk_generated_parent.pom @@ -3,12 +3,14 @@ 4.0.0 com.exasol oracle-virtual-schema-generated-parent - 2.4.3 + 3.0.0 pom UTF-8 UTF-8 11 + exasol + https://sonarcloud.io @@ -47,6 +49,25 @@ sonar-maven-plugin 3.10.0.2594 + + org.apache.maven.plugins + maven-toolchains-plugin + 3.1.0 + + + + toolchain + + + + + + + ${java.version} + + + + org.apache.maven.plugins maven-compiler-plugin @@ -77,6 +98,9 @@ 3.6.3 + + 17 + @@ -124,7 +148,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.2.2 + 3.2.3 @@ -135,7 +159,7 @@ org.codehaus.mojo versions-maven-plugin - 2.16.1 + 2.16.2 display-updates @@ -248,7 +272,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.2.2 + 3.2.3 -Djava.util.logging.config.file=src/test/resources/logging.properties ${argLine} diff --git a/pom.xml b/pom.xml index d6f5105..2533f36 100644 --- a/pom.xml +++ b/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.exasol oracle-virtual-schema - 2.4.3 + 3.0.0 Virtual Schema for Oracle Virtual Schema for Oracle https://github.com/exasol/oracle-virtual-schema/ - 11.0.2 - 1.19.1 + 12.0.0 + 1.19.3 src/main/,extension/src/ extension/src/*.test.ts @@ -33,6 +33,13 @@ error-reporting-java 1.0.1 + + + com.exasol + maven-project-version-getter + 1.2.0 + test + com.exasol @@ -56,26 +63,26 @@ org.mockito mockito-junit-jupiter - 5.7.0 + 5.10.0 test nl.jqno.equalsverifier equalsverifier - 3.15.3 + 3.15.6 test org.slf4j slf4j-jdk14 - 2.0.9 + 2.0.11 test com.exasol exasol-testcontainers - 6.6.3 + 7.0.1 test @@ -100,7 +107,7 @@ com.exasol test-db-builder-java - 3.5.2 + 3.5.3 test @@ -112,13 +119,13 @@ com.exasol hamcrest-resultset-matcher - 1.6.2 + 1.6.4 test com.exasol virtual-schema-shared-integration-tests - 2.2.5 + 3.0.0 test @@ -132,7 +139,7 @@ com.exasol extension-manager-integration-test-java - 0.5.6 + 0.5.7 test @@ -156,7 +163,7 @@ com.exasol project-keeper-maven-plugin - 2.9.16 + 3.0.1 @@ -302,7 +309,7 @@ oracle-virtual-schema-generated-parent com.exasol - 2.4.3 + 3.0.0 pk_generated_parent.pom diff --git a/src/test/java/com/exasol/adapter/dialects/oracle/IntegrationTestConstants.java b/src/test/java/com/exasol/adapter/dialects/oracle/IntegrationTestConstants.java index d5b035e..8f3725f 100644 --- a/src/test/java/com/exasol/adapter/dialects/oracle/IntegrationTestConstants.java +++ b/src/test/java/com/exasol/adapter/dialects/oracle/IntegrationTestConstants.java @@ -3,7 +3,7 @@ import java.nio.file.Path; public final class IntegrationTestConstants { - public static final String VIRTUAL_SCHEMAS_JAR_NAME_AND_VERSION = "virtual-schema-dist-11.0.2-oracle-2.4.3.jar"; + public static final String VIRTUAL_SCHEMAS_JAR_NAME_AND_VERSION = "virtual-schema-dist-12.0.0-oracle-3.0.0.jar"; public static final String ORACLE_CONTAINER_NAME = "gvenzl/oracle-xe:21.3.0-slim-faststart"; public static final Path VIRTUAL_SCHEMA_JAR = Path.of("target", VIRTUAL_SCHEMAS_JAR_NAME_AND_VERSION); public static final String SCHEMA_EXASOL = "SCHEMA_EXASOL"; diff --git a/src/test/java/com/exasol/adapter/dialects/oracle/OracleScalarFunctionsIT.java b/src/test/java/com/exasol/adapter/dialects/oracle/OracleScalarFunctionsIT.java index 3fe57a4..dec0a94 100644 --- a/src/test/java/com/exasol/adapter/dialects/oracle/OracleScalarFunctionsIT.java +++ b/src/test/java/com/exasol/adapter/dialects/oracle/OracleScalarFunctionsIT.java @@ -6,7 +6,6 @@ import java.sql.SQLException; import java.util.*; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.extension.ExtendWith; import com.exasol.adapter.commontests.scalarfunction.ScalarFunctionsTestBase; @@ -61,11 +60,6 @@ public void close() { } } - @BeforeAll - static void beforeAll() { - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - } - public class OracleTestSetup implements TestSetup { final OracleObjectFactory oracleFactory; @@ -153,4 +147,14 @@ public Connection createExasolConnection() throws SQLException { return SETUP.getExasolContainer().createConnection(); } } + //This is an abstract method, it has to to be implemented in the subclass. + @Override + protected void beforeAllSetup() throws SQLException { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + } + //This is an abstract method, it has to to be implemented in the subclass. + @Override + protected void afterAllTeardown() throws SQLException { + + } } diff --git a/src/test/java/com/exasol/adapter/dialects/oracle/OracleSqlDialectIT.java b/src/test/java/com/exasol/adapter/dialects/oracle/OracleSqlDialectIT.java index 8c65c66..64b7ade 100644 --- a/src/test/java/com/exasol/adapter/dialects/oracle/OracleSqlDialectIT.java +++ b/src/test/java/com/exasol/adapter/dialects/oracle/OracleSqlDialectIT.java @@ -400,8 +400,6 @@ void testSelectAllColsNumberFromOra() throws SQLException { void testSelectAllColsNumberFromOraWithJDBCTypemapping() throws SQLException { final String qualifiedTableNameActual = VIRTUAL_SCHEMA_ORACLE_NUMBER_TO_DECIMAL_JDBC_MAPPING + "." + TABLE_ORACLE_NUMBER_HANDLING; - // previously final ResultSet expected = getExpectedResultSet("(A VARCHAR(100), B VARCHAR(100), C - // VARCHAR(100))", final ResultSet expected = getExpectedResultSet("(A DECIMAL(36,1), B DECIMAL(36,1), C DECIMAL(36,2))", "('12.3456789012345678901234567890123460E32', '12.3456789012345678901234567890E26', '12.3456789012345678901234567890123456E32')"); assertThat(statementExasol.executeQuery("SELECT * FROM " + qualifiedTableNameActual), // @@ -741,13 +739,13 @@ void testLimitOffset() throws SQLException { @ParameterizedTest @CsvSource(value = { // - "VIRTUAL_SCHEMA_JDBC, C1, CHAR(50) ASCII, aaaaaaaaaaaaaaaaaaaa", // + "VIRTUAL_SCHEMA_JDBC, C1, CHAR(50) UTF8, aaaaaaaaaaaaaaaaaaaa", // "VIRTUAL_SCHEMA_JDBC, C2, CHAR(50) UTF8, bbbbbbbbbbbbbbbbbbbb", // - "VIRTUAL_SCHEMA_JDBC, C3, VARCHAR(50) ASCII, cccccccccccccccccccc", // + "VIRTUAL_SCHEMA_JDBC, C3, VARCHAR(50) UTF8, cccccccccccccccccccc", // "VIRTUAL_SCHEMA_JDBC, C4, VARCHAR(50) UTF8, dddddddddddddddddddd", // - "VIRTUAL_SCHEMA_ORACLE, C1, CHAR(50) ASCII, aaaaaaaaaaaaaaaaaaaa", // + "VIRTUAL_SCHEMA_ORACLE, C1, CHAR(50) UTF8, aaaaaaaaaaaaaaaaaaaa", // "VIRTUAL_SCHEMA_ORACLE, C2, CHAR(50) UTF8, bbbbbbbbbbbbbbbbbbbb", // - "VIRTUAL_SCHEMA_ORACLE, C3, VARCHAR(50) ASCII, cccccccccccccccccccc", // + "VIRTUAL_SCHEMA_ORACLE, C3, VARCHAR(50) UTF8, cccccccccccccccccccc", // "VIRTUAL_SCHEMA_ORACLE, C4, VARCHAR(50) UTF8, dddddddddddddddddddd" // }) void testCharactersColumns(final String virtualSchemaName, final String columnName, @@ -845,7 +843,7 @@ void testLongJdbc() { final String query = "SELECT C_LONG FROM " + qualifiedTableName; assertAll(() -> assertExpressionExecutionStringResult(query, "test long 123"), () -> assertThat(getColumnTypesOfTable(qualifiedTableName, "C_LONG"), - equalTo("VARCHAR(2000000) ASCII"))); + equalTo("VARCHAR(2000000) UTF8"))); } @Test