MCPcopy Create free account
hub / github.com/4paradigm/OpenMLDB / RequestExecuteSQL

Method RequestExecuteSQL

src/sdk/sql_sdk_test.h:421–519  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

419}
420
421void SQLSDKQueryTest::RequestExecuteSQL(hybridse::sqlcase::SqlCase& sql_case, // NOLINT
422 std::shared_ptr<SQLRouter> router, bool has_batch_request, bool is_procedure,
423 bool is_asyn) {
424 hybridse::sdk::Status status;
425 // execute SQL
426 std::string sql = sql_case.sql_str();
427 for (size_t i = 0; i < sql_case.inputs().size(); i++) {
428 std::string placeholder = "{" + std::to_string(i) + "}";
429 boost::replace_all(sql, placeholder, sql_case.inputs()[i].name_);
430 }
431 boost::replace_all(sql, "{auto}", hybridse::sqlcase::SqlCase::GenRand("auto_t"));
432 LOG(INFO) << sql;
433 std::string lower_sql = sql;
434 boost::to_lower(lower_sql);
435 if (boost::algorithm::starts_with(lower_sql, "select")) {
436 LOG(INFO) << "GetRequestRow start";
437 auto request_row = router->GetRequestRow(sql_case.db(), sql, &status);
438 LOG(INFO) << "GetRequestRow done";
439 // success check
440 LOG(INFO) << "sql case success check: required success " << (sql_case.expect().success_ ? "true" : "false");
441 if (!sql_case.expect().success_) {
442 if ((request_row)) {
443 FAIL() << "sql case expect success == false";
444 }
445 LOG(INFO) << "sql case success false check done!";
446 return;
447 }
448 if (!request_row) {
449 FAIL() << "sql case expect success == true";
450 }
451
452 hybridse::type::TableDef insert_table;
453 std::vector<hybridse::codec::Row> insert_rows;
454 std::vector<std::string> inserts;
455 if (!has_batch_request) {
456 ASSERT_TRUE(sql_case.ExtractInputTableDef(insert_table, 0));
457 ASSERT_TRUE(sql_case.ExtractInputData(insert_rows, 0));
458 sql_case.BuildInsertSqlListFromInput(0, &inserts);
459 } else {
460 ASSERT_TRUE(sql_case.ExtractInputTableDef(sql_case.batch_request_, insert_table));
461 ASSERT_TRUE(sql_case.ExtractInputData(sql_case.batch_request_, insert_rows));
462 }
463 CheckSchema(insert_table.columns(), *(request_row->GetSchema().get()));
464 LOG(INFO) << "Request Row:\n";
465 PrintRows(insert_table.columns(), insert_rows);
466
467 hybridse::codec::RowView row_view(insert_table.columns());
468 std::vector<std::shared_ptr<hybridse::sdk::ResultSet>> results;
469 LOG(INFO) << "Request execute sql start!";
470 for (size_t i = 0; i < insert_rows.size(); i++) {
471 row_view.Reset(insert_rows[i].buf());
472 CovertHybridSERowToRequestRow(&row_view, request_row);
473 std::shared_ptr<hybridse::sdk::ResultSet> rs;
474 if (is_procedure) {
475 if (is_asyn) {
476 LOG(INFO) << "-------asyn procedure----------";
477 auto future = router->CallProcedure(sql_case.db(), sql_case.sp_name_, 1000, request_row, &status);
478 if (!future || status.code != 0) FAIL() << "sql case expect success == true";

Callers

nothing calls this directly

Calls 12

to_stringFunction · 0.85
GetRequestRowMethod · 0.80
ExecuteInsertMethod · 0.80
GenRandFunction · 0.70
sizeMethod · 0.45
getMethod · 0.45
GetSchemaMethod · 0.45
ResetMethod · 0.45
CallProcedureMethod · 0.45
GetResultSetMethod · 0.45
ExecuteSQLMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected