On 16/04/10 17:29, Everett, Timothy S wrote:
> This issue was previously reported by other people in thread "DBD-Oracle
> 1.23 reports ORA-24334 in t/58object.t" but I could not find any
> answers.   
> 
> I'm trying to install DBD-Oracle 1.24a with this environment:
> - perl 5.8.7 built for sun4-solaris-64
> - gcc 4.0.2
> - Solaris 10 update 6
> - Oracle 10.2.0.4
> 
> The build succeeds, but an ORA-24334 error is reported in the test
> script t/58object.t:

This problem does not occur on my platform
 - perl 5.10.1 64-bit
 - gcc 4.1.2
 - SLES 10 SP 3 x86-64
 - Oracle 10.2.0.4

I think your big-endian hardware has discovered a bug which my
little-endian hardware conceals.

 [snip]

> Rows per Fetch=60, Multiple Row Fetch=Off
> Field #2 is a  object or colection of some sort. Using OCIDefineObject
> and or OCIObjectPin
> At level=0 in description an embedded object
>         OCIErrorGet after OCIParamGet (er1:ok): -1, 24334: ORA-24334: no
> descriptor for this position
> 
>  level=0        type_name = TIM.DBD_TEST__TYPE_A
>         type_namel = 0
>         parmdp = 1008216f8
>         parmap = 0
>         tdo = 10093abf0
>         typecode = OBJECT
>         col_typecode = 0
>         element_typecode = (UNKNOWN OCI TYPECODE 0)
>         obj_ref = 100944e00
>         obj_value = 0
>         obj_type = 10093abf0
>         is_final_type = 0
>         field_count = 131072
>         fields = 10094d960

The field_count above should be 2. It is 2 * 2^16.

Could you please try the attached patch. I think it will fix the problem,
but I don't have any SPARC hardware to test it on.

-- 
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*/

Reply via email to