From f88f465c420152720da6678056499cbabeeb6823 Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Fri, 1 Aug 2025 15:57:35 +0200 Subject: [PATCH 1/3] Upgrade to Metabase 0.52 --- .github/workflows/ci-build.yml | 2 +- .github/workflows/integration-tests.yml | 2 +- ...ase_droid_upload_github_release_assets.yml | 2 +- deps.edn | 2 +- doc/changes/changes_1.0.9.md | 6 +-- doc/developer_guide/developer_guide.md | 2 +- doc/user_guide/user_guide.md | 2 +- scripts/exclude_tests.diff | 47 +++++++++---------- 8 files changed, 31 insertions(+), 34 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 8ac153f..a40b688 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -15,7 +15,7 @@ jobs: cancel-in-progress: true runs-on: ubuntu-latest env: - METABASE_TAG: v0.51.9.5 + METABASE_TAG: v0.52.17.1 steps: - name: Checkout the repository uses: actions/checkout@v4 diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index d82171d..fde0237 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -19,7 +19,7 @@ jobs: name: "Build with Exasol ${{ matrix.exasol_version }}" runs-on: ubuntu-latest env: - METABASE_TAG: v0.51.9.5 + METABASE_TAG: v0.52.17.1 steps: - name: Free Disk Space run: | diff --git a/.github/workflows/release_droid_upload_github_release_assets.yml b/.github/workflows/release_droid_upload_github_release_assets.yml index 52c3b17..f1ca306 100644 --- a/.github/workflows/release_droid_upload_github_release_assets.yml +++ b/.github/workflows/release_droid_upload_github_release_assets.yml @@ -11,7 +11,7 @@ jobs: build: runs-on: ubuntu-latest env: - METABASE_TAG: v0.51.9.5 + METABASE_TAG: v0.52.17.1 steps: - name: Checkout the repository uses: actions/checkout@v4 diff --git a/deps.edn b/deps.edn index baa4d5c..a3f5227 100644 --- a/deps.edn +++ b/deps.edn @@ -11,7 +11,7 @@ :aliases {:dev {:extra-deps - {io.github.metabase/metabase {:git/tag "v0.51.9.5" :git/sha "0ca7df3"}}} + {io.github.metabase/metabase {:git/tag "v0.52.17.1" :git/sha "0ca7df3"}}} ; clojure -M:clj-kondo --lint src test --debug :clj-kondo diff --git a/doc/changes/changes_1.0.9.md b/doc/changes/changes_1.0.9.md index e13b7fb..b4360c4 100644 --- a/doc/changes/changes_1.0.9.md +++ b/doc/changes/changes_1.0.9.md @@ -1,11 +1,11 @@ # metabase-driver 1.0.9, released 2025-08-?? -Code name: Upgrade to Metabase v0.51.9.5 +Code name: Upgrade to Metabase v0.52.17.1 ## Summary -This release adapts the driver to Metabase v0.51.9.5. +This release adapts the driver to Metabase v0.52.17.1. ## Features -* #84: Upgraded to Metabase v0.51.9.5 +* #84: Upgraded to Metabase v0.52.17.1 diff --git a/doc/developer_guide/developer_guide.md b/doc/developer_guide/developer_guide.md index 66fce42..40c8540 100644 --- a/doc/developer_guide/developer_guide.md +++ b/doc/developer_guide/developer_guide.md @@ -54,7 +54,7 @@ If this reports another Java version, update `JAVA_HOME` and check again. ```sh export METABASE_DIR=$HOME/git/metabase - export METABASE_VERSION=v0.51.9.5 + export METABASE_VERSION=v0.52.17.1 git clone https://github.com/metabase/metabase.git $METABASE_DIR git -C $METABASE_DIR fetch --all --tags git -C $METABASE_DIR reset --hard diff --git a/doc/user_guide/user_guide.md b/doc/user_guide/user_guide.md index b776af3..7beec93 100644 --- a/doc/user_guide/user_guide.md +++ b/doc/user_guide/user_guide.md @@ -24,7 +24,7 @@ Metabase Version | Exasol Metabase Driver Version -----------------|------------------------------- v0.48.0 | 1.0.7 v0.50.36 | 1.0.8 -v0.51.9.5 | 1.0.9 +v0.52.17.1 | 1.0.9 ### Upgrading the Driver diff --git a/scripts/exclude_tests.diff b/scripts/exclude_tests.diff index ad793a2..143bb52 100644 --- a/scripts/exclude_tests.diff +++ b/scripts/exclude_tests.diff @@ -1,5 +1,5 @@ diff --git a/test/metabase/api/database_test.clj b/test/metabase/api/database_test.clj -index c07bf34a84..92de61572a 100644 +index 58b6e27b46..9eb9d0c7fe 100644 --- a/test/metabase/api/database_test.clj +++ b/test/metabase/api/database_test.clj @@ -474,31 +474,7 @@ @@ -35,7 +35,7 @@ index c07bf34a84..92de61572a 100644 (deftest update-database-test-2 (testing "PUT /api/database/:id" -@@ -1442,33 +1418,7 @@ +@@ -1463,33 +1439,7 @@ (with-redefs [h2/*allow-testing-h2-connections* true] (#'api.database/test-connection-details engine details))) @@ -90,10 +90,10 @@ index 45a53762a8..e71a56f098 100644 (deftest ^:parallel only-connect-when-non-malicious-properties (testing "Reject connection strings with malicious properties" diff --git a/test/metabase/driver/sql_jdbc/connection_test.clj b/test/metabase/driver/sql_jdbc/connection_test.clj -index 640f44499a..25218c6652 100644 +index 6ccfcdaa03..38e78134b4 100644 --- a/test/metabase/driver/sql_jdbc/connection_test.clj +++ b/test/metabase/driver/sql_jdbc/connection_test.clj -@@ -118,6 +118,9 @@ +@@ -119,6 +119,9 @@ :redshift (assoc details :additional-options "defaultRowFetchSize=1000") @@ -104,16 +104,17 @@ index 640f44499a..25218c6652 100644 (assoc details :log-level 0) diff --git a/test/metabase/driver_test.clj b/test/metabase/driver_test.clj -index 823944f5a9..bd6e12d4a1 100644 +index b402f26f6b..b8faae76f2 100644 --- a/test/metabase/driver_test.clj +++ b/test/metabase/driver_test.clj -@@ -83,82 +83,9 @@ - :field-definitions [{:field-name "foo", :base-type :type/Text}] - :rows [["bar"]]}]})) +@@ -89,79 +89,9 @@ + [_driver _feature _database] + true)) -(deftest can-connect-with-destroy-db-test - (testing "driver/can-connect? should fail or throw after destroying a database" -- (mt/test-drivers (mt/normal-drivers-with-feature :test/dynamic-dataset-loading) +- (mt/test-drivers (set/difference (mt/normal-drivers-with-feature :test/dynamic-dataset-loading) +- (mt/normal-drivers-with-feature :test/creates-db-on-connect)) - (let [database-name (mt/random-name) - dbdef (basic-db-definition database-name)] - (mt/dataset dbdef @@ -127,10 +128,8 @@ index 823944f5a9..bd6e12d4a1 100644 - (testing "after deleting a database, can-connect? should return false or throw an exception" - (let [;; in the case of some cloud databases, the test database is never created, and can't or shouldn't be destroyed. - ;; so fake it by changing the database details -- details (case driver/*driver* -- (:redshift :snowfake :vertica) (assoc details :db (mt/random-name)) -- :oracle (assoc details :service-name (mt/random-name)) -- :presto-jdbc (assoc details :catalog (mt/random-name)) +- details (if (driver/database-supports? driver/*driver* :test/cannot-destroy-db (mt/db)) +- (merge details (tx/bad-connection-details driver/*driver*)) - ;; otherwise destroy the db and use the original details - (do - (tx/destroy-db! driver/*driver* dbdef) @@ -146,7 +145,8 @@ index 823944f5a9..bd6e12d4a1 100644 -(deftest check-can-connect-before-sync-test - (testing "Database sync should short-circuit and fail if the database at the connection has been deleted (metabase#7526)" -- (mt/test-drivers (mt/normal-drivers-with-feature :test/dynamic-dataset-loading) +- (mt/test-drivers (set/difference (mt/normal-drivers-with-feature :test/dynamic-dataset-loading) +- (mt/normal-drivers-with-feature :test/creates-db-on-connect)) - (let [database-name (mt/random-name) - dbdef (basic-db-definition database-name)] - (mt/dataset dbdef @@ -170,14 +170,11 @@ index 823944f5a9..bd6e12d4a1 100644 - ;; release db resources like connection pools so we don't have to wait to finish syncing before destroying the db - (driver/notify-database-updated driver/*driver* db) - ;; destroy the db -- (if (contains? #{:redshift :snowflake :vertica :presto-jdbc :oracle} driver/*driver*) +- (if (driver/database-supports? driver/*driver* :test/cannot-destroy-db (mt/db)) - ;; in the case of some cloud databases, the test database is never created, and can't or shouldn't be destroyed. - ;; so fake it by changing the database details - (let [details (:details (mt/db)) -- new-details (case driver/*driver* -- (:redshift :snowflake :vertica) (assoc details :db (mt/random-name)) -- :oracle (assoc details :service-name (mt/random-name)) -- :presto-jdbc (assoc details :catalog (mt/random-name)))] +- new-details (merge details (tx/bad-connection-details driver/*driver*))] - (t2/update! :model/Database (u/the-id db) {:details new-details})) - ;; otherwise destroy the db and use the original details - (tx/destroy-db! driver/*driver* dbdef)) @@ -229,7 +226,7 @@ index b78d1df0dd..beb3f1fbff 100644 (deftest ^:parallel validate-source-table-test (testing "Should throw an Exception if there's a `:source-table` in the query that IS NOT a positive int" diff --git a/test/metabase/query_processor_test/alternative_date_test.clj b/test/metabase/query_processor_test/alternative_date_test.clj -index 3eec93581c..ae0e465211 100644 +index 0e094d07dc..6285ddfbd3 100644 --- a/test/metabase/query_processor_test/alternative_date_test.clj +++ b/test/metabase/query_processor_test/alternative_date_test.clj @@ -294,19 +294,8 @@ @@ -322,10 +319,10 @@ index 507902de93..71d4127d25 100644 (def ^:private charsets {:ascii (into (vec (for [i (range 26)] diff --git a/test/metabase/query_processor_test/parameters_test.clj b/test/metabase/query_processor_test/parameters_test.clj -index fa4eca2656..2912387029 100644 +index d499734e8d..0724fa20fd 100644 --- a/test/metabase/query_processor_test/parameters_test.clj +++ b/test/metabase/query_processor_test/parameters_test.clj -@@ -396,23 +396,8 @@ +@@ -401,23 +401,8 @@ [_driver _feature _database] false)) @@ -403,14 +400,14 @@ index 6e7735e452..fd4e96119a 100644 - (sort-by :name))))))))))))) +; Test sync-fks-and-fields-test fails unrelated to Exasol. diff --git a/test/metabase/test/initialize.clj b/test/metabase/test/initialize.clj -index f9b32da937..0cb97eda18 100644 +index 7106a60a9b..a489b306e3 100644 --- a/test/metabase/test/initialize.clj +++ b/test/metabase/test/initialize.clj -@@ -22,7 +22,7 @@ +@@ -23,7 +23,7 @@ (str/join "\n" [border body border]) "\n"))))) --(def ^:private init-timeout-ms (u/seconds->ms 60)) +-(def ^:private init-timeout-ms (u/seconds->ms 90)) +(def ^:private init-timeout-ms (u/seconds->ms 120)) ; Integration tests fail on GitHub Action with a timeout (def ^:private ^:dynamic *initializing* From 1fa63940a304282823b3cbdcc1fce608db3f6451 Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Fri, 1 Aug 2025 16:03:44 +0200 Subject: [PATCH 2/3] Fix formatting --- doc/user_guide/user_guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/user_guide/user_guide.md b/doc/user_guide/user_guide.md index 7beec93..582c266 100644 --- a/doc/user_guide/user_guide.md +++ b/doc/user_guide/user_guide.md @@ -24,7 +24,7 @@ Metabase Version | Exasol Metabase Driver Version -----------------|------------------------------- v0.48.0 | 1.0.7 v0.50.36 | 1.0.8 -v0.52.17.1 | 1.0.9 +v0.52.17.1 | 1.0.9 ### Upgrading the Driver From 812aa651420c1469ad6ab4b7b5f9124f4b433ea1 Mon Sep 17 00:00:00 2001 From: Christoph Pirkl Date: Fri, 1 Aug 2025 16:05:16 +0200 Subject: [PATCH 3/3] Cleanup exclusions --- scripts/exclude_tests.diff | 86 ---------------------------------- src/metabase/driver/exasol.clj | 3 +- 2 files changed, 2 insertions(+), 87 deletions(-) diff --git a/scripts/exclude_tests.diff b/scripts/exclude_tests.diff index 143bb52..8caa1ad 100644 --- a/scripts/exclude_tests.diff +++ b/scripts/exclude_tests.diff @@ -103,92 +103,6 @@ index 6ccfcdaa03..38e78134b4 100644 :databricks (assoc details :log-level 0) -diff --git a/test/metabase/driver_test.clj b/test/metabase/driver_test.clj -index b402f26f6b..b8faae76f2 100644 ---- a/test/metabase/driver_test.clj -+++ b/test/metabase/driver_test.clj -@@ -89,79 +89,9 @@ - [_driver _feature _database] - true)) - --(deftest can-connect-with-destroy-db-test -- (testing "driver/can-connect? should fail or throw after destroying a database" -- (mt/test-drivers (set/difference (mt/normal-drivers-with-feature :test/dynamic-dataset-loading) -- (mt/normal-drivers-with-feature :test/creates-db-on-connect)) -- (let [database-name (mt/random-name) -- dbdef (basic-db-definition database-name)] -- (mt/dataset dbdef -- (let [db (mt/db) -- details (tx/dbdef->connection-details driver/*driver* :db dbdef)] -- (testing "can-connect? should return true before deleting the database" -- (is (true? (binding [h2/*allow-testing-h2-connections* true] -- (driver/can-connect? driver/*driver* details))))) -- ;; release db resources like connection pools so we don't have to wait to finish syncing before destroying the db -- (driver/notify-database-updated driver/*driver* db) -- (testing "after deleting a database, can-connect? should return false or throw an exception" -- (let [;; in the case of some cloud databases, the test database is never created, and can't or shouldn't be destroyed. -- ;; so fake it by changing the database details -- details (if (driver/database-supports? driver/*driver* :test/cannot-destroy-db (mt/db)) -- (merge details (tx/bad-connection-details driver/*driver*)) -- ;; otherwise destroy the db and use the original details -- (do -- (tx/destroy-db! driver/*driver* dbdef) -- details))] -- (is (false? (try -- (binding [h2/*allow-testing-h2-connections* true] -- (driver/can-connect? driver/*driver* details)) -- (catch Exception _ -- false)))))) -- ;; clean up the database -- (t2/delete! :model/Database (u/the-id db)))))))) -+; Test can-connect-with-destroy-db-test fails unrelated to Exasol - --(deftest check-can-connect-before-sync-test -- (testing "Database sync should short-circuit and fail if the database at the connection has been deleted (metabase#7526)" -- (mt/test-drivers (set/difference (mt/normal-drivers-with-feature :test/dynamic-dataset-loading) -- (mt/normal-drivers-with-feature :test/creates-db-on-connect)) -- (let [database-name (mt/random-name) -- dbdef (basic-db-definition database-name)] -- (mt/dataset dbdef -- (let [db (mt/db) -- cant-sync-logged? (fn [] -- (mt/with-log-messages-for-level [messages :warn] -- (#'task.sync-databases/sync-and-analyze-database*! (u/the-id db)) -- (some? -- (some -- (fn [{:keys [level e message]}] -- (and (= level :warn) -- (instance? clojure.lang.ExceptionInfo e) -- (re-matches #"^Cannot sync Database ([\s\S]+): ([\s\S]+)" message))) -- (messages)))))] -- (testing "sense checks before deleting the database" -- (testing "sense check 1: sync-and-analyze-database! should not log a warning" -- (is (false? (cant-sync-logged?)))) -- (testing "sense check 2: triggering the sync via the POST /api/database/:id/sync_schema endpoint should succeed" -- (is (= {:status "ok"} -- (mt/user-http-request :crowberto :post 200 (str "/database/" (u/the-id db) "/sync_schema")))))) -- ;; release db resources like connection pools so we don't have to wait to finish syncing before destroying the db -- (driver/notify-database-updated driver/*driver* db) -- ;; destroy the db -- (if (driver/database-supports? driver/*driver* :test/cannot-destroy-db (mt/db)) -- ;; in the case of some cloud databases, the test database is never created, and can't or shouldn't be destroyed. -- ;; so fake it by changing the database details -- (let [details (:details (mt/db)) -- new-details (merge details (tx/bad-connection-details driver/*driver*))] -- (t2/update! :model/Database (u/the-id db) {:details new-details})) -- ;; otherwise destroy the db and use the original details -- (tx/destroy-db! driver/*driver* dbdef)) -- (testing "after deleting a database, sync should fail" -- (testing "1: sync-and-analyze-database! should log a warning and fail early" -- (is (true? (cant-sync-logged?)))) -- (testing "2: triggering the sync via the POST /api/database/:id/sync_schema endpoint should fail" -- (mt/user-http-request :crowberto :post 422 (str "/database/" (u/the-id db) "/sync_schema")))) -- ;; clean up the database -- (t2/delete! :model/Database (u/the-id db)))))))) -+; Test check-can-connect-before-sync-test fails unrelated to Exasol - - (deftest supports-table-privileges-matches-implementations-test - (mt/test-drivers (mt/normal-drivers-with-feature :table-privileges) diff --git a/test/metabase/query_processor/middleware/format_rows_test.clj b/test/metabase/query_processor/middleware/format_rows_test.clj index 5978ac13ed..20f7624d29 100644 --- a/test/metabase/query_processor/middleware/format_rows_test.clj diff --git a/src/metabase/driver/exasol.clj b/src/metabase/driver/exasol.clj index e13d2f1..b2f69a7 100644 --- a/src/metabase/driver/exasol.clj +++ b/src/metabase/driver/exasol.clj @@ -65,7 +65,8 @@ :metadata/keys-constraints true :describe-fks true :test/time-type false - :test/timestamptz-type false}] + :test/timestamptz-type false + :test/cannot-destroy-db false}] (defmethod driver/database-supports? [:exasol feature] [_ _ _] supported?)) (defmethod sql.qp/quote-style :exasol