From d0fda076d2835cbafab5a8118d6366e3fbb4668d Mon Sep 17 00:00:00 2001 From: Ivan Raikov Date: Sat, 14 Sep 2019 08:13:32 -0700 Subject: [PATCH] renaming db-rm to db-delete as originally proposed; added test case for db-delete --- README.md | 6 +++--- lmdb.scm | 10 ++-------- tests/run.scm | 30 ++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 58d8961..30bed00 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,9 @@ Commits and ends LMDB transaction. `(db-abort db)` Aborts LMDB transaction. +`(db-delete db key)` +Removes a key from the database. + `(db-delete-database dbname)` Deletes LMDB database. @@ -31,9 +34,6 @@ Looks up key in database. `(db-set! db key value)` Sets a key-value pair in the database. -`(db-rm db key)` -Removes a key from the database. - `(db-count db)` Returns number of key-value pairs in database. diff --git a/lmdb.scm b/lmdb.scm index 1ce8017..13d5912 100644 --- a/lmdb.scm +++ b/lmdb.scm @@ -66,7 +66,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. db-delete-database db-set! db-ref - db-rm db-count db-keys db-values @@ -467,11 +466,6 @@ END ) -(define (db-delete fname) - (abort - (make-property-condition 'exn - 'message "db-delete is deprecated, use db-delete-database instead"))) - (define (db-delete-database fname) (logger 2 "db-delete-database ~A~%" fname) (if (file-exists? fname) (begin @@ -528,8 +522,8 @@ END (and u8val (begin (db-value m u8val) (decode u8val))) )) -(define (db-rm s key) - (logger 2 "db-rm ~A ~A~%" s key) +(define (db-delete s key) + (logger 2 "db-delete ~A ~A~%" s key) (let* ((lmdb-ptr (lmdb-session-handler s)) (lmdb-encode (lmdb-session-encoder s)) (u8key (lmdb-encode key))) diff --git a/tests/run.scm b/tests/run.scm index 4e08773..b63d8ad 100644 --- a/tests/run.scm +++ b/tests/run.scm @@ -64,6 +64,36 @@ )) )) +(test-group "lmdb unencrypted key-value deletion" + (test-assert + (let* ((fname (make-pathname "." "unittest.mdb"))) + (db-delete-database fname) + (let* ((keys (list "k1" 'k2 '(k3))) + (values (list 'one 2 "three")) + (mm (db-open fname))) + (db-begin mm) + (let loop ((ks keys) (vs values)) + (if (> (length ks) 0) + (begin + (db-set! mm (string->blob (->string (car ks))) (string->blob (->string (car vs)))) + (loop (cdr ks) (cdr vs))))) + (db-end mm) + (db-begin mm) + (let loop ((ks keys)) + (if (> (length ks) 0) + (begin + (db-delete mm (string->blob (->string (car ks)))) + (loop (cdr ks))) + )) + (db-end mm) + (db-delete-database fname) + (db-begin mm) + (let ((res (= (db-count mm) 0))) + (db-end mm)) + res) + )) + ) + (test-group "lmdb unencrypted key-value creation and fold / for-each" (let* ((fname (make-pathname "." "unittest.mdb"))) (db-delete-database fname)