diff --git a/.gitattributes b/.gitattributes
index 436f11a..7733ce3 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -8,5 +8,6 @@ doc/changes/changelog.md linguist-genera
.github/workflows/dependencies_check.yml linguist-generated=true
.github/workflows/dependencies_update.yml linguist-generated=true
.github/workflows/release.yml linguist-generated=true
+.github/zizmor.yml linguist-generated=true
.settings/org.eclipse.jdt.core.prefs linguist-generated=true
.settings/org.eclipse.jdt.ui.prefs linguist-generated=true
diff --git a/.github/workflows/broken_links_checker.yml b/.github/workflows/broken_links_checker.yml
index ee8df76..55d839d 100644
--- a/.github/workflows/broken_links_checker.yml
+++ b/.github/workflows/broken_links_checker.yml
@@ -21,10 +21,11 @@ jobs:
cancel-in-progress: true
}
steps:
- - {
- id: checkout,
- uses: actions/checkout@v5
- }
+ - id: checkout
+ uses: actions/checkout@v7
+ with: {
+ persist-credentials: false
+ }
- id: configure-broken-links-checker
name: Configure broken links checker
run: |
@@ -36,7 +37,7 @@ jobs:
'{"pattern": "^https?://projects.eclipse.org"}' \
']}' > ./target/broken_links_checker.json
- id: run-broken-links-checker
- uses: tcort/github-action-markdown-link-check@v1
+ uses: tcort/github-action-markdown-link-check@e7c7a18363c842693fadde5d41a3bd3573a7a225
with: {
use-quiet-mode: yes,
use-verbose-mode: yes,
diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml
index cc82473..d9e8f6d 100644
--- a/.github/workflows/ci-build.yml
+++ b/.github/workflows/ci-build.yml
@@ -33,13 +33,12 @@ jobs:
fail-fast: false
matrix:
exasol_db_version: [
- 2025.1.3,
- 8.29.12,
- 7.1.30
+ 2026.1.0,
+ 2025.1.13
]
env: {
- DEFAULT_EXASOL_DB_VERSION: 2025.1.3
+ DEFAULT_EXASOL_DB_VERSION: 2026.1.0
}
steps:
- name: Free Disk Space
@@ -50,9 +49,10 @@ jobs:
sudo rm -rf /usr/share/dotnet
- name: Checkout the repository
id: checkout
- uses: actions/checkout@v5
+ uses: actions/checkout@v7
with: {
- fetch-depth: 0
+ fetch-depth: 0,
+ persist-credentials: false
}
- name: Set up JDKs
id: setup-java
@@ -61,14 +61,11 @@ jobs:
distribution: temurin
java-version: |-
11
- 17
+ 21
cache: maven
- server-id: ossindex
- server-username: OSSINDEX_USERNAME
- server-password: OSSINDEX_API_TOKEN
- name: Cache SonarCloud packages
id: cache-sonar
- uses: actions/cache@v4
+ uses: actions/cache@v6
with: {
path: ~/.sonar/cache,
key: '${{ runner.os }}-sonar',
@@ -83,12 +80,11 @@ jobs:
id: build-pk-verify
run: |
mvn --batch-mode clean verify \
+ -DossindexSkip=true \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
-DtrimStackTrace=false \
-Dcom.exasol.dockerdb.image=${{ matrix.exasol_db_version }}
env: {
- OSSINDEX_USERNAME: '${{ secrets.OSSINDEX_USERNAME }}',
- OSSINDEX_API_TOKEN: '${{ secrets.OSSINDEX_API_TOKEN }}',
EXASOL_DB_VERSION: '${{ matrix.exasol_db_version }}'
}
- name: Sonar analysis
@@ -96,6 +92,7 @@ jobs:
if: ${{ env.SONAR_TOKEN != null && matrix.exasol_db_version == env.DEFAULT_EXASOL_DB_VERSION }}
run: |
mvn --batch-mode org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
+ -DossindexSkip=true \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
-DtrimStackTrace=false \
-Dsonar.token=$SONAR_TOKEN
@@ -105,13 +102,41 @@ jobs:
}
- name: Verify Release Artifacts
id: verify-release-artifacts
- run: "print_message() {\n local -r message=$1\n echo \"$message\"\n echo \"$message\" >> \"$GITHUB_STEP_SUMMARY\"\n}\n\nprint_message \"### Release Artifacts\"\n\nIFS=$'\\n' artifacts_array=($ARTIFACTS)\nmissing_files=()\nfor file in \"${artifacts_array[@]}\";\ndo \n echo \"Checking if file $file exists...\"\n if ! [[ -f \"$file\" ]]; then\n print_message \"* ⚠️ \\`$file\\` does not exist ⚠️\"\n echo \"Content of directory $(dirname \"$file\"):\"\n ls \"$(dirname \"$file\")\"\n missing_files+=(\"$file\")\n else\n print_message \"* \\`$file\\` ✅\" \n fi\ndone\nprint_message \"\"\nnumber_of_missing_files=${#missing_files[@]}\nif [[ $number_of_missing_files -gt 0 ]]; then\n print_message \"⚠️ $number_of_missing_files release artifact(s) missing ⚠️\"\n exit 1\nfi\n"
+ run: |
+ print_message() {
+ local -r message=$1
+ echo "$message"
+ echo "$message" >> "$GITHUB_STEP_SUMMARY"
+ }
+
+ print_message "### Release Artifacts"
+
+ IFS=$'\n' artifacts_array=($ARTIFACTS)
+ missing_files=()
+ for file in "${artifacts_array[@]}";
+ do
+ echo "Checking if file $file exists..."
+ if ! [[ -f "$file" ]]; then
+ print_message "* ⚠️ \`$file\` does not exist ⚠️"
+ echo "Content of directory $(dirname "$file"):"
+ ls "$(dirname "$file")"
+ missing_files+=("$file")
+ else
+ print_message "* \`$file\` ✅"
+ fi
+ done
+ print_message ""
+ number_of_missing_files=${#missing_files[@]}
+ if [[ $number_of_missing_files -gt 0 ]]; then
+ print_message "⚠️ $number_of_missing_files release artifact(s) missing ⚠️"
+ exit 1
+ fi
env: {
ARTIFACTS: '${{ steps.build-pk-verify.outputs.release-artifacts }}'
}
- name: Upload artifacts
id: upload-artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with: {
name: 'artifacts-exasol-${{ matrix.exasol_db_version }}',
path: '${{ steps.build-pk-verify.outputs.release-artifacts }}',
@@ -127,7 +152,7 @@ jobs:
'{"pattern": "^https?://(www.)?eclipse.org"}' \
'{"pattern": "^https?://projects.eclipse.org"}' \
']}' > ./target/broken_links_checker.json
- - uses: tcort/github-action-markdown-link-check@v1
+ - uses: tcort/github-action-markdown-link-check@e7c7a18363c842693fadde5d41a3bd3573a7a225
id: run-link-check
with: {
use-quiet-mode: yes,
@@ -150,9 +175,10 @@ jobs:
steps:
- name: Checkout the repository
id: checkout
- uses: actions/checkout@v5
+ uses: actions/checkout@v7
with: {
- fetch-depth: 0
+ fetch-depth: 0,
+ persist-credentials: false
}
- name: Set up JDK 17
id: setup-java
@@ -160,22 +186,91 @@ jobs:
with: {
distribution: temurin,
java-version: '17',
- cache: maven,
- server-id: ossindex,
- server-username: OSSINDEX_USERNAME,
- server-password: OSSINDEX_API_TOKEN
+ cache: maven
}
- name: Run tests and build with Maven 17
id: build-next-java
- run: mvn --batch-mode clean package -DtrimStackTrace=false -Djava.version=17
+ run: |
+ mvn --batch-mode clean package -DtrimStackTrace=false -Djava.version=17 \
+ -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
+ -DossindexSkip=true
+ ossindex:
+ runs-on: ubuntu-latest
+ defaults:
+ run: {
+ shell: bash
+ }
+ permissions: {
+ contents: read
+ }
+ concurrency: {
+ group: '${{ github.workflow }}-ossindex-${{ github.ref }}',
+ cancel-in-progress: true
+ }
+ steps:
+ - name: Checkout the repository
+ id: checkout
+ uses: actions/checkout@v7
+ with: {
+ persist-credentials: false
+ }
+ - name: Set up JDKs
+ id: setup-java
+ uses: actions/setup-java@v5
+ with:
+ distribution: temurin
+ java-version: |-
+ 11
+ 21
+ cache: maven
+ server-id: ossindex
+ server-username: OSSINDEX_USERNAME
+ server-password: OSSINDEX_API_TOKEN
+ - name: Run Ossindex
+ id: ossindex
+ run: |
+ mvn --batch-mode test-compile \
+ org.sonatype.ossindex.maven:ossindex-maven-plugin:audit \
+ org.sonatype.ossindex.maven:ossindex-maven-plugin:audit-aggregate \
+ -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
env: {
OSSINDEX_USERNAME: '${{ secrets.OSSINDEX_USERNAME }}',
OSSINDEX_API_TOKEN: '${{ secrets.OSSINDEX_API_TOKEN }}'
}
+ lint-github-actions:
+ runs-on: ubuntu-latest
+ defaults:
+ run: {
+ shell: bash
+ }
+ permissions: {
+ security-events: write,
+ contents: read,
+ actions: read
+ }
+ concurrency: {
+ group: '${{ github.workflow }}-github-actions-linter-${{ github.ref }}',
+ cancel-in-progress: true
+ }
+ steps:
+ - name: Checkout the repository
+ id: checkout
+ uses: actions/checkout@v7
+ with: {
+ persist-credentials: false
+ }
+ - name: Lint GitHub actions with Zizmore
+ id: lint-github-actions
+ uses: zizmorcore/zizmor-action@192e21d79ab29983730a13d1382995c2307fbcaa
+ with: {
+ advanced-security: false
+ }
build:
needs: [
matrix-build,
- next-java-compatibility
+ next-java-compatibility,
+ ossindex,
+ lint-github-actions
]
runs-on: ubuntu-latest
defaults:
@@ -192,9 +287,10 @@ jobs:
steps:
- name: Checkout the repository
id: checkout
- uses: actions/checkout@v5
+ uses: actions/checkout@v7
with: {
- fetch-depth: 0
+ fetch-depth: 0,
+ persist-credentials: false
}
- name: Set up JDKs
id: setup-java
@@ -203,7 +299,7 @@ jobs:
distribution: temurin
java-version: |-
11
- 17
+ 21
cache: maven
- name: Check if release is needed
id: check-release
diff --git a/.github/workflows/dependencies_check.yml b/.github/workflows/dependencies_check.yml
index b0877fc..fa5164f 100644
--- a/.github/workflows/dependencies_check.yml
+++ b/.github/workflows/dependencies_check.yml
@@ -4,7 +4,7 @@ on:
workflow_dispatch: null
schedule:
- {
- cron: 0 2 * * *
+ cron: 42 22 * * 0
}
jobs:
report_security_issues:
@@ -25,11 +25,12 @@ jobs:
cancel-in-progress: true
}
steps:
- - {
- name: Checkout,
- id: checkout,
- uses: actions/checkout@v5
- }
+ - name: Checkout
+ id: checkout
+ uses: actions/checkout@v7
+ with: {
+ persist-credentials: false
+ }
- name: Set up JDKs
id: setup-jdks
uses: actions/setup-java@v5
@@ -37,7 +38,7 @@ jobs:
distribution: temurin
java-version: |-
11
- 17
+ 21
cache: maven
server-id: ossindex
server-username: OSSINDEX_USERNAME
@@ -55,7 +56,7 @@ jobs:
}
- name: Create GitHub Issues
id: create-security-issues
- uses: exasol/python-toolbox/.github/actions/security-issues@1.9.0
+ uses: exasol/python-toolbox/.github/actions/security-issues@10.1.0
with: {
format: maven,
command: cat ossindex-report.json,
diff --git a/.github/workflows/dependencies_update.yml b/.github/workflows/dependencies_update.yml
index 2ba2785..1986eae 100644
--- a/.github/workflows/dependencies_update.yml
+++ b/.github/workflows/dependencies_update.yml
@@ -34,10 +34,11 @@ jobs:
cancel-in-progress: false
}
steps:
- - uses: actions/checkout@v5
+ - uses: actions/checkout@v7
id: checkout
with: {
- fetch-depth: 0
+ fetch-depth: 0,
+ persist-credentials: true
}
- name: Set up JDKs
id: setup-jdks
@@ -46,7 +47,7 @@ jobs:
distribution: temurin
java-version: |-
11
- 17
+ 21
cache: maven
- name: Print issues
id: debug-print-issues
@@ -58,10 +59,14 @@ jobs:
- name: Fail if not running on a branch
id: check-branch
if: ${{ !startsWith(github.ref, 'refs/heads/') }}
- uses: actions/github-script@v8
+ uses: actions/github-script@v9
with:
script: |
- core.setFailed('Not running on a branch, github.ref is ${{ github.ref }}. Please start this workflow only on main or a branch')
+ const ref = process.env.GITHUB_REF
+ core.setFailed(`Not running on a branch, github.ref is '${ref}'. Please start this workflow only on main or a branch`)
+ env: {
+ GITHUB_REF: '${{ github.ref }}'
+ }
- name: Update dependencies
id: update-dependencies
run: |
@@ -119,7 +124,7 @@ jobs:
id: create-branch
if: ${{ github.ref == 'refs/heads/main' }}
run: |
- branch_name="dependency-update/$(date "+%Y%m%d%H%M%S")"
+ branch_name="dependency-update/$(date "+%Y-%m-%d_%H-%M-%S")"
echo "Creating branch $branch_name"
git checkout -b "$branch_name"
- name: Commit changes & push
@@ -159,7 +164,7 @@ jobs:
- name: Report failure Status to Slack channel
id: report-failure-slack
if: ${{ always() }}
- uses: ravsamhq/notify-slack-action@v2
+ uses: ravsamhq/notify-slack-action@be814b201e233b2dc673608aa46e5447c8ab13f2
with: {
status: '${{ job.status }}',
token: '${{ secrets.GITHUB_TOKEN }}',
@@ -173,7 +178,7 @@ jobs:
- name: Report new Pull Request to Slack channel
id: report-pr-slack
if: ${{ steps.create-pr.outputs.pr_url }}
- uses: ravsamhq/notify-slack-action@v2
+ uses: ravsamhq/notify-slack-action@be814b201e233b2dc673608aa46e5447c8ab13f2
with: {
status: '${{ job.status }}',
token: '${{ secrets.GITHUB_TOKEN }}',
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index dbc1ea2..515d750 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -75,9 +75,10 @@ jobs:
steps:
- name: Checkout the repository
id: checkout
- uses: actions/checkout@v5
+ uses: actions/checkout@v7
with: {
- fetch-depth: 0
+ fetch-depth: 0,
+ persist-credentials: true
}
- name: Set up Maven Central Repository
id: configure-maven-central-credentials
@@ -87,8 +88,7 @@ jobs:
distribution: temurin
java-version: |-
11
- 17
- cache: maven
+ 21
server-id: maven-central-portal
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
@@ -102,15 +102,19 @@ jobs:
distribution: temurin
java-version: |-
11
- 17
+ 21
cache: maven
- name: Fail if not running on main or release branch
id: check-main-or-release-branch
if: ${{ github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/heads/release/') }}
- uses: actions/github-script@v8
+ uses: actions/github-script@v9
with:
script: |
- core.setFailed('Not running on main or release branch, github.ref is ${{ github.ref }}. Please start this workflow only on main or a branch starting with release/')
+ const ref = process.env.GITHUB_REF
+ core.setFailed(`Not running on main or release branch, github.ref is '${ref}'. Please start this workflow only on main or a branch starting with release/`)
+ env: {
+ GITHUB_REF: '${{ github.ref }}'
+ }
- name: Check CI build of this commit succeeded
id: check-ci-build-status
if: ${{ ! inputs.started-from-ci }}
@@ -142,7 +146,7 @@ jobs:
- {
name: Build project,
id: build,
- run: mvn --batch-mode -DskipTests -Dossindex.skip=true clean verify
+ run: mvn --batch-mode -DskipTests -DossindexSkip=true clean verify
}
- {
name: List secret GPG keys,
@@ -155,7 +159,7 @@ jobs:
if: ${{ true && (! inputs.skip-maven-central) }}
run: |
echo "#### Maven Central Release" >> "$GITHUB_STEP_SUMMARY"
- mvn --batch-mode -Dgpg.skip=false -DskipTests -Dossindex.skip=true deploy \
+ mvn --batch-mode -Dgpg.skip=false -DskipTests -DossindexSkip=true deploy \
-Dcentral-publishing.deploymentName="Auto release of repo ${{ github.repository }} using PK release.yml" \
-Dcentral-publishing.autoPublish=${{ inputs.maven-central-auto-publish }}
if [[ "${{ inputs.maven-central-auto-publish }}" == "true" ]]; then
@@ -236,7 +240,7 @@ jobs:
- name: Report failure Status to Slack channel
id: report-failure-status-slack
if: ${{ always() }}
- uses: ravsamhq/notify-slack-action@v2
+ uses: ravsamhq/notify-slack-action@be814b201e233b2dc673608aa46e5447c8ab13f2
with: {
status: '${{ job.status }}',
token: '${{ github.token }}',
@@ -250,7 +254,7 @@ jobs:
- name: Report new release to Slack channel
id: report-new-release-slack
if: ${{ steps.create-github-release.outputs.release-url }}
- uses: ravsamhq/notify-slack-action@v2
+ uses: ravsamhq/notify-slack-action@be814b201e233b2dc673608aa46e5447c8ab13f2
with: {
status: '${{ job.status }}',
token: '${{ github.token }}',
diff --git a/.github/zizmor.yml b/.github/zizmor.yml
new file mode 100644
index 0000000..a8508a1
--- /dev/null
+++ b/.github/zizmor.yml
@@ -0,0 +1,33 @@
+# Generated by Project Keeper
+# https://github.com/exasol/project-keeper/blob/main/project-keeper/src/main/resources/templates/.github/zizmor.yml
+# See https://docs.zizmor.sh/configuration/#settings
+rules:
+ unpinned-uses:
+ config:
+ policies:
+ "actions/*": ref-pin
+ "exasol/python-toolbox/.github/actions/security-issues": ref-pin
+ "*": hash-pin
+ cache-poisoning:
+ ignore:
+ # Enabling caching is OK for non-release workflows
+ - ci-build.yml
+ - ci-build-native-build.yml
+ - ci-build-db-version-matrix.yml
+ - project-keeper-verify.yml
+ - test_on_windows.yml
+ - test_linux_build_on_windows.yml
+ obfuscation:
+ ignore:
+ # Generated workflows use boolean conditions like ${{ false }}
+ # Note: We cannot exclude this using inline comments because GitHubWorkflowIO does not preserve comments in the workflow YAML files.
+ - ci-build.yml
+ - release.yml
+ - project-keeper-verify.yml
+ secrets-inherit:
+ ignore:
+ # Required for passing slack webhooks
+ - ci-build.yml
+ - ci-build-db-version-matrix.yml
+ - dependencies_check.yml
+ - release.yml
diff --git a/.project-keeper.yml b/.project-keeper.yml
index ce38c53..ac567b0 100644
--- a/.project-keeper.yml
+++ b/.project-keeper.yml
@@ -6,6 +6,5 @@ sources:
- integration_tests
build:
exasolDbVersions:
- - "2025.1.3"
- - "8.29.12"
- - "7.1.30"
+ - "2026.1.0"
+ - "2025.1.13"
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 7644ed3..f5f6a72 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -122,8 +122,10 @@ org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.processAnnotations=disabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_arrows_in_switch_on_columns=false
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line=false
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
org.eclipse.jdt.core.formatter.align_with_spaces=false
@@ -151,6 +153,8 @@ org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_arrow=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_colon=0
org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
@@ -159,6 +163,7 @@ org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_permitted_types_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_record_components=16
org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
@@ -169,6 +174,7 @@ org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_switch_case_with_arrow=0
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0
@@ -194,6 +200,7 @@ org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case_after_arrow=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
@@ -213,6 +220,7 @@ org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_markdown_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
@@ -220,7 +228,8 @@ org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=120
+org.eclipse.jdt.core.formatter.comment.javadoc_do_not_separate_block_tags=false
+org.eclipse.jdt.core.formatter.comment.line_length=160
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
@@ -292,6 +301,7 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arg
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_permitted_types=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
@@ -383,6 +393,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_ar
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_permitted_types=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
@@ -446,7 +457,8 @@ org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_line_comments=false
+org.eclipse.jdt.core.formatter.join_lines_in_comments=false
org.eclipse.jdt.core.formatter.join_wrapped_lines=false
org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
@@ -466,9 +478,11 @@ org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line=one_line_never
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
-org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.lineSplit=160
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
@@ -506,5 +520,6 @@ org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_before_switch_case_arrow_operator=false
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
index 54d02ac..14b7a65 100644
--- a/.settings/org.eclipse.jdt.ui.prefs
+++ b/.settings/org.eclipse.jdt.ui.prefs
@@ -61,7 +61,7 @@ cleanup_settings_version=2
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
formatter_profile=_Exasol
-formatter_settings_version=21
+formatter_settings_version=23
org.eclipse.jdt.ui.ignorelowercasenames=true
org.eclipse.jdt.ui.importorder=java;javax;org;com;
org.eclipse.jdt.ui.ondemandthreshold=3
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 88c32cc..63c38ab 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -4,9 +4,8 @@
"source.organizeImports": "explicit",
"source.generate.finalModifiers": "explicit",
"source.fixAll": "explicit"
-},
+ },
"java.codeGeneration.useBlocks": true,
- "java.saveActions.organizeImports": true,
"java.sources.organizeImports.starThreshold": 3,
"java.sources.organizeImports.staticStarThreshold": 3,
"java.test.config": {
diff --git a/dependencies.md b/dependencies.md
index 89d950d..fc4a11d 100644
--- a/dependencies.md
+++ b/dependencies.md
@@ -3,93 +3,92 @@
## Test Dependencies
-| Dependency | License |
-| ---------------------------------------------- | -------------------------------- |
-| [Test containers for Exasol on Docker][0] | [MIT License][1] |
-| [Testcontainers :: JUnit Jupiter Extension][2] | [MIT][3] |
-| [Hamcrest][4] | [BSD-3-Clause][5] |
-| [JUnit Jupiter API][6] | [Eclipse Public License v2.0][7] |
-| [SLF4J JDK14 Provider][8] | [MIT][9] |
+| Dependency | License |
+| ----------------------------------------- | -------------------------------- |
+| [Test containers for Exasol on Docker][0] | [MIT License][1] |
+| [Hamcrest][2] | [BSD-3-Clause][3] |
+| [JUnit Jupiter API][4] | [Eclipse Public License v2.0][5] |
+| [SLF4J JDK14 Provider][6] | [MIT][7] |
## Runtime Dependencies
-| Dependency | License |
-| ------------------------ | ----------------------- |
-| [Exasol JDBC Driver][10] | [EXAClient License][11] |
+| Dependency | License |
+| ----------------------- | ---------------------- |
+| [Exasol JDBC Driver][8] | [EXAClient License][9] |
## Plugin Dependencies
-| Dependency | License |
-| ------------------------------------------------------- | ------------------------------------------- |
-| [Apache Maven Clean Plugin][12] | [Apache-2.0][13] |
-| [Apache Maven Install Plugin][14] | [Apache-2.0][13] |
-| [Apache Maven Resources Plugin][15] | [Apache-2.0][13] |
-| [Apache Maven Site Plugin][16] | [Apache-2.0][13] |
-| [SonarQube Scanner for Maven][17] | [GNU LGPL 3][18] |
-| [Apache Maven Toolchains Plugin][19] | [Apache-2.0][13] |
-| [Apache Maven Compiler Plugin][20] | [Apache-2.0][13] |
-| [Apache Maven Enforcer Plugin][21] | [Apache-2.0][13] |
-| [Maven Flatten Plugin][22] | [Apache Software License][13] |
-| [org.sonatype.ossindex.maven:ossindex-maven-plugin][23] | [ASL2][24] |
-| [Maven Surefire Plugin][25] | [Apache-2.0][13] |
-| [Versions Maven Plugin][26] | [Apache License, Version 2.0][13] |
-| [duplicate-finder-maven-plugin Maven Mojo][27] | [Apache License 2.0][28] |
-| [Apache Maven Artifact Plugin][29] | [Apache-2.0][13] |
-| [Apache Maven Deploy Plugin][30] | [Apache-2.0][13] |
-| [Apache Maven GPG Plugin][31] | [Apache-2.0][13] |
-| [Apache Maven Source Plugin][32] | [Apache License, Version 2.0][13] |
-| [Apache Maven Javadoc Plugin][33] | [Apache-2.0][13] |
-| [Central Publishing Maven Plugin][34] | [The Apache License, Version 2.0][13] |
-| [Maven Failsafe Plugin][35] | [Apache-2.0][13] |
-| [JaCoCo :: Maven Plugin][36] | [EPL-2.0][37] |
-| [Quality Summarizer Maven Plugin][38] | [MIT License][39] |
-| [error-code-crawler-maven-plugin][40] | [MIT License][41] |
-| [Git Commit Id Maven Plugin][42] | [GNU Lesser General Public License 3.0][43] |
-| [Project Keeper Maven plugin][44] | [The MIT License][45] |
+| Dependency | License |
+| ------------------------------------------------------- | ---------------------------------------------- |
+| [SonarQube Scanner for Maven][10] | [GNU LGPL 3][11] |
+| [Apache Maven Toolchains Plugin][12] | [Apache-2.0][13] |
+| [Apache Maven Compiler Plugin][14] | [Apache-2.0][13] |
+| [Apache Maven Enforcer Plugin][15] | [Apache-2.0][13] |
+| [Maven Flatten Plugin][16] | [Apache Software License][13] |
+| [org.sonatype.ossindex.maven:ossindex-maven-plugin][17] | [ASL2][18] |
+| [Maven Surefire Plugin][19] | [Apache-2.0][13] |
+| [Versions Maven Plugin][20] | [Apache License, Version 2.0][13] |
+| [duplicate-finder-maven-plugin Maven Mojo][21] | [Apache License 2.0][22] |
+| [Apache Maven Artifact Plugin][23] | [Apache-2.0][13] |
+| [Apache Maven Deploy Plugin][24] | [Apache-2.0][13] |
+| [Apache Maven Source Plugin][25] | [Apache-2.0][13] |
+| [Apache Maven Javadoc Plugin][26] | [Apache-2.0][13] |
+| [spdx-maven-plugin Maven Plugin][27] | [The Apache Software License, Version 2.0][18] |
+| [Build Helper Maven Plugin][28] | [The MIT License][29] |
+| [Apache Maven GPG Plugin][30] | [Apache-2.0][13] |
+| [Central Publishing Maven Plugin][31] | [The Apache License, Version 2.0][13] |
+| [Maven Failsafe Plugin][32] | [Apache-2.0][13] |
+| [JaCoCo :: Maven Plugin][33] | [EPL-2.0][34] |
+| [error-code-crawler-maven-plugin][35] | [MIT License][36] |
+| [Git Commit Id Maven Plugin][37] | [GNU Lesser General Public License 3.0][38] |
+| [Project Keeper Maven plugin][39] | [The MIT License][40] |
+| [Apache Maven Clean Plugin][41] | [Apache-2.0][13] |
+| [Apache Maven Resources Plugin][42] | [Apache-2.0][13] |
+| [Apache Maven Install Plugin][43] | [Apache-2.0][13] |
+| [Apache Maven Site Plugin][44] | [Apache-2.0][13] |
[0]: https://github.com/exasol/exasol-testcontainers/
[1]: https://github.com/exasol/exasol-testcontainers/blob/main/LICENSE
-[2]: https://java.testcontainers.org
-[3]: http://opensource.org/licenses/MIT
-[4]: http://hamcrest.org/JavaHamcrest/
-[5]: https://raw.githubusercontent.com/hamcrest/JavaHamcrest/master/LICENSE
-[6]: https://junit.org/
-[7]: https://www.eclipse.org/legal/epl-v20.html
-[8]: http://www.slf4j.org
-[9]: https://opensource.org/license/mit
-[10]: https://www.exasol.com/
-[11]: https://repo1.maven.org/maven2/com/exasol/exasol-jdbc/25.2.5/exasol-jdbc-25.2.5-license.txt
-[12]: https://maven.apache.org/plugins/maven-clean-plugin/
+[2]: http://hamcrest.org/JavaHamcrest/
+[3]: https://raw.githubusercontent.com/hamcrest/JavaHamcrest/master/LICENSE
+[4]: https://junit.org/
+[5]: https://www.eclipse.org/legal/epl-v20.html
+[6]: http://www.slf4j.org
+[7]: https://opensource.org/license/mit
+[8]: https://www.exasol.com/
+[9]: https://repo1.maven.org/maven2/com/exasol/exasol-jdbc/26.2.8/exasol-jdbc-26.2.8-license.txt
+[10]: https://docs.sonarsource.com/sonarqube-server/latest/extension-guide/developing-a-plugin/plugin-basics/sonar-scanner-maven/sonar-maven-plugin/
+[11]: http://www.gnu.org/licenses/lgpl.txt
+[12]: https://maven.apache.org/plugins/maven-toolchains-plugin/
[13]: https://www.apache.org/licenses/LICENSE-2.0.txt
-[14]: https://maven.apache.org/plugins/maven-install-plugin/
-[15]: https://maven.apache.org/plugins/maven-resources-plugin/
-[16]: https://maven.apache.org/plugins/maven-site-plugin/
-[17]: http://docs.sonarqube.org/display/PLUG/Plugin+Library/sonar-scanner-maven/sonar-maven-plugin
-[18]: http://www.gnu.org/licenses/lgpl.txt
-[19]: https://maven.apache.org/plugins/maven-toolchains-plugin/
-[20]: https://maven.apache.org/plugins/maven-compiler-plugin/
-[21]: https://maven.apache.org/enforcer/maven-enforcer-plugin/
-[22]: https://www.mojohaus.org/flatten-maven-plugin/
-[23]: https://sonatype.github.io/ossindex-maven/maven-plugin/
-[24]: http://www.apache.org/licenses/LICENSE-2.0.txt
-[25]: https://maven.apache.org/surefire/maven-surefire-plugin/
-[26]: https://www.mojohaus.org/versions/versions-maven-plugin/
-[27]: https://basepom.github.io/duplicate-finder-maven-plugin
-[28]: http://www.apache.org/licenses/LICENSE-2.0.html
-[29]: https://maven.apache.org/plugins/maven-artifact-plugin/
-[30]: https://maven.apache.org/plugins/maven-deploy-plugin/
-[31]: https://maven.apache.org/plugins/maven-gpg-plugin/
-[32]: https://maven.apache.org/plugins/maven-source-plugin/
-[33]: https://maven.apache.org/plugins/maven-javadoc-plugin/
-[34]: https://central.sonatype.org
-[35]: https://maven.apache.org/surefire/maven-failsafe-plugin/
-[36]: https://www.jacoco.org/jacoco/trunk/doc/maven.html
-[37]: https://www.eclipse.org/legal/epl-2.0/
-[38]: https://github.com/exasol/quality-summarizer-maven-plugin/
-[39]: https://github.com/exasol/quality-summarizer-maven-plugin/blob/main/LICENSE
-[40]: https://github.com/exasol/error-code-crawler-maven-plugin/
-[41]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE
-[42]: https://github.com/git-commit-id/git-commit-id-maven-plugin
-[43]: http://www.gnu.org/licenses/lgpl-3.0.txt
-[44]: https://github.com/exasol/project-keeper/
-[45]: https://github.com/exasol/project-keeper/blob/main/LICENSE
+[14]: https://maven.apache.org/plugins/maven-compiler-plugin/
+[15]: https://maven.apache.org/enforcer/maven-enforcer-plugin/
+[16]: https://www.mojohaus.org/flatten-maven-plugin/
+[17]: https://sonatype.github.io/ossindex-maven/maven-plugin/
+[18]: http://www.apache.org/licenses/LICENSE-2.0.txt
+[19]: https://maven.apache.org/surefire/maven-surefire-plugin/
+[20]: https://www.mojohaus.org/versions/versions-maven-plugin/
+[21]: https://basepom.github.io/duplicate-finder-maven-plugin
+[22]: http://www.apache.org/licenses/LICENSE-2.0.html
+[23]: https://maven.apache.org/plugins/maven-artifact-plugin/
+[24]: https://maven.apache.org/plugins/maven-deploy-plugin/
+[25]: https://maven.apache.org/plugins/maven-source-plugin/
+[26]: https://maven.apache.org/plugins/maven-javadoc-plugin/
+[27]: https://github.com/spdx/spdx-maven-plugin
+[28]: https://www.mojohaus.org/build-helper-maven-plugin/
+[29]: https://spdx.org/licenses/MIT.txt
+[30]: https://maven.apache.org/plugins/maven-gpg-plugin/
+[31]: https://central.sonatype.org
+[32]: https://maven.apache.org/surefire/maven-failsafe-plugin/
+[33]: https://www.jacoco.org/jacoco/trunk/doc/maven.html
+[34]: https://www.eclipse.org/legal/epl-2.0/
+[35]: https://github.com/exasol/error-code-crawler-maven-plugin/
+[36]: https://github.com/exasol/error-code-crawler-maven-plugin/blob/main/LICENSE
+[37]: https://github.com/git-commit-id/git-commit-id-maven-plugin
+[38]: http://www.gnu.org/licenses/lgpl-3.0.txt
+[39]: https://github.com/exasol/project-keeper/
+[40]: https://github.com/exasol/project-keeper/blob/main/LICENSE
+[41]: https://maven.apache.org/plugins/maven-clean-plugin/
+[42]: https://maven.apache.org/plugins/maven-resources-plugin/
+[43]: https://maven.apache.org/plugins/maven-install-plugin/
+[44]: https://maven.apache.org/plugins/maven-site-plugin/
diff --git a/doc/changes/changelog.md b/doc/changes/changelog.md
index a552e93..a4f1635 100644
--- a/doc/changes/changelog.md
+++ b/doc/changes/changelog.md
@@ -1,5 +1,6 @@
# Changes
+* [2.0.0](changes_2.0.0.md)
* [1.1.6](changes_1.1.6.md)
* [1.1.5](changes_1.1.5.md)
* [1.1.4](changes_1.1.4.md)
diff --git a/doc/changes/changes_2.0.0.md b/doc/changes/changes_2.0.0.md
new file mode 100644
index 0000000..bf57e62
--- /dev/null
+++ b/doc/changes/changes_2.0.0.md
@@ -0,0 +1,58 @@
+# Database Cleaner 2.0.0, released 2026-07-28
+
+Code name: Fixed vulnerability CVE-2026-9563 in org.eclipse.parsson:parsson:jar:1.1.7:test
+
+## Summary
+
+**Breaking Change:** Starting with this release, Exasol version 7.1 is no longer supported. We only test against the latest version and the latest LTS version.
+
+This release fixes the following vulnerability:
+
+### CVE-2026-9563 (CWE-400) in dependency `org.eclipse.parsson:parsson:jar:1.1.7:test`
+In Eclipse Parsson published Maven Central artifacts before version 1.1.8, the JSON parser did not enforce a default maximum on the number of characters consumed while parsing a single JSON document. Applications that parse attacker- controlled JSON can be forced to consume excessive CPU and memory by processing very large documents, including large arrays, objects, strings, numbers, whitespace, or nested structures, resulting in a denial of service. Eclipse Parsson 1.1.8 introduces a configurable maximum parsing limit with a default limit of 15 million parser-consumed characters.
+#### References
+* https://guide.sonatype.com/vulnerability/CVE-2026-9563?component-type=maven&component-name=org.eclipse.parsson%2Fparsson&utm_source=ossindex-client&utm_medium=integration&utm_content=1.8.1
+* http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2026-9563
+* https://github.com/eclipse-ee4j/parsson/pull/169
+* https://gitlab.eclipse.org/security/vulnerability-reports/-/work_items/444
+
+## Security
+
+* #26: Fixed vulnerability CVE-2026-9563 in dependency `org.eclipse.parsson:parsson:jar:1.1.7:test`
+
+## Bugfixes
+
+* #20: Fixed purging database when user owns a schema
+
+## Dependency Updates
+
+### Runtime Dependency Updates
+
+* Updated `com.exasol:exasol-jdbc:25.2.5` to `26.2.8`
+
+### Test Dependency Updates
+
+* Updated `com.exasol:exasol-testcontainers:7.2.0` to `8.0.1`
+* Updated `org.junit.jupiter:junit-jupiter-api:5.13.4` to `5.14.4`
+* Updated `org.slf4j:slf4j-jdk14:2.0.17` to `2.0.18`
+* Removed `org.testcontainers:testcontainers-junit-jupiter:2.0.1`
+
+### Plugin Dependency Updates
+
+* Updated `com.exasol:error-code-crawler-maven-plugin:2.0.5` to `2.1.0`
+* Updated `com.exasol:project-keeper-maven-plugin:5.4.3` to `5.7.4`
+* Removed `com.exasol:quality-summarizer-maven-plugin:0.2.1`
+* Updated `io.github.git-commit-id:git-commit-id-maven-plugin:9.0.2` to `10.0.0`
+* Updated `org.apache.maven.plugins:maven-compiler-plugin:3.14.1` to `3.15.0`
+* Updated `org.apache.maven.plugins:maven-enforcer-plugin:3.6.2` to `3.6.3`
+* Updated `org.apache.maven.plugins:maven-failsafe-plugin:3.5.4` to `3.5.6`
+* Updated `org.apache.maven.plugins:maven-resources-plugin:3.3.1` to `3.5.0`
+* Updated `org.apache.maven.plugins:maven-site-plugin:3.21.0` to `3.22.0`
+* Updated `org.apache.maven.plugins:maven-source-plugin:3.2.1` to `3.4.0`
+* Updated `org.apache.maven.plugins:maven-surefire-plugin:3.5.4` to `3.5.6`
+* Added `org.codehaus.mojo:build-helper-maven-plugin:3.6.1`
+* Updated `org.codehaus.mojo:versions-maven-plugin:2.19.1` to `2.21.0`
+* Updated `org.jacoco:jacoco-maven-plugin:0.8.14` to `0.8.15`
+* Updated `org.sonarsource.scanner.maven:sonar-maven-plugin:5.2.0.4988` to `5.7.0.6970`
+* Updated `org.sonatype.central:central-publishing-maven-plugin:0.9.0` to `0.11.0`
+* Added `org.spdx:spdx-maven-plugin:1.0.4`
diff --git a/pk_generated_parent.pom b/pk_generated_parent.pom
index 91547bd..01debad 100644
--- a/pk_generated_parent.pom
+++ b/pk_generated_parent.pom
@@ -3,7 +3,7 @@
4.0.0
com.exasol
database-cleaner-generated-parent
- 1.1.6
+ 2.0.0
pom
UTF-8
@@ -13,6 +13,7 @@
exasol
https://sonarcloud.io
+ false
true
false
false
@@ -41,31 +42,45 @@
+
+
+
+ org.apache.maven.plugins
+ maven-clean-plugin
+ 3.5.0
+
+
+ org.apache.maven.plugins
+ maven-install-plugin
+ 3.1.4
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 3.5.0
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 3.22.0
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 3.6.3
+
+
+ true
+
+
+
+
+
-
- org.apache.maven.plugins
- maven-clean-plugin
- 3.5.0
-
-
- org.apache.maven.plugins
- maven-install-plugin
- 3.1.4
-
-
- org.apache.maven.plugins
- maven-resources-plugin
- 3.3.1
-
-
- org.apache.maven.plugins
- maven-site-plugin
- 3.21.0
-
org.sonarsource.scanner.maven
sonar-maven-plugin
- 5.2.0.4988
+ 5.7.0.6970
org.apache.maven.plugins
@@ -89,10 +104,9 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.14.1
+ 3.15.0
- ${java.version}
- ${java.version}
+ ${java.version}
true
-Xlint:all
@@ -103,7 +117,7 @@
org.apache.maven.plugins
maven-enforcer-plugin
- 3.6.2
+ 3.6.3
enforce-maven
@@ -154,6 +168,8 @@
3.2.0
ossindex
+
+ ${ossindexSkip}
@@ -168,18 +184,23 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.4
+ 3.5.6
-
- -Djava.util.logging.config.file=src/test/resources/logging.properties ${argLine}
+ ${argLine}
+
+ true
+
+
+
+ src/test/resources/logging.properties
+
${test.excludeTags}
org.codehaus.mojo
versions-maven-plugin
- 2.19.1
+ 2.21.0
display-updates
@@ -253,33 +274,10 @@
true
-
- org.apache.maven.plugins
- maven-gpg-plugin
- 3.2.8
-
-
- sign-artifacts
- verify
-
- sign
-
-
-
- --pinentry-mode
- loopback
-
-
-
-
-
org.apache.maven.plugins
maven-source-plugin
-
- 3.2.1
+ 3.4.0
attach-sources
@@ -303,18 +301,93 @@
UTF-8
+ en
true
true
true
true
- ${java.version}
+ ${java.version}
+ true
+
+
+
+
+ org.spdx
+ spdx-maven-plugin
+ 1.0.4
+
+
+ build-spdx
+ package
+
+ createSPDX
+
+
+
+
+ build
+
+ true
+ true
+ true
+ true
+ false
+ false
+ Copyright (c) Exasol
+ false
+ JSON-LD
+ ${project.build.directory}/site/${project.groupId}.${project.artifactId}-${project.version}.spdx3.json
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 3.6.1
+
+
+ attach-spdx-sbom
+ package
+
+ attach-artifact
+
+
+
+
+ ${project.build.directory}/site/${project.groupId}.${project.artifactId}-${project.version}.spdx3.json
+ spdx
+ sbom
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 3.2.8
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+ --pinentry-mode
+ loopback
+
+
+
+
+
org.sonatype.central
central-publishing-maven-plugin
- 0.9.0
+ 0.11.0
true
maven-central-portal
@@ -328,11 +401,16 @@
org.apache.maven.plugins
maven-failsafe-plugin
- 3.5.4
+ 3.5.6
-
- -Djava.util.logging.config.file=src/test/resources/logging.properties ${argLine}
-
+ ${argLine}
+
+ true
+
+
+
+ src/test/resources/logging.properties
+
${test.excludeTags}
@@ -348,7 +426,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.14
+ 0.8.15
prepare-agent
@@ -386,23 +464,10 @@
-
- com.exasol
- quality-summarizer-maven-plugin
- 0.2.1
-
-
- summarize-metrics
-
- summarize
-
-
-
-
com.exasol
error-code-crawler-maven-plugin
- 2.0.5
+ 2.1.0
verify
@@ -415,7 +480,7 @@
io.github.git-commit-id
git-commit-id-maven-plugin
- 9.0.2
+ 10.0.0
get-the-git-infos
diff --git a/pom.xml b/pom.xml
index ca8a5e2..2b9a0aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.exasol
database-cleaner
- 1.1.6
+ 2.0.0
database-cleaner
Tool that deletes all objects in an Exasol database
https://github.com/exasol/database-cleaner/
@@ -11,13 +11,13 @@
com.exasol
exasol-jdbc
- 25.2.5
+ 26.2.8
runtime
com.exasol
exasol-testcontainers
- 7.2.0
+ 8.0.1
test
@@ -26,12 +26,6 @@
-
- org.testcontainers
- testcontainers-junit-jupiter
- 2.0.1
- test
-
org.hamcrest
hamcrest
@@ -42,33 +36,23 @@
org.junit.jupiter
junit-jupiter-api
- 5.13.4
+ 5.14.4
test
org.slf4j
slf4j-jdk14
- 2.0.17
+ 2.0.18
test
-
- org.sonatype.ossindex.maven
- ossindex-maven-plugin
-
-
-
- CVE-2024-55551
-
-
-
com.exasol
project-keeper-maven-plugin
- 5.4.3
+ 5.7.4
@@ -82,7 +66,7 @@
database-cleaner-generated-parent
com.exasol
- 1.1.6
+ 2.0.0
pk_generated_parent.pom
diff --git a/src/test/java/com/exasol/dbcleaner/ExasolDatabaseCleanerIT.java b/src/test/java/com/exasol/dbcleaner/ExasolDatabaseCleanerIT.java
index e1f6547..99a5712 100644
--- a/src/test/java/com/exasol/dbcleaner/ExasolDatabaseCleanerIT.java
+++ b/src/test/java/com/exasol/dbcleaner/ExasolDatabaseCleanerIT.java
@@ -6,16 +6,12 @@
import java.sql.Statement;
import org.junit.jupiter.api.*;
-import org.testcontainers.junit.jupiter.Container;
-import org.testcontainers.junit.jupiter.Testcontainers;
import com.exasol.containers.ExasolContainer;
-@Testcontainers
class ExasolDatabaseCleanerIT {
- @Container
- @SuppressWarnings("resource") // Will be closed by @Container annotation
+ @SuppressWarnings("resource") // Will be closed in stopContainer()
private static final ExasolContainer extends ExasolContainer>> CONTAINER = new ExasolContainer<>()
.withReuse(true);
private static Statement statement;
@@ -23,11 +19,18 @@ class ExasolDatabaseCleanerIT {
@BeforeAll
static void beforeAll() throws SQLException {
+ CONTAINER.start();
statement = CONTAINER.createConnectionForUser(CONTAINER.getUsername(), CONTAINER.getPassword())
.createStatement();
cleaner = new ExasolDatabaseCleaner(statement);
}
+ @AfterAll
+ static void stopContainer() throws SQLException {
+ statement.close();
+ CONTAINER.stop();
+ }
+
@AfterEach
void after() throws SQLException {
cleaner.cleanDatabase();
@@ -85,6 +88,13 @@ void testPurgeFunctionWithNonImplicitSchemaName() throws SQLException {
assertDoesNotThrow(() -> createFunction("S1"));
}
+ @Test
+ void testPurgeSchemaOwnedByDifferentUser() throws SQLException {
+ createDbaUserWithSchemaAndTable();
+ cleaner.cleanDatabase();
+ assertDoesNotThrow(this::createDbaUserWithSchemaAndTable);
+ }
+
private void createFunction(final String schemaName) throws SQLException {
statement.executeUpdate("CREATE SCHEMA " + schemaName + ";");
statement.executeUpdate("CREATE FUNCTION " + schemaName
@@ -110,4 +120,15 @@ private void createTable() throws SQLException {
private void createConnection() throws SQLException {
statement.executeUpdate("CREATE CONNECTION exa_connection TO '192.168.6.11:8563';");
}
+
+ private void createDbaUserWithSchemaAndTable() throws SQLException {
+ statement.executeUpdate("CREATE USER other_user IDENTIFIED BY \"h12_xhz\"");
+ statement.executeUpdate("GRANT DBA TO other_user");
+ try (Statement otherStatement = CONTAINER.createConnectionForUser("other_user", "h12_xhz")
+ .createStatement()) {
+ otherStatement.executeUpdate("CREATE SCHEMA OTHER_SCHEMA;");
+ otherStatement.executeUpdate(
+ "CREATE TABLE OTHER_SCHEMA.T1 (ID INT);");
+ }
+ }
}