@@ -88,6 +88,16 @@ Status ManifestAdapter::AppendField(ArrowArray* arrowArray,
8888 return {};
8989}
9090
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+
91101ManifestEntryAdapter::~ManifestEntryAdapter () {
92102 if (is_initialized_) {
93103 // arrow::ImportedArrayData::Release() bridge.cc:1478 will release the
@@ -144,6 +154,7 @@ Status ManifestEntryAdapter::AppendPartitions(
144154 ICEBERG_RETURN_UNEXPECTED (
145155 AppendField (array, std::get<std::string>(partition.value ())));
146156 break ;
157+ case TypeId::kFixed :
147158 case TypeId::kBinary :
148159 ICEBERG_RETURN_UNEXPECTED (
149160 AppendField (array, std::get<std::vector<uint8_t >>(partition.value ())));
@@ -159,8 +170,13 @@ Status ManifestEntryAdapter::AppendPartitions(
159170 AppendField (array, std::get<int64_t >(partition.value ())));
160171 break ;
161172 case TypeId::kDecimal :
173+ ICEBERG_RETURN_UNEXPECTED (
174+ AppendField (array, std::get<std::array<uint8_t , 16 >>(partition.value ())));
175+ break ;
162176 case TypeId::kUuid :
163- case TypeId::kFixed :
177+ case TypeId::kStruct :
178+ case TypeId::kList :
179+ case TypeId::kMap :
164180 // TODO(xiao.dong) currently literal does not support those types
165181 default :
166182 return InvalidManifest (" Unsupported partition type: {}" , field.ToString ());
0 commit comments