Mit einem bestimmten Parameter tut diese genau das gleiche wie die
selectall_hashref, was zur Folge hat, das ein Großteil des Overheads der
Datenbankkommunikation gespart oder nach XS ausgelagert wird. Grosse Requests
mit sehr viel Datenbankzugriff (Schwalfenberg Fall) sind gut 25% schneller
damit.
Der Slice Parameter sollte mindestens auf Debian Sarge und darauf basierenden
Distributionen funktionieren, davor habe ich nicht nachgeschaut.
my ($form, $dbh, $query) = splice(@_, 0, 3);
my ($form, $dbh, $query) = splice(@_, 0, 3);
- my $sth = prepare_execute_query($form, $dbh, $query, @_);
- my $result = [];
- while (my $ref = $sth->fetchrow_hashref()) {
- push(@{ $result }, $ref);
- }
- $sth->finish();
+ dump_query(LXDebug->QUERY(), '', $query, @_);
+
+ # this works back 'til at least DBI 1.46 on perl 5.8.4 on Debian Sarge (2004)
+ my $result = $dbh->selectall_arrayref($query, { Slice => {} }, @_)
+ or $form->dberror($query . (@_ ? " (" . join(", ", @_) . ")" : ''));
$main::lxdebug->leave_sub(2);
$main::lxdebug->leave_sub(2);