r9832: * sql/expressions.lisp: Change declaration that
[clsql.git] / sql / expressions.lisp
index 2f40e33a6e67f640b107a0a2dc9d444941c9287d..bcf1383189ff83a8c3ef47ce4a83ef4a674b6462 100644 (file)
@@ -830,7 +830,7 @@ uninclusive, and the args from that keyword to the end."
 (defmethod database-output-sql ((str string) database)
   (declare (ignore database)
            (optimize (speed 3) (safety 1) #+cmu (extensions:inhibit-warnings 3))
-           (type (simple-array * (*)) str))
+           (simple-string str))
   (let ((len (length str)))
     (declare (type fixnum len))
     (cond ((zerop len)
@@ -850,7 +850,11 @@ uninclusive, and the args from that keyword to the end."
                         (setf (aref buf j) #\')
                         (incf j)
                         (setf (aref buf j) #\'))
-                       ((char= char #\\)
+                       ((and (char= char #\\)
+                             ;; MTP: only escape backslash with pgsql/mysql 
+                             (member (database-underlying-type database) 
+                                     '(:postgresql :mysql)
+                                     :test #'eq))
                         (setf (aref buf j) #\\)
                         (incf j)
                         (setf (aref buf j) #\\))
@@ -859,11 +863,13 @@ uninclusive, and the args from that keyword to the end."
 
 (let ((keyword-package (symbol-package :foo)))
   (defmethod database-output-sql ((sym symbol) database)
-    (convert-to-db-default-case
-     (if (equal (symbol-package sym) keyword-package)
-        (concatenate 'string "'" (string sym) "'")
-        (symbol-name sym))
-     database)))
+  (if (null sym) 
+      +null-string+ 
+      (convert-to-db-default-case
+       (if (equal (symbol-package sym) keyword-package)
+           (concatenate 'string "'" (string sym) "'")
+           (symbol-name sym))
+       database))))
 
 (defmethod database-output-sql ((tee (eql t)) database)
   (declare (ignore database))