Merge pull request #542 from nicois/nicois/use-prepared-statement-for-bulk-writes

Use prepared statement for bulk writes
This commit is contained in:
Philipp C. Heckel 2022-12-12 09:51:42 -05:00 committed by GitHub
commit 40aadbad85
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -258,12 +258,23 @@ func (c *messageCache) addMessages(ms []*message) error {
if c.nop { if c.nop {
return nil return nil
} }
if len(ms) == 0 {
return nil
}
start := time.Now() start := time.Now()
tx, err := c.db.Begin() tx, err := c.db.Begin()
if err != nil { if err != nil {
return err return err
} }
defer tx.Rollback() defer tx.Rollback()
statement, err := tx.Prepare(
insertMessageQuery,
)
if err != nil {
return err
}
defer statement.Close()
for _, m := range ms { for _, m := range ms {
if m.Event != messageEvent { if m.Event != messageEvent {
return errUnexpectedMessageType return errUnexpectedMessageType
@ -291,8 +302,7 @@ func (c *messageCache) addMessages(ms []*message) error {
if m.Sender.IsValid() { if m.Sender.IsValid() {
sender = m.Sender.String() sender = m.Sender.String()
} }
_, err := tx.Exec( _, err := statement.Exec(
insertMessageQuery,
m.ID, m.ID,
m.Time, m.Time,
m.Topic, m.Topic,