r9466: avoid interrupts in setting sequence position
authorKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 25 May 2004 04:24:16 +0000 (04:24 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 25 May 2004 04:24:16 +0000 (04:24 +0000)
ChangeLog
db-oracle/oracle-sql.lisp

index 902adfc530806e2f3a3af8020e6b831bcd681de8..ef4b54b4db1a56d007ced00ba4b08a708558900f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,7 +4,8 @@
        * CONTRIBUTORS: Add note about Marcus' excellent work
        * sql/oodml.lisp: Removed old stub function     
        * clsql.asd: Use module names in current package rather than keyword package
-       * db-oracle/oracle-sql.lisp: Don't trim trailing spaces
+       * db-oracle/oracle-sql.lisp: Don't trim trailing spaces. Prevent interrupts
+       in setting sequence position
        * tests/test-init.lisp: Skip 2 tests on Oracle which have unsupported syntax 
        
 24 May 2004: Marcus Pearce (m.t.pearce@city.ac.uk) 
index 9a7db75de7461afe46687ec1510a27819c177c38..b5876d44cbff9d96a6358d544af5e1728d65a43c 100644 (file)
@@ -901,17 +901,17 @@ the length of that format.")
                 )
     database :auto nil)))
 
-;; FIXME: use lock
 (defmethod database-set-sequence-position (name position (database oracle-database))
-  (let* ((next (database-sequence-next name database))
-        (incr (- position next)))
-    (database-execute-command
-     (format nil "ALTER SEQUENCE ~A INCREMENT BY ~D" name incr)
-     database)
-    (database-sequence-next name database)
-    (database-execute-command
-     (format nil "ALTER SEQUENCE ~A INCREMENT BY 1" name)
-     database)))
+  (without-interrupts
+   (let* ((next (database-sequence-next name database))
+         (incr (- position next)))
+     (database-execute-command
+      (format nil "ALTER SEQUENCE ~A INCREMENT BY ~D" name incr)
+      database)
+     (database-sequence-next name database)
+     (database-execute-command
+      (format nil "ALTER SEQUENCE ~A INCREMENT BY 1" name)
+      database))))
 
 (defmethod database-list-sequences ((database oracle-database) &key owner)
   (let ((query