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 f980c00..186581f 100644 (file)
@@ -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();