MCPcopy Create free account
hub / github.com/apache/kvrocks / ParseSQLQuery

Function ParseSQLQuery

src/commands/cmd_search.cc:233–255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

231using CommandParserWithNode = std::pair<CommandParserFromConst<std::vector<std::string>>, std::unique_ptr<kqir::Node>>;
232
233static StatusOr<CommandParserWithNode> ParseSQLQuery(const std::vector<std::string> &args) {
234 CommandParser parser(args, 1);
235
236 auto sql = GET_OR_RET(parser.TakeStr());
237
238 kqir::ParamMap param_map;
239 if (parser.EatEqICase("PARAMS")) {
240 auto nargs = GET_OR_RET(parser.TakeInt<size_t>());
241 if (nargs % 2 != 0) {
242 return {Status::NotOK, "nargs of PARAMS must be multiple of 2"};
243 }
244
245 for (size_t i = 0; i < nargs / 2; ++i) {
246 auto key = GET_OR_RET(parser.TakeStr());
247 auto val = GET_OR_RET(parser.TakeStr());
248
249 param_map.emplace(key, val);
250 }
251 }
252
253 auto ir = GET_OR_RET(kqir::sql::ParseToIR(kqir::peg::string_input(sql, "ft.searchsql"), param_map));
254 return std::make_pair(parser, std::move(ir));
255}
256
257class CommandFTExplainSQL : public Commander {
258 Status Parse([[maybe_unused]] const std::vector<std::string> &args) override {

Callers 2

ParseMethod · 0.85
ParseMethod · 0.85

Calls 3

TakeStrMethod · 0.80
EatEqICaseMethod · 0.80
ParseToIRFunction · 0.50

Tested by

no test coverage detected