[jifty-devel] Jifty::DBI quoting bug with PostgreSQL bool fields
Jesse Vincent
jesse at bestpractical.com
Wed Sep 6 00:21:21 EDT 2006
On Tue, Sep 05, 2006 at 07:55:00AM -0400, Sean E. Millichamp wrote:
> 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 think this is a case of "Different databases define boolean operators
differently" Will everything always take unquoted true and false? I
think jifty::dbi may just need to be smarter about bool types, but I'd
be happiest if we can find a [database] platform-independent way to do it.
Jesse
> 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
>
> _______________________________________________
> jifty-devel mailing list
> jifty-devel at lists.jifty.org
> http://lists.jifty.org/cgi-bin/mailman/listinfo/jifty-devel
--
More information about the jifty-devel
mailing list