From b7a5e3490826818d02696f70ec83d3fdea3f0caa Mon Sep 17 00:00:00 2001 From: lx0 Date: Fri, 14 Jan 2022 10:51:45 +0800 Subject: [PATCH] Add sanity_check API for ObNumber --- deps/oblib/src/lib/number/ob_number_v2.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/deps/oblib/src/lib/number/ob_number_v2.h b/deps/oblib/src/lib/number/ob_number_v2.h index 199c0d47f..eb2140238 100644 --- a/deps/oblib/src/lib/number/ob_number_v2.h +++ b/deps/oblib/src/lib/number/ob_number_v2.h @@ -184,6 +184,24 @@ public: // v2: algorithmic optimization edition // v3: engineering optimization edition + int sanity_check() + { + int ret = OB_SUCCESS; + if (d_.len_ > OB_MAX_DECIMAL_DIGIT) { + ret = OB_ERR_UNEXPECTED; + _OB_LOG(WARN, "Invalid digit len %u", d_.len_); + } else if (d_.len_ > 0 && digits_ != nullptr) { + for (auto i = 0; OB_SUCC(ret) && i < d_.len_; i++) { + if (digits_[i] >= BASE) { + ret = OB_ERR_UNEXPECTED; + _OB_LOG(WARN, "Invalid value %u", digits_[i]); + } else { + _OB_LOG(DEBUG, "Digit value %u", digits_[i]); + } + } + } + return ret; + } template int from(const int64_t value, T& allocator); template -- GitLab