Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
99356e79
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
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看板
提交
99356e79
编写于
10月 22, 2021
作者:
wmmhello
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feature/TD-6129 make json_null value to 4 bytes to avoid python connector error
上级
0213adf4
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
25 addition
and
25 deletion
+25
-25
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+13
-13
src/common/src/ttypes.c
src/common/src/ttypes.c
+2
-2
src/inc/taosdef.h
src/inc/taosdef.h
+1
-1
src/inc/ttype.h
src/inc/ttype.h
+1
-1
src/query/src/qFilter.c
src/query/src/qFilter.c
+2
-2
src/tsdb/src/tsdbMeta.c
src/tsdb/src/tsdbMeta.c
+4
-4
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+2
-2
未找到文件。
src/client/src/tscUtil.c
浏览文件 @
99356e79
...
...
@@ -5218,12 +5218,12 @@ char* parseTagDatatoJson(void *p){
continue
;
}
if
(
j
==
1
){
uint
8_t
jsonNULL
=
*
(
uint8
_t
*
)(
varDataVal
(
val
));
uint
32_t
jsonNULL
=
*
(
uint32
_t
*
)(
varDataVal
(
val
));
ASSERT
(
jsonNULL
==
TSDB_DATA_JSON_NULL
);
continue
;
}
if
(
j
==
2
){
if
(
*
(
uint
8
_t
*
)(
varDataVal
(
val
+
CHAR_BYTES
))
==
TSDB_DATA_JSON_NULL
)
goto
end
;
if
(
*
(
uint
32
_t
*
)(
varDataVal
(
val
+
CHAR_BYTES
))
==
TSDB_DATA_JSON_NULL
)
goto
end
;
continue
;
}
if
(
j
%
2
==
1
)
{
// json key encode by binary
...
...
@@ -5286,21 +5286,21 @@ end:
int
parseJsontoTagData
(
char
*
json
,
SKVRowBuilder
*
kvRowBuilder
,
char
*
errMsg
,
int16_t
startColId
){
// set json NULL data
uint8_t
nullTypeVal
[
CHAR_BYTES
+
VARSTR_HEADER_SIZE
+
CHAR
_BYTES
]
=
{
0
};
uint
8
_t
jsonNULL
=
TSDB_DATA_JSON_NULL
;
uint8_t
nullTypeVal
[
CHAR_BYTES
+
VARSTR_HEADER_SIZE
+
INT
_BYTES
]
=
{
0
};
uint
32
_t
jsonNULL
=
TSDB_DATA_JSON_NULL
;
int
jsonIndex
=
startColId
+
1
;
char
nullTypeKey
[
VARSTR_HEADER_SIZE
+
CHAR
_BYTES
]
=
{
0
};
varDataSetLen
(
nullTypeKey
,
CHAR
_BYTES
);
varDataSetLen
(
nullTypeVal
+
CHAR_BYTES
,
CHAR
_BYTES
);
*
(
uint
8
_t
*
)(
varDataVal
(
nullTypeKey
))
=
jsonNULL
;
char
nullTypeKey
[
VARSTR_HEADER_SIZE
+
INT
_BYTES
]
=
{
0
};
varDataSetLen
(
nullTypeKey
,
INT
_BYTES
);
varDataSetLen
(
nullTypeVal
+
CHAR_BYTES
,
INT
_BYTES
);
*
(
uint
32
_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
){
*
(
uint
8
_t
*
)(
varDataVal
(
nullTypeVal
+
CHAR_BYTES
))
=
jsonNULL
;
*
(
uint
32
_t
*
)(
varDataVal
(
nullTypeVal
+
CHAR_BYTES
))
=
jsonNULL
;
tdAddColToKVRow
(
kvRowBuilder
,
jsonIndex
++
,
TSDB_DATA_TYPE_NCHAR
,
nullTypeVal
,
true
);
// add json null value
return
TSDB_CODE_SUCCESS
;
}
int
8
_t
jsonNotNull
=
TSDB_DATA_JSON_NOT_NULL
;
*
(
uint
8
_t
*
)(
varDataVal
(
nullTypeVal
+
CHAR_BYTES
))
=
jsonNotNull
;
int
32
_t
jsonNotNull
=
TSDB_DATA_JSON_NOT_NULL
;
*
(
uint
32
_t
*
)(
varDataVal
(
nullTypeVal
+
CHAR_BYTES
))
=
jsonNotNull
;
tdAddColToKVRow
(
kvRowBuilder
,
jsonIndex
++
,
TSDB_DATA_TYPE_NCHAR
,
nullTypeVal
,
true
);
// add json type
// set json real data
...
...
@@ -5392,8 +5392,8 @@ int parseJsontoTagData(char* json, SKVRowBuilder* kvRowBuilder, char* errMsg, in
}
if
(
taosHashGetSize
(
keyHash
)
==
0
){
// set json NULL true
*
(
uint
8
_t
*
)(
varDataVal
(
nullTypeVal
+
CHAR_BYTES
))
=
jsonNULL
;
memcpy
(
POINTER_SHIFT
(
kvRowBuilder
->
buf
,
kvRowBuilder
->
pColIdx
[
2
].
offset
),
nullTypeVal
,
CHAR_BYTES
+
VARSTR_HEADER_SIZE
+
CHAR
_BYTES
);
*
(
uint
32
_t
*
)(
varDataVal
(
nullTypeVal
+
CHAR_BYTES
))
=
jsonNULL
;
memcpy
(
POINTER_SHIFT
(
kvRowBuilder
->
buf
,
kvRowBuilder
->
pColIdx
[
2
].
offset
),
nullTypeVal
,
CHAR_BYTES
+
VARSTR_HEADER_SIZE
+
INT
_BYTES
);
}
end:
...
...
src/common/src/ttypes.c
浏览文件 @
99356e79
...
...
@@ -441,8 +441,8 @@ void setVardataNull(void* val, int32_t type) {
varDataSetLen
(
val
,
sizeof
(
int32_t
));
*
(
uint32_t
*
)
varDataVal
(
val
)
=
TSDB_DATA_NCHAR_NULL
;
}
else
if
(
type
==
TSDB_DATA_TYPE_JSON
)
{
varDataSetLen
(
val
,
sizeof
(
int
8
_t
));
*
(
uint
8
_t
*
)
varDataVal
(
val
)
=
TSDB_DATA_JSON_NULL
;
varDataSetLen
(
val
,
sizeof
(
int
32
_t
));
*
(
uint
32
_t
*
)
varDataVal
(
val
)
=
TSDB_DATA_JSON_NULL
;
}
else
{
assert
(
0
);
}
...
...
src/inc/taosdef.h
浏览文件 @
99356e79
...
...
@@ -72,7 +72,7 @@ extern const int32_t TYPE_BYTES[16];
#define TSDB_DATA_NCHAR_NULL 0xFFFFFFFF
#define TSDB_DATA_BINARY_NULL 0xFF
#define TSDB_DATA_JSON_PLACEHOLDER 0x7F
#define TSDB_DATA_JSON_NULL 0xFF
#define TSDB_DATA_JSON_NULL 0xFF
FFFFFF
#define TSDB_DATA_JSON_NOT_NULL 0x01
#define TSDB_DATA_UTINYINT_NULL 0xFF
...
...
src/inc/ttype.h
浏览文件 @
99356e79
...
...
@@ -160,7 +160,7 @@ static FORCE_INLINE bool isNull(const void *val, int32_t type) {
case
TSDB_DATA_TYPE_DOUBLE
:
return
*
(
uint64_t
*
)
val
==
TSDB_DATA_DOUBLE_NULL
;
case
TSDB_DATA_TYPE_JSON
:
return
varDataLen
(
val
)
==
sizeof
(
int
8_t
)
&&
*
(
uint8
_t
*
)
varDataVal
(
val
)
==
TSDB_DATA_JSON_NULL
;
return
varDataLen
(
val
)
==
sizeof
(
int
32_t
)
&&
*
(
uint32
_t
*
)
varDataVal
(
val
)
==
TSDB_DATA_JSON_NULL
;
case
TSDB_DATA_TYPE_NCHAR
:
return
varDataLen
(
val
)
==
sizeof
(
int32_t
)
&&
*
(
uint32_t
*
)
varDataVal
(
val
)
==
TSDB_DATA_NCHAR_NULL
;
case
TSDB_DATA_TYPE_BINARY
:
...
...
src/query/src/qFilter.c
浏览文件 @
99356e79
...
...
@@ -1197,8 +1197,8 @@ static int32_t filterDealJson(SFilterInfo *info, tExprNode* tree, tExprNode** pL
if
(
tree
->
_node
.
optr
==
TSDB_RELATION_ISNULL
||
tree
->
_node
.
optr
==
TSDB_RELATION_NOTNULL
){
if
((
*
pLeft
)
->
pSchema
->
type
==
TSDB_DATA_TYPE_JSON
)
{
char
keyMd5
[
TSDB_MAX_JSON_KEY_MD5_LEN
]
=
{
0
};
uint
8
_t
nullData
=
TSDB_DATA_JSON_NULL
;
jsonKeyMd5
(
&
nullData
,
1
,
keyMd5
);
uint
32
_t
nullData
=
TSDB_DATA_JSON_NULL
;
jsonKeyMd5
(
&
nullData
,
INT_BYTES
,
keyMd5
);
memcpy
(
schema
->
name
,
keyMd5
,
TSDB_MAX_JSON_KEY_MD5_LEN
);
}
}
else
if
(
tree
->
_node
.
optr
==
TSDB_RELATION_MATCH
||
tree
->
_node
.
optr
==
TSDB_RELATION_NMATCH
||
tree
->
_node
.
optr
==
TSDB_RELATION_LIKE
){
...
...
src/tsdb/src/tsdbMeta.c
浏览文件 @
99356e79
...
...
@@ -1101,7 +1101,7 @@ static int tsdbAddTableIntoIndex(STsdbMeta *pMeta, STable *pTable, bool refSuper
continue
;
}
if
(
j
==
1
)
{
uint
8_t
jsonNULL
=
*
(
uint8
_t
*
)(
varDataVal
(
val
));
uint
32_t
jsonNULL
=
*
(
uint32
_t
*
)(
varDataVal
(
val
));
ASSERT
(
jsonNULL
==
TSDB_DATA_JSON_NULL
);
}
...
...
@@ -1187,7 +1187,7 @@ static int tsdbRemoveTableFromIndex(STsdbMeta *pMeta, STable *pTable) {
continue
;
}
if
(
j
==
1
){
uint
8_t
jsonNULL
=
*
(
uint8
_t
*
)(
varDataVal
(
val
));
uint
32_t
jsonNULL
=
*
(
uint32
_t
*
)(
varDataVal
(
val
));
ASSERT
(
jsonNULL
==
TSDB_DATA_JSON_NULL
);
}
...
...
@@ -1494,9 +1494,9 @@ static void *tsdbDecodeTable(void *buf, STable **pRTable) {
}
static
SArray
*
getJsonTagTableList
(
STable
*
pTable
){
uint
8
_t
key
=
TSDB_DATA_JSON_NULL
;
uint
32
_t
key
=
TSDB_DATA_JSON_NULL
;
char
keyMd5
[
TSDB_MAX_JSON_KEY_MD5_LEN
]
=
{
0
};
jsonKeyMd5
(
&
key
,
1
,
keyMd5
);
jsonKeyMd5
(
&
key
,
INT_BYTES
,
keyMd5
);
SArray
**
tablist
=
(
SArray
**
)
taosHashGet
(
pTable
->
jsonKeyMap
,
keyMd5
,
TSDB_MAX_JSON_KEY_MD5_LEN
);
return
*
tablist
;
...
...
src/tsdb/src/tsdbRead.c
浏览文件 @
99356e79
...
...
@@ -2679,9 +2679,9 @@ static int tsdbReadRowsFromCache(STableCheckInfo* pCheckInfo, TSKEY maxKey, int
static
int32_t
getAllTableList
(
STable
*
pSuperTable
,
SArray
*
list
)
{
STSchema
*
pTagSchema
=
tsdbGetTableTagSchema
(
pSuperTable
);
if
(
pTagSchema
&&
pTagSchema
->
numOfCols
==
1
&&
pTagSchema
->
columns
[
0
].
type
==
TSDB_DATA_TYPE_JSON
){
uint
8
_t
key
=
TSDB_DATA_JSON_NULL
;
uint
32
_t
key
=
TSDB_DATA_JSON_NULL
;
char
keyMd5
[
TSDB_MAX_JSON_KEY_MD5_LEN
]
=
{
0
};
jsonKeyMd5
(
&
key
,
1
,
keyMd5
);
jsonKeyMd5
(
&
key
,
INT_BYTES
,
keyMd5
);
SArray
**
tablist
=
(
SArray
**
)
taosHashGet
(
pSuperTable
->
jsonKeyMap
,
keyMd5
,
TSDB_MAX_JSON_KEY_MD5_LEN
);
for
(
int
i
=
0
;
i
<
taosArrayGetSize
(
*
tablist
);
++
i
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录