@@ -28,25 +28,31 @@ class ArrayColumn(Column):
28
28
py_types = (list , tuple )
29
29
30
30
def __init__ (self , nested_column , ** kwargs ):
31
- self .size_column = UInt64Column ()
31
+ self .init_kwargs = kwargs
32
+ self .size_column = UInt64Column (** kwargs )
32
33
self .nested_column = nested_column
33
34
self ._write_depth_0_size = True
34
35
super (ArrayColumn , self ).__init__ (** kwargs )
36
+ self .null_value = []
35
37
36
38
def write_data (self , data , buf ):
37
39
# Column of Array(T) is stored in "compact" format and passed to server
38
40
# wrapped into another Array without size of wrapper array.
39
- self .nested_column = ArrayColumn (self .nested_column )
41
+ self .nested_column = ArrayColumn (
42
+ self .nested_column , ** self .init_kwargs
43
+ )
40
44
self .nested_column .nullable = self .nullable
41
45
self .nullable = False
42
46
self ._write_depth_0_size = False
43
47
self ._write (data , buf )
44
48
45
- def read_data (self , rows , buf ):
46
- self .nested_column = ArrayColumn (self .nested_column )
49
+ def read_data (self , n_rows , buf ):
50
+ self .nested_column = ArrayColumn (
51
+ self .nested_column , ** self .init_kwargs
52
+ )
47
53
self .nested_column .nullable = self .nullable
48
54
self .nullable = False
49
- return self ._read (rows , buf )[0 ]
55
+ return self ._read (n_rows , buf )[0 ]
50
56
51
57
def _write_sizes (self , value , buf ):
52
58
nulls_map = []
@@ -99,14 +105,19 @@ def _write_nulls_data(self, value, buf):
99
105
self .nested_column ._write_nulls_map (value , buf )
100
106
101
107
def _write (self , value , buf ):
108
+ value = self .prepare_items (value )
102
109
self ._write_sizes (value , buf )
103
110
self ._write_nulls_data (value , buf )
104
111
self ._write_data (value , buf )
105
112
106
113
def read_state_prefix (self , buf ):
107
- return self .nested_column .read_state_prefix (buf )
114
+ super (ArrayColumn , self ).read_state_prefix (buf )
115
+
116
+ self .nested_column .read_state_prefix (buf )
108
117
109
118
def write_state_prefix (self , buf ):
119
+ super (ArrayColumn , self ).write_state_prefix (buf )
120
+
110
121
self .nested_column .write_state_prefix (buf )
111
122
112
123
def _read (self , size , buf ):
@@ -145,6 +156,6 @@ def _read(self, size, buf):
145
156
return tuple (data )
146
157
147
158
148
- def create_array_column (spec , column_by_spec_getter ):
159
+ def create_array_column (spec , column_by_spec_getter , column_options ):
149
160
inner = spec [6 :- 1 ]
150
- return ArrayColumn (column_by_spec_getter (inner ))
161
+ return ArrayColumn (column_by_spec_getter (inner ), ** column_options )
0 commit comments