aboutsummaryrefslogtreecommitdiff
path: root/roomserver/storage/postgres/events_table.go
diff options
context:
space:
mode:
Diffstat (limited to 'roomserver/storage/postgres/events_table.go')
-rw-r--r--roomserver/storage/postgres/events_table.go64
1 files changed, 19 insertions, 45 deletions
diff --git a/roomserver/storage/postgres/events_table.go b/roomserver/storage/postgres/events_table.go
index c935608a..a00b4b1d 100644
--- a/roomserver/storage/postgres/events_table.go
+++ b/roomserver/storage/postgres/events_table.go
@@ -22,10 +22,9 @@ import (
"sort"
"github.com/lib/pq"
- "github.com/matrix-org/gomatrixserverlib"
-
"github.com/matrix-org/dendrite/internal"
"github.com/matrix-org/dendrite/internal/sqlutil"
+ "github.com/matrix-org/dendrite/roomserver/storage/postgres/deltas"
"github.com/matrix-org/dendrite/roomserver/storage/tables"
"github.com/matrix-org/dendrite/roomserver/types"
)
@@ -62,9 +61,6 @@ CREATE TABLE IF NOT EXISTS roomserver_events (
-- Needed for state resolution.
-- An event may only appear in this table once.
event_id TEXT NOT NULL CONSTRAINT roomserver_event_id_unique UNIQUE,
- -- The sha256 reference hash for the event.
- -- Needed for setting reference hashes when sending new events.
- reference_sha256 BYTEA NOT NULL,
-- A list of numeric IDs for events that can authenticate this event.
auth_event_nids BIGINT[] NOT NULL,
is_rejected BOOLEAN NOT NULL DEFAULT FALSE
@@ -75,10 +71,10 @@ CREATE INDEX IF NOT EXISTS roomserver_events_memberships_idx ON roomserver_event
`
const insertEventSQL = "" +
- "INSERT INTO roomserver_events AS e (room_nid, event_type_nid, event_state_key_nid, event_id, reference_sha256, auth_event_nids, depth, is_rejected)" +
- " VALUES ($1, $2, $3, $4, $5, $6, $7, $8)" +
+ "INSERT INTO roomserver_events AS e (room_nid, event_type_nid, event_state_key_nid, event_id, auth_event_nids, depth, is_rejected)" +
+ " VALUES ($1, $2, $3, $4, $5, $6, $7)" +
" ON CONFLICT ON CONSTRAINT roomserver_event_id_unique DO UPDATE" +
- " SET is_rejected = $8 WHERE e.event_id = $4 AND e.is_rejected = TRUE" +
+ " SET is_rejected = $7 WHERE e.event_id = $4 AND e.is_rejected = TRUE" +
" RETURNING event_nid, state_snapshot_nid"
const selectEventSQL = "" +
@@ -130,12 +126,9 @@ const selectEventIDSQL = "" +
"SELECT event_id FROM roomserver_events WHERE event_nid = $1"
const bulkSelectStateAtEventAndReferenceSQL = "" +
- "SELECT event_type_nid, event_state_key_nid, event_nid, state_snapshot_nid, event_id, reference_sha256" +
+ "SELECT event_type_nid, event_state_key_nid, event_nid, state_snapshot_nid, event_id" +
" FROM roomserver_events WHERE event_nid = ANY($1)"
-const bulkSelectEventReferenceSQL = "" +
- "SELECT event_id, reference_sha256 FROM roomserver_events WHERE event_nid = ANY($1)"
-
const bulkSelectEventIDSQL = "" +
"SELECT event_nid, event_id FROM roomserver_events WHERE event_nid = ANY($1)"
@@ -167,7 +160,6 @@ type eventStatements struct {
updateEventSentToOutputStmt *sql.Stmt
selectEventIDStmt *sql.Stmt
bulkSelectStateAtEventAndReferenceStmt *sql.Stmt
- bulkSelectEventReferenceStmt *sql.Stmt
bulkSelectEventIDStmt *sql.Stmt
bulkSelectEventNIDStmt *sql.Stmt
bulkSelectUnsentEventNIDStmt *sql.Stmt
@@ -178,7 +170,18 @@ type eventStatements struct {
func CreateEventsTable(db *sql.DB) error {
_, err := db.Exec(eventsSchema)
- return err
+ if err != nil {
+ return err
+ }
+
+ m := sqlutil.NewMigrator(db)
+ m.AddMigrations([]sqlutil.Migration{
+ {
+ Version: "roomserver: drop column reference_sha from roomserver_events",
+ Up: deltas.UpDropEventReferenceSHAEvents,
+ },
+ }...)
+ return m.Up(context.Background())
}
func PrepareEventsTable(db *sql.DB) (tables.Events, error) {
@@ -197,7 +200,6 @@ func PrepareEventsTable(db *sql.DB) (tables.Events, error) {
{&s.selectEventSentToOutputStmt, selectEventSentToOutputSQL},
{&s.selectEventIDStmt, selectEventIDSQL},
{&s.bulkSelectStateAtEventAndReferenceStmt, bulkSelectStateAtEventAndReferenceSQL},
- {&s.bulkSelectEventReferenceStmt, bulkSelectEventReferenceSQL},
{&s.bulkSelectEventIDStmt, bulkSelectEventIDSQL},
{&s.bulkSelectEventNIDStmt, bulkSelectEventNIDSQL},
{&s.bulkSelectUnsentEventNIDStmt, bulkSelectUnsentEventNIDSQL},
@@ -214,7 +216,6 @@ func (s *eventStatements) InsertEvent(
eventTypeNID types.EventTypeNID,
eventStateKeyNID types.EventStateKeyNID,
eventID string,
- referenceSHA256 []byte,
authEventNIDs []types.EventNID,
depth int64,
isRejected bool,
@@ -224,7 +225,7 @@ func (s *eventStatements) InsertEvent(
stmt := sqlutil.TxStmt(txn, s.insertEventStmt)
err := stmt.QueryRowContext(
ctx, int64(roomNID), int64(eventTypeNID), int64(eventStateKeyNID),
- eventID, referenceSHA256, eventNIDsAsArray(authEventNIDs), depth,
+ eventID, eventNIDsAsArray(authEventNIDs), depth,
isRejected,
).Scan(&eventNID, &stateNID)
return types.EventNID(eventNID), types.StateSnapshotNID(stateNID), err
@@ -441,11 +442,10 @@ func (s *eventStatements) BulkSelectStateAtEventAndReference(
eventNID int64
stateSnapshotNID int64
eventID string
- eventSHA256 []byte
)
for ; rows.Next(); i++ {
if err = rows.Scan(
- &eventTypeNID, &eventStateKeyNID, &eventNID, &stateSnapshotNID, &eventID, &eventSHA256,
+ &eventTypeNID, &eventStateKeyNID, &eventNID, &stateSnapshotNID, &eventID,
); err != nil {
return nil, err
}
@@ -455,32 +455,6 @@ func (s *eventStatements) BulkSelectStateAtEventAndReference(
result.EventNID = types.EventNID(eventNID)
result.BeforeStateSnapshotNID = types.StateSnapshotNID(stateSnapshotNID)
result.EventID = eventID
- result.EventSHA256 = eventSHA256
- }
- if err = rows.Err(); err != nil {
- return nil, err
- }
- if i != len(eventNIDs) {
- return nil, fmt.Errorf("storage: event NIDs missing from the database (%d != %d)", i, len(eventNIDs))
- }
- return results, nil
-}
-
-func (s *eventStatements) BulkSelectEventReference(
- ctx context.Context, txn *sql.Tx, eventNIDs []types.EventNID,
-) ([]gomatrixserverlib.EventReference, error) {
- rows, err := s.bulkSelectEventReferenceStmt.QueryContext(ctx, eventNIDsAsArray(eventNIDs))
- if err != nil {
- return nil, err
- }
- defer internal.CloseAndLogIfError(ctx, rows, "bulkSelectEventReference: rows.close() failed")
- results := make([]gomatrixserverlib.EventReference, len(eventNIDs))
- i := 0
- for ; rows.Next(); i++ {
- result := &results[i]
- if err = rows.Scan(&result.EventID, &result.EventSHA256); err != nil {
- return nil, err
- }
}
if err = rows.Err(); err != nil {
return nil, err