[elephant-cvs] CVS elephant/src/db-clsql
rread
rread at common-lisp.net
Wed Feb 22 20:18:51 UTC 2006
Update of /project/elephant/cvsroot/elephant/src/db-clsql
In directory common-lisp:/tmp/cvs-serv13327/src/db-clsql
Modified Files:
sql-collections.lisp sql-controller.lisp
Log Message:
New Configuration mechanism. Minor test changes. At least to SQL-side fixes.
--- /project/elephant/cvsroot/elephant/src/db-clsql/sql-collections.lisp 2006/02/19 20:06:03 1.3
+++ /project/elephant/cvsroot/elephant/src/db-clsql/sql-collections.lisp 2006/02/22 20:18:51 1.4
@@ -98,6 +98,19 @@
(string< (format nil "~A" a) (format nil "~A" b)))
))
+(defun my-generic-at-most (a b)
+ (cond
+ ((and (typep a 'persistent) (typep b 'persistent))
+ (<= (oid a) (oid b))
+ )
+ ((and (numberp a ) (numberp b))
+ (<= a b))
+ ((and (stringp a) (stringp b))
+ (string<= a b))
+ (t
+ (string<= (format nil "~A" a) (format nil "~A" b)))
+ ))
+
(defmethod cursor-un-init ((cursor sql-cursor) &key (returnpk nil))
(setf (cursor-initialized-p cursor) nil)
(if returnpk
@@ -352,17 +365,17 @@
(let ((idx (position key (:sql-crsr-ks cursor))))
(if idx
(progn
- (setf (:sql-crsr-ck cursor) idx)
- (setf (:dp-nmbr cursor) 0)
- (cursor-current-x cursor :returnpk t))
+ (setf (:sql-crsr-ck cursor) idx)
+ (setf (:dp-nmbr cursor) 0)
+ (cursor-current-x cursor :returnpk t))
(cursor-un-init cursor)
- )))
+ )))
(defun array-index-if (p a)
(do ((i 0 (1+ i)))
((or (not (array-in-bounds-p a i))
(funcall p (aref a i)))
- (if (funcall p (aref a i))
+ (if (and (array-in-bounds-p a i) (funcall p (aref a i)))
i
-1)))
)
@@ -371,7 +384,7 @@
(declare (optimize (speed 3)))
(unless (cursor-initialized-p cursor)
(cursor-init cursor))
- (let ((idx (array-index-if #'(lambda (x) (my-generic-less-than key x)) (:sql-crsr-ks cursor))))
+ (let ((idx (array-index-if #'(lambda (x) (my-generic-at-most key x)) (:sql-crsr-ks cursor))))
(if (<= 0 idx)
(progn
(setf (:sql-crsr-ck cursor) idx)
@@ -535,12 +548,16 @@
)
(defmethod cursor-next-dup-x ((cursor sql-secondary-cursor) &key (returnpk nil))
- (declare (optimize (speed 3)))
+;; (declare (optimize (speed 3)))
(when (cursor-initialized-p cursor)
(let* ((cur-pk (aref (:sql-crsr-ks cursor)
(:sql-crsr-ck cursor)))
- (nxt-pk (aref (:sql-crsr-ks cursor)
- (+ 1 (:sql-crsr-ck cursor))))
+ (nint (+ 1 (:sql-crsr-ck cursor)))
+ (nxt-pk (if (array-in-bounds-p (:sql-crsr-ks cursor) nint)
+ (aref (:sql-crsr-ks cursor)
+ nint)
+ -1
+ ))
)
(if (equal cur-pk nxt-pk)
(progn
@@ -559,8 +576,12 @@
(if (cursor-initialized-p cursor)
(let ((n
(do ((i (:sql-crsr-ck cursor) (1+ i)))
- ((not (equal (aref (:sql-crsr-ks cursor) i)
- (aref (:sql-crsr-ks cursor) (+ 1 i)))) (+ 1 i)))))
+ ((or
+ (not (array-in-bounds-p (:sql-crsr-ks cursor) (+ i 1)))
+ (not
+ (equal (aref (:sql-crsr-ks cursor) i)
+ (aref (:sql-crsr-ks cursor) (+ 1 i)))))
+ (+ 1 i)))))
(setf (:sql-crsr-ck cursor) n)
(setf (:dp-nmbr cursor) 0)
(has-key-value-scnd cursor :returnpk returnpk))
--- /project/elephant/cvsroot/elephant/src/db-clsql/sql-controller.lisp 2006/02/20 21:21:41 1.6
+++ /project/elephant/cvsroot/elephant/src/db-clsql/sql-controller.lisp 2006/02/22 20:18:51 1.7
@@ -24,24 +24,6 @@
(in-package "ELEPHANT-CLSQL")
-;; ISE NOTE: Putting this here results in users having to
-;; modify source code to run which is inadvisable. My strategy
-;; is to asdf resolve references to local libraries and require
-;; that the user properly install clsql for their chosen SQL
-;; backend. If you really want to allow local configuration
-;; for SQL then stick it into ele-sql.asd just as we did for
-;; BDB in ele-bdb.asd. This note and code should get removed
-;; in 0.6.1 if we have a reasonable strategy
-;;
-;;; other clsql packages would have to be added for
-;;; non-postgresql databases, see the CL-SQL documentation
-;; (eval-when (:compile-toplevel :load-toplevel)
-;; ;; NOTE: Integrate into load process
-;; ;; Probably must be customized ... see documentation on installin postgres.
-;; (defvar *clsql-foreign-lib-path* "/usr/lib")
-;; (clsql:push-library-path *clsql-foreign-lib-path*)
-;; (clsql:push-library-path *elephant-lib-path*))
-
;;
;; The main SQL Controller Class
;;
More information about the Elephant-cvs
mailing list