I am trying to install DBD-Oracle 1.23 with Oracle 10.1.4 on Solaris 10 using the standard (Sun-supplied) perl. In order to make it build, I need to edit mk.pm and Makefile, replacing '-xarch=v9' with '-xarch=native' and changing .../oracle/product/10.1.4/lib to .../oracle/product/10.1.4/lib32 (see my previous report). It then mostly works but reports two errors in the test-suite. The first one in t/10general.t is relatively unimportant but I'm nore concerned about the failure in t/58object.t.
$ perl -Mblib t/10general.t
1..31
not ok 1 - system exit 1 should return 256
not ok 2 - system exit 0 should return 0
ok 3 - preparse, case insensitive, placeholders in comments
...
These two tests fail because Oracle is setting a SIGCHLD handler so
the waitid(2) in system() is returning ECHILD
$ perl -Mblib t/58object.t
1..34
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
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 79.
$
A more detailed trace of the failure in t/58object.t shows:
<- do= 1 at t/58object.t line 73
-> prepare for DBD::Oracle::db (DBI::db=HASH(0x2f3f70)~0x2f3ee0 'select *
from dbd_test__obj_table order by id')
New 'DBI::st' (for DBD::Oracle::st, parent=DBI::db=HASH(0x2f3ee0), id=undef)
dbih_setup_handle(DBI::st=HASH(0x41f150)=>DBI::st=HASH(0x41f108),
DBD::Oracle::st, 4205c0, Null!)
dbih_make_com(DBI::db=HASH(0x2f3ee0), 2f44e8, DBD::Oracle::st, 320, 0) thr#0
dbih_setup_attrib(DBI::st=HASH(0x41f108), Err, DBI::db=HASH(0x2f3ee0))
SCALAR(0x14f128) (already defined)
dbih_setup_attrib(DBI::st=HASH(0x41f108), State, DBI::db=HASH(0x2f3ee0))
SCALAR(0x14f188) (already defined)
dbih_setup_attrib(DBI::st=HASH(0x41f108), Errstr, DBI::db=HASH(0x2f3ee0))
SCALAR(0x14f158) (already defined)
dbih_setup_attrib(DBI::st=HASH(0x41f108), TraceLevel,
DBI::db=HASH(0x2f3ee0)) 0 (already defined)
dbih_setup_attrib(DBI::st=HASH(0x41f108), FetchHashKeyName,
DBI::db=HASH(0x2f3ee0)) 'NAME' (already defined)
dbih_setup_attrib(DBI::st=HASH(0x41f108), HandleSetErr,
DBI::db=HASH(0x2f3ee0)) undef (not defined)
dbih_setup_attrib(DBI::st=HASH(0x41f108), HandleError,
DBI::db=HASH(0x2f3ee0)) undef (not defined)
dbih_setup_attrib(DBI::st=HASH(0x41f108), ReadOnly, DBI::db=HASH(0x2f3ee0))
undef (not defined)
dbih_setup_attrib(DBI::st=HASH(0x41f108), Profile, DBI::db=HASH(0x2f3ee0))
undef (not defined)
OCIHandleAlloc(38ed78,42048c,OCI_HTYPE_STMT,0,0)=SUCCESS
OCIStmtPrepare(3ac7bc,3a66f8,'select * from dbd_test__obj_table order
by id',45,1,0)=SUCCESS
OCIAttrGet(3ac7bc,OCI_HTYPE_STMT,420498,0,24,3a66f8)=SUCCESS
dbd_st_prepare'd sql SELECT (pl1, auto_lob1, check_sql1)
dbd_describe SELECT (EXPLICIT, lb 80)...
OCIStmtExecute(3a6684,3ac7bc,3a66f8,0,0,0,0,mode=DESCRIBE_ONLY,16)=SUCCESS
OCIAttrGet(3ac7bc,OCI_HTYPE_STMT,ffbfef90,0,18,3a66f8)=SUCCESS
OCIParamGet(3ac7bc,4,3a66f8,41fec0,1)=SUCCESS
OCIAttrGet(3abfb8,OCI_DTYPE_PARAM,41fedc,0,2,3a66f8)=SUCCESS
OCIAttrGet(3abfb8,OCI_DTYPE_PARAM,41fede,0,1,3a66f8)=SUCCESS
OCIAttrGet(3abfb8,OCI_DTYPE_PARAM,41feec,0,285,3a66f8)=SUCCESS
OCIAttrGet(3abfb8,OCI_DTYPE_PARAM,41feee,0,286,3a66f8)=SUCCESS
OCIAttrGet(3abfb8,OCI_DTYPE_PARAM,41fef0,0,31,3a66f8)=SUCCESS
OCIAttrGet(3abfb8,OCI_DTYPE_PARAM,41fef2,0,32,3a66f8)=SUCCESS
OCIAttrGet(3abfb8,OCI_DTYPE_PARAM,41fee0,0,5,3a66f8)=SUCCESS
OCIAttrGet(3abfb8,OCI_DTYPE_PARAM,41fee2,0,6,3a66f8)=SUCCESS
OCIAttrGet(3abfb8,OCI_DTYPE_PARAM,41fee3,0,7,3a66f8)=SUCCESS
OCIAttrGet(3abfb8,OCI_DTYPE_PARAM,41fee4,ffbfef8c,4,3a66f8)=SUCCESS
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,
disize 171
fbh 1: 'ID' NULLable, otype 2-> 5, dbsize 22/172, p38.s0
OCIParamGet(3ac7bc,4,3a66f8,41ff24,2)=SUCCESS
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,41ff40,0,2,3a66f8)=SUCCESS
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,41ff42,0,1,3a66f8)=SUCCESS
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,41ff50,0,285,3a66f8)=SUCCESS
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,41ff52,0,286,3a66f8)=SUCCESS
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,41ff54,0,31,3a66f8)=SUCCESS
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,41ff56,0,32,3a66f8)=SUCCESS
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,41ff44,0,5,3a66f8)=SUCCESS
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,41ff46,0,6,3a66f8)=SUCCESS
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,41ff47,0,7,3a66f8)=SUCCESS
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,41ff48,ffbfef8c,4,3a66f8)=SUCCESS
Describe col #2 type=108(ORA_XMLTYPE or SQLT_NTY)
OCIHandleAlloc(38ed78,420490,OCI_HTYPE_DESCRIBE,0,0)=SUCCESS
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,
disize 0
fbh 2: 'OBJ' NULLable, otype 108->108, dbsize 2000/0, p0.s0
OCIAttrSet(3ac7bc,OCI_HTYPE_STMT,ffbfee44,4,13,3a66f8)=SUCCESS
OCIAttrSet(3ac7bc,OCI_HTYPE_STMT,ffbfee40,4,11,3a66f8)=SUCCESS
row cache OCI_ATTR_PREFETCH_ROWS 7, OCI_ATTR_PREFETCH_MEMORY 0
rs_array_init: rs_array_on=0, rs_array_size=1
OCIDefineByPos(3ac7bc,41fec4,3a66f8,1,420088,172,5,41e420,41e430,41e440,mode=DEFAULT,0)=SUCCESS
OCIDefineByPos(3ac7bc,41ff28,3a66f8,2,41e450,0,108,41e460,41e470,41e480,mode=DEFAULT,0)=SUCCESS
Field #2 is a object or colection of some sort. Using OCIDefineObject and or
OCIObjectPin
At level=0 in description an embedded object
OCIAttrGet(3abf94,OCI_DTYPE_PARAM,ffbfee44,0,110,3a66f8)=SUCCESS
OCITypeByRef(38ed78,3a66f8,423dc4)=SUCCESS
OCIDescribeAny(3a6684,3a66f8,42e360,0,3,1,6,3ab9e4)=SUCCESS
OCIAttrGet(3ab9e4,OCI_HTYPE_DESCRIBE,4202b8,0,124,3a66f8)=SUCCESS
OCIAttrGet(3ab9c0,OCI_DTYPE_PARAM,ffbfedcc,ffbfedc8,9,3a66f8)=SUCCESS
OCIAttrGet(3ab9c0,OCI_DTYPE_PARAM,ffbfedc4,ffbfedc0,4,3a66f8)=SUCCESS
OCIAttrGet(3ab9c0,OCI_DTYPE_PARAM,4202c4,0,216,3a66f8)=SUCCESS
Getting the properties of object named =SCOTT.DBD_TEST__TYPE_A at level 0
typecode=108
Object named =SCOTT.DBD_TEST__TYPE_A at level 0 is an Object
OCIAttrGet(3ab9c0,OCI_DTYPE_PARAM,4202cc,0,110,3a66f8)=SUCCESS
OCIObjectPin_log_stat(38ed78,3a66f8,430cb4,4202d8)=SUCCESS
OCIAttrGet(3ab9c0,OCI_DTYPE_PARAM,4202e0,0,228,3a66f8)=SUCCESS
OCIAttrGet(3ab9c0,OCI_DTYPE_PARAM,ffbfedbc,0,229,3a66f8)=SUCCESS
OCIParamGet(3ab99c,53,3a66f8,ffbfedb8,1)=SUCCESS
OCIAttrGet(3ab978,OCI_DTYPE_PARAM,436670,436674,4,3a66f8)=SUCCESS
OCIAttrGet(3ab978,OCI_DTYPE_PARAM,436684,0,216,3a66f8)=SUCCESS
Getting property #1, named=NUM and its typecode is 3
OCIParamGet(3ab99c,53,3a66f8,ffbfedb8,2)=SUCCESS
OCIAttrGet(3ab954,OCI_DTYPE_PARAM,4366b0,4366b4,4,3a66f8)=SUCCESS
OCIAttrGet(3ab954,OCI_DTYPE_PARAM,4366c4,0,216,3a66f8)=SUCCESS
Getting property #2, named=NAME and its typecode is 9
OCIParamGet(3ab99c,53,3a66f8,ffbfedb8,3)=ERROR
OCIErrorGet(3a66f8,1,"<NULL>",ffbfecbc,"ORA-24334: no descriptor for
this position
",1024,2)=SUCCESS
OCIErrorGet after OCIParamGet (er1:ok): -1, 24334: ORA-24334: no
descriptor for this position
OCIErrorGet(3a66f8,2,"<NULL>",ffbfecbc,"ORA-24334: no descriptor for
this position
",1024,2)=NO_DATA
level=0 type_name = SCOTT.DBD_TEST__TYPE_A
type_namel = 0
parmdp = 3ab9c0
parmap = 0
tdo = 42e360
typecode = OBJECT
col_typecode = 0
element_typecode = (UNKNOWN OCI TYPECODE 0)
obj_ref = 430cb4
obj_value = 0
obj_type = 42e360
field_count = 131072
fields = 436670
--->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
field_count = 0
fields = 0
--->done NUM
Perl and config details:
$ perl -V
Summary of my perl5 (revision 5 version 8 subversion 4) configuration:
Platform:
osname=solaris, osvers=2.10, archname=sun4-solaris-64int
uname='sunos localhost 5.10 sun4u sparc SUNW,Ultra-2'
config_args=''
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=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8
-D_TS_ERRNO',
optimize='-xO3 -xspace -xildoff',
cppflags=''
ccversion='Sun WorkShop', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=87654321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =''
libpth=/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -ldl -lm -lc
perllibs=-lsocket -lnsl -ldl -lm -lc
libc=/lib/libc.so, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-R
/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE'
cccdlflags='-KPIC', lddlflags='-G'
Characteristics of this binary (from libperl):
Compile-time options: USE_64_BIT_INT USE_LARGE_FILES
Locally applied patches:
22667 The optree builder was looping when constructing the ops ...
22715 Upgrade to FileCache 1.04
22733 Missing copyright in the README.
22746 fix a coredump caused by rv2gv not fully converting a PV ...
22755 Fix 29149 - another UTF8 cache bug hit by substr.
22774 [perl #28938] split could leave an array without ...
22775 [perl #29127] scalar delete of empty slice returned garbage
22776 [perl #28986] perl -e "open m" crashes Perl
22777 add test for change #22776 ("open m" crashes Perl)
22778 add test for change #22746 ([perl #29102] Crash on assign ...
22781 [perl #29340] Bizarre copy of ARRAY make sure a pad op's ...
22796 [perl #29346] Double warning for int(undef) and abs(undef) ...
22818 BOM-marked and (BOMless) UTF-16 scripts not working
22823 [perl #29581] glob() misses a lot of matches
22827 Smoke [5.9.2] 22818 FAIL(F) MSWin32 WinXP/.Net SP1 (x86/1 cpu)
22830 [perl #29637] Thread creation time is hypersensitive
22831 improve hashing algorithm for ptr tables in perl_clone: ...
22839 [perl #29790] Optimization busted: '@a = "b", sort @a' ...
22850 [PATCH] 'perl -v' fails if local_patches contains code snippets
22852 TEST needs to ignore SCM files
22886 Pod::Find should ignore SCM files and dirs
22888 Remove redundant %SIG assignments from FileCache
23006 [perl #30509] use encoding and "eq" cause memory leak
23074 Segfault using HTML::Entities
23106 Numeric comparison operators mustn't compare addresses of ...
23320 [perl #30066] Memory leak in nested shared data structures ...
23321 [perl #31459] Bug in read()
27722 perlio.c breaks on Solaris/gcc when > 256 FDs are available
SPRINTF0 - fixes for sprintf formatting issues - CVE-2005-3962
Built under solaris
Compiled at Aug 8 2007 19:08:30
@INC:
/usr/perl5/5.8.4/lib/sun4-solaris-64int
/usr/perl5/5.8.4/lib
/usr/perl5/site_perl/5.8.4/sun4-solaris-64int
/usr/perl5/site_perl/5.8.4
/usr/perl5/site_perl
/usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int
/usr/perl5/vendor_perl/5.8.4
/usr/perl5/vendor_perl
.
$ perl Makefile.PL
Using DBI 1.59 (for perl 5.008004 on sun4-solaris-64int) installed in
/usr/perl5/site_perl/5.8.4/sun4-solaris-64int/auto/DBI/
Configuring DBD::Oracle for perl 5.008004 on solaris (sun4-solaris-64int)
Remember to actually *READ* the README file! Especially if you have any
problems.
Installing on a solaris, Ver#2.10
Using Oracle in /osp/3rdpty/oracle/product/10.1.4
DEFINE _SQLPLUS_RELEASE = "1001000500" (CHAR)
Oracle version 10.1.0.5 (10.1)
Found /osp/3rdpty/oracle/product/10.1.4/rdbms/demo/demo_rdbms.mk
Found /osp/3rdpty/oracle/product/10.1.4/rdbms/lib/ins_rdbms.mk
Using /osp/3rdpty/oracle/product/10.1.4/rdbms/demo/demo_rdbms.mk
Your LD_LIBRARY_PATH env var is set to
'/osp/3rdpty/oracle/product/10.1.4/lib32:/osp/3rdpty/oracle/product/10.1.4/lib'
Reading /osp/3rdpty/oracle/product/10.1.4/rdbms/demo/demo_rdbms.mk
Reading /osp/3rdpty/oracle/product/10.1.4/rdbms/lib/env_rdbms.mk
Attempting to discover Oracle OCI build rules
cc -c DBD_ORA_OBJ.c
by executing: [make -f
/osp/3rdpty/oracle/product/10.1.4/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/osp/3rdpty/oracle/product/10.1.4/lib/
-L/osp/3rdpty/oracle/product/10.1.4/rdbms/lib/ -o DBD_ORA_EXE DBD_ORA_OBJ.o
-lclntsh `cat /osp/3rdpty/oracle/product/10.1.4/lib/sysliblist`
-R/osp/3rdpty/oracle/product/10.1.4/lib -laio -lposix4 -lkstat -lm -lthread]
Found header files in /osp/3rdpty/oracle/product/10.1.4/rdbms/public.
Checking for functioning wait.ph
System: perl5.008004 sunos localhost 5.10 sun4u sparc SUNW,Ultra-2
Compiler: cc -xO3 -xspace -xildoff -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-xarch=v8 -D_TS_ERRNO
Linker: not found
Sysliblist: -lnsl -lsocket -lgen -ldl
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/osp/3rdpty/oracle/product/10.1.4/rdbms/demo
-I/osp/3rdpty/oracle/product/10.1.4/rdbms/public
-I/osp/3rdpty/oracle/product/10.1.4/plsql/public
-I/osp/3rdpty/oracle/product/10.1.4/network/public -DSLMXMX_ENABLE
-DSLTS_ENABLE -D_SVID_GETTOD -D_REENTRANT $(LPFLAGS) $(USRFLAGS)]
LDFLAGS: -o $@ $(LDPATHFLAG)$(PRODLIBHOME) $(LDPATHFLAG)$(LIBHOME)
$(LDPATHFLAG)$(LIBHOME)/prod/lib/v9
[-o $@ -L/osp/3rdpty/oracle/product/10.1.4/rdbms/lib/ -L$(LIBHOME)
-L$(LIBHOME)/prod/lib/v9]
Linking with OTHERLDFLAGS = -xarch=v9 -L/osp/3rdpty/oracle/product/10.1.4/lib/
-L/osp/3rdpty/oracle/product/10.1.4/rdbms/lib/ -lclntsh `cat
/osp/3rdpty/oracle/product/10.1.4/lib/sysliblist`
-R/osp/3rdpty/oracle/product/10.1.4/lib -laio -lposix4 -lkstat -lm -lthread
[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=/osp/3rdpty/oracle/product/10.1.4/lib32:/osp/3rdpty/oracle/product/10.1.4/rdbms/lib32
Using DBD::Oracle 1.23.
Using DBD::Oracle 1.23.
Using DBI 1.59 (for perl 5.008004 on sun4-solaris-64int) installed in
/usr/perl5/site_perl/5.8.4/sun4-solaris-64int/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?)
--
Peter Jeremy
pgpc71m4diGoE.pgp
Description: PGP signature
