57 lines
1.9 KiB
Perl
Executable file
57 lines
1.9 KiB
Perl
Executable file
use Modern::Perl;
|
|
|
|
return {
|
|
bug_number => 30449,
|
|
description => "Check borrower_attribute_types FK constraint",
|
|
up => sub {
|
|
my ($args) = @_;
|
|
my ($dbh, $out) = @$args{qw(dbh out)};
|
|
|
|
if( foreign_key_exists('borrower_attribute_types', 'category_code_fk') ) {
|
|
$dbh->do( q|ALTER TABLE borrower_attribute_types DROP CONSTRAINT category_code_fk| );
|
|
if( index_exists('borrower_attribute_types', 'category_code_fk') ) {
|
|
$dbh->do( q|ALTER TABLE borrower_attribute_types DROP INDEX category_code_fk| );
|
|
}
|
|
}
|
|
|
|
if (
|
|
!foreign_key_exists(
|
|
'borrower_attribute_types', 'borrower_attribute_types_ibfk_1'
|
|
)
|
|
)
|
|
{
|
|
|
|
my $sth = $dbh->prepare(
|
|
q{
|
|
SELECT category_code
|
|
FROM borrower_attribute_types
|
|
WHERE category_code NOT IN (SELECT categorycode FROM categories);
|
|
}
|
|
);
|
|
|
|
$sth->execute;
|
|
|
|
my @invalid_categories;
|
|
while ( my $row = $sth->fetchrow_arrayref() ) {
|
|
push( @invalid_categories, $row->[0] );
|
|
}
|
|
|
|
if (@invalid_categories) {
|
|
die "The 'borrower_attribute_types' table contains "
|
|
. "references to invalid category codes: "
|
|
. join( ', ', @invalid_categories );
|
|
}
|
|
|
|
if ( !index_exists( 'borrower_attribute_types', 'category_code' ) )
|
|
{
|
|
$dbh->do(q|
|
|
ALTER TABLE borrower_attribute_types ADD INDEX category_code (category_code)
|
|
|);
|
|
}
|
|
$dbh->do(q|
|
|
ALTER TABLE borrower_attribute_types
|
|
ADD CONSTRAINT borrower_attribute_types_ibfk_1 FOREIGN KEY (`category_code`) REFERENCES `categories` (`categorycode`)
|
|
|);
|
|
}
|
|
},
|
|
};
|