99 {
101
103
105 .connectionName = "testconnection",
107 .username = "snodec",
108 .password = "pentium5",
109 .database = "snodec",
110 .port = 3306,
111 .socket = "/run/mysqld/mysqld.sock",
112 .flags = 0,
113 };
114
115
116
117
118
119
120
121
123 if (state.
error != 0) {
126 VLOG(0) << "MySQL connected";
127 } else {
128 VLOG(0) << "MySQL disconnected";
129 }
130 });
131
132 int r = 0;
133
135 "DELETE FROM `snodec`",
136 [&db1](void) -> void {
137 VLOG(0) << "********** OnQuery 0;";
138 db1.affectedRows(
139 [](my_ulonglong affectedRows) -> void {
140 VLOG(0) << "********** AffectedRows 1: " << affectedRows;
141 },
142 [](const std::string& errorString, unsigned int errorNumber) -> void {
143 VLOG(0) << "Error 1: " << errorString << " : " << errorNumber;
144 });
145 },
146 [](const std::string& errorString, unsigned int errorNumber) -> void {
147 VLOG(0) << "********** Error 0: " << errorString << " : " << errorNumber;
148 })
149
150 .exec(
151 "INSERT INTO `snodec`(`username`, `password`) VALUES ('Annett','Hallo')",
152 [&db1](void) -> void {
153 VLOG(0) << "********** OnQuery 1: ";
154 db1.affectedRows(
155 [](my_ulonglong affectedRows) -> void {
156 VLOG(0) << "********** AffectedRows 2: " << affectedRows;
157 },
158 [](const std::string& errorString, unsigned int errorNumber) -> void {
159 VLOG(0) << "********** Error 2: " << errorString << " : " << errorNumber;
160 });
161 },
162 [](const std::string& errorString, unsigned int errorNumber) -> void {
163 VLOG(0) << "********** Error 1: " << errorString << " : " << errorNumber;
164 })
165 .query(
166 "SELECT * FROM snodec",
167 [&r](const MYSQL_ROW row) -> void {
168 if (row != nullptr) {
169 VLOG(0) << "********** Row Result 2: " << row[0] << " : " << row[1];
170 r++;
171 } else {
172 VLOG(0) << "********** Row Result 2: " << r;
173 }
174 },
175 [](const std::string& errorString, unsigned int errorNumber) -> void {
176 VLOG(0) << "********** Error 2: " << errorString << " : " << errorNumber;
177 })
178 .query(
179 "SELECT * FROM snodec",
180 [&r](const MYSQL_ROW row) -> void {
181 if (row != nullptr) {
182 VLOG(0) << "********** Row Result 2: " << row[0] << " : " << row[1];
183 r++;
184 } else {
185 VLOG(0) << "********** Row Result 2: " << r;
186 }
187 },
188 [](const std::string& errorString, unsigned int errorNumber) -> void {
189 VLOG(0) << "********** Error 2: " << errorString << " : " << errorNumber;
190 });
191
193 if (state.
error != 0) {
196 VLOG(0) << "MySQL connected";
197 } else {
198 VLOG(0) << "MySQL disconnected";
199 }
200 });
201
202 int r1 = 0;
203 int r2 = 0;
204 {
205 db2.query(
206 "SELECT * FROM snodec",
207 [](const MYSQL_ROW row) -> void {
208 if (row != nullptr) {
209 VLOG(0) << "Row Result 3: " << row[0] << " : " << row[1];
210 } else {
211 VLOG(0) << "Row Result 3:";
212 }
213 },
214 [](const std::string& errorString, unsigned int errorNumber) -> void {
215 VLOG(0) << "Error 3: " << errorString << " : " << errorNumber;
216 });
217
218 db2.query(
219 "SELECT * FROM snodec",
220 [&db2, &r1, &r2](const MYSQL_ROW row) -> void {
221 if (row != nullptr) {
222 VLOG(0) << "Row Result 4: " << row[0] << " : " << row[1];
223 } else {
224 VLOG(0) << "Row Result 4:";
225
226 db2.query(
227 "SELECT * FROM snodec",
228 [&db2, &r1, &r2](const MYSQL_ROW row) -> void {
229 if (row != nullptr) {
230 VLOG(0) << "Row Result 5: " << row[0] << " : " << row[1];
231 } else {
232 VLOG(0) << "Row Result 5:";
233
235 [&db2, &r1](const std::function<void()>& stop) -> void {
236 static int i = 0;
237 VLOG(0) << "Tick 2: " << i++;
238
239 r1 = 0;
240 db2.query(
241 "SELECT * FROM snodec",
242 [&r1](const MYSQL_ROW row) -> void {
243 if (row != nullptr) {
244 VLOG(0) << "Row Result 6: " << row[0] << " : " << row[1];
245 r1++;
246 } else {
247 VLOG(0) << "Row Result 6: " << r1;
248 }
249 },
250 [stop](const std::string& errorString, unsigned int errorNumber) -> void {
251 VLOG(0) << "Error 6: " << errorString << " : " << errorNumber;
252 stop();
253 });
254 },
255 2);
256
258 [&db2, &r2](const std::function<void()>& stop) -> void {
259 static int i = 0;
260 VLOG(0) << "Tick 0.7: " << i++;
261
262 r2 = 0;
263 db2.query(
264 "SELECT * FROM snodec",
265 [&db2, &r2](const MYSQL_ROW row) -> void {
266 if (row != nullptr) {
267 VLOG(0) << "Row Result 7: " << row[0] << " : " << row[1];
268 r2++;
269 } else {
270 VLOG(0) << "Row Result 7: " << r2;
271 db2.fieldCount(
272 [](unsigned int fieldCount) -> void {
273 VLOG(0) << "************ FieldCount ************ = " << fieldCount;
274 },
275 [](const std::string& errorString, unsigned int errorNumber) -> void {
276 VLOG(0) << "Error 7: " << errorString << " : " << errorNumber;
277 });
278 }
279 },
280 [stop](const std::string& errorString, unsigned int errorNumber) -> void {
281 VLOG(0) << "Error 7: " << errorString << " : " << errorNumber;
282 stop();
283 })
284 .fieldCount(
285 [](unsigned int fieldCount) -> void {
286 VLOG(0) << "************ FieldCount ************ = " << fieldCount;
287 },
288 [](const std::string& errorString, unsigned int errorNumber) -> void {
289 VLOG(0) << "Error 7: " << errorString << " : " << errorNumber;
290 });
291 },
292 0.7);
293 }
294 },
295 [](const std::string& errorString, unsigned int errorNumber) -> void {
296 VLOG(0) << "Error 5: " << errorString << " : " << errorNumber;
297 });
298 }
299 },
300 [](const std::string& errorString, unsigned int errorNumber) -> void {
301 VLOG(0) << "Error 4: " << errorString << " : " << errorNumber;
302 });
303
305 [&db2](const std::function<void()>& stop) -> void {
306 static int i = 0;
307 VLOG(0) << "Tick 0.1: " << i++;
308
309 if (i >= 60000) {
310 VLOG(0) << "Stop Stop";
311 stop();
312 }
313
314 int j = i;
315 db2.startTransactions(
316 [](void) -> void {
317 VLOG(0) << "Transactions activated 10:";
318 },
319 [](const std::string& errorString, unsigned int errorNumber) -> void {
320 VLOG(0) << "Error 8: " << errorString << " : " << errorNumber;
321 })
322 .exec(
323 "INSERT INTO `snodec`(`username`, `password`) VALUES ('Annett','Hallo')",
324 [&db2, j](void) -> void {
325 VLOG(0) << "Inserted 10: " << j;
326 db2.affectedRows(
327 [](my_ulonglong affectedRows) -> void {
328 VLOG(0) << "AffectedRows 11: " << affectedRows;
329 },
330 [](const std::string& errorString, unsigned int errorNumber) -> void {
331 VLOG(0) << "Error 11: " << errorString << " : " << errorNumber;
332 });
333 },
334 [stop](const std::string& errorString, unsigned int errorNumber) -> void {
335 VLOG(0) << "Error 10: " << errorString << " : " << errorNumber;
336 stop();
337 })
338 .rollback(
339 [](void) -> void {
340 VLOG(0) << "Rollback success 11";
341 },
342 [stop](const std::string& errorString, unsigned int errorNumber) -> void {
343 VLOG(0) << "Error 12: " << errorString << " : " << errorNumber;
344 stop();
345 })
346 .exec(
347 "INSERT INTO `snodec`(`username`, `password`) VALUES ('Annett','Hallo')",
348 [&db2, j](void) -> void {
349 VLOG(0) << "Inserted 13: " << j;
350 db2.affectedRows(
351 [](my_ulonglong affectedRows) -> void {
352 VLOG(0) << "AffectedRows 14: " << affectedRows;
353 },
354 [](const std::string& errorString, unsigned int errorNumber) -> void {
355 VLOG(0) << "Error 14: " << errorString << " : " << errorNumber;
356 });
357 },
358 [stop](const std::string& errorString, unsigned int errorNumber) -> void {
359 VLOG(0) << "Error 13: " << errorString << " : " << errorNumber;
360 stop();
361 })
362 .commit(
363 [](void) -> void {
364 VLOG(0) << "Commit success 15";
365 },
366 [stop](const std::string& errorString, unsigned int errorNumber) -> void {
367 VLOG(0) << "Error 15: " << errorString << " : " << errorNumber;
368 stop();
369 })
370 .query(
371 "SELECT COUNT(*) FROM snodec",
372 [&db2, j, stop](const MYSQL_ROW row) -> void {
373 if (row != nullptr) {
374 VLOG(0) << "Row Result count(*) 16: " << row[0];
375 if (std::atoi(row[0]) != j + 1) {
376 VLOG(0) << "Wrong number of rows 16: " << std::atoi(row[0]) << " != " << j + 1;
377
378 }
379 } else {
380 VLOG(0) << "Row Result count(*) 16: no result:";
381 db2.fieldCount(
382 [](unsigned int fieldCount) -> void {
383 VLOG(0) << "************ FieldCount ************ = " << fieldCount;
384 },
385 [](const std::string& errorString, unsigned int errorNumber) -> void {
386 VLOG(0) << "Error 7: " << errorString << " : " << errorNumber;
387 });
388 }
389 },
390 [stop](const std::string& errorString, unsigned int errorNumber) -> void {
391 VLOG(0) << "Error 16: " << errorString << " : " << errorNumber;
392 stop();
393 })
394 .endTransactions(
395 [](void) -> void {
396 VLOG(0) << "Transactions deactivated 17";
397 },
398 [stop](const std::string& errorString, unsigned int errorNumber) -> void {
399 VLOG(0) << "Error 17: " << errorString << " : " << errorNumber;
400 stop();
401 });
402 },
403 0.1);
404 }
405
407}
static void init(int argc, char *argv[])
static int start(const utils::Timeval &timeOut={LONG_MAX, 0})
static Timer intervalTimer(const std::function< void(const std::function< void()> &)> &dispatcher, const utils::Timeval &timeout)
MariaDBCommandSequence & exec(const std::string &sql, const std::function< void(void)> &onExec, const std::function< void(const std::string &, unsigned int)> &onError)