Make euph_trees a table instead of a view
This commit is contained in:
parent
b30adaf17c
commit
6facbd5c96
2 changed files with 27 additions and 13 deletions
|
|
@ -301,6 +301,28 @@ impl EuphRequest {
|
||||||
])?;
|
])?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update euph_trees
|
||||||
|
tx.execute_batch(
|
||||||
|
"
|
||||||
|
DELETE FROM euph_trees;
|
||||||
|
|
||||||
|
INSERT INTO euph_trees (room, id)
|
||||||
|
SELECT room, id
|
||||||
|
FROM euph_msgs
|
||||||
|
WHERE parent IS NULL
|
||||||
|
UNION
|
||||||
|
SELECT room, parent
|
||||||
|
FROM euph_msgs
|
||||||
|
WHERE parent IS NOT NULL
|
||||||
|
AND NOT EXISTS(
|
||||||
|
SELECT *
|
||||||
|
FROM euph_msgs AS parents
|
||||||
|
WHERE parents.room = euph_msgs.room
|
||||||
|
AND parents.id = euph_msgs.parent
|
||||||
|
);
|
||||||
|
",
|
||||||
|
)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,19 +60,11 @@ fn m1(tx: &mut Transaction) -> rusqlite::Result<()> {
|
||||||
CHECK (start IS NULL OR end IS NOT NULL)
|
CHECK (start IS NULL OR end IS NOT NULL)
|
||||||
) STRICT;
|
) STRICT;
|
||||||
|
|
||||||
CREATE VIEW euph_trees (room, id) AS
|
CREATE TABLE euph_trees (
|
||||||
SELECT room, id
|
room TEXT NOT NULL,
|
||||||
FROM euph_msgs
|
id INT NOT NULL,
|
||||||
WHERE parent IS NULL
|
|
||||||
UNION
|
PRIMARY KEY (room, id)
|
||||||
SELECT *
|
|
||||||
FROM (
|
|
||||||
SELECT room, parent
|
|
||||||
FROM euph_msgs
|
|
||||||
WHERE parent IS NOT NULL
|
|
||||||
EXCEPT
|
|
||||||
SELECT room, id
|
|
||||||
FROM euph_msgs
|
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE INDEX euph_idx_msgs_room_id_parent
|
CREATE INDEX euph_idx_msgs_room_id_parent
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue