This project is mirrored from https://github.com/metabase/metabase.
Pull mirroring updated .
- Jun 12, 2023
-
-
Alexander Polyankin authored
-
Nemanja Glumac authored
* Fix join flake for field literals Example of a failed run from the past: https://www.deploysentinel.com/ci/runs/647ff0426bd09da7e252a052 * Fix flake in repro #12928 An example of the failed run from the past: https://www.deploysentinel.com/ci/runs/647f17d60baaca08b249b4aa This commit extracts the joins logic to select two saved questions to a seperate helper, because it seems we'll use it in many places. * Fix flake for repro #18512 An example of a previously failed CI run: https://www.deploysentinel.com/ci/runs/647f605e4d5097b4de537e07 * Fix flake for repro #18502 An example of a failed run from the past: https://www.deploysentinel.com/ci/runs/64807a6e45294b33d5240830 * Tentatively fix flake in repro #17767 This flake has a different cause than the rest of the flakes in this PR. The request `POST /api/dataset` is timing out in CI. It takes more than 30 seconds to complete, and Cypress times out in meantime. This is suspiciously slow, even for CI. I'm trying to limit the number of results by limiting rows in the original query. This reduces the number of total results (after the join) from 1,136 rows to just 9.
-
- Jun 09, 2023
-
-
Ngoc Khuat authored
* forward migration for size_x and col * done? * test fixes * adds some document * migration should not contains comment * mysql and postgres use different syntax in casting * makes it work on mariadb * update grid columns * update specs * update specs * use float for postgres * postgresql not postgres * add migration for revision with model=Dashboard * row is reserved in h2 too * handle edge case with rollback migration where we have a 1x1 card that located at the shrinkage line * kondo * Cal's feedback * add the code we used to generate random array * clean up * use the algorithm to dynamicall generate test data * no more height migrations * grid ratio * unmigrate height in cypress specs * update specs --------- Co-authored-by:
Aleksandr Lesnenko <alxnddr@gmail.com>
-
Oisin Coveney authored
-
Oisin Coveney authored
-
- Jun 08, 2023
-
-
Jesse Devaney authored
* initial prototype commit * add default value for text cards * auto focus text/heading cards on creation * remove default value - use placeholders instead * fix inability to edit when there is no heading value * remove unnecessary comment * re-word heading & text tooltip * refactor and fix draggable area bug * fix border artifacts when combined with dragging styling * fix stroke width for hovering and focused - make them the same * display placeholder value in editing mode if content is empty for text and heading dash-cards * remove duplicate placeholders * allow pointer-events anywhere on the div (not just content) * refactor styling to apply no content borders * Fix heading overflow * refactor text dash-card button - remove unnecessary redux store usage * refactor border styling to one css format * rename class names to match syntax conventions * refactor auto-preview styling for dash-card root * refactor style name * remove comment * undo unnecessary re-formatting * refactor popover styling * remove comment that was previously addressed * refactor to typescript * remove comment * remove un-used code * fix TypeScript errors in text unit spec * update button key and event description * add e2e tests for text and heading dash-cards * add e2e tests * add small heading unit tests * fix typescript error * add aria-label removed by merging with master * fix broken test * fix broken tests * fix typescript errors * align edit text with preview text * change from hover editing to click editing * update tests for click editing - remove hover tests - change focus tests to click tests - remove top-level findByText() calls * refactor to use-focus hook * add "heading" to getSupportedCardsForSubscriptions * rename showVisualizationOptions to showDashcardVisualizationSettings * add aria label to buttons and query in tests by label * refactor E2E tests to make longer flows * add existing metabase types to Heading * refactor heading and text menu to use EntityMenu * fix aria-label * [skip ci] fix css syntax error from missing semi-colon * adjust styles and use rem value standards * [skip ci] prevent drag on click to edit surface area * tweak styles for mobile resolutions * fix react import lint error * fix E2E tests * refactor e2e helper to shorthand * refactor to use e2e helper * refactor to use saveDashboard() e2e helper * refactor e2e tests * rename styling variables * null coalesce minWidth * remove unnecessary anonymous function wrapping * refactor to useToggle * improve no content check * use object creation shorthand * simplify expression * refactor empty content styling * move text-edit-container styling into heading and text components * refactor resize handle styling and abstract condition into function * refactor to use CSS function for string styling * improve Heading unit tests * improve Text unit tests * update Heading and Text unit tests * update for new Icons * fix E2E tests * refactor E2E test assertions * refactor click events to use user-event library * fix tooltip positioning
-
Nemanja Glumac authored
* Move core actions E2E tests to a separate folder * Run new `actions` E2E group in CI Metabase actions deserve their own E2E group, as the test suite around them is expected to grow. This commit introduces `actions` E2E group to the CI.
-
Oisin Coveney authored
-
- Jun 07, 2023
-
-
Alexander Polyankin authored
-
- Jun 06, 2023
-
-
Ngoc Khuat authored
* hydrate orders-tabs for public/embed dashboard * adds test * return dashboard_tab_id when hydrate ordered_cards for public dashboard * show tabs in `PublicDashboard` on FE * remove unused export * update e2e test * remove duplicated implementation for macro in test * makes the macro public for testing * run prettier on DashboardTabs.tsx --------- Co-authored-by:
Emmad Usmani <emmadusmani@berkeley.edu>
-
Tim Macdonald authored
See discussion at https://metaboat.slack.com/archives/C5XHN8GLW/p1685964332028149
-
Tim Macdonald authored
* Sync but don't scan tables from uploaded CSVs Delete the CSV file afterwards * Delete the CSV file more intelligently * Scan asynchronously never mind about the file deletion * Turn file deletion back on * Humanize model name for uploaded CSVs * Update Cypress test with humanized name * Only scan new tables, not the whole DB * Only sync tables * Get schema name properly * Fix error-handling; don't create errant table * Check for syncable schemas * Fix E2E test * Tidy up include-schema? usage
-
- Jun 05, 2023
-
-
Kamil Mielnik authored
* Make NativeQueryEditor testable - Mock just NativeQueryEditor.prototype.loadAceEditor instead of entire NativeQueryEditor * Fix invalid propTypes * Fix DatasetQueryEditor not re-rendering when props change - remove custom arePropsEqual argument from React.memo() on NativeQueryEditor - Fixes #30680 * Add a dirty initial NativeQueryEditor test setup * Add DatasetQueryEditor tests * Revert "Add a dirty initial NativeQueryEditor test setup" This reverts commit 0f985db272a2e8f1be755bda07c3b642fdf90f83. * Get rid of test errors * Clean up DatasetQueryEditor test * Add a test case for re-rendering of DatasetQueryEditor * Make setup function more reusable * Add 2 more test cases * Bring back global NativeQueryEditor mock as many tests depend on it * Add an e2e test for #30680 * Optimize DatasetEditor by conditionally rendering DatasetQueryEditor only when it can be seen * Remove redundant code * ESLint * Use createMockCollection instead of a cast * Move all Native Query creation to createMockNativeDatasetQuery * Use setupCollectionsEndpoints * Introduce setupNativeQuerySnippetEndpoints and use it in DatasetQueryEditor.unit.spec.tsx * Extract explanatory importDatasetQueryEditor * Remove file accidentally added when merging master * Add missing data-testid that got lost during a merge
-
- Jun 03, 2023
-
-
Denis Berezin authored
-
- Jun 02, 2023
-
-
Maz Ameli authored
* arrow_left * check mark * arrow_up and chevrons * add, close, contract, embed, expand, sort * change viewbox to 16 * icons in +New menu, search, and sidebar toggle * info_outlined, connections or fk icon, and tweaks to x-ray suggestion icons * fix database icon * ellipsis, person, and tweak ellipsis size in collections sidebar * home, reference or book, pencil or edit, table * dashboard action icons, and remove reference to unused ClockIcon.jsx * question action icons and related component tweaks * larger icons on HomeModelCard on homepage * dashboard and add_to_dash * snippet and variables * all the chart type icons and some field type ones * mail and groups * make sidebar icons darker blue * fix add-your-data icon * filled mail icon and use it on events modal * stars * bolt and x-rays and a bunch more * granular, metric, revision history * arrows, formula, snippets * click, cloud, boolean, unpin * return, hourglass, popover * pause, ldap, burger * gear info list pin moon sum sun verified warning * fix size of row details modal icons * fix size of left nav icons * fix size on filter widgets and some selects * set default size to 16 to fix entity menu icons etc * fix pagination icons * size and color on ItemPicker * bump up database icon in /browse to 32px * /browse bolt icon size * find and remove instances of 14px size declarations * sql editor icons * sql expand/contract button alignment * collection breadcrumbs * remove two more size 14 declarations * viz selector * fix add icon in New button * fix size of ModelDetailLink * icon for question list empty state * get rid of model_framed icon * try to fix event tick icons, replace balloons with cake * standardize size of question footer actions * fix dinosaur * switch star_outline to star, and star to star_filled * fix notebook sort action * switch data picker from table2 to table * fix slack icon * restyle HomeXrayCard * fix List icon * fix sidebar toggle icon size * fix icon size in field picker popovers * fix summarize sidebar field type icons * fix summarize sidebar Add buttons * table heading sort icons * fix filter icon, resize button icons * bulk filters icons * admin datamodel icons sizing * fix datamodel metric and segment icons, and sort icon * dashboard interactivity sidebar close icon * get rid of grabber2 * bookmark and question actions icon sizes * revert icon * Icons cleanup (#31147) * remove timeline event icon stroke * cleanup * add 16x16 viewbox to svgs that were missing it * add slack_colorized * correct the join_full_outer icon * timeline events, cleanup * fix broken icons * more cleanup * fix storybook * fix all types * add stories * try fixing arrow_split --------- Co-authored-by:
Maz Ameli <maz@metabase.com> * fix specs * fix specs * remove unused icons * use constants * increase node memory allocation * bump for chromatic too * fixes * fix arrow_split icon * fix arrow_split path attributes * fix path again and fix sizing of drillthrough menu icons * more spec fixes * prettier --------- Co-authored-by:
Aleksandr Lesnenko <alxnddr@users.noreply.github.com> Co-authored-by:
Aleksandr Lesnenko <alxnddr@gmail.com>
-
Ryan Laurie authored
* [Model Indexes] Use model metadata to determine indexability (#31048) * [Model Indexes] Allow Updating Metadata at the same time as adding an index (#31049) * [Model Indexes] Fix Model Index Front End Cache Invalidation (#31094)
-
Oisin Coveney authored
-
- Jun 01, 2023
-
-
Oisin Coveney authored
-
Ngoc Khuat authored
-
Nemanja Glumac authored
* Make custom `button` command chainable * Chain `.button` directly No need to use `.within()` anymore. We can chain the button command directly because it now receives the previously yielded subject. * Fix collections bulk actions test
-
- May 31, 2023
-
-
Kyle Doherty authored
* remove /reference pages + reducers * Remove redundant metadata selectors * Remove redundant metadata actions * Remove `QueryButton` component * Remove `List` component * Remove dead link * Move `NoDatabasesEmptyState` to `NewModelOptions` * remove obvious /reference specific e2e tests and ask a bunch of questions [ci skip] * Remove data reference section from e2e test suite [ci skip] * Remove segments data reference e2e tests [ci skip] * Remove reference section from the browse page test [ci skip] * Remove the last few mentions of the reference page in e2e tests [ci skip] * Fix sso button lint error --------- Co-authored-by:
Anton Kulyk <kuliks.anton@gmail.com> Co-authored-by:
Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com> Co-authored-by:
Alexander Polyankin <alexander.polyankin@metabase.com>
-
Oisin Coveney authored
-
Nemanja Glumac authored
* Make E2E custom icon command chainable * Refactor E2E helpers We can now chain the `.icon()` command on the previous subject. * Chain `.icon()` on prev subject in all tests * Fix moderation-question test
-
Nemanja Glumac authored
The underlying issue was fixed, but we are not sure exactly when. This reproduction should prevent future regressions.
-
Kamil Mielnik authored
* Update 15946 e2e test - modal() expects ModalContent to be present in DOM, but NativeQuerymodal uses ModalBody directly - add extra check for run button to be enabled * Ensure collection is present in dataset query during query conversion * Unskip e2e test for #15946 * Handle string tableId
-
- May 30, 2023
-
-
Mahatthana (Kelvin) Nomsawadi authored
This is because `source-field` was missing from a field dimension.
-
- May 26, 2023
-
-
Denis Berezin authored
* Update underlying records drill - bring to top, label changes (#29984) * Zoom in Drill (#30208) * Add updated zoom drill title * Fix e2e tests * Add title unit tests * Fix for Records drill UI when it is the only one displayed * Review fixes * Add pivot drill common popover (#30275) * Add grouping for Pivot drill options * Reuse filterField type * Fix date formatting after rebase * Move Automatic insight action to a common popover (#30370) * Refactor ChartClickActionsView, reuse it component in drills (#30706) * 26836 separate views for quick cell click filters (#30532) * Added separate views for QuickFilterDrill * Add tests, fix styles issues * 26836 contains/does not contain quick filter for tables (#30778) * Add contains/does not contain quick filter for tables * Self review fixes * Fix for column header filter search options cropped * Fix for icon margin difference for contains / does not contain filters * Fix contains filter actions icon styles * Add quick filters support for aggregated queries * Not show contains filter for joined fields * Fix typecheck * Adjust string field quick filter section title to have column name (#30888) * 26836 Add View details action for quick filters (#30967) * Add View details action to quick filters * Self review fixes * Fix e2e tests * Fix review issues
-
Aleksandr Lesnenko authored
* fix the question description icon placement in the collection view * fix specs
-
Braden Shepherdson authored
This has never worked (see #11371) and produces bad results which group by every individual value of the column, rather than binning/bucketing correctly. This can theoretically be supported, but needs BE work to construct correct queries. To be addressed after MLv2.
-
Ngoc Khuat authored
* Dashboard Tab entity (#29802) * add dashboard tab entity * Dashboard tabs CRUD (#29861) * Dashboard tabs frontend (#30189) * rename `DashboardHeader.tsx` to `DashboardHeaderView` to avoid collision with `DashboardHeader.jsx` commit-id:7cdfd86a * add tabs to dash commit-id:d3c2fa74 * improve code structure and other fixes * rename `dashboardtab_id` to `dashboard_tab_id` * remove explicit `position` logic * improve code quality * add renaming functionality * add two new tabs when creating first tab * hide tabs if there is only one * add unit test for `DashboardTabs` component * refactor * fix type errors * add `tabId` to text cards * add `tabId` to link cards * add `tabId` to action button * use disabled state when only one tab remains * refetch cards with filter value when changing tabs * add e2e test * fix broken e2e tests * add horizontal scrolling * fix unit test * fix create tab button being on right * fix performance issue when switching tabs * add `ttag` to `tabs.ts` * use `aria-label` in e2e test helper * fix type error after rebasing * making ordered_tabs optional for tests purposes * fix failing unit tests * fix failing e2e tests * fix flaky revision history e2e test * fix type error after merging feature branch with master and rebasing * fix revisions unit test * fix `ActionParmatersInputsForm.tsx` to stop `actions-on-dashboards.cy.spec.js` from flaking --------- Co-authored-by:
Ngoc Khuat <qn.khuat@gmail.com> * migrating revision logic to BE * handle description for multiple cards add/remove * test fixes * adds tests * make sures events are started so tests work * remove additional `:maybe` that was added while rebasing * add title and has_multile_changes to revision * fixes potential test flake * more tests * remove debug code * handles collection change description in card and dashboard * fixes fail to build * use backend for revision history (#30772) * use BE response for revision history * update `service.unit.spec.js` * sort revision and moderation events for question timeline * test fixes * create revision directly instead of via API to avoid flake * reverted to an earlier revision => reverted to an earlier version * translate the model name too * Rename functions: - diff-strs -> diff-strings - diff-strings -> diff-strings* - diff-strings* -> diff-string * move the diff to diff-strings* * use case instead of map for model-str->i18n-str * remove title from API response * do not translate test model * rename var `title_text` to `titleText` * address comments * stringify the display name * fix revert button not working * add loading wrapper to fix unit test * fix tests * fix type error * fix QuestionActivityTimeline test * add a dot for edited this --------- Co-authored-by:
Emmad Usmani <emmadusmani@berkeley.edu>
-
Alexander Polyankin authored
-
Mahatthana (Kelvin) Nomsawadi authored
* Consolidate auto-apply filters toggle action (#30978) So that when we start tracking the event on Snowplow, we can only do that in a single place. * Track disabling auto-apply filters in Snowplow (#30987) * Fix dashboard ID type
-
- May 25, 2023
-
-
Nick Fitzpatrick authored
* Adding admin settings * updating homepage * permissions * Include custom homepage on current user Response from `/api/user/current/` now always includes a key `custom_homepage`. It is nil unless `custom-homepage` setting is true and `custom-homepage-dashboard` is set to an id that is a valid dashboard that the user can read. (note this includes archived dashboards). In this circumstance, the response will be ``` ... "custom_homepage": { "dashboard_id": 87 }, ... ``` * adding unit tests * Homepage CTA * cleanup and types * e2e tests, small adustments * lint * type fix * Editing Dashboard Reminder * fixing unit test * ensure custom homepage dashboard exists and is not archived * handling dashboard archived scenario, use-dashboard-query * polish * Copy updates, removing personal collections from picker * PR Feedback * CI checks * PR Feedback * Adding default filter function --------- Co-authored-by:
dan sutton <dan@dpsutton.com>
-
- May 24, 2023
-
-
Ryan Laurie authored
* indexed entities schema * schema * endpoint with create and delete * hooked up tasks * first tests and hooking it all together * some e2e tests * search * search had to rename value -> name. The search stuff works well for stuff that looks the same. And previously was renaming `:value` to name in the search result, but it uses the searchable-columns-for-model for which values to score on and wasn't finding :value. So easier to just let name flow through. * include model_pk in results * send pk back as id, include pk_ref * rename fk constraint (had copied it) * populate indexed values with name not value * GET http://localhost:3000/api/model_index?model_id=135 * populate indexed values on post done here for ease of demo. followup work will schedule the task immediately, but for now, do it on thread and return info * test search results * fix t2 delete syntax on h2 * fix h2 * tests work on h2 and postgres app dbs * Fix after insert method after method lets you change the data. and i was returning the results of the refresh job as the model-index. not great * unify some cross-db logic for inserting model index values * Extract shared logic in populating indexed values; mysql support * clean ns * I was the bug (endpoint returns the item now) * fix delete to check perms on model not model-index * fix tests * Fix tests * ignore unused private var * Add search tests * remove tap> * Tests for simple mbql, joined mbql, native * shutdown scheduler after finishing * Entity Search + Indexing Frontend (#30082) * add model index types and mocks * add integer type check * add new entities for model indexes * expose model index toggle in model metadata * add search description for indexed entities * add an error boundary to the app bar * e2e test entity indexes * update tests and types * first tests and hooking it all together * Renumber migrations i forgot to claim them and i am a bad person * Restore changes lost in the rebase * add sync task to prevent errors in temp without this you get errors when the temp db is created as it wants to set the sync and analyze jobs but those jobs haven't been started. * Restore and test GET model-index/:model_id * clean up api: get by model id or model-index-id * update e2e tests * ensure correct types on id-ref and value-ref * simplify lookup * More extensive testing * update types * reorder migrations * fix tests * empty to trigger CI * update types * Bump clj-kondo old version reports /work/src/metabase/models/model_index.clj:27:6: error: #'metabase.models.interface/add-created-at-timestamp is private on source: ```clojure (t2/define-before-insert ::created-at-timestamp [instance] #_{:clj-kondo/ignore [:private-call]} ;; <- ignores this override (#'mi/add-created-at-timestamp instance)) ``` * Move task assertions to model namespace the task system is initialized in the repl so these all work locally. But in CI that's not necessarily the case. And rather than mocking the task system again I just leave it in the hands of the other namespace. * Don't serialize ModelIndex and ModelIndexValue seems like it is a setting on an individual instance. No need to have that go across boundaries * Just test this on h2. chasing names across the different dbs is maddening. and the underlying db doesn't really matter * indexes on model_index tables - `model_index.model_id` for searching by model_id - `model_index_value.model_index_id` getting values for a particular index * copy/paste error in indexing error message * `mt/with-temp` -> `t2.with-temp/with-temp` * use `:hook/created-at-timestamped?` * move field-ref normalization into models.interface * nit: alignment * Ensure write access to underlying model for create/delete * Assert more about pk/value refs and better error messages * Don't search indexed entities when user is sandboxed Adds a `= 1 0` clause to indexed-entity search if the user is sandboxed. Also, got tired of the pattern: ```clojure (if-let [segmented-user? (resolve 'metabase-enterprise.sandbox.api.util/segmented-user?)] (if (segmented-user?) :sandboxed-user :not-sandboxed-user) :not-sandboxed-user) ``` and now we have a tasty lil ole' ```clojure (defenterprise segmented-user? metabase-enterprise.sandbox.api.util [] false) ``` that you can just ```clojure (ns foo (:require [metabase.public-settings.premium-features :as premium-features])) (if (premium-features/segmented-user?) :sanboxed :not-sandboxed) ``` * redef premium-features/segmented-user? * trigger CI * Alternative GEOJSON.io fix (#30675) * Alternative GEOJSON.io fix rather than not testing, just accept that we might get an expected location back or we might get nil. This actually represents how the application will behave and will seamlessly work as the service improves or continues throwing errors: ```shell ❯ curl "https://get.geojs.io/v1/ip/geo.json?ip=8.8.8.8,136.49.173.73,185.233.100.23" <html> <head><title>500 Internal Server Error</title></head> <body> <center><h1>500 Internal Server Error</h1></center> <hr><center>openresty</center> </body> </html> ❯ curl "https://get.geojs.io/v1/ip/geo.json?ip=8.8.8.8,136.49.173.73" [{"area_code":"0","organization_name":"GOOGLE","country_code":"US", "country_code3":"USA","continent_code":"NA","ip":"8.8.8.8", "region":"California","latitude":"34.0544","longitude":"-118.2441", "accuracy":5,"timezone":"America\/Los_Angeles","city":"Los Angeles", "organization":"AS15169 GOOGLE","asn":15169,"country":"United States"}, {"area_code":"0","organization_name":"GOOGLE-FIBER","country_code":"US", "country_code3":"USA","continent_code":"NA","ip":"136.49.173.73", "region":"Texas","latitude":"30.2423","longitude":"-97.7672", "accuracy":5,"timezone":"America\/Chicago","city":"Austin", "organization":"AS16591 GOOGLE-FIBER","asn":16591,"country":"United States"}] ``` Changes are basically ```clojure (schema= (s/conditional some? <original-expectation-schema> nil? (s/eq nil) response-from-geojson) ``` * Filter to login error messages ```clojure (into [] (map (fn [[log-level error message]] [log-level (type error) message])) error-messages-captured-in-test) [[:error clojure.lang.ExceptionInfo "Error geocoding IP addresses {:url https://get.geojs.io/v1/ip/geo.json?ip=127.0.0.1}"] [:error clojure.lang.ExceptionInfo "Authentication endpoint error"]] ``` * check timestamps with regex seems like they fixed the service ```shell curl "https://get.geojs.io/v1/ip/geo.json?ip=8.8.8.8,136.49.173.73,185.233.100.23 " [{"country":"United States","latitude":"34.0544","longitude":"-118.2441","accuracy":5,"timezone":"America\/Los_Angeles","ip":"8.8.8.8","organization":"AS15169 GOOGLE","country_code3":"USA","asn":15169,"area_code":"0","organization_name":"GOOGLE","country_code":"US","city":"Los Angeles","continent_code":"NA","region":"California"},{"country":"United States","latitude":"30.2423","longitude":"-97.7672","accuracy":5,"timezone":"America\/Chicago","ip":"136.49.173.73","organization":"AS16591 GOOGLE-FIBER","country_code3":"USA","asn":16591,"area_code":"0","organization_name":"GOOGLE-FIBER","country_code":"US","city":"Austin","continent_code":"NA","region":"Texas"},{"country":"France","latitude":"48.8582","longitude":"2.3387","accuracy":500,"timezone":"Europe\/Paris","ip":"185.233.100.23","organization":"AS198985 AQUILENET","country_code3":"FRA","asn":198985,"area_code":"0","organization_name":"AQUILENET","country_code":"FR","continent_code":"EU"}] ``` whereas a few hours ago that returned a 500. And now the timestamps are different ``` ;; from schema "2021-03-18T19:52:41.808482Z" ;; results "2021-03-18T20:52:41.808482+01:00" ``` kinda sick of dealing with this and don't want to deal with a schema that matches "near" to a timestamp. * Restore these i copied changes over from tim's fix and it included these fixes. But now the service is fixed and these are the original values from cam's original fixes * Separate FK reference because of index ERROR in metabase.db.schema-migrations-test/rollback-test (ChangeLogIterator.java:126) Uncaught exception, not in assertion. liquibase.exception.LiquibaseException: liquibase.exception.RollbackFailedException: liquibase.exception.DatabaseException: (conn=637) Cannot drop index 'idx_model_index_model_id': needed in a foreign key constraint [Failed SQL: (1553) DROP INDEX `idx_model_index_model_id` ON `schema-migrations-test-db-32952`.`model_index`] liquibase.exception.RollbackFailedException: liquibase.exception.DatabaseException: (conn=637) Cannot drop index 'idx_model_index_model_id': needed in a foreign key constraint [Failed SQL: (1553) DROP INDEX `idx_model_index_model_id` ON `schema-migrations-test-db-32952`.`model_index`] liquibase.exception.DatabaseException: (conn=637) Cannot drop index 'idx_model_index_model_id': needed in a foreign key constraint [Failed SQL: (1553) DROP INDEX `idx_model_index_model_id` ON `schema-migrations-test-db-32952`.`model_index`] java.sql.SQLTransientConnectionException: (conn=637) Cannot drop index 'idx_model_index_model_id': needed in a foreign key constraint SQLState: "HY000" errorCode: 1553 * delete cascade on model_index fk to report_card * reorder fk and index migrations * break apart FK from table definition for rollbacks * update types and appease the new lint rules * define models in a toucan2 way * remove checksum: ANY from migrations * api permissions 403 tests * test how we fetch values * remove empty line, add quotes to migration file * cleanup from tamas's comments - indention fix - inline an inc - add values in a tx (also catch errors and update model_index) - clarify docstring on `should-deindex?` - don't use declare, just define fn earlier * update after merge * update to new model name * only test joins for drivers that support it * don't test mongo, include scenario in test output * sets use `disj` not `dissoc` * handle oracle primary id type `[94M "Awesome Bronze Plate"]` (type 94M) -> java.math.BigDecimal * remove magic value of 5000 for threshold * Reorder unique constraint and remove extra index previously had a unique constraint (model_pk, model_index_id) and an index on model_index_id. If we reorder the unique constraint we get the index on the model_index_id for free. So we'll take it. * remove breakout. without breakout ```sql SELECT "source"."id" AS "ID", "source"."title" AS "TITLE" FROM (SELECT "PUBLIC"."products"."id" AS "ID", "PUBLIC"."products"."title" AS "TITLE" FROM "PUBLIC"."products") AS "source" ORDER BY "source"."title" DESC ``` with breakout ```sql SELECT "source"."id" AS "ID", "source"."title" AS "TITLE" FROM (SELECT "PUBLIC"."products"."id" AS "ID", "PUBLIC"."products"."title" AS "TITLE" FROM "PUBLIC"."products") AS "source" GROUP BY "source"."id", "source"."title" ORDER BY "source"."title" DESC, "source"."id" ASC ``` * restore breakout caused some tests with joins to fail * update model-index api mock * Simpler method for indexing Remove the `generation` part. We'll do the set operations in memory rather than relying on db upserts. Now all app-dbs work the same and we get all indexed values, diff against current values from the model, and retract and add the appropriate values. "Updates" are counted as a retraction and then addition rather than separately trying to update a row. Some garbage generation stats: Getting garbage samples with ```clojure (defn tuple-stats [] (let [x (-> (t2/query ["select n_live_tup, n_dead_tup, relname from pg_stat_all_tables where relname = 'model_index_value';"]) (first))] {:live (:n_live_tup x) :dead (:n_dead_tup x)})) ``` And using a simple loop to index the values repeatedly: ```clojure (reduce (fn [stats _] (model-index/add-values! model-index) (conj stats (tuple-stats))) [] (range 20)) ``` With generation style: ```clojure [{:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 400} {:live 200, :dead 400} {:live 200, :dead 400} {:live 200, :dead 400} {:live 200, :dead 770} {:live 200, :dead 770} {:live 200, :dead 787} {:live 200, :dead 787} {:live 200, :dead 825} {:live 200, :dead 825} {:live 200, :dead 825} {:live 200, :dead 825} {:live 200, :dead 818} {:live 200, :dead 818} {:live 200, :dead 818} {:live 200, :dead 818} {:live 200, :dead 854}] ``` With "dump and reload": ```clojure [{:live 200, :dead 0} {:live 200, :dead 200} {:live 200, :dead 200} {:live 200, :dead 600} {:live 200, :dead 600} {:live 200, :dead 600} {:live 200, :dead 800} {:live 200, :dead 800} {:live 200, :dead 800} {:live 200, :dead 800} {:live 200, :dead 800} {:live 200, :dead 1600} {:live 200, :dead 1600} {:live 200, :dead 1600} {:live 200, :dead 2200} {:live 200, :dead 2200} {:live 200, :dead 2200} {:live 200, :dead 2200} {:live 200, :dead 2200} {:live 200, :dead 3600}] ``` And of course now that it's a no-op, ```clojure [{:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0} {:live 200, :dead 0}] ``` Since no db actions have taken when reindexing. We've traded memory set operations for garbage in the database. Since we're capped at 5000 rows it seems fine for now. * add analogs to `isInteger` to constants.cljc and isa.cljc files * clarity and do less work on set conversion * exclude clojure.core/integer? from isa.cljc * Rename `state_change_at` -> `indexed_at` * breakout brings along an order-by and fields clause --------- Co-authored-by:
dan sutton <dan@dpsutton.com>
-
Cal Herries authored
Fix column settings being duplicated when fields have the same `id-or-name`, but different `join-alias` (#27487)
-
Alexander Polyankin authored
-
Nick Fitzpatrick authored
* Add onDisplayUpdate function to visualizations to update settings * Moving update settings to ChartTypeSidebar * updating test name
-
Alexander Polyankin authored
-
- May 23, 2023
-
-
Ngoc Khuat authored
* WIP adding a new endpoint /api/card/series to fetch compatible series for a given card * change endpoint convention and add tests * tighten the types and more tests * here comes the tests * indent * Update test/metabase/api/card_test.clj * more tests * fix mis-use of MLv2 * wrong args order * update the tests to cover over limit case * use id as last_cursor and sort id desc by default * use the new endpoint to fetch compatible cards in the add series modal (#30410) * use new api handler for compatible series * exclude selected cards * rename payload prop * add exclude_ids param * update contract * use multiple value for single param pattern instead of jsonified strings * remove debug code * cleanup * specs * fix failing 20637 e2e test due to missing viz-settings in test data * do not exclude selected cards from search * Noah's comments * kondo * test fix --------- Co-authored-by:
Aleksandr Lesnenko <alxnddr@users.noreply.github.com> Co-authored-by:
Aleksandr Lesnenko <alxnddr@gmail.com>
-
Kyle Doherty authored
* remove activity frontend * remove the activity page code * remove GET api/activity/ route + tests * regen dox for activity routes - Not for GET /api/activity/ which has been removed. * nix more things only used for GET /api/activity/ * pull out more only-used-for-get-api/activity/ code * force namespace to be loaded (?) to be found --------- Co-authored-by:
Aleksandr Lesnenko <alxnddr@gmail.com> Co-authored-by:
Bryan Maass <bryan.maass@gmail.com> Co-authored-by:
Aleksandr Lesnenko <alxnddr@users.noreply.github.com>
-