[postmodern-devel] Selecting dao's

Renato Lucindo lucindo at gmail.com
Fri Sep 28 14:09:54 UTC 2007


Hi,

I changed my code to use this function instead of (quey-dao ...)

(defun select-limited-dao (type &key (test t) limit offset order-by desc)
  (let ((query `(:select * :from ,type :where ,(if (stringp test)
`(:raw ,test) test))))
    (progn
      (if order-by (setf query `(:order-by ,query ,order-by)))
      (if desc (setf query `(:desc ,query)))
      (if limit (setf query `(:limit ,query ,limit ,(if offset offset ()))))
      (query-dao type (sql-compile query)))))

But I got a strange error testing this function. The problem is with :desc

> (select-limited-dao 'entity :order-by 'column :desc t)
Database error 42601: syntax error at or near "DESC"
Query: ((SELECT * FROM entity WHERE true) ORDER BY column) DESC

Then I tried with quey-dao and got the same error:

> (query-dao 'entity (:desc (:order-by (:select '* :from 'entity :where t) 'column)))
Database error 42601: syntax error at or near "DESC"
Query: ((SELECT * FROM entity WHERE true) ORDER BY column) DESC

I think I'm using :desc in a wrong way.

The query sent to Postgress is: "((SELECT * FROM entity WHERE true)
ORDER BY column) DESC"

This quey works: "(SELECT * FROM entity WHERE true) ORDER BY column DESC"

I'm using Postgres 8.2 under OS X 10.4.10 and SBCL 1.0.6

On 9/27/07, Marijn Haverbeke <marijnh at gmail.com> wrote:
> Hi Renato,
>
> I guess you are right that the interface of SELECT-DAO is a bit
> limited, but as Ryszard says it would be hard to extend its
> functionality in a clean way, and, after playing with a
> keyword-argument implementation for a bit I concluded that providing
> all this functionality in such a function would basically be yet
> another syntax to do the same thing. So my advice is to just use
> QUERY-DAO for more complex cases.
>
> Regards,
> Marijn
> _______________________________________________
> postmodern-devel mailing list
> postmodern-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/postmodern-devel
>



More information about the postmodern-devel mailing list