diff options
| author | Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> | 2025-03-07 09:14:37 +0100 |
|---|---|---|
| committer | Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> | 2025-03-07 09:14:37 +0100 |
| commit | eb1dd9fe2e0e965b4c9326195a778c3794492ef4 (patch) | |
| tree | 2f6442d095d5c8384d80212a5e973cbc18b8cb91 /plugins | |
| parent | 06fa1036f9e7216aac27107cd7d4c4903fa61ab2 (diff) | |
| download | monitoring-plugins-eb1dd9fe2e0e965b4c9326195a778c3794492ef4.tar.gz | |
check_dbi: clang_format
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_dbi.c | 140 |
1 files changed, 89 insertions, 51 deletions
diff --git a/plugins/check_dbi.c b/plugins/check_dbi.c index 96575672..ae8ec952 100644 --- a/plugins/check_dbi.c +++ b/plugins/check_dbi.c | |||
| @@ -128,8 +128,9 @@ int main(int argc, char **argv) { | |||
| 128 | /* Parse extra opts if any */ | 128 | /* Parse extra opts if any */ |
| 129 | argv = np_extra_opts(&argc, argv, progname); | 129 | argv = np_extra_opts(&argc, argv, progname); |
| 130 | 130 | ||
| 131 | if (process_arguments(argc, argv) == ERROR) | 131 | if (process_arguments(argc, argv) == ERROR) { |
| 132 | usage4(_("Could not parse arguments")); | 132 | usage4(_("Could not parse arguments")); |
| 133 | } | ||
| 133 | 134 | ||
| 134 | /* Set signal handling and alarm */ | 135 | /* Set signal handling and alarm */ |
| 135 | if (signal(SIGALRM, timeout_alarm_handler) == SIG_ERR) { | 136 | if (signal(SIGALRM, timeout_alarm_handler) == SIG_ERR) { |
| @@ -137,8 +138,9 @@ int main(int argc, char **argv) { | |||
| 137 | } | 138 | } |
| 138 | alarm(timeout_interval); | 139 | alarm(timeout_interval); |
| 139 | 140 | ||
| 140 | if (verbose > 2) | 141 | if (verbose > 2) { |
| 141 | printf("Initializing DBI\n"); | 142 | printf("Initializing DBI\n"); |
| 143 | } | ||
| 142 | 144 | ||
| 143 | dbi_inst *instance_p = {0}; | 145 | dbi_inst *instance_p = {0}; |
| 144 | 146 | ||
| @@ -152,8 +154,9 @@ int main(int argc, char **argv) { | |||
| 152 | return STATE_UNKNOWN; | 154 | return STATE_UNKNOWN; |
| 153 | } | 155 | } |
| 154 | 156 | ||
| 155 | if (verbose) | 157 | if (verbose) { |
| 156 | printf("Opening DBI driver '%s'\n", np_dbi_driver); | 158 | printf("Opening DBI driver '%s'\n", np_dbi_driver); |
| 159 | } | ||
| 157 | 160 | ||
| 158 | driver = dbi_driver_open_r(np_dbi_driver, instance_p); | 161 | driver = dbi_driver_open_r(np_dbi_driver, instance_p); |
| 159 | if (!driver) { | 162 | if (!driver) { |
| @@ -179,11 +182,13 @@ int main(int argc, char **argv) { | |||
| 179 | for (i = 0; i < np_dbi_options_num; ++i) { | 182 | for (i = 0; i < np_dbi_options_num; ++i) { |
| 180 | const char *opt; | 183 | const char *opt; |
| 181 | 184 | ||
| 182 | if (verbose > 1) | 185 | if (verbose > 1) { |
| 183 | printf("Setting DBI driver option '%s' to '%s'\n", np_dbi_options[i].key, np_dbi_options[i].value); | 186 | printf("Setting DBI driver option '%s' to '%s'\n", np_dbi_options[i].key, np_dbi_options[i].value); |
| 187 | } | ||
| 184 | 188 | ||
| 185 | if (!dbi_conn_set_option(conn, np_dbi_options[i].key, np_dbi_options[i].value)) | 189 | if (!dbi_conn_set_option(conn, np_dbi_options[i].key, np_dbi_options[i].value)) { |
| 186 | continue; | 190 | continue; |
| 191 | } | ||
| 187 | /* else: status != 0 */ | 192 | /* else: status != 0 */ |
| 188 | 193 | ||
| 189 | np_dbi_print_error(conn, "UNKNOWN - failed to set option '%s' to '%s'", np_dbi_options[i].key, np_dbi_options[i].value); | 194 | np_dbi_print_error(conn, "UNKNOWN - failed to set option '%s' to '%s'", np_dbi_options[i].key, np_dbi_options[i].value); |
| @@ -197,8 +202,9 @@ int main(int argc, char **argv) { | |||
| 197 | } | 202 | } |
| 198 | 203 | ||
| 199 | if (host) { | 204 | if (host) { |
| 200 | if (verbose > 1) | 205 | if (verbose > 1) { |
| 201 | printf("Setting DBI driver option 'host' to '%s'\n", host); | 206 | printf("Setting DBI driver option 'host' to '%s'\n", host); |
| 207 | } | ||
| 202 | dbi_conn_set_option(conn, "host", host); | 208 | dbi_conn_set_option(conn, "host", host); |
| 203 | } | 209 | } |
| 204 | 210 | ||
| @@ -209,10 +215,12 @@ int main(int argc, char **argv) { | |||
| 209 | dbname = dbi_conn_get_option(conn, "dbname"); | 215 | dbname = dbi_conn_get_option(conn, "dbname"); |
| 210 | host = dbi_conn_get_option(conn, "host"); | 216 | host = dbi_conn_get_option(conn, "host"); |
| 211 | 217 | ||
| 212 | if (!dbname) | 218 | if (!dbname) { |
| 213 | dbname = "<unspecified>"; | 219 | dbname = "<unspecified>"; |
| 214 | if (!host) | 220 | } |
| 221 | if (!host) { | ||
| 215 | host = "<unspecified>"; | 222 | host = "<unspecified>"; |
| 223 | } | ||
| 216 | 224 | ||
| 217 | printf("Connecting to database '%s' at host '%s'\n", dbname, host); | 225 | printf("Connecting to database '%s' at host '%s'\n", dbname, host); |
| 218 | } | 226 | } |
| @@ -226,22 +234,27 @@ int main(int argc, char **argv) { | |||
| 226 | conn_time = timediff(start_timeval, end_timeval); | 234 | conn_time = timediff(start_timeval, end_timeval); |
| 227 | 235 | ||
| 228 | server_version = dbi_conn_get_engine_version(conn); | 236 | server_version = dbi_conn_get_engine_version(conn); |
| 229 | if (verbose) | 237 | if (verbose) { |
| 230 | printf("Connected to server version %u\n", server_version); | 238 | printf("Connected to server version %u\n", server_version); |
| 239 | } | ||
| 231 | 240 | ||
| 232 | if (metric == METRIC_SERVER_VERSION) | 241 | if (metric == METRIC_SERVER_VERSION) { |
| 233 | status = get_status(server_version, dbi_thresholds); | 242 | status = get_status(server_version, dbi_thresholds); |
| 243 | } | ||
| 234 | 244 | ||
| 235 | if (verbose) | 245 | if (verbose) { |
| 236 | printf("Time elapsed: %f\n", conn_time); | 246 | printf("Time elapsed: %f\n", conn_time); |
| 247 | } | ||
| 237 | 248 | ||
| 238 | if (metric == METRIC_CONN_TIME) | 249 | if (metric == METRIC_CONN_TIME) { |
| 239 | status = get_status(conn_time, dbi_thresholds); | 250 | status = get_status(conn_time, dbi_thresholds); |
| 251 | } | ||
| 240 | 252 | ||
| 241 | /* select a database */ | 253 | /* select a database */ |
| 242 | if (np_dbi_database) { | 254 | if (np_dbi_database) { |
| 243 | if (verbose > 1) | 255 | if (verbose > 1) { |
| 244 | printf("Selecting database '%s'\n", np_dbi_database); | 256 | printf("Selecting database '%s'\n", np_dbi_database); |
| 257 | } | ||
| 245 | 258 | ||
| 246 | if (dbi_conn_select_db(conn, np_dbi_database)) { | 259 | if (dbi_conn_select_db(conn, np_dbi_database)) { |
| 247 | np_dbi_print_error(conn, "UNKNOWN - failed to select database '%s'", np_dbi_database); | 260 | np_dbi_print_error(conn, "UNKNOWN - failed to select database '%s'", np_dbi_database); |
| @@ -252,38 +265,43 @@ int main(int argc, char **argv) { | |||
| 252 | if (np_dbi_query) { | 265 | if (np_dbi_query) { |
| 253 | /* execute query */ | 266 | /* execute query */ |
| 254 | status = do_query(conn, &query_val_str, &query_val, &query_time); | 267 | status = do_query(conn, &query_val_str, &query_val, &query_time); |
| 255 | if (status != STATE_OK) | 268 | if (status != STATE_OK) { |
| 256 | /* do_query prints an error message in this case */ | 269 | /* do_query prints an error message in this case */ |
| 257 | return status; | 270 | return status; |
| 271 | } | ||
| 258 | 272 | ||
| 259 | if (metric == METRIC_QUERY_RESULT) { | 273 | if (metric == METRIC_QUERY_RESULT) { |
| 260 | if (expect) { | 274 | if (expect) { |
| 261 | if ((!query_val_str) || strcmp(query_val_str, expect)) | 275 | if ((!query_val_str) || strcmp(query_val_str, expect)) { |
| 262 | status = STATE_CRITICAL; | 276 | status = STATE_CRITICAL; |
| 263 | else | 277 | } else { |
| 264 | status = STATE_OK; | 278 | status = STATE_OK; |
| 279 | } | ||
| 265 | } else if (expect_re_str) { | 280 | } else if (expect_re_str) { |
| 266 | int err; | 281 | int err; |
| 267 | 282 | ||
| 268 | err = regexec(&expect_re, query_val_str, 0, NULL, /* flags = */ 0); | 283 | err = regexec(&expect_re, query_val_str, 0, NULL, /* flags = */ 0); |
| 269 | if (!err) | 284 | if (!err) { |
| 270 | status = STATE_OK; | 285 | status = STATE_OK; |
| 271 | else if (err == REG_NOMATCH) | 286 | } else if (err == REG_NOMATCH) { |
| 272 | status = STATE_CRITICAL; | 287 | status = STATE_CRITICAL; |
| 273 | else { | 288 | } else { |
| 274 | char errmsg[1024]; | 289 | char errmsg[1024]; |
| 275 | regerror(err, &expect_re, errmsg, sizeof(errmsg)); | 290 | regerror(err, &expect_re, errmsg, sizeof(errmsg)); |
| 276 | printf("ERROR - failed to execute regular expression: %s\n", errmsg); | 291 | printf("ERROR - failed to execute regular expression: %s\n", errmsg); |
| 277 | status = STATE_CRITICAL; | 292 | status = STATE_CRITICAL; |
| 278 | } | 293 | } |
| 279 | } else | 294 | } else { |
| 280 | status = get_status(query_val, dbi_thresholds); | 295 | status = get_status(query_val, dbi_thresholds); |
| 281 | } else if (metric == METRIC_QUERY_TIME) | 296 | } |
| 297 | } else if (metric == METRIC_QUERY_TIME) { | ||
| 282 | status = get_status(query_time, dbi_thresholds); | 298 | status = get_status(query_time, dbi_thresholds); |
| 299 | } | ||
| 283 | } | 300 | } |
| 284 | 301 | ||
| 285 | if (verbose) | 302 | if (verbose) { |
| 286 | printf("Closing connection\n"); | 303 | printf("Closing connection\n"); |
| 304 | } | ||
| 287 | dbi_conn_close(conn); | 305 | dbi_conn_close(conn); |
| 288 | 306 | ||
| 289 | /* In case of METRIC_QUERY_RESULT, isnan(query_val) indicates an error | 307 | /* In case of METRIC_QUERY_RESULT, isnan(query_val) indicates an error |
| @@ -299,15 +317,17 @@ int main(int argc, char **argv) { | |||
| 299 | assert(expect || expect_re_str); | 317 | assert(expect || expect_re_str); |
| 300 | printf(", '%s' returned '%s' in %fs", np_dbi_query, query_val_str ? query_val_str : "<nothing>", query_time); | 318 | printf(", '%s' returned '%s' in %fs", np_dbi_query, query_val_str ? query_val_str : "<nothing>", query_time); |
| 301 | if (status != STATE_OK) { | 319 | if (status != STATE_OK) { |
| 302 | if (expect) | 320 | if (expect) { |
| 303 | printf(" (expected '%s')", expect); | 321 | printf(" (expected '%s')", expect); |
| 304 | else if (expect_re_str) | 322 | } else if (expect_re_str) { |
| 305 | printf(" (expected regex /%s/%s)", expect_re_str, ((expect_re_cflags & REG_ICASE) ? "i" : "")); | 323 | printf(" (expected regex /%s/%s)", expect_re_str, ((expect_re_cflags & REG_ICASE) ? "i" : "")); |
| 324 | } | ||
| 306 | } | 325 | } |
| 307 | } else if (isnan(query_val)) | 326 | } else if (isnan(query_val)) { |
| 308 | printf(", '%s' query execution time: %fs", np_dbi_query, query_time); | 327 | printf(", '%s' query execution time: %fs", np_dbi_query, query_time); |
| 309 | else | 328 | } else { |
| 310 | printf(", '%s' returned %f in %fs", np_dbi_query, query_val, query_time); | 329 | printf(", '%s' returned %f in %fs", np_dbi_query, query_val, query_time); |
| 330 | } | ||
| 311 | } | 331 | } |
| 312 | 332 | ||
| 313 | printf(" | conntime=%fs;%s;%s;0; server_version=%u;%s;%s;0;", conn_time, | 333 | printf(" | conntime=%fs;%s;%s;0; server_version=%u;%s;%s;0;", conn_time, |
| @@ -316,9 +336,10 @@ int main(int argc, char **argv) { | |||
| 316 | ((metric == METRIC_SERVER_VERSION) && warning_range) ? warning_range : "", | 336 | ((metric == METRIC_SERVER_VERSION) && warning_range) ? warning_range : "", |
| 317 | ((metric == METRIC_SERVER_VERSION) && critical_range) ? critical_range : ""); | 337 | ((metric == METRIC_SERVER_VERSION) && critical_range) ? critical_range : ""); |
| 318 | if (np_dbi_query) { | 338 | if (np_dbi_query) { |
| 319 | if (!isnan(query_val)) /* this is also true when -e is used */ | 339 | if (!isnan(query_val)) { /* this is also true when -e is used */ |
| 320 | printf(" query=%f;%s;%s;;", query_val, ((metric == METRIC_QUERY_RESULT) && warning_range) ? warning_range : "", | 340 | printf(" query=%f;%s;%s;;", query_val, ((metric == METRIC_QUERY_RESULT) && warning_range) ? warning_range : "", |
| 321 | ((metric == METRIC_QUERY_RESULT) && critical_range) ? critical_range : ""); | 341 | ((metric == METRIC_QUERY_RESULT) && critical_range) ? critical_range : ""); |
| 342 | } | ||
| 322 | printf(" querytime=%fs;%s;%s;0;", query_time, ((metric == METRIC_QUERY_TIME) && warning_range) ? warning_range : "", | 343 | printf(" querytime=%fs;%s;%s;0;", query_time, ((metric == METRIC_QUERY_TIME) && warning_range) ? warning_range : "", |
| 323 | ((metric == METRIC_QUERY_TIME) && critical_range) ? critical_range : ""); | 344 | ((metric == METRIC_QUERY_TIME) && critical_range) ? critical_range : ""); |
| 324 | } | 345 | } |
| @@ -346,8 +367,9 @@ int process_arguments(int argc, char **argv) { | |||
| 346 | while (1) { | 367 | while (1) { |
| 347 | c = getopt_long(argc, argv, "Vvht:c:w:e:r:R:m:H:d:o:q:D:", longopts, &option); | 368 | c = getopt_long(argc, argv, "Vvht:c:w:e:r:R:m:H:d:o:q:D:", longopts, &option); |
| 348 | 369 | ||
| 349 | if (c == EOF) | 370 | if (c == EOF) { |
| 350 | break; | 371 | break; |
| 372 | } | ||
| 351 | 373 | ||
| 352 | switch (c) { | 374 | switch (c) { |
| 353 | case '?': /* usage */ | 375 | case '?': /* usage */ |
| @@ -392,29 +414,32 @@ int process_arguments(int argc, char **argv) { | |||
| 392 | } | 414 | } |
| 393 | 415 | ||
| 394 | case 'm': | 416 | case 'm': |
| 395 | if (!strcasecmp(optarg, "CONN_TIME")) | 417 | if (!strcasecmp(optarg, "CONN_TIME")) { |
| 396 | metric = METRIC_CONN_TIME; | 418 | metric = METRIC_CONN_TIME; |
| 397 | else if (!strcasecmp(optarg, "SERVER_VERSION")) | 419 | } else if (!strcasecmp(optarg, "SERVER_VERSION")) { |
| 398 | metric = METRIC_SERVER_VERSION; | 420 | metric = METRIC_SERVER_VERSION; |
| 399 | else if (!strcasecmp(optarg, "QUERY_RESULT")) | 421 | } else if (!strcasecmp(optarg, "QUERY_RESULT")) { |
| 400 | metric = METRIC_QUERY_RESULT; | 422 | metric = METRIC_QUERY_RESULT; |
| 401 | else if (!strcasecmp(optarg, "QUERY_TIME")) | 423 | } else if (!strcasecmp(optarg, "QUERY_TIME")) { |
| 402 | metric = METRIC_QUERY_TIME; | 424 | metric = METRIC_QUERY_TIME; |
| 403 | else | 425 | } else { |
| 404 | usage2(_("Invalid metric"), optarg); | 426 | usage2(_("Invalid metric"), optarg); |
| 427 | } | ||
| 405 | break; | 428 | break; |
| 406 | case 't': /* timeout */ | 429 | case 't': /* timeout */ |
| 407 | if (!is_intnonneg(optarg)) | 430 | if (!is_intnonneg(optarg)) { |
| 408 | usage2(_("Timeout interval must be a positive integer"), optarg); | 431 | usage2(_("Timeout interval must be a positive integer"), optarg); |
| 409 | else | 432 | } else { |
| 410 | timeout_interval = atoi(optarg); | 433 | timeout_interval = atoi(optarg); |
| 434 | } | ||
| 411 | 435 | ||
| 412 | break; | 436 | break; |
| 413 | case 'H': /* host */ | 437 | case 'H': /* host */ |
| 414 | if (!is_host(optarg)) | 438 | if (!is_host(optarg)) { |
| 415 | usage2(_("Invalid hostname/address"), optarg); | 439 | usage2(_("Invalid hostname/address"), optarg); |
| 416 | else | 440 | } else { |
| 417 | host = optarg; | 441 | host = optarg; |
| 442 | } | ||
| 418 | break; | 443 | break; |
| 419 | case 'v': | 444 | case 'v': |
| 420 | verbose++; | 445 | verbose++; |
| @@ -432,8 +457,9 @@ int process_arguments(int argc, char **argv) { | |||
| 432 | k = optarg; | 457 | k = optarg; |
| 433 | v = strchr(k, (int)'='); | 458 | v = strchr(k, (int)'='); |
| 434 | 459 | ||
| 435 | if (!v) | 460 | if (!v) { |
| 436 | usage2(_("Option must be '<key>=<value>'"), optarg); | 461 | usage2(_("Option must be '<key>=<value>'"), optarg); |
| 462 | } | ||
| 437 | 463 | ||
| 438 | *v = '\0'; | 464 | *v = '\0'; |
| 439 | ++v; | 465 | ++v; |
| @@ -466,27 +492,34 @@ int process_arguments(int argc, char **argv) { | |||
| 466 | } | 492 | } |
| 467 | 493 | ||
| 468 | int validate_arguments(void) { | 494 | int validate_arguments(void) { |
| 469 | if (!np_dbi_driver) | 495 | if (!np_dbi_driver) { |
| 470 | usage("Must specify a DBI driver"); | 496 | usage("Must specify a DBI driver"); |
| 497 | } | ||
| 471 | 498 | ||
| 472 | if (((metric == METRIC_QUERY_RESULT) || (metric == METRIC_QUERY_TIME)) && (!np_dbi_query)) | 499 | if (((metric == METRIC_QUERY_RESULT) || (metric == METRIC_QUERY_TIME)) && (!np_dbi_query)) { |
| 473 | usage("Must specify a query to execute (metric == QUERY_RESULT)"); | 500 | usage("Must specify a query to execute (metric == QUERY_RESULT)"); |
| 501 | } | ||
| 474 | 502 | ||
| 475 | if ((metric != METRIC_CONN_TIME) && (metric != METRIC_SERVER_VERSION) && (metric != METRIC_QUERY_RESULT) && | 503 | if ((metric != METRIC_CONN_TIME) && (metric != METRIC_SERVER_VERSION) && (metric != METRIC_QUERY_RESULT) && |
| 476 | (metric != METRIC_QUERY_TIME)) | 504 | (metric != METRIC_QUERY_TIME)) { |
| 477 | usage("Invalid metric specified"); | 505 | usage("Invalid metric specified"); |
| 506 | } | ||
| 478 | 507 | ||
| 479 | if (expect && (warning_range || critical_range || expect_re_str)) | 508 | if (expect && (warning_range || critical_range || expect_re_str)) { |
| 480 | usage("Do not mix -e and -w/-c/-r/-R"); | 509 | usage("Do not mix -e and -w/-c/-r/-R"); |
| 510 | } | ||
| 481 | 511 | ||
| 482 | if (expect_re_str && (warning_range || critical_range || expect)) | 512 | if (expect_re_str && (warning_range || critical_range || expect)) { |
| 483 | usage("Do not mix -r/-R and -w/-c/-e"); | 513 | usage("Do not mix -r/-R and -w/-c/-e"); |
| 514 | } | ||
| 484 | 515 | ||
| 485 | if (expect && (metric != METRIC_QUERY_RESULT)) | 516 | if (expect && (metric != METRIC_QUERY_RESULT)) { |
| 486 | usage("Option -e requires metric QUERY_RESULT"); | 517 | usage("Option -e requires metric QUERY_RESULT"); |
| 518 | } | ||
| 487 | 519 | ||
| 488 | if (expect_re_str && (metric != METRIC_QUERY_RESULT)) | 520 | if (expect_re_str && (metric != METRIC_QUERY_RESULT)) { |
| 489 | usage("Options -r/-R require metric QUERY_RESULT"); | 521 | usage("Options -r/-R require metric QUERY_RESULT"); |
| 522 | } | ||
| 490 | 523 | ||
| 491 | return OK; | 524 | return OK; |
| 492 | } | 525 | } |
| @@ -613,8 +646,9 @@ const char *get_field_str(dbi_conn conn, dbi_result res, unsigned short field_ty | |||
| 613 | return NULL; | 646 | return NULL; |
| 614 | } | 647 | } |
| 615 | 648 | ||
| 616 | if ((verbose && (type == TYPE_STRING)) || (verbose > 2)) | 649 | if ((verbose && (type == TYPE_STRING)) || (verbose > 2)) { |
| 617 | printf("Query returned string '%s'\n", str); | 650 | printf("Query returned string '%s'\n", str); |
| 651 | } | ||
| 618 | return str; | 652 | return str; |
| 619 | } | 653 | } |
| 620 | 654 | ||
| @@ -644,8 +678,9 @@ double get_field(dbi_conn conn, dbi_result res, unsigned short *field_type) { | |||
| 644 | return NAN; | 678 | return NAN; |
| 645 | } | 679 | } |
| 646 | if ((endptr != NULL) && (*endptr != '\0')) { | 680 | if ((endptr != NULL) && (*endptr != '\0')) { |
| 647 | if (verbose) | 681 | if (verbose) { |
| 648 | printf("Garbage after value: %s\n", endptr); | 682 | printf("Garbage after value: %s\n", endptr); |
| 683 | } | ||
| 649 | } | 684 | } |
| 650 | } else { | 685 | } else { |
| 651 | CHECK_IGNORE_ERROR(NAN); | 686 | CHECK_IGNORE_ERROR(NAN); |
| @@ -696,11 +731,12 @@ double get_query_result(dbi_conn conn, dbi_result res, const char **res_val_str, | |||
| 696 | 731 | ||
| 697 | field_type = dbi_result_get_field_type_idx(res, 1); | 732 | field_type = dbi_result_get_field_type_idx(res, 1); |
| 698 | if (field_type != DBI_TYPE_ERROR) { | 733 | if (field_type != DBI_TYPE_ERROR) { |
| 699 | if (type == TYPE_STRING) | 734 | if (type == TYPE_STRING) { |
| 700 | /* the value will be freed in dbi_result_free */ | 735 | /* the value will be freed in dbi_result_free */ |
| 701 | *res_val_str = strdup(get_field_str(conn, res, field_type)); | 736 | *res_val_str = strdup(get_field_str(conn, res, field_type)); |
| 702 | else | 737 | } else { |
| 703 | val = get_field(conn, res, &field_type); | 738 | val = get_field(conn, res, &field_type); |
| 739 | } | ||
| 704 | } | 740 | } |
| 705 | 741 | ||
| 706 | *res_val = val; | 742 | *res_val = val; |
| @@ -726,8 +762,9 @@ int do_query(dbi_conn conn, const char **res_val_str, double *res_val, double *r | |||
| 726 | 762 | ||
| 727 | assert(np_dbi_query); | 763 | assert(np_dbi_query); |
| 728 | 764 | ||
| 729 | if (verbose) | 765 | if (verbose) { |
| 730 | printf("Executing query '%s'\n", np_dbi_query); | 766 | printf("Executing query '%s'\n", np_dbi_query); |
| 767 | } | ||
| 731 | 768 | ||
| 732 | gettimeofday(&timeval_start, NULL); | 769 | gettimeofday(&timeval_start, NULL); |
| 733 | 770 | ||
| @@ -742,8 +779,9 @@ int do_query(dbi_conn conn, const char **res_val_str, double *res_val, double *r | |||
| 742 | gettimeofday(&timeval_end, NULL); | 779 | gettimeofday(&timeval_end, NULL); |
| 743 | *res_time = timediff(timeval_start, timeval_end); | 780 | *res_time = timediff(timeval_start, timeval_end); |
| 744 | 781 | ||
| 745 | if (verbose) | 782 | if (verbose) { |
| 746 | printf("Time elapsed: %f\n", *res_time); | 783 | printf("Time elapsed: %f\n", *res_time); |
| 784 | } | ||
| 747 | 785 | ||
| 748 | return status; | 786 | return status; |
| 749 | } | 787 | } |
