Hi Marijn,
Thanks for the code. However, :coerce is already there, named :type,
Didn't notice it -- thanks!
and the way to-sql-string is currently used, it should A) not use S-SQL functions, since cl-postgres does not depend on S-SQL,
Then S-SQL could contain a method TO-SQL-STRING specializing on vectors and lists, much the same way as it now contains a specialization on symbols (see s-sql.lisp, lines 263-264).
, and B) serialise to a format that can also be used to pass parameters to prepared queries. I'm not that knowledgeable about Postgres' textual formats, but it appears that a value like ARRAY[1, 2, 3] can not be written as a parameter:
Database error 22P02: array value must start with "{" or dimension
information
Could you elaborate on how you are getting this error? I don't seem to have problems when passing arrays to prepared statements in this way:
weekword=# prepare testme(int[]) as select array_lower($1, 1) as lo, array_upper($1, 1) as hi; PREPARE weekword=# execute testme(array[1,2,3]); lo | hi ----+---- 1 | 3
If you feel like getting to the bottom of this, feel free to submit an alternative patch. If not, array serialisation will have to wait a bit more.
Thanks for the comments! I'll try to do my best to work this out in a correct way.
Best, Daniel