Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Messij2001
oceanbase
提交
45460f6a
O
oceanbase
项目概览
Messij2001
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
2
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,发现更多精彩内容 >>
提交
45460f6a
编写于
10月 13, 2021
作者:
B
br0
提交者:
wangzelin.wzl
10月 13, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support MIN/MAX function for enum/set data type
上级
52d765e9
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
25 addition
and
1 deletion
+25
-1
src/sql/resolver/expr/ob_raw_expr_deduce_type.cpp
src/sql/resolver/expr/ob_raw_expr_deduce_type.cpp
+22
-0
src/sql/resolver/expr/ob_raw_expr_wrap_enum_set.cpp
src/sql/resolver/expr/ob_raw_expr_wrap_enum_set.cpp
+3
-1
未找到文件。
src/sql/resolver/expr/ob_raw_expr_deduce_type.cpp
浏览文件 @
45460f6a
...
...
@@ -1403,6 +1403,28 @@ int ObRawExprDeduceType::visit(ObAggFunRawExpr& expr)
}
break
;
}
case
T_FUN_MAX
:
case
T_FUN_MIN
:
{
ObRawExpr
*
child_expr
=
NULL
;
if
(
OB_ISNULL
(
child_expr
=
expr
.
get_param_expr
(
0
)))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"param expr is null"
);
}
else
if
(
OB_UNLIKELY
(
ob_is_enumset_tc
(
child_expr
->
get_data_type
())))
{
// To compatible with MySQL, we need to add cast expression that enumset to varchar
// to evalute MIN/MAX aggregate functions.
need_add_cast
=
true
;
const
ObExprResType
&
res_type
=
child_expr
->
get_result_type
();
result_type
.
set_varchar
();
result_type
.
set_length
(
res_type
.
get_length
());
result_type
.
set_collation_type
(
res_type
.
get_collation_type
());
result_type
.
set_collation_level
(
CS_LEVEL_IMPLICIT
);
expr
.
set_result_type
(
result_type
);
}
else
{
expr
.
set_result_type
(
child_expr
->
get_result_type
());
expr
.
unset_result_flag
(
OB_MYSQL_NOT_NULL_FLAG
);
}
break
;
}
default:
{
expr
.
set_result_type
(
expr
.
get_param_expr
(
0
)
->
get_result_type
());
expr
.
unset_result_flag
(
OB_MYSQL_NOT_NULL_FLAG
);
...
...
src/sql/resolver/expr/ob_raw_expr_wrap_enum_set.cpp
浏览文件 @
45460f6a
...
...
@@ -667,7 +667,9 @@ int ObRawExprWrapEnumSet::visit(ObCaseOpRawExpr& expr)
int
ObRawExprWrapEnumSet
::
visit
(
ObAggFunRawExpr
&
expr
)
{
int
ret
=
OB_SUCCESS
;
if
(
expr
.
has_enum_set_column
()
&&
T_FUN_GROUP_CONCAT
==
expr
.
get_expr_type
())
{
if
(
expr
.
has_enum_set_column
()
&&
(
T_FUN_GROUP_CONCAT
==
expr
.
get_expr_type
()
||
T_FUN_MAX
==
expr
.
get_expr_type
()
||
T_FUN_MIN
==
expr
.
get_expr_type
()))
{
const
ObIArray
<
ObRawExpr
*>&
real_parm_exprs
=
expr
.
get_real_param_exprs
();
const
bool
is_same_need
=
false
;
for
(
int64_t
i
=
0
;
OB_SUCC
(
ret
)
&&
i
<
real_parm_exprs
.
count
();
++
i
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录