;;;; *************************************************************************
(defpackage #:clsql-odbc
- (:use #:common-lisp #:clsql-base-sys)
+ (:use #:common-lisp #:clsql-sys)
(:export #:odbc-database)
(:documentation "This is the CLSQL interface to ODBC."))
:data-source-name dsn))))
(store-type-of-connected-database db)
db)
- (clsql-error (e)
- (error e))
- #+ignore
- (error () ;; Init or Connect failed
- (error 'clsql-connect-error
- :database-type database-type
- :connection-spec connection-spec
- :errno nil
- :error "Connection failed")))))
+ #+ignore
+ (sql-condition (e)
+ (error e))
+ (error () ;; Init or Connect failed
+ (error 'sql-connection-error
+ :database-type database-type
+ :connection-spec connection-spec
+ :message "Connection failed")))))
(defmethod database-underlying-type ((database odbc-database))
(database-odbc-db-type database))
(odbc-dbi:sql query-expression :db (database-odbc-conn database)
:result-types result-types
:column-names field-names)
- (clsql-error (e)
- (error e))
#+ignore
+ (sql-error (e)
+ (error e))
(error ()
- (error 'clsql-sql-error
+ (error 'sql-database-data-error
:database database
:expression query-expression
- :errno nil
- :error "Query failed"))))
+ :message "Query failed"))))
(defmethod database-execute-command (sql-expression
(database odbc-database))
(handler-case
(odbc-dbi:sql sql-expression :db (database-odbc-conn database))
- (clsql-error (e)
- (error e))
#+ignore
+ (sql-error (e)
+ (error e))
(error ()
- (error 'clsql-sql-error
+ (error 'sql-database-data-error
:database database
:expression sql-expression
- :errno nil
- :error "Execute command failed"))))
+ :message "Execute command failed"))))
(defstruct odbc-result-set
(query nil)
(length column-names)
nil ;; not able to return number of rows with odbc
))
- #+ignore
(error ()
- (error 'clsql-sql-error
+ (error 'sql-database-data-error
:database database
:expression query-expression
- :errno nil
- :error "Query result set failed"))))
+ :message "Query result set failed"))))
(defmethod database-dump-result-set (result-set (database odbc-database))
(odbc-dbi:close-query (odbc-result-set-query result-set))
;; NULLABLE is the eleventh column
(loop for row in rows
when (string-equal attribute (fourth row))
- do (return (values (ensure-keyword (sixth row))
- (parse-integer (seventh row) :junk-allowed t)
- (parse-integer (ninth row) :junk-allowed t)
- (parse-integer (nth 10 row) :junk-allowed t))))))
+ do
+ (let ((size (seventh row))
+ (precision (ninth row))
+ (scale (nth 10 row)))
+ (return (values (ensure-keyword (sixth row))
+ (when size (parse-integer size))
+ (when precision (parse-integer precision))
+ (when scale (parse-integer scale))))))))
(defmethod database-set-sequence-position (sequence-name
(position integer)
;; nothing to do
t)
-(when (clsql-base-sys:database-type-library-loaded :odbc)
- (clsql-base-sys:initialize-database-type :database-type :odbc))
+(when (clsql-sys:database-type-library-loaded :odbc)
+ (clsql-sys:initialize-database-type :database-type :odbc))