Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
3cbf4ad4
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
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看板
提交
3cbf4ad4
编写于
5月 18, 2022
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: avoid invalid read/write
上级
48cb9156
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
52 addition
and
16 deletion
+52
-16
source/dnode/mnode/sdb/src/sdbRaw.c
source/dnode/mnode/sdb/src/sdbRaw.c
+4
-3
source/libs/index/src/indexTfile.c
source/libs/index/src/indexTfile.c
+6
-7
source/libs/index/test/jsonUT.cc
source/libs/index/test/jsonUT.cc
+37
-0
source/libs/transport/src/transCli.c
source/libs/transport/src/transCli.c
+5
-6
未找到文件。
source/dnode/mnode/sdb/src/sdbRaw.c
浏览文件 @
3cbf4ad4
...
...
@@ -213,8 +213,9 @@ int32_t sdbGetRawBinary(SSdbRaw *pRaw, int32_t dataPos, char *pVal, int32_t valL
terrno
=
TSDB_CODE_SDB_INVALID_DATA_LEN
;
return
-
1
;
}
memcpy
(
pVal
,
pRaw
->
pData
+
dataPos
,
valLen
);
if
(
pVal
!=
NULL
)
{
memcpy
(
pVal
,
pRaw
->
pData
+
dataPos
,
valLen
);
}
return
0
;
}
...
...
@@ -235,4 +236,4 @@ int32_t sdbGetRawTotalSize(SSdbRaw *pRaw) {
}
return
sizeof
(
SSdbRaw
)
+
pRaw
->
dataLen
;
}
\ No newline at end of file
}
source/libs/index/src/indexTfile.c
浏览文件 @
3cbf4ad4
...
...
@@ -473,17 +473,16 @@ static int32_t tfSearchCompareFunc_JSON(void* reader, SIndexTerm* tem, SIdxTempR
int32_t
sz
=
0
;
char
*
ch
=
(
char
*
)
fstSliceData
(
s
,
&
sz
);
//
char* tmp = taosMemoryCalloc(1, sz + 1);
//
memcpy(tmp, ch, sz);
char
*
tmp
=
taosMemoryCalloc
(
1
,
sz
+
1
);
memcpy
(
tmp
,
ch
,
sz
);
if
(
0
!=
strncmp
(
ch
,
p
,
skip
))
{
if
(
0
!=
strncmp
(
tmp
,
p
,
skip
))
{
swsResultDestroy
(
rt
);
//
taosMemoryFree(tmp);
taosMemoryFree
(
tmp
);
break
;
}
TExeCond
cond
=
cmpFn
(
ch
+
skip
,
tem
->
colVal
,
INDEX_TYPE_GET_TYPE
(
tem
->
colType
));
TExeCond
cond
=
cmpFn
(
tmp
+
skip
,
tem
->
colVal
,
INDEX_TYPE_GET_TYPE
(
tem
->
colType
));
if
(
MATCH
==
cond
)
{
tfileReaderLoadTableIds
((
TFileReader
*
)
reader
,
rt
->
out
.
out
,
tr
->
total
);
}
else
if
(
CONTINUE
==
cond
)
{
...
...
@@ -491,7 +490,7 @@ static int32_t tfSearchCompareFunc_JSON(void* reader, SIndexTerm* tem, SIdxTempR
swsResultDestroy
(
rt
);
break
;
}
//
taosMemoryFree(tmp);
taosMemoryFree
(
tmp
);
swsResultDestroy
(
rt
);
}
streamWithStateDestroy
(
st
);
...
...
source/libs/index/test/jsonUT.cc
浏览文件 @
3cbf4ad4
...
...
@@ -578,3 +578,40 @@ TEST_F(JsonEnv, testWriteJsonTfileAndCache_FLOAT) {
EXPECT_EQ
(
1000
,
taosArrayGetSize
(
res
));
}
}
TEST_F
(
JsonEnv
,
testWriteJsonTfileAndCache_DOUBLE
)
{
{
double
val
=
10.0
;
std
::
string
colName
(
"test1"
);
for
(
int
i
=
0
;
i
<
1000
;
i
++
)
{
WriteData
(
index
,
colName
,
TSDB_DATA_TYPE_DOUBLE
,
&
val
,
sizeof
(
val
),
i
);
}
}
{
double
val
=
2.0
;
std
::
string
colName
(
"test1"
);
for
(
int
i
=
0
;
i
<
1000
;
i
++
)
{
WriteData
(
index
,
colName
,
TSDB_DATA_TYPE_DOUBLE
,
&
val
,
sizeof
(
val
),
i
+
1000
);
}
}
{
SArray
*
res
=
NULL
;
std
::
string
colName
(
"test1"
);
double
val
=
1.9
;
Search
(
index
,
colName
,
TSDB_DATA_TYPE_DOUBLE
,
&
val
,
sizeof
(
val
),
QUERY_GREATER_EQUAL
,
&
res
);
EXPECT_EQ
(
2000
,
taosArrayGetSize
(
res
));
}
{
SArray
*
res
=
NULL
;
std
::
string
colName
(
"test1"
);
double
val
=
2.1
;
Search
(
index
,
colName
,
TSDB_DATA_TYPE_DOUBLE
,
&
val
,
sizeof
(
val
),
QUERY_GREATER_EQUAL
,
&
res
);
EXPECT_EQ
(
1000
,
taosArrayGetSize
(
res
));
}
{
std
::
string
colName
(
"test1"
);
SArray
*
res
=
NULL
;
double
val
=
2.1
;
Search
(
index
,
colName
,
TSDB_DATA_TYPE_DOUBLE
,
&
val
,
sizeof
(
val
),
QUERY_GREATER_EQUAL
,
&
res
);
EXPECT_EQ
(
1000
,
taosArrayGetSize
(
res
));
}
}
source/libs/transport/src/transCli.c
浏览文件 @
3cbf4ad4
...
...
@@ -145,9 +145,9 @@ static void cliWalkCb(uv_handle_t* handle, void* arg);
} while (0)
#define CONN_HOST_THREAD_INDEX(conn) (conn ? ((SCliConn*)conn)->hThrdIdx : -1)
#define CONN_PERSIST_TIME(para) (para * 1000 * 10)
#define CONN_GET_HOST_THREAD(conn) (conn ? ((SCliConn*)conn)->hostThrd : NULL)
#define CONN_GET_INST_LABEL(conn) (((STrans*)(((SCliThrdObj*)(conn)->hostThrd)->pTransInst))->label)
#define CONN_PERSIST_TIME(para)
(para * 1000 * 10)
#define CONN_GET_HOST_THREAD(conn)
(conn ? ((SCliConn*)conn)->hostThrd : NULL)
#define CONN_GET_INST_LABEL(conn)
(((STrans*)(((SCliThrdObj*)(conn)->hostThrd)->pTransInst))->label)
#define CONN_SHOULD_RELEASE(conn, head) \
do { \
if ((head)->release == 1 && (head->msgLen) == sizeof(*head)) { \
...
...
@@ -227,7 +227,7 @@ static void cliWalkCb(uv_handle_t* handle, void* arg);
#define REQUEST_PERSIS_HANDLE(msg) ((msg)->info.persistHandle == 1)
#define REQUEST_RELEASE_HANDLE(cmsg) ((cmsg)->type == Release)
#define EPSET_GET_INUSE_IP(epSet) ((epSet)->eps[(epSet)->inUse].fqdn)
#define EPSET_GET_INUSE_IP(epSet)
((epSet)->eps[(epSet)->inUse].fqdn)
#define EPSET_GET_INUSE_PORT(epSet) ((epSet)->eps[(epSet)->inUse].port)
static
void
*
cliWorkThread
(
void
*
arg
);
...
...
@@ -924,8 +924,7 @@ int cliAppCb(SCliConn* pConn, STransMsg* pResp, SCliMsg* pMsg) {
arg
->
param1
=
pMsg
;
arg
->
param2
=
pThrd
;
transDQSched
(
pThrd
->
delayQueue
,
doDelayTask
,
arg
,
TRANS_RETRY_INTERVAL
);
cliDestroy
((
uv_handle_t
*
)
pConn
->
stream
);
cliDestroyConn
(
pConn
,
true
);
return
-
1
;
}
}
else
if
(
pCtx
->
retryCount
<
TRANS_RETRY_COUNT_LIMIT
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录