(execute-command (sql-output expr database) :database database)
(values))
-(defmethod explain ((expr %sql-expression) &key (database *default-database*))
- (let ((expression (sql-output expr database)))
- (format *standard-output* "explain: ~S~%" expression)
- (execute-command (concatenate 'string "explain " expression))))
-
(defmethod query ((expr %sql-expression) &key (database *default-database*)
(result-types nil) (flatp nil))
(query (sql-output expr database) :database database :flatp flatp
:result-types result-types))
-(defun truncate-database (database)
+(defun truncate-database (&key database)
(unless (typep database 'database)
(clsql-base-sys::signal-no-database-error database))
(unless (is-database-open database)
(database-reconnect database))
- (dolist (table (list-tables database))
- (drop-table table database))
- (dolist (index (list-indexes database))
- (drop-index index database))
- (dolist (seq (list-sequences database))
- (drop-sequence seq database)))
+ (when (db-type-has-views? (database-underlying-type database))
+ (dolist (view (list-views :database database))
+ (drop-view view :database database)))
+ (dolist (table (list-tables :database database))
+ (drop-table table :database database))
+ (dolist (index (list-indexes :database database))
+ (drop-index index :database database))
+ (dolist (seq (list-sequences :database database))
+ (drop-sequence seq :database database)))
(defun print-query (query-exp &key titles (formats t) (sizes t) (stream t)
(database *default-database*))
(mapcan #'(lambda (s f) (list s f)) sizes record)))))
(let* ((query-exp (etypecase query-exp
(string query-exp)
- (sql-query (sql-output query-exp))))
+ (sql-query (sql-output query-exp database))))
(data (query query-exp :database database))
(sizes (if (or (null sizes) (listp sizes)) sizes
(compute-sizes (if titles (cons titles data) data))))
(declare (ignore database))
(db-timestring self))
+(defmethod database-output-sql ((self duration) database)
+ (declare (ignore database))
+ (format nil "'~a'" (duration-timestring self)))
+
(defmethod database-output-sql (thing database)
(if (or (null thing)
(eq 'null thing))
:format-arguments (list (type-of thing) (type-of database)))))
-(defmethod output-sql-hash-key ((arg vector) &optional database)
+(defmethod output-sql-hash-key ((arg vector) database)
(list 'vector (map 'list (lambda (arg)
(or (output-sql-hash-key arg database)
(return-from output-sql-hash-key nil)))
arg)))
-(defmethod output-sql (expr &optional (database *default-database*))
+(defmethod output-sql (expr database)
(write-string (database-output-sql expr database) *sql-stream*)
(values))
-(defmethod output-sql ((expr list) &optional (database *default-database*))
+(defmethod output-sql ((expr list) database)
(if (null expr)
(write-string +null-string+ *sql-stream*)
(progn
(write-char #\) *sql-stream*)))
t)
+(defmethod describe-table ((table sql-create-table)
+ &key (database *default-database*))
+ (database-describe-table
+ database
+ (convert-to-db-default-case (symbol-name (slot-value table 'name)) database)))
+
#+nil
(defmethod add-storage-class ((self database) (class symbol) &key (sequence t))
(let ((tablename (view-table (find-class class))))