#@ISA = qw(Exporter);
@ISA = qw();
-$VERSION = '0.06';
+$VERSION = '0.08';
=head1 NAME
$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) = @_;
my $name = $self->name;
-# my $driver = $dbh ? _load_driver($dbh) : '';
+ my $driver = $dbh ? _load_driver($dbh) : '';
my @r = ();
# 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...
# this one could be more complicated, need to set a DEFAULT value and update
# the table first...
if ( $self->null && ! $new->null ) {
- push @r, "ALTER TABLE $table ALTER COLUMN $name SET NOT NULL";
+
+ if ( $driver eq 'Pg' && $dbh->{'pg_server_version'} < 70300 ) {
+ push @r, "UPDATE pg_attribute SET attnotnull = TRUE
+ WHERE attname = '$name'
+ AND attrelid = ( SELECT oid FROM pg_class
+ WHERE relname = '$table'
+ )";
+ } else {
+ push @r, "ALTER TABLE $table ALTER COLUMN $name SET NOT NULL";
+ }
}
# change other stuff...