Forces the use of the index on Addressables and Replaceables
This commit is contained in:
+4
-1
@@ -36,6 +36,8 @@ class AddressableModule : IModule {
|
|||||||
// if a newer addressable is inserted the unique index
|
// if a newer addressable is inserted the unique index
|
||||||
// above will be triggered. Delete cascade will take
|
// above will be triggered. Delete cascade will take
|
||||||
// care of the event_tags table
|
// care of the event_tags table
|
||||||
|
// the duplicate: kind >= 30000 AND kind < 40000
|
||||||
|
// helps SQLlite find the index above
|
||||||
db.execSQL(
|
db.execSQL(
|
||||||
"""
|
"""
|
||||||
CREATE TRIGGER delete_older_addressable_event
|
CREATE TRIGGER delete_older_addressable_event
|
||||||
@@ -48,7 +50,8 @@ class AddressableModule : IModule {
|
|||||||
event_headers.kind = NEW.kind AND
|
event_headers.kind = NEW.kind AND
|
||||||
event_headers.pubkey = NEW.pubkey AND
|
event_headers.pubkey = NEW.pubkey AND
|
||||||
event_headers.d_tag = NEW.d_tag AND
|
event_headers.d_tag = NEW.d_tag AND
|
||||||
event_headers.created_at < NEW.created_at;
|
event_headers.created_at < NEW.created_at AND
|
||||||
|
event_headers.kind >= 30000 AND event_headers.kind < 40000;
|
||||||
END;
|
END;
|
||||||
""".trimIndent(),
|
""".trimIndent(),
|
||||||
)
|
)
|
||||||
|
|||||||
+4
-3
@@ -28,7 +28,7 @@ class ReplaceableModule : IModule {
|
|||||||
"""
|
"""
|
||||||
CREATE UNIQUE INDEX replaceable_idx
|
CREATE UNIQUE INDEX replaceable_idx
|
||||||
ON event_headers (kind, pubkey)
|
ON event_headers (kind, pubkey)
|
||||||
WHERE (kind >= 10000 AND kind < 20000) OR (kind IN (0, 3))
|
WHERE (kind IN (0, 3)) OR (kind >= 10000 AND kind < 20000)
|
||||||
""".trimIndent(),
|
""".trimIndent(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -41,14 +41,15 @@ class ReplaceableModule : IModule {
|
|||||||
CREATE TRIGGER delete_older_replaceable_event
|
CREATE TRIGGER delete_older_replaceable_event
|
||||||
BEFORE INSERT ON event_headers
|
BEFORE INSERT ON event_headers
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
WHEN (NEW.kind >= 10000 AND NEW.kind < 20000) OR (NEW.kind IN (0, 3))
|
WHEN (NEW.kind IN (0, 3)) OR (NEW.kind >= 10000 AND NEW.kind < 20000)
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Delete older records if this is the newest
|
-- Delete older records if this is the newest
|
||||||
DELETE FROM event_headers
|
DELETE FROM event_headers
|
||||||
WHERE
|
WHERE
|
||||||
event_headers.kind = NEW.kind AND
|
event_headers.kind = NEW.kind AND
|
||||||
event_headers.pubkey = NEW.pubkey AND
|
event_headers.pubkey = NEW.pubkey AND
|
||||||
event_headers.created_at < NEW.created_at;
|
event_headers.created_at < NEW.created_at AND
|
||||||
|
((event_headers.kind IN (0, 3)) OR (event_headers.kind >= 10000 AND event_headers.kind < 20000));
|
||||||
END;
|
END;
|
||||||
""".trimIndent(),
|
""".trimIndent(),
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user