@@ -88,6 +88,16 @@ Status ManifestAdapter::AppendField(ArrowArray* arrowArray,
88
88
return {};
89
89
}
90
90
91
+ Status ManifestAdapter::AppendField (ArrowArray* arrowArray,
92
+ const std::array<uint8_t , 16 >& value) {
93
+ ArrowBufferViewData data;
94
+ data.as_char = reinterpret_cast <const char *>(value.data ());
95
+ ArrowBufferView view (data, value.size ());
96
+ auto status = ArrowArrayAppendBytes (arrowArray, view);
97
+ NANOARROW_RETURN_IF_FAILED (status);
98
+ return {};
99
+ }
100
+
91
101
ManifestEntryAdapter::~ManifestEntryAdapter () {
92
102
if (is_initialized_) {
93
103
// arrow::ImportedArrayData::Release() bridge.cc:1478 will release the
@@ -144,6 +154,7 @@ Status ManifestEntryAdapter::AppendPartitions(
144
154
ICEBERG_RETURN_UNEXPECTED (
145
155
AppendField (array, std::get<std::string>(partition.value ())));
146
156
break ;
157
+ case TypeId::kFixed :
147
158
case TypeId::kBinary :
148
159
ICEBERG_RETURN_UNEXPECTED (
149
160
AppendField (array, std::get<std::vector<uint8_t >>(partition.value ())));
@@ -159,8 +170,13 @@ Status ManifestEntryAdapter::AppendPartitions(
159
170
AppendField (array, std::get<int64_t >(partition.value ())));
160
171
break ;
161
172
case TypeId::kDecimal :
173
+ ICEBERG_RETURN_UNEXPECTED (
174
+ AppendField (array, std::get<std::array<uint8_t , 16 >>(partition.value ())));
175
+ break ;
162
176
case TypeId::kUuid :
163
- case TypeId::kFixed :
177
+ case TypeId::kStruct :
178
+ case TypeId::kList :
179
+ case TypeId::kMap :
164
180
// TODO(xiao.dong) currently literal does not support those types
165
181
default :
166
182
return InvalidManifest (" Unsupported partition type: {}" , field.ToString ());
0 commit comments