Bug 29605: Add missing constraints from bug 15067
authorTomas Cohen Arazi <tomascohen@theke.io>
Tue, 30 Nov 2021 22:44:36 +0000 (19:44 -0300)
committerFridolin Somers <fridolin.somers@biblibre.com>
Wed, 2 Feb 2022 07:39:38 +0000 (21:39 -1000)
This patch fixes a missed update to kohastructure.sql.

To test:
1. Checkout prior to bug 15067
(ab270c026be06f08745a14d1aea992877d20f812) would work.
2.  Run:
   $ reset_all
3. Checkout v21.11.00
4. Run:
   $ updatedatabase
   $ koha-mysql kohadev
   > SHOW CREATE TABLE language_subtag_registry;
=> SUCCESS: There's UNIQUE KEY uniq_lang (subtag, type)
5. Run:
   > SHOW CREATE TABLE language_descriptions;
=>  SUCCESS: There's UNIQUE KEY uniq_desc (subtag, type, lang)
6. Run:
   > SHOW CREATE TABLE language_rfc4646_to_iso639;
=> SUCCESS: There's UNIQUE KEY uniq_code (rfc4646_subtag, iso639_2_code)
7. Replicate a fresh install. Run:
   $ reset_all
8. Repeat 4, 5 and 6
=> FAIL: The UNIQUE constraints are not there!
9. Apply this patch
10. Run:
   $ reset_all
11. Repeat 8
=> SUCCESS: The UNIQUE constraints are there!
12. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
installer/data/mysql/kohastructure.sql

index 0aab2ff..7ae37ec 100644 (file)
@@ -3218,7 +3218,7 @@ CREATE TABLE `language_descriptions` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   PRIMARY KEY (`id`),
   KEY `lang` (`lang`),
-  KEY `subtag_type_lang` (`subtag`,`type`,`lang`)
+  UNIQUE KEY `uniq_desc` (`subtag`,`type`,`lang`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
@@ -3234,7 +3234,8 @@ CREATE TABLE `language_rfc4646_to_iso639` (
   `iso639_2_code` varchar(25) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
   `id` int(11) NOT NULL AUTO_INCREMENT,
   PRIMARY KEY (`id`),
-  KEY `rfc4646_subtag` (`rfc4646_subtag`)
+  KEY `rfc4646_subtag` (`rfc4646_subtag`),
+  UNIQUE KEY `uniq_code` (`rfc4646_subtag`, `iso639_2_code`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
@@ -3280,7 +3281,8 @@ CREATE TABLE `language_subtag_registry` (
   `added` date DEFAULT NULL,
   `id` int(11) NOT NULL AUTO_INCREMENT,
   PRIMARY KEY (`id`),
-  KEY `subtag` (`subtag`)
+  KEY `subtag` (`subtag`),
+  UNIQUE KEY `uniq_lang` (`subtag`, `type`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;