ircd:Ⓜ️:dbs: Add present state queries on delete operations; move branches for clarity.

This commit is contained in:
Jason Volk 2023-02-10 12:39:57 -08:00
parent 0fdeda3743
commit ccfc05709f
5 changed files with 35 additions and 18 deletions

View File

@ -315,17 +315,14 @@ ircd::m::dbs::_index_room(db::txn &txn,
if(opts.appendix.test(appendix::ROOM_HEAD_RESOLVE))
_index_room_head_resolve(txn, event, opts);
if(defined(json::get<"state_key"_>(event)))
{
if(opts.appendix.test(appendix::ROOM_STATE))
_index_room_state(txn, event, opts);
if(opts.appendix.test(appendix::ROOM_STATE))
_index_room_state(txn, event, opts);
if(opts.appendix.test(appendix::ROOM_STATE_SPACE))
_index_room_state_space(txn, event, opts);
if(opts.appendix.test(appendix::ROOM_STATE_SPACE))
_index_room_state_space(txn, event, opts);
if(opts.appendix.test(appendix::ROOM_JOINED) && at<"type"_>(event) == "m.room.member")
_index_room_joined(txn, event, opts);
}
if(opts.appendix.test(appendix::ROOM_JOINED) && at<"type"_>(event) == "m.room.member")
_index_room_joined(txn, event, opts);
if(opts.appendix.test(appendix::ROOM_REDACT) && json::get<"type"_>(event) == "m.room.redaction")
_index_room_redact(txn, event, opts);
@ -350,17 +347,14 @@ ircd::m::dbs::_prefetch_room(const event &event,
if(opts.appendix.test(appendix::ROOM_HEAD_RESOLVE))
;//ret += _prefetch_room_head_resolve(event, opts);
if(defined(json::get<"state_key"_>(event)))
{
if(opts.appendix.test(appendix::ROOM_STATE))
;//ret += _prefetch_room_state(event, opts);
if(opts.appendix.test(appendix::ROOM_STATE))
;//ret += _prefetch_room_state(event, opts);
if(opts.appendix.test(appendix::ROOM_STATE_SPACE))
;//ret += _prefetch_room_state_space(event, opts);
if(opts.appendix.test(appendix::ROOM_STATE_SPACE))
;//ret += _prefetch_room_state_space(event, opts);
if(opts.appendix.test(appendix::ROOM_JOINED) && at<"type"_>(event) == "m.room.member")
;//ret += _prefetch_room_joined(event, opts);
}
if(opts.appendix.test(appendix::ROOM_JOINED) && at<"type"_>(event) == "m.room.member")
;//ret += _prefetch_room_joined(event, opts);
if(opts.appendix.test(appendix::ROOM_REDACT) && json::get<"type"_>(event) == "m.room.redaction")
ret += _prefetch_room_redact(event, opts);

View File

@ -113,6 +113,7 @@ ircd::m::dbs::_index_event_state(db::txn &txn,
assert(json::get<"type"_>(event));
assert(opts.event_idx);
// Ignore non-state
if(!defined(json::get<"state_key"_>(event)))
return;

View File

@ -154,6 +154,15 @@ ircd::m::dbs::_index_room_joined(db::txn &txn,
assert(opts.appendix.test(appendix::ROOM_JOINED));
assert(at<"type"_>(event) == "m.room.member");
// Ignore non-state
if(!defined(json::get<"state_key"_>(event)))
return;
// Ignore non-present state (similar to room_state)
if(opts.op == db::op::DELETE)
if(!room::state::present(opts.event_idx))
return;
thread_local char buf[ROOM_JOINED_KEY_MAX_SIZE];
const ctx::critical_assertion ca;
const string_view &key

View File

@ -161,6 +161,15 @@ ircd::m::dbs::_index_room_state(db::txn &txn,
{
assert(opts.appendix.test(appendix::ROOM_STATE));
// Ignore non-state
if(!defined(json::get<"state_key"_>(event)))
return;
// Ignore non-present state (likely coming from an event purge)
if(opts.op == db::op::DELETE)
if(!room::state::present(opts.event_idx))
return;
const ctx::critical_assertion ca;
thread_local char buf[ROOM_STATE_KEY_MAX_SIZE];
const string_view &key

View File

@ -161,6 +161,10 @@ ircd::m::dbs::_index_room_state_space(db::txn &txn,
{
assert(opts.appendix.test(appendix::ROOM_STATE_SPACE));
// Ignore non-state
if(!defined(json::get<"state_key"_>(event)))
return;
const ctx::critical_assertion ca;
thread_local char buf[ROOM_STATE_SPACE_KEY_MAX_SIZE];
const string_view &key