From d35cf6e04ab27841320ee3ef3e2818b3e55fd36f Mon Sep 17 00:00:00 2001 From: Nikolaus Schuetz Date: Mon, 3 Aug 2026 23:00:38 -0700 Subject: [PATCH 1/2] [FLINK-40322][python] Add failing tests for Array/Multiset from_sql_type --- flink-python/pyflink/table/tests/test_types.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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") From e72257f2c9edb0cce2d172b905333b4ce135f704 Mon Sep 17 00:00:00 2001 From: Nikolaus Schuetz Date: Mon, 3 Aug 2026 23:00:39 -0700 Subject: [PATCH 2/2] [FLINK-40322][python] Fix Array/Multiset from_sql_type to decode elements --- flink-python/pyflink/table/types.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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):