Skip to content

Commit 478a6ea

Browse files
author
xiao.dong
committed
fix partition literal support type list
1 parent 1ca9b0c commit 478a6ea

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

src/iceberg/manifest_adapter.cc

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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+
91101
ManifestEntryAdapter::~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());

src/iceberg/manifest_adapter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class ICEBERG_EXPORT ManifestAdapter {
5353
static Status AppendField(ArrowArray* arrowArray, double value);
5454
static Status AppendField(ArrowArray* arrowArray, std::string_view value);
5555
static Status AppendField(ArrowArray* arrowArray, const std::vector<uint8_t>& value);
56+
static Status AppendField(ArrowArray* arrowArray, const std::array<uint8_t, 16>& value);
5657

5758
protected:
5859
bool is_initialized_ = false;

0 commit comments

Comments
 (0)