diff --git a/flink-python/pyflink/table/tests/test_types.py b/flink-python/pyflink/table/tests/test_types.py index 9c7a47556cc95..400a3729ee921 100644 --- a/flink-python/pyflink/table/tests/test_types.py +++ b/flink-python/pyflink/table/tests/test_types.py @@ -549,6 +549,18 @@ def test_datetype_equal_zero(self): dt = DataTypes.DATE() self.assertEqual(dt.from_sql_type(0), datetime.date(1970, 1, 1)) + def test_array_from_sql_type_converts_elements(self): + at = DataTypes.ARRAY(DataTypes.DATE()) + self.assertEqual( + at.from_sql_type([0, 1]), + [datetime.date(1970, 1, 1), datetime.date(1970, 1, 2)]) + + def test_multiset_from_sql_type_converts_elements(self): + mst = DataTypes.MULTISET(DataTypes.DATE()) + self.assertEqual( + mst.from_sql_type([0, 1]), + [datetime.date(1970, 1, 1), datetime.date(1970, 1, 2)]) + @unittest.skipIf(on_windows(), "Windows x64 system only support the datetime not larger " "than time.ctime(32536799999), so this test can't run " "under Windows platform") diff --git a/flink-python/pyflink/table/types.py b/flink-python/pyflink/table/types.py index 408dddfa6f7fd..316bb44b55e23 100644 --- a/flink-python/pyflink/table/types.py +++ b/flink-python/pyflink/table/types.py @@ -931,7 +931,7 @@ def to_sql_type(self, obj): def from_sql_type(self, obj): if not self.need_conversion(): return obj - return obj and [self.element_type.to_sql_type(v) for v in obj] + return obj and [self.element_type.from_sql_type(v) for v in obj] class ListViewType(DataType): @@ -1059,7 +1059,7 @@ def to_sql_type(self, obj): def from_sql_type(self, obj): if not self.need_conversion(): return obj - return obj and [self.element_type.to_sql_type(v) for v in obj] + return obj and [self.element_type.from_sql_type(v) for v in obj] class RowField(object):