From e5d401024d529f9e07bb10663f048bcf487ec3a7 Mon Sep 17 00:00:00 2001 From: Ivan Dziuba Date: Wed, 4 Nov 2020 10:31:31 -0500 Subject: [PATCH] Bug_21214: Change of SQL request in condition $mail with letter_code and code modification --- misc/cronjobs/cleanup_database.pl | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/misc/cronjobs/cleanup_database.pl b/misc/cronjobs/cleanup_database.pl index a1612c25d5..a4cf1ec2b1 100755 --- a/misc/cronjobs/cleanup_database.pl +++ b/misc/cronjobs/cleanup_database.pl @@ -345,18 +345,18 @@ if ($mail) { my $count = 0; print "Mail queue purge triggered for $mail days.\n" if $verbose; print "Not deleting emails of type $letter_codes.\n" if ($verbose && $letter_codes); - my $query = q{ - DELETE FROM message_queue - WHERE time_queued < date_sub(curdate(), INTERVAL ? DAY) - AND letter_code NOT IN ( ? ) - }; - my $quoted_codes = ''; + my (@codes, $quoted_codes); if ($letter_codes) { - my @codes = map { "'$_'" } split(',', $letter_codes); - my $quoted_codes = join(',', @codes); + $letter_codes =~ s/ //g; + @codes = map { "$_" } split(',', $letter_codes); + $quoted_codes = join ",", ("?") x @codes; } - $sth = $dbh->prepare($query); - $sth->execute($mail, $quoted_codes) or die $dbh->errstr; + + $sth = $dbh->prepare(" + DELETE FROM message_queue + WHERE time_queued < date_sub(curdate(), INTERVAL ? DAY) + AND letter_code NOT IN ( $quoted_codes )"); + $sth->execute($mail, @codes) or die $dbh->errstr; $count = $sth->rows; $sth->finish; print "$count messages were deleted from the mail queue.\nDone with message_queue purge.\n" if $verbose; -- 2.34.1