Line 0
Link Here
|
|
|
1 |
use Modern::Perl; |
2 |
|
3 |
return { |
4 |
bug_number => 30899, |
5 |
description => "Check borrower_attribute_types FK constraint (30449 follow-up)", |
6 |
up => sub { |
7 |
my ($args) = @_; |
8 |
my ($dbh, $out) = @$args{qw(dbh out)}; |
9 |
|
10 |
if( foreign_key_exists('borrower_attribute_types', 'category_code_fk') ) { |
11 |
$dbh->do( q|ALTER TABLE borrower_attribute_types DROP FOREIGN KEY category_code_fk| ); |
12 |
if( index_exists('borrower_attribute_types', 'category_code_fk') ) { |
13 |
$dbh->do( q|ALTER TABLE borrower_attribute_types DROP INDEX category_code_fk| ); |
14 |
} |
15 |
} |
16 |
|
17 |
if ( |
18 |
!foreign_key_exists( |
19 |
'borrower_attribute_types', 'borrower_attribute_types_ibfk_1' |
20 |
) |
21 |
) |
22 |
{ |
23 |
|
24 |
my $sth = $dbh->prepare( |
25 |
q{ |
26 |
SELECT category_code |
27 |
FROM borrower_attribute_types |
28 |
WHERE category_code NOT IN (SELECT categorycode FROM categories); |
29 |
} |
30 |
); |
31 |
|
32 |
$sth->execute; |
33 |
|
34 |
my @invalid_categories; |
35 |
while ( my $row = $sth->fetchrow_arrayref() ) { |
36 |
push( @invalid_categories, $row->[0] ); |
37 |
} |
38 |
|
39 |
if (@invalid_categories) { |
40 |
die "The 'borrower_attribute_types' table contains " |
41 |
. "references to invalid category codes: " |
42 |
. join( ', ', @invalid_categories ); |
43 |
} |
44 |
|
45 |
if ( !index_exists( 'borrower_attribute_types', 'category_code' ) ) |
46 |
{ |
47 |
$dbh->do(q| |
48 |
ALTER TABLE borrower_attribute_types ADD INDEX category_code (category_code) |
49 |
|); |
50 |
} |
51 |
$dbh->do(q| |
52 |
ALTER TABLE borrower_attribute_types |
53 |
ADD CONSTRAINT borrower_attribute_types_ibfk_1 FOREIGN KEY (`category_code`) REFERENCES `categories` (`categorycode`) |
54 |
|); |
55 |
} |
56 |
}, |
57 |
}; |