X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FProducer%2FOracle.pm;h=f8cbe5f6139dc49a30f4fa33f98f61fee82f47e3;hb=3b9249fb0058ac9896a10c9ca8b87ddd40f6c074;hp=ff0e1790282a388db7677e4495ffe1c752a5abef;hpb=3c8c112951fb886e692003740dbdfda31d9615ac;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Producer/Oracle.pm b/lib/SQL/Translator/Producer/Oracle.pm index ff0e179..f8cbe5f 100644 --- a/lib/SQL/Translator/Producer/Oracle.pm +++ b/lib/SQL/Translator/Producer/Oracle.pm @@ -118,7 +118,7 @@ my %translate = ( # MySQL types # bigint => 'number', - double => [ 'float', 126 ], + double => 'float', decimal => 'number', float => 'float', int => 'number', @@ -133,7 +133,7 @@ my %translate = ( mediumblob => 'blob', longblob => 'blob', tinytext => 'varchar2', - text => [ 'varchar2', 4000 ], + text => 'clob', longtext => 'clob', mediumtext => 'clob', enum => 'varchar2', @@ -349,7 +349,7 @@ sub create_table { if ($name) { # Force prepend of table_name as ORACLE doesn't allow duplicate # CONSTRAINT names even for different tables (ORA-02264) - $name = "${table_name}_$name" unless $name =~ /^$table_name/; + $name = mk_name( "${table_name}_$name", 'u' ) unless $name =~ /^$table_name/; } else { $name = mk_name( $table_name, 'u' ); @@ -625,6 +625,16 @@ sub create_field { undef @size; } + # + # Fixes ORA-00906: missing right parenthesis + # if size is 0 or undefined + # + for (qw/varchar2/) { + if ( $data_type =~ /^($_)$/i ) { + $size[0] ||= $max_size{$_}; + } + } + $field_def .= " $data_type"; if ( defined $size[0] && $size[0] > 0 ) { $field_def .= '(' . join( ',', @size ) . ')';