remove get_method array from query range extraction
This commit is contained in:
parent
2485b4b1be
commit
dce925b7f0
18
deps/easy/src/io/easy_negotiation.c
vendored
18
deps/easy/src/io/easy_negotiation.c
vendored
@ -22,9 +22,9 @@ const uint64_t g_support_eio_maigc[] = {
|
||||
0x5933893228167181,
|
||||
0x6683221dd298cc23,
|
||||
};
|
||||
|
||||
const int g_support_eio_maigc_num = sizeof(g_support_eio_maigc) / sizeof(g_support_eio_maigc[0]);
|
||||
|
||||
|
||||
const int g_support_eio_maigc_num = sizeof(g_support_eio_maigc) / sizeof(g_support_eio_maigc[0]);
|
||||
|
||||
static int easy_magic_in_support_list(uint64_t magic)
|
||||
{
|
||||
int ret = 0;
|
||||
@ -206,9 +206,9 @@ int net_send_negotiate_message(uint8_t negotiation_enable, int fd, uint64_t magi
|
||||
char buf[MAX_SEND_LEN];
|
||||
memset(buf, 0, sizeof(buf));
|
||||
|
||||
ret = easy_encode_negotiation_msg(&ne_msg, buf, MAX_SEND_LEN, &encode_len);
|
||||
if (ret != EASY_OK) {
|
||||
easy_error_log("easy encode negotiation msg failed!ret:%d, fd:%d, addr: %s", ret, fd, addr_str);
|
||||
ret = easy_encode_negotiation_msg(&ne_msg, buf, MAX_SEND_LEN, &encode_len);
|
||||
if (ret != EASY_OK) {
|
||||
easy_error_log("easy encode negotiation msg failed!ret:%d, fd:%d, addr: %s", ret, fd, addr_str);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -234,9 +234,9 @@ int net_send_negotiate_message(uint8_t negotiation_enable, int fd, uint64_t magi
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void net_consume_negotiation_msg(int fd, uint64_t magic)
|
||||
{
|
||||
|
||||
void net_consume_negotiation_msg(int fd, uint64_t magic)
|
||||
{
|
||||
int ret = EASY_OK;
|
||||
const int64_t recv_buf_len = 1 * 1024;
|
||||
int rcv_bytes = 0;
|
||||
|
@ -777,7 +777,6 @@ int ObGranuleSplitter::get_query_range(ObExecContext &ctx,
|
||||
int ret = OB_SUCCESS;
|
||||
ObQueryRangeArray scan_ranges;
|
||||
ObQueryRangeArray skip_scan_ranges;
|
||||
ObGetMethodArray get_method;
|
||||
ObPhysicalPlanCtx *plan_ctx = nullptr;
|
||||
bool has_extract_query_range = false;
|
||||
// 如果tsc有对应的query range,就预先抽取对应的query range
|
||||
@ -809,7 +808,6 @@ int ObGranuleSplitter::get_query_range(ObExecContext &ctx,
|
||||
ctx.get_allocator(),
|
||||
ctx,
|
||||
scan_ranges,
|
||||
get_method,
|
||||
ObBasicSessionInfo::create_dtc_params(ctx.get_my_session())))) {
|
||||
LOG_WARN("failed to get scan ranges", K(ret));
|
||||
} else if (OB_FAIL(tsc_pre_query_range.get_ss_tablet_ranges(
|
||||
@ -841,7 +839,6 @@ int ObGranuleSplitter::get_query_range(ObExecContext &ctx,
|
||||
ctx.get_allocator(),
|
||||
ctx,
|
||||
scan_ranges,
|
||||
get_method,
|
||||
ObBasicSessionInfo::create_dtc_params(ctx.get_my_session())))) {
|
||||
LOG_WARN("failed to get scan ranges", K(ret));
|
||||
} else if (OB_FAIL(tsc_pre_query_range.get_ss_tablet_ranges(
|
||||
|
@ -1030,7 +1030,6 @@ int ObTableScanOp::prepare_single_scan_range(int64_t group_idx)
|
||||
int ret = OB_SUCCESS;
|
||||
ObQueryRangeArray key_ranges;
|
||||
ObQueryRangeArray ss_key_ranges;
|
||||
ObGetMethodArray get_method;
|
||||
ObPhysicalPlanCtx *plan_ctx = GET_PHY_PLAN_CTX(ctx_);
|
||||
ObIAllocator &range_allocator = (table_rescan_allocator_ != nullptr ?
|
||||
*table_rescan_allocator_ : ctx_.get_allocator());
|
||||
@ -1061,7 +1060,6 @@ int ObTableScanOp::prepare_single_scan_range(int64_t group_idx)
|
||||
ctx_,
|
||||
key_ranges,
|
||||
MY_INPUT.mbr_filters_,
|
||||
get_method,
|
||||
ObBasicSessionInfo::create_dtc_params(ctx_.get_my_session())))) {
|
||||
LOG_WARN("failed to extract pre query ranges", K(ret));
|
||||
} else if (!MY_CTDEF.pre_query_range_.is_contain_geo_filters() &&
|
||||
@ -1070,7 +1068,6 @@ int ObTableScanOp::prepare_single_scan_range(int64_t group_idx)
|
||||
range_allocator,
|
||||
ctx_,
|
||||
key_ranges,
|
||||
get_method,
|
||||
ObBasicSessionInfo::create_dtc_params(ctx_.get_my_session())))) {
|
||||
LOG_WARN("failed to extract pre query ranges", K(ret));
|
||||
} else if (OB_FAIL(MY_CTDEF.pre_query_range_.get_ss_tablet_ranges(range_allocator,
|
||||
|
@ -2316,33 +2316,14 @@ int ObSQLUtils::extract_pre_query_range(const ObQueryRange &pre_query_range,
|
||||
ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &key_ranges,
|
||||
ObGetMethodArray get_method,
|
||||
const ObDataTypeCastParams &dtc_params)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_LIKELY(!pre_query_range.need_deep_copy())) {
|
||||
//对于大多数查询来说,query条件是非常规范和工整的,这种条件我们不需要拷贝进行graph的变化,可以直接提取
|
||||
if (OB_FAIL(pre_query_range.get_tablet_ranges(allocator,
|
||||
exec_ctx,
|
||||
key_ranges,
|
||||
get_method,
|
||||
dtc_params))) {
|
||||
LOG_WARN("fail to get tablet ranges", K(ret));
|
||||
}
|
||||
} else {
|
||||
ObQueryRange final_query_range(allocator);
|
||||
if (OB_FAIL(final_query_range.deep_copy(pre_query_range, true))) {
|
||||
// MUST deep copy to make it thread safe
|
||||
LOG_WARN("fail to create final query range", K(ret), K(pre_query_range));
|
||||
} else if (OB_FAIL(final_query_range.final_extract_query_range(exec_ctx, dtc_params))) {
|
||||
LOG_WARN("fail to final extract query range", K(ret), K(final_query_range));
|
||||
} else if (OB_FAIL(final_query_range.get_tablet_ranges(key_ranges,
|
||||
get_method,
|
||||
dtc_params))) {
|
||||
LOG_WARN("fail to get tablet ranges from query range", K(ret), K(final_query_range));
|
||||
} else {
|
||||
// do nothing
|
||||
}
|
||||
bool dummy_all_single_value_ranges = false;
|
||||
if (OB_FAIL(pre_query_range.get_tablet_ranges(allocator, exec_ctx, key_ranges,
|
||||
dummy_all_single_value_ranges,
|
||||
dtc_params))) {
|
||||
LOG_WARN("failed to get tablet ranges", K(ret));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -2352,17 +2333,17 @@ int ObSQLUtils::extract_geo_query_range(const ObQueryRange &pre_query_range,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &key_ranges,
|
||||
ObMbrFilterArray &mbr_filters,
|
||||
ObGetMethodArray get_method,
|
||||
const ObDataTypeCastParams &dtc_params)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
bool dummy_all_single_value_ranges = false;
|
||||
if (OB_LIKELY(!pre_query_range.need_deep_copy())) {
|
||||
//对于大多数查询来说,query条件是非常规范和工整的,这种条件我们不需要拷贝进行graph的变化,可以直接提取
|
||||
if (OB_FAIL(pre_query_range.get_tablet_ranges(allocator,
|
||||
exec_ctx,
|
||||
key_ranges,
|
||||
get_method,
|
||||
dtc_params))) {
|
||||
if (OB_FAIL(pre_query_range.direct_get_tablet_ranges(allocator,
|
||||
exec_ctx,
|
||||
key_ranges,
|
||||
dummy_all_single_value_ranges,
|
||||
dtc_params))) {
|
||||
LOG_WARN("fail to get tablet ranges", K(ret));
|
||||
} else {
|
||||
const MbrFilterArray &pre_filters = pre_query_range.get_mbr_filter();
|
||||
@ -2380,7 +2361,7 @@ int ObSQLUtils::extract_geo_query_range(const ObQueryRange &pre_query_range,
|
||||
} else if (OB_FAIL(final_query_range.final_extract_query_range(exec_ctx, dtc_params))) {
|
||||
LOG_WARN("fail to final extract query range", K(ret), K(final_query_range));
|
||||
} else if (OB_FAIL(final_query_range.get_tablet_ranges(key_ranges,
|
||||
get_method,
|
||||
dummy_all_single_value_ranges,
|
||||
dtc_params))) {
|
||||
LOG_WARN("fail to get tablet ranges from query range", K(ret), K(final_query_range));
|
||||
} else {
|
||||
|
@ -53,7 +53,6 @@ class ObStmtHint;
|
||||
struct ObTransformerCtx;
|
||||
struct ObPreCalcExprFrameInfo;
|
||||
typedef common::ObSEArray<common::ObNewRange *, 1> ObQueryRangeArray;
|
||||
typedef common::ObSEArray<bool, 2, common::ModulePageAllocator, true> ObGetMethodArray;
|
||||
struct ObExprConstraint;
|
||||
typedef common::ObSEArray<common::ObSpatialMBR, 1> ObMbrFilterArray;
|
||||
class ObSelectStmt;
|
||||
@ -383,7 +382,6 @@ public:
|
||||
common::ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &key_ranges,
|
||||
ObGetMethodArray get_method,
|
||||
const ObDataTypeCastParams &dtc_params);
|
||||
|
||||
static int extract_equal_pre_query_range(const ObQueryRange &pre_query_range,
|
||||
@ -395,7 +393,6 @@ public:
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &key_ranges,
|
||||
ObMbrFilterArray &mbr_filters,
|
||||
ObGetMethodArray get_method,
|
||||
const ObDataTypeCastParams &dtc_params);
|
||||
|
||||
static bool is_same_type(const ObExprResType &type1, const ObExprResType &type2);
|
||||
|
@ -3533,7 +3533,7 @@ int ObOptSelectivity::get_column_query_range(const OptSelectivityCtx &ctx,
|
||||
ObIAllocator &allocator = ctx.get_allocator();
|
||||
ObDataTypeCastParams dtc_params = ObBasicSessionInfo::create_dtc_params(ctx.get_session_info());
|
||||
const ColumnItem* column_item = NULL;
|
||||
ObGetMethodArray get_methods;
|
||||
bool dummy_all_single_value_ranges = true;
|
||||
|
||||
if (OB_ISNULL(log_plan) || OB_ISNULL(exec_ctx) ||
|
||||
OB_ISNULL(column_item = log_plan->get_column_item_by_id(table_id, column_id))) {
|
||||
@ -3549,13 +3549,13 @@ int ObOptSelectivity::get_column_query_range(const OptSelectivityCtx &ctx,
|
||||
params))) {
|
||||
LOG_WARN("failed to preliminary extract query range", K(ret));
|
||||
} else if (!query_range.need_deep_copy()) {
|
||||
if (OB_FAIL(query_range.get_tablet_ranges(allocator, *exec_ctx, ranges,
|
||||
get_methods, dtc_params))) {
|
||||
if (OB_FAIL(query_range.direct_get_tablet_ranges(allocator, *exec_ctx, ranges,
|
||||
dummy_all_single_value_ranges, dtc_params))) {
|
||||
LOG_WARN("failed to get tablet ranges", K(ret));
|
||||
}
|
||||
} else if (OB_FAIL(query_range.final_extract_query_range(*exec_ctx, dtc_params))) {
|
||||
LOG_WARN("failed to final extract query range", K(ret));
|
||||
} else if (OB_FAIL(query_range.get_tablet_ranges(ranges, get_methods, dtc_params))) {
|
||||
} else if (OB_FAIL(query_range.get_tablet_ranges(ranges, dummy_all_single_value_ranges, dtc_params))) {
|
||||
LOG_WARN("failed to get tablet ranges", K(ret));
|
||||
} else { /*do nothing*/ }
|
||||
return ret;
|
||||
|
@ -6069,7 +6069,7 @@ OB_INLINE int ObQueryRange::gen_simple_get_range(const ObKeyPart &root,
|
||||
ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const ObDataTypeCastParams &dtc_params) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -6164,8 +6164,8 @@ OB_INLINE int ObQueryRange::gen_simple_get_range(const ObKeyPart &root,
|
||||
range->is_physical_rowid_range_ = contain_phy_rowid_key;
|
||||
if (OB_FAIL(ranges.push_back(range))) {
|
||||
LOG_WARN("push back range to array failed", K(ret));
|
||||
} else if (OB_FAIL(get_methods.push_back(!always_false))) {
|
||||
LOG_WARN("push back get method failed", K(ret));
|
||||
} else if (always_false) {
|
||||
all_single_value_ranges = false;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@ -6372,7 +6372,7 @@ int ObQueryRange::store_range(ObNewRange *range,
|
||||
bool is_get_range,
|
||||
ObSearchState &search_state,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods)
|
||||
bool &all_single_value_ranges)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
bool is_duplicate = false;
|
||||
@ -6392,8 +6392,8 @@ int ObQueryRange::store_range(ObNewRange *range,
|
||||
if (OB_SUCC(ret) && !is_duplicate) {
|
||||
if (OB_FAIL(ranges.push_back(range))) {
|
||||
LOG_WARN("push back range failed", K(ret));
|
||||
} else if (OB_FAIL(get_methods.push_back(is_get_range))) {
|
||||
LOG_WARN("push back get_method failed", K(ret));
|
||||
} else if(!is_get_range) {
|
||||
all_single_value_ranges = false;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@ -6402,7 +6402,7 @@ int ObQueryRange::store_range(ObNewRange *range,
|
||||
int ObQueryRange::and_first_search(ObSearchState &search_state,
|
||||
ObKeyPart *cur,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const ObDataTypeCastParams &dtc_params)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -6414,7 +6414,7 @@ int ObQueryRange::and_first_search(ObSearchState &search_state,
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("invalid argument", K(ret), K_(search_state.start), K_(search_state.end), K(cur));
|
||||
} else if (cur->is_in_key()) {
|
||||
if (OB_FAIL(and_first_in_key(search_state, cur, ranges, get_methods, dtc_params))) {
|
||||
if (OB_FAIL(and_first_in_key(search_state, cur, ranges, all_single_value_ranges, dtc_params))) {
|
||||
LOG_WARN("failed to and in key range", K(ret));
|
||||
}
|
||||
} else {
|
||||
@ -6472,7 +6472,7 @@ int ObQueryRange::and_first_search(ObSearchState &search_state,
|
||||
if (OB_FAIL(SMART_CALL(and_first_search(search_state,
|
||||
cur->and_next_,
|
||||
ranges,
|
||||
get_methods,
|
||||
all_single_value_ranges,
|
||||
dtc_params)))) {
|
||||
} else {
|
||||
search_state.depth_ = copy_depth;
|
||||
@ -6506,7 +6506,7 @@ int ObQueryRange::and_first_search(ObSearchState &search_state,
|
||||
copy_depth,
|
||||
copy_produce_range,
|
||||
ranges,
|
||||
get_methods,
|
||||
all_single_value_ranges,
|
||||
cur->is_phy_rowid_key_part()))) {
|
||||
LOG_WARN("failed to generate cur range", K(ret));
|
||||
}
|
||||
@ -6524,7 +6524,7 @@ int ObQueryRange::and_first_search(ObSearchState &search_state,
|
||||
}
|
||||
cur = cur->or_next_;
|
||||
if (OB_SUCC(ret) &&
|
||||
OB_FAIL(SMART_CALL(and_first_search(search_state, cur, ranges, get_methods, dtc_params)))) {
|
||||
OB_FAIL(SMART_CALL(and_first_search(search_state, cur, ranges, all_single_value_ranges, dtc_params)))) {
|
||||
LOG_WARN("failed to do and first search", K(ret));
|
||||
}
|
||||
}
|
||||
@ -6534,7 +6534,7 @@ int ObQueryRange::and_first_search(ObSearchState &search_state,
|
||||
int ObQueryRange::and_first_in_key(ObSearchState &search_state,
|
||||
ObKeyPart *cur,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const ObDataTypeCastParams &dtc_params)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -6581,7 +6581,7 @@ int ObQueryRange::and_first_in_key(ObSearchState &search_state,
|
||||
if (OB_FAIL(SMART_CALL(and_first_search(search_state,
|
||||
cur->and_next_,
|
||||
ranges,
|
||||
get_methods,
|
||||
all_single_value_ranges,
|
||||
dtc_params)))) {
|
||||
LOG_WARN("failed to do and first search", K(ret));
|
||||
} else {
|
||||
@ -6594,7 +6594,7 @@ int ObQueryRange::and_first_in_key(ObSearchState &search_state,
|
||||
copy_depth,
|
||||
copy_produce_range,
|
||||
ranges,
|
||||
get_methods,
|
||||
all_single_value_ranges,
|
||||
cur->is_phy_rowid_key_part()))) {
|
||||
LOG_WARN("failed to generate cur range", K(ret));
|
||||
}
|
||||
@ -6608,7 +6608,7 @@ int ObQueryRange::generate_cur_range(ObSearchState &search_state,
|
||||
const int64_t copy_depth,
|
||||
const bool copy_produce_range,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const bool is_phy_rowid_range)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -6628,7 +6628,7 @@ int ObQueryRange::generate_cur_range(ObSearchState &search_state,
|
||||
is_get_range,
|
||||
search_state,
|
||||
ranges,
|
||||
get_methods))) {
|
||||
all_single_value_ranges))) {
|
||||
LOG_WARN("store range failed", K(ret));
|
||||
} else {
|
||||
/* reset search_state */
|
||||
@ -6647,9 +6647,8 @@ int ObQueryRange::get_tablet_ranges(common::ObIAllocator &allocator,
|
||||
const ObDataTypeCastParams &dtc_params) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObGetMethodArray get_methods;
|
||||
if (OB_LIKELY(!need_deep_copy())) {
|
||||
if (OB_FAIL(get_tablet_ranges(allocator, exec_ctx, ranges, get_methods, dtc_params))) {
|
||||
if (OB_FAIL(direct_get_tablet_ranges(allocator, exec_ctx, ranges, all_single_value_ranges, dtc_params))) {
|
||||
LOG_WARN("get tablet ranges without deep copy failed", K(ret));
|
||||
}
|
||||
} else {
|
||||
@ -6659,19 +6658,10 @@ int ObQueryRange::get_tablet_ranges(common::ObIAllocator &allocator,
|
||||
LOG_WARN("deep copy query range failed", K(ret));
|
||||
} else if (OB_FAIL(tmp_query_range.final_extract_query_range(exec_ctx, dtc_params))) {
|
||||
LOG_WARN("final extract query range failed", K(ret));
|
||||
} else if (OB_FAIL(tmp_query_range.get_tablet_ranges(ranges, get_methods, dtc_params))) {
|
||||
} else if (OB_FAIL(tmp_query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params))) {
|
||||
LOG_WARN("get tablet range with deep copy failed", K(ret));
|
||||
}
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
int64_t N = get_methods.count();
|
||||
all_single_value_ranges = true;
|
||||
for (int64_t i = 0; all_single_value_ranges && i < N; ++i) {
|
||||
if (!get_methods.at(i)) {
|
||||
all_single_value_ranges = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -6796,11 +6786,11 @@ int ObQueryRange::ObSearchState::init_search_state(int64_t column_count,
|
||||
}
|
||||
|
||||
// @notice 调用这个接口之前必须调用need_deep_copy()来判断是否可以不用拷贝就进行final extract
|
||||
int ObQueryRange::get_tablet_ranges(ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
const ObDataTypeCastParams &dtc_params) const
|
||||
int ObQueryRange::direct_get_tablet_ranges(ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &ranges,
|
||||
bool &all_single_value_ranges,
|
||||
const ObDataTypeCastParams &dtc_params) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_UNLIKELY(table_graph_.key_part_head_->is_always_true() ||
|
||||
@ -6811,20 +6801,20 @@ int ObQueryRange::get_tablet_ranges(ObIAllocator &allocator,
|
||||
LOG_WARN("get true_or_false range failed", K(ret));
|
||||
} else if (OB_FAIL(ranges.push_back(range))) {
|
||||
LOG_WARN("push back range failed", K(ret));
|
||||
} else if (OB_FAIL(get_methods.push_back(is_get_range))) {
|
||||
LOG_WARN("push back get_method failed", K(ret));
|
||||
} else {}
|
||||
} else if (!is_get_range) {
|
||||
all_single_value_ranges = false;
|
||||
}
|
||||
} else if (OB_LIKELY(table_graph_.is_precise_get_)) {
|
||||
if (OB_FAIL(gen_simple_get_range(*table_graph_.key_part_head_,
|
||||
allocator,
|
||||
exec_ctx,
|
||||
ranges,
|
||||
get_methods,
|
||||
all_single_value_ranges,
|
||||
dtc_params))) {
|
||||
LOG_WARN("gen simple get range failed", K(ret));
|
||||
}
|
||||
} else {
|
||||
OZ(gen_simple_scan_range(allocator, exec_ctx, ranges, get_methods, dtc_params));
|
||||
OZ(gen_simple_scan_range(allocator, exec_ctx, ranges, all_single_value_ranges, dtc_params));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -6885,7 +6875,7 @@ OB_NOINLINE int ObQueryRange::gen_skip_scan_range(ObIAllocator &allocator,
|
||||
OB_NOINLINE int ObQueryRange::gen_simple_scan_range(ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const ObDataTypeCastParams &dtc_params) const
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -6910,8 +6900,8 @@ OB_NOINLINE int ObQueryRange::gen_simple_scan_range(ObIAllocator &allocator,
|
||||
LOG_WARN("generate single range failed", K(ret));
|
||||
} else if (OB_FAIL(ranges.push_back(range))) {
|
||||
LOG_WARN("push back range to array failed", K(ret));
|
||||
} else if (OB_FAIL(get_methods.push_back(is_get_range))) {
|
||||
LOG_WARN("push back get method to array failed", K(ret));
|
||||
} else if (!is_get_range) {
|
||||
all_single_value_ranges = false;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -7089,7 +7079,7 @@ inline int ObQueryRange::get_single_key_value(const ObKeyPart *key,
|
||||
#undef CAST_VALUE_TYPE
|
||||
|
||||
OB_NOINLINE int ObQueryRange::get_tablet_ranges(ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const ObDataTypeCastParams &dtc_params)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
@ -7097,7 +7087,7 @@ OB_NOINLINE int ObQueryRange::get_tablet_ranges(ObQueryRangeArray &ranges,
|
||||
int64_t query_range_mem_usage = 0;
|
||||
ObSearchState search_state(allocator_);
|
||||
ranges.reset();
|
||||
get_methods.reset();
|
||||
all_single_value_ranges = true;
|
||||
ObKeyPart *head_key = NULL;
|
||||
if (OB_UNLIKELY(CAN_READ != state_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
@ -7117,9 +7107,9 @@ OB_NOINLINE int ObQueryRange::get_tablet_ranges(ObQueryRangeArray &ranges,
|
||||
LOG_WARN("generate true_or_false range failed", K(ret));
|
||||
} else if (OB_FAIL(ranges.push_back(range))) {
|
||||
LOG_WARN("push back range failed", K(ret));
|
||||
} else if (OB_FAIL(get_methods.push_back(is_get_range))) {
|
||||
LOG_WARN("push back get_method failed", K(ret));
|
||||
} else {}
|
||||
} else if (!is_get_range) {
|
||||
all_single_value_ranges = false;
|
||||
}
|
||||
} else if (OB_FAIL(search_state.init_search_state(column_count_, false,
|
||||
head_key->is_in_key() ? head_key->in_keypart_->table_id_ : head_key->id_.table_id_))) {
|
||||
LOG_WARN("failed to init search state", K(ret));
|
||||
@ -7136,7 +7126,7 @@ OB_NOINLINE int ObQueryRange::get_tablet_ranges(ObQueryRangeArray &ranges,
|
||||
} else if (OB_FAIL(SMART_CALL(and_first_search(search_state,
|
||||
head_key,
|
||||
ranges,
|
||||
get_methods,
|
||||
all_single_value_ranges,
|
||||
dtc_params)))) {
|
||||
LOG_WARN("and first search failed", K(ret));
|
||||
}
|
||||
|
@ -414,14 +414,14 @@ public:
|
||||
// This function can not be used untill physical plan is opened.
|
||||
|
||||
virtual int get_tablet_ranges(ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const common::ObDataTypeCastParams &dtc_params);
|
||||
|
||||
int get_tablet_ranges(common::ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
const common::ObDataTypeCastParams &dtc_params) const;
|
||||
int direct_get_tablet_ranges(common::ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &ranges,
|
||||
bool &all_single_value_ranges,
|
||||
const common::ObDataTypeCastParams &dtc_params) const;
|
||||
int get_ss_tablet_ranges(common::ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &ss_ranges,
|
||||
@ -510,14 +510,6 @@ public:
|
||||
bool is_contain_geo_filters() const { return contain_geo_filters_; }
|
||||
private:
|
||||
|
||||
// @brief this function to initialize query range context
|
||||
// @param range_columns[in], columns group with the range order
|
||||
// @return if success, return OB_SUCCESS
|
||||
int inner_get_tablet_ranges(common::ObIAllocator &allocator,
|
||||
const ParamsIArray ¶ms,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
const common::ObDataTypeCastParams &dtc_params) const;
|
||||
int init_query_range_ctx(common::ObIAllocator &allocator,
|
||||
const ColumnIArray &range_columns,
|
||||
ObExecContext *exec_ctx,
|
||||
@ -762,18 +754,18 @@ private:
|
||||
int and_first_search(ObSearchState &search_state,
|
||||
ObKeyPart *cur,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const common::ObDataTypeCastParams &dtc_params);
|
||||
int and_first_in_key(ObSearchState &search_state,
|
||||
ObKeyPart *cur,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const ObDataTypeCastParams &dtc_params);
|
||||
int generate_cur_range(ObSearchState &search_state,
|
||||
const int64_t copy_depth,
|
||||
const bool copy_produce_range,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const bool is_phy_rowid_range);
|
||||
inline int generate_single_range(ObSearchState &search_state,
|
||||
int64_t column_num,
|
||||
@ -786,7 +778,7 @@ private:
|
||||
bool is_get_range,
|
||||
ObSearchState &search_state,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods);
|
||||
bool &all_single_value_ranges);
|
||||
int alloc_empty_key_part(ObKeyPart *&out_key_part);
|
||||
int alloc_full_key_part(ObKeyPart *&out_key_part);
|
||||
int deep_copy_range_graph(ObKeyPart *src, ObKeyPart *&dest);
|
||||
@ -834,12 +826,12 @@ private:
|
||||
common::ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const common::ObDataTypeCastParams &dtc_params) const;
|
||||
int gen_simple_scan_range(common::ObIAllocator &allocator,
|
||||
ObExecContext &exec_ctx,
|
||||
ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const common::ObDataTypeCastParams &dtc_params) const;
|
||||
|
||||
const ObKeyPart* get_ss_key_part_head() const;
|
||||
|
@ -28,14 +28,13 @@ namespace sql
|
||||
struct ColumnItem;
|
||||
typedef common::ObSEArray<common::ObNewRange *, 1> ObQueryRangeArray;
|
||||
typedef common::ObSEArray<common::ObNewRange, 4, common::ModulePageAllocator, true> ObRangesArray;
|
||||
typedef common::ObSEArray<bool, 2, common::ModulePageAllocator, true> ObGetMethodArray;
|
||||
typedef common::ObSEArray<ColumnItem, 16, common::ModulePageAllocator, true> ColumnArray;
|
||||
|
||||
class ObQueryRangeProvider
|
||||
{
|
||||
public:
|
||||
virtual int get_tablet_ranges(ObQueryRangeArray &ranges,
|
||||
ObGetMethodArray &get_methods,
|
||||
bool &all_single_value_ranges,
|
||||
const common::ObDataTypeCastParams &dtc_params) = 0;
|
||||
|
||||
// to string
|
||||
|
@ -198,10 +198,10 @@ public:
|
||||
ParamsIArray ¶ms,
|
||||
const char *condition,
|
||||
const char *except_range,
|
||||
ObGetMethodArray &except_get_methods)
|
||||
bool except_all_single_value_ranges)
|
||||
{
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ObQueryRange enc_query_range;
|
||||
ObQueryRange dec_query_range1;
|
||||
ObQueryRange dec_query_range2;
|
||||
@ -228,37 +228,31 @@ public:
|
||||
OK(dec_query_range2.deserialize(buf, data_len, pos));
|
||||
ASSERT_EQ(0, strcmp(to_cstring(dec_query_range1), to_cstring(dec_query_range2)));
|
||||
_OB_LOG(INFO, "serialize_size = %ld\n", dec_query_range1.get_serialize_size());
|
||||
OK(dec_query_range1.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(dec_query_range1.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
} else {
|
||||
OK(dec_query_range1.get_tablet_ranges(allocator, exec_ctx_, ranges, get_methods, NULL));
|
||||
OK(dec_query_range1.get_tablet_ranges(allocator, exec_ctx_, ranges, all_single_value_ranges, NULL));
|
||||
}
|
||||
_OB_LOG(INFO, "ranges: %s, except_range: %s", to_cstring(ranges), except_range);
|
||||
|
||||
ASSERT_EQ(0, strcmp(to_cstring(ranges), except_range));
|
||||
ASSERT_EQ(get_methods.count(), except_get_methods.count());
|
||||
for (int64_t j = 0; j < get_methods.count(); ++j) {
|
||||
EXPECT_EQ(get_methods.at(j), except_get_methods.at(j));
|
||||
}
|
||||
EXPECT_EQ(all_single_value_ranges, except_all_single_value_ranges);
|
||||
|
||||
ranges.reset();
|
||||
get_methods.reset();
|
||||
OK(dec_query_range2.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
all_single_value_ranges = true;
|
||||
OK(dec_query_range2.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
_OB_LOG(DEBUG, "ranges: %s, except_range: %s", to_cstring(ranges), except_range);
|
||||
ASSERT_EQ(0, strcmp(to_cstring(ranges), except_range));
|
||||
ASSERT_EQ(get_methods.count(), except_get_methods.count());
|
||||
for (int64_t j = 0; j < get_methods.count(); ++j) {
|
||||
EXPECT_EQ(get_methods.at(j), except_get_methods.at(j));
|
||||
}
|
||||
EXPECT_EQ(all_single_value_ranges, except_all_single_value_ranges);
|
||||
|
||||
ranges.reset();
|
||||
get_methods.reset();
|
||||
all_single_value_ranges = true;
|
||||
ObArray<ObRawExpr*> and_exprs;
|
||||
split_and_condition(expr, and_exprs);
|
||||
// OK(multi_query_range.preliminary_extract_query_range(range_columns, and_exprs, NULL));
|
||||
// OK(multi_query_range.final_extract_query_range(params, NULL));
|
||||
OK(multi_query_range.preliminary_extract_query_range(range_columns, and_exprs, dtc_params, &exec_ctx_));
|
||||
OK(multi_query_range.final_extract_query_range(exec_ctx_, dtc_params));
|
||||
OK(multi_query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(multi_query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
_OB_LOG(DEBUG, "and_exprs_count: %ld, ranges: %s, except_range: %s",
|
||||
and_exprs.count(), to_cstring(ranges), except_range);
|
||||
ASSERT_EQ(0, strcmp(to_cstring(ranges), except_range));
|
||||
@ -492,7 +486,7 @@ void ObQueryRangeTest::get_query_range(const char *sql_expr, const char *&json_e
|
||||
{
|
||||
char var[100][100];
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ObRawExpr *expr = NULL;
|
||||
ObArray<ColumnItem> range_columns;
|
||||
ParamStore ¶ms = exec_ctx_.get_physical_plan_ctx()->get_param_store_for_update();
|
||||
@ -523,9 +517,9 @@ void ObQueryRangeTest::get_query_range(const char *sql_expr, const char *&json_e
|
||||
ASSERT_EQ(0, strcmp(to_cstring(pre_query_range), to_cstring(query_range)));
|
||||
if (query_range.need_deep_copy()) {
|
||||
query_range.final_extract_query_range(exec_ctx_, NULL);
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
} else {
|
||||
OK(query_range.get_tablet_ranges(allocator, exec_ctx_, ranges, get_methods, NULL));
|
||||
OK(query_range.get_tablet_ranges(allocator, exec_ctx_, ranges, all_single_value_ranges, NULL));
|
||||
}
|
||||
|
||||
char buf[BUF_LEN];
|
||||
@ -544,10 +538,7 @@ void ObQueryRangeTest::get_query_range(const char *sql_expr, const char *&json_e
|
||||
databuff_printf(buf, BUF_LEN, pos, "is not min_to_max_range\n");
|
||||
}
|
||||
databuff_printf(buf, BUF_LEN, pos, "ranges.count() = %ld\n", ranges.count());
|
||||
databuff_printf(buf, BUF_LEN, pos, "get_methods.count() = %ld\n", get_methods.count());
|
||||
for (int64_t i = 0 ; i < get_methods.count() ; ++i) {
|
||||
databuff_printf(buf, BUF_LEN, pos, "get_methods %ld: %d\n",i, get_methods.at(i));
|
||||
}
|
||||
databuff_printf(buf, BUF_LEN, pos, "all_single_value_ranges = %d\n", all_single_value_ranges);
|
||||
for(int64_t i = 0 ; i < ranges.count() ; ++i) {
|
||||
databuff_printf(buf, BUF_LEN, pos, "star_border_flag[%ld] = %d\n",i, ranges.at(i)->border_flag_.inclusive_start());
|
||||
databuff_printf(buf, BUF_LEN, pos, "end_border_flag[%ld] = %d\n",i, ranges.at(i)->border_flag_.inclusive_end());
|
||||
@ -565,7 +556,7 @@ void ObQueryRangeTest::get_query_range_filter(const char *sql_expr, const char *
|
||||
{
|
||||
char var[100][100];
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ObRawExpr *expr = NULL;
|
||||
ObArray<ColumnItem> range_columns;
|
||||
ParamStore ¶ms = exec_ctx_.get_physical_plan_ctx()->get_param_store_for_update();
|
||||
@ -588,9 +579,9 @@ void ObQueryRangeTest::get_query_range_filter(const char *sql_expr, const char *
|
||||
bool flag = false;
|
||||
if (query_range.need_deep_copy()) {
|
||||
query_range.final_extract_query_range(exec_ctx_, NULL);
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
} else {
|
||||
OK(query_range.get_tablet_ranges(allocator, exec_ctx_, ranges, get_methods, NULL));
|
||||
OK(query_range.get_tablet_ranges(allocator, exec_ctx_, ranges, all_single_value_ranges, NULL));
|
||||
}
|
||||
|
||||
flag = is_min_to_max_range(ranges);
|
||||
@ -600,10 +591,7 @@ void ObQueryRangeTest::get_query_range_filter(const char *sql_expr, const char *
|
||||
databuff_printf(buf, BUF_LEN, pos, "is not min_to_max_range\n");
|
||||
}
|
||||
databuff_printf(buf, BUF_LEN, pos, "ranges.count() = %ld\n", ranges.count());
|
||||
databuff_printf(buf, BUF_LEN, pos, "get_methods.count() = %ld\n", get_methods.count());
|
||||
for (int64_t i = 0 ; i < get_methods.count() ; ++i) {
|
||||
databuff_printf(buf, BUF_LEN, pos, "get_methods %ld: %d\n",i, get_methods.at(i));
|
||||
}
|
||||
databuff_printf(buf, BUF_LEN, pos, "all_single_value_ranges = %d\n", all_single_value_ranges);
|
||||
for(int64_t i = 0 ; i < ranges.count() ; ++i) {
|
||||
databuff_printf(buf, BUF_LEN, pos, "star_border_flag[%ld] = %d\n",i, ranges.at(i)->border_flag_.inclusive_start());
|
||||
databuff_printf(buf, BUF_LEN, pos, "end_border_flag[%ld] = %d\n",i, ranges.at(i)->border_flag_.inclusive_end());
|
||||
@ -621,7 +609,7 @@ void ObQueryRangeTest::get_query_range_collation(const char *sql_expr, const cha
|
||||
{
|
||||
char var[100][100];
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ParamStore ¶ms = exec_ctx_.get_physical_plan_ctx()->get_param_store_for_update();
|
||||
const ObDataTypeCastParams dtc_params;
|
||||
char final_sql[100];
|
||||
@ -642,7 +630,7 @@ void ObQueryRangeTest::get_query_range_collation(const char *sql_expr, const cha
|
||||
OB_ASSERT(expr);
|
||||
OK(query_range.preliminary_extract_query_range(range_columns, expr, dtc_params, &exec_ctx_));
|
||||
OK(query_range.final_extract_query_range(exec_ctx_, NULL));
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
bool flag = is_min_to_max_range(ranges);
|
||||
if (flag) {
|
||||
databuff_printf(buf, BUF_LEN, pos, "is min_to_max_range\n");
|
||||
@ -650,10 +638,7 @@ void ObQueryRangeTest::get_query_range_collation(const char *sql_expr, const cha
|
||||
databuff_printf(buf, BUF_LEN, pos, "is not min_to_max_range\n");
|
||||
}
|
||||
databuff_printf(buf, BUF_LEN, pos, "ranges.count() = %ld\n", ranges.count());
|
||||
databuff_printf(buf, BUF_LEN, pos, "get_methods.count() = %ld\n", get_methods.count());
|
||||
for (int64_t i = 0 ; i < get_methods.count() ; ++i) {
|
||||
databuff_printf(buf, BUF_LEN, pos, "get_methods %ld: %d\n",i, get_methods.at(i));
|
||||
}
|
||||
databuff_printf(buf, BUF_LEN, pos, "all_single_value_ranges = %d\n", all_single_value_ranges);
|
||||
for(int64_t i = 0 ; i < ranges.count() ; ++i) {
|
||||
databuff_printf(buf, BUF_LEN, pos, "star_border_flag[%ld] = %d\n",i, ranges.at(i)->border_flag_.inclusive_start());
|
||||
databuff_printf(buf, BUF_LEN, pos, "end_border_flag[%ld] = %d\n",i, ranges.at(i)->border_flag_.inclusive_end());
|
||||
@ -804,7 +789,7 @@ TEST_F(ObQueryRangeTest, test_collation_type)
|
||||
{
|
||||
_OB_LOG(INFO, "test collation type");
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ObQueryRange query_range;
|
||||
|
||||
ParamStore ¶ms = exec_ctx_.get_physical_plan_ctx()->get_param_store_for_update();
|
||||
@ -817,7 +802,7 @@ TEST_F(ObQueryRangeTest, single_filed_key_whole_range1)
|
||||
{
|
||||
_OB_LOG(INFO, "single filed key and NULL condition");
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ObQueryRange query_range;
|
||||
const ObDataTypeCastParams dtc_params;
|
||||
|
||||
@ -825,7 +810,7 @@ TEST_F(ObQueryRangeTest, single_filed_key_whole_range1)
|
||||
params.reset();
|
||||
OK(query_range.preliminary_extract_query_range(single_range_columns_, NULL, NULL, &exec_ctx_));
|
||||
OK(query_range.final_extract_query_range(exec_ctx_, NULL));
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
ASSERT_EQ(0, strcmp(to_cstring(ranges), "[{\"range\":\"table_id:3003,group_idx:0,(MIN;MAX)\"}]"));
|
||||
}
|
||||
|
||||
@ -833,7 +818,7 @@ TEST_F(ObQueryRangeTest, single_filed_key_whole_range2)
|
||||
{
|
||||
_OB_LOG(INFO, "single filed key and empty condition array");
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ObQueryRange query_range;
|
||||
ObArray<ObRawExpr*> exprs;
|
||||
const ObDataTypeCastParams dtc_params;
|
||||
@ -842,7 +827,7 @@ TEST_F(ObQueryRangeTest, single_filed_key_whole_range2)
|
||||
params.reset();
|
||||
OK(query_range.preliminary_extract_query_range(single_range_columns_, exprs, dtc_params, &exec_ctx_));
|
||||
OK(query_range.final_extract_query_range(exec_ctx_, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
ASSERT_EQ(0, strcmp(to_cstring(ranges), "[{\"range\":\"table_id:3003,group_idx:0,(MIN;MAX)\"}]"));
|
||||
}
|
||||
|
||||
@ -850,7 +835,7 @@ TEST_F(ObQueryRangeTest, double_filed_key_whole_range1)
|
||||
{
|
||||
_OB_LOG(INFO, "double filed key and NULL condition");
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ObQueryRange query_range;
|
||||
const ObDataTypeCastParams dtc_params;
|
||||
|
||||
@ -858,7 +843,7 @@ TEST_F(ObQueryRangeTest, double_filed_key_whole_range1)
|
||||
params.reset();
|
||||
OK(query_range.preliminary_extract_query_range(double_range_columns_, NULL, dtc_params, &exec_ctx_));
|
||||
OK(query_range.final_extract_query_range(exec_ctx_, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
ASSERT_EQ(0, strcmp(to_cstring(ranges), "[{\"range\":\"table_id:3003,group_idx:0,(MIN,MIN;MAX,MAX)\"}]"));
|
||||
}
|
||||
|
||||
@ -866,7 +851,7 @@ TEST_F(ObQueryRangeTest, double_filed_key_whole_range2)
|
||||
{
|
||||
_OB_LOG(INFO, "double filed key and empty condition array");
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ObQueryRange query_range;
|
||||
ObArray<ObRawExpr*> exprs;
|
||||
const ObDataTypeCastParams dtc_params;
|
||||
@ -875,7 +860,7 @@ TEST_F(ObQueryRangeTest, double_filed_key_whole_range2)
|
||||
params.reset();
|
||||
OK(query_range.preliminary_extract_query_range(double_range_columns_, exprs, dtc_params, &exec_ctx_));
|
||||
OK(query_range.final_extract_query_range(exec_ctx_, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
ASSERT_EQ(0, strcmp(to_cstring(ranges), "[{\"range\":\"table_id:3003,group_idx:0,(MIN,MIN;MAX,MAX)\"}]"));
|
||||
}
|
||||
|
||||
@ -885,7 +870,7 @@ TEST_F(ObQueryRangeTest, range_column_with_like)
|
||||
//组织参数
|
||||
ObArray<ColumnItem> single_range_columns;
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ObQueryRange query_range;
|
||||
ObRawExpr *expr = NULL;
|
||||
const ObDataTypeCastParams dtc_params;
|
||||
@ -896,7 +881,7 @@ TEST_F(ObQueryRangeTest, range_column_with_like)
|
||||
resolve_expr("f like 'abc%'", expr, single_range_columns, params, CS_TYPE_UTF8MB4_GENERAL_CI, CS_TYPE_UTF8MB4_GENERAL_CI);
|
||||
OK(query_range.preliminary_extract_query_range(single_range_columns, expr, dtc_params, &exec_ctx_));
|
||||
OK(query_range.final_extract_query_range(exec_ctx_, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
_OB_LOG(INFO, "range: %s", to_cstring(ranges));
|
||||
|
||||
query_range.reset();
|
||||
@ -906,14 +891,14 @@ TEST_F(ObQueryRangeTest, range_column_with_like)
|
||||
escape_expr->set_value(escape_obj);
|
||||
OK(query_range.preliminary_extract_query_range(single_range_columns, expr, dtc_params, &exec_ctx_));
|
||||
OK(query_range.final_extract_query_range(exec_ctx_, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
_OB_LOG(INFO, "range: %s", to_cstring(ranges));
|
||||
|
||||
query_range.reset();
|
||||
resolve_condition(single_range_columns, "'a' like 'a'", expr);
|
||||
OK(query_range.preliminary_extract_query_range(single_range_columns, expr, dtc_params, &exec_ctx_));
|
||||
OK(query_range.final_extract_query_range(exec_ctx_, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
_OB_LOG(INFO, "range: %s", to_cstring(ranges));
|
||||
}
|
||||
|
||||
@ -923,7 +908,7 @@ TEST_F(ObQueryRangeTest, range_column_with_like)
|
||||
// //组织参数
|
||||
// ObArray<ColumnItem> single_range_columns;
|
||||
// ObQueryRangeArray ranges;
|
||||
// ObGetMethodArray get_methods;
|
||||
// bool all_single_value_ranges = true;
|
||||
// ObQueryRange query_range;
|
||||
// ObRawExpr *expr = NULL;
|
||||
// const ObDataTypeCastParams dtc_params;
|
||||
@ -936,7 +921,7 @@ TEST_F(ObQueryRangeTest, range_column_with_like)
|
||||
// resolve_expr("a like ?", expr, single_range_columns, params_, CS_TYPE_UTF8MB4_GENERAL_CI, CS_TYPE_UTF8MB4_GENERAL_CI);
|
||||
// OK(query_range.preliminary_extract_query_range(single_range_columns, expr, dtc_params));
|
||||
// OK(query_range.final_extract_query_range(params_, dtc_params));
|
||||
// OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
// OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
// _OB_LOG(INFO, "range: %s", to_cstring(ranges));
|
||||
// }
|
||||
|
||||
@ -952,7 +937,7 @@ TEST_F(ObQueryRangeTest, range_column_with_triple_key)
|
||||
_OB_LOG(INFO, "%s", sql_str);
|
||||
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
ObQueryRange query_range;
|
||||
ObRawExpr *expr = NULL;
|
||||
int64_t param_array[600];
|
||||
@ -980,7 +965,7 @@ TEST_F(ObQueryRangeTest, range_column_with_triple_key)
|
||||
int64_t time2 = ObTimeUtility::current_time();
|
||||
OK(query_range.final_extract_query_range(exec_ctx_, dtc_params));
|
||||
int64_t time3 = ObTimeUtility::current_time();
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
_OB_LOG(INFO, "preliminary_extract_query_range(us): %ld", time2 - time1);
|
||||
_OB_LOG(INFO, "final_extract_query_range(us): %ld", time3 - time2);
|
||||
//_OB_LOG(INFO, "ranges: %s", to_cstring(ranges));
|
||||
@ -1033,9 +1018,9 @@ TEST_F(ObQueryRangeTest, simple_row_in)
|
||||
_OB_LOG(INFO, "XXXX final: %s", to_cstring(query_range));
|
||||
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
|
||||
OK(query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
_OB_LOG(INFO, "ranges: %s", to_cstring(ranges));
|
||||
// ASSERT_EQ(1, ranges.count());
|
||||
// int64_t value = 0;
|
||||
@ -1066,15 +1051,13 @@ TEST_F(ObQueryRangeTest, basic_test)
|
||||
_OB_LOG(INFO, "start test: ((b = 6 and a < 5.5) or (a > 8 and b = 15))=> (a < 5 and b = 6) or (a > 8 and b = 15)");
|
||||
ParamStore ¶ms = exec_ctx_.get_physical_plan_ctx()->get_param_store_for_update();
|
||||
params.reset();
|
||||
ObGetMethodArray get_methods;
|
||||
OK(get_methods.push_back(false));
|
||||
OK(get_methods.push_back(false));
|
||||
bool all_single_value_ranges = true;
|
||||
except_result(double_range_columns_,
|
||||
params,
|
||||
"(b = 6 and a < 5) or (a > 8 and b = 15)",
|
||||
"[{\"range\":\"table_id:3003,group_idx:0,({\"NULL\":\"NULL\"},MAX;{\"BIGINT\":5},MIN)\"}, "
|
||||
"{\"range\":\"table_id:3003,group_idx:0,({\"BIGINT\":8},MAX;MAX,{\"BIGINT\":15})\"}]",
|
||||
get_methods);
|
||||
false);
|
||||
query_range.reset();
|
||||
}
|
||||
|
||||
@ -1102,7 +1085,7 @@ TEST_F(ObQueryRangeTest, single_key_cost_time)
|
||||
for (int64_t i = 0; i < 1000; ++i) {
|
||||
ObQueryRange final_query_range;
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
int64_t deep_copy_beg = ObTimeUtility::current_time();
|
||||
OK(final_query_range.deep_copy(pre_query_range));
|
||||
int64_t deep_copy_end = ObTimeUtility::current_time();
|
||||
@ -1110,7 +1093,7 @@ TEST_F(ObQueryRangeTest, single_key_cost_time)
|
||||
OK(final_query_range.final_extract_query_range(exec_ctx_, dtc_params));
|
||||
int64_t extract_end = ObTimeUtility::current_time();
|
||||
extract_cost += extract_end - deep_copy_end;
|
||||
OK(final_query_range.get_tablet_ranges(ranges, get_methods, dtc_params));
|
||||
OK(final_query_range.get_tablet_ranges(ranges, all_single_value_ranges, dtc_params));
|
||||
int64_t get_range_end = ObTimeUtility::current_time();
|
||||
get_range_cost += get_range_end - extract_end;
|
||||
}
|
||||
@ -1122,18 +1105,18 @@ TEST_F(ObQueryRangeTest, single_key_cost_time)
|
||||
get_range_cost = 0;
|
||||
for (int64_t i = 0; i < 1000; ++i) {
|
||||
ObQueryRangeArray ranges;
|
||||
ObGetMethodArray get_methods;
|
||||
bool all_single_value_ranges = true;
|
||||
int64_t get_range_beg = ObTimeUtility::current_time();
|
||||
ASSERT_TRUE(false == query_range2.need_deep_copy());
|
||||
OK(query_range2.get_tablet_ranges(allocator_, exec_ctx_, ranges, get_methods, dtc_params));
|
||||
OK(query_range2.get_tablet_ranges(allocator_, exec_ctx_, ranges, all_single_value_ranges, dtc_params));
|
||||
get_range_cost += ObTimeUtility::current_time() - get_range_beg;
|
||||
}
|
||||
_OB_LOG(INFO, "get range without deep copy cost time: %f", (float)get_range_cost / (float)1000);
|
||||
ObQueryRangeArray ranges2;
|
||||
ObGetMethodArray get_methods2;
|
||||
bool all_single_value_ranges = true;
|
||||
ASSERT_TRUE(true == query_range2.is_precise_get());
|
||||
OK(query_range2.get_tablet_ranges(allocator_, exec_ctx_, ranges2, get_methods2, dtc_params));
|
||||
OB_LOG(INFO, "query range pure get", K(ranges2), K(get_methods2));
|
||||
OK(query_range2.get_tablet_ranges(allocator_, exec_ctx_, ranges2, all_single_value_ranges, dtc_params));
|
||||
OB_LOG(INFO, "query range pure get", K(ranges2), K(all_single_value_ranges));
|
||||
|
||||
int64_t REPEAT_TIMES = 1000000;
|
||||
int64_t ti = 0;
|
||||
@ -1157,7 +1140,7 @@ TEST_F(ObQueryRangeTest, single_key_cost_time)
|
||||
//TEST_F(ObQueryRangeTest, insert_test)
|
||||
//{
|
||||
// ObQueryRangeArray ranges;
|
||||
// ObGetMethodArray get_methods;
|
||||
// bool all_single_value_ranges = true;
|
||||
//
|
||||
// ObArray<ObRawExpr*> exprs;
|
||||
// ObArray<ObObjParam> params;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,8 +4,7 @@
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
count of rang columns = 1
|
||||
@ -15,8 +14,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 2
|
||||
@ -26,8 +24,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 3
|
||||
@ -39,11 +36,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -59,11 +52,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -79,11 +68,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
get_methods 3: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -101,9 +86,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -115,9 +98,7 @@ count of rang columns = 1
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -129,9 +110,7 @@ count of rang columns = 2
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -145,8 +124,7 @@ count of rang columns = 3
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 1
|
||||
@ -156,8 +134,7 @@ count of rang columns = 1
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 2
|
||||
@ -167,8 +144,7 @@ count of rang columns = 2
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 2
|
||||
@ -180,8 +156,7 @@ count of rang columns = 2
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 1
|
||||
@ -191,8 +166,7 @@ count of rang columns = 1
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 2
|
||||
@ -202,8 +176,7 @@ count of rang columns = 2
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 3
|
||||
@ -215,10 +188,7 @@ count of rang columns = 3
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 3
|
||||
get_methods.count() = 3
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -232,10 +202,7 @@ count of rang columns = 1
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 3
|
||||
get_methods.count() = 3
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -249,10 +216,7 @@ count of rang columns = 2
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 3
|
||||
get_methods.count() = 3
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -268,11 +232,7 @@ count of rang columns = 2
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -288,11 +248,7 @@ count of rang columns = 1
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
get_methods 3: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -308,11 +264,7 @@ count of rang columns = 2
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
get_methods 3: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -330,11 +282,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -350,11 +298,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -370,11 +314,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
get_methods 3: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -392,10 +332,7 @@ count of rang columns = 3
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 3
|
||||
get_methods.count() = 3
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -409,10 +346,7 @@ count of rang columns = 1
|
||||
**filter count = 2**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 3
|
||||
get_methods.count() = 3
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -426,10 +360,7 @@ count of rang columns = 2
|
||||
**filter count = 2**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 3
|
||||
get_methods.count() = 3
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -445,11 +376,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -465,11 +392,7 @@ count of rang columns = 1
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -485,11 +408,7 @@ count of rang columns = 2
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
get_methods 3: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -507,9 +426,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -521,9 +438,7 @@ count of rang columns = 1
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -535,9 +450,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -551,9 +464,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -565,9 +476,7 @@ count of rang columns = 1
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -579,9 +488,7 @@ count of rang columns = 2
|
||||
**filter count = 2**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -595,8 +502,7 @@ count of rang columns = 3
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
count of rang columns = 1
|
||||
@ -606,8 +512,7 @@ count of rang columns = 1
|
||||
**filter count = 2**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
count of rang columns = 2
|
||||
@ -617,8 +522,7 @@ count of rang columns = 2
|
||||
**filter count = 2**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 3
|
||||
@ -630,11 +534,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -650,11 +550,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -670,11 +566,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 0
|
||||
get_methods 3: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -692,9 +584,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -706,9 +596,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -720,9 +608,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -736,11 +622,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -756,11 +638,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -776,11 +654,7 @@ count of rang columns = 2
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -798,11 +672,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -818,11 +688,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 0
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 1
|
||||
@ -838,11 +704,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 0
|
||||
get_methods 1: 1
|
||||
get_methods 2: 0
|
||||
get_methods 3: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 1
|
||||
@ -860,9 +722,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -874,9 +734,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 0
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 1
|
||||
@ -888,9 +746,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -904,8 +760,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 1
|
||||
@ -915,8 +770,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 2
|
||||
@ -926,8 +780,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
count of rang columns = 3
|
||||
@ -939,10 +792,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 3
|
||||
get_methods.count() = 3
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -956,10 +806,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 3
|
||||
get_methods.count() = 3
|
||||
get_methods 0: 1
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 0
|
||||
@ -973,10 +820,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 3
|
||||
get_methods.count() = 3
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
get_methods 2: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -992,9 +836,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -1006,9 +848,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 1
|
||||
get_methods 1: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 0
|
||||
@ -1020,9 +860,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 2
|
||||
get_methods.count() = 2
|
||||
get_methods 0: 0
|
||||
get_methods 1: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 0
|
||||
end_border_flag[0] = 0
|
||||
star_border_flag[1] = 0
|
||||
@ -1036,11 +874,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -1056,11 +890,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 1
|
||||
get_methods 3: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -1076,11 +906,7 @@ count of rang columns = 2
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 4
|
||||
get_methods.count() = 4
|
||||
get_methods 0: 1
|
||||
get_methods 1: 1
|
||||
get_methods 2: 0
|
||||
get_methods 3: 0
|
||||
all_single_value_ranges = 0
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
star_border_flag[1] = 1
|
||||
@ -1098,8 +924,7 @@ count of rang columns = 3
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
count of rang columns = 1
|
||||
@ -1109,8 +934,7 @@ count of rang columns = 1
|
||||
**filter count = 0**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
count of rang columns = 2
|
||||
@ -1120,8 +944,7 @@ count of rang columns = 2
|
||||
**filter count = 1**
|
||||
is not min_to_max_range
|
||||
ranges.count() = 1
|
||||
get_methods.count() = 1
|
||||
get_methods 0: 1
|
||||
all_single_value_ranges = 1
|
||||
star_border_flag[0] = 1
|
||||
end_border_flag[0] = 1
|
||||
count of rang columns = 3
|
||||
|
Loading…
x
Reference in New Issue
Block a user