X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=db-oracle%2Foracle-objects.lisp;h=5e88bb1933bf7dc553642d0c9c1676a52906a1e1;hb=2f185bf0167aa5a0be8e82a0c1ee961ca28f1426;hp=4e58aa5160b1e958b80f84a74ba79e72e32ca4c9;hpb=105606732f2cc5681c7eb76da58a11988ba64d96;p=clsql.git diff --git a/db-oracle/oracle-objects.lisp b/db-oracle/oracle-objects.lisp index 4e58aa5..5e88bb1 100644 --- a/db-oracle/oracle-objects.lisp +++ b/db-oracle/oracle-objects.lisp @@ -2,7 +2,7 @@ ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; -;;;; Name: oracle-objects.lisp +;;;; Name: oracle-objects.lisp ;;;; ;;;; $Id$ ;;;; @@ -22,8 +22,14 @@ (declare (ignore type args)) (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")) +(defmethod database-get-type-specifier ((type (eql 'integer)) args (database oracle-database)) + (if args + (format nil "NUMBER(~A,~A)" + (or (first args) 38) (or (second args) 0)) + "INTEGER")) + (defmethod database-get-type-specifier - ((type (eql 'integer)) args (database oracle-database)) + ((type (eql 'bigint)) args (database oracle-database)) (if args (format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 0)) @@ -45,61 +51,59 @@ ((type (eql 'string)) args (database oracle-database)) (if args (format nil "VARCHAR2(~A)" (car args)) - (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")) - "VARCHAR2(512)") + (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))) (defmethod database-get-type-specifier ((type (eql 'raw-string)) args (database oracle-database)) (if args (format nil "VARCHAR2(~A)" (car args)) - (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")")) - "VARCHAR2(256)") + (concatenate 'string "VARCHAR2(" *oracle-default-varchar2-length* ")"))) (defmethod database-get-type-specifier ((type (eql 'float)) args (database oracle-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)) (if args (format nil "NUMBER(~A,~A)" (or (first args) 38) (or (second args) 38)) - "NUMBER")) + "double precision")) + +(defmethod database-get-type-specifier + ((type (eql 'boolean)) args (database oracle-database)) + (declare (ignore args)) + "CHAR(1)") (defmethod read-sql-value (val type (database oracle-database)) - (declare (ignore type database)) ;;(format t "value is \"~A\" of type ~A~%" val (type-of val)) + (declare (ignore type)) (etypecase val (string (read-from-string val)) (symbol nil))) -(defmethod read-sql-value (val (type (eql 'string)) database) - (declare (ignore database)) - val) - (defmethod read-sql-value (val (type (eql 'integer)) (database oracle-database)) - (declare (ignore database)) val) (defmethod read-sql-value (val (type (eql 'float)) (database oracle-database)) 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)) +(defmethod read-sql-value (val (type (eql 'boolean)) (database oracle-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)) "DATE") -#+local-time -(defmethod clsql::database-get-type-specifier - ((type (eql 'local-time::duration)) +(defmethod database-get-type-specifier + ((type (eql 'duration)) args (database oracle-database)) (declare (ignore args))