@@ -1572,12 +1572,18 @@ def test_unnest_struct_field_annotation(self):
15721572 SELECT first_name, last_name
15731573 FROM data, UNNEST(users)
15741574 """ ,
1575- read = "bigquery" ,
1576- )
1577- )
1575+ dialect = "bigquery" ,
1576+ ),
1577+ dialect = "bigquery" ,
1578+ ),
1579+ dialect = "bigquery" ,
1580+ )
1581+ self .assertEqual (
1582+ expression .selects [0 ].type , exp .DataType .build ("VARCHAR" , dialect = "bigquery" )
1583+ )
1584+ self .assertEqual (
1585+ expression .selects [1 ].type , exp .DataType .build ("VARCHAR" , dialect = "bigquery" )
15781586 )
1579- self .assertEqual (expression .selects [0 ].type , exp .DataType .build ("VARCHAR" ))
1580- self .assertEqual (expression .selects [1 ].type , exp .DataType .build ("VARCHAR" ))
15811587
15821588 expression = annotate_types (
15831589 optimizer .qualify .qualify (
@@ -1586,16 +1592,57 @@ def test_unnest_struct_field_annotation(self):
15861592 SELECT person
15871593 FROM UNNEST([STRUCT('Charlie' AS name, 40 AS age)]) AS person
15881594 """ ,
1589- read = "bigquery" ,
1590- )
1591- )
1595+ dialect = "bigquery" ,
1596+ ),
1597+ dialect = "bigquery" ,
1598+ ),
1599+ dialect = "bigquery" ,
15921600 )
15931601 select_type = expression .selects [0 ].type
15941602 self .assertTrue (select_type .is_type (exp .DataType .Type .STRUCT ))
15951603 self .assertEqual (len (select_type .expressions ), 2 )
15961604 fields = {col_def .name : col_def .kind for col_def in select_type .expressions }
1597- self .assertEqual (fields .get ("name" ), exp .DataType .build ("VARCHAR" ))
1598- self .assertEqual (fields .get ("age" ), exp .DataType .build ("INT" ))
1605+ self .assertEqual (fields .get ("name" ), exp .DataType .build ("VARCHAR" , dialect = "bigquery" ))
1606+ self .assertEqual (fields .get ("age" ), exp .DataType .build ("INT" , dialect = "bigquery" ))
1607+
1608+ expression = annotate_types (
1609+ optimizer .qualify .qualify (
1610+ parse_one (
1611+ """
1612+ WITH data AS (
1613+ SELECT [STRUCT('Bob' AS first_name, 'Smith' AS last_name)] AS users
1614+ )
1615+ SELECT first_name, last_name
1616+ FROM data, UNNEST(users) AS p
1617+ """ ,
1618+ dialect = "bigquery" ,
1619+ ),
1620+ dialect = "bigquery" ,
1621+ ),
1622+ dialect = "bigquery" ,
1623+ )
1624+ self .assertEqual (
1625+ expression .selects [0 ].type , exp .DataType .build ("VARCHAR" , dialect = "bigquery" )
1626+ )
1627+ self .assertEqual (
1628+ expression .selects [1 ].type , exp .DataType .build ("VARCHAR" , dialect = "bigquery" )
1629+ )
1630+
1631+ expression = annotate_types (
1632+ optimizer .qualify .qualify (
1633+ parse_one (
1634+ """
1635+ SELECT name
1636+ FROM UNNEST([STRUCT('Charlie' AS name, 40 AS age)]) AS person
1637+ """ ,
1638+ dialect = "bigquery" ,
1639+ ),
1640+ dialect = "bigquery" ,
1641+ ),
1642+ dialect = "bigquery" ,
1643+ )
1644+ select_type = expression .selects [0 ].type
1645+ self .assertTrue (select_type .is_type (exp .DataType .build ("VARCHAR" , dialect = "bigquery" )))
15991646
16001647 def test_map_annotation (self ):
16011648 # ToMap annotation
0 commit comments