From: ivan Date: Thu, 2 Nov 2006 07:18:55 +0000 (+0000) Subject: Fixes for dropping nullability on old Pg (<= 7.2) X-Git-Tag: DBIx_DBSchema_0_32~4 X-Git-Url: http://git.freeside.biz/gitweb/?p=DBIx-DBSchema.git;a=commitdiff_plain;h=7d32dbb1d615e1b675857c81fbb8361493b61e6b Fixes for dropping nullability on old Pg (<= 7.2) --- diff --git a/Changes b/Changes index 9f67fef..6c56511 100644 --- a/Changes +++ b/Changes @@ -6,6 +6,7 @@ Revision history for Perl extension DBIx::DBSchema. - Error reporting for load constructor - Update documentation wrt supported databases and new update_schema stuff + - Fixes for dropping nullability on old Pg (<= 7.2) 0.31 Thu Mar 30 05:28:20 PST 2006 - more schema update stuff: 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...