11#!/usr/bin/env python3
22
33import unittest
4+ import platform
5+ import subprocess
46import pyarrow as pa
57import pyarrow .compute as pc
68import chdb
79from chdb import ChdbError
810
911
12+ def is_musl_linux ():
13+ """Check if running on musl Linux"""
14+ if platform .system () != "Linux" :
15+ return False
16+ try :
17+ result = subprocess .run (['ldd' , '--version' ], capture_output = True , text = True )
18+ print (f"stdout: { result .stdout .lower ()} " )
19+ print (f"stderr: { result .stderr .lower ()} " )
20+ # Check both stdout and stderr for musl
21+ output_text = (result .stdout + result .stderr ).lower ()
22+ return 'musl' in output_text
23+ except Exception as e :
24+ print (f"Exception in is_musl_linux: { e } " )
25+ return False
26+
27+
1028class TestUnsupportedArrowTypes (unittest .TestCase ):
1129 """Test that chDB properly handles unsupported Arrow types"""
1230
@@ -30,7 +48,8 @@ def test_sparse_union_type(self):
3048 with self .assertRaises (Exception ) as context :
3149 chdb .query ("SELECT * FROM Python(table)" )
3250
33- self .assertIn ("Unsupported" , str (context .exception ))
51+ exception_str = str (context .exception )
52+ self .assertTrue ("unknown" in exception_str or "Unsupported" in exception_str )
3453
3554 def test_dense_union_type (self ):
3655 """Test DENSE_UNION type - should fail"""
@@ -48,7 +67,8 @@ def test_dense_union_type(self):
4867 with self .assertRaises (Exception ) as context :
4968 chdb .query ("SELECT * FROM Python(table)" )
5069
51- self .assertIn ("Unsupported" , str (context .exception ))
70+ exception_str = str (context .exception )
71+ self .assertTrue ("unknown" in exception_str or "Unsupported" in exception_str )
5272
5373 def test_interval_month_day_type (self ):
5474 """Test INTERVAL_MONTH_DAY type - should fail"""
@@ -78,8 +98,10 @@ def test_interval_month_day_nano_type(self):
7898 with self .assertRaises (Exception ) as context :
7999 chdb .query ("SELECT * FROM Python(table)" )
80100
81- self .assertIn ("Unsupported" , str (context .exception ))
101+ exception_str = str (context .exception )
102+ self .assertTrue ("unknown" in exception_str or "Unsupported" in exception_str )
82103
104+ @unittest .skipIf (is_musl_linux (), "Skip test on musl systems" )
83105 def test_list_view_type (self ):
84106 """Test LIST_VIEW type - should fail"""
85107 # Create list view array
@@ -90,8 +112,10 @@ def test_list_view_type(self):
90112 with self .assertRaises (Exception ) as context :
91113 chdb .query ("SELECT * FROM Python(table)" )
92114
93- self .assertIn ("Unsupported" , str (context .exception ))
115+ exception_str = str (context .exception )
116+ self .assertTrue ("unknown" in exception_str or "Unsupported" in exception_str )
94117
118+ @unittest .skipIf (is_musl_linux (), "Skip test on musl systems" )
95119 def test_large_list_view_type (self ):
96120 """Test LARGE_LIST_VIEW type - should fail"""
97121 # Create large list view array (if available)
@@ -102,8 +126,10 @@ def test_large_list_view_type(self):
102126 with self .assertRaises (Exception ) as context :
103127 chdb .query ("SELECT * FROM Python(table)" )
104128
105- self .assertIn ("Unsupported" , str (context .exception ))
129+ exception_str = str (context .exception )
130+ self .assertTrue ("unknown" in exception_str or "Unsupported" in exception_str )
106131
132+ @unittest .skipIf (is_musl_linux (), "Skip test on musl systems" )
107133 def test_run_end_encoded_type (self ):
108134 """Test RUN_END_ENCODED type - should fail"""
109135 # Create run-end encoded array
@@ -115,8 +141,10 @@ def test_run_end_encoded_type(self):
115141 with self .assertRaises (Exception ) as context :
116142 chdb .query ("SELECT * FROM Python(table)" )
117143
118- self .assertIn ("Unsupported" , str (context .exception ))
144+ exception_str = str (context .exception )
145+ self .assertTrue ("unknown" in exception_str or "Unsupported" in exception_str )
119146
147+ @unittest .skipIf (is_musl_linux (), "Skip test on musl systems" )
120148 def test_skip_unsupported_columns_setting (self ):
121149 """Test input_format_arrow_skip_columns_with_unsupported_types_in_schema_inference=1 skips unsupported columns"""
122150 # Create a table with both supported and unsupported columns
@@ -137,7 +165,9 @@ def test_skip_unsupported_columns_setting(self):
137165 # Without the setting, query should fail
138166 with self .assertRaises (Exception ) as context :
139167 chdb .query ("SELECT * FROM Python(table)" )
140- self .assertIn ("Unsupported" , str (context .exception ))
168+
169+ exception_str = str (context .exception )
170+ self .assertTrue ("unknown" in exception_str or "Unsupported" in exception_str )
141171
142172 # With the setting, query should succeed but skip unsupported column
143173 result = chdb .query (
0 commit comments