Skip to content

Commit 4d23073

Browse files
authored
chore: add check scale in BinaryRowWriter (alibaba#311)
1 parent 5fdc435 commit 4d23073

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

src/paimon/common/data/binary_row_writer.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,9 @@ Result<BinaryRowWriter::FieldSetterFunc> BinaryRowWriter::CreateFieldSetter(
145145
arrow::internal::checked_cast<arrow::Decimal128Type*>(field_type.get());
146146
assert(decimal_type);
147147
auto precision = decimal_type->precision();
148-
field_setter = [field_idx, precision](const VariantType& field,
149-
BinaryRowWriter* writer) -> void {
148+
auto scale = decimal_type->scale();
149+
field_setter = [field_idx, precision, scale](const VariantType& field,
150+
BinaryRowWriter* writer) -> void {
150151
if (DataDefine::IsVariantNull(field)) {
151152
if (!Decimal::IsCompact(precision)) {
152153
writer->WriteDecimal(field_idx, std::nullopt, precision);
@@ -155,8 +156,10 @@ Result<BinaryRowWriter::FieldSetterFunc> BinaryRowWriter::CreateFieldSetter(
155156
}
156157
return;
157158
}
158-
return writer->WriteDecimal(field_idx, DataDefine::GetVariantValue<Decimal>(field),
159-
precision);
159+
auto decimal_value = DataDefine::GetVariantValue<Decimal>(field);
160+
assert(decimal_value.Scale() == scale);
161+
(void)scale;
162+
return writer->WriteDecimal(field_idx, decimal_value, precision);
160163
};
161164
return field_setter;
162165
}

0 commit comments

Comments
 (0)