commit f00c303fee225894a4bbf8520c0ca9f9a5e45617
parent 0f13b2e3039c743d359d78e0b4bb8549a1f89f7a
Author: septeql <septeql@telent.net>
Date: Mon, 20 Aug 2007 01:22:47 +0000
support CAST
Diffstat:
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/septeql.lisp b/septeql.lisp
@@ -70,6 +70,10 @@ interpolated into a SQL statement as a string literal"
(define-scalar-translator as (column-expr alias)
(format nil "~A AS ~A" (translate-scalar column-expr) (lisp-to-sql-name alias)))
+(define-scalar-translator cast (column-expr type)
+ (format nil "cast(~A as ~A)" (translate-scalar column-expr)
+ (lisp-to-sql-name type)))
+
(define-scalar-translator case (&rest clauses)
(with-output-to-string (o)
(princ "(CASE " o)
@@ -199,7 +203,7 @@ interpolated into a SQL statement as a string literal"
;;; subselect where the user hasn't provided any
(defun sql-name (sql)
(cond ((typep sql 'sql) (sql-name (sv sql 'from)))
- ((symbolp sql) sql)
+ ((symbolp sql) (lisp-to-sql-name sql))
((eql (car sql) 'join) (gensym))
((eql (car sql) 'rename) (third sql))
(t (error "no name"))))