From 7169d0d2e4cc8ab7b54ca15275feeee362ac4126 Mon Sep 17 00:00:00 2001 From: S7evinK Date: Mon, 9 Nov 2020 17:31:05 +0100 Subject: [PATCH] Revert "Add postgres migration" This reverts commit 722fe5a04628882b787d096942459961db159b06. --- .../20201017140347_create_receipt_table.go | 46 ----------------- syncapi/storage/postgres/receipt_table.go | 12 ++--- syncapi/storage/postgres/syncserver.go | 51 +++++-------------- 3 files changed, 17 insertions(+), 92 deletions(-) delete mode 100644 syncapi/storage/postgres/deltas/20201017140347_create_receipt_table.go diff --git a/syncapi/storage/postgres/deltas/20201017140347_create_receipt_table.go b/syncapi/storage/postgres/deltas/20201017140347_create_receipt_table.go deleted file mode 100644 index 12925b299..000000000 --- a/syncapi/storage/postgres/deltas/20201017140347_create_receipt_table.go +++ /dev/null @@ -1,46 +0,0 @@ -package deltas - -import ( - "database/sql" - "fmt" - - "github.com/matrix-org/dendrite/internal/sqlutil" - "github.com/pressly/goose" -) - -func LoadFromGoose() { - goose.AddMigration(UpCreateReceiptTable, DownCreateReceiptTable) -} - -func LoadCreateReceiptTable(m *sqlutil.Migrations) { - m.AddMigration(UpCreateReceiptTable, DownCreateReceiptTable) -} - -func UpCreateReceiptTable(tx *sql.Tx) error { - _, err := tx.Exec(` --- Stores data about receipts -CREATE TABLE IF NOT EXISTS syncapi_receipts ( - -- The ID - id BIGINT PRIMARY KEY DEFAULT nextval('syncapi_stream_id'), - room_id TEXT NOT NULL, - receipt_type TEXT NOT NULL, - user_id TEXT NOT NULL, - event_id TEXT NOT NULL, - receipt_ts BIGINT NOT NULL, - CONSTRAINT syncapi_receipts_unique UNIQUE (room_id, receipt_type, user_id) -); -CREATE INDEX IF NOT EXISTS syncapi_receipts_room_id ON syncapi_receipts(room_id); -`) - if err != nil { - return fmt.Errorf("failed to execute upgrade: %w", err) - } - return nil -} - -func DownCreateReceiptTable(tx *sql.Tx) error { - _, err := tx.Exec("DROP TABLE IF EXISTS syncapi_receipts;") - if err != nil { - return fmt.Errorf("failed to execute downgrade: %w", err) - } - return nil -} diff --git a/syncapi/storage/postgres/receipt_table.go b/syncapi/storage/postgres/receipt_table.go index 68dba5559..e57a396fa 100644 --- a/syncapi/storage/postgres/receipt_table.go +++ b/syncapi/storage/postgres/receipt_table.go @@ -55,7 +55,7 @@ const upsertReceipt = "" + const selectRoomReceipts = "" + "SELECT room_id, receipt_type, user_id, event_id, receipt_ts" + " FROM syncapi_receipts" + - " WHERE room_id = ANY($1) AND id > $2" + " WHERE room_id in $1 AND id > $2" type receiptStatements struct { db *sql.DB @@ -64,7 +64,10 @@ type receiptStatements struct { } func NewPostgresReceiptsTable(db *sql.DB) (tables.Receipts, error) { - var err error + _, err := db.Exec(receiptsSchema) + if err != nil { + return nil, err + } r := &receiptStatements{ db: db, } @@ -77,11 +80,6 @@ func NewPostgresReceiptsTable(db *sql.DB) (tables.Receipts, error) { return r, nil } -func (r *receiptStatements) execSchema(db *sql.DB) error { - _, err := db.Exec(receiptsSchema) - return err -} - func (r *receiptStatements) UpsertReceipt(ctx context.Context, txn *sql.Tx, roomId, receiptType, userId, eventId string, timestamp gomatrixserverlib.Timestamp) (pos types.StreamPosition, err error) { stmt := sqlutil.TxStmt(txn, r.upsertReceipt) err = stmt.QueryRowContext(ctx, roomId, receiptType, userId, eventId, timestamp).Scan(&pos) diff --git a/syncapi/storage/postgres/syncserver.go b/syncapi/storage/postgres/syncserver.go index e55c49bb1..a50f5a0ce 100644 --- a/syncapi/storage/postgres/syncserver.go +++ b/syncapi/storage/postgres/syncserver.go @@ -20,11 +20,9 @@ import ( // Import the postgres database driver. _ "github.com/lib/pq" - "github.com/matrix-org/dendrite/eduserver/cache" "github.com/matrix-org/dendrite/internal/config" "github.com/matrix-org/dendrite/internal/sqlutil" - "github.com/matrix-org/dendrite/syncapi/storage/postgres/deltas" "github.com/matrix-org/dendrite/syncapi/storage/shared" ) @@ -47,73 +45,48 @@ func NewDatabase(dbProperties *config.DatabaseOptions) (*SyncServerDatasource, e return nil, err } d.writer = sqlutil.NewDummyWriter() - - // Make sure the required sequence, for most tables, exists. Must be executed before anything else. - if _, err = d.db.Exec(createSequence); err != nil { - return nil, err - } - - // Create tables before executing migrations so we don't fail if the table is missing, - // and THEN prepare statements so we don't fail due to referencing new columns - r := receiptStatements{} - if err = r.execSchema(d.db); err != nil { - return nil, err - } - m := sqlutil.NewMigrations() - deltas.LoadCreateReceiptTable(m) - if err = m.RunDeltas(d.db, dbProperties); err != nil { - return nil, err - } - if err = d.prepare(); err != nil { - return nil, err - } - - return &d, nil -} - -func (d *SyncServerDatasource) prepare() (err error) { if err = d.PartitionOffsetStatements.Prepare(d.db, d.writer, "syncapi"); err != nil { - return err + return nil, err } accountData, err := NewPostgresAccountDataTable(d.db) if err != nil { - return err + return nil, err } events, err := NewPostgresEventsTable(d.db) if err != nil { - return err + return nil, err } currState, err := NewPostgresCurrentRoomStateTable(d.db) if err != nil { - return err + return nil, err } invites, err := NewPostgresInvitesTable(d.db) if err != nil { - return err + return nil, err } peeks, err := NewPostgresPeeksTable(d.db) if err != nil { - return err + return nil, err } topology, err := NewPostgresTopologyTable(d.db) if err != nil { - return err + return nil, err } backwardExtremities, err := NewPostgresBackwardsExtremitiesTable(d.db) if err != nil { - return err + return nil, err } sendToDevice, err := NewPostgresSendToDeviceTable(d.db) if err != nil { - return err + return nil, err } filter, err := NewPostgresFilterTable(d.db) if err != nil { - return err + return nil, err } receipts, err := NewPostgresReceiptsTable(d.db) if err != nil { - return err + return nil, err } d.Database = shared.Database{ DB: d.db, @@ -130,5 +103,5 @@ func (d *SyncServerDatasource) prepare() (err error) { Receipts: receipts, EDUCache: cache.New(), } - return nil + return &d, nil }