[PATCH] Re: ANNOUNCE: DBD::Oracle 1.22 Release Candidate 1

"H.Merijn Brand" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
On Thu, 24 Jul 2008 15:38:34 -0400, John Scoles <[email protected]>
wrote:

> Well here is is a very large maintenance release of DBD::ORACLE
> 
> You can find it here
> 
> http://svn.perl.org/modules/dbd-oracle/trunk/DBD-Oracle-1.22-RC1.tar

Starting from DBD-Oracle-1.22-11591 from SVN trunk ...

Patches for the low-hanging fruit at the end and attached
#############################################################################
HP-UX 11.23/64 ipf + Oracle 9.2
----
cc -c  -I/pro/oracle/v920/rdbms/public -I/pro/oracle/v920/rdbms/demo -I/pro/oracle/v920/rdbms/demo -I/pro/oracle/v920/rdbms/public -I/pro/oracle/v920/plsql/public -I/pro/oracle/v920/network/public -I/pro/lib/perl5/site_perl/5.8.7/IA64.ARCHREV_0-LP64/auto/DBI -Ae -DDEBUGGING +Z -z -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +O2 +Onolimit   -DVERSION=\"1.22\" -DXS_VERSION=\"1.22\" +Z "-I/pro/lib/perl5/5.8.7/IA64.ARCHREV_0-LP64/CORE"  -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"9.2.0.7\" Oracle.c
"Oracle.xs", line 252: warning #2009-D: nested comment is not allowed
      /*This will work if the DB goes down, /*
                                            ^
cc -c  -I/pro/oracle/v920/rdbms/public -I/pro/oracle/v920/rdbms/demo -I/pro/oracle/v920/rdbms/demo -I/pro/oracle/v920/rdbms/public -I/pro/oracle/v920/plsql/public -I/pro/oracle/v920/network/public -I/pro/lib/perl5/site_perl/5.8.7/IA64.ARCHREV_0-LP64/auto/DBI -Ae -DDEBUGGING +Z -z -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +O2 +Onolimit   -DVERSION=\"1.22\" -DXS_VERSION=\"1.22\" +Z "-I/pro/lib/perl5/5.8.7/IA64.ARCHREV_0-LP64/CORE"  -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"9.2.0.7\" dbdimp.c
"dbdimp.c", line 84: warning #2236-D: controlling expression is constant
        && OCIErrorGet_log_stat(errhp, recno, (text*)NULL, &eg_errcode, errbuf,
           ^

"dbdimp.c", line 616: warning #2009-D: nested comment is not allowed
            /* XXX recent oracle docs recommend using OCIEnvCreate() instead of */
            ^

"dbdimp.c", line 690: warning #4212-D: mismatch between character pointer
          types "char *" and "oratext *"
                OCINlsCharSetIdToName(imp_dbh->envhp,charsetname, sizeof(charsetname),charsetid );
                                                     ^

"dbdimp.c", line 691: warning #4212-D: mismatch between character pointer
          types "char *" and "oratext *"
                OCINlsCharSetIdToName(imp_dbh->envhp,ncharsetname, sizeof(ncharsetname),ncharsetid );
                                                     ^

"dbdimp.c", line 1055: warning #2167-D: argument of type "ub4 *" is
          incompatible with parameter of type "STRLEN *"
    bufp = SvPV(source, len);
           ^

"dbdimp.c", line 285: warning #4275-D: constant out of range ([0 - 4294967295]
          ) for the operator
      Newz(42, fb_ary->abuf,      size * piece_size, ub1);
      ^

"dbdimp.c", line 286: warning #4275-D: constant out of range ([0 - 4294967295]
          ) for the operator
      Newz(42, fb_ary->cb_abuf,   size * max_len, ub1);
      ^

"dbdimp.c", line 287: warning #4275-D: constant out of range ([0 - 4294967295]
          ) for the operator
      Newz(42, fb_ary->aindp,  (unsigned)size,        sb2);
      ^

"dbdimp.c", line 288: warning #4275-D: constant out of range ([0 - 4294967295]
          ) for the operator
      Newz(42, fb_ary->arlen,  (unsigned)size,        ub2);
      ^

"dbdimp.c", line 289: warning #4275-D: constant out of range ([0 - 4294967295]
          ) for the operator
      Newz(42, fb_ary->arcode, (unsigned)size,        ub2);
      ^

"dbdimp.c", line 305: warning #4275-D: constant out of range ([0 - 4294967295]
          ) for the operator
      Newz(42, fb_ary->abuf,   size * bufl, ub1);
      ^

"dbdimp.c", line 306: warning #4275-D: constant out of range ([0 - 4294967295]
          ) for the operator
      Newz(42, fb_ary->aindp,  (unsigned)size,        sb2);
      ^

"dbdimp.c", line 307: warning #4275-D: constant out of range ([0 - 4294967295]
          ) for the operator
      Newz(42, fb_ary->arlen,  (unsigned)size,        ub2);
      ^

"dbdimp.c", line 308: warning #4275-D: constant out of range ([0 - 4294967295]
          ) for the operator
      Newz(42, fb_ary->arcode, (unsigned)size,        ub2);
      ^

cc -c  -I/pro/oracle/v920/rdbms/public -I/pro/oracle/v920/rdbms/demo -I/pro/oracle/v920/rdbms/demo -I/pro/oracle/v920/rdbms/public -I/pro/oracle/v920/plsql/public -I/pro/oracle/v920/network/public -I/pro/lib/perl5/site_perl/5.8.7/IA64.ARCHREV_0-LP64/auto/DBI -Ae -DDEBUGGING +Z -z -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +O2 +Onolimit   -DVERSION=\"1.22\" -DXS_VERSION=\"1.22\" +Z "-I/pro/lib/perl5/5.8.7/IA64.ARCHREV_0-LP64/CORE"  -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"9.2.0.7\" oci8.c
"oci8.c", line 202: error #2020: identifier "OCI_BIND_SOFT" is undefined
                case OCI_BIND_SOFT:     return "BIND_SOFT";               /* soft bind or define */
                     ^

"oci8.c", line 203: error #2020: identifier "OCI_DEFINE_SOFT" is undefined
                case OCI_DEFINE_SOFT:   return "DEFINE_SOFT";           /* soft bind or define */
                     ^

"oci8.c", line 245: error #2020: identifier "OCI_MUTEX_TRY" is undefined
                case OCI_MUTEX_TRY:                return "MUTEX_TRY";    /* try and acquire mutex */
                     ^

"oci8.c", line 246: error #2020: identifier "OCI_NCHAR_LITERAL_REPLACE_ON" is
          undefined
                case OCI_NCHAR_LITERAL_REPLACE_ON: return "NCHAR_LITERAL_REPLACE_ON"; /* nchar literal replace on */
                     ^

"oci8.c", line 247: error #2020: identifier "OCI_NCHAR_LITERAL_REPLACE_OFF" is
          undefined
                case OCI_NCHAR_LITERAL_REPLACE_OFF:return "NCHAR_LITERAL_REPLACE_OFF"; /* nchar literal replace off*/
                     ^

"oci8.c", line 393: warning #2236-D: controlling expression is constant
        && OCIErrorGet_log_stat(errhp, recno, (text*)NULL, &eg_errcode, errbuf,
           ^

"oci8.c", line 1660: warning #2167-D: argument of type "ub4 *" is incompatible
          with parameter of type "size_t *"
                                                                &str_len,
                                                                ^

"oci8.c", line 2085: warning #2009-D: nested comment is not allowed
                /**(fb_ary->cb_abuf+(actual_bufl))='\0'; /* add a null teminator
                                                         ^

"oci8.c", line 3409: warning #2167-D: argument of type "STRLEN *" is
          incompatible with parameter of type "ub4 *"
                          &tablename, &tablename_len, OCI_ATTR_NAME, errhp, status);
                                      ^

"oci8.c", line 1247: warning #4275-D: constant out of range ([0 - 4294967295])
          for the operator
        New(42, buffer, buflen, ub1);
        ^

"oci8.c", line 2374: warning #4275-D: constant out of range ([0 - 4294967295])
          for the operator
                Newz(1, obj->fields, (unsigned) obj->field_count, fbh_obj_t);
                ^

"oci8.c", line 2572: warning #4275-D: constant out of range ([0 - 4294967295])
          for the operator
      Newz(42, imp_sth->fbh, num_fields, imp_fbh_t);
      ^

5 errors detected in the compilation of "oci8.c".

With the patches applied:

> make test
PERL_DL_NONLAZY=1 /pro/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01base................# Test loading DBI, DBD::Oracle and version
t/01base................ok
t/10general.............ok
t/12impdata.............ok
t/14threads.............skipped: this hpux perl 5.008007 not configured to support iThreads
t/15nls.................ok
t/20select..............ok
t/21nchar...............ok
t/22nchar_al32utf8......ok
t/22nchar_utf8..........ok
t/23wide_db.............skipped: Database character set is not Unicode
t/23wide_db_8bit........skipped: Database character set is not Unicode
t/23wide_db_al32utf8....skipped: Database character set is not Unicode
t/24implicit_utf8.......ok
t/25plsql...............ok
t/26exe_array...........ok
t/28array_bind..........ok
t/30long................ok
t/31lob.................ok
t/31lob_extended........ok
t/32xmltype.............ok
t/34pres_lobs...........ok
t/40ph_type.............1/19  Placeholder behaviour for ora_type=1 VARCHAR2 (the default) varies with Oracle version.
 Oracle 7 didn't strip trailing spaces, Oracle 8 did, until 9.2.x
 Your system doesn't. If that seems odd, let us know.
t/40ph_type.............ok
t/50cursor..............ok
t/51scroll..............ok
t/55nested..............ok
t/56embbeded............ok
t/60reauth..............skipped: ORACLE_USERID_2 not defined.
t/70meta................ok
t/80ora_charset.........1/14



t/80ora_charset......... Dubious, test returned 4 (wstat 1024, 0x400)
 Failed 4/14 subtests

Test Summary Report
-------------------
t/80ora_charset     (Wstat: 1024 Tests: 14 Failed: 4)
  Failed tests:  9-10, 13-14
  Non-zero exit status: 4
Files=29, Tests=2062, 52 wallclock secs ( 0.79 usr  0.14 sys +  9.98 cusr  2.08 csys = 12.99 CPU)
Result: FAIL
Failed 1/29 test programs. 4/2062 subtests failed.

#############################################################################
HP-UX 11.23/64 ipf + Oracle 10.2
----
> make test
PERL_DL_NONLAZY=1 /pro/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01base................# Test loading DBI, DBD::Oracle and version
t/01base................ok
t/10general.............ok
t/12impdata.............ok
t/14threads.............skipped: this hpux perl 5.008007 not configured to support iThreads
t/15nls.................ok
t/20select..............ok
t/21nchar...............ok
t/22nchar_al32utf8......ok
t/22nchar_utf8..........ok
t/23wide_db.............skipped: Database character set is not Unicode
t/23wide_db_8bit........skipped: Database character set is not Unicode
t/23wide_db_al32utf8....skipped: Database character set is not Unicode
t/24implicit_utf8.......ok
t/25plsql...............ok
t/26exe_array...........ok
t/28array_bind..........ok
t/30long................ok
t/31lob.................ok
t/31lob_extended........ok
t/32xmltype.............ok
t/34pres_lobs...........ok
t/40ph_type.............1/19  Placeholder behaviour for ora_type=1 VARCHAR2 (the default) varies with Oracle version.
 Oracle 7 didn't strip trailing spaces, Oracle 8 did, until 9.2.x
 Your system doesn't. If that seems odd, let us know.
t/40ph_type.............ok
t/50cursor..............ok
t/51scroll..............ok
t/55nested..............ok
t/56embbeded............ok
t/60reauth..............skipped: ORACLE_USERID_2 not defined.
t/70meta................ok
t/80ora_charset.........1/14



t/80ora_charset......... Dubious, test returned 4 (wstat 1024, 0x400)
 Failed 4/14 subtests

Test Summary Report
-------------------
t/80ora_charset     (Wstat: 1024 Tests: 14 Failed: 4)
  Failed tests:  9-10, 13-14
  Non-zero exit status: 4
Files=29, Tests=2062, 39 wallclock secs ( 0.81 usr  0.19 sys + 12.93 cusr  3.06 csys = 16.99 CPU)
Result: FAIL
Failed 1/29 test programs. 4/2062 subtests failed.
make: *** [test_dynamic] Error 4


> perl -Iblib/{lib,arch} t/80ora_charset.t
1..14
ok 1 - prepared: insert into dbd_ora__drop_me ( idx, ch, nch, descr, dt ) values( ?, ?, ?, ?, sysdate )
ok 2 - bind_param idx
ok 3 - bind_param ch withOUT attribute ora_csform
ok 4 - bind_param nch
ok 5 - bind_param descr withOUT attribute ora_csform
ok 6 - insert row 1: DEGREE SIGN
ok 7
ok 8
not ok 9 - match char
not ok 10 - match char
ok 11
ok 12
not ok 13 - match char
not ok 14 - match char
Exit 4




--8<--- patches.diff
--- Oracle.xs.org       2008-07-28 14:50:54 +0200
+++ Oracle.xs   2008-07-28 14:50:59 +0200
@@ -249,7 +249,7 @@ ora_ping(dbh)
        CODE:
        /*simply does a call to OCIServerVersion which should make 1 round trip*/
     /*later I will replace this with the actual OCIPing command*/
-    /*This will work if the DB goes down, /*
+    /*This will work if the DB goes down, */
     /*If the listener goes down it is another case as the Listener is needed to establish the connection not maintain it*/
     /*so we should stay connected but we cannot get nay new connections*/
        {
--- dbdimp.c.org        2008-07-28 14:53:48 +0200
+++ dbdimp.c    2008-07-28 14:53:58 +0200
@@ -611,10 +611,10 @@ dbd_db_login6(SV *dbh, imp_dbh_t *imp_db
             al32utf8_csid  = OCINlsCharSetNameToId(imp_dbh->envhp, (void*)"AL32UTF8");
             al16utf16_csid = OCINlsCharSetNameToId(imp_dbh->envhp, (void*)"AL16UTF16");

-#else /* (the old init code) NEW_OCI_INIT */
-        /* this is now depricated and will be removed as we no longer support <9.2 oracle
-           /* XXX recent oracle docs recommend using OCIEnvCreate() instead of */
-           /* OCIInitialize + OCIEnvInit, we'd need ifdef's for pre-OCIEnvNlsCreate */
+#else  /* (the old init code) NEW_OCI_INIT */
+       /* this is now depricated and will be removed as we no longer support <9.2 oracle */
+       /* XXX recent oracle docs recommend using OCIEnvCreate() instead of     */
+       /* OCIInitialize + OCIEnvInit, we'd need ifdef's for pre-OCIEnvNlsCreate */
                OCIInitialize_log_stat(init_mode, 0, 0,0,0, status);


--- oci8.c.org  2008-07-28 15:05:32 +0200
+++ oci8.c      2008-07-28 15:09:17 +0200
@@ -197,10 +197,12 @@ oci_bind_options(ub4 options)
        /*------------------------Bind and Define Options----------------------------*/
                case OCI_DEFAULT:       return "DEFAULT";
                case OCI_SB2_IND_PTR:   return "SB2_IND_PTR";                          /* unused */
-               case OCI_DATA_AT_EXEC:  return "DATA_AT_EXEC";             /* data at execute time */
-               case OCI_PIECEWISE:     return "PIECEWISE";         /* piecewise DMLs or fetch */
-               case OCI_BIND_SOFT:     return "BIND_SOFT";               /* soft bind or define */
-               case OCI_DEFINE_SOFT:   return "DEFINE_SOFT";           /* soft bind or define */
+               case OCI_DATA_AT_EXEC:  return "DATA_AT_EXEC";  /* data at execute time */
+               case OCI_PIECEWISE:     return "PIECEWISE";     /* piecewise DMLs or fetch */
+#ifdef OCI_BIND_SOFT   /* new in Ora 10 */
+               case OCI_BIND_SOFT:     return "BIND_SOFT";     /* soft bind or define */
+               case OCI_DEFINE_SOFT:   return "DEFINE_SOFT";   /* soft bind or define */
+#endif
 /*             case OCI_IOV:                   return "";   11g only release 1.23 me thinks For scatter gather bind/define */

         }
@@ -242,9 +244,11 @@ oci_mode(ub4  mode)
 /*             case OCI_SUPPRESS_NLS_VALIDATION:  return "SUPPRESS_NLS_VALIDATION";   suppress nls validation*/
                                                                                                         /*       nls validation suppression is on by default;*/
                                                                                                          /*   use OCI_ENABLE_NLS_VALIDATION to disable it */
+#ifdef OCI_MUTEX_TRY   /* new in Ora 10 */
                case OCI_MUTEX_TRY:                return "MUTEX_TRY";    /* try and acquire mutex */
                case OCI_NCHAR_LITERAL_REPLACE_ON: return "NCHAR_LITERAL_REPLACE_ON"; /* nchar literal replace on */
                case OCI_NCHAR_LITERAL_REPLACE_OFF:return "NCHAR_LITERAL_REPLACE_OFF"; /* nchar literal replace off*/
+#endif
 /*             case OCI_ENABLE_NLS_VALIDATION:    return "ENABLE_NLS_VALIDATION";     enable nls validation */
                /*------------------------OCIConnectionpoolCreate Modes----------------------*/
                case OCI_CPOOL_REINITIALIZE:    return "CPOOL_REINITIALIZE";
-->8---

-- 
H.Merijn Brand          Amsterdam Perl Mongers  http://amsterdam.pm.org/
using & porting perl 5.6.2, 5.8.x, 5.10.x, 5.11.x on HP-UX 10.20, 11.00,
11.11, 11.23, and 11.31, SuSE 10.1, 10.2, and 10.3, AIX 5.2, and Cygwin.
http://mirrors.develooper.com/hpux/           http://www.test-smoke.org/
http://qa.perl.org      http://www.goldmark.org/jeff/stupid-disclaimers/
DBD-Oracle.diff (text/x-patch, 3.8 KB)
diff -pur DBD-Oracle-1.22-11591/Oracle.xs DBD-Oracle-1.22-11591a/Oracle.xs
--- DBD-Oracle-1.22-11591/Oracle.xs	2008-07-22 19:48:35 +0200
+++ DBD-Oracle-1.22-11591a/Oracle.xs	2008-07-28 14:50:59 +0200
@@ -249,7 +249,7 @@ ora_ping(dbh)
 	CODE:
 	/*simply does a call to OCIServerVersion which should make 1 round trip*/
     /*later I will replace this with the actual OCIPing command*/
-    /*This will work if the DB goes down, /*
+    /*This will work if the DB goes down, */
     /*If the listener goes down it is another case as the Listener is needed to establish the connection not maintain it*/
     /*so we should stay connected but we cannot get nay new connections*/
 	{
diff -pur DBD-Oracle-1.22-11591/dbdimp.c DBD-Oracle-1.22-11591a/dbdimp.c
--- DBD-Oracle-1.22-11591/dbdimp.c	2008-07-24 21:20:19 +0200
+++ DBD-Oracle-1.22-11591a/dbdimp.c	2008-07-28 14:53:58 +0200
@@ -611,10 +611,10 @@ dbd_db_login6(SV *dbh, imp_dbh_t *imp_db
             al32utf8_csid  = OCINlsCharSetNameToId(imp_dbh->envhp, (void*)"AL32UTF8");
             al16utf16_csid = OCINlsCharSetNameToId(imp_dbh->envhp, (void*)"AL16UTF16");
 
-#else /* (the old init code) NEW_OCI_INIT */
-        /* this is now depricated and will be removed as we no longer support <9.2 oracle
-	    /* XXX recent oracle docs recommend using OCIEnvCreate() instead of	*/
-	    /* OCIInitialize + OCIEnvInit, we'd need ifdef's for pre-OCIEnvNlsCreate */
+#else	/* (the old init code) NEW_OCI_INIT */
+	/* this is now depricated and will be removed as we no longer support <9.2 oracle */
+	/* XXX recent oracle docs recommend using OCIEnvCreate() instead of	*/
+	/* OCIInitialize + OCIEnvInit, we'd need ifdef's for pre-OCIEnvNlsCreate */
 	    	OCIInitialize_log_stat(init_mode, 0, 0,0,0, status);
 	    
 	    
diff -pur DBD-Oracle-1.22-11591/oci8.c DBD-Oracle-1.22-11591a/oci8.c
--- DBD-Oracle-1.22-11591/oci8.c	2008-07-25 18:48:47 +0200
+++ DBD-Oracle-1.22-11591a/oci8.c	2008-07-28 15:09:17 +0200
@@ -197,10 +197,12 @@ oci_bind_options(ub4 options)
 	/*------------------------Bind and Define Options----------------------------*/
 		case OCI_DEFAULT:   	return "DEFAULT";
 		case OCI_SB2_IND_PTR:   return "SB2_IND_PTR";                          /* unused */
-		case OCI_DATA_AT_EXEC:  return "DATA_AT_EXEC";             /* data at execute time */
-		case OCI_PIECEWISE:   	return "PIECEWISE";         /* piecewise DMLs or fetch */
-		case OCI_BIND_SOFT:   	return "BIND_SOFT";               /* soft bind or define */
-		case OCI_DEFINE_SOFT:   return "DEFINE_SOFT";           /* soft bind or define */
+		case OCI_DATA_AT_EXEC:  return "DATA_AT_EXEC";	/* data at execute time */
+		case OCI_PIECEWISE:   	return "PIECEWISE";	/* piecewise DMLs or fetch */
+#ifdef OCI_BIND_SOFT	/* new in Ora 10 */
+		case OCI_BIND_SOFT:   	return "BIND_SOFT";	/* soft bind or define */
+		case OCI_DEFINE_SOFT:   return "DEFINE_SOFT";	/* soft bind or define */
+#endif
 /*		case OCI_IOV:   		return "";   11g only release 1.23 me thinks For scatter gather bind/define */
 
 	 }
@@ -242,9 +244,11 @@ oci_mode(ub4  mode)
 /*		case OCI_SUPPRESS_NLS_VALIDATION:  return "SUPPRESS_NLS_VALIDATION";   suppress nls validation*/
 													 /* 	  nls validation suppression is on by default;*/
 													  /*   use OCI_ENABLE_NLS_VALIDATION to disable it */
+#ifdef OCI_MUTEX_TRY	/* new in Ora 10 */
 		case OCI_MUTEX_TRY:                return "MUTEX_TRY";    /* try and acquire mutex */
 		case OCI_NCHAR_LITERAL_REPLACE_ON: return "NCHAR_LITERAL_REPLACE_ON"; /* nchar literal replace on */
 		case OCI_NCHAR_LITERAL_REPLACE_OFF:return "NCHAR_LITERAL_REPLACE_OFF"; /* nchar literal replace off*/
+#endif
 /*		case OCI_ENABLE_NLS_VALIDATION:    return "ENABLE_NLS_VALIDATION";     enable nls validation */
 		/*------------------------OCIConnectionpoolCreate Modes----------------------*/
 		case OCI_CPOOL_REINITIALIZE:	return "CPOOL_REINITIALIZE";
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.