From 26c94e76cdd91af42200b2de201b7a92779f0cca Mon Sep 17 00:00:00 2001
From: Ngoc Khuat <qn.khuat@gmail.com>
Date: Wed, 3 Jan 2024 18:05:44 +0700
Subject: [PATCH] Modify type metabase_field.database_required to bit(1) in
 mysql (#37213)

---
 .../migrations/001_update_migrations.yaml     | 22 +++++++++++++++++++
 test/metabase/db/schema_migrations_test.clj   |  8 +++++++
 2 files changed, 30 insertions(+)

diff --git a/resources/migrations/001_update_migrations.yaml b/resources/migrations/001_update_migrations.yaml
index 739d1e8341e..dc06d33bf18 100644
--- a/resources/migrations/001_update_migrations.yaml
+++ b/resources/migrations/001_update_migrations.yaml
@@ -5122,6 +5122,28 @@ databaseChangeLog:
         - dbms:
             type: mysql,mariadb
 
+  - changeSet:
+      id: v49.00-060
+      author: qnkhuat
+      comment: >-
+        Added 0.49.0 - modify type of metabase_field.database_partitioned
+        from boolean to ${boolean.type} on mysql,mariadb
+      dbms: mysql,mariadb
+      changes:
+        - modifyDataType:
+            tableName: metabase_field
+            columnName: database_partitioned
+            newDataType: ${boolean.type}
+      rollback:
+        - modifyDataType:
+            tableName: metabase_field
+            columnName: database_partitioned
+            newDataType: boolean
+      preConditions:
+        - onFail: MARK_RAN
+        - dbms:
+            type: mysql,mariadb
+
   # >>>>>>>>>> DO NOT ADD NEW MIGRATIONS BELOW THIS LINE! ADD THEM ABOVE <<<<<<<<<<
 
 
diff --git a/test/metabase/db/schema_migrations_test.clj b/test/metabase/db/schema_migrations_test.clj
index e60050ccdd4..cf3b6826777 100644
--- a/test/metabase/db/schema_migrations_test.clj
+++ b/test/metabase/db/schema_migrations_test.clj
@@ -757,3 +757,11 @@
         (is (t2/exists? :pulse :id dash-subscription-id))
         (is (t2/exists? :pulse :id alert-id))
         (is (not (t2/exists? :pulse :id legacy-pulse-id)))))))
+
+(deftest no-tiny-int-columns
+  (mt/test-driver :mysql
+    (testing "All boolean columns in mysql, mariadb should be bit(1)"
+      (is (= [{:table_name "DATABASECHANGELOGLOCK" :column_name "LOCKED"}] ;; outlier because this is liquibase's table
+             (t2/query
+              (format "SELECT table_name, column_name FROM information_schema.columns WHERE data_type LIKE 'tinyint%%' AND table_schema = '%s';"
+                      (-> (mdb.connection/data-source) .getConnection .getCatalog))))))))
-- 
GitLab