Skip to content

Commit a7bc1dd

Browse files
committed
Upgrade to Metabase 1.52
Upgrade to Metabase 1.52
1 parent 3be06fb commit a7bc1dd

File tree

10 files changed

+178
-91
lines changed

10 files changed

+178
-91
lines changed

.github/actions/init-dependencies/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ inputs:
2020
node-version:
2121
description: "Node version to setup"
2222
required: false
23-
default: "16.x"
23+
default: "18.x"
2424
clojure-version:
2525
description: "Clojure version to setup"
2626
required: true

.github/workflows/ci.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ jobs:
4949
java-version: ${{ matrix.runners.java_version }}
5050
java-architecture: ${{ matrix.runners.architecture }}
5151
clojure-version: ${{ env.CLOJURE_VERSION }}
52+
- name: Initialize Metabase
53+
run: |
54+
cd metabase |
55+
yarn build-static-viz |
56+
cd ..
5257
- name: Build
5358
run: |
5459
make build

Makefile

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,80 +11,82 @@ trino_port := 8082
1111
is_trino_started := $(shell curl --fail --silent --insecure http://localhost:$(trino_port)/v1/info | jq '.starting')
1212

1313
clone_metabase_if_missing:
14-
ifeq ($(wildcard $(makefile_dir)/metabase/.),)
14+
ifeq ($(wildcard $(makefile_dir)metabase/.),)
1515
@echo "Did not find metabase repo, cloning version $(metabase_version)..."; git clone -b $(metabase_version) --depth 1 https://github.com/metabase/metabase.git
1616
else
1717
@echo "Found metabase repo, skipping initialization."
1818
endif
1919

2020
checkout_latest_metabase_tag: clone_metabase_if_missing clean
21-
cd $(makefile_dir)/metabase; git fetch --all --tags;
22-
$(eval latest_metabase_version=$(shell cd $(makefile_dir)/metabase; git tag | egrep 'v[0-9]+\.[0-9]+\.[0-9]+' | sort | tail -n 1))
21+
cd $(makefile_dir)metabase; git fetch --all --tags;
22+
$(eval latest_metabase_version=$(shell cd $(makefile_dir)metabase; git tag | egrep 'v[0-9]+\.[0-9]+\.[0-9]+' | sort | tail -n 1))
2323
@echo "Checking out latest metabase tag: $(latest_metabase_version)"
24-
cd $(makefile_dir)/metabase/modules/drivers && git checkout $(latest_metabase_version);
24+
cd $(makefile_dir)metabase/modules/drivers && git checkout $(latest_metabase_version);
2525
sed -i.bak 's/metabase\": \".*\"/metabase\": \"$(latest_metabase_version)\"/g' app_versions.json; rm ./app_versions.json.bak
2626

2727
start_trino_if_missing:
2828
ifeq ($(is_trino_started),)
2929
@echo "Trino not started, starting using version $(trino_version)...";
30-
cd $(makefile_dir)/resources/docker/trino; docker build -t trino-metabase-test . --build-arg version=$(trino_version); docker run --rm -d -p $(trino_port):8080/tcp trino-metabase-test:latest
30+
cd $(makefile_dir)resources/docker/trino; docker build -t trino-metabase-test . --build-arg version=$(trino_version); docker run --rm -d -p $(trino_port):8080/tcp trino-metabase-test:latest
3131
else
3232
@echo "Trino started, skipping initialization."
3333
endif
3434

3535
clean:
3636
@echo "Force cleaning Metabase repo..."
37-
cd $(makefile_dir)/metabase/modules/drivers && git reset --hard && git clean -f
37+
cd $(makefile_dir)metabase/modules/drivers && git reset --hard && git clean -f
3838
@echo "Checking out metabase at: $(metabase_version)"
39-
cd $(makefile_dir)/metabase/modules/drivers && git fetch --all --tags && git checkout $(metabase_version);
39+
cd $(makefile_dir)metabase/modules/drivers && git fetch --all --tags && git checkout $(metabase_version);
4040

4141
link_to_driver:
42-
ifeq ($(wildcard $(makefile_dir)/metabase/modules/drivers/starburst/src),)
43-
@echo "Adding link to driver..."; ln -s ../../../drivers/starburst $(makefile_dir)/metabase/modules/drivers
42+
ifeq ($(wildcard $(makefile_dir)metabase/modules/drivers/starburst/src),)
43+
@echo "Adding link to driver..."; ln -s ../../../drivers/starburst $(makefile_dir)metabase/modules/drivers
4444
else
4545
@echo "Driver found, skipping linking."
4646
endif
4747

4848

4949
front_end:
5050
@echo "Building Front End..."
51-
cd $(makefile_dir)/metabase/; export WEBPACK_BUNDLE=production && yarn build-release && yarn build-static-viz
51+
cd $(makefile_dir)metabase && yarn build-static-viz && \
52+
export WEBPACK_BUNDLE=production && yarn build-release && yarn build-static-viz
5253

5354
driver: update_deps_files
5455
@echo "Building Starburst driver..."
55-
cd $(makefile_dir)/metabase/; ./bin/build-driver.sh starburst
56+
cd $(makefile_dir)metabase/; ./bin/build-driver.sh starburst
5657

5758
server:
5859
@echo "Starting metabase..."
59-
cd $(makefile_dir)/metabase/; clojure -M:run
60+
cd $(makefile_dir)metabase/; clojure -M:run
6061

6162
# This command adds the require starburst driver dependencies to the metabase repo.
6263
update_deps_files:
63-
@if cd $(makefile_dir)/metabase && grep -q starburst deps.edn; \
64+
@if cd $(makefile_dir)metabase && grep -q starburst deps.edn; \
6465
then \
6566
echo "Metabase deps file updated, skipping..."; \
6667
else \
6768
echo "Updating metabase deps file..."; \
68-
cd $(makefile_dir)/metabase/; sed -i.bak 's/\/test\"\]\}/\/test\" \"modules\/drivers\/starburst\/test\"\]\}/g' deps.edn; \
69+
cd $(makefile_dir)metabase/; sed -i.bak 's/\/test\"\]\}/\/test\" \"modules\/drivers\/starburst\/test\"\]\}/g' deps.edn; \
6970
fi
7071

71-
@if cd $(makefile_dir)/metabase/modules/drivers && grep -q starburst deps.edn; \
72+
@if cd $(makefile_dir)metabase/modules/drivers && grep -q starburst deps.edn; \
7273
then \
7374
echo "Metabase driver deps file updated, skipping..."; \
7475
else \
7576
echo "Updating metabase driver deps file..."; \
76-
cd $(makefile_dir)/metabase/modules/drivers/; sed -i.bak "s/\}\}\}/\} \metabase\/starburst \{:local\/root \"starburst\"\}\}\}/g" deps.edn; \
77+
cd $(makefile_dir)metabase/modules/drivers/; sed -i.bak "s/\}\}\}/\} \metabase\/starburst \{:local\/root \"starburst\"\}\}\}/g" deps.edn; \
7778
fi
7879

7980
test: start_trino_if_missing link_to_driver update_deps_files
8081
@echo "Testing Starburst driver..."
81-
cd $(makefile_dir)/metabase/; DRIVERS=starburst MB_STARBURST_TEST_PORT=$(trino_port) clojure -X:dev:drivers:drivers-dev:test
82+
cp test_test.clj ./metabase/.clj-kondo/test/hooks/clojure/
83+
cd $(makefile_dir)metabase/; DRIVERS=starburst MB_STARBURST_TEST_PORT=$(trino_port) clojure -X:dev:drivers:drivers-dev:test
8284

8385
testOptimized: start_trino_if_missing link_to_driver update_deps_files
8486
@echo "Testing Starburst driver (explicitPrepare=true)..."
85-
cd $(makefile_dir)/metabase/; DRIVERS=starburst MB_STARBURST_TEST_PORT=$(trino_port) clojure -J-DexplicitPrepare=false -X:dev:drivers:drivers-dev:test
87+
cd $(makefile_dir)metabase/; DRIVERS=starburst MB_STARBURST_TEST_PORT=$(trino_port) clojure -J-DexplicitPrepare=false -X:dev:drivers:drivers-dev:test
8688

8789
build: clone_metabase_if_missing update_deps_files link_to_driver front_end driver
8890

8991
docker-image:
90-
cd $(makefile_dir)/metabase/; export MB_EDITION=ee && ./bin/build.sh && mv target/uberjar/metabase.jar bin/docker/ && docker build -t metabase-dev --build-arg MB_EDITION=ee ./bin/docker/
92+
cd $(makefile_dir)metabase/; export MB_EDITION=ee && ./bin/build.sh && mv target/uberjar/metabase.jar bin/docker/ && docker build -t metabase-dev --build-arg MB_EDITION=ee ./bin/docker/

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ build our `.jar` file into the correct dir, run tests, and start the local serve
1919
* [Clojure](https://clojure.org/guides/install_clojure)
2020
* [jq](https://stedolan.github.io/jq/download/)
2121
* [Metabase Prerequisites](https://www.metabase.com/docs/latest/developers-guide/build#install-the-prerequisites)
22+
* JDK 8 to 21. **JDK 22 will not work**
2223

2324
##### Quick Start
2425
Run `make build test` to build and run tests locally. If everything passes, you're good to go!
@@ -64,9 +65,9 @@ Head to actions and run the `Release` workflow entering the same the same semant
6465
### Update Metabase Version
6566
If needed, `make checkout_latest_metabase_tag` will update Metabase to its latest tagged release.
6667

67-
*CAUTION*: the Metabase test file `metabase/test/metabase/driver_test.clj` is overridden by a modified version on the root directory (see the `Makefile`). This is because two tests (`can-connect-with-destroy-db-test` and `check-can-connect-before-sync-test`) do not work with the Starburst driver as they're testing what happens when a database is deleted (which cannot happen with Starburst). So instead of adding some useless stuff to `can-connect?` for the sole purpose of satisfying tests, it was found preferable to just remove those two tests.
68+
*CAUTION*: the Metabase test file `./metabase/.clj-kondo/test/hooks/clojure/test_test.clj` is overridden by a modified version on the root directory (see the `Makefile`). This is because the test `check-driver-keywords-test` is not expected to work with the Starburst driver.
6869

69-
Whenever upgrading the version of Metabase, `./driver_test.clj` should be replaced with `metabase/test/metabase/driver_test.clj` with the two offending tests removed (unless they pass or there is a clean way around them)
70+
Whenever upgrading the version of Metabase, `./test_test.clj` should be replaced with `./metabase/.clj-kondo/test/hooks/clojure/test_test.clj` with the `check-driver-keywords-test` test removed.
7071

7172
## References
7273
* [Encrypting Metabase Database Details](https://www.metabase.com/docs/latest/operations-guide/encrypting-database-details-at-rest.html)

app_versions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"trino": "431",
33
"clojure": "1.11.1.1262",
4-
"metabase": "v1.50.9"
4+
"metabase": "v1.52.2.2"
55
}

drivers/starburst/src/metabase/driver/implementation/driver_helpers.clj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,10 @@
3434
:native-parameters true
3535
:expression-aggregations true
3636
:binning true
37-
:foreign-keys true
37+
::concat-non-string-args false
3838
:datetime-diff true
3939
:convert-timezone true
4040
:connection/multiple-databases true
4141
:metadata/key-constraints false
4242
:now true}]
4343
(defmethod driver/database-supports? [:starburst feature] [_ _ _] supported?))
44-
45-
(defmethod driver/database-supports? [:starburst :foreign-keys] [_driver _feature _db] (not config/is-test?))

drivers/starburst/test/metabase/driver/starburst_test.clj

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,21 @@
2828
[metabase.models.table :as table :refer [Table]]
2929
[metabase.query-processor :as qp]
3030
[metabase.query-processor.compile :as qp.compile]
31+
[metabase.query-processor-test.timezones-test :as timezones-test]
3132
[metabase.sync :as sync]
3233
[metabase.test :as mt]
3334
[metabase.test.fixtures :as fixtures]
35+
[metabase.test.data.interface :as tx]
36+
[metabase.test.data.sql-jdbc :as sql-jdbc.tx]
3437
[toucan2.tools.with-temp :as t2.with-temp]
3538
[toucan2.core :as t2]))
3639

3740
(use-fixtures :once (fixtures/initialize :db))
41+
(sql-jdbc.tx/add-test-extensions! :starburst)
42+
43+
(defmethod tx/before-run :starburst
44+
[_]
45+
(alter-var-root #'timezones-test/broken-drivers conj :starburst))
3846

3947
(deftest describe-database-test
4048
(mt/test-driver :starburst
@@ -125,8 +133,8 @@
125133
(mt/with-temporary-setting-values [report-timezone "Asia/Hong_Kong"]
126134
;; the `read-column-thunk` for `Types/TIMESTAMP` used to return an `OffsetDateTime`, but since Metabase 1.50 it
127135
;; returns a LocalDate
128-
(is (= [[(t/local-date 2014 8 2)
129-
(t/local-date 2014 8 2)]]
136+
(is (= [[(t/local-date "2014-08-02")
137+
(t/local-date "2014-08-02")]]
130138
(mt/rows
131139
(qp/process-query
132140
{:database (mt/id)
@@ -147,7 +155,7 @@
147155
(is (= (str "SELECT COUNT(*) AS \"count\" "
148156
"FROM \"default\".\"test_data_venues\" "
149157
"WHERE \"default\".\"test_data_venues\".\"name\" = 'wow'")
150-
(:query (qp.compile/compile-and-splice-parameters query))
158+
(:query (qp.compile/compile-with-inline-parameters query))
151159
(-> (qp/process-query query) :data :native_form :query)))))))
152160

153161
(deftest connection-tests

0 commit comments

Comments
 (0)