more Oracle type info fixes
Rafael Kitover [Mon, 10 May 2010 14:53:12 +0000 (10:53 -0400)]
lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm
t/13db2_common.t
t/14ora_common.t

index 7e0b33e..b2e1f5a 100644 (file)
@@ -200,6 +200,18 @@ AND upper(trigger_type) LIKE '%BEFORE EACH ROW%' AND lower(triggering_event) LIK
                 $info->{size} = [ $day_precision, $second_precision ];
             }
         }
+        elsif (lc($info->{data_type}) eq 'float') {
+            $info->{original}{data_type} = 'float';
+            $info->{original}{size}      = $info->{size};
+
+            if ($info->{size} <= 63) {
+                $info->{data_type} = 'real';
+            }
+            else {
+                $info->{data_type} = 'double precision';
+            }
+            delete $info->{size};
+        }
         elsif (lc($info->{data_type}) eq 'urowid' && $info->{size} == 4000) {
             delete $info->{size};
         }
@@ -207,6 +219,14 @@ AND upper(trigger_type) LIKE '%BEFORE EACH ROW%' AND lower(triggering_event) LIK
             $info->{data_type}           = 'datetime';
             $info->{original}{data_type} = 'date';
         }
+        elsif (lc($info->{data_type}) eq 'binary_float') {
+            $info->{data_type}           = 'real';
+            $info->{original}{data_type} = 'binary_float';
+        } 
+        elsif (lc($info->{data_type}) eq 'binary_double') {
+            $info->{data_type}           = 'double precision';
+            $info->{original}{data_type} = 'binary_double';
+        } 
 
         if (eval { lc(${ $info->{default_value} }) eq 'sysdate' }) {
             $info->{original}{default_value} = $info->{default_value};
index c21fec8..4cbb7fd 100644 (file)
@@ -14,7 +14,7 @@ my $tester = dbixcsl_common_tests->new(
     password       => $password,
     null           => '',
     data_types => {
-        'timestamp default current timestamp' => { data_type => 'timestamp', default_value => \'current_timestamp' }
+        'timestamp DEFAULT CURRENT TIMESTAMP' => { data_type => 'timestamp', default_value => \'current_timestamp' }
     },
 );
 
index 1a67123..639e416 100644 (file)
@@ -50,7 +50,7 @@ my $tester = dbixcsl_common_tests->new(
 
         # Numeric Types
         #
-        # everything is alised to NUMBER
+        # integer/decimal/numeric is alised to NUMBER
         #
         'decimal'      => { data_type => 'integer' },
         'dec'          => { data_type => 'integer' },
@@ -68,8 +68,15 @@ my $tester = dbixcsl_common_tests->new(
         'int'          => { data_type => 'integer' },
         'smallint'     => { data_type => 'integer' },
 
-        'binary_float'  => { data_type => 'binary_float' },
-        'binary_double' => { data_type => 'binary_double' },
+        'binary_float'  => { data_type => 'real',             original => { data_type => 'binary_float'  } },
+        'binary_double' => { data_type => 'double precision', original => { data_type => 'binary_double' } },
+
+        # these are not mentioned in the summary chart, must be aliased
+       real            => { data_type => 'real',             original => { data_type => 'float', size => 63  } },
+        'float(63)'     => { data_type => 'real',             original => { data_type => 'float', size => 63  } },
+        'float(64)'     => { data_type => 'double precision', original => { data_type => 'float', size => 64  } },
+        'float(126)'    => { data_type => 'double precision', original => { data_type => 'float', size => 126 } },
+        float           => { data_type => 'double precision', original => { data_type => 'float', size => 126 } },
 
         # Blob Types
         'raw(50)'      => { data_type => 'raw', size => 50 },