patch 4.0

This commit is contained in:
wangzelin.wzl
2022-10-24 10:34:53 +08:00
parent 4ad6e00ec3
commit 93a1074b0c
10533 changed files with 2588271 additions and 2299373 deletions

View File

@ -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");