septeql

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit f00c303fee225894a4bbf8520c0ca9f9a5e45617
parent 0f13b2e3039c743d359d78e0b4bb8549a1f89f7a
Author: septeql <septeql@telent.net>
Date:   Mon, 20 Aug 2007 01:22:47 +0000

support CAST
Diffstat:
Msepteql.lisp | 6+++++-
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"))))