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 }));
