Added an 'alter sequence' line to the parser grammer which will simply skip over...
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Producer / SQLite.pm
index 4a870b2..75f1d63 100644 (file)
@@ -90,6 +90,7 @@ sub mk_name {
                         : $max_id_length;
     $basename         = substr( $basename, 0, $max_name ) 
                         if length( $basename ) > $max_name;
+    $basename         =~ s/\./_/g;
     my $name          = $type ? "${type}_$basename" : $basename;
 
     if ( $basename ne $basename_orig and $critical ) {
@@ -283,9 +284,11 @@ sub create_index
 
     # strip any field size qualifiers as SQLite doesn't like these
     my @fields = map { s/\(\d+\)$//; $_ } $index->fields;
+    (my $index_table_name = $index->table->name) =~ s/^.+?\.//; # table name may not specify schema
+    warn "removing schema name from '" . $index->table->name . "' to make '$index_table_name'\n" if $WARN;
     my $index_def =  
-    "CREATE ${type}INDEX $name ON " . $index->table->name .
-        ' (' . join( ', ', @fields ) . ')';
+    "CREATE ${type]INDEX $name on " . $index_table_name .
+        ' (' . join( ', ', @fields ) . ');';
 
     return $index_def;
 }
@@ -297,10 +300,12 @@ sub create_constraint
     my $name   = $c->name;
     $name      = mk_name($c->table->name, $name);
     my @fields = $c->fields;
+    (my $index_table_name = $c->table->name) =~ s/^.+?\.//; # table name may not specify schema
+    warn "removing schema name from '" . $c->table->name . "' to make '$index_table_name'\n" if $WARN;
 
     my $c_def =  
-    "CREATE UNIQUE INDEX $name ON " . $c->table->name .
-        ' (' . join( ', ', @fields ) . ')';
+    "CREATE UNIQUE INDEX $name on " . $index_table_name .
+        ' (' . join( ', ', @fields ) . ');';
 
     return $c_def;
 }