Parse INTERSECT operation
(tokens: &[Token])
| 930 | |
| 931 | /// Parse INTERSECT operation |
| 932 | fn parse_intersect_op(tokens: &[Token]) -> IResult<&[Token], (SetOperationType, Query)> { |
| 933 | map( |
| 934 | tuple(( |
| 935 | expect_token(Token::Intersect), |
| 936 | opt(expect_token(Token::All)), |
| 937 | parse_query_term, |
| 938 | )), |
| 939 | |(_, all, right)| { |
| 940 | let op = if all.is_some() { |
| 941 | SetOperationType::IntersectAll |
| 942 | } else { |
| 943 | SetOperationType::Intersect |
| 944 | }; |
| 945 | (op, right) |
| 946 | }, |
| 947 | )(tokens) |
| 948 | } |
| 949 | |
| 950 | /// Parse a SELECT statement: SELECT [DISTINCT|ALL] (* | return_items) [FROM graph_expression [match_statement]] [WHERE] [GROUP BY] [HAVING] [ORDER BY] [LIMIT] |
| 951 | fn select_statement(tokens: &[Token]) -> IResult<&[Token], SelectStatement> { |
no test coverage detected