@@ -264,6 +264,28 @@ fn test_parse_expression() {
264
264
. into( ) ,
265
265
want_error: false ,
266
266
} ,
267
+ TestCase {
268
+ name: "(3 between 1 and 5)" . into( ) ,
269
+ input: vec![
270
+ Token :: LeftParentheses ,
271
+ Token :: Integer ( 3 ) ,
272
+ Token :: Between ,
273
+ Token :: Integer ( 1 ) ,
274
+ Token :: And ,
275
+ Token :: Integer ( 5 ) ,
276
+ Token :: RightParentheses ,
277
+ ] ,
278
+ expected: ParenthesesExpression {
279
+ expression: BetweenExpression {
280
+ a: SQLExpression :: Integer ( 3 ) ,
281
+ x: SQLExpression :: Integer ( 1 ) ,
282
+ y: SQLExpression :: Integer ( 5 ) ,
283
+ }
284
+ . into( ) ,
285
+ }
286
+ . into( ) ,
287
+ want_error: false ,
288
+ } ,
267
289
TestCase {
268
290
name: "3.0 between 1.2 and 5.3" . into( ) ,
269
291
input: vec![
@@ -606,6 +628,35 @@ fn test_parse_expression() {
606
628
. into( ) ,
607
629
want_error: false ,
608
630
} ,
631
+ TestCase {
632
+ name: r#"(SELECT 1) BETWEEN 0 AND 5"# . into( ) ,
633
+ input: vec![
634
+ Token :: LeftParentheses ,
635
+ Token :: Select ,
636
+ Token :: Integer ( 1 ) ,
637
+ Token :: RightParentheses ,
638
+ Token :: Between ,
639
+ Token :: Integer ( 0 ) ,
640
+ Token :: And ,
641
+ Token :: Integer ( 5 ) ,
642
+ ] ,
643
+ expected: BetweenExpression {
644
+ a: SQLExpression :: Subquery (
645
+ SelectQuery :: builder( )
646
+ . add_select_item(
647
+ SelectItem :: builder( )
648
+ . set_item( SQLExpression :: Integer ( 1 ) )
649
+ . build( ) ,
650
+ )
651
+ . build( )
652
+ . into( ) ,
653
+ ) ,
654
+ x: SQLExpression :: Integer ( 0 ) ,
655
+ y: SQLExpression :: Integer ( 5 ) ,
656
+ }
657
+ . into( ) ,
658
+ want_error: false ,
659
+ } ,
609
660
TestCase {
610
661
name: "오류: * 5" . into( ) ,
611
662
input: vec![ Token :: Operator ( OperatorToken :: Asterisk ) , Token :: Integer ( 5 ) ] ,
0 commit comments