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);