From 9f4ffe4c815f8adfff23001e77dac062eb90e4a0 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Fri, 16 Apr 2021 16:41:43 +0100 Subject: [PATCH] Use pq arrays --- .../deltas/20210416150927_state_blocks_refactor.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/roomserver/storage/postgres/deltas/20210416150927_state_blocks_refactor.go b/roomserver/storage/postgres/deltas/20210416150927_state_blocks_refactor.go index b0f38957..80fa83e4 100644 --- a/roomserver/storage/postgres/deltas/20210416150927_state_blocks_refactor.go +++ b/roomserver/storage/postgres/deltas/20210416150927_state_blocks_refactor.go @@ -19,6 +19,7 @@ import ( "database/sql" "fmt" + "github.com/lib/pq" "github.com/matrix-org/dendrite/internal" "github.com/matrix-org/dendrite/internal/sqlutil" "github.com/matrix-org/dendrite/roomserver/types" @@ -70,10 +71,14 @@ func UpStateBlocksRefactor(tx *sql.Tx) error { for snapshotrows.Next() { var snapshot types.StateSnapshotNID var room types.RoomNID + var blocksarray pq.Int64Array var blocks []types.StateBlockNID - if err = snapshotrows.Scan(&snapshot, &room, &blocks); err != nil { + if err = snapshotrows.Scan(&snapshot, &room, &blocksarray); err != nil { return fmt.Errorf("rows.Scan: %w", err) } + for _, b := range blocksarray { + blocks = append(blocks, types.StateBlockNID(b)) + } var newblocks []types.StateBlockNID for _, block := range blocks { @@ -84,6 +89,7 @@ func UpStateBlocksRefactor(tx *sql.Tx) error { } defer internal.CloseAndLogIfError(context.TODO(), blockrows, "rows.close() failed") events := types.EventNIDs{} + var eventsarray pq.Int64Array for blockrows.Next() { var event types.EventNID if err = blockrows.Scan(&event); err != nil { @@ -91,6 +97,9 @@ func UpStateBlocksRefactor(tx *sql.Tx) error { } events = append(events, event) } + for _, e := range eventsarray { + events = append(events, types.EventNID(e)) + } events = events[:util.SortAndUnique(events)] var blocknid types.StateBlockNID