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/
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";