patch 4.0
This commit is contained in:
@ -13,18 +13,20 @@
|
||||
#define USING_LOG_PREFIX SHARE
|
||||
#include "share/object/ob_obj_cast.h"
|
||||
#include <gtest/gtest.h>
|
||||
#include "share/ob_worker.h"
|
||||
#include "lib/worker.h"
|
||||
|
||||
namespace oceanbase {
|
||||
using namespace share;
|
||||
namespace common {
|
||||
|
||||
namespace oceanbase
|
||||
{
|
||||
namespace common
|
||||
{
|
||||
using namespace number;
|
||||
|
||||
class TestObjCast : public ::testing::Test {
|
||||
class TestObjCast : public ::testing::Test
|
||||
{
|
||||
public:
|
||||
virtual void SetUp();
|
||||
virtual void TearDown()
|
||||
{}
|
||||
virtual void TearDown() {}
|
||||
|
||||
ObArenaAllocator allocator_;
|
||||
};
|
||||
@ -39,18 +41,17 @@ void TestObjCast::SetUp()
|
||||
TEST_F(TestObjCast, test_number_range_check_mysql_old)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
CompatModeGuard tmp_mode(ObWorker::CompatMode::MYSQL);
|
||||
lib::CompatModeGuard tmp_mode(lib::Worker::CompatMode::MYSQL);
|
||||
ObNumber zero_number;
|
||||
zero_number.set_zero();
|
||||
ObObj obj1;
|
||||
obj1.set_number(zero_number);
|
||||
const ObObj* res_obj = &obj1;
|
||||
const ObObj *res_obj = &obj1;
|
||||
ObObjCastParams params;
|
||||
params.allocator_v2_ = &allocator_;
|
||||
params.cast_mode_ |= CM_WARN_ON_FAIL;
|
||||
int64_t get_range_beg = ObTimeUtility::current_time();
|
||||
for (int16_t precision = OB_MIN_DECIMAL_PRECISION; OB_SUCC(ret) && precision <= ObNumber::MAX_PRECISION;
|
||||
++precision) {
|
||||
for (int16_t precision = OB_MIN_DECIMAL_PRECISION; OB_SUCC(ret) && precision <= ObNumber::MAX_PRECISION; ++precision) {
|
||||
for (int16_t scale = 0; OB_SUCC(ret) && precision >= scale && scale <= ObNumber::MAX_SCALE; ++scale) {
|
||||
ObAccuracy accuracy(precision, scale);
|
||||
ret = number_range_check(params, accuracy, obj1, obj1, res_obj, params.cast_mode_);
|
||||
@ -58,27 +59,23 @@ TEST_F(TestObjCast, test_number_range_check_mysql_old)
|
||||
}
|
||||
}
|
||||
int64_t get_range_cost = ObTimeUtility::current_time() - get_range_beg;
|
||||
_OB_LOG(INFO,
|
||||
"test_number_range_check_mysql_old(%d) cost time: %f",
|
||||
(ObNumber::MAX_PRECISION + 1) * (ObNumber::MAX_SCALE + 1) / 2,
|
||||
(double)get_range_cost / (double)1000);
|
||||
_OB_LOG(INFO, "test_number_range_check_mysql_old(%d) cost time: %f", (ObNumber::MAX_PRECISION + 1) * (ObNumber::MAX_SCALE + 1) / 2, (double)get_range_cost / (double)1000);
|
||||
}
|
||||
|
||||
TEST_F(TestObjCast, test_number_range_check_mysql_new)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
CompatModeGuard tmp_mode(ObWorker::CompatMode::MYSQL);
|
||||
lib::CompatModeGuard tmp_mode(lib::Worker::CompatMode::MYSQL);
|
||||
ObNumber zero_number;
|
||||
zero_number.set_zero();
|
||||
ObObj obj1;
|
||||
obj1.set_number(zero_number);
|
||||
const ObObj* res_obj = &obj1;
|
||||
const ObObj *res_obj = &obj1;
|
||||
ObObjCastParams params;
|
||||
params.allocator_v2_ = &allocator_;
|
||||
params.cast_mode_ |= CM_WARN_ON_FAIL;
|
||||
int64_t get_range_beg = ObTimeUtility::current_time();
|
||||
for (int16_t precision = OB_MIN_DECIMAL_PRECISION; OB_SUCC(ret) && precision <= ObNumber::MAX_PRECISION;
|
||||
++precision) {
|
||||
for (int16_t precision = OB_MIN_DECIMAL_PRECISION; OB_SUCC(ret) && precision <= ObNumber::MAX_PRECISION; ++precision) {
|
||||
for (int16_t scale = 0; OB_SUCC(ret) && precision >= scale && scale <= ObNumber::MAX_SCALE; ++scale) {
|
||||
ObAccuracy accuracy(precision, scale);
|
||||
ret = number_range_check_v2(params, accuracy, obj1, obj1, res_obj, params.cast_mode_);
|
||||
@ -86,21 +83,18 @@ TEST_F(TestObjCast, test_number_range_check_mysql_new)
|
||||
}
|
||||
}
|
||||
int64_t get_range_cost = ObTimeUtility::current_time() - get_range_beg;
|
||||
_OB_LOG(INFO,
|
||||
"test_number_range_check_mysql_new(%d) cost time: %f",
|
||||
(ObNumber::MAX_PRECISION + 1) * (ObNumber::MAX_SCALE + 1) / 2,
|
||||
(double)get_range_cost / (double)1000);
|
||||
_OB_LOG(INFO, "test_number_range_check_mysql_new(%d) cost time: %f", (ObNumber::MAX_PRECISION + 1) * (ObNumber::MAX_SCALE + 1) / 2, (double)get_range_cost / (double)1000);
|
||||
}
|
||||
|
||||
TEST_F(TestObjCast, test_number_range_check_oracle_old)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
CompatModeGuard tmp_mode(ObWorker::CompatMode::ORACLE);
|
||||
lib::CompatModeGuard tmp_mode(lib::Worker::CompatMode::ORACLE);
|
||||
ObNumber zero_number;
|
||||
zero_number.set_zero();
|
||||
ObObj obj1;
|
||||
obj1.set_number(zero_number);
|
||||
const ObObj* res_obj = &obj1;
|
||||
const ObObj *res_obj = &obj1;
|
||||
ObObjCastParams params;
|
||||
params.allocator_v2_ = &allocator_;
|
||||
params.cast_mode_ |= CM_WARN_ON_FAIL;
|
||||
@ -113,21 +107,18 @@ TEST_F(TestObjCast, test_number_range_check_oracle_old)
|
||||
}
|
||||
}
|
||||
int64_t get_range_cost = ObTimeUtility::current_time() - get_range_beg;
|
||||
_OB_LOG(INFO,
|
||||
"test_number_range_check_oracle_old(%ld) cost time: %f",
|
||||
(OB_MAX_NUMBER_PRECISION) * (ObNumberConstValue::MAX_ORACLE_SCALE_SIZE + 1),
|
||||
(double)get_range_cost / (double)1000);
|
||||
_OB_LOG(INFO, "test_number_range_check_oracle_old(%ld) cost time: %f", (OB_MAX_NUMBER_PRECISION) * (ObNumberConstValue::MAX_ORACLE_SCALE_SIZE + 1), (double)get_range_cost / (double)1000);
|
||||
}
|
||||
|
||||
TEST_F(TestObjCast, test_number_range_check_oracle_new)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
CompatModeGuard tmp_mode(ObWorker::CompatMode::ORACLE);
|
||||
lib::CompatModeGuard tmp_mode(lib::Worker::CompatMode::ORACLE);
|
||||
ObNumber zero_number;
|
||||
zero_number.set_zero();
|
||||
ObObj obj1;
|
||||
obj1.set_number(zero_number);
|
||||
const ObObj* res_obj = &obj1;
|
||||
const ObObj *res_obj = &obj1;
|
||||
ObObjCastParams params;
|
||||
params.allocator_v2_ = &allocator_;
|
||||
params.cast_mode_ |= CM_WARN_ON_FAIL;
|
||||
@ -140,16 +131,13 @@ TEST_F(TestObjCast, test_number_range_check_oracle_new)
|
||||
}
|
||||
}
|
||||
int64_t get_range_cost = ObTimeUtility::current_time() - get_range_beg;
|
||||
_OB_LOG(INFO,
|
||||
"test_number_range_check_oracle_new(%ld) cost time: %f",
|
||||
(OB_MAX_NUMBER_PRECISION) * (ObNumberConstValue::MAX_ORACLE_SCALE_SIZE + 1),
|
||||
(double)get_range_cost / (double)1000);
|
||||
_OB_LOG(INFO, "test_number_range_check_oracle_new(%ld) cost time: %f", (OB_MAX_NUMBER_PRECISION) * (ObNumberConstValue::MAX_ORACLE_SCALE_SIZE + 1), (double)get_range_cost / (double)1000);
|
||||
}
|
||||
|
||||
} // namespace common
|
||||
} // end namespace oceanbase
|
||||
} // end namespace share
|
||||
} // end namespace oceanbase
|
||||
|
||||
int main(int argc, char** argv)
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
oceanbase::common::ObLogger::get_logger().set_log_level("INFO");
|
||||
OB_LOGGER.set_log_level("INFO");
|
||||
|
||||
Reference in New Issue
Block a user