@@ -228,7 +228,7 @@ size_t atomic_multilog::append(void *data) {
228228 return offset;
229229}
230230
231- size_t atomic_multilog::append_json (std::string json_record) {
231+ size_t atomic_multilog::append_json (const std::string & json_record) {
232232 void *buf = schema_.json_string_to_data (json_record);
233233 size_t off = append (buf);
234234 delete[] reinterpret_cast <uint8_t *>(buf);
@@ -299,6 +299,15 @@ std::unique_ptr<record_cursor> atomic_multilog::execute_filter(const std::string
299299 return plan.execute (version);
300300}
301301
302+ // std::unique_ptr<json_cursor> atomic_multilog::execute_filter_json(const std::string &expr) const {
303+ // uint64_t version = rt_.get();
304+ // auto t = parser::parse_expression(expr);
305+ // auto cexpr = parser::compile_expression(t, schema_);
306+ // query_plan plan = planner_.plan(cexpr);
307+ // return plan.execute(version);
308+ // // TODO: figure out return for this
309+ // }
310+
302311numeric atomic_multilog::execute_aggregate (const std::string &aggregate_expr, const std::string &filter_expr) {
303312 auto pa = parser::parse_aggregate (aggregate_expr);
304313 aggregator agg = aggregate_manager::get_aggregator (pa.agg );
@@ -331,6 +340,27 @@ std::unique_ptr<record_cursor> atomic_multilog::query_filter(const std::string &
331340 parser::compiled_expression ()));
332341}
333342
343+ // std::unique_ptr<json_cursor> atomic_multilog::query_filter_json(const std::string &filter_name,
344+ // uint64_t begin_ms,
345+ // uint64_t end_ms) const {
346+ // filter_id_t filter_id;
347+ // if (filter_map_.get(filter_name, filter_id) == -1) {
348+ // throw invalid_operation_exception(
349+ // "Filter " + filter_name + " does not exist.");
350+ // }
351+ //
352+ // filter::range_result res = filters_.at(filter_id)->lookup_range(begin_ms,
353+ // end_ms);
354+ // uint64_t version = rt_.get();
355+ // std::unique_ptr<offset_cursor> o_cursor(
356+ // new offset_iterator_cursor<filter::range_result::iterator>(res.begin(),
357+ // res.end(),
358+ // version));
359+ // return std::unique_ptr<json_cursor>(
360+ // new json_cursor(std::move(o_cursor), &data_log_, &schema_,
361+ // parser::compiled_expression()));
362+ // }
363+
334364std::unique_ptr<record_cursor> atomic_multilog::query_filter (const std::string &filter_name,
335365 uint64_t begin_ms,
336366 uint64_t end_ms,
@@ -350,6 +380,25 @@ std::unique_ptr<record_cursor> atomic_multilog::query_filter(const std::string &
350380 return std::unique_ptr<record_cursor>(new filter_record_cursor (std::move (o_cursor), &data_log_, &schema_, e));
351381}
352382
383+ // std::unique_ptr<json_cursor> atomic_multilog::query_filter_json(const std::string &filter_name,
384+ // uint64_t begin_ms,
385+ // uint64_t end_ms,
386+ // const std::string &additional_filter_expr) const {
387+ // auto t = parser::parse_expression(additional_filter_expr);
388+ // auto e = parser::compile_expression(t, schema_);
389+ // filter_id_t filter_id;
390+ // if (filter_map_.get(filter_name, filter_id) == -1) {
391+ // throw invalid_operation_exception(
392+ // "Filter " + filter_name + " does not exist.");
393+ // }
394+ //
395+ // filter::range_result res = filters_.at(filter_id)->lookup_range(begin_ms, end_ms);
396+ // uint64_t version = rt_.get();
397+ // std::unique_ptr<offset_cursor> o_cursor(
398+ // new offset_iterator_cursor<filter::range_result::iterator>(res.begin(), res.end(), version));
399+ // return std::unique_ptr<json_cursor>(new json_cursor(std::move(o_cursor), &data_log_, &schema_, e));
400+ // }
401+
353402numeric atomic_multilog::get_aggregate (const std::string &aggregate_name, uint64_t begin_ms, uint64_t end_ms) {
354403 aggregate_id_t aggregate_id;
355404 if (aggregate_map_.get (aggregate_name, aggregate_id) == -1 ) {
0 commit comments