diff --git a/cpp/src/arrow/csv/parser.cc b/cpp/src/arrow/csv/parser.cc index e83855336d2d..48c9762e27e2 100644 --- a/cpp/src/arrow/csv/parser.cc +++ b/cpp/src/arrow/csv/parser.cc @@ -204,7 +204,8 @@ class PresizedValueDescWriter : public ValueDescWriter // however we allow for one extraneous write in case of excessive columns, // hence `2 + num_rows * num_cols` (see explanation in PushValue below). PresizedValueDescWriter(MemoryPool* pool, int32_t num_rows, int32_t num_cols) - : ValueDescWriter(pool, /*values_capacity=*/2 + num_rows * num_cols) {} + : ValueDescWriter(pool, /*values_capacity=*/2 + + static_cast(num_rows) * num_cols) {} void PushValue(ParsedValueDesc v) { DCHECK_LT(values_size_, values_capacity_); @@ -536,7 +537,8 @@ class BlockParserImpl { // as the bulk filter has a fixed cost that isn't compensated // when values are too short. const int64_t bulk_filter_threshold = - batch_.num_cols_ * (batch_.num_rows_ - start_num_rows) * 10; + static_cast(batch_.num_cols_) * (batch_.num_rows_ - start_num_rows) * + 10; use_bulk_filter_ = (data - *out_data) > bulk_filter_threshold; }