r9518: initial db2 support
[clsql.git] / db-db2 / db2-objects.lisp
index 288e573274fa120b9ddb77a1bbf86526852a55b9..cb1d2ba264b7ca666736400e66720666a88e7336 100644 (file)
 
 (in-package #:clsql-db2)
 
-(defmethod database-get-type-specifier (type args database (db-type (eql :db2)))
-  (declare (ignore type args database))
-    (format nil "VARCHAR2(~D)" *default-varchar-length*))
-
-(defmethod database-get-type-specifier ((type (eql 'integer)) args 
-                                       database (db-type (eql :db2)))
-  (declare (ignore database))
-  (if args
-      (format nil "NUMBER(~A,~A)"
-             (or (first args) 38) (or (second args) 0))
-    "INTEGER"))
-
-(defmethod database-get-type-specifier ((type (eql 'bigint)) args
-                                       database (db-type (eql :db2)))
-  (declare (ignore args database)) 
-  "CHAR(20)")
-
-(defmethod database-get-type-specifier ((type (eql 'universal-time)) args
-                                       database (db-type (eql :db2)))
-  (declare (ignore args database)) 
-  "CHAR(20)")
-
-(defmethod database-get-type-specifier ((type (eql 'string)) args
-                                       database (db-type (eql :db2)))
-  (declare (ignore database)) 
-  (if args
-      (format nil "CHAR(~A)" (car args))
-    (format nil "VARCHAR2(~D)" *default-varchar-length*)))
-
-(defmethod database-get-type-specifier ((type (eql 'varchar)) args
-                                       database (db-type (eql :db2)))
-  (declare (ignore database)) 
-  (if args
-      (format nil "VARCHAR2(~A)" (car args))
-    (format nil "VARCHAR2(~D)" *default-varchar-length*)))
-
-(defmethod database-get-type-specifier ((type (eql 'float)) args
-                                       database (db-type (eql :db2)))
-  (declare (ignore database)) 
-  (if args
-      (format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 38))
-    "DOUBLE PRECISION"))
-
-(defmethod database-get-type-specifier ((type (eql 'long-float)) args
-                                       database (db-type (eql :db2)))
-  (declare (ignore database)) 
-  (if args
-      (format nil "NUMBER(~A,~A)"
-             (or (first args) 38) (or (second args) 38))
-    "DOUBLE PRECISION"))
-
-(defmethod database-get-type-specifier ((type (eql 'boolean)) args
-                                       database (db-type (eql :db2)))
-  (declare (ignore args database))
-  "CHAR(1)")
-
-(defmethod read-sql-value (val type
-                          database (db-type (eql :db2)))
-  ;;(format t "value is \"~A\" of type ~A~%" val (type-of val))
-  (declare (ignore type database))
-  (etypecase val
-    (string
-     (read-from-string val))
-    (symbol
-     nil)))
-
-(defmethod read-sql-value (val (type (eql 'integer))
-                          database (db-type (eql :db2)))
-  (declare (ignore database))
-  val)
-
-(defmethod read-sql-value (val (type (eql 'float))
-                          database (db-type (eql :db2)))
-  (declare (ignore database))
-  val)
-
-(defmethod read-sql-value (val (type (eql 'boolean))
-                          database (db-type (eql :db2)))
-  (declare (ignore database))
-  (when (char-equal #\t (schar val 0))
-    t))
-
-(defmethod read-sql-value (val (type (eql 'bigint))
-                          database (db-type (eql :db2)))
-  (declare (ignore database))
-  (parse-integer val))
-
-(defmethod read-sql-value (val (type (eql 'universal-time))
-                          database (db-type (eql :db2)))
-  (declare (ignore database))
-  (parse-integer val))
-
-
-(defmethod database-get-type-specifier ((type (eql 'wall-time)) args
-                                       database (db-type (eql :db2)))
-  (declare (ignore args database))
-  "DATE")
-
-(defmethod database-get-type-specifier ((type (eql 'duration)) args
-                                       database (db-type (eql :db2)))
-  (declare (ignore args database))
-  "NUMBER(38)")