diff --git a/lib/Listener/OptionalIndicesListener.php b/lib/Listener/OptionalIndicesListener.php index 7fe9a06d9b..d547046de5 100644 --- a/lib/Listener/OptionalIndicesListener.php +++ b/lib/Listener/OptionalIndicesListener.php @@ -54,6 +54,12 @@ public function handle(Event $event): void { ['structure_analyzed'] ); + $event->addMissingIndex( + 'mail_messages', + 'mail_msg_mb_del_snt_idx', + ['mailbox_id', 'flag_deleted', 'sent_at'], + ); + $event->addMissingIndex( 'mail_classifiers', 'mail_class_creat_idx', @@ -130,6 +136,12 @@ public function handle(Event $event): void { ['email', 'type', 'message_id'], false, ); + + $event->addMissingIndex( + 'mail_recipients', + 'mail_recip_local_msg_idx', + ['local_message_id'], + ); } } diff --git a/lib/Migration/Version1120Date20220223094709.php b/lib/Migration/Version1120Date20220223094709.php index ce8ccc9750..f395005cb3 100644 --- a/lib/Migration/Version1120Date20220223094709.php +++ b/lib/Migration/Version1120Date20220223094709.php @@ -75,6 +75,9 @@ public function changeSchema(IOutput $output, Closure $schemaClosure, array $opt ]); $recipientsTable->addForeignKeyConstraint($localMessageTable, ['local_message_id'], ['id'], ['onDelete' => 'CASCADE']); + // mail_recip_local_msg_idx was added later and may not exist until optional indices are created + $recipientsTable->addIndex(['local_message_id'], 'mail_recip_local_msg_idx'); + $attachmentsTable = $schema->getTable('mail_attachments'); $attachmentsTable->addColumn('local_message_id', Types::INTEGER, [ 'notnull' => false, diff --git a/lib/Migration/Version1130Date20220412111833.php b/lib/Migration/Version1130Date20220412111833.php index 5e5322e7c1..c314042563 100644 --- a/lib/Migration/Version1130Date20220412111833.php +++ b/lib/Migration/Version1130Date20220412111833.php @@ -173,6 +173,9 @@ public function changeSchema(IOutput $output, Closure $schemaClosure, array $opt $messagesTable->addIndex(['mailbox_id', 'thread_root_id', 'sent_at'], 'mail_msg_thrd_root_snt_idx', [], ['lengths' => [null, 64, null]]); } + // mail_msg_mb_del_snt_idx was added later and may not exist until optional indices are created + $messagesTable->addIndex(['mailbox_id', 'flag_deleted', 'sent_at'], 'mail_msg_mb_del_snt_idx'); + return $schema; }