added (*in-subselect* t) bindings around rendering out update/insert values
[clsql.git] / sql / expressions.lisp
index 281da967706d13118df81abbe738d17cf8e0d698..7071227a4b0964c1be2a6ec971fd30cdbec59c67 100644 (file)
@@ -813,7 +813,8 @@ uninclusive, and the args from that keyword to the end."
       (output-sql attributes database))
     (when values
       (write-string " VALUES " *sql-stream*)
-      (output-sql values database))
+      (let ((clsql-sys::*in-subselect* t))
+        (output-sql values database)))
     (when query
       (write-char #\Space *sql-stream*)
       (output-sql query database)))
@@ -870,10 +871,9 @@ uninclusive, and the args from that keyword to the end."
       (write-string "UPDATE " *sql-stream*)
       (output-sql table database)
       (write-string " SET " *sql-stream*)
-      (output-sql (apply #'vector (update-assignments)) database)
-      (when where
-        (write-string " WHERE " *sql-stream*)
-        (output-sql where database))))
+      (let ((clsql-sys::*in-subselect* t))
+        (output-sql (apply #'vector (update-assignments)) database))
+      (output-sql-where-clause where database)))
   t)
 
 ;; CREATE TABLE
@@ -941,7 +941,7 @@ uninclusive, and the args from that keyword to the end."
       (when (and (eq :mysql (database-underlying-type database))
                  transactions
                  (db-type-transaction-capable? :mysql database))
-        (write-string " Type=InnoDB" *sql-stream*))))
+        (write-string " ENGINE=innodb" *sql-stream*))))
   t)