[jifty-devel] Jifty::DBI quoting bug with PostgreSQL bool fields
Sean E. Millichamp
sean at bruenor.org
Tue Sep 5 07:55:00 EDT 2006
I have not (and probably will not for a while) had the time to actually
find what is needed to fix this, but I thought I'd mention it if someone
else wants to look into it. I should further state that I haven't even
confirmed if it is a Jifty bug or a Jifty::DBI bug.
I started testing against SQLite with a boolean column definition like
so:
column enabled =>
type is 'bool',
default is '1';
This worked fine in SQLite, 'enabled' always defaulted to '1', which
resulted in returning 1, as expected, so things like:
if ( $record->enabled ) worked.
I switched my backend to PostgreSQL and things stopped working. The SQL
that was constructed for Pg looked like:
create table foo ( enabled bool default 1 ); and I got:
ERROR: column "enabled" is of type boolean but default expression is of
type integer
HINT: You will need to rewrite or cast the expression.
For a column of type 'bool', Pg needs either 1 and 0 quoted, t and f
quoted, or will accept true and false unquoted. I could find no way
within the column declaration to force Jifty to always quote the value.
It seems to assume numbers should never be quoted.
If I use t/f or true/false for my default value then things work with
PostgreSQL but break with SQLite since it really expects a number and
the return value does not end up evaluating to 1/0. I ended up just
doing my testing/devel work always against Pg as a "quick fix" but
figured it should be addressed at some point.
I'll try to find the opportunity to write a test for it that shows the
problem but, again, I don't know when that will be.
Sean
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.bestpractical.com/pipermail/jifty-devel/attachments/20060905/3047fc8f/attachment.pgp
More information about the jifty-devel
mailing list