0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-16 08:58:20 +02:00

ircd:Ⓜ️:dbs: Use buffer size constants for query key generations.

This commit is contained in:
Jason Volk 2018-04-24 19:19:40 -07:00
parent 12592cd22c
commit ba61369027
3 changed files with 19 additions and 16 deletions

View file

@ -33,14 +33,17 @@ namespace ircd::m::dbs
extern db::column state_node;
// Lowlevel util
static const size_t ROOM_STATE_KEY_MAX_SIZE {id::MAX_SIZE + 256 + 256};
string_view room_state_key(const mutable_buffer &out, const id::room &, const string_view &type, const string_view &state_key);
string_view room_state_key(const mutable_buffer &out, const id::room &, const string_view &type);
std::pair<string_view, string_view> room_state_key(const string_view &amalgam);
static const size_t ROOM_JOINED_KEY_MAX_SIZE {id::MAX_SIZE + 256 + id::MAX_SIZE};
string_view room_joined_key(const mutable_buffer &out, const id::room &, const string_view &origin, const id::user &member);
string_view room_joined_key(const mutable_buffer &out, const id::room &, const string_view &origin);
std::pair<string_view, string_view> room_joined_key(const string_view &amalgam);
static const size_t ROOM_EVENTS_KEY_MAX_SIZE {id::MAX_SIZE + 1 + 8 + 8};
string_view room_events_key(const mutable_buffer &out, const id::room &, const uint64_t &depth, const event::idx &);
string_view room_events_key(const mutable_buffer &out, const id::room &, const uint64_t &depth);
std::pair<uint64_t, event::idx> room_events_key(const string_view &amalgam);

View file

@ -243,7 +243,7 @@ ircd::m::dbs::_index__room_events(db::txn &txn,
const string_view &new_root)
{
const ctx::critical_assertion ca;
thread_local char buf[256 + 1 + 8 + 8];
thread_local char buf[ROOM_EVENTS_KEY_MAX_SIZE];
const string_view &key
{
room_events_key(buf, at<"room_id"_>(event), at<"depth"_>(event), opts.idx)
@ -274,7 +274,7 @@ ircd::m::dbs::_index__room_joined(db::txn &txn,
return;
const ctx::critical_assertion ca;
thread_local char buf[512];
thread_local char buf[ROOM_JOINED_KEY_MAX_SIZE];
const string_view &key
{
room_joined_key(buf, at<"room_id"_>(event), at<"origin"_>(event), at<"state_key"_>(event))
@ -328,7 +328,7 @@ ircd::m::dbs::_index__room_state(db::txn &txn,
return;
const ctx::critical_assertion ca;
thread_local char buf[768];
thread_local char buf[ROOM_STATE_KEY_MAX_SIZE];
const string_view &key
{
room_state_key(buf, at<"room_id"_>(event), at<"type"_>(event), at<"state_key"_>(event))
@ -443,7 +443,7 @@ ircd::m::dbs::state_root(const mutable_buffer &out,
const event::idx &event_idx,
const uint64_t &depth)
{
char keybuf[256 + 1 + 8 + 8]; const auto key
char keybuf[ROOM_EVENTS_KEY_MAX_SIZE]; const auto key
{
room_events_key(keybuf, room_id, depth, event_idx)
};

View file

@ -474,7 +474,7 @@ ircd::m::room::messages::seek(const event::id &event_id)
depth = byte_view<uint64_t>(value);
});
char buf[m::state::KEY_MAX_SZ];
char buf[dbs::ROOM_EVENTS_KEY_MAX_SIZE];
const auto seek_key
{
dbs::room_events_key(buf, room.room_id, depth, event_idx)
@ -487,7 +487,7 @@ ircd::m::room::messages::seek(const event::id &event_id)
bool
ircd::m::room::messages::seek(const uint64_t &depth)
{
char buf[m::state::KEY_MAX_SZ];
char buf[dbs::ROOM_EVENTS_KEY_MAX_SIZE];
const auto seek_key
{
dbs::room_events_key(buf, room.room_id, depth)
@ -664,8 +664,8 @@ const try
closure(event::fetch::index(unquote(event_id)));
});
char key[768];
auto &column{dbs::room_state};
char key[dbs::ROOM_STATE_KEY_MAX_SIZE];
column(dbs::room_state_key(key, room_id, type, state_key), [&closure]
(const string_view &value)
{
@ -738,8 +738,8 @@ const
return closure(event::fetch::index(unquote(event_id), std::nothrow));
});
char key[768];
auto &column{dbs::room_state};
char key[dbs::ROOM_STATE_KEY_MAX_SIZE];
return column(dbs::room_state_key(key, room_id, type, state_key), std::nothrow, [&closure]
(const string_view &value)
{
@ -767,8 +767,8 @@ const
(const string_view &event_id)
{});
char key[768];
auto &column{dbs::room_state};
char key[dbs::ROOM_STATE_KEY_MAX_SIZE];
return db::has(column, dbs::room_state_key(key, room_id, type, state_key));
}
@ -794,7 +794,7 @@ const
if(root_id)
return m::state::count(root_id, type);
char keybuf[768];
char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE];
const auto &key
{
dbs::room_state_key(keybuf, room_id, type)
@ -926,7 +926,7 @@ const
return closure(event::fetch::index(unquote(event_id), std::nothrow));
});
char keybuf[768];
char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE];
const auto &key
{
dbs::room_state_key(keybuf, room_id, type)
@ -957,7 +957,7 @@ const
return closure(unquote(key.at(1)));
});
char keybuf[768];
char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE];
const auto &key
{
dbs::room_state_key(keybuf, room_id, type)
@ -1040,7 +1040,7 @@ const
return closure(event::fetch::index(unquote(event_id), std::nothrow));
});
char keybuf[768];
char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE];
const auto &key
{
dbs::room_state_key(keybuf, room_id, type, state_key_lb)
@ -1150,7 +1150,7 @@ const
closure(event::fetch::index(unquote(event_id), std::nothrow));
});
char keybuf[768];
char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE];
const auto &key
{
dbs::room_state_key(keybuf, room_id, type)
@ -1177,7 +1177,7 @@ const
closure(unquote(key.at(1)));
});
char keybuf[768];
char keybuf[dbs::ROOM_STATE_KEY_MAX_SIZE];
const auto &key
{
dbs::room_state_key(keybuf, room_id, type)
@ -1393,7 +1393,7 @@ const
dbs::room_joined
};
char querybuf[512];
char querybuf[dbs::ROOM_JOINED_KEY_MAX_SIZE];
const auto query
{
dbs::room_joined_key(querybuf, room.room_id, origin)