1 #ifndef DBALLE_DB_V7_TRACE_H 2 #define DBALLE_DB_V7_TRACE_H 4 #include <dballe/core/json.h> 5 #include <dballe/db/v7/fwd.h> 6 #include <dballe/fwd.h> 47 template <
typename T>
void add_sibling(T* step)
58 Step* first_sibling(
const std::string&
name)
60 if (this->name ==
name)
67 Step* last_sibling(
const std::string&
name, Step* last =
nullptr)
69 if (this->name ==
name)
80 void _aggregate(
const std::string&
name, Aggregate& agg)
82 if (this->name ==
name)
95 Step(
const std::string&
name);
96 Step(
const std::string&
name,
const std::string&
detail);
100 unsigned elapsed_usec()
const;
102 void to_json(core::JSONWriter& writer)
const;
111 Aggregate aggregate(
const std::string&
name)
119 Step* first_child(
const std::string&
name)
126 Step* last_child(
const std::string&
name)
133 void add_row(
unsigned amount = 1) {
rows += amount; }
135 template <
typename T> T* add_child(T* step)
143 child->add_sibling(step);
147 Step* trace_select(
const std::string& query,
unsigned rows = 0)
149 Step* res = add_child(
new Step(
"select", query));
154 Step* trace_insert(
const std::string& query,
unsigned rows = 0)
156 Step* res = add_child(
new Step(
"insert", query));
161 Step* trace_update(
const std::string& query,
unsigned rows = 0)
163 Step* res = add_child(
new Step(
"update", query));
168 Step* trace_delete(
const std::string& query,
unsigned rows = 0)
170 Step* res = add_child(
new Step(
"delete", query));
185 Tracer<> trace_import(
unsigned count);
187 Tracer<> trace_insert_station_data();
193 Tracer<> trace_remove_station_data_by_id(
int id);
194 Tracer<> trace_remove_data_by_id(
int id);
203 virtual Tracer<> trace_connect(
const std::string& url) = 0;
204 virtual Tracer<> trace_reset(
const char* repinfo_file = 0) = 0;
206 virtual Tracer<> trace_remove_all() = 0;
207 virtual Tracer<> trace_vacuum() = 0;
208 virtual void save() = 0;
210 static bool in_test_suite();
211 static void set_in_test_suite();
216 Tracer<> trace_connect(
const std::string& url)
override 220 Tracer<> trace_reset(
const char* repinfo_file = 0)
override 230 void save()
override {}
236 std::vector<trace::Step*> steps;
246 Tracer<> trace_connect(
const std::string& url)
override;
247 Tracer<> trace_reset(
const char* repinfo_file = 0)
override;
249 Tracer<> trace_remove_all()
override;
252 void save()
override {}
264 void save()
override;
Step * sibling
Next sibling operation in the operation stack.
Definition: db/v7/trace.h:35
One operation being traced.
Definition: db/v7/trace.h:27
clock_t end
Timing end.
Definition: db/v7/trace.h:45
std::string detail
Optional details about the operation.
Definition: db/v7/trace.h:39
Step * child
First child operation in the operation stack.
Definition: db/v7/trace.h:33
clock_t start
Timing start.
Definition: db/v7/trace.h:43
Definition: db/v7/trace.h:255
Definition: db/v7/trace.h:176
unsigned rows
Number of database rows affected.
Definition: db/v7/trace.h:41
Step * parent
Parent operation in the operation stack.
Definition: db/v7/trace.h:31
Definition: db/v7/trace.h:199
std::string name
Operation name.
Definition: db/v7/trace.h:37
Definition: db/v7/trace.h:214
Definition: db/v7/trace.h:233
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition: db/v7/fwd.h:44
Definition: db/v7/trace.h:17
Query used to filter DB-All.e data.
Definition: query.h:16