still need to uc source_name if quotes off
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Oracle / Generic.pm
index 8626419..854566a 100644 (file)
@@ -25,20 +25,6 @@ versions before 9.
 
 =cut
 
-my %ora_reserved = map { $_, 1 } qw(
-    ACCESS ADD ALL ALTER AND ANY AS ASC AUDIT BETWEEN BY CHAR CHECK
-    CLUSTER COLUMN COMMENT COMPRESS CONNECT CREATE CURRENT DATE DECIMAL
-    DEFAULT DELETE DESC DISTINCT DROP ELSE EXCLUSIVE EXISTS FILE FLOAT
-    FOR FROM GRANT GROUP HAVING IDENTIFIED IMMEDIATE IN INCREMENT
-    INDEX INITIAL INSERT INTEGER INTERSECT INTO IS LEVEL LIKE LOCK
-    LONG MAXEXTENTS MINUS MLSLABEL MODE MODIFY NOAUDIT NOCOMPRESS NOT
-    NOWAIT NULL NUMBER OF OFFLINE ON ONLINE OPTION OR ORDER PCTFREE
-    PRIOR PRIVILEGES PUBLIC RAW RENAME RESOURCE REVOKE ROW ROWID ROWNUM
-    ROWS SELECT SESSION SET SHARE SIZE SMALLINT START SUCCESSFUL SYNONYM
-    SYSDATE TABLE THEN TO TRIGGER UID UNION UNIQUE UPDATE USER VALIDATE
-    VALUES VARCHAR VARCHAR2 VIEW WHENEVER WHERE WITH
-);
-
 use base qw/DBIx::Class::Storage::DBI/;
 use mro 'c3';
 
@@ -47,11 +33,15 @@ sub deployment_statements {
   my ($schema, $type, $version, $dir, $sqltargs, @rest) = @_;
 
   $sqltargs ||= {};
-       my $quote_char = $self->schema->storage->{'_sql_maker_opts'}->{'quote_char'};
-       $sqltargs->{quote_table_names} = 0 unless $quote_char;
-       $sqltargs->{quote_field_names} = 0 unless $quote_char;
+  my $quote_char = $self->schema->storage->{'_sql_maker_opts'}->{'quote_char'};
+  $sqltargs->{quote_table_names} = 0 unless $quote_char;
+  $sqltargs->{quote_field_names} = 0 unless $quote_char;
+
+  my $oracle_version = eval { $self->_get_dbh->get_info(18) };
+
+  $sqltargs->{producer_args}{oracle_version} = $oracle_version;
 
-       $self->next::method($schema, $type, $version, $dir, $sqltargs, @rest);
+  $self->next::method($schema, $type, $version, $dir, $sqltargs, @rest);
 }
 
 sub _dbh_last_insert_id {
@@ -68,9 +58,6 @@ sub _dbh_last_insert_id {
 sub _dbh_get_autoinc_seq {
   my ($self, $dbh, $source, $col) = @_;
 
-       # check if quoting is on
-       my $quote_char = $self->schema->storage->{'_sql_maker_opts'}->{'quote_char'};
-
   # look up the correct sequence automatically
   my $sql = q{
     SELECT trigger_body FROM ALL_TRIGGERS t
@@ -91,7 +78,10 @@ sub _dbh_get_autoinc_seq {
   else {
       $source_name = ${$source->name};
   }
-       $source_name = uc($source_name) unless $quote_char;
+
+  unless ($self->schema->storage->{'_sql_maker_opts'}->{'quote_char'}) {
+    $source_name =  uc($source_name);
+  }
 
   # check for fully-qualified name (eg. SCHEMA.TABLENAME)
   if ( my ( $schema, $table ) = $source_name =~ /(\w+)\.(\w+)/ ) {
@@ -102,9 +92,8 @@ sub _dbh_get_autoinc_seq {
       AND t.status = 'ENABLED'
     };
     $sth = $dbh->prepare($sql);
-               my $table_name = $self -> sql_maker -> _quote($table);
-               #my $schema_name = $self -> sql_maker -> _quote($schema);
-               my $schema_name = uc($schema);
+       my $table_name  = $self -> sql_maker -> _quote($table);
+       my $schema_name = $self -> sql_maker -> _quote($schema);
 
     $sth->execute( $schema_name, $table_name );
   }