@@ -635,35 +635,6 @@ fn parse_nested_data_types() {
635635 }
636636}
637637
638- #[ test]
639- fn parse_invalid_brackets ( ) {
640- let sql = "SELECT STRUCT<INT64>>(NULL)" ;
641- assert_eq ! (
642- bigquery_and_generic( )
643- . parse_sql_statements( sql)
644- . unwrap_err( ) ,
645- ParserError :: ParserError ( "unmatched > in STRUCT literal" . to_string( ) )
646- ) ;
647-
648- let sql = "SELECT STRUCT<STRUCT<INT64>>>(NULL)" ;
649- assert_eq ! (
650- bigquery_and_generic( )
651- . parse_sql_statements( sql)
652- . unwrap_err( ) ,
653- ParserError :: ParserError ( "Expected: (, found: >" . to_string( ) )
654- ) ;
655-
656- let sql = "CREATE TABLE table (x STRUCT<STRUCT<INT64>>>)" ;
657- assert_eq ! (
658- bigquery_and_generic( )
659- . parse_sql_statements( sql)
660- . unwrap_err( ) ,
661- ParserError :: ParserError (
662- "Expected: ',' or ')' after column definition, found: >" . to_string( )
663- )
664- ) ;
665- }
666-
667638#[ test]
668639fn parse_tuple_struct_literal ( ) {
669640 // tuple syntax: https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#tuple_syntax
@@ -2474,7 +2445,7 @@ fn test_struct_field_options() {
24742445}
24752446
24762447#[ test]
2477- fn test_struct_trailing_bracket ( ) {
2448+ fn test_struct_trailing_and_nested_bracket ( ) {
24782449 bigquery ( ) . verified_stmt ( concat ! (
24792450 "CREATE TABLE my_table (" ,
24802451 "f0 STRING, " ,
@@ -2520,4 +2491,30 @@ fn test_struct_trailing_bracket() {
25202491 . parse_sql_statements( "CREATE TABLE my_table(f1 STRUCT<a STRUCT<b INT>>>, c INT64)" )
25212492 . unwrap_err( )
25222493 ) ;
2494+
2495+ let sql = "SELECT STRUCT<INT64>>(NULL)" ;
2496+ assert_eq ! (
2497+ bigquery_and_generic( )
2498+ . parse_sql_statements( sql)
2499+ . unwrap_err( ) ,
2500+ ParserError :: ParserError ( "unmatched > in STRUCT literal" . to_string( ) )
2501+ ) ;
2502+
2503+ let sql = "SELECT STRUCT<STRUCT<INT64>>>(NULL)" ;
2504+ assert_eq ! (
2505+ bigquery_and_generic( )
2506+ . parse_sql_statements( sql)
2507+ . unwrap_err( ) ,
2508+ ParserError :: ParserError ( "Expected: (, found: >" . to_string( ) )
2509+ ) ;
2510+
2511+ let sql = "CREATE TABLE table (x STRUCT<STRUCT<INT64>>>)" ;
2512+ assert_eq ! (
2513+ bigquery_and_generic( )
2514+ . parse_sql_statements( sql)
2515+ . unwrap_err( ) ,
2516+ ParserError :: ParserError (
2517+ "Expected: ',' or ')' after column definition, found: >" . to_string( )
2518+ )
2519+ ) ;
25232520}
0 commit comments