MCPcopy Create free account
hub / github.com/bloomberg/comdb2 / replay

Function replay

tools/cdb2_sqlreplay/cdb2_sqlreplay.cpp:626–740  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

624}
625
626void replay(cdb2_hndl_tp *db, cson_value *event_val) {
627 const char *sql = get_strprop(event_val, "sql");
628 if(sql == nullptr) {
629 const char *fp = get_strprop(event_val, "fingerprint");
630 if (fp == nullptr) {
631 std::cerr << "Error: No fingerprint logged?" << std::endl;
632 return;
633 }
634 auto s = sqltrack.find(fp);
635 if (s == sqltrack.end()) {
636 std::cerr << "Error: Unknown fingerprint? " << fp << std::endl;
637 return;
638 }
639 sql = (*s).second.c_str();
640 }
641
642 std::vector<uint8_t *> blobs_vect;
643 bool ok = do_bindings(db, event_val, blobs_vect);
644 if (!ok) {
645 free_blobs(blobs_vect);
646 return;
647 }
648
649 if (verbose)
650 std::cout << sql << std::endl;
651 int64_t start_time = hrtime();
652 int rc = cdb2_run_statement(db, sql);
653 cdb2_clearbindings(db);
654 free_blobs(blobs_vect);
655
656 if (rc != CDB2_OK) {
657 std::cerr << "Error: run rc " << rc << ": " << cdb2_errstr(db) << std::endl;
658 return;
659 }
660
661 /* TODO: have switch to print or not results */
662 int ncols = cdb2_numcolumns(db);
663 int64_t rows = 0;
664 rc = cdb2_next_record(db);
665 while (rc == CDB2_OK) {
666 rows++;
667 for (int col = 0; col < ncols; col++) {
668 void *val = cdb2_column_value(db, col);
669 if (val == NULL) {
670 if (verbose)
671 fprintf(stdout, "%s=NULL", cdb2_column_name(db, col));
672 } else {
673 if (verbose)
674 printCol(stdout, db, val, col, DEFAULT);
675 }
676 if (col != ncols - 1) {
677 if (verbose)
678 fprintf(stdout, ", ");
679 }
680 }
681 if (verbose)
682 std::cout << std::endl;
683 rc = cdb2_next_record(db);

Callers 2

replay_transactionFunction · 0.85
handle_sqlFunction · 0.85

Calls 15

get_strpropFunction · 0.85
do_bindingsFunction · 0.85
free_blobsFunction · 0.85
hrtimeFunction · 0.85
cdb2_run_statementFunction · 0.85
cdb2_clearbindingsFunction · 0.85
cdb2_errstrFunction · 0.85
cdb2_numcolumnsFunction · 0.85
cdb2_next_recordFunction · 0.85
cdb2_column_valueFunction · 0.85
cdb2_column_nameFunction · 0.85
last_costFunction · 0.85

Tested by

no test coverage detected