On 17/05/10 23:05, John R Pierce wrote:
> I've built DBD-Oracle-1.24 along with Perl 5.12.0 and DBI-1.611 for IBM
> AIX 6.1 TL05 (oslevel = 6100-05-01), with Oracle 10.2.0.4, using IBM XL
> C v11.1 + the latest PTF.
> 
> to build DBD-Oracle, i had to hack the makefile slightly to remove a
> bogus -q32 from the LD commands, this per the README.aix.txt notes,
> otherwise my build is pretty much bog stock.   Since I used cc_r to
> compile perl (per the Perl readmes for AIX) I also used this variant of
> the compiler for DBD-Oracle...
> 
> Its failing just one test t/58object.t ...   make test output is
> below...   I don't know how to resolve this.  The description of
> ORA-24334 is darn cryptic.

There are problems with the support for objects on big endian
platforms. http://www.mail-archive.com/dbi-users@perl.org/msg32902.html
is a previous report for Sparc Solaris. The patches in the mail archive
are mangled, much like your test output. I have attached two patches
from that thread.

I expect that sparc_patch will fix your immediate problem, allowing
t/58object.t to get further, and report another test failure.
sparc_patch2 may fix this second problem. I would like to know
either way.

I have no big endian hardware on which to test these patches.

-- 
Charles Jardine - Computing Service, University of Cambridge
c...@cam.ac.uk    Tel: +44 1223 334506, Fax: +44 1223 334679
diff -r -u DBD-Oracle-1.24/dbdimp.h DBD-Oracle-1.24.patched/dbdimp.h
--- DBD-Oracle-1.24/dbdimp.h    2010-01-18 13:32:54.000000000 +0000
+++ DBD-Oracle-1.24.patched/dbdimp.h    2010-04-19 15:17:18.871847234 +0100
@@ -158,7 +158,7 @@
        OCIType                 *obj_type;                      /*if an embeded 
object this is the  OCIType returned by a OCIObjectPin*/
        ub1                             is_final_type;          /*object's 
OCI_ATTR_IS_FINAL_TYPE*/
        fbh_obj_t               *fields;                        /*one object 
for each field/property*/
-       int                             field_count;            /*The number of 
fields Not really needed but nice to have*/
+       ub2                             field_count;            /*The number of 
fields Not really needed but nice to have*/
        fbh_obj_t               *next_subtype;          /*There is strored 
information about subtypes for inteherited objects*/
        AV                              *value;                         /*The 
value to send back to Perl This way there are no memory leaks*/
        SV                              *full_type_name;        /*Perl value of 
full type name = schema_name "." type_name*/
diff -r -u DBD-Oracle-1.24/oci8.c DBD-Oracle-1.24.patched/oci8.c
--- DBD-Oracle-1.24/oci8.c      2010-01-28 15:27:54.000000000 +0000
+++ DBD-Oracle-1.24.patched/oci8.c      2010-04-23 11:34:34.013185166 +0100
@@ -2034,6 +2034,7 @@
        text            str_buf[200];
        double          dnum;
        size_t          str_len;
+       ub4             ub4_str_len;
        OCIRaw          *raw    = (OCIRaw *) 0;
        OCIString       *vs     = (OCIString *) 0;
        ub1                     *temp   = (ub1 *)0;
@@ -2057,7 +2058,7 @@
                                                                
fbh->imp_sth->errhp,
                                                                attr_value,
                                                                str_buf,
-                                                               200,
+                                                               (size_t)200,
                                                                &str_len,
                                                        status);
                str_buf[str_len+1] = '\0';
@@ -2069,9 +2070,9 @@
        case OCI_TYPECODE_TIMESTAMP :
 
 
-               str_len = 200;
+               ub4_str_len = 200;
                OCIDateTimeToText_log_stat(fbh->imp_sth->envhp,
-                                                                       
fbh->imp_sth->errhp,attr_value,&str_len,str_buf,status);
+                                                                       
fbh->imp_sth->errhp,attr_value,&ub4_str_len,str_buf,status);
 
                if (typecode == OCI_TYPECODE_TIMESTAMP_TZ || typecode == 
OCI_TYPECODE_TIMESTAMP_LTZ){
                        char s_tz_hour[3]="000";
@@ -2093,19 +2094,19 @@
                        sprintf(s_tz_min,":%02d", tz_minute);
                        strcat((signed char*)str_buf, s_tz_hour);
                        strcat((signed char*)str_buf, s_tz_min);
-                       str_buf[str_len+7] = '\0';
+                       str_buf[ub4_str_len+7] = '\0';
 
                } else {
-                 str_buf[str_len+1] = '\0';
+                 str_buf[ub4_str_len+1] = '\0';
                }
 
                av_push(list, newSVpv( (char *) str_buf,0));
                break;
 
        case OCI_TYPECODE_DATE :                                                
 /* fixed length string*/
-               str_len = 200;
-               OCIDateToText_log_stat(fbh->imp_sth->errhp, (CONST OCIDate *) 
attr_value,&str_len,str_buf,status);
-               str_buf[str_len+1] = '\0';
+               ub4_str_len = 200;
+               OCIDateToText_log_stat(fbh->imp_sth->errhp, (CONST OCIDate *) 
attr_value,&ub4_str_len,str_buf,status);
+               str_buf[ub4_str_len+1] = '\0';
                av_push(list, newSVpv( (char *) str_buf,0));
                break;
 

Reply via email to