Author: byterock
Date: Tue Apr  8 09:10:20 2008
New Revision: 11058

Modified:
   dbd-oracle/trunk/Todo
   dbd-oracle/trunk/oci8.c
   dbd-oracle/trunk/t/34pres_lobs.t

Log:
 Added the oci_typecode_name method to get the name rather than just the number 
of an OCI_TYPECODE from John Scoles
  Fixed a unreported bug with Embedded Objects from John Scoles

Fixed a bug in t/34pres_lobs.t as well

Modified: dbd-oracle/trunk/Todo
==============================================================================
--- dbd-oracle/trunk/Todo       (original)
+++ dbd-oracle/trunk/Todo       Tue Apr  8 09:10:20 2008
@@ -4,6 +4,10 @@
 
 For release 1.22 or later
 
+Add in the DBD only debugging flag
+
+Add new method oci_exe__mode to get the Name of the Execution Modes
+
 Add support for OCIClientVersion(),OCIPing(),OCIServerVersion()
 
 Expand support for Data Interface for Persistent LOBs by setting up support 
@@ -13,7 +17,6 @@
 
 Add support for OCIStmtPrepare2(), Statement caching
 
-
 The below might of been done but this list has not been maintained;
 
 Add column_info test

Modified: dbd-oracle/trunk/oci8.c
==============================================================================
--- dbd-oracle/trunk/oci8.c     (original)
+++ dbd-oracle/trunk/oci8.c     Tue Apr  8 09:10:20 2008
@@ -18,6 +18,8 @@
 
 DBISTATE_DECLARE;
 
+
+
 void
 dbd_init_oci(dbistate_t *dbistate)
 {
@@ -36,6 +38,44 @@
 
 }
 
+char *
+oci_typecode_name(int typecode){
+
+       dTHX;
+    switch (typecode) {
+       case OCI_TYPECODE_INTERVAL_YM:          return "INTERVAL_YM";
+       case OCI_TYPECODE_INTERVAL_DS:          return "NTERVAL_DS";
+               case OCI_TYPECODE_TIMESTAMP_TZ:         return "TIMESTAMP_TZ";
+       case OCI_TYPECODE_TIMESTAMP_LTZ:        return "TIMESTAMP_LTZ";
+       case OCI_TYPECODE_TIMESTAMP:            return "TIMESTAMP";
+       case OCI_TYPECODE_DATE:                         return "DATE";
+       case OCI_TYPECODE_CLOB:                         return "CLOB";
+       case OCI_TYPECODE_BLOB:                         return "BLOB";
+       case OCI_TYPECODE_BFILE:                        return "BFILE";
+       case OCI_TYPECODE_RAW:                          return "RAW";
+           case OCI_TYPECODE_CHAR:                             return "CHAR";
+           case OCI_TYPECODE_VARCHAR:                  return "VARCHAR";
+           case OCI_TYPECODE_VARCHAR2:                 return "VARCHAR2";
+           case OCI_TYPECODE_SIGNED8:                  return "SIGNED8";
+           case OCI_TYPECODE_UNSIGNED8:                return "DECLARE";
+       case OCI_TYPECODE_UNSIGNED16 :          return "UNSIGNED8";
+           case OCI_TYPECODE_UNSIGNED32 :      return "UNSIGNED32";
+           case OCI_TYPECODE_REAL :            return "REAL";
+           case OCI_TYPECODE_DOUBLE :          return "DOUBLE";
+           case OCI_TYPECODE_INTEGER :         return "INT";
+           case OCI_TYPECODE_SIGNED16 :            return "SHORT";
+           case OCI_TYPECODE_SIGNED32 :        return "LONG";
+           case OCI_TYPECODE_DECIMAL :         return "DECIMAL";
+           case OCI_TYPECODE_FLOAT :                   return "FLOAT";
+           case OCI_TYPECODE_NUMBER :                  return "NUMBER";
+           case OCI_TYPECODE_SMALLINT:                 return "SMALLINT";
+        case OCI_TYPECODE_OBJECT:                      return "OBJECT";
+       case OCI_TYPECODE_VARRAY:                       return "VARRAY";
+        case OCI_TYPECODE_TABLE:                       return "TABLE";
+        case OCI_TYPECODE_NAMEDCOLLECTION:     return "NAMEDCOLLECTION";
+    }
+    return "undef";
+}
 
 char *
 oci_status_name(sword status)
@@ -1345,7 +1385,7 @@
 
   /* get the data based on the type code*/
   if (DBIS->debug >= 5) {
-       PerlIO_printf(DBILOGFP, " getting value of object attribute named  %s 
with typecode=%d\n",name,typecode);
+       PerlIO_printf(DBILOGFP, " getting value of object attribute named  %s 
with typecode=%s\n",name,oci_typecode_name(typecode));
   }
 
   switch (typecode)
@@ -1490,7 +1530,7 @@
        OCIInd       *obj_ind;
 
        if (DBIS->debug >= 5) {
-               PerlIO_printf(DBILOGFP, " getting attributes of object named  
%s with typecode=%d\n",obj->type_name,obj->typecode);
+               PerlIO_printf(DBILOGFP, " getting attributes of object named  
%s with typecode=%s\n",obj->type_name,oci_typecode_name(obj->typecode));
        }
 
        switch (obj->typecode) {
@@ -1597,7 +1637,7 @@
                                                        
                                                     av_push(list,  &sv_undef);
                                                } else {
-                                                       if 
(obj->element_typecode == OCI_TYPECODE_OBJECT || fld->typecode == 
OCI_TYPECODE_VARRAY || fld->typecode == OCI_TYPECODE_TABLE || fld->typecode == 
OCI_TYPECODE_NAMEDCOLLECTION){
+                                                       if 
(obj->element_typecode == OCI_TYPECODE_OBJECT || obj->element_typecode == 
OCI_TYPECODE_VARRAY || obj->element_typecode== OCI_TYPECODE_TABLE || 
obj->element_typecode== OCI_TYPECODE_NAMEDCOLLECTION){
                                                                fld->value = 
newAV();
                                                get_object (sth,fld->value, 
fbh, fld,element);
                                                                av_push(list, 
newRV_noinc((SV *) fld->value));
@@ -1640,7 +1680,7 @@
 {
     dTHX;
        if (DBIS->debug >= 4) {
-               PerlIO_printf(DBILOGFP, " getting an embedded object named  %s 
with typecode=%d\n",fbh->obj->type_name,fbh->obj->typecode);
+               PerlIO_printf(DBILOGFP, " getting an embedded object named  %s 
with typecode=%s\n",fbh->obj->type_name,oci_typecode_name(fbh->obj->typecode));
        }
 
     if (fbh->obj->obj_ind && fbh->obj->obj_ind[0] == OCI_IND_NULL) {
@@ -2016,9 +2056,9 @@
        PerlIO_printf(DBILOGFP, "    parmdp = %p\n",obj->parmdp);
        PerlIO_printf(DBILOGFP, "    parmap = %p\n",obj->parmap);
        PerlIO_printf(DBILOGFP, "    tdo = %p\n",obj->tdo);
-       PerlIO_printf(DBILOGFP, "    typecode = %d\n",obj->typecode);
+       PerlIO_printf(DBILOGFP, "    typecode = 
%s\n",oci_typecode_name(obj->typecode));
        PerlIO_printf(DBILOGFP, "    col_typecode = %d\n",obj->col_typecode);
-       PerlIO_printf(DBILOGFP, "    element_typecode = 
%d\n",obj->element_typecode);
+       PerlIO_printf(DBILOGFP, "    element_typecode = 
%s\n",oci_typecode_name(obj->element_typecode));
        PerlIO_printf(DBILOGFP, "    obj_ref = %p\n",obj->obj_ref);
        PerlIO_printf(DBILOGFP, "    obj_value = %p\n",obj->obj_value);
        PerlIO_printf(DBILOGFP, "    obj_type = %p\n",obj->obj_type);

Modified: dbd-oracle/trunk/t/34pres_lobs.t
==============================================================================
--- dbd-oracle/trunk/t/34pres_lobs.t    (original)
+++ dbd-oracle/trunk/t/34pres_lobs.t    Tue Apr  8 09:10:20 2008
@@ -25,10 +25,6 @@
 
 plan tests => 11;
 
-BEGIN {
-       use_ok('DBI');
-}
-
 # create a database handle
 my $dsn = oracle_test_dsn();
 my $dbuser = $ENV{ORACLE_USERID} || 'scott/tiger';

Reply via email to