Skip to content

Commit

Permalink
fix(GODT-2933): Add index to message flags
Browse files Browse the repository at this point in the history
Should improve performance in join operation and general lookups.
  • Loading branch information
LBeernaertProton committed Dec 27, 2023
1 parent caaf108 commit 53774d4
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
2 changes: 2 additions & 0 deletions internal/db_impl/sqlite3/migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
v0 "github.com/ProtonMail/gluon/internal/db_impl/sqlite3/v0"
v1 "github.com/ProtonMail/gluon/internal/db_impl/sqlite3/v1"
v2 "github.com/ProtonMail/gluon/internal/db_impl/sqlite3/v2"
v3 "github.com/ProtonMail/gluon/internal/db_impl/sqlite3/v3"
"github.com/sirupsen/logrus"
)

Expand All @@ -22,6 +23,7 @@ var migrationList = []Migration{
&v0.Migration{},
&v1.Migration{},
&v2.Migration{},
&v3.Migration{},
}

func RunMigrations(ctx context.Context, tx utils.QueryWrapper, generator imap.UIDValidityGenerator) error {
Expand Down
26 changes: 26 additions & 0 deletions internal/db_impl/sqlite3/v3/migration.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package v3

import (
"context"
"fmt"
v1 "github.com/ProtonMail/gluon/internal/db_impl/sqlite3/v1"

"github.com/ProtonMail/gluon/imap"
"github.com/ProtonMail/gluon/internal/db_impl/sqlite3/utils"
)

type Migration struct{}

func (m Migration) Run(ctx context.Context, tx utils.QueryWrapper, _ imap.UIDValidityGenerator) error {
// Create an index on message id field to speed up lookup queries for message flags.
query := fmt.Sprintf("create index message_flags_message_id_index on %v (%v)",
v1.MessageFlagsTableName,
v1.MessageFlagsFieldMessageID,
)

if _, err := utils.ExecQuery(ctx, tx, query); err != nil {
return fmt.Errorf("failed to create connector settings table: %w", err)
}

return nil
}

0 comments on commit 53774d4

Please sign in to comment.