1611 if (token_is(tokens, DAVQL_TOKEN_KEYWORD) |
1611 if (token_is(tokens, DAVQL_TOKEN_KEYWORD) |
1612 && tokenvalue_is(tokens, "where")) { |
1612 && tokenvalue_is(tokens, "where")) { |
1613 tokens = tokens->next; |
1613 tokens = tokens->next; |
1614 tokens = ucx_list_get(tokens, |
1614 tokens = ucx_list_get(tokens, |
1615 dav_parse_where_clause(stmt, tokens)); |
1615 dav_parse_where_clause(stmt, tokens)); |
|
1616 } else if (token_is(tokens, DAVQL_TOKEN_KEYWORD) |
|
1617 && tokenvalue_is(tokens, "anywhere")) { |
|
1618 // useless, but the user may want to explicitly express his intent |
|
1619 tokens = tokens->next; |
|
1620 stmt->where = NULL; |
1616 } |
1621 } |
1617 if (stmt->errorcode) { |
1622 if (stmt->errorcode) { |
1618 return; |
1623 return; |
1619 } |
1624 } |
1620 |
1625 |
1692 tokens = ucx_list_get(tokens, |
1697 tokens = ucx_list_get(tokens, |
1693 dav_parse_where_clause(stmt, tokens)); |
1698 dav_parse_where_clause(stmt, tokens)); |
1694 } else if (token_is(tokens, DAVQL_TOKEN_KEYWORD) |
1699 } else if (token_is(tokens, DAVQL_TOKEN_KEYWORD) |
1695 && tokenvalue_is(tokens, "anywhere")) { |
1700 && tokenvalue_is(tokens, "anywhere")) { |
1696 // no-op, but we want the user to be explicit about this |
1701 // no-op, but we want the user to be explicit about this |
|
1702 tokens = tokens->next; |
1697 stmt->where = NULL; |
1703 stmt->where = NULL; |
1698 } else { |
1704 } else { |
1699 dav_error_in_context(DAVQL_ERROR_MISSING_TOKEN, |
1705 dav_error_in_context(DAVQL_ERROR_MISSING_TOKEN, |
1700 _error_missing_where, stmt, tokens); |
1706 _error_missing_where, stmt, tokens); |
|
1707 return; |
1701 } |
1708 } |
1702 } |
1709 } |
1703 |
1710 |
1704 DavQLStatement* dav_parse_statement(sstr_t srctext) { |
1711 DavQLStatement* dav_parse_statement(sstr_t srctext) { |
1705 DavQLStatement *stmt = calloc(1, sizeof(DavQLStatement)); |
1712 DavQLStatement *stmt = calloc(1, sizeof(DavQLStatement)); |