MCPcopy Create free account
hub / github.com/ByConity/ByConity / parseImpl

Method parseImpl

src/Parsers/ParserSetSensitiveQuery.cpp:16–109  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14{
15
16bool ParserSetSensitiveQuery::parseImpl(Pos & pos, ASTPtr & node, Expected & expected)
17{
18 ParserToken open(TokenType::OpeningRoundBracket);
19 ParserToken close(TokenType::ClosingRoundBracket);
20 ParserToken s_eq(TokenType::Equals);
21
22 ParserNameList columns_p;
23
24 ParserKeyword s_set("SET SENSITIVE");
25 ParserKeyword s_database("DATABASE");
26 ParserKeyword s_table("TABLE");
27 ParserKeyword s_column("COLUMN");
28 ParserUnsignedInteger set_value_p;
29
30
31 if (!s_set.ignore(pos, expected))
32 return false;
33 // ASTSetSensitiveQuery contains: database string, table string, columns ASTPtr (contains StringLiterals --> use Field.getString or something to extract)
34 auto query = std::make_shared<ASTSetSensitiveQuery>();
35
36 if (s_database.ignore(pos, expected))
37 {
38 query->target = "DATABASE";
39 if(!parseDatabase(pos, expected, query->database))
40 return false;
41 }
42 else if (s_table.ignore(pos, expected))
43 {
44 query->target = "TABLE";
45 if(!parseDatabaseAndTableName(pos, expected, query->database, query->table))
46 return false;
47 if(query->database.empty())
48 {
49 expected.add(pos, "database name");
50 return false;
51 }
52 }
53 else if (s_column.ignore(pos, expected))
54 {
55 query->target = "COLUMN";
56 if(!parseDatabaseAndTableName(pos, expected, query->database, query->table))
57 return false;
58
59 if(query->database.empty())
60 {
61 expected.add(pos, "database name");
62 return false;
63 }
64
65 if (!open.ignore(pos))
66 return false;
67
68 ASTPtr columns;
69 if (!columns_p.parse(pos, columns, expected))
70 return false;
71
72 if (!close.ignore(pos))
73 return false;

Callers

nothing calls this directly

Calls 9

parseDatabaseFunction · 0.85
get<Int64>Method · 0.80
ignoreMethod · 0.45
emptyMethod · 0.45
addMethod · 0.45
parseMethod · 0.45
sizeMethod · 0.45
nameMethod · 0.45

Tested by

no test coverage detected