Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Metz
oceanbase
提交
1b88c270
O
oceanbase
项目概览
Metz
/
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,发现更多精彩内容 >>
提交
1b88c270
编写于
7月 20, 2022
作者:
O
obdev
提交者:
wangzelin.wzl
7月 20, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: json column default value(3.1_opensource)
上级
af654e3a
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
34 addition
and
11 deletion
+34
-11
deps/oblib/src/common/object/ob_object.cpp
deps/oblib/src/common/object/ob_object.cpp
+5
-2
deps/oblib/src/lib/mysqlclient/ob_mysql_result.h
deps/oblib/src/lib/mysqlclient/ob_mysql_result.h
+29
-9
未找到文件。
deps/oblib/src/common/object/ob_object.cpp
浏览文件 @
1b88c270
...
...
@@ -276,6 +276,7 @@ DEF_TO_STRING(ObLobLocator)
const
char
*
ObObj
::
MIN_OBJECT_VALUE_STR
=
"__OB__MIN__"
;
const
char
*
ObObj
::
MAX_OBJECT_VALUE_STR
=
"__OB__MAX__"
;
const
char
*
ObObj
::
NOP_VALUE_STR
=
"__OB__NOP__"
;
const
char
OB_JSON_NULL
[
2
]
=
{
'\0'
,
'\0'
};
// binary json null
OB_SERIALIZE_MEMBER
(
ObDataType
,
meta_
,
accuracy_
,
is_zero_fill_
);
OB_SERIALIZE_MEMBER
(
ObEnumSetInnerValue
,
numberic_value_
,
string_value_
);
...
...
@@ -458,12 +459,14 @@ int ObObj::build_not_strict_default_value()
case
ObTinyTextType
:
case
ObTextType
:
case
ObMediumTextType
:
case
ObLongTextType
:
case
ObJsonType
:
{
case
ObLongTextType
:
{
ObString
null_str
;
set_string
(
data_type
,
null_str
);
meta_
.
set_lob_inrow
();
}
break
;
case
ObJsonType
:
{
set_json_value
(
data_type
,
OB_JSON_NULL
,
2
);
}
break
;
case
ObBitType
:
set_bit
(
0
);
break
;
...
...
deps/oblib/src/lib/mysqlclient/ob_mysql_result.h
浏览文件 @
1b88c270
...
...
@@ -686,7 +686,34 @@
} \
ret = (class_obj).set_##column_name(dest_obj); \
} \
} else if (ob_is_json(data_type) && share::is_mysql_mode()) \
{
/* MySQL json does not support default value except null, */
\
/* need this defensive to compatible a bug in old version */
\
ObObj def_obj; \
ObObj default_value; \
default_value.set_type(data_type); \
ObArenaAllocator allocator(ObModIds::OB_SCHEMA); \
ObObj dest_obj; \
ObCastCtx cast_ctx(&allocator, NULL, CM_NONE, column.get_collation_type()); \
if (OB_FAIL(default_value.build_not_strict_default_value())) { \
SQL_LOG(WARN, "failed to build not strict default json value", K(ret)); \
} else { \
def_obj.set_json_value(data_type, \
default_value.get_string().ptr(), \
default_value.get_string().length()); \
if (OB_FAIL(ObObjCaster::to_type(data_type, cast_ctx, def_obj, dest_obj))) \
{ \
SQL_LOG(WARN, "cast obj failed, ", "src type", def_obj.get_type(), "dest type", data_type); \
} \
else \
{ \
dest_obj.set_lob_inrow(); \
dest_obj.meta_.set_collation_level(CS_LEVEL_IMPLICIT); \
ret = (class_obj).set_##column_name(dest_obj); \
} \
} \
} \
else { \
ObObj def_obj; \
def_obj.set_varchar(str_value); \
ObArenaAllocator allocator(ObModIds::OB_SCHEMA); \
...
...
@@ -699,14 +726,7 @@
} else if (OB_FAIL(ObObjCaster::to_type(data_type, cast_ctx, def_obj, dest_obj))) { \
SQL_LOG(WARN, "cast obj failed, ", "src type", def_obj.get_type(), "dest type", data_type); \
} else { \
if (ob_is_json(data_type)) { \
dest_obj.set_lob_inrow(); \
dest_obj.meta_.set_collation_level(CS_LEVEL_IMPLICIT); \
} \
else \
{ \
dest_obj.set_scale(column.get_data_scale()); \
} \
ret = (class_obj).set_##column_name(dest_obj); \
} \
} \
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录