Skip Menu |

Preferred bug tracker

Please visit the preferred bug tracker to report your issue.

This queue is for tickets about the DBD-Oracle CPAN distribution.

Report information
The Basics
Id: 78977
Status: resolved
Priority: 0/
Queue: DBD-Oracle

People
Owner: Nobody in particular
Requestors: bohica [...] ntlworld.com
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 1.48
Fixed in: 1.76



Subject: 31lob.t bad plan
Reported on behalf of Merijn (Tux on #dbi): Using DBI 1.622 (for perl 5.014001 on x86_64-linux-ld) installed in /pro/lib/perl5/site_perl/5.14.1/x86_64-linux-ld/auto/DBI/ Configuring DBD::Oracle for perl 5.014001 on linux (x86_64-linux-ld) Installing on a linux, Ver#2.6 Using Oracle in /usr/lib/oracle/11.2/client64 DEFINE _SQLPLUS_RELEASE = "1102000200" (CHAR) Oracle version 11.2.0.2 (11.2) client_version=11.2 Using DBD::Oracle 1.48. Using DBI 1.622 (for perl 5.014001 on x86_64-linux-ld) installed in /pro/lib/perl5/site_perl/5.14.1/x86_64-linux-ld/auto/DBI/ t/000-report-versions.t ... # Testing with Perl 5.014001, /pro/bin/perl5.14.1 t/000-report-versions.t ... 1/? # Carp version is 1.26 # Config version is undefined # DBI version is 1.622 # Data::Dumper version is 2.131 # Devel::Peek version is 1.07 # DynaLoader version is 1.13 # Encode version is 2.44 # Exporter version is 5.66 # ExtUtils::MakeMaker version is 6.62 # Math::BigInt version is 1.997 # Oraperl version is 1.44 # Scalar::Util version is 1.25 # Test::More version is 0.98 # Thread::Semaphore version is 2.12 # strict version is 1.04 # utf8 version is 1.09 # vars version is 1.02 # warnings version is 1.12 t/00versions.t ............ # OCI client library version: 11.2.0.2 t/00versions.t ............ 1/2 # database version: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production DBD-Oracle-1.48-B_5vMv 503 > prove -vwb t/31lob.t t/31lob.t .. 1..12 ok 1 - returned valid locator ok 2 - inserted into BLOB successfully ok 3 - got back what we put in ok 4 - returned valid locator ok 5 - returned valid locator ok 6 - returned initialized locator ok 7 - returned length ok 8 - returned written value ok 9 - returned length via PL/SQL # TODO problem reported w/ lobs and Oracle 11.2.*, see RT#69350 Errors in file : OCI-21500: internal error code, arguments: [kghufree_06], [0x000C76888], [0], [0], [0], [], [], [] ����������������������������������������������������������������������������������������������������������������������������������O���������������������������������������������������������g�O���������������������������������������������������������g�O���������������������������������������������������������g�OErrors in file : OCI-21500: internal error code, arguments: [kghufree_06], [0x000C76888], [0], [0], [0], [], [], [] ��i��T�i��T�i��T�i�����������������������������������������������������������������������������������������������������������������������������������O���������������������������������������������������������g�O���������������������������������������������������������g�O���������������������������������������������������������g�O Dubious, test returned 1 (wstat 256, 0x100) Failed 3/12 subtests (1 TODO test unexpectedly succeeded) Test Summary Report ------------------- t/31lob.t (Wstat: 256 Tests: 9 Failed: 0) TODO passed: 9 Non-zero exit status: 1 Parse errors: Bad plan. You planned 12 tests but ran 9. Files=1, Tests=9, 0 wallclock secs ( 0.03 usr 0.00 sys + 0.09 cusr 0.04 csys = 0.16 CPU) Result: FAIL Martin -- Martin J. Evans Wetherby, UK
The problem is not that the plan is bad, but that the test file died before it completed. According to the last reported test having passed, the death happened somewhere in: $dbh->{LongReadLen} = length($large_value) * 2; my $out; my $inout = lc $large_value; eval { $sth = $dbh->prepare( <<'END_SQL', { ora_auto_lob => 1 } ); DECLARE -- testing IN, OUT, and IN OUT: -- p_out will be set to LOWER(p_in) -- p_inout will be set to p_inout || p_in PROCEDURE lower_lob(p_in BLOB, p_out OUT BLOB, p_inout IN OUT BLOB) IS pos INT; buffer RAW(1024); BEGIN DBMS_LOB.CREATETEMPORARY(p_out, TRUE); pos := 1; WHILE pos <= DBMS_LOB.GETLENGTH(p_in) LOOP buffer := DBMS_LOB.SUBSTR(p_in, 1024, pos); DBMS_LOB.WRITEAPPEND(p_out, UTL_RAW.LENGTH(buffer), UTL_RAW.CAST_TO_RAW(LOWER(UTL_RAW.CAST_TO_VARCHAR2(buffer)))); DBMS_LOB.WRITEAPPEND(p_inout, UTL_RAW.LENGTH(buffer), buffer); pos := pos + 1024; END LOOP; END; BEGIN lower_lob(:in, :out, :inout); END; END_SQL $sth->bind_param( ':in', $large_value, { ora_type => ORA_BLOB }); $sth->bind_param_inout( ':out', \$out, 100, { ora_type => ORA_BLOB } ); $sth->bind_param_inout( ':inout', \$inout, 100, { ora_type => ORA_BLOB } ); $sth->execute; }; local $TODO = "problem reported w/ lobs and Oracle 11.2.*, see RT#69350" if ORA_OCI() =~ /^11\.2\./; skip "Your Oracle PL/SQL installation does not implement temporary LOBS", 3 if $dbh->err && $dbh->err == 6550;
This should be fixed now. Martin can you confirm?