1
- diff --git a/test/metabase/query_processor_test/explicit_joins_test .clj b/test/metabase/query_processor_test/explicit_joins_test .clj
2
- index 166598c4c6..e1bef679f1 100644
3
- --- a/test/metabase/query_processor_test/explicit_joins_test .clj
4
- +++ b/test/metabase/query_processor_test/explicit_joins_test .clj
5
- @@ -267,8 +267,8 @@
6
-
7
- (deftest ^:parallel select-*-source-query-test
8
- (mt/test-drivers (disj (mt/normal-drivers-with-feature :left-join )
9
- - ;; mongodb doesn't support foreign keys required by this test
10
- - :mongo)
11
- + ;; mongodb and materialize don't support foreign keys required by this test
12
- + :mongo :materialize )
13
- (testing "We should be able to run a query that for whatever reason ends up with a `SELECT *` for the source query"
14
- (let [{:keys [rows columns]} (mt/format-rows-by [int int]
15
- (mt/rows+column-names
16
- @@ -986,6 +986,7 @@
1
+ diff --git a/test/metabase/db/metadata_queries_test .clj b/test/metabase/db/metadata_queries_test .clj
2
+ index 7373655654..25eb5da352 100644
3
+ --- a/test/metabase/db/metadata_queries_test .clj
4
+ +++ b/test/metabase/db/metadata_queries_test .clj
5
+ @@ -45,13 +45,7 @@
6
+ (sort-by first)
7
+ (take 5))]
8
+ (is (= :type/Text (-> fields first :base_type)) )
9
+ - (is (= expected (fetch! nil)))
10
+ - (testing "truncates text fields (see #13288)"
11
+ - (doseq [size [1 4 80]]
12
+ - (is (= (mapv (fn [[s]] [(subs (or s "") 0 (min size (count s)))] )
13
+ - expected)
14
+ - (fetch! size))
15
+ - "Did not truncate a text field")))))
16
+ + (is (= expected (fetch! nil)))))
17
17
18
- (deftest ^:parallel join-with-brakout-and-aggregation-expression
19
- (mt/test-drivers (mt/normal-drivers-with-feature :left-join)
20
- + (when (not= driver/*driver* :materialize)
21
- (mt/dataset test-data
22
- (let [query (mt/mbql-query orders
23
- {:source-query {:source-table $$orders
24
- @@ -1004,7 +1004,7 @@
25
- ["Doohickey" "Balistreri-Ankunding" "2018-02-01T00:00:00Z" 315.36 3.1536]
26
- ["Doohickey" "Balistreri-Ankunding" "2018-03-01T00:00:00Z" 315.36 3.1536]]
27
- (mt/formatted-rows [str str str 2.0 4.0]
28
- - (qp/process-query query)))))))))
29
- + (qp/process-query query))))))))))
30
-
31
- (deftest ^:parallel mlv2-references-in-join-conditions-test
32
- (testing "Make sure join conditions that contain MLv2-generated refs with extra info like `:base-type` work correctly (#33083)"
33
- diff --git a/test/metabase/query_processor_test/date_bucketing_test.clj b/test/metabase/query_processor_test/date_bucketing_test.clj
34
- index 87d225f5ae..343eb1f5f5 100644
35
- --- a/test/metabase/query_processor_test/date_bucketing_test.clj
36
- +++ b/test/metabase/query_processor_test/date_bucketing_test.clj
37
- @@ -182,7 +182,7 @@
38
-
39
- ;; There's a bug here where we are reading in the UTC time as pacific, so we're 7 hours off
40
- ;; (This is fixed for Oracle now)
41
- - (and (qp.test-util/tz-shifted-driver-bug? driver/*driver*) (not= driver/*driver* :oracle))
42
- + (and (qp.test-util/tz-shifted-driver-bug? driver/*driver*) (not= driver/*driver* :oracle) (not= driver/*driver* :materialize))
43
- [["2015-06-01T10:31:00-07:00" 1]
44
- ["2015-06-01T16:06:00-07:00" 1]
45
- ["2015-06-01T17:23:00-07:00" 1]
46
- @@ -237,7 +237,7 @@
47
- ["2015-06-02 08:20:00" 1]
48
- ["2015-06-02 11:11:00" 1]]
49
-
50
- - (and (qp.test-util/tz-shifted-driver-bug? driver/*driver*) (not= driver/*driver* :oracle))
51
- + (and (qp.test-util/tz-shifted-driver-bug? driver/*driver*) (not= driver/*driver* :oracle) (not= driver/*driver* :materialize))
52
- [["2015-06-01T10:31:00-04:00" 1]
53
- ["2015-06-01T16:06:00-04:00" 1]
54
- ["2015-06-01T17:23:00-04:00" 1]
55
-
18
+ (testing "substring checking"
19
+ (with-redefs [driver.u/database->driver (constantly (:engine (mt/db)))
56
20
diff --git a/test/metabase/driver_test.clj b/test/metabase/driver_test.clj
57
- index bb3b1bea6a..20e0ab83b4 100644
21
+ index a506be0a66..cf358e20b2 100644
58
22
--- a/test/metabase/driver_test.clj
59
23
+++ b/test/metabase/driver_test.clj
60
- @@ -107 ,7 +107 ,7 @@
24
+ @@ -106 ,7 +106 ,7 @@
61
25
(do
62
26
(tx/destroy-db! driver/*driver* dbdef)
63
27
details))]
@@ -66,7 +30,7 @@ index bb3b1bea6a..20e0ab83b4 100644
66
30
(binding [h2/*allow-testing-h2-connections* true]
67
31
(driver/can-connect? driver/*driver* details))
68
32
(catch Exception _
69
- @@ -148 ,7 +148 ,7 @@
33
+ @@ -144 ,7 +144 ,7 @@
70
34
;; so fake it by changing the database details
71
35
(let [details (:details (mt/db))
72
36
new-details (case driver/*driver*
@@ -75,7 +39,7 @@ index bb3b1bea6a..20e0ab83b4 100644
75
39
:oracle (assoc details :service-name (mt/random-name))
76
40
:presto-jdbc (assoc details :catalog (mt/random-name)))]
77
41
(t2/update! :model/Database (u/the-id db) {:details new-details}))
78
- @@ -156 ,9 +156 ,9 @@
42
+ @@ -152 ,9 +152 ,9 @@
79
43
(tx/destroy-db! driver/*driver* dbdef))
80
44
(testing "after deleting a database, sync should fail"
81
45
(testing "1: sync-and-analyze-database! should log a warning and fail early"
@@ -86,25 +50,98 @@ index bb3b1bea6a..20e0ab83b4 100644
86
50
+ (mt/user-http-request :crowberto :post 200 (str "/database/" (u/the-id db) "/sync_schema"))))
87
51
;; clean up the database
88
52
(t2/delete! :model/Database (u/the-id db))))))))
89
-
90
-
53
+
54
+ diff --git a/test/metabase/query_processor_test/date_bucketing_test.clj b/test/metabase/query_processor_test/date_bucketing_test.clj
55
+ index 6e469bb152..f5f817715b 100644
56
+ --- a/test/metabase/query_processor_test/date_bucketing_test.clj
57
+ +++ b/test/metabase/query_processor_test/date_bucketing_test.clj
58
+ @@ -184,7 +184,7 @@
59
+
60
+ ;; There's a bug here where we are reading in the UTC time as pacific, so we're 7 hours off
61
+ ;; (This is fixed for Oracle now)
62
+ - (and (qp.test-util/tz-shifted-driver-bug? driver/*driver*) (not= driver/*driver* :oracle))
63
+ + (and (qp.test-util/tz-shifted-driver-bug? driver/*driver*) (not= driver/*driver* :oracle) (not= driver/*driver* :materialize))
64
+ [["2015-06-01T10:31:00-07:00" 1]
65
+ ["2015-06-01T16:06:00-07:00" 1]
66
+ ["2015-06-01T17:23:00-07:00" 1]
67
+ @@ -242,7 +242,7 @@
68
+ ["2015-06-02 08:20:00" 1]
69
+ ["2015-06-02 11:11:00" 1]]
70
+
71
+ - (and (qp.test-util/tz-shifted-driver-bug? driver/*driver*) (not= driver/*driver* :oracle))
72
+ + (and (qp.test-util/tz-shifted-driver-bug? driver/*driver*) (not= driver/*driver* :oracle) (not= driver/*driver* :materialize))
73
+ [["2015-06-01T10:31:00-04:00" 1]
74
+ ["2015-06-01T16:06:00-04:00" 1]
75
+ ["2015-06-01T17:23:00-04:00" 1]
76
+ diff --git a/test/metabase/query_processor_test/explicit_joins_test.clj b/test/metabase/query_processor_test/explicit_joins_test.clj
77
+ index ded26c8e97..4608b25854 100644
78
+ --- a/test/metabase/query_processor_test/explicit_joins_test.clj
79
+ +++ b/test/metabase/query_processor_test/explicit_joins_test.clj
80
+ @@ -270,8 +270,8 @@
81
+
82
+ (deftest ^:parallel select-*-source-query-test
83
+ (mt/test-drivers (disj (mt/normal-drivers-with-feature :left-join)
84
+ - ;; mongodb doesn't support foreign keys required by this test
85
+ - :mongo)
86
+ + ;; mongodb and materialize don't support foreign keys required by this test
87
+ + :mongo :materialize)
88
+ (testing "We should be able to run a query that for whatever reason ends up with a `SELECT *` for the source query"
89
+ (let [{:keys [rows columns]} (mt/format-rows-by [int int]
90
+ (mt/rows+column-names
91
91
diff --git a/test/metabase/test/data/dataset_definition_test.clj b/test/metabase/test/data/dataset_definition_test.clj
92
- index 1de46014c9..d44c94cf0a 100644
92
+ index 25ead15772..f830d1c2ff 100644
93
93
--- a/test/metabase/test/data/dataset_definition_test.clj
94
94
+++ b/test/metabase/test/data/dataset_definition_test.clj
95
- @@ -13,6 +13,7 @@
96
- ;; creating db for athena is expensive and require some extra steps,
97
- ;; so it's not worth testing against, see [[metabase.test.data.athena/*allow-database-creation*]]
98
- :athena
99
- + :materialize
100
- ;; there is no PK in sparksql
101
- :sparksql)
102
- (mt/dataset (mt/dataset-definition "custom-pk"
103
- @@ -53,6 +54,7 @@
104
- ;; creating db for athena is expensive and require some extra steps,
105
- ;; so it's not worth testing against, see [[metabase.test.data.athena/*allow-database-creation*]]
106
- :athena
107
- + :materialize
108
- ;; there is no PK in sparksql
109
- :sparksql)
110
- (mt/dataset composite-pk
95
+ @@ -8,52 +8,8 @@
96
+ [metabase.timeseries-query-processor-test.util :as tqpt]
97
+ [toucan2.core :as t2]))
98
+
99
+ - (deftest dataset-with-custom-pk-test
100
+ - (mt/test-drivers (->> (mt/normal-drivers-with-feature :metadata/key-constraints)
101
+ - (filter (mt/sql-jdbc-drivers))
102
+ - ;; Timeseries drivers currently support only testing with pre-loaded dataset
103
+ - (remove (tqpt/timeseries-drivers)))
104
+ - (mt/dataset (mt/dataset-definition "custom-pk"
105
+ - ["user"
106
+ - [{:field-name "custom_id" :base-type :type/Integer :pk? true}]
107
+ - [[1]]]
108
+ - ["group"
109
+ - [{:field-name "user_custom_id" :base-type :type/Integer :fk "user"}]
110
+ - [[1]]])
111
+ - (let [user-fields (t2/select [:model/Field :name :semantic_type :fk_target_field_id] :table_id (mt/id :user))
112
+ - group-fields (t2/select [:model/Field :name :semantic_type :fk_target_field_id] :table_id (mt/id :group))
113
+ - format-name #(ddl.i/format-name driver/*driver* %)]
114
+ - (testing "user.custom_id is a PK"
115
+ - (is (= [{:name (format-name "custom_id")
116
+ - :fk_target_field_id nil
117
+ - :semantic_type :type/PK}]
118
+ - user-fields)))
119
+ - (when (driver.u/supports? driver/*driver* :foreign-keys (mt/db))
120
+ - (testing "user_custom_id is a FK non user.custom_id"
121
+ - (is (= #{{:name (format-name "user_custom_id")
122
+ - :fk_target_field_id (mt/id :user :custom_id)
123
+ - :semantic_type :type/FK}
124
+ - {:name (format-name "id")
125
+ - :fk_target_field_id nil
126
+ - :semantic_type :type/PK}}
127
+ - (set group-fields)))))))))
128
+ -
129
+ (mt/defdataset composite-pk
130
+ [["songs"
131
+ [{:field-name "artist_id", :base-type :type/Integer, :pk? true}
132
+ {:field-name "song_id", :base-type :type/Integer, :pk? true}]
133
+ [[1 2]]]])
134
+ -
135
+ - (deftest dataset-with-custom-composite-pk-test
136
+ - (mt/test-drivers (->> (mt/normal-drivers-with-feature :metadata/key-constraints)
137
+ - (filter (mt/sql-jdbc-drivers))
138
+ - ;; Timeseries drivers currently support only testing with pre-loaded dataset
139
+ - (remove (tqpt/timeseries-drivers)))
140
+ - (mt/dataset composite-pk
141
+ - (let [format-name #(ddl.i/format-name driver/*driver* %)]
142
+ - (testing "(artist_id, song_id) is a PK"
143
+ - (is (= #{(format-name "artist_id")
144
+ - (format-name "song_id")}
145
+ - (t2/select-fn-set :name :model/Field
146
+ - :table_id (mt/id :songs)
147
+ - :semantic_type :type/PK))))))))
0 commit comments