On 18/02/2020 07:57, JohnD Blackburn wrote:
After reviewing the log4perl output from DBIx when running this script I found 
the following perl module being executed:

/usr/local/lib64/perl5/DBD/Oracle.pm

Which contains the following subroutine:

     sub execute_for_fetch {
        my ($sth, $fetch_tuple_sub, $tuple_status) = @_;
        my $row_count = 0;
        my $err_total = 0;
        my $tuple_count="0E0";
        my $tuple_batch_status;
        my $dbh = $sth->{Database};
        my $batch_size =($dbh->{'ora_array_chunk_size'}||= 1000);
        if(defined($tuple_status)) {
            @$tuple_status = ();
            $tuple_batch_status = [ ];
        }

        my $finished;
        while (1) {
            my @tuple_batch;
            for (my $i = 0; $i < $batch_size; $i++) {
                $finished = $fetch_tuple_sub->();
                push @tuple_batch, [@{$finished || last}];

            }
            last unless @tuple_batch;

            my $err_count = 0;
            my $res = ora_execute_array($sth,
                                            \@tuple_batch,
                                            scalar(@tuple_batch),
                                            $tuple_batch_status,
                                            $err_count );

            if (defined($res)) { #no error
                 $row_count += $res;
            }
            else {
                 $row_count = undef;
            }

            $err_total += $err_count;

            $tuple_count+=@tuple_batch;
            push @$tuple_status, @$tuple_batch_status
                 if defined($tuple_status);

            last if !$finished;

        }
        #error check here
        return $sth->set_err($DBI::stderr, "executing $tuple_count generated 
$err_total errors")
                   if $err_total;

        return wantarray
                 ? ($tuple_count, defined $row_count ? $row_count : undef)
                 : $tuple_count;

     }



Is that "while(1)" loop a potential contender for causing this?


Not unless you are using execute_array. The code you posted didn't look like it was.

Martin

--
Martin J. Evans
Wetherby, UK

Reply via email to