Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
soremi
oceanbase
提交
5ea315fe
O
oceanbase
项目概览
soremi
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
5ea315fe
编写于
11月 03, 2022
作者:
O
obdev
提交者:
wangzelin.wzl
11月 03, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix skyline pruning interesting order dim failure problem
上级
71611a5e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
22 deletion
+14
-22
src/sql/optimizer/ob_join_order.cpp
src/sql/optimizer/ob_join_order.cpp
+13
-19
src/sql/optimizer/ob_join_order.h
src/sql/optimizer/ob_join_order.h
+1
-3
未找到文件。
src/sql/optimizer/ob_join_order.cpp
浏览文件 @
5ea315fe
...
...
@@ -5701,16 +5701,19 @@ int ObJoinOrder::generate_base_table_paths(PathHelper &helper)
ObSEArray<ObTablePartitionInfo *, 8> tbl_part_infos;
uint64_t table_id = table_id_;
uint64_t ref_table_id = table_meta_info_.ref_table_id_;
if (OB_FAIL(create_access_paths(table_id, ref_table_id, helper, access_paths))) {
if (!helper.is_inner_path_ &&
OB_FAIL(compute_base_table_property(table_id, ref_table_id))) {
LOG_WARN("failed to compute base path property", K(ret));
} else if (OB_FAIL(create_access_paths(table_id, ref_table_id, helper, access_paths))) {
LOG_WARN("failed to add table to join order(single)", K(ret));
} else if (OB_FAIL(compute_table_location_for_paths(access_paths,
tbl_part_infos))) {
LOG_WARN("failed to calc table location", K(ret));
} else if (OB_FAIL(
compute_base_table_property(table_id,
ref_table_id,
helper,
access_paths))) {
LOG_WARN("failed to compute
base path property
", K(ret));
} else if (OB_FAIL(
estimate_size_and_width_for_base_table(helper, access_paths))) {
LOG_WARN("failed to estimate_size", K(ret));
} else if (!helper.is_inner_path_ && !is_virtual_table(ref_table_id) &&
OB_FAIL(compute_one_row_info_for_table_scan(
access_paths))) {
LOG_WARN("failed to compute
one row info
", K(ret));
} else if (!access_paths.empty() && // when generate inner path, access_paths may be empty
OB_FAIL(pruning_unstable_access_path(helper.table_opt_info_, access_paths))) {
LOG_WARN("failed to pruning unstable access path", K(ret));
...
...
@@ -5729,16 +5732,10 @@ int ObJoinOrder::generate_base_table_paths(PathHelper &helper)
}
int ObJoinOrder::compute_base_table_property(uint64_t table_id,
uint64_t ref_table_id,
PathHelper &helper,
ObIArray<AccessPath *> &access_paths)
uint64_t ref_table_id)
{
int ret = OB_SUCCESS;
if (OB_FAIL(estimate_size_and_width_for_base_table(helper, access_paths))) {
LOG_WARN("failed to estimate_size", K(ret));
} else if (helper.is_inner_path_) {
/*do nothing*/
} else if (OB_FAIL(ObOptimizerUtil::compute_const_exprs(restrict_info_set_, output_const_exprs_))) {
if (OB_FAIL(ObOptimizerUtil::compute_const_exprs(restrict_info_set_, output_const_exprs_))) {
LOG_WARN("failed to compute const exprs", K(ret));
} else if (OB_FAIL(ObEqualAnalysis::compute_equal_set(allocator_,
restrict_info_set_,
...
...
@@ -5748,16 +5745,13 @@ int ObJoinOrder::compute_base_table_property(uint64_t table_id,
ref_table_id,
get_restrict_infos()))) {
LOG_WARN("failed to extract fd item set", K(ret));
} else if (!is_virtual_table(ref_table_id) &&
OB_FAIL(compute_one_row_info_for_table_scan(access_paths))) {
LOG_WARN("failed to compute one row info", K(ret));
} else {
LOG_TRACE("succeed to compute base table property",
K(restrict_info_set_), K(output_const_exprs_),
K(output_equal_sets_)
, K(is_at_most_one_row_)
);
K(output_equal_sets_));
}
return ret;
}
}
int ObJoinOrder::pruning_unstable_access_path(BaseTableOptInfo *table_opt_info,
ObIArray<AccessPath *> &access_paths)
...
...
src/sql/optimizer/ob_join_order.h
浏览文件 @
5ea315fe
...
...
@@ -1456,9 +1456,7 @@ struct NullAwareAntiJoinInfo {
int
generate_base_table_paths
(
PathHelper
&
helper
);
int
compute_base_table_property
(
uint64_t
table_id
,
uint64_t
ref_table_id
,
PathHelper
&
helper
,
ObIArray
<
AccessPath
*>
&
access_paths
);
uint64_t
ref_table_id
);
/**
* @brief generate_subquery_path
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录