@@ -19,7 +19,6 @@ import (
1919 "context"
2020 "database/sql"
2121 "fmt"
22- "sort"
2322
2423 "github.com/lib/pq"
2524 "github.com/matrix-org/dendrite/internal"
@@ -71,12 +70,12 @@ type stateBlockStatements struct {
7170 bulkSelectStateBlockEntriesStmt * sql.Stmt
7271}
7372
74- func createStateBlockTable (db * sql.DB ) error {
73+ func CreateStateBlockTable (db * sql.DB ) error {
7574 _ , err := db .Exec (stateDataSchema )
7675 return err
7776}
7877
79- func prepareStateBlockTable (db * sql.DB ) (tables.StateBlock , error ) {
78+ func PrepareStateBlockTable (db * sql.DB ) (tables.StateBlock , error ) {
8079 s := & stateBlockStatements {}
8180
8281 return s , sqlutil.StatementList {
@@ -90,9 +89,9 @@ func (s *stateBlockStatements) BulkInsertStateData(
9089 entries types.StateEntries ,
9190) (id types.StateBlockNID , err error ) {
9291 entries = entries [:util .SortAndUnique (entries )]
93- var nids types.EventNIDs
94- for _ , e := range entries {
95- nids = append ( nids , e .EventNID )
92+ nids := make ( types.EventNIDs , entries . Len ())
93+ for i := range entries {
94+ nids [ i ] = entries [ i ] .EventNID
9695 }
9796 stmt := sqlutil .TxStmt (txn , s .insertStateDataStmt )
9897 err = stmt .QueryRowContext (
@@ -113,15 +112,15 @@ func (s *stateBlockStatements) BulkSelectStateBlockEntries(
113112
114113 results := make ([][]types.EventNID , len (stateBlockNIDs ))
115114 i := 0
115+ var stateBlockNID types.StateBlockNID
116+ var result pq.Int64Array
116117 for ; rows .Next (); i ++ {
117- var stateBlockNID types.StateBlockNID
118- var result pq.Int64Array
119118 if err = rows .Scan (& stateBlockNID , & result ); err != nil {
120119 return nil , err
121120 }
122- r := []types.EventNID {}
123- for _ , e := range result {
124- r = append ( r , types .EventNID (e ) )
121+ r := make ( []types.EventNID , len ( result ))
122+ for x := range result {
123+ r [ x ] = types .EventNID (result [ x ] )
125124 }
126125 results [i ] = r
127126 }
@@ -141,35 +140,3 @@ func stateBlockNIDsAsArray(stateBlockNIDs []types.StateBlockNID) pq.Int64Array {
141140 }
142141 return pq .Int64Array (nids )
143142}
144-
145- type stateKeyTupleSorter []types.StateKeyTuple
146-
147- func (s stateKeyTupleSorter ) Len () int { return len (s ) }
148- func (s stateKeyTupleSorter ) Less (i , j int ) bool { return s [i ].LessThan (s [j ]) }
149- func (s stateKeyTupleSorter ) Swap (i , j int ) { s [i ], s [j ] = s [j ], s [i ] }
150-
151- // Check whether a tuple is in the list. Assumes that the list is sorted.
152- func (s stateKeyTupleSorter ) contains (value types.StateKeyTuple ) bool {
153- i := sort .Search (len (s ), func (i int ) bool { return ! s [i ].LessThan (value ) })
154- return i < len (s ) && s [i ] == value
155- }
156-
157- // List the unique eventTypeNIDs and eventStateKeyNIDs.
158- // Assumes that the list is sorted.
159- func (s stateKeyTupleSorter ) typesAndStateKeysAsArrays () (eventTypeNIDs pq.Int64Array , eventStateKeyNIDs pq.Int64Array ) {
160- eventTypeNIDs = make (pq.Int64Array , len (s ))
161- eventStateKeyNIDs = make (pq.Int64Array , len (s ))
162- for i := range s {
163- eventTypeNIDs [i ] = int64 (s [i ].EventTypeNID )
164- eventStateKeyNIDs [i ] = int64 (s [i ].EventStateKeyNID )
165- }
166- eventTypeNIDs = eventTypeNIDs [:util .SortAndUnique (int64Sorter (eventTypeNIDs ))]
167- eventStateKeyNIDs = eventStateKeyNIDs [:util .SortAndUnique (int64Sorter (eventStateKeyNIDs ))]
168- return
169- }
170-
171- type int64Sorter []int64
172-
173- func (s int64Sorter ) Len () int { return len (s ) }
174- func (s int64Sorter ) Less (i , j int ) bool { return s [i ] < s [j ] }
175- func (s int64Sorter ) Swap (i , j int ) { s [i ], s [j ] = s [j ], s [i ] }
0 commit comments