Discussion:
ANNOUNCE: DBD::Oracle 1.16 release candidate for testing (RC8)
Tim Bunce
2004-10-20 14:49:25 UTC
Permalink
Yes, another release candidate!

I think I've finally got to the bottom of the character set issues.
(Thanks in part to Lincoln providing me with an account on a system
with several test databases with different combinations of CHAR and
NCHAR character sets. Thanks Lincoln.)

This release has been tested against four different server configs:
US7ASCII/UTF8, US7ASCII/AL16UTF16 (the oracle default installation),
UTF8/UTF8 (wide mode db), and UTF8/AL16UTF16.

For *each* of those the entire test suite has been run with
permutations of US7ASCII, UTF8/AL32UTF8, and WE8MSWIN1252 for
NLS_LANG and NLS_NCHAR. All tests pass. (Perl 5.8.4 and Oracle 9.2
on Linux.) I've also tested on Perl 5.6.1 and Oracle 9.0.1.

This release candidate is available for testing at:

http://homepage.eircom.net/~timbunce/DBD-Oracle-1.16-rc8-20041019.tar.gz

I'd be especially grateful for reports of testing of ...
- a range of Oracle versions, especially 8.1.x and even 8.0.x
- Windows, VMS and other less-common platforms
- anyone who's has 32/64 bit build/link issues

Thanks!

Tim.

=head1 Changes in DBD-Oracle 1.16 (svn rev 505) 19th October 2004

NOTE:
This release has major changes to Unicode support. See below.
It no longer supports the old Oracle 7 OCI interface.
It requires DBI >= 1.38 for some of the tests if using Perl 5.6.
It no longer supports Perl 5.5 or earlier.

Fixed placeholder names to be case insensitive thanks to Charles Jardine.
Fixed some LOB test problems with Oracle 8.1.7 by implementing ora_lob_append
with OCILobGetLength() and OCILobWrite(), instead of buggy OCILobWriteAppend(),
if the Oracle client version is < 9.0. Thanks to Jeff Urlwin.
Fixed handling of temporary LOBs thanks to Chris Donnelly.
Fixed memory leaks in auto LOB refetch code thanks to Dongqiang Bai.
Fixed reporting of length truncated in error message thanks to Jeff Urlwin.
Fixed column_info() to handle TIMESTAMP and INTERVAL datatypes
for Oracle >= 8 thanks to Stephen Clouse.
Fixed STORE to cache attribute value in handle cache.
Fixed seg fault returning LOB Locators reported by Raj Chandran.
Fixed binding to allow overloaded scalars (not for 'inout' params).
Fixed setting of $DBI::err to 0 triggering PrintWarn in DBI >= 1.41.
Fixed some edge cases in row cache sizing.
Fixed truncation error fetching very small numbers (1 ^ -130).
Fixed Oraperl to not enable PrintError or AutoCommit (broken since 1.13).

Changed some utf8 internals for LOBs.
Changed ORA_OCI constant from being just 7 or 8 to being a dualvar:
in numeric context returns the major.minor version number (8.1, 9.2 etc)
in string context it returns the full "major.minor.foo.bar" version string.
Changed some SUCCESS_WITH_INFO situtions to be treated as a "warning"
by setting $DBI::err to "0" (and so trigger PrintWarn in DBI >= 1.43)
eg "ORA-28011: the account will expire soon; change your password now"
and package compilation errors.

Added automatic support for UTF-8 for both NLS_LANG and NLS_NCHAR
Many thanks to Lincoln Baxter who did most of the hard work and testing
and to Jeff Urlwin and others who also helped out.
Perl 5.8.x and Oracle 9+ are highly recommended if you want to use Unicode.
See POD for more information and documentation.
Added support for "... RETURNING lob_locator_column INTO ?"
using $sth->bind_param_inout(2, \$loc, 0, {ora_type => ORA_BLOB});
Added bind_param() ora_csform, ora_csid, and ora_maxdata_size attributes.
Added bind_param() support for SQL_BLOB & SQL_CLOB thanks to Stephen Clouse.
Added $dbh->ora_can_unicode and $dbh->ora_nls_parameters thanks to Andy Hassall.

Documentation changes:
Corrected typo in ora_lob_read() example thanks to Johannes Wierny.
Corrected LOB example thanks to Sascha Pfalz and Thomas Upton.
Updated README.macosx thanks to Hilmar Lapp.
Added $dbh->reauthenticate($user,$pass) docs thanks to Andy Hassall.
Added $dbh->{ora_parse_error_offset} docs thanks to Andy Hassall.
Added gcc example to README.aix thanks to Adrian Terranova.
Added INSERT ... RETURNING ... example prompted by Steven Lembark.

Build Changes:
Fixed build32/build64 Makefile.PL bug spotted by Sean Kelly.
Fixed Oracle version detection on clients thanks to Marko Asplund.
Fixed Oracle 10 version detection on clients thanks to Andy Hassall.
Fixed HP-UX 64bit build issues thanks to Weiguo Sun.
Fixed VMS build issues thanks to Jakob Snoer.
Fixed suprious warning from Makefile.PL thanks to Marko Asplund.
Fixed compiler warnings thanks to Robert Baron.
Fixed oci.def for Cygwin by adding OCILobWriteAppend thanks to Gert-Jan Paulissen.
Changed to use ANSI C prototypes thanks to Steffen Goeldner.
Changed to not warn if ORACLE_HOME env var is not defined
as it's not used with Oracle's new 'Instant Client'.
Added Test::More as a prerequisite module.
Added many Unicode related tests thanks to Lincoln Baxter.

=cut
Honza Pazdziora
2004-10-20 16:22:04 UTC
Permalink
Post by Tim Bunce
Yes, another release candidate!
I think I've finally got to the bottom of the character set issues.
[...]
Post by Tim Bunce
I'd be especially grateful for reports of testing of ...
- a range of Oracle versions, especially 8.1.x and even 8.0.x
Hello Tim,

This is perl, v5.8.3 built for i386-linux-thread-multi

and

Database and client versions and character sets:
Database 8.0.5.2.1 CHAR set is EE8ISO8859P2 (Non-Unicode), NCHAR set is EE8ISO8859P2 (Non-Unicode)
Client 9.2.0.0.0 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'

and I get

t/23wide_db_8bit........set $ENV{NLS_LANG}=AMERICAN_AMERICA.WE8MSWIN1252
dubious
Test returned status 0 (wstat 11, 0xb)
Scalar found where operator expected at (eval 154) line 1, near "'int' $__val"
(Missing operator before $__val?)

[...]

t/25plsql...............1..83
[...]
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
Can't call method "bind_columns" on an undefined value at t/25plsql.t line 319.
# failed test 66 at line 318
not ok 66
dubious
Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 66-83
Failed 18/83 tests, 78.31% okay

[...]

Failed 2/18 test scripts, 88.89% okay. 18/1720 subtests failed, 98.95% okay.
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/23wide_db_8bit.t 0 11 ?? ?? % ??
t/25plsql.t 2 512 83 35 42.17% 66-83
6 tests and 131 subtests skipped.

All other tests are either skipped (it is not a Unicode database)
or passed.

For the same perl and

Database and client versions and character sets:
Database 10.1.0.2.0 CHAR set is AL32UTF8 (Unicode), NCHAR set is UTF8 (Unicode)
Client 9.2.0.0.0 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'

t/21nchar............... Database and client versions and character sets:
Database 10.1.0.2.0 CHAR set is AL32UTF8 (Unicode), NCHAR set is UTF8 (Unicode)
Client 9.2.0.0.0 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'
set $ENV{NLS_NCHAR}=WE8ISO8859P1
dubious
Test returned status 0 (wstat 11, 0xb)
Scalar found where operator expected at (eval 154) line 1, near "'int' $__val"
(Missing operator before $__val?)

[...]

t/23wide_db_8bit........set $ENV{NLS_LANG}=AMERICAN_AMERICA.WE8MSWIN1252
dubious
Test returned status 0 (wstat 11, 0xb)

[...]

Failed 2/18 test scripts, 88.89% okay. 0/1905 subtests failed, 100.00% okay.
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/21nchar.t 0 11 ?? ?? % ??
t/23wide_db_8bit.t 0 11 ?? ?? % ??
1 test and 122 subtests skipped.

For a combination of

Database and client versions and character sets:
Database 10.1.0.2.0 CHAR set is AL32UTF8 (Unicode), NCHAR set is UTF8 (Unicode)
Client 10.1.0.2 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'

all is fine and nice, all tests pass (or are skipped).

Anything I can check (or add more info) concerning the failures on
the 9.2 client?
--
------------------------------------------------------------------------
Honza Pazdziora | ***@fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
Only self-confident people can be simple.
Tim Bunce
2004-10-20 23:56:37 UTC
Permalink
Post by Honza Pazdziora
Database 8.0.5.2.1 CHAR set is EE8ISO8859P2 (Non-Unicode), NCHAR set is EE8ISO8859P2 (Non-Unicode)
Client 9.2.0.0.0 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'
and I get
t/23wide_db_8bit........set $ENV{NLS_LANG}=AMERICAN_AMERICA.WE8MSWIN1252
dubious
Test returned status 0 (wstat 11, 0xb)
Odd. If the appended patch doesn't fix (or workaround) it please
try digging deeper.
Post by Honza Pazdziora
Scalar found where operator expected at (eval 154) line 1, near "'int' $__val"
(Missing operator before $__val?)
That's coming from Test::Harness _after_ the test has exitied.
It's probably a problem with your local copy of wait.ph
(See corestatus() in Test::Harness)
Post by Honza Pazdziora
t/25plsql...............1..83
[...]
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
Can't call method "bind_columns" on an undefined value at t/25plsql.t line 319.
Try the appended patch. But please also run "perl -Mblib t/25plsql.t"
so I can see what the specific error is.

Thanks!

Tim.


Index: t/23wide_db_8bit.t
===================================================================
--- t/23wide_db_8bit.t (revision 506)
+++ t/23wide_db_8bit.t (working copy)
@@ -42,9 +42,10 @@
}

END {
+ local($?, $!);
eval {
- local $dbh->{PrintError} = 0;
- drop_table($dbh) if $dbh and not $ENV{'DBD_SKIP_TABLE_DROP'};
+ local $dbh->{PrintError} = 0 if $dbh;
+ drop_table($dbh) if $dbh and not $ENV{'DBD_SKIP_TABLE_DROP'};
};
}

Index: t/25plsql.t
===================================================================
--- t/25plsql.t (revision 506)
+++ t/25plsql.t (working copy)
@@ -313,9 +313,9 @@
return 1;
end if;
END;
- }) or skip("Can't create a function ($DBI::errstr)", 16);
- my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL});
- ok(0, $sth);
+ }) or skip("Can't create a function ($DBI::errstr)", 15);
+ my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL})
+ or skip("Can't select from function ($DBI::errstr)", 15);
ok(0, $sth->bind_columns(\my $returnVal));
for (1..2) {
ok(0, $sth->bind_param(1, "foo", { ora_csform => SQLCS_NCHAR }));
@@ -344,7 +344,7 @@
ok(0, !$dbh->ping);

exit 0;
-BEGIN { $tests = 83 }
+BEGIN { $tests = 82 }
# end.

__END__
Honza Pazdziora
2004-10-21 05:52:42 UTC
Permalink
Post by Tim Bunce
Post by Honza Pazdziora
t/23wide_db_8bit........set $ENV{NLS_LANG}=AMERICAN_AMERICA.WE8MSWIN1252
dubious
Test returned status 0 (wstat 11, 0xb)
Odd. If the appended patch doesn't fix (or workaround) it please
try digging deeper.
$ perl -Mblib t/23wide_db_8bit.t
set $ENV{NLS_LANG}=AMERICAN_AMERICA.WE8MSWIN1252
Segmentation fault

It segfaults upon connect in db_handle. Ummm. My fault. I have
a minimalistic ORACLE_HOME with the 9.2 tree and it was missing
ocommon/nls/admin/data/lx200b2.nlb. Sorry about it. The patch to
t/23wide_db_8bit.t is not needed.
Post by Tim Bunce
Post by Honza Pazdziora
t/25plsql...............1..83
[...]
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
Can't call method "bind_columns" on an undefined value at t/25plsql.t line 319.
Try the appended patch. But please also run "perl -Mblib t/25plsql.t"
so I can see what the specific error is.
t/25plsql is now clean. The perl -Mblib yields

ok 61
test bind_param_inout of param that's not assigned to in executed statement
Before p1=[Hello] p2=[Y] p3=[Y]
ok 62
ok 63
ok 64
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
ok 66
ok 67
ok 68
ok 69
ok 70
ok 71
ok 72
ok 73
ok 74
ok 75
ok 76
ok 77
ok 78
ok 79
ok 80
Can't select from function (ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERROR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest(:p1, :p2) FROM DUAL'))
test ping
ok 81

The overall result with 9.2 client and 8.0.5 server is

PERL_DL_NONLAZY=1 /usr/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 8.0.5.2.1 CHAR set is EE8ISO8859P2 (Non-Unicode), NCHAR set is EE8ISO8859P2 (Non-Unicode)
Client 9.2.0.0.0 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'
t/21nchar...............ok
t/22nchar_al32utf8......skipped
all skipped: Database NCHAR character set is not Unicode
t/22nchar_utf8..........skipped
all skipped: Database NCHAR character set is not Unicode
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.......skipped
all skipped: Database NCHAR character set is not Unicode
t/25plsql...............ok
t/30long................ok
131/470 skipped: various reasons
t/31lob.................ok
t/40ph_type.............ok
t/50cursor..............ok
t/60reauth..............skipped
all skipped: no reason given
t/70meta................ok
All tests successful, 7 tests and 131 subtests skipped.
Files=18, Tests=1719, 36 wallclock secs ( 6.93 cusr + 0.87 csys = 7.80 CPU)

The overall result with 9.2 client and 10.1.0.2 server is

PERL_DL_NONLAZY=1 /usr/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 10.1.0.2.0 CHAR set is AL32UTF8 (Unicode), NCHAR set is UTF8 (Unicode)
Client 9.2.0.0.0 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'
t/21nchar...............ok
t/22nchar_al32utf8......ok
t/22nchar_utf8..........ok
t/23wide_db.............ok
t/23wide_db_8bit........ok
t/23wide_db_al32utf8....ok
t/24implicit_utf8.......ok
t/25plsql...............ok
t/30long................ok
122/470 skipped: various reasons
t/31lob.................ok
t/40ph_type.............ok
t/50cursor..............ok
t/60reauth..............skipped
all skipped: no reason given
t/70meta................ok
All tests successful, 1 test and 122 subtests skipped.
Files=18, Tests=1020, 40 wallclock secs ( 8.27 cusr + 1.00 csys = 9.27 CPU)

and the same result for 10.1.0.2 client and 10.1.0.2 server,
except for the

t/40ph_type.............ok 11/19 Placeholder behaviour for ora_type=1 (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.

info which is not odd, provided it is 10g.

Once more, sorry about the bogus bug report about t/23wide_db_8bit.

Yours,
--
------------------------------------------------------------------------
Honza Pazdziora | ***@fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
Only self-confident people can be simple.
Tim Bunce
2004-10-21 09:41:28 UTC
Permalink
Post by Honza Pazdziora
t/25plsql is now clean. The perl -Mblib yields
Can't select from function (ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERROR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest(:p1, :p2) FROM DUAL'))
It's odd that the error is happening on the prepare.
Post by Honza Pazdziora
Database 8.0.5.2.1 CHAR set is EE8ISO8859P2 (Non-Unicode), NCHAR set is EE8ISO8859P2 (Non-Unicode)
Client 9.2.0.0.0 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'
If you run the test with NLS_LANG="AMERICAN_AMERICA.EE8ISO8859P2"
does that avoid the error?

If Steffan's error is the same then I suspect it won't, and I can't
blame it on a 9.x client talking to an 8.x server as he's 8.1 to 8.1.
If it's an Oracle 8.x bug then I'll just disable that test if the
server is 8.x, but I won't know it is unless I can test a similar
charset configuration on 9.x.
Post by Honza Pazdziora
Once more, sorry about the bogus bug report about t/23wide_db_8bit.
No problem - keeps me on my toes :)

Can you please send (just me) the output of

DBI_TRACE=9 perl -Mblib t/25plsql.t > 25plsql.og 2>&1

Thanks.

Tim.
Tim Bunce
2004-10-21 16:20:12 UTC
Permalink
Post by Tim Bunce
Post by Honza Pazdziora
t/25plsql is now clean. The perl -Mblib yields
Can't select from function (ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERROR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest(:p1, :p2) FROM DUAL'))
It's odd that the error is happening on the prepare.
From the trace you sent I can see it's happening on the describe.
Please try this patch over the original.
(Same for Steffan and H.Merijn.)

Tim.


Index: t/25plsql.t
===================================================================
--- t/25plsql.t (revision 506)
+++ t/25plsql.t (working copy)
@@ -314,8 +314,12 @@
end if;
END;
}) or skip("Can't create a function ($DBI::errstr)", 16);
- my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL});
- ok(0, $sth);
+ my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL}, {
+ # Oracle 8 describe fails with ORA-06553: PLS-561: charset mismatch
+ ora_check_sql => 0,
+ });
+ ok(0, $sth, "Can't prepare select from function ($DBI::errstr)");
+ skip("Can't select from function ($DBI::errstr)", 15) unless $sth;
ok(0, $sth->bind_columns(\my $returnVal));
for (1..2) {
ok(0, $sth->bind_param(1, "foo", { ora_csform => SQLCS_NCHAR }));
H.Merijn Brand
2004-10-21 16:46:15 UTC
Permalink
Post by Tim Bunce
Please try this patch over the original.
32bit 5.8.5-dor on HP-UX 11.00

ok 60
ok 61
test bind_param_inout of param that's not assigned to in executed statement
Before p1=[Hello] p2=[Y] p3=[Y]
ok 62
ok 63
ok 64
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
Use of uninitialized value in concatenation (.) or string at t/25plsql.t line 321.
ok 66
Describe failed during DBI::st=HASH(0x402091a8)->FETCH(NUM_OF_FIELDS): 6553: ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERROR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest(:p1, :p2) FROM DUAL') at /pro/lib/perl5/site_perl/5.8.5/PA-RISC2.0/DBI.pm line 1695.
Exit 255
--
H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/)
using perl-5.6.1, 5.8.0 & 633 on HP-UX 10.20 & 11.00, AIX 4.2, AIX 4.3,
WinNT 4, Win2K pro & WinCE 2.11 often with Tk800.024 &/| DBD-Unify
ftp://ftp.funet.fi/pub/languages/perl/CPAN/authors/id/H/HM/HMBRAND/
Honza Pazdziora
2004-10-21 16:57:20 UTC
Permalink
Post by H.Merijn Brand
Post by Tim Bunce
Please try this patch over the original.
32bit 5.8.5-dor on HP-UX 11.00
ok 60
ok 61
test bind_param_inout of param that's not assigned to in executed statement
Before p1=[Hello] p2=[Y] p3=[Y]
ok 62
ok 63
ok 64
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
Use of uninitialized value in concatenation (.) or string at t/25plsql.t line 321.
ok 66
Describe failed during DBI::st=HASH(0x402091a8)->FETCH(NUM_OF_FIELDS): 6553: ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERROR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest(:p1, :p2) FROM DUAL') at /pro/lib/perl5/site_perl/5.8.5/PA-RISC2.0/DBI.pm line 1695.
Exit 255
The same on 5.8.3 on 9.2 Linux client against 8.0.5 Solaris server:

ok 60
ok 61
test bind_param_inout of param that's not assigned to in executed statement
Before p1=[Hello] p2=[Y] p3=[Y]
ok 62
ok 63
ok 64
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
Use of uninitialized value in concatenation (.) or string at t/25plsql.t line 321.
ok 66
Describe failed during DBI::st=HASH(0x9343034)->FETCH(NUM_OF_FIELDS): 6553: ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERROR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest(:p1, :p2) FROM DUAL') at /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi/DBI.pm line 1676.

The result is the same with and without
NLS_LANG="AMERICAN_AMERICA.EE8ISO8859P2".
--
------------------------------------------------------------------------
Honza Pazdziora | ***@fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
Only self-confident people can be simple.
Tim Bunce
2004-10-21 19:54:50 UTC
Permalink
Post by H.Merijn Brand
Post by Tim Bunce
Please try this patch over the original.
Describe failed during DBI::st=HASH(0x402091a8)->FETCH(NUM_OF_FIELDS): 6553: ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
Okay. I've had enough of trying to finesse this one. Here's a patch
that disables that block of tests if the client or the server is <9.0.

Let me know how it goes. Thanks.

Tim.

p.s. I've also removed the bind_col that was triggering the failure.
I'd be curious what happens if you comment out the first skip() call.


Index: t/25plsql.t
===================================================================
--- t/25plsql.t (revision 509)
+++ t/25plsql.t (working copy)
@@ -302,6 +302,9 @@

print "test nvarchar2 arg passing to functions\n";
# http://www.nntp.perl.org/group/perl.dbi.users/24217
+ my $ora_server_version = $dbh->func("ora_server_version");
+ skip "Client/server version < 9.0"
+ if DBD::Oracle::ORA_OCI() < 9.0 || $ora_server_version < 9.8;
my $func_name = "dbd_oracle_nvctest".($ENV{DBD_ORACLE_SEQ}||'');
$dbh->do(qq{
CREATE OR REPLACE FUNCTION $func_name(arg nvarchar2, arg2 nvarchar2)
@@ -313,23 +316,22 @@
return 1;
end if;
END;
- }) or skip("Can't create a function ($DBI::errstr)", 16);
+ }) or skip("Can't create a function ($DBI::errstr)", 15);
my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL}, {
# Oracle 8 describe fails with ORA-06553: PLS-561: charset mismatch
ora_check_sql => 0,
});
- ok(0, $sth, "Can't prepare select from function ($DBI::errstr)");
- skip("Can't select from function ($DBI::errstr)", 15) unless $sth;
- ok(0, $sth->bind_columns(\my $returnVal));
+ ok(0, $sth, sprintf("Can't prepare select from function (%s)",$DBI::errstr||''));
+ skip("Can't select from function ($DBI::errstr)", 14) unless $sth;
for (1..2) {
ok(0, $sth->bind_param(1, "foo", { ora_csform => SQLCS_NCHAR }));
ok(0, $sth->bind_param(2, "bar", { ora_csform => SQLCS_NCHAR }));
ok(0, $sth->execute());
- ok(0, $sth->fetch);
+ ok(0, my($returnVal) = $sth->fetchrow_array);
ok(0, $returnVal eq "1");
}
ok(0, $sth->execute("baz",undef));
- ok(0, $sth->fetch);
+ ok(0, my($returnVal) = $sth->fetchrow_array);
ok(0, $returnVal eq "-1");
ok(0, $dbh->do(qq{drop function $func_name}));
}
@@ -348,7 +350,7 @@
ok(0, !$dbh->ping);

exit 0;
-BEGIN { $tests = 83 }
+BEGIN { $tests = 82 }
# end.

__END__
Steffen Goeldner
2004-10-22 07:53:06 UTC
Permalink
Post by Tim Bunce
Post by H.Merijn Brand
Post by Tim Bunce
Please try this patch over the original.
Describe failed during DBI::st=HASH(0x402091a8)->FETCH(NUM_OF_FIELDS): 6553: ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
Okay. I've had enough of trying to finesse this one. Here's a patch
that disables that block of tests if the client or the server is <9.0.
Let me know how it goes. Thanks.
Tim.
p.s. I've also removed the bind_col that was triggering the failure.
I'd be curious what happens if you comment out the first skip() call.
Index: t/25plsql.t
===================================================================
--- t/25plsql.t (revision 509)
+++ t/25plsql.t (working copy)
@@ -302,6 +302,9 @@
print "test nvarchar2 arg passing to functions\n";
# http://www.nntp.perl.org/group/perl.dbi.users/24217
+ my $ora_server_version = $dbh->func("ora_server_version");
+ skip "Client/server version < 9.0"
+ if DBD::Oracle::ORA_OCI() < 9.0 || $ora_server_version < 9.8;
my $func_name = "dbd_oracle_nvctest".($ENV{DBD_ORACLE_SEQ}||'');
$dbh->do(qq{
CREATE OR REPLACE FUNCTION $func_name(arg nvarchar2, arg2 nvarchar2)
@@ -313,23 +316,22 @@
return 1;
end if;
END;
- }) or skip("Can't create a function ($DBI::errstr)", 16);
+ }) or skip("Can't create a function ($DBI::errstr)", 15);
my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL}, {
# Oracle 8 describe fails with ORA-06553: PLS-561: charset mismatch
ora_check_sql => 0,
});
- ok(0, $sth, "Can't prepare select from function ($DBI::errstr)");
- skip("Can't select from function ($DBI::errstr)", 15) unless $sth;
- ok(0, $sth->bind_columns(\my $returnVal));
+ ok(0, $sth, sprintf("Can't prepare select from function (%s)",$DBI::errstr||''));
+ skip("Can't select from function ($DBI::errstr)", 14) unless $sth;
for (1..2) {
ok(0, $sth->bind_param(1, "foo", { ora_csform => SQLCS_NCHAR }));
ok(0, $sth->bind_param(2, "bar", { ora_csform => SQLCS_NCHAR }));
ok(0, $sth->execute());
- ok(0, $sth->fetch);
+ ok(0, my($returnVal) = $sth->fetchrow_array);
ok(0, $returnVal eq "1");
}
ok(0, $sth->execute("baz",undef));
- ok(0, $sth->fetch);
+ ok(0, my($returnVal) = $sth->fetchrow_array);
ok(0, $returnVal eq "-1");
ok(0, $dbh->do(qq{drop function $func_name}));
}
@@ -348,7 +350,7 @@
ok(0, !$dbh->ping);
exit 0;
-BEGIN { $tests = 83 }
+BEGIN { $tests = 82 }
# end.
__END__
Oracle 8.1.7/8.1.7:

test nvarchar2 arg passing to functions
Use of uninitialized value in foreach loop entry at t\25plsql.t line 301.
Use of uninitialized value in foreach loop entry at t\25plsql.t line 301.
Client/server version < 9.0

Patch attached.


Steffen
Tim Bunce
2004-10-22 08:39:01 UTC
Permalink
Post by Honza Pazdziora
Post by Tim Bunce
Post by H.Merijn Brand
Post by Tim Bunce
Please try this patch over the original.
6553: ORA-06553: PLS-561: character set mismatch on value for parameter
'ARG2'
Okay. I've had enough of trying to finesse this one. Here's a patch
that disables that block of tests if the client or the server is <9.0.
Let me know how it goes. Thanks.
Tim.
p.s. I've also removed the bind_col that was triggering the failure.
I'd be curious what happens if you comment out the first skip() call.
test nvarchar2 arg passing to functions
Use of uninitialized value in foreach loop entry at t\25plsql.t line 301.
Use of uninitialized value in foreach loop entry at t\25plsql.t line 301.
Client/server version < 9.0
Patch attached.
Thanks, applied. I think we're good to go...

Tim.

Steffen Goeldner
2004-10-22 07:38:07 UTC
Permalink
Post by Tim Bunce
Post by Tim Bunce
Post by Honza Pazdziora
t/25plsql is now clean. The perl -Mblib yields
Can't select from function (ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERROR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest(:p1, :p2) FROM DUAL'))
It's odd that the error is happening on the prepare.
From the trace you sent I can see it's happening on the describe.
Please try this patch over the original.
(Same for Steffan and H.Merijn.)
Tim.
Index: t/25plsql.t
===================================================================
--- t/25plsql.t (revision 506)
+++ t/25plsql.t (working copy)
@@ -314,8 +314,12 @@
end if;
END;
}) or skip("Can't create a function ($DBI::errstr)", 16);
- my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL});
- ok(0, $sth);
+ my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL}, {
+ # Oracle 8 describe fails with ORA-06553: PLS-561: charset mismatch
+ ora_check_sql => 0,
+ });
+ ok(0, $sth, "Can't prepare select from function ($DBI::errstr)");
+ skip("Can't select from function ($DBI::errstr)", 15) unless $sth;
ok(0, $sth->bind_columns(\my $returnVal));
for (1..2) {
ok(0, $sth->bind_param(1, "foo", { ora_csform => SQLCS_NCHAR }));
Oracle 8.1.7/8.1.7:

test nvarchar2 arg passing to functions
Use of uninitialized value in concatenation (.) or string at t\25plsql.t line 321.
ok 66
Describe failed during DBI::st=HASH(0x13a0380)->FETCH(NUM_OF_FIELDS): 6553:
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG'
(DBD ERROR: error possibly near <*> indicator at char 7 in
'SELECT <*>dbd_oracle_nvctest(:p1, :p2) FROM DUAL') at C:/opt/perl/site/lib/DBI.pm line 1695.


Steffen
Steffen Goeldner
2004-10-21 06:53:40 UTC
Permalink
Post by Tim Bunce
Yes, another release candidate!
You know, my Borland compiler is now in picky mode:

'typename' is only allowed in template declarations in function ...

Patch attached.


Steffen
Tim Bunce
2004-10-21 09:18:12 UTC
Permalink
Post by Steffen Goeldner
Post by Tim Bunce
Yes, another release candidate!
'typename' is only allowed in template declarations in function ...
Patch attached.
Thanks, applied.

Tim.
Post by Steffen Goeldner
Steffen
--- oci8.orig Tue Oct 19 22:43:24 2004
+++ oci8.c Wed Oct 20 19:44:40 2004
@@ -752,14 +752,14 @@
OCILobLocator *lobl = (OCILobLocator*)fbh->desc_h;
sword ftype = fbh->ftype;
sword status;
- char *typename;
+ char *type_name;
if (ftype == 112)
- typename = "CLOB";
+ type_name = "CLOB";
else if (ftype == 113)
- typename = "BLOB";
+ type_name = "BLOB";
else if (ftype == 114)
- typename = "BFILE";
+ type_name = "BFILE";
else {
oci_error(sth, imp_sth->errhp, OCI_ERROR,
"blob_read not currently supported for non-LOB types with OCI 8 "
@@ -783,7 +783,7 @@
return 0;
}
if (ftype == 112 && csform == SQLCS_NCHAR)
- typename = "NCLOB";
+ type_name = "NCLOB";
/*
* We assume our caller has already done the
@@ -821,7 +821,7 @@
PerlIO_printf(DBILOGFP,
" blob_read field %d: ftype %d %s, offset %ld, len %lu."
"LOB csform %d, len %lu, amtp %lu, (destoffset=%ld)\n",
- fbh->field_num+1, ftype, typename, offset, ul_t(len),
+ fbh->field_num+1, ftype, type_name, offset, ul_t(len),
csform, loblen, ul_t(amtp), destoffset);
if (loblen > 0) {
Steffen Goeldner
2004-10-21 07:07:01 UTC
Permalink
Post by Tim Bunce
Yes, another release candidate!
Perl 5.6.1, Win2k, Borland 5.5,
Oracle Client 8.1.7.4.15,
Oracle Server 8.1.7.2.1

Using C:/temp/DBD-Oracle-1.16-8/blib
t\01base................ok
t\10general.............ok
t\15nls.................ok
t\20select..............ok
t\21nchar............... Database and client versions and character sets:
Database 8.1.7.2.1 CHAR set is WE8ISO8859P1 (Non-Unicode), NCHAR set is WE8ISO8859P1 (Non-Unicode)
Client 8.1.7.0 NLS_LANG is 'AMERICAN_AMERICA.WE8ISO8859P1', NLS_NCHAR is '<unset>'
skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t\22nchar_al32utf8......skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t\22nchar_utf8..........skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t\23wide_db.............skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t\23wide_db_8bit........skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t\23wide_db_al32utf8....skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t\24implicit_utf8.......skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t\25plsql...............ok 65/83Can't call method "bind_columns" on an undefined value at t\25plsql.t line 319.
t\25plsql...............dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 66-83
Failed 18/83 tests, 78.31% okay
t\30long................ok
128/376 skipped: various reasons
t\31lob.................ok
t\40ph_type.............ok
t\50cursor..............ok
t\60reauth..............skipped
all skipped: no reason given
t\70meta................ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t\25plsql.t 255 65280 83 35 42.17% 66-83
8 tests and 128 subtests skipped.
Failed 1/18 test scripts, 94.44% okay. 18/583 subtests failed, 96.91% okay.



Steffen
Tim Bunce
2004-10-21 09:30:16 UTC
Permalink
Post by Steffen Goeldner
Database 8.1.7.2.1 CHAR set is WE8ISO8859P1 (Non-Unicode), NCHAR set is
WE8ISO8859P1 (Non-Unicode)
Client 8.1.7.0 NLS_LANG is 'AMERICAN_AMERICA.WE8ISO8859P1', NLS_NCHAR is '<unset>'
t\25plsql...............ok 65/83Can't call method "bind_columns" on an
undefined value at t\25plsql.t line 319.
t\25plsql...............dubious
Test returned status 255 (wstat 65280, 0xff00)
Looks like the same (interesting) problem as Honza.
What message do you get after applying the appended patch?

Tim.


Index: t/25plsql.t
===================================================================
--- t/25plsql.t (revision 506)
+++ t/25plsql.t (working copy)
@@ -315,7 +315,8 @@
END;
}) or skip("Can't create a function ($DBI::errstr)", 16);
my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL});
- ok(0, $sth);
+ ok(0, $sth, "Can't prepare select from function ($DBI::errstr)");
+ skip("Can't select from function ($DBI::errstr)", 15) unless $sth;
ok(0, $sth->bind_columns(\my $returnVal));
for (1..2) {
ok(0, $sth->bind_param(1, "foo", { ora_csform => SQLCS_NCHAR }));
Steffen Goeldner
2004-10-21 10:18:43 UTC
Permalink
Post by Tim Bunce
Post by Steffen Goeldner
t\25plsql...............ok 65/83Can't call method "bind_columns" on an
undefined value at t\25plsql.t line 319.
t\25plsql...............dubious
Test returned status 255 (wstat 65280, 0xff00)
Looks like the same (interesting) problem as Honza.
What message do you get after applying the appended patch?
The same as Honza:

test nvarchar2 arg passing to functions
# failed test 66 at line 318
not ok 66
Can't prepare select from function
(ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG'
(DBD ERROR: error possibly near <*> indicator at char 7 in
'SELECT <*>dbd_oracle_nvctest(:p1, :p2) FROM DUAL'))


Steffen
H.Merijn Brand
2004-10-21 09:44:09 UTC
Permalink
Post by Tim Bunce
Yes, another release candidate!
=== 64bit perl-5.8.5-dor on HP-UX 11.11 (11i)

LD_RUN_PATH=/pro/oracle/v920/lib:/pro/oracle/v920/rdbms/lib
Using DBI 1.43 (for perl 5.008005 on PA-RISC2.0-LP64) installed in /pro/lib/perl5/site_perl/5.8.5/PA-RISC2.0-LP64/auto/DBI
Oracle version 9.2.0.1 (9.2)


bev r3:/pro/3gl/CPAN/DBD-Oracle-1.16 104 > 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.1.0 CHAR set is US7ASCII (Non-Unicode), NCHAR set is AL16UTF16 (U
nicode)
Client 9.2.0.1 NLS_LANG is '<unset>', 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 188/470DBD::Oracle::db do failed: ORA-03237: Initial
Extent of specified size cannot be allocated in tablespace (PROBEV) (DBD ERROR:
OCIStmtExecute) [for Statement "create table dbd_ora__drop_me ( idx integer, lng
NCLOB, dt date )"] at t/nchar_test_lib.pl line 356.
t/30long................ok 189/470DBD::Oracle::st execute failed: ORA-00942: tab
le or view does not exist (DBD ERROR: error possibly near <*> indicator at char
12 in 'insert into <*>dbd_ora__drop_me values (:p1, :p2, SYSDATE)') [for Stateme
nt "insert into dbd_ora__drop_me values (?, ?, SYSDATE)" with ParamValues: :p1=4
0, :p2='0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.
x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.
x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.
x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.
x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.x.X0.
x.X...'] at t/30long.t line 153.
# Failed test (t/30long.t at line 153)
DBD::Oracle::st execute failed: ORA-00942: table or view does not exist (DBD ERR
OR: error possibly near <*> indicator at char 12 in 'insert into <*>dbd_ora__dro
p_me values (:p1, :p2, SYSDATE)') [for Statement "insert into dbd_ora__drop_me v
alues (?, ?, SYSDATE)" with ParamValues: :p1=41, :p2='12345678901234567890123456
78901234567890123456789012345678901234567890123456789012345678901234567890123456
78901234567890123456789012345678901234567890123456789012345678901234567890123456
78901234567890123456789012345678901234567890123456789012345678901234567890123456
78901234567890123456789012345678901234567890123456789012345678901234567890123456
7890123456789012345678901234567890123456789012345...'] at t/30long.t line 154.
# Failed test (t/30long.t at line 154)
DBD::Oracle::st execute failed: ORA-00942: table or view does not exist (DBD ERR
OR: error possibly near <*> indicator at char 12 in 'insert into <*>dbd_ora__dro
p_me values (:p1, :p2, SYSDATE)') [for Statement "insert into dbd_ora__drop_me v
alues (?, ?, SYSDATE)" with ParamValues: :p1=42, :p2='2bcdefabcd2bcdefabcd2bcdef
abcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdef
abcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdef
abcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdef
abcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdef
abcd2bcdefabcd2bcdefabcd2bcdefabcd2bcdefabcd2bcde...'] at t/30long.t line 155.
# Failed test (t/30long.t at line 155)
DBD::Oracle::st execute failed: ORA-00942: table or view does not exist (DBD ERR
OR: error possibly near <*> indicator at char 12 in 'insert into <*>dbd_ora__dro
p_me values (:p1, :p2, SYSDATE)') [for Statement "insert into dbd_ora__drop_me v
alues (?, ?, SYSDATE)" with ParamValues: :p1=43, :p2=undef] at t/30long.t line 1
56.
# Failed test (t/30long.t at line 156)
t/30long................NOK 193DBD::Oracle::db prepare failed: ORA-00942: table
or view does not exist (DBD ERROR: error possibly near <*> indicator at char 14
in 'select * from <*>dbd_ora__drop_me order by idx') [for Statement "select * fr
om dbd_ora__drop_me order by idx"] at t/30long.t line 170.
# Failed test (t/30long.t at line 170)
Can't call method "trace" on an undefined value at t/30long.t line 171.
t/30long................NOK 194# Looks like you planned 470 tests but only ran 1
94.
# Looks like your test died just after 194.
t/30long................dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 190-470
Failed 281/470 tests, 40.21% okay (less 122 skipped tests: 67 okay, 14.2
6%)
t/31lob.................DBD::Oracle::db do failed: ORA-03237: Initial Extent of
specified size cannot be allocated in tablespace (PROBEV) (DBD ERROR: OCIStmtExe
cute) [for Statement "
CREATE TABLE dbd_ora__drop_me (
id INTEGER NOT NULL,
data BLOB
)
"] at t/31lob.t line 21.
DBD::Oracle::db do failed: ORA-00942: table or view does not exist (DBD ERROR: e
rror possibly near <*> indicator at char 12 in 'INSERT INTO <*>dbd_ora__drop_me
(id,data) VALUES (1, EMPTY_BLOB())') [for Statement "INSERT INTO dbd_ora__drop_m
e (id,data) VALUES (1, EMPTY_BLOB())"] at t/31lob.t line 31.
DBD::Oracle::db prepare failed: ORA-00942: table or view does not exist (DBD ERR
OR: error possibly near <*> indicator at char 17 in 'SELECT data FROM <*>dbd_ora
__drop_me WHERE id = :p1') [for Statement "SELECT data FROM dbd_ora__drop_me WHE
RE id = ?"] at t/31lob.t line 34.
Can't call method "bind_param" on an undefined value at t/31lob.t line 36.
# Looks like your test died before it could output anything.
t/31lob.................dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-2
Failed 2/2 tests, 0.00% okay
t/40ph_type.............ok
t/50cursor..............ok
t/60reauth..............skipped
all skipped: no reason given
t/70meta................ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/30long.t 255 65280 470 557 118.51% 190-470
t/31lob.t 255 65280 2 4 200.00% 1-2
4 tests and 122 subtests skipped.
Failed 2/18 test scripts, 88.89% okay. 283/1884 subtests failed, 84.98% okay.
make: *** [test_dynamic] Error 255
Exit 2
bev r3:/pro/3gl/CPAN/DBD-Oracle-1.16 105 >
--
H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/)
using perl-5.6.1, 5.8.0 & 633 on HP-UX 10.20 & 11.00, AIX 4.2, AIX 4.3,
WinNT 4, Win2K pro & WinCE 2.11 often with Tk800.024 &/| DBD-Unify
ftp://ftp.funet.fi/pub/languages/perl/CPAN/authors/id/H/HM/HMBRAND/
H.Merijn Brand
2004-10-21 09:49:55 UTC
Permalink
Post by Tim Bunce
Yes, another release candidate!
=== 32bit perl-5.8.5-dor on HP-UX 11.00

LD_RUN_PATH=/pro/oracle/v817/lib:/pro/oracle/v817/rdbms/lib
Using DBI 1.43 (for perl 5.008005 on PA-RISC2.0) installed in /pro/lib/perl5/site_perl/5.8.5/PA-RISC2.0/auto/DBI
Oracle version 8.1.7.0 (8.1)

Which is in fact 8.1.7.4, but I don't think that matters


lep a5:/pro/3gl/CPAN/DBD-Oracle-1.16 104 > 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 8.1.7.4.0 CHAR set is US7ASCII (Non-Unicode), NCHAR set is US7ASCII (N
n-Unicode)
Client 8.1.7.0 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'
skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/22nchar_al32utf8......skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/22nchar_utf8..........skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/23wide_db.............skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/23wide_db_8bit........skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/23wide_db_al32utf8....skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/24implicit_utf8.......skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/25plsql...............ok 65/83Can't call method "bind_columns" on an undefined value at t/25plsql.t line 319.
t/25plsql...............dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 66-83
Failed 18/83 tests, 78.31% okay
t/30long................ok
128/376 skipped: various reasons
t/31lob.................ok
t/40ph_type.............ok
t/50cursor..............ok
t/60reauth..............skipped
all skipped: no reason given
t/70meta................ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/25plsql.t 255 65280 83 35 42.17% 66-83
8 tests and 128 subtests skipped.
Failed 1/18 test scripts, 94.44% okay. 18/1573 subtests failed, 98.86% okay.
make: *** [test_dynamic] Error 255
Exit 2
lep a5:/pro/3gl/CPAN/DBD-Oracle-1.16 105 > perl -Iblib/{lib,arch} t/25plsql.t
1..83
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29
ok 30
ok 31
ok 32
ok 33
ok 34
ok 35
ok 36
ok 37
ok 38
ok 39
ok 40
ok 41
ok 42
ok 43
ok 44
ok 45
ok 46
ok 47
ok 48
ok 49
ok 50
ok 51
ok 52
ok 53
ok 54
ok 55
ok 56
ok 57
ok 58
ok 59
ok 60
ok 61
test bind_param_inout of param that's not assigned to in executed statement
Before p1=[Hello] p2=[Y] p3=[Y]
ok 62
ok 63
ok 64
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
# failed test 66 at line 318
not ok 66
Can't call method "bind_columns" on an undefined value at t/25plsql.t line 319.
Exit 255
lep a5:/pro/3gl/CPAN/DBD-Oracle-1.16 106 >
--
H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/)
using perl-5.6.1, 5.8.0 & 633 on HP-UX 10.20 & 11.00, AIX 4.2, AIX 4.3,
WinNT 4, Win2K pro & WinCE 2.11 often with Tk800.024 &/| DBD-Unify
ftp://ftp.funet.fi/pub/languages/perl/CPAN/authors/id/H/HM/HMBRAND/
H.Merijn Brand
2004-10-21 10:25:25 UTC
Permalink
Post by H.Merijn Brand
t/25plsql...............ok 65/83Can't call method "bind_columns" on an undefined value at t/25plsql.t line 319.
t/25plsql...............dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 66-83
Failed 18/83 tests, 78.31% okay
after the t/25plsql patch you posted to Steffen:

ok 59
ok 60
ok 61
test bind_param_inout of param that's not assigned to in executed statement
Before p1=[Hello] p2=[Y] p3=[Y]
ok 62
ok 63
ok 64
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
# failed test 66 at line 318
not ok 66
Can't prepare select from function (ORA-06553: PLS-561: character set mismatch o
n value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERR
OR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest
(:p1, :p2) FROM DUAL'))
ok 67
ok 68
ok 69
ok 70
ok 71
ok 72
ok 73
ok 74
ok 75
ok 76
ok 77
ok 78
ok 79
ok 80
ok 81
Can't select from function (ORA-06553: PLS-561: character set mismatch on value
for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERR
OR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest
(:p1, :p2) FROM DUAL'))
test ping
ok 82
ok 83
--
H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/)
using perl-5.6.1, 5.8.0 & 633 on HP-UX 10.20 & 11.00, AIX 4.2, AIX 4.3,
WinNT 4, Win2K pro & WinCE 2.11 often with Tk800.024 &/| DBD-Unify
ftp://ftp.funet.fi/pub/languages/perl/CPAN/authors/id/H/HM/HMBRAND/
H.Merijn Brand
2004-10-21 10:03:09 UTC
Permalink
Post by Tim Bunce
Yes, another release candidate!
=== 32bit perl-5.8.5-dor on AIX-4.3.3.0

LD_RUN_PATH=/pro/oracle/v817/lib:/pro/oracle/v817/rdbms/lib
Using DBI 1.43 (for perl 5.008005 on aix) installed in /pro/lib/perl5/site_perl/5.8.5/aix/auto/DBI
Oracle version 8.1.7.0 (8.1)

bev i2:/pro/3gl/CPAN/DBD-Oracle-1.16 109 > 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 8.1.7.4.0 CHAR set is US7ASCII (Non-Unicode), NCHAR set is US7ASCII (Non-Unicode)
Client 8.1.7.0 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'
skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/22nchar_al32utf8......skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/22nchar_utf8..........skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/23wide_db.............skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/23wide_db_8bit........skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/23wide_db_al32utf8....skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/24implicit_utf8.......skipped
all skipped: Oracle charset tests unreliable for Oracle 8 client
t/25plsql...............ok 65/83Can't call method "bind_columns" on an undefined value at t/25plsql.t line 319.
t/25plsql...............dubious
Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 66-83
Failed 18/83 tests, 78.31% okay
t/30long................ok
128/376 skipped: various reasons
t/31lob.................ok
t/40ph_type.............ok
t/50cursor..............ok
t/60reauth..............skipped
all skipped: no reason given
t/70meta................ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/25plsql.t 2 512 83 35 42.17% 66-83
8 tests and 128 subtests skipped.
Failed 1/18 test scripts, 94.44% okay. 18/1573 subtests failed, 98.86% okay.
make: *** [test_dynamic] Error 255
Exit 2
bev i2:/pro/3gl/CPAN/DBD-Oracle-1.16 110 > perl -Iblib/{lib,arch} t/25plsql.t
1..83
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29
ok 30
ok 31
ok 32
ok 33
ok 34
ok 35
ok 36
ok 37
ok 38
ok 39
ok 40
ok 41
ok 42
ok 43
ok 44
ok 45
ok 46
ok 47
ok 48
ok 49
ok 50
ok 51
ok 52
ok 53
ok 54
ok 55
ok 56
ok 57
ok 58
ok 59
ok 60
ok 61
test bind_param_inout of param that's not assigned to in executed statement
Before p1=[Hello] p2=[Y] p3=[Y]
ok 62
ok 63
ok 64
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
# failed test 66 at line 318
not ok 66
Can't call method "bind_columns" on an undefined value at t/25plsql.t line 319.
Exit 2
bev i2:/pro/3gl/CPAN/DBD-Oracle-1.16 111 >
--
H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/)
using perl-5.6.1, 5.8.0 & 633 on HP-UX 10.20 & 11.00, AIX 4.2, AIX 4.3,
WinNT 4, Win2K pro & WinCE 2.11 often with Tk800.024 &/| DBD-Unify
ftp://ftp.funet.fi/pub/languages/perl/CPAN/authors/id/H/HM/HMBRAND/
H.Merijn Brand
2004-10-21 10:27:15 UTC
Permalink
Post by H.Merijn Brand
t/25plsql...............ok 65/83Can't call method "bind_columns" on an undefined value at t/25plsql.t line 319.
t/25plsql...............dubious
Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 66-83
Failed 18/83 tests, 78.31% okay
After the t/25plsql patch to Steffen:

ok 60
ok 61
test bind_param_inout of param that's not assigned to in executed statement
Before p1=[Hello] p2=[Y] p3=[Y]
ok 62
ok 63
ok 64
ok 65
After p1=[Hello] p2=[Y] p3=[Y]
test nvarchar2 arg passing to functions
# failed test 66 at line 318
not ok 66
Can't prepare select from function (ORA-06553: PLS-561: character set mismatch o
n value for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERR
OR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest
(:p1, :p2) FROM DUAL'))
ok 67
ok 68
ok 69
ok 70
ok 71
ok 72
ok 73
ok 74
ok 75
ok 76
ok 77
ok 78
ok 79
ok 80
ok 81
Can't select from function (ORA-06553: PLS-561: character set mismatch on value
for parameter 'ARG2'
ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG' (DBD ERR
OR: error possibly near <*> indicator at char 7 in 'SELECT <*>dbd_oracle_nvctest
(:p1, :p2) FROM DUAL'))
test ping
ok 82
ok 83
--
H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/)
using perl-5.6.1, 5.8.0 & 633 on HP-UX 10.20 & 11.00, AIX 4.2, AIX 4.3,
WinNT 4, Win2K pro & WinCE 2.11 often with Tk800.024 &/| DBD-Unify
ftp://ftp.funet.fi/pub/languages/perl/CPAN/authors/id/H/HM/HMBRAND/
Jeff Urlwin
2004-10-21 15:59:06 UTC
Permalink
Post by Tim Bunce
Yes, another release candidate!
Looks good here. Pretty consistent reauth not working when ORACLE_USERID_2 not set ;). I
guess I didn't notice before -- patched to give reason and fix spelling issues. Minor
patch, so I submitted. Reauth doesn't seem to work with remote servers...i.e.
scott/***@XXX...ah, I see it. Ora_parse_uid doesn't handle the server name and the test
should really ignore the @xxx. I have patched the *test* to strip off @.* in the
ORACLE_USERID_2, if it's there.

Details:

Client: MS Windows 9.2.0.5, ActiveState Perl 5.8.4
Server: MS Windows 9.2.0.5
Database 9.2.0.5.0 CHAR set is WE8MSWIN1252 (Non-Unicode), NCHAR set is
AL16UTF16 (Unicode)
Client 9.2.0.5 NLS_LANG is 'AMERICAN_AMERICA.WE8MSWIN1252', NLS_NCHAR is
'<unset>'
All goes as expected.

Server: MS Windows 8.1.7.4.1
Database 8.1.7.4.1 CHAR set is WE8ISO8859P1 (Non-Unicode), NCHAR set is
WE8ISO8859P1 (Non-Unicode)
Client 9.2.0.5 NLS_LANG is 'AMERICAN_AMERICA.WE8MSWIN1252', NLS_NCHAR is
'<unset>'

t\25plsql...............ok 65/83Can't call method "bind_columns" on an undefined
value at t\25plsql.t line 319.
t\25plsql...............dubious


Server: Solaris 9.2.0.5
Database 9.2.0.5.0 CHAR set is WE8ISO8859P1 (Non-Unicode), NCHAR set is
AL16UTF16 (Unicode)
Client 9.2.0.5 NLS_LANG is 'AMERICAN_AMERICA.WE8MSWIN1252', NLS_NCHAR is
'<unset>'

Server: Linux 10.1.0.3.0
Database 10.1.0.3.0 CHAR set is WE8ISO8859P1 (Non-Unicode), NCHAR set is
AL16UTF16 (Unicode)
Client 9.2.0.5 NLS_LANG is 'AMERICAN_AMERICA.WE8MSWIN1252', NLS_NCHAR is
'<unset>'
All goes as expected.


Client: RHEL3 with all patches. Perl 5.8.0 (RHEL3 bundled)
Server: Linux 10.1.0.3.0 (local)
Database 10.1.0.3.0 CHAR set is WE8ISO8859P1 (Non-Unicode), NCHAR set is
AL16UTF16 (Unicode)
Client 10.1.0.3 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'

All goes as expected.

Client: Solaris 2.8, Perl 5.8.3
Server: Solaris 9.2.0.5 (local)
Database 9.2.0.5.0 CHAR set is WE8ISO8859P1 (Non-Unicode), NCHAR set is
AL16UTF16 (Unicode)
Client 9.2.0.5 NLS_LANG is '<unset>', NLS_NCHAR is '<unset>'
All goes as expected.
Loading...