Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
不争之德
oceanbase
提交
85ed8b05
O
oceanbase
项目概览
不争之德
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
85ed8b05
编写于
9月 19, 2022
作者:
O
obdev
提交者:
wangzelin.wzl
9月 19, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[CP][BUGFIX]fix json aggr with bit and year type
上级
45079030
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
36 addition
and
1 deletion
+36
-1
src/sql/engine/aggregate/ob_aggregate_processor.cpp
src/sql/engine/aggregate/ob_aggregate_processor.cpp
+1
-0
src/sql/engine/expr/ob_expr_json_func_helper.h
src/sql/engine/expr/ob_expr_json_func_helper.h
+35
-1
未找到文件。
src/sql/engine/aggregate/ob_aggregate_processor.cpp
浏览文件 @
85ed8b05
...
...
@@ -3453,6 +3453,7 @@ int ObAggregateProcessor::get_json_objectagg_result(const ObAggrInfo &aggr_info,
ObCollationType
cs_type0
=
tmp_obj
[
0
].
get_collation_type
();
ObObjType
val_type1
=
tmp_obj
[
1
].
get_type
();
ObScale
scale1
=
tmp_obj
[
1
].
get_scale
();
scale1
=
(
val_type1
==
ObBitType
)
?
aggr_info
.
param_exprs_
.
at
(
1
)
->
datum_meta_
.
length_semantics_
:
scale1
;
ObCollationType
cs_type1
=
tmp_obj
[
1
].
get_collation_type
();
ObString
key_string
=
tmp_obj
[
0
].
get_string
();
if
(
OB_SUCC
(
ret
)
&&
ObCharset
::
charset_type_by_coll
(
cs_type0
)
!=
CHARSET_UTF8MB4
)
{
...
...
src/sql/engine/expr/ob_expr_json_func_helper.h
浏览文件 @
85ed8b05
...
...
@@ -213,7 +213,20 @@ public:
}
break
;
}
case
ObYearType
:
{
uint8_t
in_val
=
datum
.
get_year
();
int64_t
full_year
=
0
;
if
(
OB_FAIL
(
ObTimeConverter
::
year_to_int
(
in_val
,
full_year
)))
{
}
else
{
buf
=
allocator
->
alloc
(
sizeof
(
ObJsonInt
));
if
(
OB_ISNULL
(
buf
))
{
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
}
else
{
json_node
=
(
ObJsonInt
*
)
new
(
buf
)
ObJsonInt
(
full_year
);
}
}
break
;
}
case
ObFloatType
:
case
ObDoubleType
:
case
ObUFloatType
:
...
...
@@ -251,6 +264,27 @@ public:
}
break
;
}
case
ObBitType
:
{
const
int32_t
BUF_LEN
=
(
OB_MAX_BIT_LENGTH
+
7
)
/
8
;
int64_t
pos
=
0
;
char
*
bbuf
=
static_cast
<
char
*>
(
allocator
->
alloc
(
BUF_LEN
));
if
(
OB_ISNULL
(
bbuf
))
{
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
}
else
{
uint64_t
in_val
=
datum
.
get_uint64
();
if
(
OB_FAIL
(
bit_to_char_array
(
in_val
,
scale
,
bbuf
,
BUF_LEN
,
pos
)))
{
}
else
{
common
::
ObString
j_value
(
pos
,
bbuf
);
buf
=
allocator
->
alloc
(
sizeof
(
ObJsonOpaque
));
if
(
OB_ISNULL
(
buf
))
{
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
}
else
{
json_node
=
(
ObJsonOpaque
*
)
new
(
buf
)
ObJsonOpaque
(
j_value
,
type
);
}
}
}
break
;
}
default:
{
ret
=
OB_INVALID_ARGUMENT
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录