Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(datatypes): always quote sqlglot struct fields #8777

Merged
merged 8 commits into from
Mar 29, 2024
4 changes: 2 additions & 2 deletions ibis/backends/bigquery/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1038,7 +1038,7 @@ def create_table(

column_defs = [
sge.ColumnDef(
this=name,
this=sg.to_identifier(name, quoted=self.compiler.quoted),
kind=BigQueryType.from_ibis(typ),
constraints=(
None
Expand Down Expand Up @@ -1150,7 +1150,7 @@ def _get_udf_source(self, udf_node: ops.ScalarUDF):

signature = [
sge.ColumnDef(
this=sg.to_identifier(name),
this=sg.to_identifier(name, quoted=self.compiler.quoted),
kind=type_mapper.from_ibis(param.annotation.pattern.dtype),
)
for name, param in udf_node.__signature__.parameters.items()
Expand Down
2 changes: 1 addition & 1 deletion ibis/backends/clickhouse/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -652,7 +652,7 @@ def create_table(
this=sg.table(name, db=database),
expressions=[
sge.ColumnDef(
this=sg.to_identifier(name),
this=sg.to_identifier(name, quoted=self.compiler.quoted),
kind=self.compiler.type_mapper.from_ibis(typ),
)
for name, typ in schema.items()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
SELECT
CAST("t0"."string_col" AS Tuple(a Nullable(String), b Nullable(Int64))) AS "Cast(string_col, !struct<a: string, b: int64>)"
CAST("t0"."string_col" AS Tuple("a" Nullable(String), "b" Nullable(Int64))) AS "Cast(string_col, !struct<a: string, b: int64>)"
FROM "functional_alltypes" AS "t0"
6 changes: 5 additions & 1 deletion ibis/backends/sql/datatypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,11 @@ def _from_ibis_Map(cls, dtype: dt.Map) -> sge.DataType:
@classmethod
def _from_ibis_Struct(cls, dtype: dt.Struct) -> sge.DataType:
fields = [
sge.ColumnDef(this=str(name), kind=cls.from_ibis(field))
sge.ColumnDef(
# always quote struct fields to allow reserved words as field names
this=sg.to_identifier(name, quoted=True),
kind=cls.from_ibis(field),
)
for name, field in dtype.items()
]
return sge.DataType(this=typecode.STRUCT, expressions=fields, nested=True)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ WITH "t5" AS (
SELECT
"t0"."field_of_study",
arrayJoin(
[CAST(tuple('1970-71', "t0"."1970-71") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('1975-76', "t0"."1975-76") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('1980-81', "t0"."1980-81") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('1985-86', "t0"."1985-86") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('1990-91', "t0"."1990-91") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('1995-96', "t0"."1995-96") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2000-01', "t0"."2000-01") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2005-06', "t0"."2005-06") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2010-11', "t0"."2010-11") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2011-12', "t0"."2011-12") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2012-13', "t0"."2012-13") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2013-14', "t0"."2013-14") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2014-15', "t0"."2014-15") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2015-16', "t0"."2015-16") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2016-17', "t0"."2016-17") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2017-18', "t0"."2017-18") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2018-19', "t0"."2018-19") AS Tuple(years Nullable(String), degrees Nullable(Int64))), CAST(tuple('2019-20', "t0"."2019-20") AS Tuple(years Nullable(String), degrees Nullable(Int64)))]
[CAST(tuple('1970-71', "t0"."1970-71") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('1975-76', "t0"."1975-76") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('1980-81', "t0"."1980-81") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('1985-86', "t0"."1985-86") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('1990-91', "t0"."1990-91") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('1995-96', "t0"."1995-96") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2000-01', "t0"."2000-01") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2005-06', "t0"."2005-06") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2010-11', "t0"."2010-11") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2011-12', "t0"."2011-12") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2012-13', "t0"."2012-13") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2013-14', "t0"."2013-14") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2014-15', "t0"."2014-15") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2015-16', "t0"."2015-16") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2016-17', "t0"."2016-17") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2017-18', "t0"."2017-18") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2018-19', "t0"."2018-19") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64))), CAST(tuple('2019-20', "t0"."2019-20") AS Tuple("years" Nullable(String), "degrees" Nullable(Int64)))]
) AS "__pivoted__"
FROM "humanities" AS "t0"
) AS "t1"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,19 @@ WITH "t5" AS (
1,
GREATEST(
CARDINALITY(
ARRAY[CAST(ROW('1970-71', "t0"."1970-71") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1975-76', "t0"."1975-76") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1980-81', "t0"."1980-81") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1985-86', "t0"."1985-86") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1990-91', "t0"."1990-91") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1995-96', "t0"."1995-96") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2000-01', "t0"."2000-01") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2005-06', "t0"."2005-06") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2010-11', "t0"."2010-11") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2011-12', "t0"."2011-12") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2012-13', "t0"."2012-13") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2013-14', "t0"."2013-14") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2014-15', "t0"."2014-15") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2015-16', "t0"."2015-16") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2016-17', "t0"."2016-17") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2017-18', "t0"."2017-18") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2018-19', "t0"."2018-19") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2019-20', "t0"."2019-20") AS ROW(years VARCHAR, degrees BIGINT))]
ARRAY[CAST(ROW('1970-71', "t0"."1970-71") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1975-76', "t0"."1975-76") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1980-81', "t0"."1980-81") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1985-86', "t0"."1985-86") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1990-91', "t0"."1990-91") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1995-96', "t0"."1995-96") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2000-01', "t0"."2000-01") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2005-06', "t0"."2005-06") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2010-11', "t0"."2010-11") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2011-12', "t0"."2011-12") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2012-13', "t0"."2012-13") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2013-14', "t0"."2013-14") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2014-15', "t0"."2014-15") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2015-16', "t0"."2015-16") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2016-17', "t0"."2016-17") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2017-18', "t0"."2017-18") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2018-19', "t0"."2018-19") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2019-20', "t0"."2019-20") AS ROW("years" VARCHAR, "degrees" BIGINT))]
)
)
)) AS _u(pos)
CROSS JOIN UNNEST(ARRAY[CAST(ROW('1970-71', "t0"."1970-71") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1975-76', "t0"."1975-76") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1980-81', "t0"."1980-81") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1985-86', "t0"."1985-86") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1990-91', "t0"."1990-91") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1995-96', "t0"."1995-96") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2000-01', "t0"."2000-01") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2005-06', "t0"."2005-06") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2010-11', "t0"."2010-11") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2011-12', "t0"."2011-12") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2012-13', "t0"."2012-13") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2013-14', "t0"."2013-14") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2014-15', "t0"."2014-15") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2015-16', "t0"."2015-16") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2016-17', "t0"."2016-17") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2017-18', "t0"."2017-18") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2018-19', "t0"."2018-19") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2019-20', "t0"."2019-20") AS ROW(years VARCHAR, degrees BIGINT))]) WITH ORDINALITY AS _u_2("__pivoted__", pos_2)
CROSS JOIN UNNEST(ARRAY[CAST(ROW('1970-71', "t0"."1970-71") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1975-76', "t0"."1975-76") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1980-81', "t0"."1980-81") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1985-86', "t0"."1985-86") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1990-91', "t0"."1990-91") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1995-96', "t0"."1995-96") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2000-01', "t0"."2000-01") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2005-06', "t0"."2005-06") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2010-11', "t0"."2010-11") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2011-12', "t0"."2011-12") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2012-13', "t0"."2012-13") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2013-14', "t0"."2013-14") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2014-15', "t0"."2014-15") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2015-16', "t0"."2015-16") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2016-17', "t0"."2016-17") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2017-18', "t0"."2017-18") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2018-19', "t0"."2018-19") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2019-20', "t0"."2019-20") AS ROW("years" VARCHAR, "degrees" BIGINT))]) WITH ORDINALITY AS _u_2("__pivoted__", pos_2)
WHERE
_u.pos = _u_2.pos_2
OR (
_u.pos > CARDINALITY(
ARRAY[CAST(ROW('1970-71', "t0"."1970-71") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1975-76', "t0"."1975-76") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1980-81', "t0"."1980-81") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1985-86', "t0"."1985-86") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1990-91', "t0"."1990-91") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1995-96', "t0"."1995-96") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2000-01', "t0"."2000-01") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2005-06', "t0"."2005-06") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2010-11', "t0"."2010-11") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2011-12', "t0"."2011-12") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2012-13', "t0"."2012-13") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2013-14', "t0"."2013-14") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2014-15', "t0"."2014-15") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2015-16', "t0"."2015-16") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2016-17', "t0"."2016-17") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2017-18', "t0"."2017-18") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2018-19', "t0"."2018-19") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2019-20', "t0"."2019-20") AS ROW(years VARCHAR, degrees BIGINT))]
ARRAY[CAST(ROW('1970-71', "t0"."1970-71") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1975-76', "t0"."1975-76") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1980-81', "t0"."1980-81") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1985-86', "t0"."1985-86") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1990-91', "t0"."1990-91") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1995-96', "t0"."1995-96") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2000-01', "t0"."2000-01") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2005-06', "t0"."2005-06") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2010-11', "t0"."2010-11") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2011-12', "t0"."2011-12") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2012-13', "t0"."2012-13") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2013-14', "t0"."2013-14") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2014-15', "t0"."2014-15") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2015-16', "t0"."2015-16") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2016-17', "t0"."2016-17") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2017-18', "t0"."2017-18") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2018-19', "t0"."2018-19") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2019-20', "t0"."2019-20") AS ROW("years" VARCHAR, "degrees" BIGINT))]
)
AND _u_2.pos_2 = CARDINALITY(
ARRAY[CAST(ROW('1970-71', "t0"."1970-71") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1975-76', "t0"."1975-76") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1980-81', "t0"."1980-81") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1985-86', "t0"."1985-86") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1990-91', "t0"."1990-91") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('1995-96', "t0"."1995-96") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2000-01', "t0"."2000-01") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2005-06', "t0"."2005-06") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2010-11', "t0"."2010-11") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2011-12', "t0"."2011-12") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2012-13', "t0"."2012-13") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2013-14', "t0"."2013-14") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2014-15', "t0"."2014-15") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2015-16', "t0"."2015-16") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2016-17', "t0"."2016-17") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2017-18', "t0"."2017-18") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2018-19', "t0"."2018-19") AS ROW(years VARCHAR, degrees BIGINT)), CAST(ROW('2019-20', "t0"."2019-20") AS ROW(years VARCHAR, degrees BIGINT))]
ARRAY[CAST(ROW('1970-71', "t0"."1970-71") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1975-76', "t0"."1975-76") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1980-81', "t0"."1980-81") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1985-86', "t0"."1985-86") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1990-91', "t0"."1990-91") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('1995-96', "t0"."1995-96") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2000-01', "t0"."2000-01") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2005-06', "t0"."2005-06") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2010-11', "t0"."2010-11") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2011-12', "t0"."2011-12") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2012-13', "t0"."2012-13") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2013-14', "t0"."2013-14") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2014-15', "t0"."2014-15") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2015-16', "t0"."2015-16") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2016-17', "t0"."2016-17") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2017-18', "t0"."2017-18") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2018-19', "t0"."2018-19") AS ROW("years" VARCHAR, "degrees" BIGINT)), CAST(ROW('2019-20', "t0"."2019-20") AS ROW("years" VARCHAR, "degrees" BIGINT))]
)
)
) AS "t1"
Expand Down
Loading
Loading