lidavidm commented on a change in pull request #11773:
URL: https://github.com/apache/arrow/pull/11773#discussion_r758622336
##########
File path: cpp/src/arrow/type.cc
##########
@@ -831,7 +831,9 @@ Decimal128Type::Decimal128Type(int32_t precision, int32_t
scale)
Result<std::shared_ptr<DataType>> Decimal128Type::Make(int32_t precision,
int32_t scale) {
if (precision < kMinPrecision || precision > kMaxPrecision) {
- return Status::Invalid("Decimal precision out of range: ", precision);
+ const auto min = kMinPrecision, max = kMaxPrecision;
+ return Status::Invalid("Decimal precision out of range [", min, ", ", max,
+ "]: ", precision);
Review comment:
It looks like we forgot to declare the constexpr in the `.cc` file. This
compiles and links for me:
```diff
diff --git a/cpp/src/arrow/type.cc b/cpp/src/arrow/type.cc
index 7b761b3a6..fb872725f 100644
--- a/cpp/src/arrow/type.cc
+++ b/cpp/src/arrow/type.cc
@@ -823,6 +823,10 @@ int32_t DecimalType::DecimalSize(int32_t precision) {
// ----------------------------------------------------------------------
// Decimal128 type
+constexpr int32_t Decimal128Type::kMinPrecision;
+constexpr int32_t Decimal128Type::kMaxPrecision;
+constexpr int32_t Decimal128Type::kByteWidth;
+
Decimal128Type::Decimal128Type(int32_t precision, int32_t scale)
: DecimalType(type_id, 16, precision, scale) {
ARROW_CHECK_GE(precision, kMinPrecision);
@@ -831,9 +835,8 @@ Decimal128Type::Decimal128Type(int32_t precision,
int32_t scale)
Result<std::shared_ptr<DataType>> Decimal128Type::Make(int32_t precision,
int32_t scale) {
if (precision < kMinPrecision || precision > kMaxPrecision) {
- const auto min = kMinPrecision, max = kMaxPrecision;
- return Status::Invalid("Decimal precision out of range [", min, ", ",
max,
- "]: ", precision);
+ return Status::Invalid("Decimal precision out of range [",
kMinPrecision, ", ",
+ kMaxPrecision, "]: ", precision);
}
return std::make_shared<Decimal128Type>(precision, scale);
}
@@ -841,6 +844,10 @@ Result<std::shared_ptr<DataType>>
Decimal128Type::Make(int32_t precision, int32_
// ----------------------------------------------------------------------
// Decimal256 type
+constexpr int32_t Decimal256Type::kMinPrecision;
+constexpr int32_t Decimal256Type::kMaxPrecision;
+constexpr int32_t Decimal256Type::kByteWidth;
+
Decimal256Type::Decimal256Type(int32_t precision, int32_t scale)
: DecimalType(type_id, 32, precision, scale) {
ARROW_CHECK_GE(precision, kMinPrecision);
@@ -849,9 +856,8 @@ Decimal256Type::Decimal256Type(int32_t precision,
int32_t scale)
Result<std::shared_ptr<DataType>> Decimal256Type::Make(int32_t precision,
int32_t scale) {
if (precision < kMinPrecision || precision > kMaxPrecision) {
- const auto min = kMinPrecision, max = kMaxPrecision;
- return Status::Invalid("Decimal precision out of range [", min, ", ",
max,
- "]: ", precision);
+ return Status::Invalid("Decimal precision out of range [",
kMinPrecision, ", ",
+ kMaxPrecision, "]: ", precision);
}
return std::make_shared<Decimal256Type>(precision, scale);
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]