r11859: Canonicalize whitespace
[clsql.git] / db-oracle / oracle-objects.lisp
index 4e58aa5160b1e958b80f84a74ba79e72e32ca4c9..5c7d7fb0e4090402aa78c9b538d3f73bd442b75d 100644 (file)
@@ -2,7 +2,7 @@
 ;;;; *************************************************************************
 ;;;; FILE IDENTIFICATION
 ;;;;
-;;;; Name:          oracle-objects.lisp
+;;;; Name: oracle-objects.lisp
 ;;;;
 ;;;; $Id$
 ;;;;
 
 (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))
-    "NUMBER(38,0)"))
+              (or (first args) 38) (or (second args) 0))
+    "INTEGER"))
 
-(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 'bigint)) 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))
-  (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 '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* ")"))
-  "VARCHAR2(512)")
+      (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* ")"))
-  "VARCHAR2(256)")
+    (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))
-    "NUMBER"))
+      (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 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))
-    "NUMBER"))
+              (or (first args) 38) (or (second args) 38))
+    "DOUBLE PRECISION"))
 
-(defmethod read-sql-value (val type (database oracle-database))
-  (declare (ignore type database))
+(defmethod database-get-type-specifier ((type (eql 'boolean)) args
+                                        database (db-type (eql :oracle)))
+  (declare (ignore args database))
+  "CHAR(1)")
+
+(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 database))
   (etypecase val
     (string
      (read-from-string val))
     (symbol
      nil)))
 
-(defmethod read-sql-value (val (type (eql 'string)) 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 'integer)) (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 'float)) (database oracle-database))
-  val)
+(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 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))
+
 
-;;; LOCAL-TIME stuff that needs to go into hooks
-#+local-time
-(defmethod clsql::database-get-type-specifier
-  ((type (eql 'local-time::local-time)) args (database oracle-database))
-  (declare (ignore args))
+(defmethod database-get-type-specifier ((type (eql 'wall-time)) args
+                                        database (db-type (eql :oracle)))
+  (declare (ignore args database))
   "DATE")
 
-#+local-time
-(defmethod clsql::database-get-type-specifier
-  ((type (eql 'local-time::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)")