On Thu, 12 Jan 2006 14:57:38 +0000, Tim Bunce <[EMAIL PROTECTED]> wrote:
> On Thu, Jan 12, 2006 at 11:02:46AM +0100, H.Merijn Brand wrote: > > On Wed, 11 Jan 2006 23:57:58 +0000, Tim Bunce <[EMAIL PROTECTED]> wrote: > > > > > http://www.data-plan.com/public/DBD-Oracle-1.17-RC3.tar.gz > > > > > > "We're getting there". This one fixes the two issues raised against RC2 > > > (thanks Andy and Steffen). > > > > HP-UX 11.23, perl-5.8.7-dor/64, DBI 1.50, HP C-ANSI-C, Oracle-9.2.0.2 > > HP-UX 11.23/64 U rx1620/64 Itanium 2/1600(2) ia64 2037 Mb > > > > --8<--- > > Your LD_LIBRARY_PATH env var is set to '' > > Your LD_LIBRARY_PATH env var doesn't include '/pro/oracle/v920/lib' but > > probably needs to. -->8--- > > > # echo $SHLIB_PATH > > /pro/oracle/v920/lib:/pro/asql/o83F/bin:/pro/asql/o83F/lib:/usr/lib:/etc/opt/resmon/lib:/opt/gnome/lib:/pro/local/lib:/pro/oracle/v920/lib > > > on HP-UX that is set in SHLIB_PATH. I think they should be treated equal > > They should, but Makefile.PL is using what perl's own config told it to. > What does > print -V:ldlibpthname I assume you mean # perl -V:ldlibpthname ldlibpthname='LD_LIBRARY_PATH'; > say? Looks like I have to alter hints/hpux.sh :) But they *both* work. That might be the problem. You can set either, so defining LD_LIBRARY_PATH in $Config{ldlibpthname} is not wrong. > Seems like it ought to say SHLIB_PATH for HP-UX. Looking again at > perl's own INSTALL file it says: > > ---snip--- > To build a shared libperl, the environment variable controlling shared > library search (LD_LIBRARY_PATH in most systems, DYLD_LIBRARY_PATH for > NeXTSTEP/OPENSTEP/Darwin, LIBRARY_PATH for BeOS, > LD_LIBRARY_PATH/SHLIB_PATH for HP-UX, see, either! %Config has no way to define both > LIBPATH for AIX, PATH for Cygwin) > must be set up to include the Perl build directory because that's where the > shared libperl will be created. Configure arranges makefile to have the > correct shared library search settings. You can find the name of the > environment variable Perl thinks works in your your system by > > grep ldlibpthname config.sh > ---snip--- > > Note the "LD_LIBRARY_PATH/SHLIB_PATH" for HP-UX. > Any idea why both are listed? You can use them both and mixed. Demo: x1:/pro/bin 103 > chatr lsi lsi: 64-bit ELF executable shared library dynamic path search: LD_LIBRARY_PATH enabled first SHLIB_PATH enabled second embedded path enabled third /usr/lib/hpux64:/opt/langtools/lib/hpux64 shared library list: libc.so.1 shared library binding: deferred global hash table disabled global hash table size 1103 shared library mapped private disabled shared library segment merging disabled shared vtable support disabled explicit unloading disabled linkage table protection disabled segments: index type address flags size 7 text 4000000000000000 z---c- D (default) 8 data 6000000000000000 ---m-- D (default) executable from stack: D (default) kernel assisted branch prediction enabled lazy swap allocation for dynamic segments disabled nulptr references enabled address space model: default caliper dynamic instrumentation disabled x1:/pro/bin 104 > > Does this fix it for you? > > ---snip--- > --- Makefile.PL (revision 2394) > +++ Makefile.PL (working copy) > @@ -1751,6 +1751,8 @@ > $libdir ||= "$OH/".ora_libdir(); > $libdir =~ s:[\\/]$::; > my $ldlibpthname = $Config{ldlibpthname} or return; > + $ldlibpthname = 'SHLIB_PATH' if $^O eq 'hpux' > + and not defined $ENV{$ldlibpthname}; No. I think it should be something like $ldlibpthname = $^O eq "hpux" ? join ":" => grep { $_ } @ENV{qw( LD_LIBRARY_PATH SHLIB_PATH )} : $Config{ldlibpthname} or return; > my $val = $ENV{$ldlibpthname} || ''; > print "Your $ldlibpthname env var is set to '$val'\n"; > my @val = split /\Q$Config{path_sep}/o, $val, -1; > > ---snip--- > > > > > Some compile warnings: > > --8<--- > > "Oracle.xs", line 271: warning #2550-D: variable "csid" was set but never > > used ub2 csid; > > "dbdimp.c", line 1179: warning #2550-D: variable "sth_i" was set but > > never used SV *sth_i; > > "dbdimp.c", line 45: warning #2550-D: variable "ora_login_nomsg" was set > > but never used static int ora_login_nomsg; /* don't fetch real login > > errmsg if true */ > > Fixed. Thanks. The compiler does some work very good indeed, but I still have to create a testcase to prove HP that the optimizer is broken > > "oci8.c", line 132: warning #2236-D: controlling expression is constant > > && OCIErrorGet_log_stat(errhp, recno, (text*)NULL, &eg_errcode, > > errbuf, > > I can't see the cause of that one. > > > "oci8.c", line 562: warning #2177-D: function "fetch_func_nty" was > > declared but never referenced fetch_func_nty(SV *sth, imp_fbh_t *fbh, SV > > *dest_sv) > > Incomplete support for Oracle named types. Patches welcome :) > > > "oci8.c", line 1094: warning #2177-D: function "fbh_setup_getrefpv" was > > declared but never referenced fbh_setup_getrefpv(imp_fbh_t *fbh, int > > desc_t, char *bless) > > I've added an #ifdef OCI_DTYPE_REF around the function. > > > And now the good news: > > All tests successful, 4 tests and 122 subtests skipped. > > Yeah! > > > Database 9.2.0.2.0 CHAR set is US7ASCII (Non-Unicode), NCHAR set is > > AL16UTF16 (Unicode) Client 9.2.0.2 NLS_LANG is '<unset>', NLS_NCHAR is > > '<unset>' > > I'm tempting fate here, but do they all still pass if run as > > NLS_LANG=.UTF8 make test bev x1:/pro/3gl/CPAN/DBD-Oracle-1.17 102 > env NLS_LANG=.UTF8 make test PERL_DL_NONLAZY=1 /pro/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/01base................ok t/10general.............ok t/15nls.................ok t/20select..............ok t/21nchar............... Database and client versions and character sets: Database 9.2.0.2.0 CHAR set is US7ASCII (Non-Unicode), NCHAR set is AL16UTF16 (U nicode) Client 9.2.0.2 NLS_LANG is '.UTF8', NLS_NCHAR is '<unset>' t/21nchar...............ok t/22nchar_al32utf8......ok t/22nchar_utf8..........ok t/23wide_db.............skipped all skipped: Database character set is not Unicode t/23wide_db_8bit........skipped all skipped: Database character set is not Unicode t/23wide_db_al32utf8....skipped all skipped: Database character set is not Unicode t/24implicit_utf8.......ok t/25plsql...............ok t/30long................ok 122/470 skipped: various reasons t/31lob.................ok t/40ph_type.............ok 1/19 Placeholder behaviour for ora_type=1 (the defaul t) 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.............ok t/50cursor..............ok t/55nested..............ok t/60reauth..............ORACLE_USERID_2 not defined. Tests skipped. skipped all skipped: no reason given t/70meta................ok All tests successful, 4 tests and 122 subtests skipped. Files=19, Tests=1878, 15 wallclock secs ( 6.92 cusr + 1.24 csys = 8.16 CPU) PERL_DL_NONLAZY=1 /pro/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl Oraperl emulation interface version 1.44 DBD::Oracle 1.17 using OCI9.2.0.2 by Tim Bunce DBI 1.50 by Tim Bunce Data sources: dbi:Oracle:EXTPROC_CONNECTION_DATA dbi:Oracle:bevfin dbi:Oracle:bevtest dbi:Oracle:bistest dbi:Oracle:fintest dbi:Oracle:leptest Connecting to '' (from command line, else uses ORACLE_SID or TWO_TASK - recommended) as 'PROBEV/PROBEV' (via ORACLE_USERID env var or default - recommend name/passw [EMAIL PROTECTED]) (ORACLE_SID='bevtest', TWO_TASK='') Fields: 6 Names: NUM_T DATE_T CHAR_T ROWID_T RAW_T NULL_T Lengths: 172 76 121 21 3 1 OraTypes: 2 12 1 104 23 1 SQLTypes: 8 93 12 -9104 -2 12 Scale: 0 0 0 0 0 0 Precision: 126 75 120 20 2 0 Nullable: 1 1 1 1 1 1 Est row width: 36 Data rows: fetch: "7.2", "12-JAN-06", "PROBEV", "AAAADeAABAAAAZaAAA", "7D", undef Repetitive connect/open/close/disconnect: 1 2 3 4 5 6 7 8 9 10 (~0.078 seconds each) test.pl complete. bev x1:/pro/3gl/CPAN/DBD-Oracle-1.17 103 > If time permits, I'll check on other combo's too (Oracle-8 on HP-UX 11.00 for example) -- H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/) using Perl 5.6.2, 5.8.0, 5.8.5, & 5.9.2 on HP-UX 10.20, 11.00 & 11.11, AIX 4.3 & 5.2, SuSE 9.2 & 9.3, and Cygwin. http://www.cmve.net/~merijn Smoking perl: http://www.test-smoke.org, perl QA: http://qa.perl.org reports to: [EMAIL PROTECTED], [email protected]
