Skip to content

Commit c938c85

Browse files
committed
modify fixed
1 parent d1f7ea7 commit c938c85

File tree

1 file changed

+5
-12
lines changed

1 file changed

+5
-12
lines changed

src/iceberg/util/conversions.cc

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -198,13 +198,12 @@ Result<Literal::Value> Conversions::FromBytes(const PrimitiveType& type,
198198
}
199199

200200
case TypeId::kFixed: {
201-
if (data.size() == 16) {
202-
std::array<uint8_t, 16> fixed_bytes;
203-
std::ranges::copy(data, fixed_bytes.begin());
204-
return Literal::Value{fixed_bytes};
205-
} else {
206-
return Literal::Value{std::vector<uint8_t>(data.begin(), data.end())};
201+
const auto& fixed_type = static_cast<const FixedType&>(type);
202+
if (data.size() != fixed_type.length()) {
203+
return InvalidArgument("Invalid data size for Fixed literal, got size: {}",
204+
data.size());
207205
}
206+
return Literal::Value{std::vector<uint8_t>(data.begin(), data.end())};
208207
}
209208
// TODO(Li Feiyang): Add support for UUID and Decimal
210209

@@ -221,12 +220,6 @@ Result<Literal> Conversions::FromBytes(std::shared_ptr<PrimitiveType> type,
221220
}
222221

223222
ICEBERG_ASSIGN_OR_RAISE(auto value, FromBytes(*type, data));
224-
225-
// If we got a null value (monostate), create a null Literal
226-
if (std::holds_alternative<std::monostate>(value)) {
227-
return Literal::Null(std::move(type));
228-
}
229-
230223
return Literal(std::move(value), std::move(type));
231224
}
232225

0 commit comments

Comments
 (0)