Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
9fc6af62
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看板
提交
9fc6af62
编写于
10月 15, 2021
作者:
wmmhello
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TD-6129<feature> support null true false for json tag
上级
4a05b48e
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
31 addition
and
8 deletion
+31
-8
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+8
-4
src/query/src/qFilter.c
src/query/src/qFilter.c
+6
-0
src/tsdb/src/tsdbMeta.c
src/tsdb/src/tsdbMeta.c
+8
-1
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+7
-1
src/util/inc/tutil.h
src/util/inc/tutil.h
+1
-1
src/util/src/tutil.c
src/util/src/tutil.c
+1
-1
未找到文件。
src/client/src/tscUtil.c
浏览文件 @
9fc6af62
...
...
@@ -5305,10 +5305,10 @@ int parseJsontoTagData(char* json, SKVRowBuilder* kvRowBuilder, char* errMsg, in
uint8_t
typeVal
=
TSDB_DATA_JSON_NULL
;
tdAddColToKVRow
(
kvRowBuilder
,
startColId
++
,
TSDB_DATA_TYPE_JSON
,
&
typeVal
,
false
);
// add json type
return
TSDB_CODE_SUCCESS
;
}
else
{
int8_t
typeVal
=
TSDB_DATA_JSON_OBJECT
;
tdAddColToKVRow
(
kvRowBuilder
,
startColId
++
,
TSDB_DATA_TYPE_JSON
,
&
typeVal
,
false
);
// add json type
}
int
jsonIndex
=
++
startColId
;
int8_t
typeVal
=
TSDB_DATA_JSON_OBJECT
;
tdAddColToKVRow
(
kvRowBuilder
,
jsonIndex
++
,
TSDB_DATA_TYPE_JSON
,
&
typeVal
,
false
);
// add json type
cJSON
*
root
=
cJSON_Parse
(
json
);
if
(
root
==
NULL
){
...
...
@@ -5324,7 +5324,6 @@ int parseJsontoTagData(char* json, SKVRowBuilder* kvRowBuilder, char* errMsg, in
int
retCode
=
0
;
SHashObj
*
keyHash
=
taosHashInit
(
8
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
),
false
,
false
);
int
jsonIndex
=
++
startColId
;
for
(
int
i
=
0
;
i
<
size
;
i
++
)
{
cJSON
*
item
=
cJSON_GetArrayItem
(
root
,
i
);
if
(
!
item
)
{
...
...
@@ -5394,6 +5393,11 @@ int parseJsontoTagData(char* json, SKVRowBuilder* kvRowBuilder, char* errMsg, in
}
}
if
(
taosHashGetSize
(
keyHash
)
==
0
){
typeVal
=
TSDB_DATA_JSON_NULL
;
memcpy
(
kvRowBuilder
->
buf
,
&
typeVal
,
CHAR_BYTES
);
}
end:
taosHashCleanup
(
keyHash
);
cJSON_Delete
(
root
);
...
...
src/query/src/qFilter.c
浏览文件 @
9fc6af62
...
...
@@ -1178,6 +1178,12 @@ int32_t filterAddGroupUnitFromNode(SFilterInfo *info, tExprNode* tree, SArray *g
char
keyMd5
[
TSDB_MAX_JSON_KEY_MD5_LEN
]
=
{
0
};
jsonKeyMd5
(
tree
->
_node
.
pRight
->
pVal
->
pz
,
tree
->
_node
.
pRight
->
pVal
->
nLen
,
keyMd5
);
memcpy
(
schema
->
name
,
keyMd5
,
TSDB_MAX_JSON_KEY_MD5_LEN
);
}
else
if
(
tree
->
_node
.
optr
==
TSDB_RELATION_ISNULL
||
tree
->
_node
.
optr
==
TSDB_RELATION_NOTNULL
){
SSchema
*
schema
=
pLeft
->
pSchema
;
char
keyMd5
[
TSDB_MAX_JSON_KEY_MD5_LEN
]
=
{
0
};
uint8_t
nullData
=
TSDB_DATA_JSON_NULL
;
jsonKeyMd5
(
&
nullData
,
1
,
keyMd5
);
memcpy
(
schema
->
name
,
keyMd5
,
TSDB_MAX_JSON_KEY_MD5_LEN
);
}
SFilterFieldId
left
=
{
0
},
right
=
{
0
};
...
...
src/tsdb/src/tsdbMeta.c
浏览文件 @
9fc6af62
...
...
@@ -1102,7 +1102,7 @@ static int tsdbAddTableIntoIndex(STsdbMeta *pMeta, STable *pTable, bool refSuper
int16_t
nCols
=
kvRowNCols
(
pTable
->
tagVal
);
ASSERT
(
nCols
%
2
==
0
);
for
(
int
j
=
0
;
j
<
nCols
;
++
j
)
{
if
(
j
!=
0
&&
j
%
2
!=
0
)
continue
;
// jump value
if
(
j
!=
0
&&
j
!=
1
&&
j
%
2
!=
0
)
continue
;
// jump value
SColIdx
*
pColIdx
=
kvRowColIdxAt
(
pTable
->
tagVal
,
j
);
void
*
val
=
(
kvRowColVal
(
pTable
->
tagVal
,
pColIdx
));
if
(
j
==
0
){
// json value is the first
...
...
@@ -1111,6 +1111,13 @@ static int tsdbAddTableIntoIndex(STsdbMeta *pMeta, STable *pTable, bool refSuper
continue
;
}
char
nullData
[
VARSTR_HEADER_SIZE
+
CHAR_BYTES
]
=
{
0
};
if
(
j
==
1
&&
*
(
uint8_t
*
)
val
==
TSDB_DATA_JSON_NULL
){
// for null json data, add index to jsonKeyMap
varDataSetLen
(
nullData
,
CHAR_BYTES
);
*
(
uint8_t
*
)(
varDataVal
(
nullData
))
=
TSDB_DATA_JSON_NULL
;
val
=
nullData
;
}
char
keyMd5
[
TSDB_MAX_JSON_KEY_MD5_LEN
]
=
{
0
};
jsonKeyMd5
(
varDataVal
(
val
),
varDataLen
(
val
),
keyMd5
);
SArray
*
tablistNew
=
NULL
;
...
...
src/tsdb/src/tsdbRead.c
浏览文件 @
9fc6af62
...
...
@@ -4087,7 +4087,13 @@ static FORCE_INLINE int32_t tsdbGetJsonTagDataFromId(void *param, int32_t id, ch
if
(
id
==
TSDB_TBNAME_COLUMN_INDEX
)
{
*
data
=
TABLE_NAME
(
pTable
);
}
else
{
void
*
jsonData
=
getJsonTagValue
(
pTable
,
name
,
TSDB_MAX_JSON_KEY_MD5_LEN
,
NULL
);
int16_t
colId
=
0
;
void
*
jsonData
=
getJsonTagValue
(
pTable
,
name
,
TSDB_MAX_JSON_KEY_MD5_LEN
,
&
colId
);
if
(
colId
==
id
+
2
){
// if find json tag is NULL
if
(
jsonData
!=
NULL
)
*
data
=
NULL
;
else
*
data
=
pTable
;
return
TSDB_CODE_SUCCESS
;
}
// jsonData == NULL for ? operation
if
(
jsonData
!=
NULL
)
jsonData
+=
CHAR_BYTES
;
// jump type
*
data
=
jsonData
;
...
...
src/util/inc/tutil.h
浏览文件 @
9fc6af62
...
...
@@ -45,7 +45,7 @@ int taosCheckVersion(char *input_client_version, char *input_server_version, in
char
*
taosIpStr
(
uint32_t
ipInt
);
uint32_t
ip2uint
(
const
char
*
const
ip_addr
);
void
jsonKeyMd5
(
char
*
pMsg
,
int
msgLen
,
void
*
pKey
);
void
jsonKeyMd5
(
void
*
pMsg
,
int
msgLen
,
void
*
pKey
);
static
FORCE_INLINE
void
taosEncryptPass
(
uint8_t
*
inBuf
,
size_t
inLen
,
char
*
target
)
{
MD5_CTX
context
;
...
...
src/util/src/tutil.c
浏览文件 @
9fc6af62
...
...
@@ -456,7 +456,7 @@ char *taosIpStr(uint32_t ipInt) {
return
ipStr
;
}
void
jsonKeyMd5
(
char
*
pMsg
,
int
msgLen
,
void
*
pKey
)
{
void
jsonKeyMd5
(
void
*
pMsg
,
int
msgLen
,
void
*
pKey
)
{
MD5_CTX
context
;
MD5Init
(
&
context
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录