From d5956f47f7f1f8a99f4693aece2a400d9bca1721 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Fri, 11 Jan 2019 17:38:33 -0800 Subject: [PATCH] ircd::m: Fix the m::cached logic to discount missing values. --- ircd/m/event.cc | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/ircd/m/event.cc b/ircd/m/event.cc index 79a9986a1..4e31910f5 100644 --- a/ircd/m/event.cc +++ b/ircd/m/event.cc @@ -247,13 +247,13 @@ bool ircd::m::cached(const event::idx &event_idx, const event::fetch::opts &opts) { - const byte_view key + const auto &select(opts.keys); + auto &columns(dbs::event_column); + const byte_view &key { event_idx }; - const auto &select(opts.keys); - auto &columns(dbs::event_column); return std::all_of(begin(select), end(select), [&opts, &key, &columns] (const string_view &colname) { @@ -267,7 +267,13 @@ ircd::m::cached(const event::idx &event_idx, columns.at(idx) }; - return db::cached(column, key, opts.gopts); + if(db::cached(column, key, opts.gopts)) + return true; + + if(!db::has(column, key, opts.gopts)) + return true; + + return false; }); }