@@ -22,14 +22,14 @@ use matches::assert_matches;
22
22
23
23
use sqlparser:: ast:: * ;
24
24
use sqlparser:: parser:: * ;
25
- use sqlparser:: test_utils:: { all_dialects, expr_from_projection, only} ;
25
+ use sqlparser:: test_utils:: { all_dialects, expr_from_projection, number , only} ;
26
26
27
27
#[ test]
28
28
fn parse_insert_values ( ) {
29
29
let row = vec ! [
30
- Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ,
31
- Expr :: Value ( Value :: Number ( "2" . into ( ) ) ) ,
32
- Expr :: Value ( Value :: Number ( "3" . into ( ) ) ) ,
30
+ Expr :: Value ( number ( "1" ) ) ,
31
+ Expr :: Value ( number ( "2" ) ) ,
32
+ Expr :: Value ( number ( "3" ) ) ,
33
33
] ;
34
34
let rows1 = vec ! [ row. clone( ) ] ;
35
35
let rows2 = vec ! [ row. clone( ) , row] ;
@@ -107,15 +107,15 @@ fn parse_update() {
107
107
vec![
108
108
Assignment {
109
109
id: "a" . into( ) ,
110
- value: Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ,
110
+ value: Expr :: Value ( number ( "1" ) ) ,
111
111
} ,
112
112
Assignment {
113
113
id: "b" . into( ) ,
114
- value: Expr :: Value ( Value :: Number ( "2" . into ( ) ) ) ,
114
+ value: Expr :: Value ( number ( "2" ) ) ,
115
115
} ,
116
116
Assignment {
117
117
id: "c" . into( ) ,
118
- value: Expr :: Value ( Value :: Number ( "3" . into ( ) ) ) ,
118
+ value: Expr :: Value ( number ( "3" ) ) ,
119
119
} ,
120
120
]
121
121
) ;
@@ -181,7 +181,7 @@ fn parse_where_delete_statement() {
181
181
Expr :: BinaryOp {
182
182
left: Box :: new( Expr :: Identifier ( "name" . to_string( ) ) ) ,
183
183
op: Eq ,
184
- right: Box :: new( Expr :: Value ( Value :: Number ( "5" . into ( ) ) ) ) ,
184
+ right: Box :: new( Expr :: Value ( number ( "5" ) ) ) ,
185
185
} ,
186
186
selection. unwrap( ) ,
187
187
) ;
@@ -286,7 +286,7 @@ fn parse_column_aliases() {
286
286
} = only ( & select. projection )
287
287
{
288
288
assert_eq ! ( & BinaryOperator :: Plus , op) ;
289
- assert_eq ! ( & Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) , right. as_ref( ) ) ;
289
+ assert_eq ! ( & Expr :: Value ( number ( "1" ) ) , right. as_ref( ) ) ;
290
290
assert_eq ! ( "newname" , alias) ;
291
291
} else {
292
292
panic ! ( "Expected ExprWithAlias" )
@@ -426,6 +426,20 @@ fn parse_escaped_single_quote_string_predicate() {
426
426
) ;
427
427
}
428
428
429
+ #[ test]
430
+ fn parse_number ( ) {
431
+ let expr = verified_expr ( "1.0" ) ;
432
+
433
+ #[ cfg( feature = "bigdecimal" ) ]
434
+ assert_eq ! (
435
+ expr,
436
+ Expr :: Value ( Value :: Number ( bigdecimal:: BigDecimal :: from( 1 ) ) )
437
+ ) ;
438
+
439
+ #[ cfg( not( feature = "bigdecimal" ) ) ]
440
+ assert_eq ! ( expr, Expr :: Value ( Value :: Number ( "1.0" . into( ) ) ) ) ;
441
+ }
442
+
429
443
#[ test]
430
444
fn parse_compound_expr_1 ( ) {
431
445
use self :: BinaryOperator :: * ;
@@ -527,9 +541,9 @@ fn parse_not_precedence() {
527
541
Expr :: UnaryOp {
528
542
op: UnaryOperator :: Not ,
529
543
expr: Box :: new( Expr :: Between {
530
- expr: Box :: new( Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ) ,
531
- low: Box :: new( Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ) ,
532
- high: Box :: new( Expr :: Value ( Value :: Number ( "2" . into ( ) ) ) ) ,
544
+ expr: Box :: new( Expr :: Value ( number ( "1" ) ) ) ,
545
+ low: Box :: new( Expr :: Value ( number ( "1" ) ) ) ,
546
+ high: Box :: new( Expr :: Value ( number ( "2" ) ) ) ,
533
547
negated: true ,
534
548
} ) ,
535
549
} ,
@@ -658,8 +672,8 @@ fn parse_between() {
658
672
assert_eq ! (
659
673
Expr :: Between {
660
674
expr: Box :: new( Expr :: Identifier ( "age" . to_string( ) ) ) ,
661
- low: Box :: new( Expr :: Value ( Value :: Number ( "25" . into ( ) ) ) ) ,
662
- high: Box :: new( Expr :: Value ( Value :: Number ( "32" . into ( ) ) ) ) ,
675
+ low: Box :: new( Expr :: Value ( number ( "25" ) ) ) ,
676
+ high: Box :: new( Expr :: Value ( number ( "32" ) ) ) ,
663
677
negated,
664
678
} ,
665
679
select. selection. unwrap( )
@@ -676,16 +690,16 @@ fn parse_between_with_expr() {
676
690
let select = verified_only_select ( sql) ;
677
691
assert_eq ! (
678
692
Expr :: IsNull ( Box :: new( Expr :: Between {
679
- expr: Box :: new( Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ) ,
693
+ expr: Box :: new( Expr :: Value ( number ( "1" ) ) ) ,
680
694
low: Box :: new( Expr :: BinaryOp {
681
- left: Box :: new( Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ) ,
695
+ left: Box :: new( Expr :: Value ( number ( "1" ) ) ) ,
682
696
op: Plus ,
683
- right: Box :: new( Expr :: Value ( Value :: Number ( "2" . into ( ) ) ) ) ,
697
+ right: Box :: new( Expr :: Value ( number ( "2" ) ) ) ,
684
698
} ) ,
685
699
high: Box :: new( Expr :: BinaryOp {
686
- left: Box :: new( Expr :: Value ( Value :: Number ( "3" . into ( ) ) ) ) ,
700
+ left: Box :: new( Expr :: Value ( number ( "3" ) ) ) ,
687
701
op: Plus ,
688
- right: Box :: new( Expr :: Value ( Value :: Number ( "4" . into ( ) ) ) ) ,
702
+ right: Box :: new( Expr :: Value ( number ( "4" ) ) ) ,
689
703
} ) ,
690
704
negated: false ,
691
705
} ) ) ,
@@ -697,19 +711,19 @@ fn parse_between_with_expr() {
697
711
assert_eq ! (
698
712
Expr :: BinaryOp {
699
713
left: Box :: new( Expr :: BinaryOp {
700
- left: Box :: new( Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ) ,
714
+ left: Box :: new( Expr :: Value ( number ( "1" ) ) ) ,
701
715
op: BinaryOperator :: Eq ,
702
- right: Box :: new( Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ) ,
716
+ right: Box :: new( Expr :: Value ( number ( "1" ) ) ) ,
703
717
} ) ,
704
718
op: BinaryOperator :: And ,
705
719
right: Box :: new( Expr :: Between {
706
720
expr: Box :: new( Expr :: BinaryOp {
707
- left: Box :: new( Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ) ,
721
+ left: Box :: new( Expr :: Value ( number ( "1" ) ) ) ,
708
722
op: BinaryOperator :: Plus ,
709
723
right: Box :: new( Expr :: Identifier ( "x" . to_string( ) ) ) ,
710
724
} ) ,
711
- low: Box :: new( Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ) ,
712
- high: Box :: new( Expr :: Value ( Value :: Number ( "2" . into ( ) ) ) ) ,
725
+ low: Box :: new( Expr :: Value ( number ( "1" ) ) ) ,
726
+ high: Box :: new( Expr :: Value ( number ( "2" ) ) ) ,
713
727
negated: false ,
714
728
} ) ,
715
729
} ,
@@ -792,7 +806,7 @@ fn parse_select_having() {
792
806
distinct: false
793
807
} ) ) ,
794
808
op: BinaryOperator :: Gt ,
795
- right: Box :: new( Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) )
809
+ right: Box :: new( Expr :: Value ( number ( "1" ) ) )
796
810
} ) ,
797
811
select. having
798
812
) ;
@@ -988,7 +1002,7 @@ fn parse_create_table_with_options() {
988
1002
} ,
989
1003
SqlOption {
990
1004
name: "a" . into( ) ,
991
- value: Value :: Number ( "123" . into ( ) )
1005
+ value: number ( "123" )
992
1006
} ,
993
1007
] ,
994
1008
with_options
@@ -1186,11 +1200,11 @@ fn parse_literal_decimal() {
1186
1200
let select = verified_only_select ( sql) ;
1187
1201
assert_eq ! ( 2 , select. projection. len( ) ) ;
1188
1202
assert_eq ! (
1189
- & Expr :: Value ( Value :: Number ( "0.300000000000000004" . into ( ) ) ) ,
1203
+ & Expr :: Value ( number ( "0.300000000000000004" ) ) ,
1190
1204
expr_from_projection( & select. projection[ 0 ] ) ,
1191
1205
) ;
1192
1206
assert_eq ! (
1193
- & Expr :: Value ( Value :: Number ( "9007199254740993.0" . into ( ) ) ) ,
1207
+ & Expr :: Value ( number ( "9007199254740993.0" ) ) ,
1194
1208
expr_from_projection( & select. projection[ 1 ] ) ,
1195
1209
)
1196
1210
}
@@ -1438,12 +1452,12 @@ fn parse_searched_case_expr() {
1438
1452
BinaryOp {
1439
1453
left: Box :: new( Identifier ( "bar" . to_string( ) ) ) ,
1440
1454
op: Eq ,
1441
- right: Box :: new( Expr :: Value ( Value :: Number ( "0" . into ( ) ) ) )
1455
+ right: Box :: new( Expr :: Value ( number ( "0" ) ) )
1442
1456
} ,
1443
1457
BinaryOp {
1444
1458
left: Box :: new( Identifier ( "bar" . to_string( ) ) ) ,
1445
1459
op: GtEq ,
1446
- right: Box :: new( Expr :: Value ( Value :: Number ( "0" . into ( ) ) ) )
1460
+ right: Box :: new( Expr :: Value ( number ( "0" ) ) )
1447
1461
}
1448
1462
] ,
1449
1463
results: vec![
@@ -1468,7 +1482,7 @@ fn parse_simple_case_expr() {
1468
1482
assert_eq ! (
1469
1483
& Case {
1470
1484
operand: Some ( Box :: new( Identifier ( "foo" . to_string( ) ) ) ) ,
1471
- conditions: vec![ Expr :: Value ( Value :: Number ( "1" . into ( ) ) ) ] ,
1485
+ conditions: vec![ Expr :: Value ( number ( "1" ) ) ] ,
1472
1486
results: vec![ Expr :: Value ( Value :: SingleQuotedString ( "Y" . to_string( ) ) ) , ] ,
1473
1487
else_result: Some ( Box :: new( Expr :: Value ( Value :: SingleQuotedString (
1474
1488
"N" . to_string( )
@@ -2080,7 +2094,7 @@ fn parse_create_view_with_options() {
2080
2094
} ,
2081
2095
SqlOption {
2082
2096
name: "a" . into( ) ,
2083
- value: Value :: Number ( "123" . into ( ) )
2097
+ value: number ( "123" )
2084
2098
} ,
2085
2099
] ,
2086
2100
with_options
@@ -2249,7 +2263,7 @@ fn parse_fetch() {
2249
2263
let fetch_first_two_rows_only = Some ( Fetch {
2250
2264
with_ties : false ,
2251
2265
percent : false ,
2252
- quantity : Some ( Expr :: Value ( Value :: Number ( "2" . into ( ) ) ) ) ,
2266
+ quantity : Some ( Expr :: Value ( number ( "2" ) ) ) ,
2253
2267
} ) ;
2254
2268
let ast = verified_query ( "SELECT foo FROM bar FETCH FIRST 2 ROWS ONLY" ) ;
2255
2269
assert_eq ! ( ast. fetch, fetch_first_two_rows_only) ;
@@ -2276,7 +2290,7 @@ fn parse_fetch() {
2276
2290
Some ( Fetch {
2277
2291
with_ties: true ,
2278
2292
percent: false ,
2279
- quantity: Some ( Expr :: Value ( Value :: Number ( "2" . into ( ) ) ) ) ,
2293
+ quantity: Some ( Expr :: Value ( number ( "2" ) ) ) ,
2280
2294
} )
2281
2295
) ;
2282
2296
let ast = verified_query ( "SELECT foo FROM bar FETCH FIRST 50 PERCENT ROWS ONLY" ) ;
@@ -2285,7 +2299,7 @@ fn parse_fetch() {
2285
2299
Some ( Fetch {
2286
2300
with_ties: false ,
2287
2301
percent: true ,
2288
- quantity: Some ( Expr :: Value ( Value :: Number ( "50" . into ( ) ) ) ) ,
2302
+ quantity: Some ( Expr :: Value ( number ( "50" ) ) ) ,
2289
2303
} )
2290
2304
) ;
2291
2305
let ast = verified_query (
0 commit comments