Skip to content

Update/v0.55.20#19

Open
rafaelsantanaep wants to merge 1710 commits intoupdate/v0.54.4from
update/v0.55.20
Open

Update/v0.55.20#19
rafaelsantanaep wants to merge 1710 commits intoupdate/v0.54.4from
update/v0.55.20

Conversation

@rafaelsantanaep
Copy link
Copy Markdown

Important

If you are merging into master, please add either a backport or a no-backport label to this PR. You will not be able to merge until you do this step. Refer to the section Do I need to backport this PR? in the Metabase Branching Strategy document for more details.

Warning

If that is your first contribution to Metabase, please sign the Contributor License Agreement (unless it's a tiny documentation change). Also, if you're attempting to fix a translation issue, please submit your changes to our POEditor project instead of opening a PR.

Closes https://github.com/metabase/metabase/issues/[issue_number]

Description

Describe the overall approach and the problem being solved.

How to verify

Describe the steps to verify that the changes are working as expected.

  1. New question -> Sample Dataset -> ...
  2. ...

Demo

Upload a demo video or before/after screenshots if sensible or remove the section

Checklist

  • Tests have been added/updated to cover changes in this PR

github-automation-metabase and others added 30 commits July 11, 2025 08:47
…se#60819)

Co-authored-by: Romeo Van Snick <romeo@romeovansnick.be>
Co-authored-by: Romeo Van Snick <romeo@romeovansnick.be>
* chore: fix circular deps in qb

* fixup

* fixup

* fixup

* last circular deps

* fix export

* add a lint rule

Co-authored-by: Uladzimir Havenchyk <125459446+uladzimirdev@users.noreply.github.com>
…tabase#60489) (metabase#60818)

* Closes VIZ-264 nested JSON no longer formatted as [object Object]

* added type

* fixed types

* fixed tests

Co-authored-by: Sébastien <sebastien@metabase.com>
Co-authored-by: Sébastien <sebastien@metabase.com>
…etabase#60839)

* Use displayName for error

* Fix error position for node

* Move padding to cm-content to avoid whitespace above gutter

* Add border radius to editor to avoid overflowing container

* Fix displayname in unit test

* Fix type for position

* Add test for error position

* Add unit test for position helper

Co-authored-by: Romeo Van Snick <romeo@romeovansnick.be>
…#60868)

Two changes required to allow this:

- first, for the setting itself, allow setting it if the database is
writable OR an attached DWH.

- second, a similar change to make sure `syncable_schemas` is fetchable
for the attached DWH.

Co-authored-by: John Swanson <john.swanson@metabase.com>
…etabase#60876)

Fixes getting source tables in multistage aggregations. The check for
when we were in the scope of the parent card was in the wrong place in
the match which resulted in us failing to make a source-query block
immediately inside a stage with a source card.

Co-authored-by: Edward Paget <edpaget@users.noreply.github.com>
Co-authored-by: bryan <bryan.maass@gmail.com>
Co-authored-by: Nathan Voxland <nathan@metabase.com>
…on SQL Questions" (metabase#60859) (metabase#60921)

* Add repro for metabase#48772

* Add test description



---------

Co-authored-by: Romeo Van Snick <romeo@romeovansnick.be>
Co-authored-by: Kamil Mielnik <kamil@kamilmielnik.com>
…er row" (metabase#60831)

Co-authored-by: Oisin Coveney <oisin@metabase.com>
…tableDashboard" (metabase#60833)

Co-authored-by: Oisin Coveney <oisin@metabase.com>
…embed using singletons" (metabase#60535)

Co-authored-by: Phoomparin Mano <poom@metabase.com>
Co-authored-by: Phoomparin Mano <phoomparin@gmail.com>
fix(sdk): make isEmbeddingSdk consistent on new iframe embed using singletons (metabase#60349)
* Entity picker simplification (metabase#60858)

* moving pickers into same folder, consolidate getInitialContainer hooks

* getCollectionIdPath consolidation

* getStateFromIdPath

* comitting sins to get tests passing

* import adjustment

---------

Co-authored-by: Nick Fitzpatrick <nick@metabase.com>
Co-authored-by: Nick Fitzpatrick <nickfitz.582@gmail.com>
…etabase#60892) (metabase#60952)

* fix chart crashes when having multiple metric and dimension columns and invalid dimension viz setting

* replace spec

Co-authored-by: Aleksandr Lesnenko <alxnddr@users.noreply.github.com>
Co-authored-by: Thomas Schmidt <thomas@metabase.com>
* run embedding-sdk.yml from run-tests.yml

* remove e2e-tests-skipped-stub

* try to put back some structure

* fix name of build

* / -> › because github doesn't uses only the part after the last slash

* use > instead of chevron to make linter happy

* breaking changeS

* remove code to trigger ci

Co-authored-by: Nicolò Pretto <info@npretto.com>
Co-authored-by: Brad Anderson <brad@metabase.com>
) (metabase#60969)

* "I'll do this later" doesn't exit the flow (metabase#59993)

* parallelize requests and make them use rtk query (metabase#59563)

* parallelize requests and make them use rtk query

* fix multiple "Automatically Generated Dashboards" collections created +
update types

* add test

* EMB-459: remove 3 tables limit (metabase#59997)

* Tweak welcome step content display (metabase#60083)

* tweak welcome step content display

* update test after copy update

---------



* remove useForceLocaleRefresh as the context is now enough (metabase#60145)

* adds `embedding_setup_click` event (metabase#60315)

* embedding setup: remove last fetch call and speed up e2e (metabase#60392)

* close EMB-487, remove last remaining fetch call

* closes EMB-534, speed up e2e

* createdDashboard -> createdDashboards

* embedding setup: use cloud token in e2e and hide appbar and database status (metabase#60335)

* EMB-533: make the e2e test use the CLOUD pro token

* EMB-532: hide the database sync and the app bars in setup/embedding

* Update e2e/test/scenarios/onboarding/setup/setup-embedding.cy.spec.ts

* fix typo

---------

Co-authored-by: Nicolò Pretto <info@npretto.com>
Co-authored-by: Kyle Doherty <5248953+kdoh@users.noreply.github.com>
Co-authored-by: Timofey Kachalov <timofei@metabase.com>
…se#64483)

Co-authored-by: Jeff Bruemmer <jeff.bruemmer@gmail.com>
…e#64332)

Prevents the user from getting an ugly assertion error on login if the
ldap is misconfigured so we can't read a real email from the server response.

Co-authored-by: Edward Paget <edpaget@users.noreply.github.com>
…abase#64550) (metabase#64600)

Co-authored-by: Mahatthana (Kelvin) Nomsawadi <me@bboykelvin.dev>
…64882)

NodeSource should handle its own keys

Co-authored-by: Dan Stone <wotbrew@gmail.com>
…different units" (metabase#64840)

* Fix some events not shown on charts when grouping with different units (metabase#64801)

* Fix some events not shown on charts when grouping with different units

* Take timezone into account

* Add tests

* Simplify return

* Add missing plugin to dayjs

---------

Co-authored-by: Mahatthana (Kelvin) Nomsawadi <me@bboykelvin.dev>
…4984) (metabase#64987)

Co-authored-by: Mahatthana (Kelvin) Nomsawadi <me@bboykelvin.dev>
…etabase#63835)

* Resolved conflicts

* disable snowflake (metabase#64962)

https://linear.app/metabase/issue/DEV-997/reenable-snowflake-in-ci

due date one week

---------

Co-authored-by: Nathan Voxland <nathan@metabase.com>
Co-authored-by: dpsutton <dan@dpsutton.com>
* Remove `:feature` checks on some EE code (metabase#64848)

* Assert premium features for some middleware

* Fix an existing bug

These tests started failing here, which revealed that they formerly
never actually were testing what they thought they were.

A few reasons:
- they turned on `advanced-permissions` feature by itself, so sandboxing
was always off here

- they set up sandboxing in a nonstandard way

- one had a typo so we weren't even wrapping the body with
`with-download-perms!` (it was a separate block entirely)

This hid the bug that some of the tests were intended to reproduce - if
a card used for sandboxing had a native query, then we required that you
have download permissions on the entire database, which is wrong.

* fix test

* make assertions with/without tokens for sandboxing

* Add comments about why `:feature :none`

* Update enterprise/backend/test/metabase_enterprise/sandbox/query_processor/middleware/sandboxing_test.clj

Co-authored-by: Cam Saul <1455846+camsaul@users.noreply.github.com>

* add a nicer docstring and change fn name

replace `any-native-unsandboxed-stage?` with
`any-native-stage-not-introduced-by-sandbox?`

* Block without feature enabled

* CR response

---------

Co-authored-by: Cam Saul <1455846+camsaul@users.noreply.github.com>

* Init DB before doing `mbql-query`

* Fix a bunch of conflicts

---------

Co-authored-by: John Swanson <john.swanson@metabase.com>
Co-authored-by: Cam Saul <1455846+camsaul@users.noreply.github.com>
Co-authored-by: John Swanson <john.d.swanson@gmail.com>
…e#65151)

Co-authored-by: Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com>
* Run e2e tests using staging tokens (metabase#65044)

This pull request updates the configuration and environment handling for E2E and compatibility tests, mainly to support running tests against a staging license/token server and to improve test reliability. The changes affect GitHub Actions workflows, environment variables, and some test and backend logic.

*Backend Logic for E2E Mode*

Added `is-e2e?` flag in core.clj to distinguish E2E test runs from dev/prod/test modes, allowing for custom behavior in E2E scenarios.
Modified token check logic in token_check.clj to allow E2E tests to use a staging server for license validation.
Changed store API settings in settings.clj to use staging endpoints when in dev or E2E mode, ensuring tests interact with the correct backend.

* add new run-mode to execution case

```
❯ ag config/run-mode src
src/metabase/query_analysis/core.clj
84:  (case config/run-mode

❯ ag config/run-mode modules
modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk_test.clj
1297:            run-mode   (name config/run-mode)

modules/drivers/bigquery-cloud-sdk/src/metabase/driver/bigquery_cloud_sdk.clj
63:        run-mode   (name config/run-mode)
```

We had a case statement on it. During e2e tests with this new execution
mode not accounted for, it would throw errors when running any
query. that is resolved now.

---------

Co-authored-by: Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com>
Co-authored-by: dan sutton <dan@dpsutton.com>
* manual backport of grace period

metabase#64938 into 56

Squashed commit of the following:

commit e3a47b4
Author: dan sutton <dan@dpsutton.com>
Date:   Wed Oct 29 12:08:05 2025 -0500

    rename test

commit dc8111e
Author: dan sutton <dan@dpsutton.com>
Date:   Mon Oct 27 13:14:02 2025 -0500

    function composes them instead of caller

    rather than a caller needing to know all of the layers, i thread them
    for you and let you provide all arugments in one function call.

    dynamic var for needing to customize layers in tests. largely for
    removing the circuit-breaker which is stateful and hard to restart if
    you want to simulate errors in tests

commit 36157f9
Author: dan sutton <dan@dpsutton.com>
Date:   Mon Oct 27 10:14:46 2025 -0500

    fix with-random-premium-token! macro

commit c3f2d49
Author: dan sutton <dan@dpsutton.com>
Date:   Mon Oct 27 08:55:05 2025 -0500

    bit of cleanup

commit 93c68e0
Author: dan sutton <dan@dpsutton.com>
Date:   Thu Oct 23 17:28:42 2025 -0500

    remove commented out grace period

commit 45dc17d
Author: dan sutton <dan@dpsutton.com>
Date:   Thu Oct 23 17:02:21 2025 -0500

    remove comment block

commit f680555
Author: dan sutton <dan@dpsutton.com>
Date:   Thu Oct 23 16:29:40 2025 -0500

    clean up tests and rename a bit

commit d1633a8
Author: dan sutton <dan@dpsutton.com>
Date:   Thu Oct 23 13:22:26 2025 -0500

    fixup test

commit 85e7846
Author: dan sutton <dan@dpsutton.com>
Date:   Thu Oct 23 12:59:28 2025 -0500

    attempt to simplify the api a bit

    the thee important functions are now `token-information`, `harness` and
    `decode-token`.

    Everyone should use token-information. Harness hooks up the grace period
    and retry strategies, and `decode-token` only cares about decoding a
    token. It should return the token-status map {:valid true ...} or throw.

commit 4decf1d
Author: dan sutton <dan@dpsutton.com>
Date:   Wed Oct 22 17:30:43 2025 -0500

    couple changes

    protect against storing nil value. guava cache doesn't like it so gone
    it is.

    added some tests:

    ```clojure
    (testing "Setting a new value populates the grace period cache"
        (let [new-token (tu/random-token)]
          (binding [http/request (fn [& _] {:status 200
                                            :body "{\"valid\":true,\"status\":\"fake\",\"features\":[\"fake\",\"features\"]}"})]
            (mt/discard-setting-changes [premium-embedding-token]
              (premium-features.settings/premium-embedding-token! new-token)
              (is (= #{"fake" "features"} (token-check/*token-features*)))
              (is (= {:valid true :status "fake" :features ["fake" "features"]}
                     (token-check/retrieve token-check/grace-period new-token)))))))
    ```

    But this ended up leaving a setting table value for this value. i don't
    feel like looking into discard setting changes so i'm gonna just remove it

commit 94b61d5
Author: dan sutton <dan@dpsutton.com>
Date:   Wed Oct 22 16:48:49 2025 -0500

    tests that updating value populates grace period cache

commit afd3dd7
Author: dan sutton <dan@dpsutton.com>
Date:   Wed Oct 22 16:15:30 2025 -0500

    Add a grace period to token checks

    There's more work on this namespace to be done i think, but this is a
    first cut at it. There's a lot of control flow by exceptions which is
    how we jump around in here. Fundamentally this should be far
    simpler. Will take a crack at that shortly. I also don't love that this
    just hammers the `fetch-token-status` function and then memoizes inside
    of that. Would prefer simpler layout of `token-features` function and
    that can be aware of population issues.

    Adds a simple protocol: GracePeriod, which has two functions: save! and
    retrieve. On successful token check, we `save!` the response. On errors,
    we `retrieve` previous responses. This obviously can be nil in the case
    we have never had a successful response, and will become nil once the
    grace period's internal notion of time expires.

    This implementation is based on guava's cache which has a nifty
    expireafterwrite functionality.

    ```
     (*token-features*) ;; call this function to simulate the check of features
    Checking with the MetaStore to see whether token 'f325...d01a' is valid...
    Reporting Metabase stats: {... user counts etc}
     -> #{"features come back"}
     ;; meanwhile clear cache to simulate elapsing of 12 hours

     (*token-features*) ;; call function again to simulate check of features
    2025-10-22 21:30:26,620 INFO premium-features.token-check :: Checking with the MetaStore to see whether token 'f325...d01a' is valid...
    2025-10-22 21:30:26,622 ERROR premium-features.token-check :: Error fetching token status from https://token-check.metabase.com:
    clojure.lang.ExceptionInfo: network issues ;; hit network issue

    2025-10-22 21:30:26,632 INFO premium-features.token-check :: Using token from grace period
    ->> #{graceperiod network features}
    ...

    ;; here after 5 seconds (in real life will be 36 hours)
    2025-10-22 21:31:00,064 WARN premium-features.token-check :: Removing token: f325...d01a from grace period cache {mb-quartz-job-type=Cache}
    ```

* this line failed the linter :(
we want to not hammer the network when things are down. But during
startup we don't need to circuit break these errors that we throw before
the app-db is read
* Start utilizing the Trunk Quarantine for E2E tests (metabase#64873)

* Enable Trunk Quarantine for drivers (metabase#64995)

* Enable Trunk Quarantine for FE unit tests (metabase#65022)

* Enable Trunk Quarantine for general backend tests (metabase#65128)

* Fix logs upload for drivers (metabase#65257)

* Fix logs upload for drivers

When we introduced `continue-on-error` to the "test" step, we had to
update the conditionals for the test report steps as well. I've
introduced a bug by checking for a failure, instead of saying - upload
test reports whenever the job is not successful.

Hint: test.outcome means "step status BEFORE continue-on-error overrides
the exit code"
…ase#65347)

* Correct interactive embed query execution count (metabase#65336)

* Simplify the FE API code

* Exclude static embed preview from being counted in analytics

* Update frontend/src/metabase/lib/api.js

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Clarify comments

* Add tests

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix flaky drills tests

---------

Co-authored-by: Mahatthana (Kelvin) Nomsawadi <me@bboykelvin.dev>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Make Trunk analytics always run

This prevents false positives because Trunk analytics actio will now
always analyze test results, and compare them with their own test
quarantine list. It uses this information to know if it should fail the
job or let it pass.

* Introduce dry-run

When a PR is in a draft mode, we don't want to upload results but still
have to quarantine tests.
…se#65556)

* Add flag to skip search reindexing when loading entities

* Test flag

Co-authored-by: Chris Truter <crisptrutski@users.noreply.github.com>
…abase#65546) (metabase#65589)

- catalog metadata is not transactional in redshift
- calls like pg_catalog.has_schema_privilege when using a string argument will resolve the oid of the schema/table etc
- if the oid cannot be resolved (e.g. table/schema does not exist) an error is thrown

We occasionally see sync failed due to relation does not exist, one cause might be concurrent test runs / cleanup deleting tables/schemas while running.

I have fixed the first half of the union to use the oid form of these calls which will result in NULL instead of an error while racing with DDL in other runs.

Need to research on external tables before changing the external table sub-query: probably want to join to svv_external_schemas and use the oid there, but not 100% yet.

Co-authored-by: Dan Stone <wotbrew@gmail.com>
When we introduced a new e2e run mode, we didn't realize this piece of code needs to be updated as well.
For people who were running the backend from source (but using e2e mode) some drivers might not have worked. Example:
```
"message": "No method in multimethod 'connection-properties' for dispatch value: :sqlite"
```

This commit fixes that.
…tabase#66637)

* Bump org.apache.tika/tika-core from 3.2.2 to 3.2.3 (metabase#63799)

Inspect dependency changes here:

Co-authored-by: Cam Saul <1455846+camsaul@users.noreply.github.com>

* Bump org.apache.tika/tika-core from 3.2.2 to 3.2.3

* Test fix ???

---------

Co-authored-by: Cam Saul <1455846+camsaul@users.noreply.github.com>
Co-authored-by: Luis Paolini <paoliniluis@gmail.com>
Co-authored-by: Cam Saul <github@camsaul.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.