Skip to content

Commit 0cf0dc0

Browse files
committed
split tests
1 parent af3ecf8 commit 0cf0dc0

File tree

1 file changed

+40
-5
lines changed

1 file changed

+40
-5
lines changed

tests/sqlparser_bigquery.rs

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ fn parse_byte_literal() {
5151
}
5252

5353
#[test]
54-
fn parse_struct_literal() {
54+
fn parse_tuple_struct_literal() {
5555
// tuple syntax: https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#tuple_syntax
5656
// syntax: (expr1, expr2 [, ... ])
5757
let sql = "SELECT (1, 2, 3), (1, 1.0, '123', true)";
@@ -74,9 +74,12 @@ fn parse_struct_literal() {
7474
]),
7575
expr_from_projection(&select.projection[1])
7676
);
77+
}
7778

78-
// // typeless struct syntax https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#typeless_struct_syntax
79-
// // syntax: STRUCT( expr1 [AS field_name] [, ... ])
79+
#[test]
80+
fn parse_typeless_struct_syntax() {
81+
// typeless struct syntax https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#typeless_struct_syntax
82+
// syntax: STRUCT( expr1 [AS field_name] [, ... ])
8083
let sql = "SELECT STRUCT(1, 2, 3), STRUCT('abc'), STRUCT(1, t.str_col), STRUCT(1 AS a, 'abc' AS b), STRUCT(str_col AS abc)";
8184
let select = bigquery().verified_only_select(sql);
8285
assert_eq!(5, select.projection.len());
@@ -156,12 +159,43 @@ fn parse_struct_literal() {
156159
},
157160
expr_from_projection(&select.projection[4])
158161
);
159-
// // typed struct syntax https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#typed_struct_syntax
160-
// // syntax: STRUCT<[field_name] field_type, ...>( expr1 [, ... ])
162+
}
163+
164+
#[test]
165+
fn parse_typed_struct_syntax() {
166+
// typed struct syntax https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#typed_struct_syntax
167+
// syntax: STRUCT<[field_name] field_type, ...>( expr1 [, ... ])
161168
// let sql = r#"SELECT STRUCT<int64>(5), STRUCT<x int64, y string>(1, t.str_col), STRUCT<int64>(int_col)"#;
162169
let sql = r#"SELECT STRUCT<BOOL>(true), STRUCT<BYTES>(B'abc')"#;
163170
let select = bigquery().verified_only_select(sql);
164171
assert_eq!(2, select.projection.len());
172+
assert_eq!(
173+
&Expr::Struct {
174+
expr: Box::new(StructExpr(vec![ExprWithFieldName {
175+
expr: Expr::Value(Value::Boolean(true)),
176+
field_name: None
177+
}])),
178+
type_ann: Some(vec![StructTypeAnn {
179+
field_name: None,
180+
field_type: StructFieldType::Bool
181+
}])
182+
},
183+
expr_from_projection(&select.projection[0])
184+
);
185+
186+
assert_eq!(
187+
&Expr::Struct {
188+
expr: Box::new(StructExpr(vec![ExprWithFieldName {
189+
expr: Expr::Value(Value::SingleQuotedByteStringLiteral("abc".to_string())),
190+
field_name: None
191+
}])),
192+
type_ann: Some(vec![StructTypeAnn {
193+
field_name: None,
194+
field_type: StructFieldType::Bytes
195+
}])
196+
},
197+
expr_from_projection(&select.projection[1])
198+
);
165199

166200
let sql = r#"SELECT STRUCT<DATE>("2011-05-05"), STRUCT<DATETIME>(DATETIME(2008, 12, 25, 05, 30, 00)), STRUCT<FLOAT64>(5.0), STRUCT<INT64>(1)"#;
167201
let select = bigquery().verified_only_select(sql);
@@ -175,6 +209,7 @@ fn parse_struct_literal() {
175209
let select = bigquery().verified_only_select(sql);
176210
assert_eq!(3, select.projection.len());
177211

212+
// TODO: support
178213
// let sql = r#"SELECT STRUCT<NUMERIC>(NUMERIC '1'), STRUCT<BIGNUMERIC>(BIGNUMERIC '1')"#;
179214
// let select = bigquery().verified_only_select(sql);
180215
// assert_eq!(1, select.projection.len());

0 commit comments

Comments
 (0)