diff --git a/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/membership_table.go b/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/membership_table.go index 3b8d3531b..8c7b7b2c9 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/membership_table.go +++ b/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/membership_table.go @@ -50,15 +50,11 @@ const selectMembershipByEventIDSQL = "" + const selectMembershipsByLocalpartSQL = "" + "SELECT room_id FROM memberships WHERE localpart = $1" -const deleteMembershipSQL = "" + - "DELETE FROM memberships WHERE localpart = $1 AND room_id = $2" - const deleteMembershipsByEventIDsSQL = "" + "DELETE FROM memberships WHERE event_id = ANY($1)" type membershipStatements struct { deleteMembershipsByEventIDsStmt *sql.Stmt - deleteMembershipStmt *sql.Stmt insertMembershipStmt *sql.Stmt selectMembershipByEventIDStmt *sql.Stmt selectMembershipsByLocalpartStmt *sql.Stmt @@ -73,9 +69,6 @@ func (s *membershipStatements) prepare(db *sql.DB) (err error) { if s.deleteMembershipsByEventIDsStmt, err = db.Prepare(deleteMembershipsByEventIDsSQL); err != nil { return } - if s.deleteMembershipStmt, err = db.Prepare(deleteMembershipSQL); err != nil { - return - } if s.insertMembershipStmt, err = db.Prepare(insertMembershipSQL); err != nil { return } @@ -96,11 +89,6 @@ func (s *membershipStatements) insertMembership(localpart string, roomID string, return } -func (s *membershipStatements) deleteMembership(localpart string, roomID string, txn *sql.Tx) (err error) { - _, err = txn.Stmt(s.deleteMembershipStmt).Exec(localpart, roomID) - return -} - func (s *membershipStatements) deleteMembershipsByEventIDs(eventIDs []string, txn *sql.Tx) (err error) { _, err = txn.Stmt(s.deleteMembershipsByEventIDsStmt).Exec(pq.StringArray(eventIDs)) return diff --git a/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/storage.go b/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/storage.go index aa32512e1..909c4e7a5 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/storage.go +++ b/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/storage.go @@ -122,13 +122,6 @@ func (d *Database) SaveMembership(localpart string, roomID string, eventID strin return d.memberships.insertMembership(localpart, roomID, eventID, txn) } -// RemoveMembership removes the membership linking the user matching a given -// localpart and the room matching a given room ID. -// If the removal fails, or if there is no membership to remove, returns an error -func (d *Database) RemoveMembership(localpart string, roomID string, txn *sql.Tx) error { - return d.memberships.deleteMembership(localpart, roomID, txn) -} - // RemoveMembershipsByEventIDs removes the memberships of which the `join` membership // event ID is included in a given array of events IDs // If the removal fails, or if there is no membership to remove, returns an error diff --git a/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go b/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go index 2aa6a3e3d..ecad75ed2 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go +++ b/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go @@ -137,26 +137,17 @@ func (s *OutputRoomEvent) lookupStateEvents( result := []gomatrixserverlib.Event{} missing := []string{} for _, id := range addsStateEventIDs { - // Check if the event is already known - localpart, server, err := s.db.GetMembershipByEventID(id) - if err != nil { - return nil, err - } - - // Append the ID to the list to request so if it isn't in the database - if len(localpart) == 0 && len(server) == 0 { - missing = append(missing, id) - } - // Append the current event in the results if its ID is in the events list if id == event.EventID() { result = append(result, event) + } else { + // If the event isn't the current one, add it to the list of events + // to retrieve from the roomserver + missing = append(missing, id) } } - // At this point the missing events are neither the event itself nor are - // they present in our local database. Our only option is to fetch them - // from the roomserver using the query API. + // Request the missing events from the roomserver eventReq := api.QueryEventsByIDRequest{EventIDs: missing} var eventResp api.QueryEventsByIDResponse if err := s.query.QueryEventsByID(&eventReq, &eventResp); err != nil {