Author: byterock
Date: Fri Apr 23 06:25:18 2010
New Revision: 13923
Modified:
dbd-oracle/trunk/Changes
dbd-oracle/trunk/oci8.c
dbd-oracle/trunk/t/55nested.t
Log:
Fix for rt.cpan.org Ticket #=56810 bug with multiple nested cursor from John Scoles
Seems you can fetch only one row at a time with nested cursor also expanded test 55 to test for 1 plus cursor
Modified: dbd-oracle/trunk/Changes
==============================================================================
--- dbd-oracle/trunk/Changes (original)
+++ dbd-oracle/trunk/Changes Fri Apr 23 06:25:18 2010
@@ -1,4 +1,10 @@
+=head1 Changes in DBD-Oracle 1.25(svn rev #####)
+
+ Fix for rt.cpan.org Ticket #=56810 bug with multiple nested cursor from John Scoles
+ Fix for Patch bug found only on Big-Endian hardware reported by Timothy Everett and others from Charles Jardine
+
=head1 Changes in DBD-Oracle 1.24(svn rev 13793)
+
Extended precision for OCIDateTimeToText to 6 instead of 0 for embedded types from John Scoles
Extended support of Oracle Embedded objects from Charles Jardine
Added support for RowsInCache as RO and RowCacheSize as a set-able value on the Statement Handle. So it would comply with DBI spec By John Scoles with thanks to Martin J. Evans
@@ -22,6 +28,7 @@
Fix for bug in 58object.t when test run as externally identified user from Charles Jardine
=head1 Changes in DBD-Oracle 1.23(svn rev 12724)
+
Fix from rt.cpan.org ticket #=44788 bool in_lite should be char in_literal
Fix for UTF8 and blobs by John Scoles with Milo van der Leij
Fix for some warnings and one bug in ocitrace.h from Charles Jardine
@@ -48,6 +55,7 @@
=head1 Changes in DBD-Oracle 1.22(svn rev 11618) 1st Aug 2008
+
Patch to remove compiler warnings from H.Merijn Brand
Patch to Makfile for 64bit boxes from Alex Laslavic
Added OCILobGetLength to lob functions from Milo van der Leij
Modified: dbd-oracle/trunk/oci8.c
==============================================================================
--- dbd-oracle/trunk/oci8.c (original)
+++ dbd-oracle/trunk/oci8.c Fri Apr 23 06:25:18 2010
@@ -2661,19 +2661,10 @@
void rs_array_init(imp_sth_t *imp_sth)
{
dTHX;
-/* if (imp_sth->rs_array_on!=1 ||
- imp_sth->rs_array_size<1 ||
- imp_sth->rs_array_size>128){
- imp_sth->rs_array_on=0;
- imp_sth->rs_array_size=1;
-
- }*/
imp_sth->rs_array_num_rows =0;
imp_sth->rs_array_idx =0;
imp_sth->rs_fetch_count =0;
- /*imp_sth->prefetch_rows =0;
- imp_sth->prefetch_memory =0;*/
imp_sth->rs_array_status =OCI_SUCCESS;
if (DBIS->debug >= 3 || dbd_verbose >= 3 )
@@ -2681,19 +2672,6 @@
}
-
-
-
-
-
-
-
-
-
-
-
-
-
static int /* --- Setup the row cache for this sth --- */
sth_set_row_cache(SV *h, imp_sth_t *imp_sth, int max_cache_rows, int num_fields, int has_longs)
{
@@ -2801,8 +2779,8 @@
imp_sth->rs_array_size=cache_rows;
- if (max_cache_rows){/* limited by a cursor or something else*/
- imp_sth->rs_array_size=max_cache_rows;
+ if (max_cache_rows){/* limited to 1 by a cursor or something else*/
+ imp_sth->rs_array_size=1;
}
Modified: dbd-oracle/trunk/t/55nested.t
==============================================================================
--- dbd-oracle/trunk/t/55nested.t (original)
+++ dbd-oracle/trunk/t/55nested.t Fri Apr 23 06:25:18 2010
@@ -15,7 +15,7 @@
my $dbh = DBI->connect($dsn, $dbuser, '', { PrintError => 0 });
if ($dbh) {
- plan tests=> 16;
+ plan tests=> 29;
} else {
plan skip_all =>"Unable to connect to Oracle as $dbuser ($DBI::errstr)\n";
}
@@ -48,6 +48,34 @@
ok($outer->finish, 'outer finish');
is($dbh->{ActiveKids}, 0, 'ActiveKids');
+#########################################################################
+# Same test again but this time with 2 cursors
+#########################################################################
+
+$outer = $dbh->prepare(q{
+ SELECT object_name,
+ CURSOR(SELECT object_name FROM dual),
+ CURSOR(SELECT object_name FROM dual)
+ FROM all_objects WHERE rownum <= 5});
+ok($outer, 'prepare select');
+
+ok( $outer->{ora_types}[1] == ORA_RSET, 'set ORA_RSET');
+ok( $outer->{ora_types}[2] == ORA_RSET, 'set ORA_RSET');
+ok( $outer->execute, 'outer execute');
+ok( @row1 = $outer->fetchrow_array, 'outer fetchrow');
+$inner1 = $row1[1];
+my $inner2 = $row1[2];
+is( ref $inner1, 'DBI::st', 'inner DBI::st');
+is( ref $inner2, 'DBI::st', 'inner DBI::st');
+
+ok( $inner1->{Active}, 'inner Active');
+ok( $inner2->{Active}, 'inner Active');
+ok( @row1_1 = $inner1->fetchrow_array, 'inner fetchrow_array');
+ok( my @row2_1 = $inner2->fetchrow_array, 'inner fetchrow_array');
+is( $row1[0], $row1_1[0], 'rows equal');
+is( $row1[0], $row2_1[0], 'rows equal');
+
+
#########################################################################
# Fetch speed test: START
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.