0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-07-01 00:08:22 +02:00

ircd:Ⓜ️:dbs: Fix the _room_state_space key composite.

This commit is contained in:
Jason Volk 2019-06-16 00:58:43 -07:00
parent b5a61a7a6b
commit 6443fad43c

View file

@ -3101,34 +3101,12 @@ ircd::m::dbs::room_state_space_key(const mutable_buffer &out_,
{ {
mutable_buffer out{out_}; mutable_buffer out{out_};
consume(out, copy(out, room_id)); consume(out, copy(out, room_id));
if(!defined(type))
return { data(out_), data(out) };
consume(out, copy(out, "\0"_sv)); consume(out, copy(out, "\0"_sv));
consume(out, copy(out, type)); consume(out, copy(out, type));
if(!defined(state_key))
{
assert(depth < 0L && !event_idx);
return { data(out_), data(out) };
}
consume(out, copy(out, "\0"_sv)); consume(out, copy(out, "\0"_sv));
consume(out, copy(out, state_key)); consume(out, copy(out, state_key));
if(depth < 0)
{
assert(!event_idx);
return { data(out_), data(out) };
}
consume(out, copy(out, "\0"_sv)); consume(out, copy(out, "\0"_sv));
consume(out, copy(out, byte_view<string_view>(depth))); consume(out, copy(out, byte_view<string_view>(depth)));
if(!event_idx)
return { data(out_), data(out) };
consume(out, copy(out, byte_view<string_view>(event_idx))); consume(out, copy(out, byte_view<string_view>(event_idx)));
return { data(out_), data(out) }; return { data(out_), data(out) };
} }
@ -3165,14 +3143,14 @@ ircd::m::dbs::room_state_space_key(const string_view &amalgam)
{ {
size(state_key_split.second) >= 8? size(state_key_split.second) >= 8?
int64_t(byte_view<int64_t>(state_key_split.second.substr(0, 8))): int64_t(byte_view<int64_t>(state_key_split.second.substr(0, 8))):
0L -1L
}; };
const event::idx &event_idx const event::idx &event_idx
{ {
size(state_key_split.second) >= 16? size(state_key_split.second) >= 16?
event::idx(byte_view<event::idx>(state_key_split.second.substr(8, 8))): event::idx(byte_view<event::idx>(state_key_split.second.substr(8, 8))):
0L 0UL
}; };
return return
@ -3255,9 +3233,9 @@ ircd::m::dbs::desc::events__room_state_space__cmp
return false; return false;
// depth (ORDER IS DESCENDING!) // depth (ORDER IS DESCENDING!)
if(std::get<2>(k[0]) > std::get<2>(k[1])) if(uint64_t(std::get<2>(k[0])) > uint64_t(std::get<2>(k[1])))
return true; return true;
else if(std::get<2>(k[0]) < std::get<2>(k[1])) else if(uint64_t(std::get<2>(k[0])) < uint64_t(std::get<2>(k[1])))
return false; return false;
// event_idx (ORDER IS DESCENDING!) // event_idx (ORDER IS DESCENDING!)