fix master physical rowid bug
This commit is contained in:
		| @ -1215,6 +1215,7 @@ bool ObQueryRange::is_precise_get(const ObKeyPart &key_part_head, | ||||
|   int64_t max_pos = -1; | ||||
|   int64_t depth = ignore_head ? key_part_head.pos_.offset_ - 1 : -1; | ||||
|   bool is_terminated = false; | ||||
|   bool is_phy_rowid_key_part = false; | ||||
|   for (const ObKeyPart *cur = &key_part_head; !is_terminated && NULL != cur; cur = cur->and_next_) { | ||||
|     if (cur->is_in_key()) { | ||||
|       if (cur->in_keypart_->is_strict_in_ && | ||||
| @ -1238,7 +1239,7 @@ bool ObQueryRange::is_precise_get(const ObKeyPart &key_part_head, | ||||
|     } else if (!cur->is_equal_condition()) { | ||||
|       is_precise_get = false; | ||||
|     } else { | ||||
|       // do nothing | ||||
|       is_phy_rowid_key_part = cur->is_phy_rowid_key_part(); | ||||
|     } | ||||
|     if (!is_terminated) { | ||||
|       if (is_strict_in_graph(cur)) { | ||||
| @ -1256,7 +1257,7 @@ bool ObQueryRange::is_precise_get(const ObKeyPart &key_part_head, | ||||
|   } | ||||
|  | ||||
|   max_precise_pos = is_terminated ? max_pos : depth + 1; | ||||
|   if (is_precise_get && depth != column_count_ - 1) { | ||||
|   if (is_precise_get && depth != column_count_ - 1 && !is_phy_rowid_key_part) { | ||||
|     is_precise_get = false; | ||||
|   } | ||||
|   return is_precise_get; | ||||
| @ -6257,6 +6258,7 @@ int ObQueryRange::generate_single_range(ObSearchState &search_state, | ||||
|     LOG_ERROR("alloc memory for end_obj failed", K(ret)); | ||||
|   } else { | ||||
|     int64_t max_pred_index = search_state.max_exist_index_; | ||||
|     column_num = search_state.is_phy_rowid_range_ ? 1 : column_num;//physcial rowid range just use only one column | ||||
|     for (int i = 0; OB_SUCC(ret) && i < column_num; i++) { | ||||
|       new(start + i) ObObj(); | ||||
|       new(end + i) ObObj(); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 wangt1xiuyi
					wangt1xiuyi