File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -144,19 +144,17 @@ impl<'a> Parser<'a> {
144144 expect_keyword ( self . shift ( ) , "by" ) ?;
145145
146146 let expr = self . parse_expr ( ) ?;
147- let token = self . shift ( ) ;
147+ let token = self . peek ( ) ;
148148
149149 if let Sym :: Id ( name) = token. sym {
150150 let order = if name. eq_ignore_ascii_case ( "asc" ) {
151+ self . shift ( ) ;
151152 Order :: Asc
152153 } else if name. eq_ignore_ascii_case ( "desc" ) {
154+ self . shift ( ) ;
153155 Order :: Desc
154156 } else {
155- return Err ( ParserError :: UnexpectedToken (
156- token. line ,
157- token. col ,
158- name. to_owned ( ) ,
159- ) ) ;
157+ Order :: Asc
160158 } ;
161159
162160 return Ok ( OrderBy { expr, order } ) ;
Original file line number Diff line number Diff line change @@ -90,3 +90,9 @@ fn test_parser_with_comment() {
9090 let tokens = tokenize ( include_str ! ( "./resources/with_comment.eql" ) ) . unwrap ( ) ;
9191 insta:: assert_yaml_snapshot!( parse( tokens. as_slice( ) ) ) ;
9292}
93+
94+ #[ test]
95+ fn test_parser_order_by_no_ordering ( ) {
96+ let tokens = tokenize ( include_str ! ( "./resources/query_order_by_no_ordering.eql" ) ) . unwrap ( ) ;
97+ insta:: assert_yaml_snapshot!( parse( tokens. as_slice( ) ) ) ;
98+ }
Original file line number Diff line number Diff line change 1+ FROM e IN events
2+ ORDER BY e.data.price
3+ PROJECT INTO e
Original file line number Diff line number Diff line change 1+ -- -
2+ source : src / tests / parser .rs
3+ expression : parse (tokens .as_slice ())
4+ -- -
5+ Ok :
6+ attrs :
7+ pos :
8+ line : 1
9+ col : 1
10+ sources :
11+ - binding :
12+ name : e
13+ pos :
14+ line : 1
15+ col : 6
16+ kind :
17+ Name : events
18+ predicate : ~
19+ group_by : ~
20+ order_by :
21+ expr :
22+ attrs :
23+ pos :
24+ line : 2
25+ col : 10
26+ value :
27+ Access :
28+ target :
29+ attrs :
30+ pos :
31+ line : 2
32+ col : 10
33+ value :
34+ Access :
35+ target :
36+ attrs :
37+ pos :
38+ line : 2
39+ col : 10
40+ value :
41+ Id : e
42+ field : data
43+ field : price
44+ order : Asc
45+ limit : ~
46+ projection :
47+ attrs :
48+ pos :
49+ line : 3
50+ col : 14
51+ value :
52+ Id : e
53+ distinct : false
54+ meta : ~
You can’t perform that action at this time.
0 commit comments