Author: byterock
Date: Thu Oct 29 17:51:03 2009
New Revision: 13458

Modified:
   dbd-oracle/trunk/Changes
   dbd-oracle/trunk/Oracle.h
   dbd-oracle/trunk/Oracle.pm
   dbd-oracle/trunk/oci8.c

Log:
  Fix for rt.cpan.org Ticket #=49741 Oracle.h has commented out params in 
OCIXMLTypeCreateFromSrc from Kartik Thakore 
  Added from rt.cpan.org Ticket #=49436 Patch to add support for a few Oracle 
data types to type_info_all from David Hull 
  Added from rt.cpan.org Ticket #=49435 Patch to add support for a few Oracle 
data types to dbd_describe from David Hull 

Modified: dbd-oracle/trunk/Changes
==============================================================================
--- dbd-oracle/trunk/Changes    (original)
+++ dbd-oracle/trunk/Changes    Thu Oct 29 17:51:03 2009
@@ -1,4 +1,7 @@
 =head1 Changes in DBD-Oracle 1.24(svn rev???)
+  Fix for rt.cpan.org Ticket #=49741 Oracle.h has commented out params in 
OCIXMLTypeCreateFromSrc from Kartik Thakore 
+  Added from rt.cpan.org Ticket #=49436 Patch to add support for a few Oracle 
data types to type_info_all from David Hull 
+  Added from rt.cpan.org Ticket #=49435 Patch to add support for a few Oracle 
data types to dbd_describe from David Hull 
   Fix for rt.cpan.org Ticket #=49331 Bad code example in POD from John Scoles
   Added support for looking up OCI_DTYPE_PARAM Attributes
   Added support for looking up csform values 

Modified: dbd-oracle/trunk/Oracle.h
==============================================================================
--- dbd-oracle/trunk/Oracle.h   (original)
+++ dbd-oracle/trunk/Oracle.h   Thu Oct 29 17:51:03 2009
@@ -126,9 +126,9 @@
 
 */
 
-sword  OCIXMLTypeCreateFromSrc(/*_ OCISvcCtx *svchp, OCIError *errhp,
+sword  OCIXMLTypeCreateFromSrc( OCISvcCtx *svchp, OCIError *errhp,
                      OCIDuration dur, ub1 src_type, dvoid *src_ptr,
-                     sb4 ind, OCIXMLType **retInstance _*/);
+                     sb4 ind, OCIXMLType **retInstance );
 
 
 /* end of Oracle.h */

Modified: dbd-oracle/trunk/Oracle.pm
==============================================================================
--- dbd-oracle/trunk/Oracle.pm  (original)
+++ dbd-oracle/trunk/Oracle.pm  Thu Oct 29 17:51:03 2009
@@ -728,7 +728,70 @@
            [ "CLOB",            SQL_LONGVARCHAR,   2147483647,"'",  "'",
                undef,            1,1,0,undef,0,undef,
                "CLOB",            undef,undef,SQL_LONGVARCHAR,  
undef,undef,undef, ],
+               
            if $version >= 8;
+               push @$type_info_all,
+               ["TIMESTAMP WITH TIME ZONE",    # type name
+                       SQL_TYPE_TIMESTAMP_WITH_TIMEZONE,       # data type
+                       40,             # column size
+                       "TIMESTAMP'",   # literal prefix
+                       "'",            # literal suffix
+                       "precision",    # create params 
+                       1,              # nullable
+                       0,              # case sensitive
+                       3,              # searchable
+                       undef,          # unsigned attribute
+                       0,              # fixed prec scale
+                       0,              # auto unique value
+                       undef,          # local type name
+                       0,              # minimum scale 
+                       6,              # maximum scale
+                       SQL_TIMESTAMP,  # sql data type 
+                       5,              # sql datetime sub
+                       undef,          # num prec radix
+                       undef,          # interval precision
+               ],
+               [ "INTERVAL DAY TO SECOND",     # type name     
+                       SQL_INTERVAL_DAY_TO_SECOND,     # data type
+                       22,                             # column size   '+00 
11:12:10.222222200'
+                       "INTERVAL'",    # literal prefix
+                       "'",            # literal suffix
+                       "precision",    # create params
+                       1,              # nullable
+                       0,              # case sensitive
+                       3,              # searchable
+                       undef,          # unsigned attribute
+                       0,              # fixed prec scale
+                       0,              # auto unique value
+                       undef,          # local type name
+                       0,              # minimum scale 
+                       9,              # maximum scale 
+                       SQL_INTERVAL,   # sql data type 
+                       10,             # sql datetime sub
+                       undef,          # num prec radix
+                       undef,          # interval precision
+               ],
+               [ "INTERVAL YEAR TO MONTH",     # type name     
+                       SQL_INTERVAL_YEAR_TO_MONTH,     # data type
+                       13,             # column size   '+012345678-01'
+                       "INTERVAL'",    # literal prefix
+                       "'",            # literal suffix
+                       "precision",    # create params
+                       1,              # nullable
+                       0,              # case sensitive
+                       3,              # searchable
+                       undef,          # unsigned attribute
+                       0,              # fixed prec scale
+                       0,              # auto unique value
+                       undef,          # local type name
+                       0,              # minimum scale 
+                       9,              # maximum scale 
+                       SQL_INTERVAL,   # sql data type 
+                       7,              # sql datetime sub
+                       undef,          # num prec radix
+                       undef,          # interval precision
+               ],
+               if $version >= 10;
        return $type_info_all;
     }
 

Modified: dbd-oracle/trunk/oci8.c
==============================================================================
--- dbd-oracle/trunk/oci8.c     (original)
+++ dbd-oracle/trunk/oci8.c     Thu Oct 29 17:51:03 2009
@@ -384,17 +384,17 @@
        case OCI_ATTR_PRECISION:                        return 
"OCI_ATTR_PRECISION"; /* precision if number type */
        case OCI_ATTR_SCALE:                            return 
"OCI_ATTR_SCALE"; /* scale if number type */
        case OCI_ATTR_IS_NULL:                          return 
"OCI_ATTR_IS_NULL"; /* is it null ? */
-       case OCI_ATTR_TYPE_NAME:                        return 
"OCI_ATTR_TYPE_NAME"; 
+       case OCI_ATTR_TYPE_NAME:                        return 
"OCI_ATTR_TYPE_NAME";
   /* name of the named data type or a package name for package private types */
        case OCI_ATTR_SCHEMA_NAME:                      return 
"OCI_ATTR_SCHEMA_NAME";  /* the schema name */
        case OCI_ATTR_SUB_NAME:                         return 
"OCI_ATTR_SUB_NAME";  /* type name if package private type */
-       case OCI_ATTR_POSITION:                         return 
"OCI_ATTR_POSITION"; 
+       case OCI_ATTR_POSITION:                         return 
"OCI_ATTR_POSITION";
        case OCI_ATTR_CHAR_USED:            return "OCI_ATTR_CHAR_USED";      
/* char length semantics */
        case OCI_ATTR_CHAR_SIZE:             return "OCI_ATTR_CHAR_SIZE";       
         /* char length */
        case OCI_ATTR_CHARSET_ID:                       return 
"OCI_ATTR_CHARSET_ID";                           /* Character Set ID */
        case OCI_ATTR_CHARSET_FORM:                     return 
"OCI_ATTR_CHARSET_FORM";                       /* Character Set Form */
        }
-       
+
        sv = sv_2mortal(newSViv((IV)attr));
        return SvPV(sv,na);
 
@@ -410,7 +410,7 @@
        switch (attr) {
        /*=============================Attribute 
Types===============================*/
 
-       
+
        case OCI_ATTR_FNCODE:                           return 
"OCI_ATTR_FNCODE";                       /* the OCI function code */
        case OCI_ATTR_OBJECT:                           return 
"OCI_ATTR_OBJECT"; /* is the environment initialized in object mode */
        case OCI_ATTR_NONBLOCKING_MODE:         return 
"OCI_ATTR_NONBLOCKING_MODE";                   /* non blocking mode */
@@ -3405,9 +3405,12 @@
 
                        case    182:                              /* INTERVAL 
YEAR TO MONTH */
                        case    183:                              /* INTERVAL 
DAY TO SECOND */
-                       case    190:                              /* INTERVAL 
DAY TO SECOND */
+                       case    185:                              /* TIME 
(ocidfn.h) */
+                       case    186:                              /* TIME WITH 
TIME ZONE (ocidfn.h) */
                        case    187:                              /* TIMESTAMP 
*/
                        case    188:                            /* TIMESTAMP 
WITH TIME ZONE     */
+                       case    189:                              /* INTERVAL 
YEAR TO MONTH (ocidfn.h) */
+                       case    190:                              /* INTERVAL 
DAY TO SECOND */
                        case    232:                              /* TIMESTAMP 
WITH LOCAL TIME ZONE */
                                /* actually dependent on NLS default date 
format*/
                                        fbh->disize = 75;               /* XXX 
*/
@@ -3468,7 +3471,7 @@
                /* add space for STRING null term, or VAR len prefix */
                sb4 define_len = (ftype==94||ftype==95) ? fbh->disize+4 : 
fbh->disize;
                fb_ary_t  *fb_ary;
-               
+
                if (fbh->clbk_lob || fbh->piece_lob  ){/*init the cb_abuf with 
this call*/
                        fbh->fb_ary = 
fb_ary_cb_alloc(imp_sth->piece_size,define_len, imp_sth->rs_array_size);
 

Reply via email to