Parse aggregate function call for ORDER BY */
| 1689 | |
| 1690 | /* Parse aggregate function call for ORDER BY */ |
| 1691 | static void parse_order_by_agg(parser_t *p, char *buf, size_t buf_sz) { |
| 1692 | const char *fn = agg_func_name(peek(p)->type); |
| 1693 | advance(p); |
| 1694 | expect(p, TOK_LPAREN); |
| 1695 | if (match(p, TOK_STAR)) { |
| 1696 | snprintf(buf, buf_sz, "%s(*)", fn); |
| 1697 | } else { |
| 1698 | const cbm_token_t *var = expect(p, TOK_IDENT); |
| 1699 | snprintf(buf, buf_sz, "%s(%s)", fn, var ? var->text : ""); |
| 1700 | } |
| 1701 | expect(p, TOK_RPAREN); |
| 1702 | } |
| 1703 | |
| 1704 | /* Parse var[.prop] for ORDER BY */ |
| 1705 | static void parse_order_by_var(parser_t *p, char *buf, size_t buf_sz) { |
no test coverage detected