Skip to content

Commit 79b0b51

Browse files
committed
postgresql fixes
- cannot use a hash index for a unique constraint, sadly. - fix copy and paste typos in after delete trigger - fix copy and paste typo in nonce BLOB -> BYTEA
1 parent 77d16e7 commit 79b0b51

File tree

2 files changed

+8
-13
lines changed

2 files changed

+8
-13
lines changed

sogs/db.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -196,15 +196,11 @@ def add_new_tables(conn):
196196
"""
197197
CREATE TABLE user_request_nonces (
198198
"user" BIGINT NOT NULL REFERENCES users ON DELETE CASCADE,
199-
nonce BLOB NOT NULL,
199+
nonce BYTEA NOT NULL UNIQUE,
200200
expiry FLOAT NOT NULL DEFAULT (extract(epoch from now() + '24 hours'))
201201
)
202202
"""
203203
)
204-
conn.execute(
205-
"CREATE UNIQUE INDEX user_request_nonces_nonce"
206-
" ON user_request_nonces USING HASH (nonce)"
207-
)
208204
conn.execute("CREATE INDEX user_request_nonces_expiry ON user_request_nonces(expiry)")
209205

210206
added = True
@@ -426,9 +422,9 @@ def seqno_etc_updates(conn):
426422
DELETE FROM pinned_messages WHERE message = OLD.id;
427423
RETURN NULL;
428424
END;$$;
429-
CREATE TRIGGER messages_insert_history AFTER UPDATE OF data ON messages
430-
FOR EACH ROW WHEN (NEW.data IS DISTINCT FROM OLD.data)
431-
EXECUTE PROCEDURE trigger_messages_insert_history();
425+
CREATE TRIGGER messages_after_delete AFTER UPDATE OF data ON messages
426+
FOR EACH ROW WHEN (NEW.data IS NULL AND OLD.data IS NOT NULL)
427+
EXECUTE PROCEDURE trigger_messages_after_delete();
432428
433429
CREATE TRIGGER room_metadata_pinned_add AFTER INSERT OR UPDATE ON pinned_messages
434430
FOR EACH ROW

sogs/schema.pgsql

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,9 @@ RETURNS TRIGGER LANGUAGE PLPGSQL AS $$BEGIN
105105
DELETE FROM pinned_messages WHERE message = OLD.id;
106106
RETURN NULL;
107107
END;$$;
108-
CREATE TRIGGER messages_insert_history AFTER UPDATE OF data ON messages
109-
FOR EACH ROW WHEN (NEW.data IS DISTINCT FROM OLD.data)
110-
EXECUTE PROCEDURE trigger_messages_insert_history();
108+
CREATE TRIGGER messages_after_delete AFTER UPDATE OF data ON messages
109+
FOR EACH ROW WHEN (NEW.data IS NULL AND OLD.data IS NOT NULL)
110+
EXECUTE PROCEDURE trigger_messages_after_delete();
111111

112112

113113
CREATE TABLE files (
@@ -377,10 +377,9 @@ CREATE INDEX user_permissions_future_at ON user_permission_futures(at);
377377
-- Nonce tracking to prohibit request signature nonce reuse (thus prevent replay attacks)
378378
CREATE TABLE user_request_nonces (
379379
"user" BIGINT NOT NULL REFERENCES users ON DELETE CASCADE,
380-
nonce BYTEA NOT NULL,
380+
nonce BYTEA NOT NULL UNIQUE,
381381
expiry FLOAT NOT NULL DEFAULT (extract(epoch from now() + '24 hours'))
382382
);
383-
CREATE UNIQUE INDEX user_request_nonces_nonce ON user_request_nonces USING HASH (nonce);
384383
CREATE INDEX user_request_nonces_expiry ON user_request_nonces(expiry);
385384

386385

0 commit comments

Comments
 (0)