diff --git a/src/metabase/driver/generic_sql/query_processor.clj b/src/metabase/driver/generic_sql/query_processor.clj index 1c1c8eb5a5ed8d0a6a6b41b419b513f146a884cf..d048a8597efaf6bfc9a927dbd0c7bb0f87d655c0 100644 --- a/src/metabase/driver/generic_sql/query_processor.clj +++ b/src/metabase/driver/generic_sql/query_processor.clj @@ -25,6 +25,7 @@ [metabase.query_processor.interface AgFieldRef BinnedField DateTimeField DateTimeValue Expression ExpressionRef Field FieldLiteral JoinQuery JoinTable RelativeDateTimeValue TimeField TimeValue Value])) +;; TODO - yet another `*query*` dynamic var. We should really consolidate them all so we only need a single one. (def ^:dynamic *query* "The outer query currently being processed." nil) @@ -288,7 +289,8 @@ (let [source-table-id (mbql.u/query->source-table-id *query*) {source-table-name :name, source-schema :schema} (qp.store/table source-table-id)] [[table-or-query-expr (keyword join-alias)] - [:= (hx/qualify-and-escape-dots source-schema source-table-name (:field-name source-field)) + [:= + (hx/qualify-and-escape-dots source-schema source-table-name (:field-name source-field)) (hx/qualify-and-escape-dots join-alias (:field-name pk-field))]])) (defmethod ->honeysql [Object JoinTable] diff --git a/src/metabase/driver/sparksql.clj b/src/metabase/driver/sparksql.clj index 498f7941568a3c17385ee9730b28795c9a95460f..75486d54fac0a0ddd5742d1c22bb4cbe6c2b08fd 100644 --- a/src/metabase/driver/sparksql.clj +++ b/src/metabase/driver/sparksql.clj @@ -15,7 +15,7 @@ [generic-sql :as sql] [hive-like :as hive-like]] [metabase.driver.generic-sql.query-processor :as sqlqp] - [metabase.models.table :refer [Table]] + [metabase.mbql.util :as mbql.u] [metabase.query-processor [store :as qp.store] [util :as qputil]] @@ -36,13 +36,8 @@ (def ^:private source-table-alias "t1") -(defn- find-source-table [query] - (first (qputil/postwalk-collect #(instance? (type Table) %) - identity - query))) - (defn- resolve-table-alias [{:keys [schema-name table-name special-type field-name] :as field}] - (let [source-table (find-source-table sqlqp/*query*)] + (let [source-table (qp.store/table (mbql.u/query->source-table-id sqlqp/*query*))] (if (and (= schema-name (:schema source-table)) (= table-name (:name source-table))) (-> (assoc field :schema-name nil)