Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
79ee7c98
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
79ee7c98
编写于
10月 18, 2021
作者:
wmmhello
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TD-6129<feature> support null true false for json tag
上级
4b3f4b00
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
10 addition
and
10 deletion
+10
-10
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+9
-9
tests/pytest/stable/json_tag.py
tests/pytest/stable/json_tag.py
+1
-1
未找到文件。
src/client/src/tscUtil.c
浏览文件 @
79ee7c98
...
...
@@ -699,7 +699,7 @@ static void setResRawPtrImpl(SSqlRes* pRes, SInternalField* pInfo, int32_t i, bo
if
(
isNull
(
p
,
TSDB_DATA_TYPE_NCHAR
)
&&
pInfo
->
field
.
type
==
TSDB_DATA_TYPE_NCHAR
)
{
memcpy
(
dst
,
p
,
varDataTLen
(
p
));
}
else
if
(
isNull
(
p
,
TSDB_DATA_TYPE_JSON
&&
pInfo
->
field
.
type
==
TSDB_DATA_TYPE_JSON
))
{
}
else
if
(
isNu
select
jtag
from
db_json_tag_test
.
jsons1_6
ll
(
p
,
TSDB_DATA_TYPE_JSON
&&
pInfo
->
field
.
type
==
TSDB_DATA_TYPE_JSON
))
{
memcpy
(
dst
,
p
,
varDataTLen
(
p
));
}
else
if
(
varDataLen
(
p
)
>
0
)
{
int32_t
length
=
taosUcs4ToMbs
(
varDataVal
(
p
),
varDataLen
(
p
),
varDataVal
(
dst
));
...
...
@@ -5222,7 +5222,7 @@ char* parseTagDatatoJson(void *p){
continue
;
}
if
(
j
==
2
){
if
(
*
(
uint8_t
*
)(
va
l
+
CHAR_BYTES
)
==
TSDB_DATA_JSON_NULL
)
goto
end
;
if
(
*
(
uint8_t
*
)(
va
rDataVal
(
val
)
)
==
TSDB_DATA_JSON_NULL
)
goto
end
;
continue
;
}
if
(
j
%
2
==
1
)
{
// json key encode by binary
...
...
@@ -5284,7 +5284,7 @@ end:
}
int
parseJsontoTagData
(
char
*
json
,
SKVRowBuilder
*
kvRowBuilder
,
char
*
errMsg
,
int16_t
startColId
){
uint8_t
nullTypeVal
[
CHAR_BYTES
+
CHAR_BYTES
]
=
{
0
};
uint8_t
nullTypeVal
[
CHAR_BYTES
+
VARSTR_HEADER_SIZE
+
CHAR_BYTES
]
=
{
0
};
uint8_t
jsonNULL
=
TSDB_DATA_JSON_NULL
;
int
jsonIndex
=
startColId
+
1
;
char
nullTypeKey
[
VARSTR_HEADER_SIZE
+
CHAR_BYTES
]
=
{
0
};
...
...
@@ -5292,13 +5292,13 @@ int parseJsontoTagData(char* json, SKVRowBuilder* kvRowBuilder, char* errMsg, in
*
(
uint8_t
*
)(
varDataVal
(
nullTypeKey
))
=
jsonNULL
;
tdAddColToKVRow
(
kvRowBuilder
,
jsonIndex
++
,
TSDB_DATA_TYPE_NCHAR
,
nullTypeKey
,
false
);
// add json null type
if
(
strtrim
(
json
)
==
0
||
strcasecmp
(
json
,
"null"
)
==
0
){
nullTypeVal
[
1
]
=
jsonNULL
;
tdAddColToKVRow
(
kvRowBuilder
,
jsonIndex
++
,
TSDB_DATA_TYPE_
JSON
,
&
nullTypeVal
,
true
);
// add json null value
*
(
uint8_t
*
)(
varDataVal
(
nullTypeVal
+
CHAR_BYTES
))
=
jsonNULL
;
tdAddColToKVRow
(
kvRowBuilder
,
jsonIndex
++
,
TSDB_DATA_TYPE_
NCHAR
,
&
nullTypeVal
,
true
);
// add json null value
return
TSDB_CODE_SUCCESS
;
}
int8_t
jsonNotNull
=
TSDB_DATA_JSON_NOT_NULL
;
nullTypeVal
[
1
]
=
jsonNotNull
;
tdAddColToKVRow
(
kvRowBuilder
,
jsonIndex
++
,
TSDB_DATA_TYPE_
JSON
,
&
nullTypeVal
,
true
);
// add json type
*
(
uint8_t
*
)(
varDataVal
(
nullTypeVal
+
CHAR_BYTES
))
=
jsonNotNull
;
tdAddColToKVRow
(
kvRowBuilder
,
jsonIndex
++
,
TSDB_DATA_TYPE_
NCHAR
,
&
nullTypeVal
,
true
);
// add json type
cJSON
*
root
=
cJSON_Parse
(
json
);
if
(
root
==
NULL
){
...
...
@@ -5384,8 +5384,8 @@ int parseJsontoTagData(char* json, SKVRowBuilder* kvRowBuilder, char* errMsg, in
}
if
(
taosHashGetSize
(
keyHash
)
==
0
){
// set json NULL true
nullTypeVal
[
1
]
=
jsonNULL
;
memcpy
(
POINTER_SHIFT
(
kvRowBuilder
->
buf
,
kvRowBuilder
->
pColIdx
[
2
].
offset
),
&
nullTypeVal
,
CHAR_BYTES
+
CHAR_BYTES
);
*
(
uint8_t
*
)(
varDataVal
(
nullTypeVal
+
CHAR_BYTES
))
=
jsonNULL
;
memcpy
(
POINTER_SHIFT
(
kvRowBuilder
->
buf
,
kvRowBuilder
->
pColIdx
[
2
].
offset
),
&
nullTypeVal
,
CHAR_BYTES
+
VARSTR_HEADER_SIZE
+
CHAR_BYTES
);
}
end:
...
...
tests/pytest/stable/json_tag.py
浏览文件 @
79ee7c98
...
...
@@ -176,7 +176,7 @@ class TDTestCase:
tdSql
.
execute
(
"CREATE TABLE if not exists db_json_tag_test.jsons1_5 using db_json_tag_test.jsons1 tags('
\t
')"
)
tdSql
.
execute
(
"CREATE TABLE if not exists db_json_tag_test.jsons1_6 using db_json_tag_test.jsons1 tags('')"
)
#tdSql.query("select jtag from db_json_tag_test.jsons1_6")
#
tdSql.checkData(0, 0, "NULL")
tdSql
.
checkData
(
0
,
0
,
"NULL"
)
tdSql
.
execute
(
"CREATE TABLE if not exists db_json_tag_test.jsons1_7 using db_json_tag_test.jsons1 tags('{}')"
)
#tdSql.query("select jtag from db_json_tag_test.jsons1_7")
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录