Skip to content
Snippets Groups Projects
Unverified Commit 6c04ac4d authored by metamben's avatar metamben Committed by GitHub
Browse files

Revert "Prevent fields hiding joined fields (#30644)" (#30654)

This reverts commit ab2e49cc.
parent 697201ca
No related branches found
No related tags found
No related merge requests found
......@@ -107,7 +107,7 @@
:lib/source-column-alias (lib.metadata.calculation/column-name query stage-number metadata)
:lib/desired-column-alias (unique-name-fn (lib.field/desired-alias query metadata)))))))
(mu/defn ^:private summary-columns :- [:maybe lib.metadata.calculation/ColumnsWithUniqueAliases]
(mu/defn ^:private breakout-ags-fields-columns :- [:maybe lib.metadata.calculation/ColumnsWithUniqueAliases]
[query :- ::lib.schema/query
stage-number :- :int
unique-name-fn :- fn?]
......@@ -116,7 +116,8 @@
(mapcat (fn [f]
(f query stage-number unique-name-fn)))
[breakouts-columns
aggregations-columns])))
aggregations-columns
fields-columns])))
(mu/defn ^:private previous-stage-metadata :- [:maybe lib.metadata.calculation/ColumnsWithUniqueAliases]
"Metadata for the previous stage, if there is one."
......@@ -210,9 +211,8 @@
(mu/defn ^:private stage-metadata :- [:maybe lib.metadata.calculation/ColumnsWithUniqueAliases]
"Return results metadata about the expected columns in an MBQL query stage. If the query has
aggregations/breakouts, then return those and the fields columns.
Otherwise if there are fields columns return those and the joined columns.
Otherwise return the defaults based on the source Table or previous stage + joins."
aggregations/breakouts/fields, then return THOSE. Otherwise return the defaults based on the source Table or
previous stage + joins."
([query stage-number]
(stage-metadata query stage-number (lib.util/unique-name-generator)))
......@@ -221,23 +221,11 @@
unique-name-fn :- fn?]
(or
(existing-stage-metadata query stage-number)
(let [query (ensure-previous-stages-have-metadata query stage-number)
summary-cols (summary-columns query stage-number unique-name-fn)
field-cols (fields-columns query stage-number unique-name-fn)]
(let [query (ensure-previous-stages-have-metadata query stage-number)]
;; ... then calculate metadata for this stage
(cond
summary-cols
(into summary-cols field-cols)
field-cols
(do (doall field-cols) ; force generation of unique names before join columns
(into []
(m/distinct-by #(dissoc % :source_alias :lib/source :lib/desired-column-alias))
(concat field-cols
(lib.join/all-joins-default-columns query stage-number unique-name-fn))))
:else
(lib.metadata.calculation/default-columns query stage-number (lib.util/query-stage query stage-number) unique-name-fn))))))
(or
(breakout-ags-fields-columns query stage-number unique-name-fn)
(lib.metadata.calculation/default-columns query stage-number (lib.util/query-stage query stage-number) unique-name-fn))))))
(defmethod lib.metadata.calculation/metadata-method ::stage
[query stage-number _stage]
......
......@@ -214,12 +214,7 @@
:lib/source-column-alias "ID"
:lib/desired-column-alias "Cat__ID"
:metabase.lib.field/join-alias "Cat"
:lib/source :source/fields}
{:name "NAME"
:lib/source-column-alias "NAME"
:lib/desired-column-alias "Cat__NAME"
:metabase.lib.field/join-alias "Cat"
:lib/source :source/joins}]
:lib/source :source/fields}]
(lib.metadata.calculation/metadata query)))
(testing "Introduce a new stage"
(let [query' (lib/append-stage query)]
......@@ -230,10 +225,6 @@
{:name "ID"
:lib/source-column-alias "Cat__ID"
:lib/desired-column-alias "Cat__ID"
:lib/source :source/previous-stage}
{:name "NAME"
:lib/source-column-alias "Cat__NAME"
:lib/desired-column-alias "Cat__NAME"
:lib/source :source/previous-stage}]
(lib.metadata.calculation/metadata query')))))))
......
......@@ -473,23 +473,13 @@
:display-name "ID"
:table-id (meta/id :categories)
:lib/source-column-alias "Cat__ID"
:lib/desired-column-alias "Cat__ID"}
{:id (meta/id :categories :name)
:name "NAME"
:lib/source :source/previous-stage
:lib/type :metadata/field
:base-type :type/Text
:effective-type :type/Text
:display-name "Name"
:table-id (meta/id :categories)
:lib/source-column-alias "Cat__NAME"
:lib/desired-column-alias "Cat__NAME"}]
:lib/desired-column-alias "Cat__ID"}]
(-> (lib/query-for-table-name meta/metadata-provider "VENUES")
(lib/join (-> (lib/join-clause
(meta/table-metadata :categories)
[(lib/=
(lib/field "VENUES" "CATEGORY_ID")
(lib/with-join-alias (lib/field "CATEGORIES" "ID") "Cat"))])
(meta/table-metadata :categories)
[(lib/=
(lib/field "VENUES" "CATEGORY_ID")
(lib/with-join-alias (lib/field "CATEGORIES" "ID") "Cat"))])
(lib/with-join-alias "Cat")
(lib/with-join-fields :all)))
(lib/with-fields [(lib/field "VENUES" "ID")
......
......@@ -224,43 +224,3 @@
(not (:temporal-unit opts))))
"DATE"]]
(map lib/ref cols)))))
(deftest ^:parallel fields-should-not-hide-joined-fields
(let [query (-> (lib/query-for-table-name meta/metadata-provider "VENUES")
(lib/with-fields [(lib/field (meta/id :venues :id))
(lib/field (meta/id :venues :name))])
(lib/join (-> (lib/join-clause (lib/table (meta/id :categories)))
(lib/with-join-alias "Cat")
(lib/with-join-fields :all))
[(lib/= (lib/field "VENUES" "CATEGORY_ID")
(lib/field "CATEGORIES" "ID"))])
(lib/append-stage))]
(is (=? [{:base-type :type/BigInteger,
:semantic-type :type/PK,
:name "ID",
:lib/source :source/previous-stage
:effective-type :type/BigInteger,
:lib/desired-column-alias "ID",
:display-name "ID"}
{:base-type :type/Text,
:semantic-type :type/Name,
:name "NAME",
:lib/source :source/previous-stage,
:effective-type :type/Text,
:lib/desired-column-alias "NAME",
:display-name "Name"}
{:base-type :type/BigInteger,
:semantic-type :type/PK,
:name "ID",
:lib/source :source/previous-stage
:effective-type :type/BigInteger,
:lib/desired-column-alias "Cat__ID",
:display-name "ID"}
{:base-type :type/Text,
:semantic-type :type/Name,
:name "NAME",
:lib/source :source/previous-stage
:effective-type :type/Text,
:lib/desired-column-alias "Cat__NAME",
:display-name "Name"}]
(lib.metadata.calculation/visible-columns query)))))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment