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

Peter Rabbitson rabbit+list at rabbit.us
Fri Jan 16 10:53:42 GMT 2009


onken at houseofdesign.de wrote:
> On Fri, 16 Jan 2009 10:52:05 +0100, Peter Rabbitson <rabbit+list at rabbit.us>
> wrote:
>> onken at houseofdesign.de wrote:
>>> Hi,
>>>
>>> I noticed that $schema->deploy doesn't seem to use the value of
>>> quote_char
>>> to quote the output.
>>> The create table commands are not quoted (neither the table name nor the
>>> columns).
>>> After deploying, all selects use quoting correctly.
>>> I am using SQLite.
>>>
>> ->deploy uses SQL::Translator directly, thus DBIC quoting will not
>> apply. In the latest version of SQL::Translator we have:
>>
>> quote_table_names
>>
>> Toggles whether or not to quote table names with " in DROP and CREATE
>> statements. The default (true) is to quote them.
>>
>> quote_field_names
>>
>> Toggles whether or not to quote field names with " in most statements.
>> The default (true), is to quote them.
>>
>> So unless you are running an old SQLT version, you have encountered some
>> sort of bug. Come back with more info if this is the case.
>>
>> _______________________________________________
> 
> SQLT is up to date (CPAN).
> 
> 
> $ DBIC_TRACE=1 re.pl                                     
>                                                                            
>     
> $ use lib qw (lib);                                                        
>     
>                                                                            
>     
> $ use Laden::Schema;                                                       
>     
>                                                                            
>     
> $ my $schema = Laden::Schema->connect('dbi:SQLite:dname=test'); 
> 
> [snip]
> 
> $ $schema->deploy;
> 
> [snip]
> 
> CREATE TABLE user (                                                        
>     
>   password character varying(38) NOT NULL,                                 
>     
>   email character varying(150) NOT NULL,                                   
>     
>   id character(36) NOT NULL,                                               
>     
>   registered datetime NOT NULL,                                            
>     
>   admin integer NOT NULL DEFAULT '0',                                      
>     
>   PRIMARY KEY (id)                                                         
>     
> ):                                                                         
>     
> CREATE UNIQUE INDEX user_email_user ON user (email): 
> 
> 
> So you see, there is no quoting of names.
> 
> moritz
> 

Hmmm... I use deploy() on MySQL predominantly, and browsing through the
SQLT source it seems that only the MySQL and the PG producers support it
 (egrep 'quote_.*_names' -r lib/SQL/Translator/Producer). All other
producers are more or less oblivious to this setting. Which one do you use?



More information about the DBIx-Class mailing list