(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
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
(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
(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*))