Sybase: set inflate_datetime => 1 for 'AS getdate()' computed columns
[dbsrgits/DBIx-Class-Schema-Loader.git] / lib / DBIx / Class / Schema / Loader / DBI / Sybase.pm
index 050e231..186581f 100644 (file)
@@ -6,7 +6,7 @@ use base 'DBIx::Class::Schema::Loader::DBI::Sybase::Common';
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.05002';
+our $VERSION = '0.05003';
 
 =head1 NAME
 
@@ -29,14 +29,6 @@ See L<DBIx::Class::Schema::Loader::Base>.
 
 sub _is_case_sensitive { 1 }
 
-sub _setup {
-    my $self = shift;
-
-    $self->next::method(@_);
-    $self->{db_schema} ||= $self->_build_db_schema;
-    $self->_set_quote_char_and_name_sep;
-}
-
 sub _rebless {
     my $self = shift;
 
@@ -261,6 +253,10 @@ WHERE o.name = @{[ $dbh->quote($table) ]} AND o.type = 'U'
             if ($default =~ /^AS \s+ (\S+)/ix) {
                 my $function = $1;
                 $res->{default_value} = \$function;
+
+                if ($function =~ /^getdate\b/) {
+                    $res->{inflate_datetime} = 1;
+                }
             }
             elsif ($default =~ /^DEFAULT \s+ (\S+)/ix) {
                 my ($constant_default) = $1 =~ /^['"\[\]]?(.*?)['"\[\]]?\z/;
@@ -287,11 +283,9 @@ WHERE o.name = @{[ $dbh->quote($table) ]} AND o.type = 'U'
 }
 
 sub _extra_column_info {
-    my ($self, $info) = @_;
+    my ($self, $table, $column, $info, $dbi_info) = @_;
     my %extra_info;
 
-    my ($table, $column) = @$info{qw/TABLE_NAME COLUMN_NAME/};
-
     my $dbh = $self->schema->storage->dbh;
     my $sth = $dbh->prepare(qq{SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = @{[ $dbh->quote($table) ]}) AND (status & 0x80) = 0x80 AND name = @{[ $dbh->quote($column) ]}});
     $sth->execute();