1#ifndef DBALLE_DB_V7_TRACE_H
2#define DBALLE_DB_V7_TRACE_H
5#include <dballe/db/v7/fwd.h>
6#include <dballe/core/json.h>
49 void add_sibling(T* step)
60 Step* first_sibling(
const std::string&
name)
62 if (this->name ==
name)
return this;
67 Step* last_sibling(
const std::string&
name, Step* last=
nullptr)
69 if (this->name ==
name)
78 void _aggregate(
const std::string&
name, Aggregate& agg)
80 if (this->name ==
name)
91 Step(
const std::string&
name);
92 Step(
const std::string&
name,
const std::string&
detail);
96 unsigned elapsed_usec()
const;
98 void to_json(core::JSONWriter& writer)
const;
107 Aggregate aggregate(
const std::string&
name)
114 Step* first_child(
const std::string&
name)
116 if (!
child)
return nullptr;
120 Step* last_child(
const std::string&
name)
122 if (!
child)
return nullptr;
126 void add_row(
unsigned amount=1) {
rows += amount; }
129 T* add_child(T* step)
137 child->add_sibling(step);
141 Step* trace_select(
const std::string& query,
unsigned rows=0)
143 Step* res = add_child(
new Step(
"select", query));
148 Step* trace_insert(
const std::string& query,
unsigned rows=0)
150 Step* res = add_child(
new Step(
"insert", query));
155 Step* trace_update(
const std::string& query,
unsigned rows=0)
157 Step* res = add_child(
new Step(
"update", query));
162 Step* trace_delete(
const std::string& query,
unsigned rows=0)
164 Step* res = add_child(
new Step(
"delete", query));
180 Tracer<> trace_import(
unsigned count);
182 Tracer<> trace_insert_station_data();
188 Tracer<> trace_remove_station_data_by_id(
int id);
189 Tracer<> trace_remove_data_by_id(
int id);
198 virtual Tracer<> trace_connect(
const std::string& url) = 0;
199 virtual Tracer<> trace_reset(
const char* repinfo_file=0) = 0;
201 virtual Tracer<> trace_remove_all() = 0;
202 virtual Tracer<> trace_vacuum() = 0;
203 virtual void save() = 0;
205 static bool in_test_suite();
206 static void set_in_test_suite();
211 Tracer<> trace_connect(
const std::string& url)
override {
return Tracer<>(
nullptr); }
212 Tracer<> trace_reset(
const char* repinfo_file=0)
override {
return Tracer<>(
nullptr); }
216 void save()
override {}
222 std::vector<trace::Step*> steps;
232 Tracer<> trace_connect(
const std::string& url)
override;
233 Tracer<> trace_reset(
const char* repinfo_file=0)
override;
235 Tracer<> trace_remove_all()
override;
238 void save()
override {}
250 void save()
override;
Query used to filter DB-All.e data.
Definition: query.h:15
Definition: db/v7/trace.h:242
Definition: db/v7/trace.h:220
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition: db/v7/fwd.h:46
One operation being traced.
Definition: db/v7/trace.h:29
std::string detail
Optional details about the operation.
Definition: db/v7/trace.h:40
clock_t start
Timing start.
Definition: db/v7/trace.h:44
std::string name
Operation name.
Definition: db/v7/trace.h:38
clock_t end
Timing end.
Definition: db/v7/trace.h:46
Step * parent
Parent operation in the operation stack.
Definition: db/v7/trace.h:32
Step * sibling
Next sibling operation in the operation stack.
Definition: db/v7/trace.h:36
Step * child
First child operation in the operation stack.
Definition: db/v7/trace.h:34
unsigned rows
Number of database rows affected.
Definition: db/v7/trace.h:42
Definition: db/v7/trace.h:172
Definition: db/v7/trace.h:210
Definition: db/v7/trace.h:195
Definition: db/v7/trace.h:18