;;;; 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.
(defvar *time-conversion-function*
(lambda (universal-time &optional fraction)
(declare (ignore fraction))
- (clsql-base:format-time
- nil (clsql-base:utime->time universal-time)
+ (clsql-sys:format-time
+ nil (clsql-sys:utime->time universal-time)
:format :iso)
#+ignore
universal-time)
(let ((size (gensym)))
`(let ((,size (length ,string)))
(when (and ,max-length (> ,size ,max-length))
- (error "string \"~a\" of length ~d is longer than max-length: ~d"
- ,string ,size ,max-length))
+ (error 'clsql:sql-database-data-error
+ :message
+ (format nil "string \"~a\" of length ~d is longer than max-length: ~d"
+ ,string ,size ,max-length)))
(with-cast-pointer (char-ptr ,ptr :byte)
(dotimes (i ,size)
(setf (deref-array char-ptr '(:array :byte) i)
(progn ,result-code ,@body))
(#.$SQL_INVALID_HANDLE
(error
- 'clsql-base:clsql-odbc-error
- :odbc-message "Invalid handle"))
+ 'clsql-sys:sql-database-error
+ :message "ODBC: Invalid handle"))
(#.$SQL_STILL_EXECUTING
(error
- 'clsql-base:clsql-odbc-error
- :odbc-message "Still executing"))
+ 'clsql-sys:sql-temporary-error
+ :message "ODBC: Still executing"))
(#.$SQL_ERROR
(multiple-value-bind (error-message sql-state)
(handle-error (or ,henv +null-handle-ptr+)
(or ,hdbc +null-handle-ptr+)
(or ,hstmt +null-handle-ptr+))
(error
- 'clsql-base:clsql-odbc-error
- :odbc-message error-message
- :sql-state sql-state)))
+ 'clsql-sys:sql-database-error
+ :message error-message
+ :secondary-error-id sql-state)))
(#.$SQL_NO_DATA_FOUND
(progn ,result-code ,@body))
;; work-around for Allegro 7.0beta AMD64 which
(or ,hdbc +null-handle-ptr+)
(or ,hstmt +null-handle-ptr+))
(error
- 'clsql-base:clsql-odbc-error
- :odbc-message error-message
- :sql-state sql-state))
+ 'clsql-sys:sql-database-error
+ :message error-message
+ :secondary-error-id sql-state))
#+ignore
(progn ,result-code ,@body))))))
(SQLAllocStmt hdbc hstmt-ptr)
(deref-pointer hstmt-ptr 'sql-handle)))))
(if (uffi:null-pointer-p statement-handle)
- (error "Received null statement handle.")
+ (error 'clsql:sql-database-error :message "Received null statement handle.")
statement-handle)))
(defun %sql-get-info (hdbc info-type)
(prog1
(cond (flatp
(when (> column-count 1)
- (error "If more than one column is to be fetched, flatp has to be nil."))
+ (error 'clsql:sql-database-error
+ :message "If more than one column is to be fetched, flatp has to be nil."))
(loop until (= (%sql-fetch hstmt) $SQL_NO_DATA_FOUND)
collect
(read-data (aref data-ptrs 0)
data-ptr str
offset
data-length)))
- (error "wrong type. preliminary."))
+ (error 'clsql:sql-database-error :message "wrong type. preliminary."))
while (and (= res $SQL_SUCCESS_WITH_INFO)
(equal (sql-state +null-handle-ptr+ +null-handle-ptr+ hstmt)
"01004"))
data-ptr str
offset
(min out-len (1- +max-precision+))))
- (error "wrong type. preliminary."))
+ (error 'clsql:sql-database-error :message "wrong type. preliminary."))
while
(and (= res $SQL_SUCCESS_WITH_INFO)
#+ingore(eq (sql-state +null-handle-ptr+ +null-handle-ptr+ hstmt)