View | Details | Raw Unified | Return to bug 23982
Collapse All | Expand All

(-)a/C4/Reports/Guided.pm (-11 / +28 lines)
Lines 425-443 sub nb_rows { Link Here
425
        $derived_name .= 'x';
425
        $derived_name .= 'x';
426
    }
426
    }
427
427
428
    my $sth = C4::Context->dbh->prepare(qq{
429
        SELECT COUNT(*) FROM
430
        ( $sql ) $derived_name
431
    });
432
428
433
    $sth->execute();
429
    my $dbh = C4::Context->dbh;
430
    my ( $sth, $n );
431
432
    my $RaiseError = $dbh->{RaiseError};
433
    my $PrintError = $dbh->{PrintError};
434
    $dbh->{RaiseError} = 1;
435
    $dbh->{PrintError} = 0;
436
    eval {
437
        $sth = $dbh->prepare(qq{
438
            SELECT COUNT(*) FROM
439
            ( $sql ) $derived_name
440
        });
434
441
435
    if ( $sth->errstr ) {
442
        $sth->execute();
436
        return 0;
443
    };
437
    }
444
    $dbh->{RaiseError} = $RaiseError;
438
    else {
445
    $dbh->{PrintError} = $PrintError;
439
       return $sth->fetch->[0];
446
    if ($@) { # To catch "Duplicate column name" caused by the derived table, or any other syntax error
447
        $sth = $dbh->prepare($sql);
448
        $sth->execute;
449
        # Loop through the complete results, fetching 1,000 rows at a time.  This
450
        # lowers memory requirements but increases execution time.
451
        while (my $rows = $sth->fetchall_arrayref(undef, 1000)) {
452
            $n += @$rows;
453
        }
454
        return $n;
440
    }
455
    }
456
457
    my $results = $sth->fetch;
458
    return $results ? $results->[0] : 0;
441
}
459
}
442
460
443
=head2 execute_query
461
=head2 execute_query
444
- 

Return to bug 23982