From 78266a3fc8ad6a6c3ebefab661cc4f77efc52fd1 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 27 Feb 2008 19:30:31 -0600 Subject: [PATCH] cache statements in db --- extra/db/db.factor | 18 +++++++++------- extra/db/tuples/tuples.factor | 39 ++++++++++++++++------------------- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/extra/db/db.factor b/extra/db/db.factor index f6596af101..a577ff5fc5 100755 --- a/extra/db/db.factor +++ b/extra/db/db.factor @@ -5,10 +5,14 @@ namespaces sequences sequences.lib tuples words strings tools.walker ; IN: db -TUPLE: db handle ; -! TUPLE: db handle insert-statements update-statements delete-statements ; +TUPLE: db + handle + insert-statements + update-statements + delete-statements ; + : ( handle -- obj ) - ! H{ } clone H{ } clone H{ } clone + H{ } clone H{ } clone H{ } clone db construct-boa ; GENERIC: make-db* ( seq class -- db ) @@ -21,9 +25,9 @@ HOOK: db-close db ( handle -- ) : dispose-db ( db -- ) dup db [ - ! dup db-insert-statements dispose-statements - ! dup db-update-statements dispose-statements - ! dup db-delete-statements dispose-statements + dup db-insert-statements dispose-statements + dup db-update-statements dispose-statements + dup db-delete-statements dispose-statements db-handle db-close ] with-variable ; @@ -50,7 +54,6 @@ GENERIC# row-column 1 ( result-set n -- obj ) GENERIC: advance-row ( result-set -- ) GENERIC: more-rows? ( result-set -- ? ) -! must be called from within with-disposal : execute-statement ( statement -- ) dup sequence? [ [ execute-statement ] each @@ -101,7 +104,6 @@ GENERIC: more-rows? ( result-set -- ? ) : do-bound-command ( obj query -- ) [ bind-statement ] keep execute-statement ; - SYMBOL: in-transaction HOOK: begin-transaction db ( -- ) HOOK: commit-transaction db ( -- ) diff --git a/extra/db/tuples/tuples.factor b/extra/db/tuples/tuples.factor index 96c171c96f..f384ea08db 100755 --- a/extra/db/tuples/tuples.factor +++ b/extra/db/tuples/tuples.factor @@ -26,14 +26,14 @@ IN: db.tuples HOOK: create-sql-statement db ( class -- obj ) HOOK: drop-sql-statement db ( class -- obj ) -HOOK: db ( tuple -- obj ) -HOOK: db ( tuple -- obj ) +HOOK: db ( class -- obj ) +HOOK: db ( class -- obj ) -HOOK: db ( tuple -- obj ) -HOOK: db ( tuple -- obj ) +HOOK: db ( class -- obj ) +HOOK: db ( class -- obj ) -HOOK: db ( tuple -- obj ) -HOOK: db ( tuple -- obj ) +HOOK: db ( class -- obj ) +HOOK: db ( class -- obj ) HOOK: db ( tuple -- tuple ) @@ -73,14 +73,14 @@ HOOK: insert-tuple* db ( tuple statement -- ) drop-sql-statement [ execute-statement ] with-disposals ; : insert-native ( tuple -- ) - dup class [ - [ bind-tuple ] 2keep dup . insert-tuple* - ] with-disposal ; + dup class + db get db-insert-statements [ ] cache + [ bind-tuple ] 2keep insert-tuple* ; : insert-assigned ( tuple -- ) - dup class [ - [ bind-tuple ] keep execute-statement - ] with-disposal ; + dup class + db get db-insert-statements [ ] cache + [ bind-tuple ] keep execute-statement ; : insert-tuple ( tuple -- ) dup class db-columns find-primary-key assigned-id? [ @@ -90,17 +90,14 @@ HOOK: insert-tuple* db ( tuple statement -- ) ] if ; : update-tuple ( tuple -- ) - dup class [ - [ bind-tuple ] keep execute-statement - ] with-disposal ; - -! : update-tuples ( seq -- ) - ! execute-statement ; + dup class + db get db-update-statements [ ] cache + [ bind-tuple ] keep execute-statement ; : delete-tuple ( tuple -- ) - dup class [ - [ bind-tuple ] keep execute-statement - ] with-disposal ; + dup class + db get db-delete-statements [ ] cache + [ bind-tuple ] keep execute-statement ; : select-tuples ( tuple -- tuple ) dup dup class [