r9466: avoid interrupts in setting sequence position
[clsql.git] / db-oracle / oracle-sql.lisp
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