-2014-03-18 Russ Tyndall <russ@acceleration.net>
+2015-03-24 Russ Tyndall <russ@acceleration.net>
+ * sql/oodml.lisp: fixed call-next-method in the base of
+ read-sql-value and replaced with a continuable
+ sql-value-conversion-error
+ * default read-sql-value for list
+ * tests for sql-value-conversion-errors and list
+
+2015-03-18 Russ Tyndall <russ@acceleration.net>
* {uffi,db-mysql}/Makefile: remove -pie build hardening for
which caused load issues for Linux Mint
-2014-02-26 Kevin Rosenberg <kevin@rosenberg.net>
+2015-02-26 Kevin Rosenberg <kevin@rosenberg.net>
* Version 6.6.0 release
* {uffi,db-mysql}/Makefile: Add build hardening for Debian
-2014-02-24 Russ Tyndall <russ@acceleration.net>
+2015-02-24 Russ Tyndall <russ@acceleration.net>
* mysql-sql.lisp
an error in type declarations generating a compilation warning
was being treated as an error in recent SBCLs, fixed the type
warning by correcting the type (still a ton of compliation
notes)
-2014-02-23 Russ Tyndall <russ@acceleration.net>
+2015-02-23 Russ Tyndall <russ@acceleration.net>
* sql/metaclasses.lisp
made reinitialize-instance return the instance passed to it as
SBCL now expected (mentioned on the SBCL-devel mailing list by
(declare (ignore db-type))
(cond
;; null value or type
- ((or (equalp "nil" val) (eql 'null val)) nil)
-
+ ((or (null val)
+ (equalp "nil" val)
+ (eql 'null val)
+ (eql 'null type))
+ nil)
+
;; no specified type or already the right type
((or (null type)
(ignore-errors (typep val type)))
val)
;; actually convert
- (t
+ (t
(let ((res (handler-bind
;; all errors should be converted to sql-value-conversion-error
((error (lambda (c)
- (when *debugger-hook*
- (invoke-debugger c))
(unless (typep c 'sql-value-conversion-error)
+ ;; this was blowing up the tests till I
+ ;; unbound *debugger-hook* not sure the answer,
+ ;; as this is also imensely useful in actually
+ ;; finding bugs below this point
+ (when *debugger-hook* (invoke-debugger c))
(error-converting-value val type database)))))
(call-next-method))))
;; if we didnt get the right type after converting, we should probably
;; error right away
- (maybe-error-converting-value
- res val type database)))))
+ (maybe-error-converting-value res val type database)))))
(defmethod read-sql-value (val type database db-type)
+ "read a sql value, from :around read-eval is disabled read numbers in base 10"
;; errors, nulls and preconverted types are already handled in around
(typecase type
(symbol
(double-float 'double-float))))
(read-from-string val)))
;; maybe wrong type of float
- (float val))
+ (float val))
(if (eql type 'double-float) 1.0d0 1.0s0)))
(number (read-from-string val))
((boolean generalized-boolean)
(number (not (zerop val))))))
((wall-time duration) (parse-timestring val))
(date (parse-datestring val))
- (list (let ((*read-eval* nil))
- (read-from-string val)))
+ (list (read-from-string val))
(t (error-converting-value val type database))))
(t (typecase val
- (string
- (let ((*read-eval* nil))
- (read-from-string val)))
+ (string (read-from-string val))
(t (error-converting-value val type database))))))
;; ------------------------------------------------------------