Tim Bunce wrote:
On Thu, Oct 21, 2004 at 02:44:35PM +0200, Silvio Wanka wrote:

Do you think that the successfully tested post 1.16-rc7 version is usable
in the meantime in a production environment or should I wait for the
released 1.16.

If this works for you then yes: http://homepage.eircom.net/~timbunce/DBD-Oracle-1.16-rc8-20041019.tar.gz

HP-UX 10.20 Oracle 8.0.6 (client and server), perl 5.6.1: All tests successful, 8 tests and 128 subtests skipped.

HP-UX 11.00 Oracle 8.1.7 (client and server), perl 5.6.1:
All tests successful, 8 tests and 128 subtests skipped.

But both only with the following workaround:

--- 25plsql.t~  Tue Oct 19 18:06:40 2004
+++ 25plsql.t   Thu Oct 21 14:25:01 2004
@@ -317,2 +317,3 @@
   my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL});
+    $sth or skip("Can't prepare ($DBI::errstr)", 16);
   ok(0, $sth);

The demons of too many of character sets strikes back ;-).
Here are the outputs and logs without workaround:

And here's a patch (currently untested).

Sorry, but the patch fails:

Use of uninitialized value in concatenation (.) or string at t/25plsql.t line 321.
ok 66
Describe failed during DBI::st=HASH(0x405f29e8)->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 
/opt/perl5/site/lib/5.
6.1/hppa1.1-hp-hpux10.20/DBI.pm line 1676.

The first message means undefined $DBI::errstr in
ok(0, $sth, "Can't prepare select from function ($DBI::errstr)");


But $sth is now defined (by ora_check_sql => 0) and it dies in bind_columns.

Here is a working (but only with Oracle 8 tested) patch.

Silvio.


Index: t/25plsql.t =================================================================== --- t/25plsql.t (revision 506) +++ t/25plsql.t (working copy) @@ -315,7 +315,13 @@ END; }) or skip("Can't create a function ($DBI::errstr)", 16); my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL}); - ok(0, $sth); + if (defined $sth || $DBI::err != 6553) { + ok(0, $sth, "Can't prepare select from function ($DBI::errstr)"); + } + else { + # Oracle 8 describe fails with ORA-06553: PLS-561: charset mismatch + skip("Can't select from function ($DBI::errstr)", 16); + } ok(0, $sth->bind_columns(\my $returnVal)); for (1..2) { ok(0, $sth->bind_param(1, "foo", { ora_csform => SQLCS_NCHAR }));



Reply via email to