rewrite Pg "time without time zone" as "time"
Rafael Kitover [Sun, 9 May 2010 08:19:40 +0000 (04:19 -0400)]
TODO
lib/DBIx/Class/Schema/Loader/DBI/Pg.pm
t/12pg_common.t

diff --git a/TODO b/TODO
index 96451a3..6db4250 100644 (file)
--- a/TODO
+++ b/TODO
@@ -37,6 +37,7 @@
     - correct handling of CamelCase names with numbers (eg. foo2Bar -> Foo2Bar,
       foo2_bar)
     - check rel accessors for method conflicts
+    - add an option to add extra code to Result classes
 
 - Relationships
    - Re-scan relations/tables after initial relation setup to find
@@ -68,7 +69,6 @@
     - preserve_case mode
     - domains
   - Oracle
-    - data_type tests
     - table/column comments
     - introspect on_update/on_delete/is_deferrable
     - introspect view SQL
index 1910923..5547653 100644 (file)
@@ -150,6 +150,9 @@ sub _columns_info_for {
             if (lc($data_type) eq 'timestamp without time zone') {
                 $info->{data_type} = 'timestamp';
             }
+            elsif (lc($data_type) eq 'time without time zone') {
+                $info->{data_type} = 'time';
+            }
 
             my ($precision) = $self->schema->storage->dbh
                 ->selectrow_array(<<EOF, {}, $table, $col);
@@ -208,7 +211,10 @@ EOF
         elsif (lc($data_type) eq 'character varying') {
             $info->{data_type} = 'varchar';
 
-            $info->{data_type} = 'text' if not $info->{size};
+            if (not $info->{size}) {
+                $info->{data_type}           = 'text';
+                $info->{original}{data_type} = 'varchar';
+            }
         }
         elsif (lc($data_type) eq 'character') {
             $info->{data_type} = 'char';
index 4e94015..8b18c58 100644 (file)
@@ -79,16 +79,17 @@ my $tester = dbixcsl_common_tests->new(
        'char'                           => { data_type => 'char', size => 1 },
        text                             => { data_type => 'text' },
         # varchar with no size has unlimited size, we rewrite to 'text'
-       varchar                          => { data_type => 'text' },
+       varchar                          => { data_type => 'text',
+                                              original => { data_type => 'varchar' } },
 
         # Datetime Types
        date                             => { data_type => 'date' },
        interval                         => { data_type => 'interval' },
        'interval(2)'                    => { data_type => 'interval', size => 2 },
-       time                             => { data_type => 'time without time zone' },
-       'time(2)'                        => { data_type => 'time without time zone', size => 2 },
-       'time without time zone'         => { data_type => 'time without time zone' },
-       'time(2) without time zone'      => { data_type => 'time without time zone', size => 2 },
+       time                             => { data_type => 'time' },
+       'time(2)'                        => { data_type => 'time', size => 2 },
+       'time without time zone'         => { data_type => 'time' },
+       'time(2) without time zone'      => { data_type => 'time', size => 2 },
        'time with time zone'            => { data_type => 'time with time zone' },
        'time(2) with time zone'         => { data_type => 'time with time zone', size => 2 },
        timestamp                        => { data_type => 'timestamp' },