X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI%2FOracle.pm;h=853548a3e3392af0b44f7d97d47cb111ba079470;hb=029e9d1eef4396f25f2badadbabfe936712cf15e;hp=47bec5a339ec5f8bdf0f078a7f328195bb3b7aff;hpb=48c1a6c5fea9f320f94d583f79936b43c6d38710;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm b/lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm index 47bec5a..853548a 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm @@ -88,19 +88,22 @@ select deferrable from all_constraints where owner = ? and table_name = ? and constraint_name = ? and status = 'ENABLED' EOF + my @enabled_rels; foreach my $rel (@$rels) { # Oracle does not have update rules $rel->{attrs}{on_update} = 'NO ACTION';; # DBD::Oracle's foreign_key_info does not return DEFERRABILITY, so we get it ourselves - my ($deferrable) = $self->dbh->selectrow_array( + # Also use this to filter out disabled foreign keys, which are returned by DBD::Oracle < 1.76 + my $deferrable = $self->dbh->selectrow_array( $deferrable_sth, undef, $table->schema, $table->name, $rel->{_constraint_name} - ); + ) or next; - $rel->{attrs}{is_deferrable} = $deferrable && $deferrable =~ /^DEFERRABLE/i ? 1 : 0; + $rel->{attrs}{is_deferrable} = $deferrable =~ /^DEFERRABLE/i ? 1 : 0; + push @enabled_rels, $rel; } - return $rels; + return \@enabled_rels; } sub _table_uniq_info {