Sybase: set inflate_datetime => 1 for 'AS getdate()' computed columns
Rafael Kitover [Fri, 5 Mar 2010 21:53:00 +0000 (16:53 -0500)]
Changes
lib/DBIx/Class/Schema/Loader/DBI/Sybase.pm
t/15sybase_common.t

diff --git a/Changes b/Changes
index 4d93cc2..8f8b2aa 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,7 @@
 Revision history for Perl extension DBIx::Class::Schema::Loader
 
+        - set inflate_datetime => 1 for 'AS getdate()' computed columns in
+          Sybase
         - preliminary Firebird support
         - use introspection pragmas instead of regexes to introspect SQLite
           (hobbs)
index 145eef9..186581f 100644 (file)
@@ -253,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/;
index 749aac3..83b24fe 100644 (file)
@@ -65,7 +65,7 @@ my $tester = dbixcsl_common_tests->new(
             },
         ],
         drop  => [ qw/ sybase_loader_test1 sybase_loader_test2 / ],
-        count => 36,
+        count => 37,
         run   => sub {
             my ($schema, $monikers, $classes) = @_;
 
@@ -143,6 +143,8 @@ my $tester = dbixcsl_common_tests->new(
             is_deeply $rsrc->column_info('the_decimal')->{size}, [6,3],
                 'size for DECIMAL(precision, scale) is correct';
 
+            is $schema->resultset($monikers->{loader_test35})->result_source->column_info('a_function')->{inflate_datetime}, 1,
+                'AS getdate() columns get inflate_datetime => 1';
         },
     },
 );