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

Method ProcessQuery

src/tablet/tablet_impl.cc:1585–1686  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1583}
1584
1585void TabletImpl::ProcessQuery(RpcController* ctrl,
1586 const fedb::api::QueryRequest* request,
1587 ::fedb::api::QueryResponse* response,
1588 butil::IOBuf* buf) {
1589 ::hybridse::base::Status status;
1590 if (request->is_batch()) {
1591 ::hybridse::vm::BatchRunSession session;
1592 if (request->is_debug()) {
1593 session.EnableDebug();
1594 }
1595 {
1596 bool ok =
1597 engine_->Get(request->sql(), request->db(), session, status);
1598 if (!ok) {
1599 response->set_msg(status.msg);
1600 response->set_code(::fedb::base::kSQLCompileError);
1601 DLOG(WARNING) << "fail to compile sql " << request->sql();
1602 return;
1603 }
1604 }
1605
1606 auto table = session.Run();
1607 if (!table) {
1608 DLOG(WARNING) << "fail to run sql " << request->sql();
1609 response->set_code(::fedb::base::kSQLRunError);
1610 response->set_msg("fail to run sql");
1611 return;
1612 }
1613 auto iter = table->GetIterator();
1614 if (!iter) {
1615 response->set_schema(session.GetEncodedSchema());
1616 response->set_byte_size(0);
1617 response->set_count(0);
1618 response->set_code(::fedb::base::kOk);
1619 return;
1620 }
1621 iter->SeekToFirst();
1622 uint32_t byte_size = 0;
1623 uint32_t count = 0;
1624 while (iter->Valid()) {
1625 const ::hybridse::codec::Row& row = iter->GetValue();
1626 if (byte_size > FLAGS_scan_max_bytes_size) {
1627 LOG(WARNING) << "reach the max byte size truncate result";
1628 response->set_schema(session.GetEncodedSchema());
1629 response->set_byte_size(byte_size);
1630 response->set_count(count);
1631 response->set_code(::fedb::base::kOk);
1632 return;
1633 }
1634 byte_size += row.size();
1635 iter->Next();
1636 buf->append(reinterpret_cast<void*>(row.buf()), row.size());
1637 count += 1;
1638 }
1639 response->set_schema(session.GetEncodedSchema());
1640 response->set_byte_size(byte_size);
1641 response->set_count(count);
1642 response->set_code(::fedb::base::kOk);

Callers

nothing calls this directly

Calls 12

appendMethod · 0.80
GetRequestInfoMethod · 0.80
codeMethod · 0.80
msgMethod · 0.80
GetMethod · 0.45
RunMethod · 0.45
GetIteratorMethod · 0.45
SeekToFirstMethod · 0.45
ValidMethod · 0.45
GetValueMethod · 0.45
sizeMethod · 0.45
NextMethod · 0.45

Tested by

no test coverage detected