Revision 33ba9950
Von Sven Schöling vor mehr als 14 Jahren hinzugefügt
SL/DBUtils.pm | ||
---|---|---|
147 | 147 |
|
148 | 148 |
my ($form, $dbh, $query) = splice(@_, 0, 3); |
149 | 149 |
|
150 |
my $sth = prepare_execute_query($form, $dbh, $query, @_); |
|
151 |
my $result = []; |
|
152 |
while (my $ref = $sth->fetchrow_hashref()) { |
|
153 |
push(@{ $result }, $ref); |
|
154 |
} |
|
155 |
$sth->finish(); |
|
150 |
dump_query(LXDebug->QUERY(), '', $query, @_); |
|
151 |
|
|
152 |
# this works back 'til at least DBI 1.46 on perl 5.8.4 on Debian Sarge (2004) |
|
153 |
my $result = $dbh->selectall_arrayref($query, { Slice => {} }, @_) |
|
154 |
or $form->dberror($query . (@_ ? " (" . join(", ", @_) . ")" : '')); |
|
156 | 155 |
|
157 | 156 |
$main::lxdebug->leave_sub(2); |
158 | 157 |
|
Auch abrufbar als: Unified diff
selectall_hashref_query umgestellt auf die DBI funktion selectall_arrayref.
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.