X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI%2FOracle.pm;h=dd10088b7aa8fafbf50690946756dad09084c57f;hb=306bf770bf08b06f92863808b1938f2fc704acb0;hp=c723af2fe7c03db944f1c6dfdde9203900921985;hpb=802a117545a5bd1a5d20152835a3aa7fb2e7b39f;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 c723af2..dd10088 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm @@ -8,7 +8,7 @@ use Try::Tiny; use DBIx::Class::Schema::Loader::Utils qw/sigwarn_silencer/; use namespace::clean; -our $VERSION = '0.07041'; +our $VERSION = '0.07047'; =head1 NAME @@ -85,22 +85,25 @@ sub _table_fk_info { my $deferrable_sth = $self->dbh->prepare_cached(<<'EOF'); select deferrable from all_constraints -where owner = ? and table_name = ? and constraint_name = ? +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 { @@ -112,7 +115,8 @@ FROM all_constraints ac, all_cons_columns acc WHERE acc.table_name=? AND acc.owner = ? AND ac.table_name = acc.table_name AND ac.owner = acc.owner AND acc.constraint_name = ac.constraint_name - AND ac.constraint_type='U' + AND ac.constraint_type = 'U' + AND ac.status = 'ENABLED' ORDER BY acc.position EOF @@ -177,7 +181,7 @@ sub _columns_info_for { my $sth = $self->dbh->prepare_cached(<<'EOF', {}, 1); SELECT trigger_body FROM all_triggers -WHERE table_name = ? AND table_owner = ? +WHERE table_name = ? AND table_owner = ? AND status = 'ENABLED' AND upper(trigger_type) LIKE '%BEFORE EACH ROW%' AND lower(triggering_event) LIKE '%insert%' EOF @@ -405,14 +409,24 @@ sub _dbh_column_info { return $self->next::method(@_); } +sub _view_definition { + my ($self, $view) = @_; + + return scalar $self->schema->storage->dbh->selectrow_array(<<'EOF', {}, $view->schema, $view->name); +SELECT text +FROM all_views +WHERE owner = ? AND view_name = ? +EOF +} + =head1 SEE ALSO L, L, L -=head1 AUTHOR +=head1 AUTHORS -See L and L. +See L. =head1 LICENSE