(in-package #:clsql-oracle)
-(defparameter *oracle-default-varchar2-length* "512")
+(defmethod database-get-type-specifier (type args database (db-type (eql :oracle)))
+ (declare (ignore type args database))
+ (format nil "VARCHAR2(~D)" *default-string-length*))
-(defmethod database-get-type-specifier
- (type args (database oracle-database))
- (declare (ignore type args))
- (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))
-
-(defmethod database-get-type-specifier ((type (eql 'integer)) args (database oracle-database))
+(defmethod database-get-type-specifier ((type (eql 'integer)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
(if args
(format nil "NUMBER(~A,~A)"
- (or (first args) 38) (or (second args) 0))
+ (or (first args) 38) (or (second args) 0))
"INTEGER"))
-(defmethod database-get-type-specifier
- ((type (eql 'bigint)) args (database oracle-database))
- (if args
- (format nil "NUMBER(~A,~A)"
- (or (first args) 38) (or (second args) 0))
- "NUMBER(38,0)"))
+(defmethod database-get-type-specifier ((type (eql 'bigint)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore args database))
+ "CHAR(20)")
-(defmethod database-get-type-specifier
- ((type (eql 'simple-base-string)) args (database oracle-database))
- (if args
- (format nil "VARCHAR2(~A)" (car args))
- (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
+(defmethod database-get-type-specifier ((type (eql 'universal-time)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore args database))
+ "CHAR(20)")
-(defmethod database-get-type-specifier
- ((type (eql 'simple-string)) args (database oracle-database))
+(defmethod database-get-type-specifier ((type (eql 'string)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
(if args
- (format nil "VARCHAR2(~A)" (car args))
- (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
-
-(defmethod database-get-type-specifier
- ((type (eql 'string)) args (database oracle-database))
- (if args
- (format nil "VARCHAR2(~A)" (car args))
- (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
+ (format nil "CHAR(~A)" (car args))
+ (format nil "VARCHAR2(~D)" *default-string-length*)))
-(defmethod database-get-type-specifier
- ((type (eql 'raw-string)) args (database oracle-database))
+(defmethod database-get-type-specifier ((type (eql 'varchar)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
(if args
(format nil "VARCHAR2(~A)" (car args))
- (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")))
+ (format nil "VARCHAR2(~D)" *default-string-length*)))
-(defmethod database-get-type-specifier
- ((type (eql 'float)) args (database oracle-database))
+(defmethod database-get-type-specifier ((type (eql 'float)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
(if args
(format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 38))
- "double precision"))
+ "DOUBLE PRECISION"))
-(defmethod database-get-type-specifier
- ((type (eql 'long-float)) args (database oracle-database))
+(defmethod database-get-type-specifier ((type (eql 'long-float)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
(if args
(format nil "NUMBER(~A,~A)"
- (or (first args) 38) (or (second args) 38))
- "double precision"))
+ (or (first args) 38) (or (second args) 38))
+ "DOUBLE PRECISION"))
-(defmethod database-get-type-specifier
- ((type (eql 'boolean)) args (database oracle-database))
- (declare (ignore args))
+(defmethod database-get-type-specifier ((type (eql 'boolean)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore args database))
"CHAR(1)")
-(defmethod read-sql-value (val type (database oracle-database))
+(defmethod database-get-type-specifier ((type (eql 'generalized-boolean)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore args database))
+ "CHAR(1)")
+
+(defmethod read-sql-value (val type
+ database (db-type (eql :oracle)))
;;(format t "value is \"~A\" of type ~A~%" val (type-of val))
- (declare (ignore type))
+ (declare (ignore type database))
(etypecase val
(string
(read-from-string val))
(symbol
nil)))
-(defmethod read-sql-value
- (val (type (eql 'integer)) (database oracle-database))
+(defmethod read-sql-value (val (type (eql 'integer))
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
val)
-(defmethod read-sql-value (val (type (eql 'float)) (database oracle-database))
+(defmethod read-sql-value (val (type (eql 'float))
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
val)
-(defmethod read-sql-value (val (type (eql 'boolean)) (database oracle-database))
+(defmethod read-sql-value (val (type (eql 'boolean))
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
+ (when (char-equal #\t (schar val 0))
+ t))
+
+(defmethod read-sql-value (val (type (eql 'generalized-boolean))
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
(when (char-equal #\t (schar val 0))
t))
-(defmethod database-get-type-specifier
- ((type (eql 'wall-time)) args (database oracle-database))
- (declare (ignore args))
+(defmethod read-sql-value (val (type (eql 'bigint))
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
+ (parse-integer val))
+
+(defmethod read-sql-value (val (type (eql 'universal-time))
+ database (db-type (eql :oracle)))
+ (declare (ignore database))
+ (parse-integer val))
+
+
+(defmethod database-get-type-specifier ((type (eql 'wall-time)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore args database))
"DATE")
-(defmethod database-get-type-specifier
- ((type (eql 'duration))
- args
- (database oracle-database))
- (declare (ignore args))
+(defmethod database-get-type-specifier ((type (eql 'duration)) args
+ database (db-type (eql :oracle)))
+ (declare (ignore args database))
"NUMBER(38)")