X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql%2Ffddl.lisp;h=19dfea994127c2b7c0a0f78cd9721164fa4b88b7;hb=6c83b1d3ad63edfc36a5bb5aee451d1eacc0d555;hp=6363f2618f9b3822c767dcf856db65a76ff78adb;hpb=e567409d9fff3f7231c2a0bb69b345e19de2b246;p=clsql.git diff --git a/sql/fddl.lisp b/sql/fddl.lisp index 6363f26..19dfea9 100644 --- a/sql/fddl.lisp +++ b/sql/fddl.lisp @@ -1,8 +1,6 @@ ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- ;;;; ************************************************************************* ;;;; -;;;; $Id$ -;;;; ;;;; The CLSQL Functional Data Definition Language (FDDL) ;;;; including functions for schema manipulation. Currently supported ;;;; SQL objects include tables, views, indexes, attributes and @@ -23,8 +21,7 @@ (defun database-identifier (name database) (sql-escape (etypecase name ;; honor case of strings - (string name - #+nil (convert-to-db-default-case name database)) + (string name) (sql-ident (sql-output name database)) (symbol (sql-output name database))))) @@ -67,16 +64,13 @@ the table. CONSTRAINTS is a string representing an SQL table constraint expression or a list of such strings. With MySQL databases, if TRANSACTIONS is t an InnoDB table is created which supports transactions." - (let* ((table-name (etypecase name - (symbol (sql-expression :attribute name)) - (string (sql-expression :attribute name)) - (sql-ident name))) - (stmt (make-instance 'sql-create-table - :name table-name - :columns description - :modifiers constraints - :transactions transactions))) - (execute-command stmt :database database))) + (execute-command + (make-instance 'sql-create-table + :name name + :columns description + :modifiers constraints + :transactions transactions) + :database database)) (defun drop-table (name &key (if-does-not-exist :error) (database *default-database*) @@ -94,8 +88,12 @@ an error is signalled if IF-DOES-NOT-EXIST is :error." (:error t)) - ;; Fixme: move to clsql-oracle - (let ((expr (concatenate 'string "DROP TABLE " table-name))) + (let ((expr (etypecase name + ;; keep quotes for strings for mixed-case names + (string (format nil "DROP TABLE ~S" table-name)) + ((or symbol sql-ident) + (concatenate 'string "DROP TABLE " table-name))))) + ;; Fixme: move to clsql-oracle (when (and (find-package 'clsql-oracle) (eq :oracle (database-type database)) (eql 10 (slot-value database @@ -433,7 +431,7 @@ sequences are examined." (defun set-sequence-position (name position &key (database *default-database*)) "Explicitly set the the position of the sequence called NAME in -DATABASE, which defaults to *DEFAULT-DATABSE*, to POSITION which +DATABASE, which defaults to *DEFAULT-DATABASE*, to POSITION which is returned." (database-set-sequence-position (database-identifier name database) position database))