aboutsummaryrefslogtreecommitdiff
path: root/roomserver/storage/postgres/events_table.go
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2020-03-27 16:28:22 +0000
committerGitHub <noreply@github.com>2020-03-27 16:28:22 +0000
commit05e1ae8745725245ee3b85a588000b0d26bae96c (patch)
treea54f2dfbc751fca5cf9b02327825bc7e9c340b3c /roomserver/storage/postgres/events_table.go
parent314da91f1dff5e4c3921b06180110e7a15b38f22 (diff)
Further room version wiring (#936)
* Room version 2 by default, other wiring updates, update gomatrixserverlib * Fix nil pointer exception * Fix some more nil pointer exceptions hopefully * Update gomatrixserverlib * Send all room versions when joining, not just stable ones * Remove room version cquery * Get room version when getting events from the roomserver database * Reset default back to room version 2 * Don't generate event IDs unless needed * Revert "Remove room version cquery" This reverts commit a170d5873360dd059614460acc8b21ab2cda9767. * Query room version in federation API, client API as needed * Improvements to make_join send_join dance * Make room server producers use headered events * Lint tweaks * Update gomatrixserverlib * Versioned SendJoin * Query room version in syncapi backfill * Handle transaction marshalling/unmarshalling within Dendrite * Sorta fix federation (kinda) * whoops commit federation API too * Use NewEventFromTrustedJSON when getting events from the database * Update gomatrixserverlib * Strip headers on federationapi endpoints * Fix bug in clientapi profile room version query * Update gomatrixserverlib * Return more useful error if room version query doesn't find the room * Update gomatrixserverlib * Update gomatrixserverlib * Maybe fix federation * Fix formatting directive * Update sytest whitelist and blacklist * Temporarily disable room versions 3 and 4 until gmsl is fixed * Fix count of EDUs in logging * Update gomatrixserverlib * Update gomatrixserverlib * Update gomatrixserverlib * Rely on EventBuilder in gmsl to generate the event IDs for us * Some review comments fixed * Move function out of common and into gmsl * Comment in federationsender destinationqueue * Update gomatrixserverlib
Diffstat (limited to 'roomserver/storage/postgres/events_table.go')
-rw-r--r--roomserver/storage/postgres/events_table.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/roomserver/storage/postgres/events_table.go b/roomserver/storage/postgres/events_table.go
index 0caa8199..ecc35f37 100644
--- a/roomserver/storage/postgres/events_table.go
+++ b/roomserver/storage/postgres/events_table.go
@@ -116,6 +116,9 @@ const bulkSelectEventNIDSQL = "" +
const selectMaxEventDepthSQL = "" +
"SELECT COALESCE(MAX(depth) + 1, 0) FROM roomserver_events WHERE event_nid = ANY($1)"
+const selectRoomNIDForEventNIDSQL = "" +
+ "SELECT room_nid FROM roomserver_events WHERE event_nid = $1"
+
type eventStatements struct {
insertEventStmt *sql.Stmt
selectEventStmt *sql.Stmt
@@ -130,6 +133,7 @@ type eventStatements struct {
bulkSelectEventIDStmt *sql.Stmt
bulkSelectEventNIDStmt *sql.Stmt
selectMaxEventDepthStmt *sql.Stmt
+ selectRoomNIDForEventNIDStmt *sql.Stmt
}
func (s *eventStatements) prepare(db *sql.DB) (err error) {
@@ -152,6 +156,7 @@ func (s *eventStatements) prepare(db *sql.DB) (err error) {
{&s.bulkSelectEventIDStmt, bulkSelectEventIDSQL},
{&s.bulkSelectEventNIDStmt, bulkSelectEventNIDSQL},
{&s.selectMaxEventDepthStmt, selectMaxEventDepthSQL},
+ {&s.selectRoomNIDForEventNIDStmt, selectRoomNIDForEventNIDSQL},
}.prepare(db)
}
@@ -417,6 +422,14 @@ func (s *eventStatements) selectMaxEventDepth(ctx context.Context, eventNIDs []t
return result, nil
}
+func (s *eventStatements) selectRoomNIDForEventNID(
+ ctx context.Context, txn *sql.Tx, eventNID types.EventNID,
+) (roomNID types.RoomNID, err error) {
+ selectStmt := common.TxStmt(txn, s.selectRoomNIDForEventNIDStmt)
+ err = selectStmt.QueryRowContext(ctx, int64(eventNID)).Scan(&roomNID)
+ return
+}
+
func eventNIDsAsArray(eventNIDs []types.EventNID) pq.Int64Array {
nids := make([]int64, len(eventNIDs))
for i := range eventNIDs {