X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=DBSchema%2FColumn.pm;h=14351ece6957bded993cd6d4861f2e7dfd25d4e8;hb=7d32dbb1d615e1b675857c81fbb8361493b61e6b;hp=ca6ecc8011a4bfb0c0b192b80da5b337b33daf53;hpb=2854f484933427a59f771a60f8928fb1d1b3a379;p=DBIx-DBSchema.git diff --git a/DBSchema/Column.pm b/DBSchema/Column.pm index ca6ecc8..14351ec 100644 --- a/DBSchema/Column.pm +++ b/DBSchema/Column.pm @@ -9,7 +9,7 @@ use DBIx::DBSchema::_util qw(_load_driver _dbh); #@ISA = qw(Exporter); @ISA = qw(); -$VERSION = '0.07'; +$VERSION = '0.08'; =head1 NAME @@ -360,7 +360,8 @@ sub sql_add_column { $real_null = $self->null; $self->null('NULL'); - if ( $dbh->{'pg_server_version'} > 70300 ) { + #if ( $dbh->{'pg_server_version'} > 70300 ) { #this seemed to work on 7.3 + if ( $dbh->{'pg_server_version'} > 70400 ) { #after all... push @after_add, sub { my($table, $column) = @_; @@ -429,7 +430,7 @@ sub sql_alter_column { my $name = $self->name; -# my $driver = $dbh ? _load_driver($dbh) : ''; + my $driver = $dbh ? _load_driver($dbh) : ''; my @r = (); @@ -439,7 +440,16 @@ sub sql_alter_column { # change nullability from NOT NULL to NULL if ( ! $self->null && $new->null ) { - push @r, "ALTER TABLE $table ALTER COLUMN $name DROP NOT NULL"; + + if ( $driver eq 'Pg' && $dbh->{'pg_server_version'} < 70300 ) { + push @r, "UPDATE pg_attribute SET attnotnull = FALSE + WHERE attname = '$name' + AND attrelid = ( SELECT oid FROM pg_class + WHERE relname = '$table' + )"; + } else { + push @r, "ALTER TABLE $table ALTER COLUMN $name DROP NOT NULL"; + } } # change nullability from NULL to NOT NULL...