Historien Suchmaschine: Stacküberlauf vermeiden
authorMartin Helmling martin.helmling@octosoft.eu <martin.helmling@octosoft.eu>
Fri, 20 Jan 2017 08:44:19 +0000 (09:44 +0100)
committerMartin Helmling martin.helmling@octosoft.eu <martin.helmling@octosoft.eu>
Fri, 20 Jan 2017 08:44:19 +0000 (09:44 +0100)
Die Fehlermeldung
    'DBD::Pg::st execute failed: ERROR:  stack depth limit exceeded' wird durch
    Anpassung des queries vermieden

statt:
    WHERE (trans_id = 2088 OR trans_id=2090 OR trans_id=2092 ... (10000 fach)

nun:

    WHERE (trans_id = 2088 OR trans_id IN (2090,2092,2094, ...

bin/mozilla/am.pl

index cf5eeb1..af30987 100644 (file)
@@ -1257,8 +1257,9 @@ sub show_am_history {
 
   my @ids    = grep { $_ * 1 } selectall_array_query($form, $dbh, $query);
   my $daten .= shift @ids;
-  $daten    .= join '', map { " OR trans_id = $_" } @ids;
-
+  if (scalar(@ids) > 0 ) {
+    $daten  .= ' OR trans_id IN (' . join(',', @ids) . ')';
+  }
   my ($sort, $sortby) = split(/\-\-/, $form->{order});
   $sort =~ s/.*\.(.*)$/$1/;