On 12/01/10 12:07, John Scoles wrote:
Ok third time is a Charm

The Third RC of the beer edition of DBD::Oracle 1.24 can be found at


http://svn.perl.org/modules/dbd-oracle/trunk/DBD-Oracle-1.24-RC3.tar


This round has a few little patches from Martin Evans on it.


Please test and enjoy

My environment is Linux x86-64, Perl 5.10.1 (64 bit), DBI 1.609,
Oracle 10.2.0.4.2 (64 bit). Database charset UTF8, national
charset AL16UTF16

Three things:


1. This release candidate passes all its tests in my environment if
  I set NLS_LANG=.WE8ISO8859P1, but the tests 30long.t and 31lob_extended.t
  still fail badly if NLS_LANG=.AL32UTF8.

  The symptoms match those reported by others for RC2. John, do you
  need any more information about this problem?

2. Back in early October, I reported a problem with the support for
  objects. Specifically, fetching a column value which was a nested
  table of objects was failing if $dbh->{ora_objects} was true.

  I have found the cause of the problem and have developed a patch.
  Unfortunately, while investigating this I have found another serious
  problem with the object support. Fetching a column value which
  is an object, one of whose properties is an object segfaults,
  regardless of the value of $dbh->{ora_objects}. The cause of this
  looks like a simple type error.

  I hope to be able to post a patch which fixes both these problems
  within the next few days.

3. Here is a patch which removes the remaining warnings detected by
  gcc in 64-bit mode.

diff -ur DBD-Oracle-1.24-RC3/dbdimp.c 
DBD-Oracle-1.24-RC3.warning_patches/dbdimp.c
--- DBD-Oracle-1.24-RC3/dbdimp.c        2010-01-08 19:39:46.000000000 +0000
+++ DBD-Oracle-1.24-RC3.warning_patches/dbdimp.c        2010-01-14 
10:36:01.839787037 +0000
@@ -543,14 +543,14 @@
#ifdef NEW_OCI_INIT    /* XXX needs merging into use_proc_connection branch */

                       /* Get CLIENT char and nchar charset id values */
-                       OCINlsEnvironmentVariableGet_log_stat( &charsetid, 0, 
OCI_NLS_CHARSET_ID, 0, &rsize ,status );
+                       OCINlsEnvironmentVariableGet_log_stat( &charsetid, 
(size_t)0, OCI_NLS_CHARSET_ID, 0, &rsize ,status );
                       if (status != OCI_SUCCESS) {
                               oci_error(dbh, NULL, status,
                                       
"OCINlsEnvironmentVariableGet(OCI_NLS_CHARSET_ID) Check NLS settings etc.");
                               return 0;
                       }

-                       OCINlsEnvironmentVariableGet_log_stat( &ncharsetid, 0, 
OCI_NLS_NCHARSET_ID, 0, &rsize ,status );
+                       OCINlsEnvironmentVariableGet_log_stat( &ncharsetid, 
(size_t)0, OCI_NLS_NCHARSET_ID, 0, &rsize ,status );
                       if (status != OCI_SUCCESS) {
                               oci_error(dbh, NULL, status,
                                       
"OCINlsEnvironmentVariableGet(OCI_NLS_NCHARSET_ID) Check NLS settings etc.");
diff -ur DBD-Oracle-1.24-RC3/oci8.c DBD-Oracle-1.24-RC3.warning_patches/oci8.c
--- DBD-Oracle-1.24-RC3/oci8.c  2010-01-08 19:39:46.000000000 +0000
+++ DBD-Oracle-1.24-RC3.warning_patches/oci8.c  2010-01-14 10:43:16.341547757 
+0000
@@ -1872,7 +1872,7 @@
               if (status == OCI_NEED_DATA ){
                       char buf[300];
                       sprintf(buf,"fetching %s. LOB and the read bufer is only  
%lubytes, and the ora_ncs_buff_mtpl is %d, which is too small. Try setting 
ora_ncs_buff_mtpl to %d",
-                               name, buflen, 
ora_ncs_buff_mtpl,ora_ncs_buff_mtpl+1);
+                               name, (unsigned long)buflen, 
ora_ncs_buff_mtpl,ora_ncs_buff_mtpl+1);

                       oci_error_err(sth, NULL, OCI_ERROR, buf, OCI_NEED_DATA); 
/* appropriate ORA error number */
                       croak("DBD::Oracle has returned a %s status when doing a 
LobRead!! \n",oci_status_name(status));
@@ -2240,7 +2240,7 @@
                                       if (tdo != obj->tdo) {
                                               /* new subtyped -> get obj 
description */
                                               if (DBIS->debug >= 5 || dbd_verbose 
>= 5 ) {
-                                                       PerlIO_printf(DBILOGFP, " describe 
subtype (tdo=%x) of object type %s 
(tdo=%x)\n",(int)tdo,base_obj->type_name,(int)base_obj->td
o);
+                                                       PerlIO_printf(DBILOGFP, " 
describe subtype (tdo=%p) of object type %s 
(tdo=%p)\n",(void*)tdo,base_obj->type_name,(void*)base_obj
->tdo);
                                               }

                                               Newz(1, obj->next_subtype, 1, 
fbh_obj_t);
@@ -3079,7 +3079,6 @@
       ub4 num_fields;
       int num_errors  = 0;
       int has_longs   = 0;
-       int has_lobs    = 0;
       int est_width   = 0;            /* estimated avg row width (for cache)  
*/
       int nested_cursors = 0;
       ub4 i = 0;
diff -ur DBD-Oracle-1.24-RC3/ocitrace.h 
DBD-Oracle-1.24-RC3.warning_patches/ocitrace.h
--- DBD-Oracle-1.24-RC3/ocitrace.h      2010-01-11 22:44:49.000000000 +0000
+++ DBD-Oracle-1.24-RC3.warning_patches/ocitrace.h      2010-01-14 
10:38:09.520304633 +0000
@@ -222,8 +222,8 @@
       stat = OCINlsEnvironmentVariableGet(    valp, size, item, charset, 
rsizep ); \
       (DBD_OCI_TRACEON) \
       ?       PerlIO_printf(DBD_OCI_TRACEFP,\
-                "%sNlsEnvironmentVariableGet(%d,%d,%d,%d,%d)=%s\n",\
-                OciTp, *valp, size, item, charset, *rsizep, 
oci_status_name(stat)),stat \
+                "%sNlsEnvironmentVariableGet(%d,%llu,%d,%d,%llu)=%s\n",\
+                OciTp, *valp, (unsigned long long)size, item, charset, 
(unsigned long long)*rsizep, oci_status_name(stat)),stat \
       : stat

/* added by lab */


--
Charles Jardine - Computing Service, University of Cambridge
c...@cam.ac.uk    Tel: +44 1223 334506, Fax: +44 1223 334679

Reply via email to