Update of /project/elephant/cvsroot/elephant/src/db-clsql In directory clnet:/tmp/cvs-serv13893
Modified Files: sql-controller.lisp Log Message: Fixing kevalue typo, and trying to make SQLite3 warnings less painful.
--- /project/elephant/cvsroot/elephant/src/db-clsql/sql-controller.lisp 2007/02/14 22:39:10 1.19 +++ /project/elephant/cvsroot/elephant/src/db-clsql/sql-controller.lisp 2007/02/18 21:08:16 1.20 @@ -290,27 +290,38 @@ ;; the table, as long as we have the rights we need! (clsql:table-exists-p [version] :database con :owner :all) ) - +(defun sqlite3-harmless-read (sc) + (let ((con (controller-db sc))) + (if + (equal + (car (cadr (controller-spec sc))) + :sqlite3) + (handler-case + (clsql:query "select count(*) from keyvalue") + ((clsql-sys::sql-database-error () nil) + ) + ) + ) + )) (defun create-version-table (sc) (let ((con (controller-db sc))) (clsql::create-table [version] - '( - ([dbversion] text :not-null) - ) :database con - ) - (if (and (clsql:table-exists-p [keyvlaue] :database con :owner :all) - (= 0 (caar (clsql:query "select count(*) from keyvalue")))) - (clsql::insert-records :into [version] - :attributes '(dbversion) - :values (list (format nil "~A" *elephant-code-version*)) - :database con) - (clsql::insert-records :into [version] - :attributes '(dbversion) - :values (list (format nil "~A" '(0 6 0))) - :database con) - ) - ) - ) + '( + ([dbversion] text :not-null) + ) :database con + ) + (sqlite3-harmless-read sc) + (let ((version + (if (clsql:table-exists-p [keyvlaue] :database con :owner :all) + (if (= 0 (caar (clsql:query "select count(*) from keyvalue"))) + *elephant-code-version* + '(0 6 0)) + *elephant-code-version*))) + (clsql::insert-records :into [version] + :attributes '(dbversion) + :values (list (format nil "~A" version)) + :database con) + )))
;; These functions are probably not cross-database portable... (defun keyvalue-table-exists (con) @@ -358,6 +369,7 @@ (if (supports-sequence sc) (progn (clsql::create-sequence [serial] :database con) + (sqlite3-harmless-read sc) (clsql::query (format nil "create table keyvalue ( pk integer PRIMARY KEY DEFAULT nextval('serial'), @@ -376,7 +388,7 @@ ) :database con) ) - + (sqlite3-harmless-read sc) ;; :constraints '("PRIMARY KEY (clctn_id key)" ;; "UNIQUE (clctn_id,key)")
@@ -402,6 +414,7 @@ (clsql:create-index [idx_both] :on [keyvalue] :attributes '([clctn_id] [key]) :database con) + (sqlite3-harmless-read sc) ;;) ))
@@ -420,7 +433,6 @@ (read-from-string (caar tuples)) nil))))
- (defmethod open-controller ((sc sql-store-controller) ;; At present these three have no meaning &key