This project is mirrored from https://github.com/metabase/metabase.
Pull mirroring updated .
- May 02, 2022
-
-
Braden Shepherdson authored
Background: We had two lint configs: lint-config.edn which was enfored by Github Actions, and .clj-kondo/config.edn, the default location used by editors. Problem: Patchy enforcement of the (larger) config in .clj-kondo/config.edn since not everyone uses an editor. Some new lint, like canonical namespace aliases (#21738, #19930) is not enforced automatically and has begun to bit-rot. Solution: Combine both configs, fix any outstanding lint, and update our tooling to use the unified config. Caveats: Anyone who has their local editor configured to use lint-config.edn will have their linting broken by this change.
-
- Apr 28, 2022
-
-
Cam Saul authored
* mbql.u/add-temporal-unit should ignore invalid units rather than erroring * Test fixes
-
- Apr 19, 2022
-
-
Braden Shepherdson authored
* Make namespace aliasing consistent everywhere; enforce with clj-kondo See the table of aliases in .clj-kondo/config.edn Notable patterns: - `[metabase.api.foo :as api.foo]` - `[metabase.models.foo :as foo]` - `[metabase.query-processor.foo :as qp.foo]` - `[metabase.server.middleware.foo :as mw.foo]` - `[metabase.util.foo :as u.foo]` - `[clj-http.client :as http]` and `[metabase.http-client :as client]` Fixes #19930.
-
Case Nelson authored
-
- Apr 18, 2022
-
-
Alexander Kiselev authored
* adding boolean to custom expr * added booleans to schema validattion * changed some mbql to use apply instead of a vector * update sample-dataset.edn * undo honeysql mess * fix sample-dataset.edn * fix unit tests * remove console.log * added `canceled` column to orders table in the sample database * minor fixes * bool custom column fixes * comment out join schema * rolback custom column changes * add error on custom column boolean expressions * unit tests * fix clj unit tests * e2e fix * unit test fixes * e2e fixes * added True/False to suggestions and fixed column formatting * fix e2e test * remove bool column from sample-dataset.edn because Oracle doesnt support bool column type (WTF?) * fix sample dataset tests * fix sample dataset tests * couple more fixes * fix sample-dataset.edn again * e2e fixes * fix some unit and e2e tests * unit test fix * e2e fixes * rollback sample database changes * more rollback * fix issues and add e2e tests * remove withAst from boolean pass * fixed issue with AST node
-
- Apr 13, 2022
- Apr 06, 2022
-
-
Ryan Laurie authored
* add correct currency symbol to filter inputs * show currency symbol in between inputs * lift currency prefix logic up component tree * remove unused function * fix existing tests * test currency prefixes * fix test nesting * get currency symbols for columns from our currency map * use visualization settings for currency inputs * use keyForColumn() to get visualization settings
-
- Mar 23, 2022
-
-
Cam Saul authored
* Remove references to qp/query->preprocessed * Fix Oracle
-
- Mar 16, 2022
-
-
Cam Saul authored
* Fix `[:relative-datetime :current]` inside `:between` filter clause * Update shared/test/metabase/mbql/util_test.cljc * Update shared/test/metabase/mbql/util_test.cljc
-
- Mar 10, 2022
-
-
Ariya Hidayat authored
-
- Feb 28, 2022
-
-
Cam Saul authored
* Handle legacy Field filter parameters that did not specify `:widget-type` * Fix indentation * Test fix
-
- Feb 23, 2022
-
-
Cam Saul authored
* Remove MetaBot Group * Fix missing :require * More fixes * Another fix
* change default sandboxed group_id * update group_ids Co-authored-by:Aleksandr Lesnenko <alxnddr@gmail.com>
-
- Feb 14, 2022
-
-
Cam Saul authored
* Add failing test for #15978 * Improved test * Add new metabase.driver.query-processor.escape-join-aliases QP middleware * Test fix
* Add reference to #20307 * Add some extra dox * Test fixes for BigQuery drivers * revert unneeded change * Fix :bigquery and :bigquery-cloud-sdk mixup * Test fixes * Test fix * Remove comment I meant to remove
-
- Feb 10, 2022
-
-
Michiel Borkent authored
* honeysql var improvements * Define routes * Define routes * define-routes improvement * honeysql helpers * honesql * abs in clojure 1.11 * fix logic unresolved vars * deprecated * deprecated var warnings * undo replace
-
- Feb 08, 2022
-
-
Cam Saul authored
Rework how the remappings middleware matches remapped to/from columns for explicit external (FK) remaps (#20009) * Fix #9236 [WIP] * Revert unneeded changes * Only merge namespaced :options into result info * Revert unneeded changes * Everything is working
* Revert unneeded change * Clean namespaces * Add `:test` profile to `namespace-checker` to suppress log messages. * PR feedback * Fix namespaces
-
- Feb 02, 2022
-
-
Cam Saul authored
-
- Feb 01, 2022
-
-
dpsutton authored
* Unused bindings cleanup `clj-kondo --lint src:shared/src > lint` and then just work my way through it. Note that there are warnings about deprecations that we will need to get rid of as well. Most likely by turning off that warning until we are ready to tackle the project. * More unused and a sort ns * Removing unused svg helpers that eastwood is complaining about * Restore accidentally deleted `begin!` impl for xlsx * clean ns * clean ns * Last few unused bindings * kondo checks for empty docstrings * Little more cleanup
-
Cam Saul authored
* MBQL :expressions should use strings for keys * Make some more tests ^:parallel * Update dox * Test fix * Sort namespaces
-
- Jan 26, 2022
-
-
Noah Moss authored
Co-authored-by:
Nemanja <31325167+nemanjaglumac@users.noreply.github.com>
-
- Jan 25, 2022
-
-
Michiel Borkent authored
* Linting improvements: 0 errors in src + shared/src * satisfy other linter
-
- Jan 20, 2022
-
-
Cam Saul authored
`add-alias-info`: recognize `:field` clauses in join source queries to be the same if it has a `:temporal-unit` (#19789) * Backport Debug QP improvements from #19754 * Enable test * "Fuzzy" matching when looking for Fields in join source queries * Add/update tests * Test fix
* Remove trailing whitespace * Fix a few docstrings
-
- Jan 19, 2022
-
-
Noah Moss authored
-
- Jan 18, 2022
-
-
Cam Saul authored
Nested Queries Overhaul 2022: Split logic for determining appropriate table & column aliases out of SQL QP (#19384)
-
- Jan 13, 2022
-
-
Cam Saul authored
-
- Dec 15, 2021
-
-
dpsutton authored
* Preserve metadata and surface metadata of datasets Need to handle two cases: 1. querying the dataset itself 2. a question that is a nested question of the dataset 1. Querying the dataset itself This is a bit of a shift of how metadata works. Previously it was just thrown away and saved on each query run. This kind of needs to be this way because when you edit a question, we do not ensure that the metadata stays in sync! There's some checksum operation that ensures that the metadata hasn't been tampered with, but it doesn't ensure that it actually matches the query any longer. So imagine you add a new column to a query. The metadata is not changed, but its checksum matches the original query's metadata and the backend happily saves this. Then on a subsequent run of the query (or if you hit visualize before saving) the metadata is tossed and updated. So to handle this carelessness, we have to allow the metadata that can be edited to persist across just running the dataset query. So when hitting the card api, stick the original metadata in the middleware (and update the normalize ns not to mangle field_ref -> field-ref among others). Once we have this smuggled in, when computing the metadata in annotate, we need a way to index the columns. The old and bad way was the following: ```clojure ;; old (let [field-id->metadata (u/key-by :id source-metadata)] ...) ;; new and better (let [ref->metadata (u/key-by (comp u/field-ref->key :field_ref) source-metadata)] ) ``` This change is important because ids are only for fields that map to actual database columns. computed columns, case, manipulations, and all native fields will lack this. But we can make field references. Then for each field in the newly computed metadata, allow the non-type information to persist. We do not want to override type information as this can break a query, but things like description, display name, semantic type can survive. This metadata is then saved in the db as always so we can continue with the bit of careless metadata saving that we do. 2. a question that is a nested question of the dataset This was a simpler change to grab the source-metadata and ensure that it is blended into the result metadata in the same way. Things i haven't looked at yet: column renaming, if we need to allow conversions to carry through or if those necessarily must be opaque (ie, once it has been cast forget that it was originally a different type so we don't try to cast the already cast value), and i'm sure some other things. But it has been quite a pain to figure all of this stuff out. Especially the divide between native and mbql since native requires the first row of values back before it can detect some types. * Add in base-type specially Best to use field_refs to combine metadata from datasets. This means that we add this ref before the base-type is known. So we have to update this base-type later once they are known from sampling the results * Allow column information through I'm not sure how this base-type is set for annotate-native-cols. Presumably we don't have and we get it from the results but this is not true. I guess we do some analysis on count types. I'm not sure why they failed though. * Correctly infer this stuff This was annoying. I like :field_ref over :name for indexing, as it has a guaranteed unique name. But datasets will have unique names due to a restriction*. The problem was that annotating the native results before we had type information gave us refs like `[:field "foo" {:base-type :type/*}]`, but then this ruined the merge strategy at the end and prevented a proper ref being merged on top. Quite annoying. This stuff is very whack-a-mole in that you fix one bit and another breaks somewhere else**. * cannot have identical names for a subselect: select id from (select 1 as id, 2 as id) ** in fact, another test broke on this commit * Revert "Correctly infer this stuff" This reverts commit 1ffe44e90076b024efd231f84ea8062a281e69ab. * Annotate but de-annotate in a way To combine metadata from the db, really, really want to make sure they actually match up. Cannot use name as this could collide when there are two IDs in the same query. Combining metadata on that gets nasty real quick. For mbql and native, its best to use field_refs. Field_refs offer the best of both worlds: if id, we are golden and its by id. If by name, they have been uniquified already. So this will run into issues if you reorder a query or add a new column in with the same name but i think that's the theoretical best we can do. BUT, we have to do a little cleanup for this stuff. When native adds the field_ref, it needs to include some type information. But this isn't known until after the query runs for native since its just an opaque query until we run it. So annotating will add a `[:field name {:base_type :type/*}]` and then our merging doesn't clobber that later. So its best to add the field_refs, match up with any db metadata, and then remove the field_refs. * Test that metadata flows through * Test mbql datasets and questions based on datasets * Test mbql/native queries and nested queries * Recognize that native query bubbles into nested When using a nested query based on a native query, the metadata from the underlying dataset is used. Previously we would clobber this with the metadata from the expected cols of the wrapping mbql query. This would process the display name with `humanization/name->human-readable-name` whereas for native it goes through `u/qualified-name`. I originally piped the native's name through the humanization but that leads to lots of test failures, and perhaps correct failures. For instance, a csv test asserts the column title is "COUNT(*)" but the change would emit "Count(*)", a humanization of count(*) isn't necessarily an improvement nor even correct. It is possible that we could change this in the future but I'd want it to be a deliberate change. It should be mechanical, just adjusting `annotate-native-cols` in annotate.clj to return a humanized display name and then fixing tests. * Allow computed display name on top of source metadata name If we have a join, we want the "pretty" name to land on top of the underlying table's name. "alias → B Column" vs "B Column". * Put dataset metadata in info, not middleware * Move metadata back under dataset key in info We want to ensure that dataset information is propagated, but card information should be computed fresh each time. Including the card information each time leads to errors as it erroneously thinks the existing card info should shadow the dataset information. This is actually a tricky case: figuring out when to care about information at arbitrary points in the query processor. * Update metadata to :info not :middleware in tests * Make var private and comment about info metadata
-
- Dec 10, 2021
-
-
Cam Saul authored
* Refactor: move Card and Dashboard QP code into their own qp.* namespaces * Disable extra validation for now so a million tests don't fail * WIP * Validate template tag :parameters in query in context of a Card * Fixes * Disable strict validation for now * Test fixes [WIP] * Make the parameter type schema a little more forgiving for now * Tests & test fixes
* More test fixes * 1. Need more tests 2. Need to actually validate stuff * More test fixes. * Test fixes (again) * Test fix * Some test fixes / PR feedback * Disallow native queries with a tag widget-type of "none" Template tags with a widget-type that is undefined, null, or "none" now cause the query's isRunnable method to return false. Existing questions that have this defect won't be runnable until they are resaved with a set widget-type. * Fix prettier error * add snippet and card types to validation pass * Make sure template tag map keys + `:names` agree + test fixes * Have MBQL normalization reconcile template tags map key and :name * Test fix * Fix tests for Cljs * Fix Mongo tests. * Allow passing :category parameters for :text/:number/:date for now. * Dashboard subscriptions should use qp.dashboard code for executing * Make sure Dashboard QP parameter resolution code merges in default values * Add a test for sending a test Dashboard subscription with default params * Prettier * If both Dashboard and Card have default param value, prefer Card's default * Test fix * More tests and more fixes Co-authored-by:Dalton Johnson <daltojohnso@users.noreply.github.com>
-
- Nov 29, 2021
-
-
Noah Moss authored
-
- Nov 23, 2021
-
-
Ngoc Khuat authored
-
Cam Saul authored
New dashboard query endpoints and consolidate Dashboard API/Public/Embed parameter resolution code (#18994) * Code cleanup * Make the linters happy * Add pivot version of the new endpoints * implement usage of the new dashboard card query endpoint (#19012) * add new endpoints to services.js * replace CardApi.query with the new endpoint + pass dashboardId * add parameter id to parameter object found on query body * run dashchards using card query endpoint when they're new/unsaved on dashboard * Update endpoint references in e2e tests * Remove count check from e2e test We can make sure a double-mapped parameter filter shows results from both fields, but unfortunately with the new endpoint, the results don't seem to work anymore. I think that's OK? Maybe? * skip corrupted filters test the query endpoint now results in a 500 error caused by a schema mismatch * fix a few e2e intercepted request mismatches * unskip filter corruption test and remove the part that no longer works Co-authored-by:
Dalton <daltojohnso@users.noreply.github.com>
-
- Oct 19, 2021
-
-
Noah Moss authored
Normalize field refs in viz settings, rework column ordering approach, and expand test coverage (#18490)
-
- Oct 11, 2021
-
-
dpsutton authored
* Don't render bar charts are sparklines https://github.com/metabase/metabase/issues/18352 A simple select `SELECT 'a', 1 UNION ALL SELECT 'b', 2` would trigger as a sparkline and blow up when comparing. There are two issues: - don't render tables as a sparkline even if it only has two columns - don't compare things that aren't comparable. this solves the first issue, ensuring that tables aren't matched as sparklines * Sparkline should only compare comparable values Check that the columns are temporal or numeric before comparing them. It is only to optionally reverse the order of the results which seems questionable in itself, but we can at least check that they are comparable before attempting to * Ensure tests render as sparklines default was a :table and that adds csv attachments which throw off our tests * unskip repro * remove unnecessary extra line
-
- Oct 05, 2021
-
-
Raphaël Merx authored
-
- Oct 01, 2021
-
-
Noah Moss authored
-
- Sep 14, 2021
-
-
dpsutton authored
added the viz-settings parsing middleware to static viz. Column settings are spec'd for regular columns and by name, but we forgot expressions apparently.
-
- Sep 09, 2021
-
-
Cam Saul authored
-
- Aug 10, 2021
-
-
Noah Moss authored
-
- Aug 09, 2021
-
-
Noah Moss authored
-
- Jul 30, 2021
-
-
Noah Moss authored
-
- Jul 29, 2021
-
-
Noah Moss authored
-