Fix SQLite

This commit is contained in:
Till Faelligen 2022-11-01 14:25:48 +01:00
parent 621326a5d6
commit ea2e5b132a
No known key found for this signature in database
GPG key ID: 3DF82D8AB9211D4E

View file

@ -23,7 +23,6 @@ import (
"sort" "sort"
"strings" "strings"
"github.com/lib/pq"
"github.com/matrix-org/gomatrixserverlib" "github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/dendrite/internal" "github.com/matrix-org/dendrite/internal"
@ -60,7 +59,7 @@ const selectEventSQL = "" +
"SELECT event_nid, state_snapshot_nid FROM roomserver_events WHERE event_id = $1" "SELECT event_nid, state_snapshot_nid FROM roomserver_events WHERE event_id = $1"
const bulkSelectSnapshotsForEventIDsSQL = "" + const bulkSelectSnapshotsForEventIDsSQL = "" +
"SELECT event_id, state_snapshot_nid FROM roomserver_events WHERE event_id = ANY($1)" "SELECT event_id, state_snapshot_nid FROM roomserver_events WHERE event_id IN ($1)"
// Bulk lookup of events by string ID. // Bulk lookup of events by string ID.
// Sort by the numeric IDs for event type and state key. // Sort by the numeric IDs for event type and state key.
@ -213,12 +212,23 @@ func (s *eventStatements) SelectEvent(
func (s *eventStatements) BulkSelectSnapshotsFromEventIDs( func (s *eventStatements) BulkSelectSnapshotsFromEventIDs(
ctx context.Context, txn *sql.Tx, eventIDs []string, ctx context.Context, txn *sql.Tx, eventIDs []string,
) (map[types.StateSnapshotNID][]string, error) { ) (map[types.StateSnapshotNID][]string, error) {
stmt := sqlutil.TxStmt(txn, s.bulkSelectSnapshotsForEventIDsStmt) qry := strings.Replace(bulkSelectSnapshotsForEventIDsSQL, "($1)", sqlutil.QueryVariadic(len(eventIDs)), 1)
stmt, err := s.db.Prepare(qry)
rows, err := stmt.QueryContext(ctx, pq.Array(eventIDs))
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer internal.CloseAndLogIfError(ctx, stmt, "BulkSelectSnapshotsFromEventIDs: stmt.close() failed")
params := make([]interface{}, len(eventIDs))
for i := range eventIDs {
params[i] = eventIDs[i]
}
rows, err := stmt.QueryContext(ctx, params...)
if err != nil {
return nil, err
}
defer internal.CloseAndLogIfError(ctx, rows, "BulkSelectSnapshotsFromEventIDs: rows.close() failed")
var eventID string var eventID string
var stateNID types.StateSnapshotNID var stateNID types.StateSnapshotNID