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: > 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 DBD::Oracle::db prepare failed: ORA-24334: no descriptor for this position (DBD ERROR: OCIParamGet) [for Statement "select * from dbd_test__obj_table order by id"] at t/58object.t line 116. The DBI trace output from level 5 for the error: <- do= 1 at t/58object.t line 109 -> prepare for DBD::Oracle::db (DBI::db=HASH(0x100745310)~0x100745250 'select * from dbd_test__obj_table order by id') New 'DBI::st' (for DBD::Oracle::st, parent=DBI::db=HASH(0x100745250), id=undef) dbih_setup_handle(DBI::st=HASH(0x100745c70)=>DBI::st=HASH(0x100745970), DBD::Oracle::st, 100922140, Null!) dbih_make_com(DBI::db=HASH(0x100745250), 100746e70, DBD::Oracle::st, 464, 0) thr#0 dbih_setup_attrib(DBI::st=HASH(0x100745970), Err, DBI::db=HASH(0x100745250)) SCALAR(0x1004408a0) (already defined) dbih_setup_attrib(DBI::st=HASH(0x100745970), State, DBI::db=HASH(0x100745250)) SCALAR(0x100440920) (already defined) dbih_setup_attrib(DBI::st=HASH(0x100745970), Errstr, DBI::db=HASH(0x100745250)) SCALAR(0x1004408e0) (already defined) dbih_setup_attrib(DBI::st=HASH(0x100745970), TraceLevel, DBI::db=HASH(0x100745250)) 0 (already defined) dbih_setup_attrib(DBI::st=HASH(0x100745970), FetchHashKeyName, DBI::db=HASH(0x100745250)) 'NAME' (already defined) dbih_setup_attrib(DBI::st=HASH(0x100745970), HandleSetErr, DBI::db=HASH(0x100745250)) undef (not defined) dbih_setup_attrib(DBI::st=HASH(0x100745970), HandleError, DBI::db=HASH(0x100745250)) undef (not defined) dbih_setup_attrib(DBI::st=HASH(0x100745970), ReadOnly, DBI::db=HASH(0x100745250)) undef (not defined) dbih_setup_attrib(DBI::st=HASH(0x100745970), Profile, DBI::db=HASH(0x100745250)) undef (not defined) dbd_st_prepare'd sql SELECT (pl1, auto_lob1, check_sql1) dbd_describe SELECT (EXPLICIT, lb 80)... Describe col #1 type=2(NVARCHAR2) Described col 1: dbtype 2(NVARCHAR2), scale 0, prec 38, nullok 1, name ID : dbsize 22, char_used 0, char_size 0, csid 0, csform 0(0), disize 171 fbh 1: 'ID' NULLable, otype 2-> 5, dbsize 22/172, p38.s0 Describe col #2 type=108(ORA_XMLTYPE or SQLT_NTY) Described col 2: dbtype 108(ORA_XMLTYPE or SQLT_NTY), scale 0, prec 0, nullok 1, name OBJ : dbsize 2000, char_used 0, char_size 0, csid 0, csform 0(0), disize 0 fbh 2: 'OBJ' NULLable, otype 108->108, dbsize 2000/0, p0.s0 cache settings DB Handle RowCacheSize=0,Statement Handle RowCacheSize=0, OCI_ATTR_PREFETCH_ROWS=60, OCI_ATTR_PREFETCH_MEMORY=0, 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 --->sub objects level=1 type_name = NUM type_namel = 3 parmdp = 0 parmap = 0 tdo = 0 typecode = INT col_typecode = 0 element_typecode = (UNKNOWN OCI TYPECODE 0) obj_ref = 0 obj_value = 0 obj_type = 0 is_final_type = 0 field_count = 0 fields = 0 --->done NUM --->sub objects level=1 type_name = NAME type_namel = 4 parmdp = 0 parmap = 0 tdo = 0 typecode = VARCHAR2 col_typecode = 0 element_typecode = (UNKNOWN OCI TYPECODE 0) obj_ref = 0 obj_value = 0 obj_type = 0 is_final_type = 0 field_count = 0 fields = 0 --->done NAME --->sub objects level=1 type_name = (null) type_namel = 0 parmdp = 0 parmap = 0 tdo = 0 typecode = (UNKNOWN OCI TYPECODE 0) col_typecode = 0 element_typecode = (UNKNOWN OCI TYPECODE 0) obj_ref = 0 obj_value = 0 obj_type = 0 is_final_type = 0 field_count = 0 fields = 0 --->done (null) [many many more null objects are logged in the trace] Details of the configurations: > perl -V Summary of my perl5 (revision 5 version 8 subversion 7) configuration: Platform: osname=solaris, osvers=2.10, archname=sun4-solaris-64 uname='sunos rfu01 5.10 generic_120011-14 sun4u sparc sunw,sun-fire-v240 ' config_args='-Dprefix=/opt/perl/5.8.7 -Dcc=gcc -Accflags=-mcpu=v9 -m64 -Aldflags=-mcpu=v9 -m64 -Alddlflags=-mcpu=v9 -m64 -Duse64bitall' hint=recommended, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='gcc', ccflags ='-mcpu=v9 -m64 -mcpu=v9 -m64 -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O', cppflags='-mcpu=v9 -m64 -mcpu=v9 -m64 -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.0.2', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=87654321 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='gcc', ldflags ='-m64 -mcpu=v9 -m64 -L/usr/local/lib/64 -L/usr/lib/sparcv9 -L/usr/local/lib -L/usr/lib -L/usr/ccs/lib -R/usr/local/lib/64 -R/usr/local/lib ' libpth=/usr/local/lib/64 /usr/lib/sparcv9 /usr/local/lib /usr/lib /usr/ccs/lib libs=-lsocket -lnsl -ldb -ldl -lm -lc perllibs=-lsocket -lnsl -ldl -lm -lc libc=/usr/lib/sparcv9/libc.so, so=so, useshrplib=false, libperl=libperl.a gnulibc_version='' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' ' cccdlflags='-fPIC', lddlflags=' -G -m64 -mcpu=v9 -m64 -L/usr/local/lib/64 -L/usr/lib/sparcv9 -L/usr/local/lib -L/usr/lib -L/usr/ccs/lib -R/usr/local/lib/64 -R/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: USE_64_BIT_INT USE_64_BIT_ALL USE_LARGE_FILES Built under solaris Compiled at Apr 9 2010 08:32:56 @INC: /opt/perl/5.8.7/lib/5.8.7/sun4-solaris-64 /opt/perl/5.8.7/lib/5.8.7 /opt/perl/5.8.7/lib/site_perl/5.8.7/sun4-solaris-64 /opt/perl/5.8.7/lib/site_perl/5.8.7 /opt/perl/5.8.7/lib/site_perl . > gcc -v Using built-in specs. Target: sparc-sun-solaris2.10 Configured with: /depot/src/gcc/dist/gcc-4.0.2/configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls --enable-languages=c,c++,objc,java --prefix=/opt/gcc/4.0.2 Thread model: posix gcc version 4.0.2 Build session log: > perl Makefile.PL Using DBI 1.609 (for perl 5.008007 on sun4-solaris-64) installed in /opt/perl/5.8.7/lib/site_perl/5.8.7/sun4-solaris-64/auto/DBI/ Configuring DBD::Oracle for perl 5.008007 on solaris (sun4-solaris-64) Remember to actually *READ* the README file! Especially if you have any problems. Installing on a solaris, Ver#2.10 Using Oracle in /u01/app/oracle/product/10.2.0 DEFINE _SQLPLUS_RELEASE = "1002000400" (CHAR) Oracle version 10.2.0.4 (10.2) Found /u01/app/oracle/product/10.2.0/rdbms/demo/demo_rdbms.mk Found /u01/app/oracle/product/10.2.0/rdbms/demo/demo_rdbms64.mk Found /u01/app/oracle/product/10.2.0/rdbms/lib/ins_rdbms.mk Using /u01/app/oracle/product/10.2.0/rdbms/demo/demo_rdbms.mk Your LD_LIBRARY_PATH env var is set to '/u01/app/oracle/product/10.2.0/lib:' Reading /u01/app/oracle/product/10.2.0/rdbms/demo/demo_rdbms.mk Reading /u01/app/oracle/product/10.2.0/rdbms/lib/env_rdbms.mk Attempting to discover Oracle OCI build rules gcc -c DBD_ORA_OBJ.c by executing: [make -f /u01/app/oracle/product/10.2.0/rdbms/demo/demo_rdbms.mk build ECHODO=echo ECHO=echo GENCLNTSH='echo genclntsh' CC=true OPTIMIZE= CCFLAGS= EXE=DBD_ORA_EXE OBJS=DBD_ORA_OBJ.o] Oracle oci build command: [true -xarch=v9 -L/u01/app/oracle/product/10.2.0/lib/ -L/u01/app/oracle/product/10.2.0/rdbms/lib/ -o DBD_ORA_EXE DBD_ORA_OBJ.o -lclntsh `cat /u01/app/oracle/product/10.2.0/lib/sysliblist` -R/u01/app/oracle/product/10.2.0/lib -laio -lposix4 -lkstat -lm -lthread -lpthread] Found header files in /u01/app/oracle/product/10.2.0/rdbms/public. Checking for functioning wait.ph System: perl5.008007 sunos rfu01 5.10 generic_120011-14 sun4u sparc sunw,sun-fire-v240 Compiler: gcc -O -mcpu=v9 -m64 -mcpu=v9 -m64 -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 Linker: /usr/ccs/bin/ld Sysliblist: -lkstat -lnsl -lsocket -lgen -ldl -lsched Oracle makefiles would have used these definitions but we override them: CC: cc CFLAGS: $(GFLAG) $(OPTIMIZE) $(CDEBUG) $(CCFLAGS) $(PFLAGS)\ $(SHARED_CFLAG) $(USRFLAGS) [$(GFLAG) -xO3 $(CDEBUG) -Xa $(PROFILE) -xstrconst -dalign -xF $(XS) $(MR) -xildoff -errtags=yes -v -xarch=v9 -xchip=ultra3 -W2,-AKNR_S -Wd,-xsafe=unboundsym -Wc,-Qiselect-funcalign=32 -xcode=abs44 -Wc,-Qgsched-trace_late=1 -Wc,-Qgsched-T5 -xalias_level=weak -D_REENTRANT -DSS_64BIT_SERVER -DBIT64 -DMACHINE64 -K PIC -I/u01/app/oracle/product/10.2.0/rdbms/demo -I/u01/app/oracle/product/10.2.0/rdbms/public -I/u01/app/oracle/product/10.2.0/plsql/public -I/u01/app/oracle/product/10.2.0/network/public -DSLMXMX_ENABLE -DSLTS_ENABLE -D_SVID_GETTOD -D_REENTRANT $(LPFLAGS) $(USRFLAGS)] LDFLAGS: -o $@ $(LDPATHFLAG)$(PRODLIBHOME) $(LDPATHFLAG)$(LIBHOME) [-o $@ -L/u01/app/oracle/product/10.2.0/rdbms/lib/ -L$(LIBHOME)] Linking with OTHERLDFLAGS = -xarch=v9 -L/u01/app/oracle/product/10.2.0/lib/ -L/u01/app/oracle/product/10.2.0/rdbms/lib/ -lclntsh `cat /u01/app/oracle/product/10.2.0/lib/sysliblist` -R/u01/app/oracle/product/10.2.0/lib -laio -lposix4 -lkstat -lm -lthread -lpthread [from 'build' rule] WARNING: If you have problems you may need to rebuild perl with threading enabled. Checking if your kit is complete... Looks good LD_RUN_PATH=/u01/app/oracle/product/10.2.0/lib:/u01/app/oracle/product/1 0.2.0/rdbms/lib Using DBD::Oracle 1.24. Using DBD::Oracle 1.24. Using DBI 1.609 (for perl 5.008007 on sun4-solaris-64) installed in /opt/perl/5.8.7/lib/site_perl/5.8.7/sun4-solaris-64/auto/DBI/ Writing Makefile for DBD::Oracle *** If you have problems... read all the log printed above, and the README and README.help.txt files. (Of course, you have read README by now anyway, haven't you?) > make cp Oracle.pm blib/lib/DBD/Oracle.pm cp oraperl.ph blib/lib/oraperl.ph cp dbdimp.h blib/arch/auto/DBD/Oracle/dbdimp.h cp ocitrace.h blib/arch/auto/DBD/Oracle/ocitrace.h cp Oraperl.pm blib/lib/Oraperl.pm cp Oracle.h blib/arch/auto/DBD/Oracle/Oracle.h cp lib/DBD/Oracle/Object.pm blib/lib/DBD/Oracle/Object.pm cp mk.pm blib/arch/auto/DBD/Oracle/mk.pm cp lib/DBD/Oracle/GetInfo.pm blib/lib/DBD/Oracle/GetInfo.pm /opt/perl/5.8.7/bin/perl -p -e "s/~DRIVER~/Oracle/g" /opt/perl/5.8.7/lib/site_perl/5.8.7/sun4-solaris-64/auto/DBI/Driver.xst > Oracle.xsi /opt/perl/5.8.7/bin/perl /opt/perl/5.8.7/lib/5.8.7/ExtUtils/xsubpp -typemap /opt/perl/5.8.7/lib/5.8.7/ExtUtils/typemap -typemap typemap Oracle.xs > Oracle.xsc && mv Oracle.xsc Oracle.c gcc -c -I/u01/app/oracle/product/10.2.0/rdbms/public -I/u01/app/oracle/product/10.2.0/rdbms/demo -I/u01/app/oracle/product/10.2.0/rdbms/public -I/u01/app/oracle/product/10.2.0/plsql/public -I/u01/app/oracle/product/10.2.0/network/public -I/opt/perl/5.8.7/lib/site_perl/5.8.7/sun4-solaris-64/auto/DBI -mcpu=v9 -m64 -mcpu=v9 -m64 -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O -DVERSION=\"1.24\" -DXS_VERSION=\"1.24\" -fPIC "-I/opt/perl/5.8.7/lib/5.8.7/sun4-solaris-64/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"10.2.0.4\" Oracle.c gcc -c -I/u01/app/oracle/product/10.2.0/rdbms/public -I/u01/app/oracle/product/10.2.0/rdbms/demo -I/u01/app/oracle/product/10.2.0/rdbms/public -I/u01/app/oracle/product/10.2.0/plsql/public -I/u01/app/oracle/product/10.2.0/network/public -I/opt/perl/5.8.7/lib/site_perl/5.8.7/sun4-solaris-64/auto/DBI -mcpu=v9 -m64 -mcpu=v9 -m64 -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O -DVERSION=\"1.24\" -DXS_VERSION=\"1.24\" -fPIC "-I/opt/perl/5.8.7/lib/5.8.7/sun4-solaris-64/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"10.2.0.4\" dbdimp.c dbdimp.c: In function 'fb_ary_cb_alloc': dbdimp.c:298: warning: comparison is always false due to limited range of data type dbdimp.c:299: warning: comparison is always false due to limited range of data type dbdimp.c:300: warning: comparison is always false due to limited range of data type dbdimp.c:301: warning: comparison is always false due to limited range of data type dbdimp.c:302: warning: comparison is always false due to limited range of data type dbdimp.c: In function 'fb_ary_alloc': dbdimp.c:318: warning: comparison is always false due to limited range of data type dbdimp.c:319: warning: comparison is always false due to limited range of data type dbdimp.c:320: warning: comparison is always false due to limited range of data type dbdimp.c:321: warning: comparison is always false due to limited range of data type gcc -c -I/u01/app/oracle/product/10.2.0/rdbms/public -I/u01/app/oracle/product/10.2.0/rdbms/demo -I/u01/app/oracle/product/10.2.0/rdbms/public -I/u01/app/oracle/product/10.2.0/plsql/public -I/u01/app/oracle/product/10.2.0/network/public -I/opt/perl/5.8.7/lib/site_perl/5.8.7/sun4-solaris-64/auto/DBI -mcpu=v9 -m64 -mcpu=v9 -m64 -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O -DVERSION=\"1.24\" -DXS_VERSION=\"1.24\" -fPIC "-I/opt/perl/5.8.7/lib/5.8.7/sun4-solaris-64/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DNEW_OCI_INIT -DORA_OCI_VERSION=\"10.2.0.4\" oci8.c oci8.c: In function 'ora_blob_read_mb_piece': oci8.c:1597: warning: comparison is always false due to limited range of data type oci8.c: In function 'describe_obj_by_tdo': oci8.c:2957: warning: comparison is always false due to limited range of data type oci8.c: In function 'ora_describe': oci8.c:3158: warning: comparison is always false due to limited range of data type Running Mkbootstrap for DBD::Oracle () chmod 644 Oracle.bs rm -f blib/arch/auto/DBD/Oracle/Oracle.so LD_RUN_PATH="/u01/app/oracle/product/10.2.0/lib:/u01/app/oracle/product/ 10.2.0/rdbms/lib" gcc -G -m64 -mcpu=v9 -m64 -L/usr/local/lib/64 -L/usr/lib/sparcv9 -L/usr/local/lib -L/usr/lib -L/usr/ccs/lib -R/usr/local/lib/64 -R/usr/local/lib Oracle.o dbdimp.o oci8.o -xarch=v9 -L/u01/app/oracle/product/10.2.0/lib/ -L/u01/app/oracle/product/10.2.0/rdbms/lib/ -lclntsh `cat /u01/app/oracle/product/10.2.0/lib/sysliblist` -R/u01/app/oracle/product/10.2.0/lib -laio -lposix4 -lkstat -lm -lthread -lpthread -o blib/arch/auto/DBD/Oracle/Oracle.so \ \ chmod 755 blib/arch/auto/DBD/Oracle/Oracle.so cp Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs chmod 644 blib/arch/auto/DBD/Oracle/Oracle.bs /opt/perl/5.8.7/bin/perl "-Iblib/arch" "-Iblib/lib" ora_explain.PL ora_explain Extracted ora_explain from ora_explain.PL with variable substitutions. cp ora_explain blib/script/ora_explain /opt/perl/5.8.7/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/ora_explain Manifying blib/man1/ora_explain.1 Manifying blib/man3/DBD::Oracle.3 Manifying blib/man3/DBD::Oraperl.3 > make test PERL_DL_NONLAZY=1 /opt/perl/5.8.7/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/01base.t .............. # Test loading DBI, DBD::Oracle and version t/01base.t .............. ok t/10general.t ........... ok t/12impdata.t ........... ok t/14threads.t ........... skipped: this solaris perl 5.008007 not configured to support iThreads t/15nls.t ............... ok t/20select.t ............ ok t/21nchar.t ............. ok t/22nchar_al32utf8.t .... ok t/22nchar_utf8.t ........ ok t/23wide_db.t ........... ok t/23wide_db_8bit.t ...... ok t/23wide_db_al32utf8.t .. ok t/24implicit_utf8.t ..... ok t/25plsql.t ............. ok t/26exe_array.t ......... ok t/28array_bind.t ........ ok t/30long.t .............. ok t/31lob.t ............... ok t/31lob_extended.t ...... ok t/32xmltype.t ........... ok t/34pres_lobs.t ......... ok t/40ph_type.t ........... 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.t ........... ok t/50cursor.t ............ ok t/51scroll.t ............ ok t/55nested.t ............ ok t/56embbeded.t .......... ok t/58object.t ............ 1/51 DBD::Oracle::db prepare failed: ORA-24334: no descriptor for this position (DBD ERROR: OCIParamGet) [for Statement "select * from dbd_test__obj_table order by id"] at t/58object.t line 116. t/58object.t ............ Dubious, test returned 255 (wstat 65280, 0xff00) Failed 46/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: 65280 Tests: 5 Failed: 0) Non-zero exit status: 255 Parse errors: Bad plan. You planned 51 tests but ran 5. Files=30, Tests=2160, 78 wallclock secs ( 0.62 usr 0.59 sys + 10.92 cusr 2.56 csys = 14.69 CPU) Result: FAIL Failed 1/30 test programs. 0/2160 subtests failed. *** Error code 255 make: Fatal error: Command failed for target `test_dynamic' Thank you for your help. Tim Everett