projects
/
clsql.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
r9209: read tinyint as integer for odbc, handle boolean reading/writing fields
[clsql.git]
/
sql
/
objects.lisp
diff --git
a/sql/objects.lisp
b/sql/objects.lisp
index a995c221fcf2b996e77de512bed0866cfb25cf38..0232917ff4662b7ca80ae62d79b75b86cfd4c08d 100644
(file)
--- a/
sql/objects.lisp
+++ b/
sql/objects.lisp
@@
-430,9
+430,7
@@
superclass of the newly-defined View Class."
(defmethod update-slot-with-null ((object standard-db-object)
slotname
slotdef)
(defmethod update-slot-with-null ((object standard-db-object)
slotname
slotdef)
- (let ((st (slot-type slotdef))
- (void-value (slot-value slotdef 'void-value)))
- (setf (slot-value object slotname) void-value)))
+ (setf (slot-value object slotname) (slot-value slotdef 'void-value)))
(defvar +no-slot-value+ '+no-slot-value+)
(defvar +no-slot-value+ '+no-slot-value+)
@@
-586,8
+584,11
@@
superclass of the newly-defined View Class."
(prin1-to-string val)))
(defmethod database-output-sql-as-type ((type (eql 'boolean)) val database)
(prin1-to-string val)))
(defmethod database-output-sql-as-type ((type (eql 'boolean)) val database)
- (declare (ignore database))
- (if val "t" "f"))
+ (case (database-underlying-type database)
+ (:mysql
+ (if val 1 0))
+ (t
+ (if val "t" "f"))))
(defmethod database-output-sql-as-type ((type (eql 'string)) val database)
(declare (ignore database))
(defmethod database-output-sql-as-type ((type (eql 'string)) val database)
(declare (ignore database))
@@
-658,8
+659,13
@@
superclass of the newly-defined View Class."
(float (read-from-string val)))
(defmethod read-sql-value (val (type (eql 'boolean)) database)
(float (read-from-string val)))
(defmethod read-sql-value (val (type (eql 'boolean)) database)
- (declare (ignore database))
- (equal "t" val))
+ (case (database-underlying-type database)
+ (:mysql
+ (etypecase val
+ (string (if (string= "0" val) nil t))
+ (integer (if (zerop val) nil t))))
+ (t
+ (equal "t" val))))
(defmethod read-sql-value (val (type (eql 'univeral-time)) database)
(declare (ignore database))
(defmethod read-sql-value (val (type (eql 'univeral-time)) database)
(declare (ignore database))