| 618 | } |
| 619 | |
| 620 | GroupByNode Parser::ParseGroupByList(const string &group_by, ParserOptions options) { |
| 621 | // construct a mock SELECT query with our group_by expressions |
| 622 | string mock_query = StringUtil::Format("SELECT 42 GROUP BY %s", group_by); |
| 623 | // parse the query |
| 624 | Parser parser(options); |
| 625 | parser.ParseQuery(mock_query); |
| 626 | // check the result |
| 627 | if (parser.statements.size() != 1 || parser.statements[0]->type != StatementType::SELECT_STATEMENT) { |
| 628 | throw ParserException("Expected a single SELECT statement"); |
| 629 | } |
| 630 | auto &select = parser.statements[0]->Cast<SelectStatement>(); |
| 631 | D_ASSERT(select.node->type == QueryNodeType::SELECT_NODE); |
| 632 | auto &select_node = select.node->Cast<SelectNode>(); |
| 633 | return std::move(select_node.groups); |
| 634 | } |
| 635 | |
| 636 | vector<OrderByNode> Parser::ParseOrderList(const string &select_list, ParserOptions options) { |
| 637 | // construct a mock query |
nothing calls this directly
no test coverage detected