60int main(
int argc,
char* argv[]) {
61 utils::
Config::addStringOption(
"--db-host",
"Hostname of IP-Address of Server",
"[hostname|IP-address]",
"localhost",
true);
66 .connectionName =
"testconnection",
69 .password =
"pentium5",
72 .socket =
"/run/mysqld/mysqld.sock",
85 VLOG(0) <<
"MySQL error: " << state.errorMessage <<
" [" << state
.error <<
"]";
87 VLOG(0) <<
"MySQL connected";
89 VLOG(0) <<
"MySQL disconnected";
96 "DELETE FROM `snodec`",
97 [&db1](
void) ->
void {
98 VLOG(0) <<
"********** OnQuery 0;";
100 [](my_ulonglong affectedRows) ->
void {
101 VLOG(0) <<
"********** AffectedRows 1: " << affectedRows;
103 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
104 VLOG(0) <<
"Error 1: " << errorString <<
" : " << errorNumber;
107 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
108 VLOG(0) <<
"********** Error 0: " << errorString <<
" : " << errorNumber;
112 "INSERT INTO `snodec`(`username`, `password`) VALUES ('Annett','Hallo')",
113 [&db1](
void) ->
void {
114 VLOG(0) <<
"********** OnQuery 1: ";
116 [](my_ulonglong affectedRows) ->
void {
117 VLOG(0) <<
"********** AffectedRows 2: " << affectedRows;
119 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
120 VLOG(0) <<
"********** Error 2: " << errorString <<
" : " << errorNumber;
123 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
124 VLOG(0) <<
"********** Error 1: " << errorString <<
" : " << errorNumber;
127 "SELECT * FROM snodec",
128 [&r](
const MYSQL_ROW row) ->
void {
129 if (row !=
nullptr) {
130 VLOG(0) <<
"********** Row Result 2: " << row[0] <<
" : " << row[1];
133 VLOG(0) <<
"********** Row Result 2: " << r;
136 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
137 VLOG(0) <<
"********** Error 2: " << errorString <<
" : " << errorNumber;
140 "SELECT * FROM snodec",
141 [&r](
const MYSQL_ROW row) ->
void {
142 if (row !=
nullptr) {
143 VLOG(0) <<
"********** Row Result 2: " << row[0] <<
" : " << row[1];
146 VLOG(0) <<
"********** Row Result 2: " << r;
149 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
150 VLOG(0) <<
"********** Error 2: " << errorString <<
" : " << errorNumber;
155 VLOG(0) <<
"MySQL error: " << state.errorMessage <<
" [" << state
.error <<
"]";
157 VLOG(0) <<
"MySQL connected";
159 VLOG(0) <<
"MySQL disconnected";
164 "SELECT * FROM snodec",
165 [](
const MYSQL_ROW row) ->
void {
166 if (row !=
nullptr) {
167 VLOG(0) <<
"Row Result 3: " << row[0] <<
" : " << row[1];
169 VLOG(0) <<
"Row Result 3:";
172 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
173 VLOG(0) <<
"Error 3: " << errorString <<
" : " << errorNumber;
180 "SELECT * FROM snodec",
181 [&db2, &r1, &r2](
const MYSQL_ROW row) ->
void {
182 if (row !=
nullptr) {
183 VLOG(0) <<
"Row Result 4: " << row[0] <<
" : " << row[1];
185 VLOG(0) <<
"Row Result 4:";
188 "SELECT * FROM snodec",
189 [&db2, &r1, &r2](
const MYSQL_ROW row) ->
void {
190 if (row !=
nullptr) {
191 VLOG(0) <<
"Row Result 5: " << row[0] <<
" : " << row[1];
193 VLOG(0) <<
"Row Result 5:";
196 [&db2, &r1](
const std::function<
void()>& stop) ->
void {
198 VLOG(0) <<
"Tick 2: " << i++;
202 "SELECT * FROM snodec",
203 [&r1](
const MYSQL_ROW row) ->
void {
204 if (row !=
nullptr) {
205 VLOG(0) <<
"Row Result 6: " << row[0] <<
" : " << row[1];
208 VLOG(0) <<
"Row Result 6: " << r1;
211 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
212 VLOG(0) <<
"Error 6: " << errorString <<
" : " << errorNumber;
219 [&db2, &r2](
const std::function<
void()>& stop) ->
void {
221 VLOG(0) <<
"Tick 0.7: " << i++;
225 "SELECT * FROM snodec",
226 [&db2, &r2](
const MYSQL_ROW row) ->
void {
227 if (row !=
nullptr) {
228 VLOG(0) <<
"Row Result 7: " << row[0] <<
" : " << row[1];
231 VLOG(0) <<
"Row Result 7: " << r2;
233 [](
unsigned int fieldCount) ->
void {
234 VLOG(0) <<
"************ FieldCount ************ = " << fieldCount;
236 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
237 VLOG(0) <<
"Error 7: " << errorString <<
" : " << errorNumber;
241 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
242 VLOG(0) <<
"Error 7: " << errorString <<
" : " << errorNumber;
246 [](
unsigned int fieldCount) ->
void {
247 VLOG(0) <<
"************ FieldCount ************ = " << fieldCount;
249 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
250 VLOG(0) <<
"Error 7: " << errorString <<
" : " << errorNumber;
256 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
257 VLOG(0) <<
"Error 5: " << errorString <<
" : " << errorNumber;
261 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
262 VLOG(0) <<
"Error 4: " << errorString <<
" : " << errorNumber;
266 [&db2](
const std::function<
void()>& stop) ->
void {
268 VLOG(0) <<
"Tick 0.1: " << i++;
271 VLOG(0) <<
"Stop Stop";
276 db2.startTransactions(
278 VLOG(0) <<
"Transactions activated 10:";
280 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
281 VLOG(0) <<
"Error 8: " << errorString <<
" : " << errorNumber;
284 "INSERT INTO `snodec`(`username`, `password`) VALUES ('Annett','Hallo')",
285 [&db2, j](
void) ->
void {
286 VLOG(0) <<
"Inserted 10: " << j;
288 [](my_ulonglong affectedRows) ->
void {
289 VLOG(0) <<
"AffectedRows 11: " << affectedRows;
291 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
292 VLOG(0) <<
"Error 11: " << errorString <<
" : " << errorNumber;
295 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
296 VLOG(0) <<
"Error 10: " << errorString <<
" : " << errorNumber;
301 VLOG(0) <<
"Rollback success 11";
303 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
304 VLOG(0) <<
"Error 12: " << errorString <<
" : " << errorNumber;
308 "INSERT INTO `snodec`(`username`, `password`) VALUES ('Annett','Hallo')",
309 [&db2, j](
void) ->
void {
310 VLOG(0) <<
"Inserted 13: " << j;
312 [](my_ulonglong affectedRows) ->
void {
313 VLOG(0) <<
"AffectedRows 14: " << affectedRows;
315 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
316 VLOG(0) <<
"Error 14: " << errorString <<
" : " << errorNumber;
319 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
320 VLOG(0) <<
"Error 13: " << errorString <<
" : " << errorNumber;
325 VLOG(0) <<
"Commit success 15";
327 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
328 VLOG(0) <<
"Error 15: " << errorString <<
" : " << errorNumber;
332 "SELECT COUNT(*) FROM snodec",
333 [&db2, j, stop](
const MYSQL_ROW row) ->
void {
334 if (row !=
nullptr) {
335 VLOG(0) <<
"Row Result count(*) 16: " << row[0];
336 if (std::atoi(row[0]) != j + 1) {
337 VLOG(0) <<
"Wrong number of rows 16: " << std::atoi(row[0]) <<
" != " << j + 1;
341 VLOG(0) <<
"Row Result count(*) 16: no result:";
343 [](
unsigned int fieldCount) ->
void {
344 VLOG(0) <<
"************ FieldCount ************ = " << fieldCount;
346 [](
const std::string& errorString,
unsigned int errorNumber) ->
void {
347 VLOG(0) <<
"Error 7: " << errorString <<
" : " << errorNumber;
351 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
352 VLOG(0) <<
"Error 16: " << errorString <<
" : " << errorNumber;
357 VLOG(0) <<
"Transactions deactivated 17";
359 [stop](
const std::string& errorString,
unsigned int errorNumber) ->
void {
360 VLOG(0) <<
"Error 17: " << errorString <<
" : " << errorNumber;