aboutsummaryrefslogtreecommitdiff
path: root/roomserver/storage/tables/interface.go
diff options
context:
space:
mode:
Diffstat (limited to 'roomserver/storage/tables/interface.go')
-rw-r--r--roomserver/storage/tables/interface.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/roomserver/storage/tables/interface.go b/roomserver/storage/tables/interface.go
index d228257b..58c43ac4 100644
--- a/roomserver/storage/tables/interface.go
+++ b/roomserver/storage/tables/interface.go
@@ -3,12 +3,15 @@ package tables
import (
"context"
"database/sql"
+ "errors"
"github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/gomatrixserverlib"
"github.com/tidwall/gjson"
)
+var OptimisationNotSupportedError = errors.New("optimisation not supported")
+
type EventJSONPair struct {
EventNID types.EventNID
EventJSON []byte
@@ -80,6 +83,10 @@ type Rooms interface {
type StateSnapshot interface {
InsertState(ctx context.Context, txn *sql.Tx, roomNID types.RoomNID, stateBlockNIDs types.StateBlockNIDs) (stateNID types.StateSnapshotNID, err error)
BulkSelectStateBlockNIDs(ctx context.Context, txn *sql.Tx, stateNIDs []types.StateSnapshotNID) ([]types.StateBlockNIDList, error)
+ // BulkSelectStateForHistoryVisibility is a PostgreSQL-only optimisation for finding
+ // which users are in a room faster than having to load the entire room state. In the
+ // case of SQLite, this will return tables.OptimisationNotSupportedError.
+ BulkSelectStateForHistoryVisibility(ctx context.Context, txn *sql.Tx, stateSnapshotNID types.StateSnapshotNID, domain string) ([]types.EventNID, error)
}
type StateBlock interface {