fix negative number defaults for Firebird
[dbsrgits/DBIx-Class-Schema-Loader.git] / lib / DBIx / Class / Schema / Loader / DBI / Informix.pm
index a945018..e4f8f2e 100644 (file)
@@ -29,6 +29,10 @@ sub _setup {
     if (not defined $self->preserve_case) {
         $self->preserve_case(0);
     }
+    elsif ($self->preserve_case) {
+        $self->schema->storage->sql_maker->quote_char('"');
+        $self->schema->storage->sql_maker->name_sep('.');
+    }
 }
 
 sub _tables_list {
@@ -182,7 +186,7 @@ EOF
                 $result->{$col}{data_type} = 'date';
             }
             elsif ($type == 10) {
-                $result->{$col}{data_type} = 'datetime';
+                $result->{$col}{data_type} = 'datetime year to fraction(5)';
             }
         }
 
@@ -199,12 +203,13 @@ EOF
             $result->{$col}{default_value} = \$today;
         }
         else {
-            $default = (split ' ', $default)[-1];
+            $default = (split ' ', $default, 2)[-1];
+
+            $default =~ s/\s+\z// if looks_like_number $default;
 
             # remove trailing 0s in floating point defaults
-            if (looks_like_number $default && int $default != $default) {
-                $default =~ s/0+\z//;
-            }
+            # disabled, this is unsafe since it might be a varchar default
+            #$default =~ s/0+\z// if $default =~ /^\d+\.\d+\z/;
 
             $result->{$col}{default_value} = $default;
         }