X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Ftable.lisp;h=bc68a814dbbf0058803f6c6ebb96b310bdddcb51;hp=72895cfa97f699ff463b253ae2dcf33cdaa4f01e;hb=21ae7203d719886a1f044992e463d5f463727ac0;hpb=b2ff4969e20cce173d403de7542d5bf0e46938d7 diff --git a/sql/table.lisp b/sql/table.lisp index 72895cf..bc68a81 100644 --- a/sql/table.lisp +++ b/sql/table.lisp @@ -22,12 +22,11 @@ (defun database-identifier (name database) (sql-escape (etypecase name - (string - (convert-to-db-default-case name database)) - (sql-ident - (sql-output name database)) - (symbol - (sql-output name database))))) + ;; honor case of strings + (string name + #+nil (convert-to-db-default-case name database)) + (sql-ident (sql-output name database)) + (symbol (sql-output name database))))) ;; Tables @@ -45,7 +44,7 @@ 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 (make-symbol name))) + (string (sql-expression :attribute name)) (sql-ident name))) (stmt (make-instance 'sql-create-table :name table-name @@ -55,7 +54,7 @@ supports transactions." (execute-command stmt :database database))) (defun drop-table (name &key (if-does-not-exist :error) - (database *default-database*)) + (database *default-database*)) "Drops the table called NAME from DATABASE which defaults to *DEFAULT-DATABASE*. If the table does not exist and IF-DOES-NOT-EXIST is :ignore then DROP-TABLE returns nil whereas @@ -67,10 +66,16 @@ an error is signalled if IF-DOES-NOT-EXIST is :error." (return-from drop-table nil))) (:error t)) - (let ((expr (concatenate 'string "DROP TABLE " table-name - (if (eq :oracle (database-type database)) - " PURGE" - "")))) + + ;; Fixme: move to clsql-oracle + (let ((expr (concatenate 'string "DROP TABLE " table-name))) + (when (and (find-package 'clsql-oracle) + (eq :oracle (database-type database)) + (eql 10 (slot-value database + (intern (symbol-name '#:major-server-version) + (symbol-name '#:clsql-oracle))))) + (setq expr (concatenate 'string expr " PURGE"))) + (execute-command expr :database database)))) (defun list-tables (&key (owner nil) (database *default-database*))