-
- Downloads
Support for question references in native query template tags (#11835)
* Port tests from expectations to clojure.test * Fix docstring * Added :question template tag type with lookup * s/question/card/ * Fix typo: s/substitue/substitute/g * Wrap card query parameter data in a record Just like `FieldFilter`s. * Unrelated: Improve test layout * Add substitution of card query parameters in queries This implementation is incomplete. * Finish substitution of card query in parent query * Basic FE support for question template tags * Update card ID on tag name update Also, don't use `\d` in regexes. * yarn prettier * Add support for MBQL queries in template tag lookup * Return query strings directly as tag value * Fix query type lookup * Initialize QP store for MBQL→native conversion * Fix MBQL to native query conversion * Port tests from expectations to clojure.test * Add middleware to resolve tables/fields from referenced cards This needs to happen before `substitute-parameters` in the QP pipeline, so that `substitute-parameters` can convert any MBQL queries (from referenced cards) into native queries. Maybe it should be consolidated with the other resolution steps. * Use mbql-query util instead of manual query def * Add docstring to now public function * Remove unused import * Fix docstring positioning* Clean ns declaration * Convert tests to clojure.test * Be more specific about errors we're looking expecting Invalid queries caused unexpected exceptions to be thrown when checking permissions. * Recursively check permissions of referenced queries * Add incomplete test [WIP] * Finish permission check test for referenced MBQL queries * Add tests for referenced native queries perms check * Clean ns * Use existing mbql-to-native middleware Rather than calling driver-specific `mbql->native` directly. * Fix formatting * Use more comprehensive qp func for converting query to native * front end updates * Check that all referenced queries are from the same db * Add test for checking db id of referenced MBQL query * Clean ns * add metadata and better error states to UI * move error message beneath the question picker * Combine `vals`+`filter`+`map` into a single `keep` * Rename `CardQuery`→`ReferencedCardQuery` * Cosmetic: fix typo and formatting * Test substitution of multiple sub-queries * Test CTE syntax substitution of multiple sub-queries * Clean ns * Clean ns * Simplify referenced card substitution tests * Test recursive sub-query substitution * Cosmetic: typos * Fix parameter names in comments * Check that queries don't include circular sub-queries * Clean ns * Give users a more user-friendly error for circular referencing sub-queries * Test referencing queries with parameters * Update src/metabase/query_processor/middleware/resolve_referenced.clj Co-Authored-By: Maz Ameli <maz@metabase.com> * Fix error message and combine card name queries * Wrap sub-query error in a more user friendly explanation * Cosmetic: function argument alignment * Test error handling of referenced sub-queries * Remove unused 1-arity version of `card-subquery-graph` * Cosmetic: indentation * Normalize l10n of error messages * Reuse functions for looking up referenced cards from query * implement FE PR feedback * card -> card_id backend changes * fix tests * fix another test * disallow space between # and number * Align new middleware with newer QP architecture * Align sub-query error handling with the new QP It seems like exceptions are handled more consistently in the new QP, so we can be less hacky. * (Re)wrap sub-query errors in user-friendly expalanation * Rename `xformf`→`rff` to align with QP changes * force cypress click on select placeholder * move popover attachement and cap its height * icon spacing * customize highlighting for template tags Co-authored-by:
Paul Rosenzweig <paulrosenzweig@users.noreply.github.com> Co-authored-by:
Maz Ameli <maz@metabase.com>
Showing
- frontend/src/metabase-lib/lib/queries/NativeQuery.js 43 additions, 7 deletionsfrontend/src/metabase-lib/lib/queries/NativeQuery.js
- frontend/src/metabase/containers/QuestionPicker.jsx 3 additions, 1 deletionfrontend/src/metabase/containers/QuestionPicker.jsx
- frontend/src/metabase/meta/Card.js 5 additions, 3 deletionsfrontend/src/metabase/meta/Card.js
- frontend/src/metabase/query_builder/components/NativeQueryEditor.css 3 additions, 0 deletions...c/metabase/query_builder/components/NativeQueryEditor.css
- frontend/src/metabase/query_builder/components/NativeQueryEditor.jsx 15 additions, 4 deletions...c/metabase/query_builder/components/NativeQueryEditor.jsx
- frontend/src/metabase/query_builder/components/template_tags/CardTagEditor.jsx 128 additions, 0 deletions.../query_builder/components/template_tags/CardTagEditor.jsx
- frontend/src/metabase/query_builder/components/template_tags/TagEditorSidebar.jsx 22 additions, 7 deletions...ery_builder/components/template_tags/TagEditorSidebar.jsx
- frontend/test/metabase-lib/lib/queries/NativeQuery.unit.spec.js 37 additions, 0 deletions...nd/test/metabase-lib/lib/queries/NativeQuery.unit.spec.js
- frontend/test/metabase/query_builder/components/NativeQueryEditor.cy.spec.js 44 additions, 1 deletion...ase/query_builder/components/NativeQueryEditor.cy.spec.js
- modules/drivers/mongo/src/metabase/driver/mongo.clj 1 addition, 1 deletionmodules/drivers/mongo/src/metabase/driver/mongo.clj
- modules/drivers/mongo/src/metabase/driver/mongo/parameters.clj 1 addition, 1 deletion...es/drivers/mongo/src/metabase/driver/mongo/parameters.clj
- src/metabase/driver.clj 1 addition, 1 deletionsrc/metabase/driver.clj
- src/metabase/driver/common/parameters.clj 15 additions, 0 deletionssrc/metabase/driver/common/parameters.clj
- src/metabase/driver/common/parameters/values.clj 85 additions, 58 deletionssrc/metabase/driver/common/parameters/values.clj
- src/metabase/driver/sql.clj 1 addition, 1 deletionsrc/metabase/driver/sql.clj
- src/metabase/driver/sql/parameters/substitute.clj 7 additions, 0 deletionssrc/metabase/driver/sql/parameters/substitute.clj
- src/metabase/driver/sql/parameters/substitution.clj 10 additions, 1 deletionsrc/metabase/driver/sql/parameters/substitution.clj
- src/metabase/query_processor.clj 2 additions, 0 deletionssrc/metabase/query_processor.clj
- src/metabase/query_processor/middleware/fetch_source_query.clj 1 addition, 1 deletion...etabase/query_processor/middleware/fetch_source_query.clj
- src/metabase/query_processor/middleware/parameters/native.clj 2 additions, 1 deletion...metabase/query_processor/middleware/parameters/native.clj
Please register or sign in to comment