[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