[Dbix-class] ->deply doesn't honour qoute_char

onken at houseofdesign.de onken at houseofdesign.de
Fri Jan 16 11:30:44 GMT 2009



> Patches to lib/SQL/Translator/Producer/SQLite.pm welcome :P
> 

--- SQLite.pm	2009-01-16 12:26:21.000000000 +0100
+++ SQLite.pm.fix	2009-01-16 12:26:04.000000000 +0100
@@ -69,8 +69,15 @@
     push @create, header_comment unless ($no_comments);
     push @create, 'BEGIN TRANSACTION';
 
+    my $qt = '';
+    $qt = '"' if ($translator->quote_table_names);
+    my $qf = '';
+    $qf = '"' if ($translator->quote_field_names);
+
     for my $table ( $schema->get_tables ) {
-        push @create, create_table($table, { no_comments => $no_comments,
+        push @create, create_table($table, { quote_table_names => $qt,
+	                                     quote_field_names => $qf,
+					     no_comments => $no_comments,
                                              sqlite_version =>
$sqlite_version,
                                           add_drop_table =>
$add_drop_table,});
     }
@@ -150,7 +157,11 @@
 {
     my ($table, $options) = @_;
 
+    my $qt = $options->{quote_table_names} || '';
+    my $qf = $options->{quote_field_names} || '';
+
     my $table_name = $table->name;
+    $table_name = join('', $qt, $table_name, $qt) if ($qt);
     my $no_comments = $options->{no_comments};
     my $add_drop_table = $options->{add_drop_table};
     my $sqlite_version = $options->{sqlite_version} || 0;
@@ -190,7 +201,7 @@
     #
     my ( @field_defs, $pk_set );
     for my $field ( @fields ) {
-        push @field_defs, create_field($field);
+        push @field_defs, create_field($field, {quote_field_names =>
$qf});
     }
 
     if ( 
@@ -206,7 +217,7 @@
     #
     my $idx_name_default = 'A';
     for my $index ( $table->get_indices ) {
-        push @index_defs, create_index($index);
+        push @index_defs, create_index($index, {quote_field_names =>
$qf});
     }
 
     #
@@ -215,7 +226,7 @@
     my $c_name_default = 'A';
     for my $c ( $table->get_constraints ) {
         next unless $c->type eq UNIQUE; 
-        push @constraint_defs, create_constraint($c);
+        push @constraint_defs, create_constraint($c, {quote_field_names =>
$qf});
     }
 
     $create_table .= join(",\n", map { "  $_" } @field_defs ) . "\n)";
@@ -226,8 +237,9 @@
 sub create_field
 {
     my ($field, $options) = @_;
-
+    my $qf = $options->{quote_field_names};
     my $field_name = $field->name;
+    $field_name = join('', $qf, $field_name, $qf) if($qf);
     debug("PKG: Looking at field '$field_name'\n");
     my $field_comments = $field->comments 
         ? "-- " . $field->comments . "\n  " 
@@ -309,6 +321,8 @@
 
     my $name   = $index->name;
     $name      = mk_name($index->table->name, $name);
+    my $qf = $options->{quote_field_names};
+    $name = join('', $qf, $name, $qf) if($qf);
 
     my $type   = $index->type eq 'UNIQUE' ? "UNIQUE " : ''; 
 
@@ -329,6 +343,8 @@
 
     my $name   = $c->name;
     $name      = mk_name($c->table->name, $name);
+    my $qf = $options->{quote_field_names};
+    $name = join('', $qf, $name, $qf) if($qf);
     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;




More information about the DBIx-Class mailing list