Bug 21983: DB update
This patch: - Adds a illrequests.deleted_biblio_id column - Adjusts existing db_rev so people upgrading have the biblio_id value moved to the also created column, before attempting to add the FK constraint on the biblios table. - Adds a new db_rev for those who unfortunately already updated, it should be idempotent. Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
73384f636d
commit
19143be873
3 changed files with 61 additions and 0 deletions
40
installer/data/mysql/atomicupdate/bug_21983_ill_fk.pl
Executable file
40
installer/data/mysql/atomicupdate/bug_21983_ill_fk.pl
Executable file
|
@ -0,0 +1,40 @@
|
|||
use Modern::Perl;
|
||||
|
||||
return {
|
||||
bug_number => "21983",
|
||||
description => "Deleted biblio handling on ILL",
|
||||
up => sub {
|
||||
my ($args) = @_;
|
||||
my ($dbh, $out) = @$args{qw(dbh out)};
|
||||
|
||||
unless ( column_exists( 'illrequests', 'deleted_biblio_id' ) ) {
|
||||
$dbh->do(q{
|
||||
ALTER TABLE illrequests
|
||||
ADD COLUMN `deleted_biblio_id` int(11) DEFAULT NULL COMMENT 'Deleted bib linked to request'
|
||||
AFTER `biblio_id`;
|
||||
});
|
||||
say $out "Added column 'illrequests.deleted_biblio_id'";
|
||||
}
|
||||
|
||||
# Move deleted biblio_id to deleted_biblio_id before setting the FK
|
||||
$dbh->do(q{
|
||||
UPDATE illrequests
|
||||
LEFT JOIN biblio
|
||||
ON illrequests.biblio_id=biblio.biblionumber
|
||||
SET illrequests.biblio_id=NULL,
|
||||
illrequests.deleted_biblio_id=illrequests.biblio_id
|
||||
WHERE biblio.biblionumber IS NULL
|
||||
AND illrequests.biblio_id IS NOT NULL
|
||||
});
|
||||
|
||||
unless ( foreign_key_exists( 'illrequests', 'illrequests_bibfk' ) ) {
|
||||
$dbh->do(q{
|
||||
ALTER TABLE illrequests
|
||||
ADD KEY `illrequests_bibfk` (`biblio_id`),
|
||||
ADD FOREIGN KEY illrequests_bibfk (`biblio_id`) REFERENCES `biblio` (`biblionumber`) ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
});
|
||||
|
||||
say $out "Added foreign key constraint 'illrequests.illrequests_bibfk'";
|
||||
}
|
||||
},
|
||||
};
|
|
@ -7,6 +7,26 @@ return {
|
|||
my ($args) = @_;
|
||||
my ($dbh, $out) = @$args{qw(dbh out)};
|
||||
|
||||
unless ( column_exists( 'illrequests', 'deleted_biblio_id' ) ) {
|
||||
$dbh->do(q{
|
||||
ALTER TABLE illrequests
|
||||
ADD COLUMN `deleted_biblio_id` int(11) DEFAULT NULL COMMENT 'Deleted bib linked to request'
|
||||
AFTER `biblio_id`;
|
||||
});
|
||||
say $out "Added column 'illrequests.deleted_biblio_id'";
|
||||
}
|
||||
|
||||
# Move deleted biblio_id to deleted_biblio_id before setting the FK
|
||||
$dbh->do(q{
|
||||
UPDATE illrequests
|
||||
LEFT JOIN biblio
|
||||
ON illrequests.biblio_id=biblio.biblionumber
|
||||
SET illrequests.biblio_id=NULL,
|
||||
illrequests.deleted_biblio_id=illrequests.biblio_id
|
||||
WHERE biblio.biblionumber IS NULL
|
||||
AND illrequests.biblio_id IS NOT NULL
|
||||
});
|
||||
|
||||
unless ( foreign_key_exists( 'illrequests', 'illrequests_bibfk' ) ) {
|
||||
$dbh->do(q{
|
||||
ALTER TABLE illrequests
|
||||
|
|
|
@ -3294,6 +3294,7 @@ CREATE TABLE `illrequests` (
|
|||
`illrequest_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ILL request number',
|
||||
`borrowernumber` int(11) DEFAULT NULL COMMENT 'Patron associated with request',
|
||||
`biblio_id` int(11) DEFAULT NULL COMMENT 'Potential bib linked to request',
|
||||
`deleted_biblio_id` int(11) DEFAULT NULL COMMENT 'Deleted bib linked to request',
|
||||
`due_date` datetime DEFAULT NULL COMMENT 'Custom date due specified by backend, leave NULL for default date_due calculation',
|
||||
`branchcode` varchar(50) NOT NULL COMMENT 'The branch associated with the request',
|
||||
`status` varchar(50) DEFAULT NULL COMMENT 'Current Koha status of request',
|
||||
|
|
Loading…
Reference in a new issue