diff --git a/crates/core/src/dbs/iterator.rs b/crates/core/src/dbs/iterator.rs index 20a59f7d86a9..190c4543928c 100644 --- a/crates/core/src/dbs/iterator.rs +++ b/crates/core/src/dbs/iterator.rs @@ -319,6 +319,76 @@ impl Iterator { )?; // Extract the expected behaviour depending on the presence of EXPLAIN with or without FULL let mut plan = Plan::new(ctx, stm, &self.entries, &self.results); + //TODO store exec id + //TODO log a surrealdb::slowlog::complete message for exec id + //TODO any that dont show a complete then count as running + for iter in &self.entries { + match iter { + Iterable::Value(_v) => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Value)"); + } + Iterable::Yield(_t) => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Yield)"); + } + Iterable::Thing(_t) => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Thing)"); + } + Iterable::Defer(_t) => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Defer)"); + } + Iterable::Edges(_e) => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Edges)"); + } + Iterable::Table(_t, rs) => { + match rs { + RecordStrategy::Count => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Table Count)"); + } + RecordStrategy::KeysOnly => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Table Keys)"); + } + RecordStrategy::KeysAndValues => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Table)"); + } + }; + } + Iterable::Range(_tb, _r, rs) => { + match rs { + RecordStrategy::Count => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Range Count)"); + } + RecordStrategy::KeysOnly => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Range Keys)"); + } + RecordStrategy::KeysAndValues => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Range)"); + } + }; + } + Iterable::Mergeable(_t, _v) => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Mergeable)"); + } + Iterable::Relatable(_t1, _t2, _t3, None) => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Relatable)"); + } + Iterable::Relatable(_t1, _t2, _t3, Some(_v)) => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Relatable)"); + } + Iterable::Index(_t, _ir, rs) => { + match rs { + RecordStrategy::Count => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Index Count)"); + } + RecordStrategy::KeysOnly => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Index Keys)"); + } + RecordStrategy::KeysAndValues => { + trace!(target: "surrealdb::slowlog", statement = %stm, "SLOW_QUERY Query(Iterate Index)"); + } + }; + } + } + } // Check if we actually need to process and iterate over the results if plan.do_iterate { // Process prepared values