[jifty-devel] Frustration with limit's limitations

Sterling Hanenkamp sterling at hanenkamp.com
Thu Jun 26 13:23:44 EDT 2008


Every so often I want to defenestrate Jifty::DBI for the simple fact that I
cannot describe a basic WHERE clause with it. For example, the query:

SELECT *
FROM tasks
WHERE parent = 12 AND task_type = 'action' AND (status = 'open' OR (status =
'done' AND completed_on >= '2008-06-26 11:39:22'))

Is there a way to do this? I haven't found a combination of limits and
subclauses that will let me do this that works. The code within limit() is
pretty complicated, so I haven't been able to unravel what it is doing, let
alone how this is supposed to work. I'll write up a complex query example in
the documentation if someone will give me a demonstration on how this is
supposed to be done. I have not found a good example of a complex query
either.

My other issue with limit is that the format used in limit() is pretty
verbose. Has there been any consideration for allowing arbitrary SQL to be
used. I.e., this is arguably more straitforward:

$tasks->limit(sql => "completed_on >= '2008-06-26 11:39:22'");

than:

$tasks->limit(column => 'completed_on', operator => '>=', value =>
'2008-06-26 11:39:22');

Or the use of a more flexible and compact format for limits, such as is used
by SQL::Abstract:

$tasks->limit(abstract => [ completed_on => [ '>=', '2008-06-26 11:39:22' ]
]);

Cheers,
Sterling
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jifty.org/pipermail/jifty-devel/attachments/20080626/4e8886ec/attachment.htm 


More information about the jifty-devel mailing list