Thank you for the patch.  This fixed the ORA-24334 problem.

The test suite now runs to completion.  FYI it still complains about one
subtest in 58object.t.

Results from 'make test':

[snip]
t/56embbeded.t .......... ok
t/58object.t ............ 6/51
t/58object.t ............ Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/51 subtests
t/60reauth.t ............ skipped: ORACLE_USERID_2 not defined.
t/70meta.t .............. ok
t/80ora_charset.t ....... ok

Test Summary Report
-------------------
t/58object.t          (Wstat: 256 Tests: 51 Failed: 1)
  Failed test:  27
  Non-zero exit status: 1
Files=30, Tests=2206, 69 wallclock secs ( 0.65 usr  0.67 sys + 11.16
cusr
2.76 csys = 15.24 CPU)
Result: FAIL
Failed 1/30 test programs. 1/2206 subtests failed.


> perl -Mblib t/58object.t
1..51
ok 1 - use DBI;
ok 2 - ora_objects flag is set to 1
ok 3 - ora_objects flag is set to 0
ok 4 - The object isa DBI::db
ok 5 - Fetch current schema name
ok 6 - old: Prepare select
ok 7 - old: Execute select
ok 8 - old: Fetch first row
ok 9 - old: Row 1 column 2 is an ARRAY
ok 10 - old: Row 1 column 2 is has 2 elements
ok 11 - old: Fetch second row
ok 12 - old: Row 2 column 2 is an ARRAY
ok 13 - old: Row 2 column 2 is has 2 elements
ok 14 - old: Fetch third row
ok 15 - old: Row 3 column 2 is an ARRAY
ok 16 - old: Row 3 column 2 is has 2 elements
ok 17 - old: No more rows expected
ok 18 - new: Prepare select
ok 19 - new: Execute select
ok 20 - new: Fetch first row
ok 21 - new: Row 1 column 2 is an DBD:Oracle::Object
ok 22 - new: Row 1 column 2 object type
ok 23 - new: Row 1 column 2 object attributes
ok 24 - new: Fetch second row
ok 25 - new: Row 2 column 2 is an DBD::Oracle::Object
ok 26 - new: Row 2 column 2 object type
not ok 27 - new: Row 1 column 2 object attributes
ok 28 - new: Fetch third row
ok 29 - new: Row 3 column 2 is an DBD::Oracle::Object
ok 30 - new: Row 3 column 2 object type
ok 31 - new: Row 1 column 2 object attributes
ok 32 - new: No more rows expected
ok 33 - DBD::Oracle::Object->attr_hash
ok 34 - DBD::Oracle::Object->attr
ok 35 - DBD::Oracle::Object->attr("NAME")
ok 36 - new: Prepare select with nested table of objects
ok 37 - new: Execute (nested table)
ok 38 - new: Fetch first row (nested table)
ok 39 - Check propertes of first (and only) item in nested table
ok 40 - new: No more rows expected (nested table)
ok 41 - new: Prepare select with nested object
ok 42 - new: Execute (nested object)
ok 43 - new: Fetch first row (nested object)
ok 44 - Check obj.num
ok 45 - Check obj.obj
ok 46 - new: Fetch second row (nested object)
ok 47 - Check obj.num
ok 48 - Check obj.obj
ok 49 - new: Fetch third row (nested object)
ok 50 - Check obj
ok 51 - new: No more rows expected (nested object)


results from DBI trace level 5:

                100922120 (field=1):
DBD::Oracle::Object=HASH(0x1009bb860)
    <- fetchrow= ( "2" DBD::Oracle::Object=HASH(0x1009bb860) ) [2 items]
row2 at t/58object.t line 156
    -> fetchrow for DBD::Oracle::st
(DBI::st=HASH(0x1009220c0)~0x1009222a0)
  fetch_cleanup_oci_object
        dbd_st_fetch 2 fields...
        dbd_st_fetched 2 fields with status of 0(SUCCESS)
        field #1 with rc=0(OK)

                100922120 (field=0): "3"
        field #2 with rc=0(OK)
 getting an embedded object named  TIM.DBD_TEST__TYPE_A with
typecode=OBJECT
 getting attributes of object named  TIM.DBD_TEST__TYPE_A with
typecode=OBJECT
getting attributes of object subtype  TIM.DBD_TEST__TYPE_B
 getting value of object attribute named  NUM with typecode=INT
 getting value of object attribute named  NAME with typecode=VARCHAR2
 getting value of object attribute named  AMOUNT with typecode=DECIMAL

                100922120 (field=1):
DBD::Oracle::Object=HASH(0x1009c3c20)



Thank you,

Tim Everett

-----Original Message-----
From: Charles Jardine [mailto:c...@cam.ac.uk] 
Sent: Monday, April 19, 2010 10:41 AM
To: dbi-users@perl.org
Cc: Everett, Timothy S
Subject: Re: DBD-Oracle 1.24a reports ORA-24334 in t/58object.t

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

Reply via email to