Bug 32162: Add primar key to erm_eholdings_packages_agreements
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 10 Nov 2022 07:06:28 +0000 (08:06 +0100)
committerTomas Cohen Arazi <tomascohen@theke.io>
Fri, 11 Nov 2022 11:51:03 +0000 (08:51 -0300)
Test plan:
Confirm that this change fixes the related TestBuilder.t failure
Confirm that it does not break the eRM app, try to attach an agreement
to a package.

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
installer/data/mysql/atomicupdate/bug_32162.pl [new file with mode: 0755]
installer/data/mysql/kohastructure.sql

diff --git a/installer/data/mysql/atomicupdate/bug_32162.pl b/installer/data/mysql/atomicupdate/bug_32162.pl
new file mode 100755 (executable)
index 0000000..acfecdd
--- /dev/null
@@ -0,0 +1,24 @@
+use Modern::Perl;
+
+return {
+    bug_number => "31162",
+    description => "Add primary key to erm_eholdings_packages_agreements",
+    up => sub {
+        my ($args) = @_;
+        my ($dbh, $out) = @$args{qw(dbh out)};
+        unless ( primary_key_exists('erm_eholdings_packages_agreements') ){
+            $dbh->do(q{
+                ALTER TABLE erm_eholdings_packages_agreements
+                DROP FOREIGN KEY erm_eholdings_packages_agreements_ibfk_1,
+                DROP FOREIGN KEY erm_eholdings_packages_agreements_ibfk_2,
+                DROP CONSTRAINT erm_eholdings_packages_agreements_uniq,
+                ADD PRIMARY KEY(`package_id`, `agreement_id`)
+            });
+            $dbh->do(q{
+                ALTER TABLE erm_eholdings_packages_agreements
+                ADD CONSTRAINT `erm_eholdings_packages_agreements_ibfk_1` FOREIGN KEY (`package_id`) REFERENCES `erm_eholdings_packages` (`package_id`) ON DELETE CASCADE ON UPDATE CASCADE,
+                ADD CONSTRAINT `erm_eholdings_packages_agreements_ibfk_2` FOREIGN KEY (`agreement_id`) REFERENCES `erm_agreements` (`agreement_id`) ON DELETE CASCADE ON UPDATE CASCADE
+            });
+        }
+    },
+};
index 7015a95..beb7699 100644 (file)
@@ -2990,9 +2990,9 @@ DROP TABLE IF EXISTS `erm_eholdings_packages_agreements`;
 CREATE TABLE `erm_eholdings_packages_agreements` (
     `package_id` INT(11) NOT NULL COMMENT 'link to the package',
     `agreement_id` INT(11) NOT NULL COMMENT 'link to the agreement',
-    UNIQUE KEY `erm_eholdings_packages_agreements_uniq` (`package_id`, `agreement_id`),
     CONSTRAINT `erm_eholdings_packages_agreements_ibfk_1` FOREIGN KEY (`package_id`) REFERENCES `erm_eholdings_packages` (`package_id`) ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT `erm_eholdings_packages_agreements_ibfk_2` FOREIGN KEY (`agreement_id`) REFERENCES `erm_agreements` (`agreement_id`) ON DELETE CASCADE ON UPDATE CASCADE
+    CONSTRAINT `erm_eholdings_packages_agreements_ibfk_2` FOREIGN KEY (`agreement_id`) REFERENCES `erm_agreements` (`agreement_id`) ON DELETE CASCADE ON UPDATE CASCADE,
+    PRIMARY KEY(`package_id`, `agreement_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
 --