From: Kevin M. Rosenberg Date: Sun, 23 May 2004 10:51:02 +0000 (+0000) Subject: r9450: 22 May 2004 Kevin Rosenberg X-Git-Tag: v3.8.6~397 X-Git-Url: http://git.kpe.io/?p=clsql.git;a=commitdiff_plain;h=5148be446aee32ec705beac3fbba35f499df4fd4 r9450: 22 May 2004 Kevin Rosenberg * Version 2.10.21 released * sql/sequences.lisp: Move generic sequence functions here from db-sqlite, db-odbc, and db-aodbc. --- diff --git a/ChangeLog b/ChangeLog index 09f0489..361840b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 22 May 2004 Kevin Rosenberg * Version 2.10.21 released + * sql/sequences.lisp: Move generic sequence functions here from db-sqlite, + db-odbc, and db-aodbc. * sql/*.lisp: Add db-type parameter to generic functions READ-SQL-VALUE, DATABASE-GET-TYPE-SPECIFIER, and OUTPUT-SQL-VALUE-AS-TYPE. Update methods to use these. * sql/generic-postgresql.lisp, sql/generic-odbc.lisp: New files diff --git a/clsql-odbc.asd b/clsql-odbc.asd index 82b3fbd..ca2ec19 100644 --- a/clsql-odbc.asd +++ b/clsql-odbc.asd @@ -7,7 +7,7 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Created: April 2004 ;;;; -;;;; $Id: clsql-odbc.asd 8850 2004-04-07 16:07:46Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 200d42 by Kevin M. Rosenberg ;;;; diff --git a/clsql.asd b/clsql.asd index bc128ac..c7b3d92 100644 --- a/clsql.asd +++ b/clsql.asd @@ -69,7 +69,8 @@ oriented interface." (:module :generic :pathname "" :components ((:file "generic-postgresql") - (:file "generic-odbc")) + (:file "generic-odbc") + (:file "sequences")) :depends-on (:functional)))))) diff --git a/db-aodbc/aodbc-sql.lisp b/db-aodbc/aodbc-sql.lisp index a43fb18..8a6ee00 100644 --- a/db-aodbc/aodbc-sql.lisp +++ b/db-aodbc/aodbc-sql.lisp @@ -67,84 +67,6 @@ -;;; Sequence functions - -(defun %sequence-name-to-table (sequence-name) - (concatenate 'string "_CLSQL_SEQ_" (sql-escape sequence-name))) - -(defun %table-name-to-sequence-name (table-name) - (and (>= (length table-name) 11) - (string-equal (subseq table-name 0 11) "_CLSQL_SEQ_") - (subseq table-name 11))) - -(defmethod database-create-sequence (sequence-name - (database aodbc-database)) - (let ((table-name (%sequence-name-to-table sequence-name))) - (database-execute-command - (concatenate 'string "CREATE TABLE " table-name - " (last_value int NOT NULL PRIMARY KEY, increment_by int, min_value int, is_called char(1))") - database) - (database-execute-command - (concatenate 'string "INSERT INTO " table-name - " VALUES (1,1,1,'f')") - database))) - -(defmethod database-drop-sequence (sequence-name - (database aodbc-database)) - (database-execute-command - (concatenate 'string "DROP TABLE " (%sequence-name-to-table sequence-name)) - database)) - -(defmethod database-list-sequences ((database aodbc-database) - &key (owner nil)) - (declare (ignore owner)) - (warn "database-list-sequences not implemented for AODBC.") - nil) - - -(defmethod database-list-indexes ((database aodbc-database) - &key (owner nil)) - (warn "database-list-indexes not implemented for AODBC.") - nil) - -(defmethod database-set-sequence-position (sequence-name - (position integer) - (database aodbc-database)) - (database-execute-command - (format nil "UPDATE ~A SET last_value=~A,is_called='t'" - (%sequence-name-to-table sequence-name) - position) - database) - position) - -(defmethod database-sequence-next (sequence-name (database aodbc-database)) - (without-interrupts - (let* ((table-name (%sequence-name-to-table sequence-name)) - (tuple - (car (database-query - (concatenate 'string "SELECT last_value,is_called FROM " - table-name) - database :auto nil)))) - (cond - ((char-equal (schar (second tuple) 0) #\f) - (database-execute-command - (format nil "UPDATE ~A SET is_called='t'" table-name) - database) - (car tuple)) - (t - (let ((new-pos (1+ (car tuple)))) - (database-execute-command - (format nil "UPDATE ~A SET last_value=~D" table-name new-pos) - database) - new-pos)))))) - -(defmethod database-sequence-last (sequence-name (database aodbc-database)) - (without-interrupts - (caar (database-query - (concatenate 'string "SELECT last_value FROM " - (%sequence-name-to-table sequence-name)) - database :auto nil)))) - (defmethod database-create (connection-spec (type (eql :aodbc))) (warn "Not implemented.")) diff --git a/db-mysql/mysql-objects.lisp b/db-mysql/mysql-objects.lisp index bbe5232..a118f47 100644 --- a/db-mysql/mysql-objects.lisp +++ b/db-mysql/mysql-objects.lisp @@ -6,7 +6,7 @@ ;;;; Purpose: CLSQL Object layer for MySQL ;;;; Created: May 2004 ;;;; -;;;; $Id: mysql-sql.lisp 9403 2004-05-19 23:46:45Z kevin $ +;;;; $Id$ ;;;; ;;;; CLSQL users are granted the rights to distribute and use this software ;;;; as governed by the terms of the Lisp Lesser GNU Public License diff --git a/db-odbc/Makefile b/db-odbc/Makefile index 2b79dcb..1003d8a 100644 --- a/db-odbc/Makefile +++ b/db-odbc/Makefile @@ -5,7 +5,7 @@ # Programer: Kevin M. Rosenberg # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile 8153 2003-11-11 15:28:36Z kevin $ +# CVS Id: $Id$ # # This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg # diff --git a/db-odbc/odbc-api.lisp b/db-odbc/odbc-api.lisp index 4706c15..b17af02 100644 --- a/db-odbc/odbc-api.lisp +++ b/db-odbc/odbc-api.lisp @@ -6,7 +6,7 @@ ;;;; Purpose: Low-level ODBC API using UFFI ;;;; Authors: Kevin M. Rosenberg and Paul Meurer ;;;; -;;;; $Id: odbc-package.lisp 7061 2003-09-07 06:34:45Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2004 by Kevin M. Rosenberg ;;;; and Copyright (C) Paul Meurer 1999 - 2001. All rights reserved. diff --git a/db-odbc/odbc-constants.lisp b/db-odbc/odbc-constants.lisp index 5ca1f2a..e967729 100644 --- a/db-odbc/odbc-constants.lisp +++ b/db-odbc/odbc-constants.lisp @@ -6,7 +6,7 @@ ;;;; Purpose: Constants for UFFI interface to ODBC ;;;; Authors: Kevin M. Rosenberg and Paul Meurer ;;;; -;;;; $Id: odbc-package.lisp 7061 2003-09-07 06:34:45Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2004 by Kevin M. Rosenberg ;;;; and Copyright (C) Paul Meurer 1999 - 2001. All rights reserved. diff --git a/db-odbc/odbc-dbi.lisp b/db-odbc/odbc-dbi.lisp index eee8ad6..634a43e 100644 --- a/db-odbc/odbc-dbi.lisp +++ b/db-odbc/odbc-dbi.lisp @@ -7,7 +7,7 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Create: April 2004 ;;;; -;;;; $Id: odbc-sql.lisp 8983 2004-04-12 21:16:48Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; diff --git a/db-odbc/odbc-ff-interface.lisp b/db-odbc/odbc-ff-interface.lisp index 4fbb835..96c9c51 100644 --- a/db-odbc/odbc-ff-interface.lisp +++ b/db-odbc/odbc-ff-interface.lisp @@ -6,7 +6,7 @@ ;;;; Purpose: Function definitions for UFFI interface to ODBC ;;;; Author: Kevin M. Rosenberg ;;;; -;;;; $Id: odbc-package.lisp 7061 2003-09-07 06:34:45Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2004 by Kevin M. Rosenberg ;;;; and Copyright (C) Paul Meurer 1999 - 2001. All rights reserved. diff --git a/db-odbc/odbc-loader.lisp b/db-odbc/odbc-loader.lisp index 52dc8f7..eb04547 100644 --- a/db-odbc/odbc-loader.lisp +++ b/db-odbc/odbc-loader.lisp @@ -7,7 +7,7 @@ ;;;; Programmers: Kevin M. Rosenberg ;;;; Date Started: April 2004 ;;;; -;;;; $Id: odbc-loader.lisp 8270 2003-11-25 06:37:14Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2004 by Kevin M. Rosenberg ;;;; diff --git a/db-odbc/odbc-package.lisp b/db-odbc/odbc-package.lisp index 583d9a7..71cd96d 100644 --- a/db-odbc/odbc-package.lisp +++ b/db-odbc/odbc-package.lisp @@ -7,7 +7,7 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Created: April 2004 ;;;; -;;;; $Id: odbc-package.lisp 7061 2003-09-07 06:34:45Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2004 by Kevin M. Rosenberg ;;;; diff --git a/db-odbc/odbc-sql.lisp b/db-odbc/odbc-sql.lisp index 862c991..e1ad0c2 100644 --- a/db-odbc/odbc-sql.lisp +++ b/db-odbc/odbc-sql.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id: odbc-sql.lisp 8983 2004-04-12 21:16:48Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -78,90 +78,6 @@ - -;;; Sequence functions - -(defun %sequence-name-to-table (sequence-name) - (concatenate 'string "_CLSQL_SEQ_" (sql-escape sequence-name))) - -(defun %table-name-to-sequence-name (table-name) - (and (>= (length table-name) 11) - (string-equal (subseq table-name 0 11) "_CLSQL_SEQ_") - (subseq table-name 11))) - -(defmethod database-create-sequence (sequence-name - (database odbc-database)) - (let ((table-name (%sequence-name-to-table sequence-name))) - (database-execute-command - (concatenate 'string "CREATE TABLE " table-name - " (last_value int NOT NULL PRIMARY KEY, increment_by int, min_value int, is_called char(1))") - database) - (database-execute-command - (concatenate 'string "INSERT INTO " table-name - " VALUES (1,1,1,'f')") - database))) - -(defmethod database-drop-sequence (sequence-name - (database odbc-database)) - (database-execute-command - (concatenate 'string "DROP TABLE " (%sequence-name-to-table sequence-name)) - database)) - -(defmethod database-list-sequences ((database odbc-database) - &key (owner nil)) - (declare (ignore owner)) - ;; FIXME: Underlying database backend stuff should come from that backend - - (case (database-odbc-db-type database) - (:mysql - (mapcan #'(lambda (s) - (let ((sn (%table-name-to-sequence-name (car s)))) - (and sn (list sn)))) - (database-query "SHOW TABLES" database nil nil))) - ((:postgresql :postgresql-socket) - (mapcar #'(lambda (s) (%table-name-to-sequence-name (car s))) - (database-query "SELECT RELNAME FROM pg_class WHERE RELNAME LIKE '%clsql_seq%'" - database nil nil))))) - - -(defmethod database-set-sequence-position (sequence-name - (position integer) - (database odbc-database)) - (database-execute-command - (format nil "UPDATE ~A SET last_value=~A,is_called='t'" - (%sequence-name-to-table sequence-name) - position) - database) - position) - -(defmethod database-sequence-next (sequence-name (database odbc-database)) - (without-interrupts - (let* ((table-name (%sequence-name-to-table sequence-name)) - (tuple - (car (database-query - (concatenate 'string "SELECT last_value,is_called FROM " - table-name) - database :auto nil)))) - (cond - ((char-equal (schar (second tuple) 0) #\f) - (database-execute-command - (format nil "UPDATE ~A SET is_called='t'" table-name) - database) - (car tuple)) - (t - (let ((new-pos (1+ (car tuple)))) - (database-execute-command - (format nil "UPDATE ~A SET last_value=~D" table-name new-pos) - database) - new-pos)))))) - -(defmethod database-sequence-last (sequence-name (database odbc-database)) - (without-interrupts - (caar (database-query - (concatenate 'string "SELECT last_value FROM " - (%sequence-name-to-table sequence-name)) - database :auto nil)))) - (defmethod database-create (connection-spec (type (eql :odbc))) (declare (ignore connection-spec)) (warn "Not implemented.")) diff --git a/db-sqlite/Makefile b/db-sqlite/Makefile index 2b79dcb..1003d8a 100644 --- a/db-sqlite/Makefile +++ b/db-sqlite/Makefile @@ -5,7 +5,7 @@ # Programer: Kevin M. Rosenberg # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile 8153 2003-11-11 15:28:36Z kevin $ +# CVS Id: $Id$ # # This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg # diff --git a/db-sqlite/sqlite-sql.lisp b/db-sqlite/sqlite-sql.lisp index d6352e9..3c6d31e 100644 --- a/db-sqlite/sqlite-sql.lisp +++ b/db-sqlite/sqlite-sql.lisp @@ -224,15 +224,18 @@ ;;; Object listing -(defmethod database-list-tables ((database sqlite-database) &key owner) +(defmethod database-list-tables-and-sequences ((database sqlite-database) &key owner) (declare (ignore owner)) ;; Query is copied from .table command of sqlite comamnd line utility. + (mapcar #'car (database-query + "SELECT name FROM sqlite_master WHERE type='table' UNION ALL SELECT name FROM sqlite_temp_master WHERE type='table' ORDER BY name" + database nil nil))) + +(defmethod database-list-tables ((database sqlite-database) &key owner) (remove-if #'(lambda (s) (and (>= (length s) 11) (string-equal (subseq s 0 11) "_CLSQL_SEQ_"))) - (mapcar #'car (database-query - "SELECT name FROM sqlite_master WHERE type='table' UNION ALL SELECT name FROM sqlite_temp_master WHERE type='table' ORDER BY name" - database nil nil)))) + (database-list-tables-and-sequences database :owner owner))) (defmethod database-list-views ((database sqlite-database) &key (owner nil)) @@ -293,81 +296,6 @@ (if (string-equal (fourth field-info) "0") 1 0))))) -(defun %sequence-name-to-table-name (sequence-name) - (concatenate 'string "_CLSQL_SEQ_" (sql-escape sequence-name))) - -(defun %table-name-to-sequence-name (table-name) - (and (>= (length table-name) 11) - (string= (subseq table-name 0 11) "_CLSQL_SEQ_") - (subseq table-name 11))) - - -(defmethod database-create-sequence (sequence-name - (database sqlite-database)) - (let ((table-name (%sequence-name-to-table-name sequence-name))) - (database-execute-command - (concatenate 'string "CREATE TABLE " table-name - " (last_value integer PRIMARY KEY, increment_by integer, min_value integer, is_called char(1))") - database) - (database-execute-command - (concatenate 'string "INSERT INTO " table-name - " VALUES (1,1,1,'f')") - database))) - -(defmethod database-drop-sequence (sequence-name - (database sqlite-database)) - (database-execute-command - (concatenate 'string "DROP TABLE " (%sequence-name-to-table-name sequence-name)) - database)) - -(defmethod database-list-sequences ((database sqlite-database) - &key (owner nil)) - (declare (ignore owner)) - (mapcan #'(lambda (s) - (let ((sn (%table-name-to-sequence-name (car s)))) - (and sn (list sn)))) - (database-query - "SELECT name FROM sqlite_master WHERE type='table' UNION ALL SELECT name FROM sqlite_temp_master WHERE type='table' ORDER BY name" - database nil nil))) - -(defmethod database-sequence-next (sequence-name (database sqlite-database)) - (without-interrupts - (let* ((table-name (%sequence-name-to-table-name sequence-name)) - (tuple - (car (database-query - (concatenate 'string "SELECT last_value,is_called FROM " - table-name) - database :auto nil)))) - (cond - ((char-equal (schar (second tuple) 0) #\f) - (database-execute-command - (format nil "UPDATE ~A SET is_called='t'" table-name) - database) - (car tuple)) - (t - (let ((new-pos (1+ (car tuple)))) - (database-execute-command - (format nil "UPDATE ~A SET last_value=~D" table-name new-pos) - database) - new-pos)))))) - -(defmethod database-sequence-last (sequence-name (database sqlite-database)) - (without-interrupts - (caar (database-query - (concatenate 'string "SELECT last_value FROM " - (%sequence-name-to-table-name sequence-name)) - database :auto nil)))) - -(defmethod database-set-sequence-position (sequence-name - (position integer) - (database sqlite-database)) - (database-execute-command - (format nil "UPDATE ~A SET last_value=~A,is_called='t'" - (%sequence-name-to-table-name sequence-name) - position) - database) - position) - (defmethod database-create (connection-spec (type (eql :sqlite))) (declare (ignore connection-spec)) ;; databases are created automatically by SQLite diff --git a/debian/changelog b/debian/changelog index cc1424b..0bf4e12 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cl-sql (2.10.21-1) unstable; urgency=low + + * New upstream + + -- Kevin M. Rosenberg Sun, 23 May 2004 04:50:44 -0600 + cl-sql (2.10.20-1) unstable; urgency=low * New upstream diff --git a/sql/Makefile b/sql/Makefile index 2b79dcb..1003d8a 100644 --- a/sql/Makefile +++ b/sql/Makefile @@ -5,7 +5,7 @@ # Programer: Kevin M. Rosenberg # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile 8153 2003-11-11 15:28:36Z kevin $ +# CVS Id: $Id$ # # This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg # diff --git a/sql/db-interface.lisp b/sql/db-interface.lisp index 3c2f746..939af1f 100644 --- a/sql/db-interface.lisp +++ b/sql/db-interface.lisp @@ -174,16 +174,21 @@ if unable to destory.")) (defgeneric database-get-type-specifier (type args database db-underlying-type) (:documentation "Return the type SQL type specifier as a string, for -the given lisp type and parameters.") - (:method (type args database db-underlying-type) - (declare (ignore type args db-type)) - (signal-no-database-error database))) +the given lisp type and parameters.")) (defgeneric database-list-tables (database &key owner) (:documentation "List all tables in the given database") (:method ((database t) &key owner) (declare (ignore owner)) (signal-no-database-error database))) + +(defgeneric database-list-tables-and-sequences (database &key owner) + (:documentation "List all tables in the given database, may include seqeneces") + (:method ((database t) &key owner) + (declare (ignore owner)) + (signal-no-database-error database)) + (:method ((database database) &key owner) + (database-list-tables database :owner owner))) (defgeneric database-list-views (database &key owner) (:documentation "List all views in the DATABASE.") diff --git a/sql/generic-odbc.lisp b/sql/generic-odbc.lisp index 8601ed6..b83e8ca 100644 --- a/sql/generic-odbc.lisp +++ b/sql/generic-odbc.lisp @@ -1,7 +1,7 @@ ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- ;;;; ************************************************************************* ;;;; -;;;; $Id: $ +;;;; $Id$ ;;;; ;;;; Generic ODBC layer, used by db-odbc and db-aodbc backends ;;;; diff --git a/sql/generic-postgresql.lisp b/sql/generic-postgresql.lisp index 45ad1fb..6716d14 100644 --- a/sql/generic-postgresql.lisp +++ b/sql/generic-postgresql.lisp @@ -1,7 +1,7 @@ ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- ;;;; ************************************************************************* ;;;; -;;;; $Id: $ +;;;; $Id$ ;;;; ;;;; Generic postgresql layer, used by db-postgresql and db-postgresql-socket ;;;; diff --git a/sql/generics.lisp b/sql/generics.lisp index 817547d..f4b2848 100644 --- a/sql/generics.lisp +++ b/sql/generics.lisp @@ -7,7 +7,7 @@ ;;;; Author: Kevin M. Rosenberg based on ;;;; Created: Apr 2004 ;;;; -;;;; $Id: db-interface.lisp 9123 2004-04-21 20:34:42Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg ;;;; diff --git a/sql/package.lisp b/sql/package.lisp index 8b4475e..f196f5b 100644 --- a/sql/package.lisp +++ b/sql/package.lisp @@ -115,6 +115,7 @@ #:database-dump-result-set #:database-store-next-row #:database-list-tables + #:database-list-tables-and-sequences #:database-table-exists-p #:database-list-views #:database-view-exists-p diff --git a/sql/sequences.lisp b/sql/sequences.lisp new file mode 100644 index 0000000..1e3ef9e --- /dev/null +++ b/sql/sequences.lisp @@ -0,0 +1,93 @@ +;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- +;;;; ************************************************************************* +;;;; +;;;; $Id:$ +;;;; +;;;; Generic sequence implementation. Backends should use native sequences if +;;;; are available. +;;;; +;;;; This file is part of CLSQL. +;;;; +;;;; CLSQL users are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser GNU Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. +;;;; ************************************************************************* + +(in-package #:clsql-sys) + +(defclass generic-database (database) + () + (:documentation "Encapsulate same behavior across backends.")) + + +;;; Sequence functions + +(defun %sequence-name-to-table (sequence-name database) + (concatenate 'string + (convert-to-db-default-case "_CLSQL_SEQ_" database) + (sql-escape sequence-name))) + +(defun %table-name-to-sequence-name (table-name database) + (and (>= (length table-name) 11) + (string-equal (subseq table-name 0 11) + (convert-to-db-default-case "_CLSQL_SEQ_" database)) + (subseq table-name 11))) + +(defmethod database-create-sequence (sequence-name database) + (let ((table-name (%sequence-name-to-table sequence-name database))) + (database-execute-command + (concatenate 'string "CREATE TABLE " table-name + " (last_value int NOT NULL PRIMARY KEY, increment_by int, min_value int, is_called char(1))") + database) + (database-execute-command + (concatenate 'string "INSERT INTO " table-name + " VALUES (1,1,1,'f')") + database))) + +(defmethod database-drop-sequence (sequence-name database) + (database-execute-command + (concatenate 'string "DROP TABLE " (%sequence-name-to-table sequence-name database)) + database)) + +(defmethod database-list-sequences (database &key (owner nil)) + (declare (ignore owner)) + (mapcan #'(lambda (s) + (let ((sn (%table-name-to-sequence-name s database))) + (and sn (list sn)))) + (database-list-tables-and-sequences database))) + +(defmethod database-set-sequence-position (sequence-name (position integer) database) + (database-execute-command + (format nil "UPDATE ~A SET last_value=~A,is_called='t'" + (%sequence-name-to-table sequence-name database) + position) + database) + position) + +(defmethod database-sequence-next (sequence-name database) + (without-interrupts + (let* ((table-name (%sequence-name-to-table sequence-name database)) + (tuple + (car (database-query + (concatenate 'string "SELECT last_value,is_called FROM " + table-name) + database :auto nil)))) + (cond + ((char-equal (schar (second tuple) 0) #\f) + (database-execute-command + (format nil "UPDATE ~A SET is_called='t'" table-name) + database) + (car tuple)) + (t + (let ((new-pos (1+ (car tuple)))) + (database-execute-command + (format nil "UPDATE ~A SET last_value=~D" table-name new-pos) + database) + new-pos)))))) + +(defmethod database-sequence-last (sequence-name database) + (without-interrupts + (caar (database-query + (concatenate 'string "SELECT last_value FROM " + (%sequence-name-to-table sequence-name database)) + database :auto nil)))) diff --git a/tests/Makefile b/tests/Makefile index 2b79dcb..1003d8a 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -5,7 +5,7 @@ # Programer: Kevin M. Rosenberg # Date Started: Mar 2002 # -# CVS Id: $Id: Makefile 8153 2003-11-11 15:28:36Z kevin $ +# CVS Id: $Id$ # # This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg # diff --git a/tests/benchmarks.lisp b/tests/benchmarks.lisp index ec281d4..66800eb 100644 --- a/tests/benchmarks.lisp +++ b/tests/benchmarks.lisp @@ -3,7 +3,7 @@ ;;;; File: benchmarks.lisp ;;;; Authors: Kevin Rosenberg ;;;; Created: 03/05/2004 -;;;; Updated: $Id: test-init.lisp 9212 2004-05-03 18:44:03Z kevin $ +;;;; Updated: $Id$ ;;;; ;;;; Benchmark suite ;;;; diff --git a/tests/test-basic.lisp b/tests/test-basic.lisp index 516eeb2..de3e719 100644 --- a/tests/test-basic.lisp +++ b/tests/test-basic.lisp @@ -7,7 +7,7 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Created: Mar 2002 ;;;; -;;;; $Id: tests.lisp 8926 2004-04-10 21:12:52Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg ;;;; diff --git a/tests/test-time.lisp b/tests/test-time.lisp index 32ab171..92cf022 100644 --- a/tests/test-time.lisp +++ b/tests/test-time.lisp @@ -1,5 +1,5 @@ ;;; -*- Mode: Lisp -*- -;;; $Id: test-time.lisp,v 1.10 2004/03/08 18:00:53 jesse Exp $ +;;; $Id$ ;;; ;;; Copyright (c) 2000, 2001 onShore Development, Inc. ;;; diff --git a/tests/utils.lisp b/tests/utils.lisp index bacc9ff..8e274d9 100644 --- a/tests/utils.lisp +++ b/tests/utils.lisp @@ -7,7 +7,7 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Created: Mar 2002 ;;;; -;;;; $Id: tests.lisp 8926 2004-04-10 21:12:52Z kevin $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg ;;;;