MCPcopy Create free account
hub / github.com/Restream/reindexer / captureArrayContent

Method captureArrayContent

cpp_src/core/function/expression_evaluator.cc:26–47  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24} // namespace
25
26void ExpressionEvaluator::captureArrayContent(Tokenizer& parser) {
27 std::ignore = arrayValues_.MarkArray();
28 Token tok = parser.NextToken(Tokenizer::Flags::NoFlags);
29 if (tok.Text() == "]"sv) {
30 return;
31 }
32 for (;; tok = parser.NextToken(Tokenizer::Flags::NoFlags)) {
33 if (tok.Text() == "]"sv) [[unlikely]] {
34 const auto range = parser.Where(tok);
35 throw SqlParserError(range, "Expected field value, but found ']' in query, {}", range);
36 }
37 arrayValues_.emplace_back(Token2kv(tok, parser, CompositeAllowed_False, FieldAllowed_False, NullAllowed_True));
38 tok = parser.NextToken(Tokenizer::Flags::NoFlags);
39 if (tok.Text() == "]"sv) {
40 break;
41 }
42 if (tok.Text() != ","sv) [[unlikely]] {
43 const auto range = parser.Where(tok);
44 throw SqlParserError(range, "Expected ']' or ',', but found '{}' in query, {}", tok.Text(), range);
45 }
46 }
47}
48
49void ExpressionEvaluator::throwUnexpectedTokenError(Tokenizer& parser, const Token& outTok) {
50 if (state_ == StateArrayConcat || parser.PeekToken(Tokenizer::Flags::TreatSignAsToken).Text() == "|"sv) {

Callers

nothing calls this directly

Calls 5

SqlParserErrorClass · 0.85
Token2kvFunction · 0.85
NextTokenMethod · 0.45
WhereMethod · 0.45
emplace_backMethod · 0.45

Tested by

no test coverage detected