[postmodern-devel] Bug report: Incorrect handling of SIMPLE-DATE types in S-SQL
Ivan Boldyrev
lispnik at gmail.com
Fri Jan 4 18:49:26 UTC 2008
This doesn't work:
,----
| (postmodern:query
| (:select (:- :localtimestamp
| (simple-date:encode-interval :hour 2 :minute 10))))
|
| Database error 22007: invalid input syntax for type timestamp: "2 hours 10 minutes "
| Query: (SELECT (localtimestamp - '2 hours 10 minutes '))
`----
This does work:
,----
| (postmodern:query
| (:select (:- :localtimestamp (:raw "interval '2 hours 10 minutes'"))))
`----
It was tested with PostgreSQL 8.0.13 and 8.2.4.
SQL-IZE methods for SIMPLE-DATE objects should return escaped strings
like "interval '2 hours 10 minutes'", not just "2 hours 10 minutes", and
second value of SQL-IZE must be NIL:
b
,----
| (:method ((arg simple-date:date))
| (multiple-value-bind (year month day) (simple-date:decode-date arg)
| (format nil "date ~A"
| (sql-escape-string (format nil "~4,'0d-~2,'0d-~2,'0d" year month day)))))
`----
(Untested!)
Perhaps, sql-escape-string can be omitted: the output has no dangerous
characters anyway.
,----
| (:method ((arg simple-date:date))
| (multiple-value-bind (year month day) (simple-date:decode-date arg)
| (format nil "date '~4,'0d-~2,'0d-~2,'0d'" year month day)))
`----
--
Ivan Boldyrev
Violets are red, Roses are blue. //
I'm schizophrenic, And so am I.
More information about the postmodern-devel
mailing list