From bc566a110b002975bbb6ef13382d1263798ad545 Mon Sep 17 00:00:00 2001
From: Nick Clemens <nick@bywatersolutions.com>
Date: Wed, 3 Nov 2021 16:53:47 +0000
Subject: [PATCH] Bug 29409: Check for data that violates a constraint to avoid
 update problems

https://bugs.koha-community.org/show_bug.cgi?id=29049
---
 installer/data/mysql/updatedatabase.pl | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index bf8fc0a946..ca1ff46afb 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -23195,6 +23195,11 @@ if( CheckVersion( $DBversion ) ) {
         ALTER TABLE letter ADD CONSTRAINT message_transport_type_fk FOREIGN KEY (message_transport_type) REFERENCES message_transport_types(message_transport_type) ON DELETE CASCADE ON UPDATE CASCADE
     } );
 
+    # Foreign keys should prevent this, however, it has been found in many production databases
+    $dbh->do( q{
+        DELETE borrower_message_transport_preferences FROM borrower_message_transport_preferences LEFT JOIN borrower_message_preferences USING (borrower_message_preference_id) WHERE borrower_message_preferences.borrower_message_preference_id IS NULL
+    } );
+
     $dbh->do(q{
         UPDATE message_transport_types SET message_transport_type = "itiva" WHERE message_transport_type = "phone"
     });
-- 
2.20.1