From d267e2fe174506ed066b1810659bf9dcf87681b0 Mon Sep 17 00:00:00 2001 From: Lucas Gass Date: Wed, 24 Apr 2024 17:05:18 +0000 Subject: [PATCH] Bug 36687: Update itemtypes.notforloan to not allow NULL values and change to tinyint(1) To test: 1. Have some itemtypes.notforloan values set to NULL. 2. APPLY PACTH, updatedatabase, restart_all 3. When you updatedatabase those values should be set to 0. 4. Try updating an itemtypes.notforloan value to NULL. You cannot. Signed-off-by: Matt Blenkinsop Signed-off-by: Tomas Cohen Arazi Signed-off-by: Katrin Fischer --- .../data/mysql/atomicupdate/bug_36687.pl | 26 +++++++++++++++++++ installer/data/mysql/kohastructure.sql | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100755 installer/data/mysql/atomicupdate/bug_36687.pl diff --git a/installer/data/mysql/atomicupdate/bug_36687.pl b/installer/data/mysql/atomicupdate/bug_36687.pl new file mode 100755 index 0000000000..6a515d2b82 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_36687.pl @@ -0,0 +1,26 @@ +use Modern::Perl; + +return { + bug_number => "36687", + description => "Set itemtypes.notforloan to NOT NULL and tinyint(1)", + up => sub { + my ($args) = @_; + my ( $dbh, $out ) = @$args{qw(dbh out)}; + + # Do you stuffs here + my $count_sql = q{SELECT COUNT(*) FROM itemtypes WHERE notforloan IS NULL}; + my ($count) = $dbh->selectrow_array($count_sql); + + if ($count) { + $dbh->do(q{UPDATE itemtypes SET notforloan = 0 WHERE notforloan IS NULL}); + say $out "Updated $count columns where itemtypes.notforloan was NULL"; + } + $dbh->do( + q{ + ALTER TABLE itemtypes MODIFY COLUMN `notforloan` tinyint(1) NOT NULL DEFAULT 0 + } + ); + + say $out "Updated itemtypes.notforlaon column'"; + }, +}; diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 5ddc93703b..f023b4a7e8 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -4138,7 +4138,7 @@ CREATE TABLE `itemtypes` ( `rentalcharge_hourly_calendar` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'controls if the hourly rental fee is calculated directly or using finesCalendar', `defaultreplacecost` decimal(28,6) DEFAULT NULL COMMENT 'default replacement cost', `processfee` decimal(28,6) DEFAULT NULL COMMENT 'default text be recorded in the column note when the processing fee is applied', - `notforloan` smallint(6) DEFAULT NULL COMMENT '1 if the item is not for loan, 0 if the item is available for loan', + `notforloan` tinyint(1) NOT NULL DEFAULT 0 COMMENT '1 if the item is not for loan, 0 if the item is available for loan', `imageurl` varchar(200) DEFAULT NULL COMMENT 'URL for the item type icon', `summary` mediumtext DEFAULT NULL COMMENT 'information from the summary field, may include HTML', `checkinmsg` varchar(255) DEFAULT NULL COMMENT 'message that is displayed when an item with the given item type is checked in', -- 2.20.1