Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
53892448
TDengine
项目概览
taosdata
/
TDengine
接近 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
53892448
编写于
6月 12, 2020
作者:
S
Steven Li
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/develop' into feature/crash_gen
上级
d285e58d
60050e52
变更
40
隐藏空白更改
内联
并排
Showing
40 changed file
with
815 addition
and
158 deletion
+815
-158
src/client/src/tscLocal.c
src/client/src/tscLocal.c
+2
-1
src/client/src/tscSecondaryMerge.c
src/client/src/tscSecondaryMerge.c
+5
-5
src/client/src/tscServer.c
src/client/src/tscServer.c
+8
-7
src/client/src/tscSql.c
src/client/src/tscSql.c
+22
-13
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+1
-20
src/common/src/tglobal.c
src/common/src/tglobal.c
+5
-4
src/inc/trpc.h
src/inc/trpc.h
+1
-1
src/mnode/src/mnodeProfile.c
src/mnode/src/mnodeProfile.c
+12
-6
src/mnode/src/mnodeSdb.c
src/mnode/src/mnodeSdb.c
+2
-2
src/mnode/src/mnodeTable.c
src/mnode/src/mnodeTable.c
+3
-2
src/mnode/src/mnodeUser.c
src/mnode/src/mnodeUser.c
+2
-1
src/plugins/http/src/httpAuth.c
src/plugins/http/src/httpAuth.c
+4
-2
src/query/inc/tsqlfunction.h
src/query/inc/tsqlfunction.h
+1
-1
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+35
-33
src/rpc/src/rpcMain.c
src/rpc/src/rpcMain.c
+11
-5
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+23
-23
src/vnode/src/vnodeRead.c
src/vnode/src/vnodeRead.c
+4
-2
tests/pytest/fulltest.sh
tests/pytest/fulltest.sh
+3
-0
tests/pytest/query/filterAllIntTypes.py
tests/pytest/query/filterAllIntTypes.py
+117
-0
tests/pytest/query/filterFloatAndDouble.py
tests/pytest/query/filterFloatAndDouble.py
+160
-0
tests/pytest/query/filterOtherTypes.py
tests/pytest/query/filterOtherTypes.py
+362
-0
tests/pytest/regressiontest.sh
tests/pytest/regressiontest.sh
+2
-0
tests/script/unique/arbitrator/dn3_mn1_replica_change.sim
tests/script/unique/arbitrator/dn3_mn1_replica_change.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_replica_change_dropDnod.sim
...ipt/unique/arbitrator/dn3_mn1_replica_change_dropDnod.sim
+1
-1
tests/script/unique/arbitrator/dn3_mn1_stopDnode_timeout.sim
tests/script/unique/arbitrator/dn3_mn1_stopDnode_timeout.sim
+1
-1
tests/script/unique/arbitrator/dn3_mn1_vnode_change.sim
tests/script/unique/arbitrator/dn3_mn1_vnode_change.sim
+1
-1
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_offline.sim
...t/unique/arbitrator/dn3_mn1_vnode_corruptFile_offline.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_online.sim
...pt/unique/arbitrator/dn3_mn1_vnode_corruptFile_online.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_vnode_delDir.sim
tests/script/unique/arbitrator/dn3_mn1_vnode_delDir.sim
+1
-1
tests/script/unique/arbitrator/dn3_mn1_vnode_nomaster.sim
tests/script/unique/arbitrator/dn3_mn1_vnode_nomaster.sim
+2
-2
tests/script/unique/arbitrator/offline_replica2_alterTable_online.sim
.../unique/arbitrator/offline_replica2_alterTable_online.sim
+1
-1
tests/script/unique/arbitrator/offline_replica2_alterTag_online.sim
...pt/unique/arbitrator/offline_replica2_alterTag_online.sim
+3
-3
tests/script/unique/arbitrator/offline_replica2_createTable_online.sim
...unique/arbitrator/offline_replica2_createTable_online.sim
+1
-1
tests/script/unique/arbitrator/offline_replica2_dropDb_online.sim
...ript/unique/arbitrator/offline_replica2_dropDb_online.sim
+1
-1
tests/script/unique/arbitrator/offline_replica2_dropTable_online.sim
...t/unique/arbitrator/offline_replica2_dropTable_online.sim
+3
-3
tests/script/unique/arbitrator/offline_replica3_alterTable_online.sim
.../unique/arbitrator/offline_replica3_alterTable_online.sim
+1
-1
tests/script/unique/arbitrator/offline_replica3_alterTag_online.sim
...pt/unique/arbitrator/offline_replica3_alterTag_online.sim
+3
-3
tests/script/unique/arbitrator/offline_replica3_createTable_online.sim
...unique/arbitrator/offline_replica3_createTable_online.sim
+1
-1
tests/script/unique/arbitrator/offline_replica3_dropDb_online.sim
...ript/unique/arbitrator/offline_replica3_dropDb_online.sim
+1
-1
tests/script/unique/arbitrator/offline_replica3_dropTable_online.sim
...t/unique/arbitrator/offline_replica3_dropTable_online.sim
+3
-3
未找到文件。
src/client/src/tscLocal.c
浏览文件 @
53892448
...
@@ -279,7 +279,8 @@ static void tscProcessCurrentUser(SSqlObj *pSql) {
...
@@ -279,7 +279,8 @@ static void tscProcessCurrentUser(SSqlObj *pSql) {
pExpr
->
resType
=
TSDB_DATA_TYPE_BINARY
;
pExpr
->
resType
=
TSDB_DATA_TYPE_BINARY
;
char
*
vx
=
calloc
(
1
,
pExpr
->
resBytes
);
char
*
vx
=
calloc
(
1
,
pExpr
->
resBytes
);
STR_WITH_MAXSIZE_TO_VARSTR
(
vx
,
pSql
->
pTscObj
->
user
,
sizeof
(
pSql
->
pTscObj
->
user
));
size_t
size
=
sizeof
(
pSql
->
pTscObj
->
user
);
STR_WITH_MAXSIZE_TO_VARSTR
(
vx
,
pSql
->
pTscObj
->
user
,
size
);
tscSetLocalQueryResult
(
pSql
,
vx
,
pExpr
->
aliasName
,
pExpr
->
resType
,
pExpr
->
resBytes
);
tscSetLocalQueryResult
(
pSql
,
vx
,
pExpr
->
aliasName
,
pExpr
->
resType
,
pExpr
->
resBytes
);
free
(
vx
);
free
(
vx
);
...
...
src/client/src/tscSecondaryMerge.c
浏览文件 @
53892448
...
@@ -217,7 +217,7 @@ void tscCreateLocalReducer(tExtMemBuffer **pMemBuffer, int32_t numOfBuffer, tOrd
...
@@ -217,7 +217,7 @@ void tscCreateLocalReducer(tExtMemBuffer **pMemBuffer, int32_t numOfBuffer, tOrd
pReducer
->
numOfBuffer
=
numOfFlush
;
pReducer
->
numOfBuffer
=
numOfFlush
;
pReducer
->
numOfVnode
=
numOfBuffer
;
pReducer
->
numOfVnode
=
numOfBuffer
;
pReducer
->
pDesc
=
pDesc
;
pReducer
->
pDesc
=
pDesc
;
tscTrace
(
"%p the number of merged leaves is: %d"
,
pSql
,
pReducer
->
numOfBuffer
);
tscTrace
(
"%p the number of merged leaves is: %d"
,
pSql
,
pReducer
->
numOfBuffer
);
...
@@ -604,7 +604,7 @@ bool isSameGroup(SSqlCmd *pCmd, SLocalReducer *pReducer, char *pPrev, tFilePage
...
@@ -604,7 +604,7 @@ bool isSameGroup(SSqlCmd *pCmd, SLocalReducer *pReducer, char *pPrev, tFilePage
tOrderDescriptor
*
pOrderDesc
=
pReducer
->
pDesc
;
tOrderDescriptor
*
pOrderDesc
=
pReducer
->
pDesc
;
SColumnOrderInfo
*
orderInfo
=
&
pOrderDesc
->
orderInfo
;
SColumnOrderInfo
*
orderInfo
=
&
pOrderDesc
->
orderInfo
;
// no group by columns, all data belongs to one group
// no group by columns, all data belongs to one group
int32_t
numOfCols
=
orderInfo
->
numOfCols
;
int32_t
numOfCols
=
orderInfo
->
numOfCols
;
if
(
numOfCols
<=
0
)
{
if
(
numOfCols
<=
0
)
{
...
@@ -627,7 +627,7 @@ bool isSameGroup(SSqlCmd *pCmd, SLocalReducer *pReducer, char *pPrev, tFilePage
...
@@ -627,7 +627,7 @@ bool isSameGroup(SSqlCmd *pCmd, SLocalReducer *pReducer, char *pPrev, tFilePage
// only one row exists
// only one row exists
int32_t
index
=
orderInfo
->
pData
[
0
];
int32_t
index
=
orderInfo
->
pData
[
0
];
int32_t
offset
=
(
pOrderDesc
->
pColumnModel
)
->
pFields
[
index
].
offset
;
int32_t
offset
=
(
pOrderDesc
->
pColumnModel
)
->
pFields
[
index
].
offset
;
int32_t
ret
=
memcmp
(
pPrev
+
offset
,
tmpBuffer
->
data
+
offset
,
pOrderDesc
->
pColumnModel
->
rowSize
-
offset
);
int32_t
ret
=
memcmp
(
pPrev
+
offset
,
tmpBuffer
->
data
+
offset
,
pOrderDesc
->
pColumnModel
->
rowSize
-
offset
);
return
ret
==
0
;
return
ret
==
0
;
}
}
...
@@ -1040,7 +1040,7 @@ static void savePreviousRow(SLocalReducer *pLocalReducer, tFilePage *tmpBuffer)
...
@@ -1040,7 +1040,7 @@ static void savePreviousRow(SLocalReducer *pLocalReducer, tFilePage *tmpBuffer)
static
void
doExecuteSecondaryMerge
(
SSqlCmd
*
pCmd
,
SLocalReducer
*
pLocalReducer
,
bool
needInit
)
{
static
void
doExecuteSecondaryMerge
(
SSqlCmd
*
pCmd
,
SLocalReducer
*
pLocalReducer
,
bool
needInit
)
{
// the tag columns need to be set before all functions execution
// the tag columns need to be set before all functions execution
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
pCmd
->
clauseIndex
);
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
pCmd
->
clauseIndex
);
size_t
size
=
tscSqlExprNumOfExprs
(
pQueryInfo
);
size_t
size
=
tscSqlExprNumOfExprs
(
pQueryInfo
);
for
(
int32_t
j
=
0
;
j
<
size
;
++
j
)
{
for
(
int32_t
j
=
0
;
j
<
size
;
++
j
)
{
SQLFunctionCtx
*
pCtx
=
&
pLocalReducer
->
pCtx
[
j
];
SQLFunctionCtx
*
pCtx
=
&
pLocalReducer
->
pCtx
[
j
];
...
@@ -1182,7 +1182,7 @@ int32_t finalizeRes(SQueryInfo *pQueryInfo, SLocalReducer *pLocalReducer) {
...
@@ -1182,7 +1182,7 @@ int32_t finalizeRes(SQueryInfo *pQueryInfo, SLocalReducer *pLocalReducer) {
*/
*/
bool
needToMerge
(
SQueryInfo
*
pQueryInfo
,
SLocalReducer
*
pLocalReducer
,
tFilePage
*
tmpBuffer
)
{
bool
needToMerge
(
SQueryInfo
*
pQueryInfo
,
SLocalReducer
*
pLocalReducer
,
tFilePage
*
tmpBuffer
)
{
int32_t
ret
=
0
;
// merge all result by default
int32_t
ret
=
0
;
// merge all result by default
int16_t
functionId
=
pLocalReducer
->
pCtx
[
0
].
functionId
;
int16_t
functionId
=
pLocalReducer
->
pCtx
[
0
].
functionId
;
// todo opt performance
// todo opt performance
...
...
src/client/src/tscServer.c
浏览文件 @
53892448
...
@@ -209,6 +209,7 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
...
@@ -209,6 +209,7 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
tscError
(
"%p sql is already released"
,
pSql
->
signature
);
tscError
(
"%p sql is already released"
,
pSql
->
signature
);
return
;
return
;
}
}
if
(
pSql
->
signature
!=
pSql
)
{
if
(
pSql
->
signature
!=
pSql
)
{
tscError
(
"%p sql is already released, signature:%p"
,
pSql
,
pSql
->
signature
);
tscError
(
"%p sql is already released, signature:%p"
,
pSql
,
pSql
->
signature
);
return
;
return
;
...
@@ -217,10 +218,9 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
...
@@ -217,10 +218,9 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
SSqlRes
*
pRes
=
&
pSql
->
res
;
SSqlRes
*
pRes
=
&
pSql
->
res
;
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
STscObj
*
pObj
=
pSql
->
pTscObj
;
STscObj
*
pObj
=
pSql
->
pTscObj
;
// tscTrace("%p msg:%s is received from server", pSql, taosMsg[rpcMsg->msgType]);
if
(
pObj
->
signature
!=
pObj
)
{
if
(
pObj
->
signature
!=
pObj
||
pSql
->
freed
==
1
)
{
tscTrace
(
"%p sql
is already
released or DB connection is closed, freed:%d pObj:%p signature:%p"
,
pSql
,
pSql
->
freed
,
tscTrace
(
"%p sql
Obj needs to be
released or DB connection is closed, freed:%d pObj:%p signature:%p"
,
pSql
,
pSql
->
freed
,
pObj
,
pObj
->
signature
);
pObj
,
pObj
->
signature
);
tscFreeSqlObj
(
pSql
);
tscFreeSqlObj
(
pSql
);
rpcFreeCont
(
rpcMsg
->
pCont
);
rpcFreeCont
(
rpcMsg
->
pCont
);
...
@@ -375,7 +375,7 @@ int tscProcessSql(SSqlObj *pSql) {
...
@@ -375,7 +375,7 @@ int tscProcessSql(SSqlObj *pSql) {
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
pCmd
->
clauseIndex
);
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
pCmd
->
clauseIndex
);
STableMetaInfo
*
pTableMetaInfo
=
NULL
;
STableMetaInfo
*
pTableMetaInfo
=
NULL
;
uint
16
_t
type
=
0
;
uint
32
_t
type
=
0
;
if
(
pQueryInfo
!=
NULL
)
{
if
(
pQueryInfo
!=
NULL
)
{
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
...
@@ -424,7 +424,7 @@ void tscKillSTableQuery(SSqlObj *pSql) {
...
@@ -424,7 +424,7 @@ void tscKillSTableQuery(SSqlObj *pSql) {
* sub-queries not correctly released and master sql object of super table query reaches an abnormal state.
* sub-queries not correctly released and master sql object of super table query reaches an abnormal state.
*/
*/
pSql
->
pSubs
[
i
]
->
res
.
code
=
TSDB_CODE_TSC_QUERY_CANCELLED
;
pSql
->
pSubs
[
i
]
->
res
.
code
=
TSDB_CODE_TSC_QUERY_CANCELLED
;
//taosStopRpcConn(pSql->pSubs[i]->thandle
);
// taosStopRpcConn(pSql->pSubs[i]->
);
}
}
/*
/*
...
@@ -1708,8 +1708,9 @@ int tscBuildSTableVgroupMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
...
@@ -1708,8 +1708,9 @@ int tscBuildSTableVgroupMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
for
(
int32_t
i
=
0
;
i
<
pQueryInfo
->
numOfTables
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pQueryInfo
->
numOfTables
;
++
i
)
{
STableMetaInfo
*
pTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
pCmd
,
pCmd
->
clauseIndex
,
i
);
STableMetaInfo
*
pTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
pCmd
,
pCmd
->
clauseIndex
,
i
);
tstrncpy
(
pMsg
,
pTableMetaInfo
->
name
,
sizeof
(
pTableMetaInfo
->
name
));
size_t
size
=
sizeof
(
pTableMetaInfo
->
name
);
pMsg
+=
sizeof
(
pTableMetaInfo
->
name
);
tstrncpy
(
pMsg
,
pTableMetaInfo
->
name
,
size
);
pMsg
+=
size
;
}
}
pCmd
->
msgType
=
TSDB_MSG_TYPE_CM_STABLE_VGROUP
;
pCmd
->
msgType
=
TSDB_MSG_TYPE_CM_STABLE_VGROUP
;
...
...
src/client/src/tscSql.c
浏览文件 @
53892448
...
@@ -219,6 +219,11 @@ void waitForQueryRsp(void *param, TAOS_RES *tres, int code) {
...
@@ -219,6 +219,11 @@ void waitForQueryRsp(void *param, TAOS_RES *tres, int code) {
sem_post
(
&
pSql
->
rspSem
);
sem_post
(
&
pSql
->
rspSem
);
}
}
static
void
waitForRetrieveRsp
(
void
*
param
,
TAOS_RES
*
tres
,
int
numOfRows
)
{
SSqlObj
*
pSql
=
(
SSqlObj
*
)
tres
;
sem_post
(
&
pSql
->
rspSem
);
}
TAOS_RES
*
taos_query
(
TAOS
*
taos
,
const
char
*
sqlstr
)
{
TAOS_RES
*
taos_query
(
TAOS
*
taos
,
const
char
*
sqlstr
)
{
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
...
@@ -369,11 +374,6 @@ int taos_fetch_block_impl(TAOS_RES *res, TAOS_ROW *rows) {
...
@@ -369,11 +374,6 @@ int taos_fetch_block_impl(TAOS_RES *res, TAOS_ROW *rows) {
return
(
pQueryInfo
->
order
.
order
==
TSDB_ORDER_DESC
)
?
pRes
->
numOfRows
:
-
pRes
->
numOfRows
;
return
(
pQueryInfo
->
order
.
order
==
TSDB_ORDER_DESC
)
?
pRes
->
numOfRows
:
-
pRes
->
numOfRows
;
}
}
static
void
waitForRetrieveRsp
(
void
*
param
,
TAOS_RES
*
tres
,
int
numOfRows
)
{
SSqlObj
*
pSql
=
(
SSqlObj
*
)
tres
;
sem_post
(
&
pSql
->
rspSem
);
}
TAOS_ROW
taos_fetch_row
(
TAOS_RES
*
res
)
{
TAOS_ROW
taos_fetch_row
(
TAOS_RES
*
res
)
{
SSqlObj
*
pSql
=
(
SSqlObj
*
)
res
;
SSqlObj
*
pSql
=
(
SSqlObj
*
)
res
;
if
(
pSql
==
NULL
||
pSql
->
signature
!=
pSql
)
{
if
(
pSql
==
NULL
||
pSql
->
signature
!=
pSql
)
{
...
@@ -476,7 +476,7 @@ int taos_select_db(TAOS *taos, const char *db) {
...
@@ -476,7 +476,7 @@ int taos_select_db(TAOS *taos, const char *db) {
}
}
// send free message to vnode to free qhandle and corresponding resources in vnode
// send free message to vnode to free qhandle and corresponding resources in vnode
static
void
tscFreeQhandleInVnode
(
SSqlObj
*
pSql
)
{
static
bool
tscFreeQhandleInVnode
(
SSqlObj
*
pSql
)
{
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
SSqlRes
*
pRes
=
&
pSql
->
res
;
SSqlRes
*
pRes
=
&
pSql
->
res
;
...
@@ -496,10 +496,19 @@ static void tscFreeQhandleInVnode(SSqlObj* pSql) {
...
@@ -496,10 +496,19 @@ static void tscFreeQhandleInVnode(SSqlObj* pSql) {
tscProcessSql
(
pSql
);
tscProcessSql
(
pSql
);
// in case of sync model query, waits for response and then goes on
// in case of sync model query, waits for response and then goes on
if
(
pSql
->
fp
==
waitForQueryRsp
||
pSql
->
fp
==
waitForRetrieveRsp
)
{
// if (pSql->fp == waitForQueryRsp || pSql->fp == waitForRetrieveRsp) {
sem_wait
(
&
pSql
->
rspSem
);
// sem_wait(&pSql->rspSem);
}
// tscFreeSqlObj(pSql);
// tscTrace("%p sqlObj is freed by app", pSql);
// } else {
tscTrace
(
"%p sqlObj will be freed while rsp received"
,
pSql
);
// }
return
true
;
}
}
return
false
;
}
}
void
taos_free_result
(
TAOS_RES
*
res
)
{
void
taos_free_result
(
TAOS_RES
*
res
)
{
...
@@ -527,10 +536,10 @@ void taos_free_result(TAOS_RES *res) {
...
@@ -527,10 +536,10 @@ void taos_free_result(TAOS_RES *res) {
}
}
pQueryInfo
->
type
=
TSDB_QUERY_TYPE_FREE_RESOURCE
;
pQueryInfo
->
type
=
TSDB_QUERY_TYPE_FREE_RESOURCE
;
tscFreeQhandleInVnode
(
pSql
);
if
(
!
tscFreeQhandleInVnode
(
pSql
))
{
tscFreeSqlObj
(
pSql
);
tscFreeSqlObj
(
pSql
);
tscTrace
(
"%p sqlObj is freed by app"
,
pSql
);
tscTrace
(
"%p sql result is freed by app"
,
pSql
);
}
}
}
// todo should not be used in async query
// todo should not be used in async query
...
...
src/client/src/tscUtil.c
浏览文件 @
53892448
...
@@ -134,24 +134,6 @@ void tscGetDBInfoFromMeterId(char* tableId, char* db) {
...
@@ -134,24 +134,6 @@ void tscGetDBInfoFromMeterId(char* tableId, char* db) {
db
[
0
]
=
0
;
db
[
0
]
=
0
;
}
}
//STableIdInfo* tscGetMeterSidInfo(SVnodeSidList* pSidList, int32_t idx) {
// if (pSidList == NULL) {
// tscError("illegal sidlist");
// return 0;
// }
//
// if (idx < 0 || idx >= pSidList->numOfSids) {
// int32_t sidRange = (pSidList->numOfSids > 0) ? (pSidList->numOfSids - 1) : 0;
//
// tscError("illegal sidIdx:%d, reset to 0, sidIdx range:%d-%d", idx, 0, sidRange);
// idx = 0;
// }
//
// assert(pSidList->pSidExtInfoList[idx] >= 0);
//
// return (STableIdInfo*)(pSidList->pSidExtInfoList[idx] + (char*)pSidList);
//}
bool
tscIsTwoStageSTableQuery
(
SQueryInfo
*
pQueryInfo
,
int32_t
tableIndex
)
{
bool
tscIsTwoStageSTableQuery
(
SQueryInfo
*
pQueryInfo
,
int32_t
tableIndex
)
{
if
(
pQueryInfo
==
NULL
)
{
if
(
pQueryInfo
==
NULL
)
{
return
false
;
return
false
;
...
@@ -176,8 +158,7 @@ bool tscIsTwoStageSTableQuery(SQueryInfo* pQueryInfo, int32_t tableIndex) {
...
@@ -176,8 +158,7 @@ bool tscIsTwoStageSTableQuery(SQueryInfo* pQueryInfo, int32_t tableIndex) {
return
false
;
return
false
;
}
}
if
(((
pQueryInfo
->
type
&
TSDB_QUERY_TYPE_STABLE_SUBQUERY
)
!=
TSDB_QUERY_TYPE_STABLE_SUBQUERY
)
&&
if
(
!
TSDB_QUERY_HAS_TYPE
(
pQueryInfo
->
type
,
TSDB_QUERY_TYPE_STABLE_SUBQUERY
)
&&
pQueryInfo
->
command
==
TSDB_SQL_SELECT
)
{
pQueryInfo
->
command
==
TSDB_SQL_SELECT
)
{
return
UTIL_TABLE_IS_SUPER_TABLE
(
pTableMetaInfo
);
return
UTIL_TABLE_IS_SUPER_TABLE
(
pTableMetaInfo
);
}
}
...
...
src/common/src/tglobal.c
浏览文件 @
53892448
...
@@ -1262,10 +1262,11 @@ bool taosCheckGlobalCfg() {
...
@@ -1262,10 +1262,11 @@ bool taosCheckGlobalCfg() {
taosSetAllDebugFlag
();
taosSetAllDebugFlag
();
}
}
if
(
tsLocalFqdn
[
0
]
==
0
)
if
(
tsLocalFqdn
[
0
]
==
0
)
{
taosGetFqdn
(
tsLocalEp
);
taosGetFqdn
(
tsLocalFqdn
);
else
}
strcpy
(
tsLocalEp
,
tsLocalFqdn
);
strcpy
(
tsLocalEp
,
tsLocalFqdn
);
snprintf
(
tsLocalEp
+
strlen
(
tsLocalEp
),
sizeof
(
tsLocalEp
),
":%d"
,
tsServerPort
);
snprintf
(
tsLocalEp
+
strlen
(
tsLocalEp
),
sizeof
(
tsLocalEp
),
":%d"
,
tsServerPort
);
uPrint
(
"localEp is: %s"
,
tsLocalEp
);
uPrint
(
"localEp is: %s"
,
tsLocalEp
);
...
...
src/inc/trpc.h
浏览文件 @
53892448
...
@@ -83,7 +83,7 @@ void rpcSendResponse(const SRpcMsg *pMsg);
...
@@ -83,7 +83,7 @@ void rpcSendResponse(const SRpcMsg *pMsg);
void
rpcSendRedirectRsp
(
void
*
pConn
,
const
SRpcIpSet
*
pIpSet
);
void
rpcSendRedirectRsp
(
void
*
pConn
,
const
SRpcIpSet
*
pIpSet
);
int
rpcGetConnInfo
(
void
*
thandle
,
SRpcConnInfo
*
pInfo
);
int
rpcGetConnInfo
(
void
*
thandle
,
SRpcConnInfo
*
pInfo
);
void
rpcSendRecv
(
void
*
shandle
,
SRpcIpSet
*
pIpSet
,
const
SRpcMsg
*
pReq
,
SRpcMsg
*
pRsp
);
void
rpcSendRecv
(
void
*
shandle
,
SRpcIpSet
*
pIpSet
,
const
SRpcMsg
*
pReq
,
SRpcMsg
*
pRsp
);
void
rpcReportProgress
(
void
*
pConn
,
char
*
pCont
,
int
contLen
);
int
rpcReportProgress
(
void
*
pConn
,
char
*
pCont
,
int
contLen
);
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
src/mnode/src/mnodeProfile.c
浏览文件 @
53892448
...
@@ -235,12 +235,14 @@ static int32_t mnodeRetrieveConns(SShowObj *pShow, char *data, int32_t rows, voi
...
@@ -235,12 +235,14 @@ static int32_t mnodeRetrieveConns(SShowObj *pShow, char *data, int32_t rows, voi
cols
++
;
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pConnObj
->
user
,
sizeof
(
pConnObj
->
user
));
size_t
size
=
sizeof
(
pConnObj
->
user
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pConnObj
->
user
,
size
);
cols
++
;
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
snprintf
(
ipStr
,
sizeof
(
ipStr
),
"%s:%u"
,
taosIpStr
(
pConnObj
->
ip
),
pConnObj
->
port
);
snprintf
(
ipStr
,
sizeof
(
ipStr
),
"%s:%u"
,
taosIpStr
(
pConnObj
->
ip
),
pConnObj
->
port
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
ipStr
,
sizeof
(
ipStr
));
size
=
sizeof
(
ipStr
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
ipStr
,
size
);
cols
++
;
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
@@ -358,12 +360,14 @@ static int32_t mnodeRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, v
...
@@ -358,12 +360,14 @@ static int32_t mnodeRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, v
cols
++
;
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pConnObj
->
user
,
sizeof
(
pConnObj
->
user
));
size_t
size
=
sizeof
(
pConnObj
->
user
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pConnObj
->
user
,
size
);
cols
++
;
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
snprintf
(
ipStr
,
sizeof
(
ipStr
),
"%s:%u"
,
taosIpStr
(
pConnObj
->
ip
),
pConnObj
->
port
);
snprintf
(
ipStr
,
sizeof
(
ipStr
),
"%s:%u"
,
taosIpStr
(
pConnObj
->
ip
),
pConnObj
->
port
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
ipStr
,
sizeof
(
ipStr
));
size
=
sizeof
(
ipStr
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
ipStr
,
size
);
cols
++
;
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
@@ -479,12 +483,14 @@ static int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, v
...
@@ -479,12 +483,14 @@ static int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, v
cols
++
;
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pConnObj
->
user
,
sizeof
(
pConnObj
->
user
));
size_t
size
=
sizeof
(
pConnObj
->
user
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pConnObj
->
user
,
size
);
cols
++
;
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
snprintf
(
ipStr
,
sizeof
(
ipStr
),
"%s:%u"
,
taosIpStr
(
pConnObj
->
ip
),
pConnObj
->
port
);
snprintf
(
ipStr
,
sizeof
(
ipStr
),
"%s:%u"
,
taosIpStr
(
pConnObj
->
ip
),
pConnObj
->
port
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
ipStr
,
sizeof
(
ipStr
));
size
=
sizeof
(
ipStr
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
ipStr
,
size
);
cols
++
;
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
src/mnode/src/mnodeSdb.c
浏览文件 @
53892448
...
@@ -451,7 +451,7 @@ static int32_t sdbInsertHash(SSdbTable *pTable, SSdbOper *pOper) {
...
@@ -451,7 +451,7 @@ static int32_t sdbInsertHash(SSdbTable *pTable, SSdbOper *pOper) {
pthread_mutex_unlock
(
&
pTable
->
mutex
);
pthread_mutex_unlock
(
&
pTable
->
mutex
);
sdbTrace
(
"table:%s, insert record:%s to hash, rowSize:%d
v
numOfRows:%"
PRId64
" version:%"
PRIu64
,
pTable
->
tableName
,
sdbTrace
(
"table:%s, insert record:%s to hash, rowSize:%d numOfRows:%"
PRId64
" version:%"
PRIu64
,
pTable
->
tableName
,
sdbGetKeyStrFromObj
(
pTable
,
pOper
->
pObj
),
pOper
->
rowSize
,
pTable
->
numOfRows
,
sdbGetVersion
());
sdbGetKeyStrFromObj
(
pTable
,
pOper
->
pObj
),
pOper
->
rowSize
,
pTable
->
numOfRows
,
sdbGetVersion
());
(
*
pTable
->
insertFp
)(
pOper
);
(
*
pTable
->
insertFp
)(
pOper
);
...
@@ -475,7 +475,7 @@ static int32_t sdbDeleteHash(SSdbTable *pTable, SSdbOper *pOper) {
...
@@ -475,7 +475,7 @@ static int32_t sdbDeleteHash(SSdbTable *pTable, SSdbOper *pOper) {
pTable
->
numOfRows
--
;
pTable
->
numOfRows
--
;
pthread_mutex_unlock
(
&
pTable
->
mutex
);
pthread_mutex_unlock
(
&
pTable
->
mutex
);
sdbTrace
(
"table:%s, delete record:%s from hash, numOfRows:%
d
"
PRId64
"version:%"
PRIu64
,
pTable
->
tableName
,
sdbTrace
(
"table:%s, delete record:%s from hash, numOfRows:%"
PRId64
"version:%"
PRIu64
,
pTable
->
tableName
,
sdbGetKeyStrFromObj
(
pTable
,
pOper
->
pObj
),
pTable
->
numOfRows
,
sdbGetVersion
());
sdbGetKeyStrFromObj
(
pTable
,
pOper
->
pObj
),
pTable
->
numOfRows
,
sdbGetVersion
());
int8_t
*
updateEnd
=
pOper
->
pObj
+
pTable
->
refCountPos
-
1
;
int8_t
*
updateEnd
=
pOper
->
pObj
+
pTable
->
refCountPos
-
1
;
...
...
src/mnode/src/mnodeTable.c
浏览文件 @
53892448
...
@@ -1004,7 +1004,7 @@ static int32_t mnodeAddSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, SS
...
@@ -1004,7 +1004,7 @@ static int32_t mnodeAddSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, SS
sizeof
(
SSchema
)
*
pStable
->
numOfTags
);
sizeof
(
SSchema
)
*
pStable
->
numOfTags
);
memcpy
(
pStable
->
schema
+
pStable
->
numOfColumns
,
schema
,
sizeof
(
SSchema
)
*
ncols
);
memcpy
(
pStable
->
schema
+
pStable
->
numOfColumns
,
schema
,
sizeof
(
SSchema
)
*
ncols
);
SSchema
*
tschema
=
(
SSchema
*
)
(
pStable
->
schema
+
sizeof
(
SSchema
)
*
pStable
->
numOfColumns
);
SSchema
*
tschema
=
(
SSchema
*
)
(
pStable
->
schema
+
pStable
->
numOfColumns
);
for
(
int32_t
i
=
0
;
i
<
ncols
;
i
++
)
{
for
(
int32_t
i
=
0
;
i
<
ncols
;
i
++
)
{
tschema
[
i
].
colId
=
pStable
->
nextColId
++
;
tschema
[
i
].
colId
=
pStable
->
nextColId
++
;
}
}
...
@@ -1770,7 +1770,8 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) {
...
@@ -1770,7 +1770,8 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) {
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
return
TSDB_CODE_MND_OUT_OF_MEMORY
;
}
}
tstrncpy
(
pCreateMsg
->
tableId
,
pInfo
->
tableId
,
sizeof
(
pInfo
->
tableId
));
size_t
size
=
sizeof
(
pInfo
->
tableId
);
tstrncpy
(
pCreateMsg
->
tableId
,
pInfo
->
tableId
,
size
);
tstrncpy
(
pCreateMsg
->
db
,
pMsg
->
pDb
->
name
,
sizeof
(
pCreateMsg
->
db
));
tstrncpy
(
pCreateMsg
->
db
,
pMsg
->
pDb
->
name
,
sizeof
(
pCreateMsg
->
db
));
pCreateMsg
->
igExists
=
1
;
pCreateMsg
->
igExists
=
1
;
pCreateMsg
->
getMeta
=
1
;
pCreateMsg
->
getMeta
=
1
;
...
...
src/mnode/src/mnodeUser.c
浏览文件 @
53892448
...
@@ -315,7 +315,8 @@ static int32_t mnodeRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, voi
...
@@ -315,7 +315,8 @@ static int32_t mnodeRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, voi
cols
=
0
;
cols
=
0
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pUser
->
user
,
sizeof
(
pUser
->
user
));
size_t
size
=
sizeof
(
pUser
->
user
);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pUser
->
user
,
size
);
cols
++
;
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
...
...
src/plugins/http/src/httpAuth.c
浏览文件 @
53892448
...
@@ -101,8 +101,10 @@ bool httpParseTaosdAuthToken(HttpContext *pContext, char *token, int len) {
...
@@ -101,8 +101,10 @@ bool httpParseTaosdAuthToken(HttpContext *pContext, char *token, int len) {
bool
httpGenTaosdAuthToken
(
HttpContext
*
pContext
,
char
*
token
,
int
maxLen
)
{
bool
httpGenTaosdAuthToken
(
HttpContext
*
pContext
,
char
*
token
,
int
maxLen
)
{
char
buffer
[
sizeof
(
pContext
->
user
)
+
sizeof
(
pContext
->
pass
)]
=
{
0
};
char
buffer
[
sizeof
(
pContext
->
user
)
+
sizeof
(
pContext
->
pass
)]
=
{
0
};
tstrncpy
(
buffer
,
pContext
->
user
,
sizeof
(
pContext
->
user
));
size_t
size
=
sizeof
(
pContext
->
user
);
tstrncpy
(
buffer
+
sizeof
(
pContext
->
user
),
pContext
->
pass
,
sizeof
(
pContext
->
pass
));
tstrncpy
(
buffer
,
pContext
->
user
,
size
);
size
=
sizeof
(
pContext
->
pass
);
tstrncpy
(
buffer
+
sizeof
(
pContext
->
user
),
pContext
->
pass
,
size
);
char
*
encrypt
=
taosDesEncode
(
KEY_DES_4
,
buffer
,
TSDB_USER_LEN
+
TSDB_PASSWORD_LEN
);
char
*
encrypt
=
taosDesEncode
(
KEY_DES_4
,
buffer
,
TSDB_USER_LEN
+
TSDB_PASSWORD_LEN
);
char
*
base64
=
base64_encode
((
const
unsigned
char
*
)
encrypt
,
TSDB_USER_LEN
+
TSDB_PASSWORD_LEN
);
char
*
base64
=
base64_encode
((
const
unsigned
char
*
)
encrypt
,
TSDB_USER_LEN
+
TSDB_PASSWORD_LEN
);
...
...
src/query/inc/tsqlfunction.h
浏览文件 @
53892448
...
@@ -112,7 +112,7 @@ enum {
...
@@ -112,7 +112,7 @@ enum {
#define QUERY_IS_STABLE_QUERY(type) (((type)&TSDB_QUERY_TYPE_STABLE_QUERY) != 0)
#define QUERY_IS_STABLE_QUERY(type) (((type)&TSDB_QUERY_TYPE_STABLE_QUERY) != 0)
#define QUERY_IS_JOIN_QUERY(type) (TSDB_QUERY_HAS_TYPE(type, TSDB_QUERY_TYPE_JOIN_QUERY))
#define QUERY_IS_JOIN_QUERY(type) (TSDB_QUERY_HAS_TYPE(type, TSDB_QUERY_TYPE_JOIN_QUERY))
#define QUERY_IS_PROJECTION_QUERY(type) (((type)&TSDB_QUERY_TYPE_PROJECTION_QUERY) != 0)
#define QUERY_IS_PROJECTION_QUERY(type)
(((type)&TSDB_QUERY_TYPE_PROJECTION_QUERY) != 0)
#define QUERY_IS_FREE_RESOURCE(type) (((type)&TSDB_QUERY_TYPE_FREE_RESOURCE) != 0)
#define QUERY_IS_FREE_RESOURCE(type) (((type)&TSDB_QUERY_TYPE_FREE_RESOURCE) != 0)
typedef
struct
SArithmeticSupport
{
typedef
struct
SArithmeticSupport
{
...
...
src/query/src/qExecutor.c
浏览文件 @
53892448
...
@@ -484,7 +484,7 @@ static int32_t setWindowOutputBufByKey(SQueryRuntimeEnv *pRuntimeEnv, SWindowRes
...
@@ -484,7 +484,7 @@ static int32_t setWindowOutputBufByKey(SQueryRuntimeEnv *pRuntimeEnv, SWindowRes
// set time window for current result
// set time window for current result
pWindowRes
->
window
=
*
win
;
pWindowRes
->
window
=
*
win
;
setWindowResOutputBufInitCtx
(
pRuntimeEnv
,
pWindowRes
);
setWindowResOutputBufInitCtx
(
pRuntimeEnv
,
pWindowRes
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
@@ -685,14 +685,14 @@ static int32_t getNextQualifiedWindow(SQueryRuntimeEnv *pRuntimeEnv, STimeWindow
...
@@ -685,14 +685,14 @@ static int32_t getNextQualifiedWindow(SQueryRuntimeEnv *pRuntimeEnv, STimeWindow
SDataBlockInfo
*
pDataBlockInfo
,
TSKEY
*
primaryKeys
,
SDataBlockInfo
*
pDataBlockInfo
,
TSKEY
*
primaryKeys
,
__block_search_fn_t
searchFn
)
{
__block_search_fn_t
searchFn
)
{
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
// tumbling time window query, a special case of sliding time window query
// tumbling time window query, a special case of sliding time window query
if
(
pQuery
->
slidingTime
==
pQuery
->
intervalTime
)
{
if
(
pQuery
->
slidingTime
==
pQuery
->
intervalTime
)
{
// todo opt
// todo opt
}
}
getNextTimeWindow
(
pQuery
,
pNextWin
);
getNextTimeWindow
(
pQuery
,
pNextWin
);
// next time window is not in current block
// next time window is not in current block
if
((
pNextWin
->
skey
>
pDataBlockInfo
->
window
.
ekey
&&
QUERY_IS_ASC_QUERY
(
pQuery
))
||
if
((
pNextWin
->
skey
>
pDataBlockInfo
->
window
.
ekey
&&
QUERY_IS_ASC_QUERY
(
pQuery
))
||
(
pNextWin
->
ekey
<
pDataBlockInfo
->
window
.
skey
&&
!
QUERY_IS_ASC_QUERY
(
pQuery
)))
{
(
pNextWin
->
ekey
<
pDataBlockInfo
->
window
.
skey
&&
!
QUERY_IS_ASC_QUERY
(
pQuery
)))
{
...
@@ -720,7 +720,7 @@ static int32_t getNextQualifiedWindow(SQueryRuntimeEnv *pRuntimeEnv, STimeWindow
...
@@ -720,7 +720,7 @@ static int32_t getNextQualifiedWindow(SQueryRuntimeEnv *pRuntimeEnv, STimeWindow
*/
*/
if
(
QUERY_IS_ASC_QUERY
(
pQuery
)
&&
primaryKeys
[
startPos
]
>
pNextWin
->
ekey
)
{
if
(
QUERY_IS_ASC_QUERY
(
pQuery
)
&&
primaryKeys
[
startPos
]
>
pNextWin
->
ekey
)
{
TSKEY
next
=
primaryKeys
[
startPos
];
TSKEY
next
=
primaryKeys
[
startPos
];
pNextWin
->
ekey
+=
((
next
-
pNextWin
->
ekey
+
pQuery
->
slidingTime
-
1
)
/
pQuery
->
slidingTime
)
*
pQuery
->
slidingTime
;
pNextWin
->
ekey
+=
((
next
-
pNextWin
->
ekey
+
pQuery
->
slidingTime
-
1
)
/
pQuery
->
slidingTime
)
*
pQuery
->
slidingTime
;
pNextWin
->
skey
=
pNextWin
->
ekey
-
pQuery
->
intervalTime
+
1
;
pNextWin
->
skey
=
pNextWin
->
ekey
-
pQuery
->
intervalTime
+
1
;
}
else
if
((
!
QUERY_IS_ASC_QUERY
(
pQuery
))
&&
primaryKeys
[
startPos
]
<
pNextWin
->
skey
)
{
}
else
if
((
!
QUERY_IS_ASC_QUERY
(
pQuery
))
&&
primaryKeys
[
startPos
]
<
pNextWin
->
skey
)
{
...
@@ -729,7 +729,7 @@ static int32_t getNextQualifiedWindow(SQueryRuntimeEnv *pRuntimeEnv, STimeWindow
...
@@ -729,7 +729,7 @@ static int32_t getNextQualifiedWindow(SQueryRuntimeEnv *pRuntimeEnv, STimeWindow
pNextWin
->
skey
-=
((
pNextWin
->
skey
-
next
+
pQuery
->
slidingTime
-
1
)
/
pQuery
->
slidingTime
)
*
pQuery
->
slidingTime
;
pNextWin
->
skey
-=
((
pNextWin
->
skey
-
next
+
pQuery
->
slidingTime
-
1
)
/
pQuery
->
slidingTime
)
*
pQuery
->
slidingTime
;
pNextWin
->
ekey
=
pNextWin
->
skey
+
pQuery
->
intervalTime
-
1
;
pNextWin
->
ekey
=
pNextWin
->
skey
+
pQuery
->
intervalTime
-
1
;
}
}
return
startPos
;
return
startPos
;
}
}
...
@@ -2072,7 +2072,7 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
...
@@ -2072,7 +2072,7 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
STableQueryInfo
*
pTableQueryInfo
=
pQuery
->
current
;
STableQueryInfo
*
pTableQueryInfo
=
pQuery
->
current
;
SQueryCostInfo
*
summary
=
&
pRuntimeEnv
->
summary
;
SQueryCostInfo
*
summary
=
&
pRuntimeEnv
->
summary
;
qTrace
(
"QInfo:%p query start, qrange:%"
PRId64
"-%"
PRId64
", lastkey:%"
PRId64
", order:%d"
,
qTrace
(
"QInfo:%p query start, qrange:%"
PRId64
"-%"
PRId64
", lastkey:%"
PRId64
", order:%d"
,
GET_QINFO_ADDR
(
pRuntimeEnv
),
pTableQueryInfo
->
win
.
skey
,
pTableQueryInfo
->
win
.
ekey
,
pTableQueryInfo
->
lastKey
,
GET_QINFO_ADDR
(
pRuntimeEnv
),
pTableQueryInfo
->
win
.
skey
,
pTableQueryInfo
->
win
.
ekey
,
pTableQueryInfo
->
lastKey
,
pQuery
->
order
.
order
);
pQuery
->
order
.
order
);
...
@@ -2113,7 +2113,7 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
...
@@ -2113,7 +2113,7 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
SDataStatis
*
pStatis
=
NULL
;
SDataStatis
*
pStatis
=
NULL
;
SArray
*
pDataBlock
=
loadDataBlockOnDemand
(
pRuntimeEnv
,
pQueryHandle
,
&
blockInfo
,
&
pStatis
);
SArray
*
pDataBlock
=
loadDataBlockOnDemand
(
pRuntimeEnv
,
pQueryHandle
,
&
blockInfo
,
&
pStatis
);
// query start position can not move into tableApplyFunctionsOnBlock due to limit/offset condition
// query start position can not move into tableApplyFunctionsOnBlock due to limit/offset condition
pQuery
->
pos
=
QUERY_IS_ASC_QUERY
(
pQuery
)
?
0
:
blockInfo
.
rows
-
1
;
pQuery
->
pos
=
QUERY_IS_ASC_QUERY
(
pQuery
)
?
0
:
blockInfo
.
rows
-
1
;
int32_t
numOfRes
=
tableApplyFunctionsOnBlock
(
pRuntimeEnv
,
&
blockInfo
,
pStatis
,
binarySearchForKey
,
pDataBlock
);
int32_t
numOfRes
=
tableApplyFunctionsOnBlock
(
pRuntimeEnv
,
&
blockInfo
,
pStatis
,
binarySearchForKey
,
pDataBlock
);
...
@@ -2502,7 +2502,7 @@ int64_t getNumOfResultWindowRes(SQuery *pQuery, SWindowResult *pWindowRes) {
...
@@ -2502,7 +2502,7 @@ int64_t getNumOfResultWindowRes(SQuery *pQuery, SWindowResult *pWindowRes) {
SResultInfo
*
pResultInfo
=
&
pWindowRes
->
resultInfo
[
j
];
SResultInfo
*
pResultInfo
=
&
pWindowRes
->
resultInfo
[
j
];
assert
(
pResultInfo
!=
NULL
);
assert
(
pResultInfo
!=
NULL
);
if
(
pResultInfo
->
numOfRes
>
0
)
{
if
(
pResultInfo
->
numOfRes
>
0
)
{
return
pResultInfo
->
numOfRes
;
return
pResultInfo
->
numOfRes
;
}
}
...
@@ -2551,7 +2551,7 @@ int32_t mergeIntoGroupResultImpl(SQInfo *pQInfo, SArray *pGroup) {
...
@@ -2551,7 +2551,7 @@ int32_t mergeIntoGroupResultImpl(SQInfo *pQInfo, SArray *pGroup) {
assert
(
pQInfo
->
numOfGroupResultPages
==
0
);
assert
(
pQInfo
->
numOfGroupResultPages
==
0
);
return
0
;
return
0
;
}
else
if
(
numOfTables
==
1
)
{
// no need to merge results since only one table in each group
}
else
if
(
numOfTables
==
1
)
{
// no need to merge results since only one table in each group
}
}
SCompSupporter
cs
=
{
pTableList
,
posList
,
pQInfo
};
SCompSupporter
cs
=
{
pTableList
,
posList
,
pQInfo
};
...
@@ -2640,7 +2640,7 @@ int32_t mergeIntoGroupResultImpl(SQInfo *pQInfo, SArray *pGroup) {
...
@@ -2640,7 +2640,7 @@ int32_t mergeIntoGroupResultImpl(SQInfo *pQInfo, SArray *pGroup) {
#endif
#endif
qTrace
(
"QInfo:%p result merge completed for group:%d, elapsed time:%"
PRId64
" ms"
,
pQInfo
,
pQInfo
->
groupIndex
,
endt
-
startt
);
qTrace
(
"QInfo:%p result merge completed for group:%d, elapsed time:%"
PRId64
" ms"
,
pQInfo
,
pQInfo
->
groupIndex
,
endt
-
startt
);
tfree
(
pTableList
);
tfree
(
pTableList
);
tfree
(
posList
);
tfree
(
posList
);
tfree
(
pTree
);
tfree
(
pTree
);
...
@@ -2870,12 +2870,12 @@ void initCtxOutputBuf(SQueryRuntimeEnv *pRuntimeEnv) {
...
@@ -2870,12 +2870,12 @@ void initCtxOutputBuf(SQueryRuntimeEnv *pRuntimeEnv) {
for
(
int32_t
j
=
0
;
j
<
pQuery
->
numOfOutput
;
++
j
)
{
for
(
int32_t
j
=
0
;
j
<
pQuery
->
numOfOutput
;
++
j
)
{
int32_t
functionId
=
pQuery
->
pSelectExpr
[
j
].
base
.
functionId
;
int32_t
functionId
=
pQuery
->
pSelectExpr
[
j
].
base
.
functionId
;
pRuntimeEnv
->
pCtx
[
j
].
currentStage
=
0
;
pRuntimeEnv
->
pCtx
[
j
].
currentStage
=
0
;
SResultInfo
*
pResInfo
=
GET_RES_INFO
(
&
pRuntimeEnv
->
pCtx
[
j
]);
SResultInfo
*
pResInfo
=
GET_RES_INFO
(
&
pRuntimeEnv
->
pCtx
[
j
]);
if
(
pResInfo
->
initialized
)
{
if
(
pResInfo
->
initialized
)
{
continue
;
continue
;
}
}
aAggs
[
functionId
].
init
(
&
pRuntimeEnv
->
pCtx
[
j
]);
aAggs
[
functionId
].
init
(
&
pRuntimeEnv
->
pCtx
[
j
]);
}
}
}
}
...
@@ -3248,7 +3248,7 @@ void setWindowResOutputBuf(SQueryRuntimeEnv *pRuntimeEnv, SWindowResult *pResult
...
@@ -3248,7 +3248,7 @@ void setWindowResOutputBuf(SQueryRuntimeEnv *pRuntimeEnv, SWindowResult *pResult
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
SQLFunctionCtx
*
pCtx
=
&
pRuntimeEnv
->
pCtx
[
i
];
SQLFunctionCtx
*
pCtx
=
&
pRuntimeEnv
->
pCtx
[
i
];
pCtx
->
aOutputBuf
=
getPosInResultPage
(
pRuntimeEnv
,
i
,
pResult
);
pCtx
->
aOutputBuf
=
getPosInResultPage
(
pRuntimeEnv
,
i
,
pResult
);
int32_t
functionId
=
pQuery
->
pSelectExpr
[
i
].
base
.
functionId
;
int32_t
functionId
=
pQuery
->
pSelectExpr
[
i
].
base
.
functionId
;
if
(
functionId
==
TSDB_FUNC_TOP
||
functionId
==
TSDB_FUNC_BOTTOM
||
functionId
==
TSDB_FUNC_DIFF
)
{
if
(
functionId
==
TSDB_FUNC_TOP
||
functionId
==
TSDB_FUNC_BOTTOM
||
functionId
==
TSDB_FUNC_DIFF
)
{
pCtx
->
ptsOutputBuf
=
pRuntimeEnv
->
pCtx
[
0
].
aOutputBuf
;
pCtx
->
ptsOutputBuf
=
pRuntimeEnv
->
pCtx
[
0
].
aOutputBuf
;
...
@@ -3268,7 +3268,7 @@ void setWindowResOutputBuf(SQueryRuntimeEnv *pRuntimeEnv, SWindowResult *pResult
...
@@ -3268,7 +3268,7 @@ void setWindowResOutputBuf(SQueryRuntimeEnv *pRuntimeEnv, SWindowResult *pResult
void
setWindowResOutputBufInitCtx
(
SQueryRuntimeEnv
*
pRuntimeEnv
,
SWindowResult
*
pResult
)
{
void
setWindowResOutputBufInitCtx
(
SQueryRuntimeEnv
*
pRuntimeEnv
,
SWindowResult
*
pResult
)
{
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
// Note: pResult->pos[i]->num == 0, there is only fixed number of results for each group
// Note: pResult->pos[i]->num == 0, there is only fixed number of results for each group
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
SQLFunctionCtx
*
pCtx
=
&
pRuntimeEnv
->
pCtx
[
i
];
SQLFunctionCtx
*
pCtx
=
&
pRuntimeEnv
->
pCtx
[
i
];
...
@@ -3277,21 +3277,21 @@ void setWindowResOutputBufInitCtx(SQueryRuntimeEnv *pRuntimeEnv, SWindowResult *
...
@@ -3277,21 +3277,21 @@ void setWindowResOutputBufInitCtx(SQueryRuntimeEnv *pRuntimeEnv, SWindowResult *
if
(
pCtx
->
resultInfo
->
complete
)
{
if
(
pCtx
->
resultInfo
->
complete
)
{
continue
;
continue
;
}
}
pCtx
->
aOutputBuf
=
getPosInResultPage
(
pRuntimeEnv
,
i
,
pResult
);
pCtx
->
aOutputBuf
=
getPosInResultPage
(
pRuntimeEnv
,
i
,
pResult
);
pCtx
->
currentStage
=
0
;
pCtx
->
currentStage
=
0
;
int32_t
functionId
=
pCtx
->
functionId
;
int32_t
functionId
=
pCtx
->
functionId
;
if
(
functionId
==
TSDB_FUNC_TOP
||
functionId
==
TSDB_FUNC_BOTTOM
||
functionId
==
TSDB_FUNC_DIFF
)
{
if
(
functionId
==
TSDB_FUNC_TOP
||
functionId
==
TSDB_FUNC_BOTTOM
||
functionId
==
TSDB_FUNC_DIFF
)
{
pCtx
->
ptsOutputBuf
=
pRuntimeEnv
->
pCtx
[
0
].
aOutputBuf
;
pCtx
->
ptsOutputBuf
=
pRuntimeEnv
->
pCtx
[
0
].
aOutputBuf
;
}
}
/*
/*
* set the output buffer information and intermediate buffer
* set the output buffer information and intermediate buffer
* not all queries require the interResultBuf, such as COUNT
* not all queries require the interResultBuf, such as COUNT
*/
*/
pCtx
->
resultInfo
->
superTableQ
=
pRuntimeEnv
->
stableQuery
;
// set super table query flag
pCtx
->
resultInfo
->
superTableQ
=
pRuntimeEnv
->
stableQuery
;
// set super table query flag
if
(
!
pCtx
->
resultInfo
->
initialized
)
{
if
(
!
pCtx
->
resultInfo
->
initialized
)
{
aAggs
[
functionId
].
init
(
pCtx
);
aAggs
[
functionId
].
init
(
pCtx
);
}
}
...
@@ -4470,7 +4470,7 @@ static void multiTableQueryProcess(SQInfo *pQInfo) {
...
@@ -4470,7 +4470,7 @@ static void multiTableQueryProcess(SQInfo *pQInfo) {
// query error occurred or query is killed, abort current execution
// query error occurred or query is killed, abort current execution
if
(
pQInfo
->
code
!=
TSDB_CODE_SUCCESS
||
isQueryKilled
(
pQInfo
))
{
if
(
pQInfo
->
code
!=
TSDB_CODE_SUCCESS
||
isQueryKilled
(
pQInfo
))
{
qTrace
(
"QInfo:%p query killed or error occurred, code:%
d, abort"
,
pQInfo
,
pQInfo
->
code
);
qTrace
(
"QInfo:%p query killed or error occurred, code:%
s, abort"
,
pQInfo
,
tstrerror
(
pQInfo
->
code
)
);
return
;
return
;
}
}
...
@@ -4491,7 +4491,7 @@ static void multiTableQueryProcess(SQInfo *pQInfo) {
...
@@ -4491,7 +4491,7 @@ static void multiTableQueryProcess(SQInfo *pQInfo) {
setQueryStatus
(
pQuery
,
QUERY_COMPLETED
);
setQueryStatus
(
pQuery
,
QUERY_COMPLETED
);
if
(
pQInfo
->
code
!=
TSDB_CODE_SUCCESS
||
isQueryKilled
(
pQInfo
))
{
if
(
pQInfo
->
code
!=
TSDB_CODE_SUCCESS
||
isQueryKilled
(
pQInfo
))
{
qTrace
(
"QInfo:%p query killed or error occurred, code:%
d, abort"
,
pQInfo
,
pQInfo
->
code
);
qTrace
(
"QInfo:%p query killed or error occurred, code:%
s, abort"
,
pQInfo
,
tstrerror
(
pQInfo
->
code
)
);
return
;
return
;
}
}
...
@@ -4867,7 +4867,7 @@ static bool validateQuerySourceCols(SQueryTableMsg *pQueryMsg, SSqlFuncMsg** pEx
...
@@ -4867,7 +4867,7 @@ static bool validateQuerySourceCols(SQueryTableMsg *pQueryMsg, SSqlFuncMsg** pEx
(
pFuncMsg
->
functionId
==
TSDB_FUNC_COUNT
&&
pFuncMsg
->
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
))
{
(
pFuncMsg
->
functionId
==
TSDB_FUNC_COUNT
&&
pFuncMsg
->
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
))
{
continue
;
continue
;
}
}
return
false
;
return
false
;
}
}
}
}
...
@@ -5851,6 +5851,8 @@ void qDestroyQueryInfo(qinfo_t qHandle) {
...
@@ -5851,6 +5851,8 @@ void qDestroyQueryInfo(qinfo_t qHandle) {
}
}
int16_t
ref
=
T_REF_DEC
(
pQInfo
);
int16_t
ref
=
T_REF_DEC
(
pQInfo
);
qTrace
(
"QInfo:%p dec refCount, value:%d"
,
pQInfo
,
ref
);
if
(
ref
==
0
)
{
if
(
ref
==
0
)
{
doDestoryQueryInfo
(
pQInfo
);
doDestoryQueryInfo
(
pQInfo
);
}
}
...
@@ -5994,25 +5996,25 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
...
@@ -5994,25 +5996,25 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
size_t
numOfGroup
=
taosArrayGetSize
(
pQInfo
->
groupInfo
.
pGroupList
);
size_t
numOfGroup
=
taosArrayGetSize
(
pQInfo
->
groupInfo
.
pGroupList
);
assert
(
numOfGroup
==
0
||
numOfGroup
==
1
);
assert
(
numOfGroup
==
0
||
numOfGroup
==
1
);
if
(
numOfGroup
==
0
)
{
if
(
numOfGroup
==
0
)
{
return
;
return
;
}
}
SArray
*
pa
=
taosArrayGetP
(
pQInfo
->
groupInfo
.
pGroupList
,
0
);
SArray
*
pa
=
taosArrayGetP
(
pQInfo
->
groupInfo
.
pGroupList
,
0
);
size_t
num
=
taosArrayGetSize
(
pa
);
size_t
num
=
taosArrayGetSize
(
pa
);
assert
(
num
==
pQInfo
->
groupInfo
.
numOfTables
);
assert
(
num
==
pQInfo
->
groupInfo
.
numOfTables
);
int32_t
count
=
0
;
int32_t
count
=
0
;
int32_t
functionId
=
pQuery
->
pSelectExpr
[
0
].
base
.
functionId
;
int32_t
functionId
=
pQuery
->
pSelectExpr
[
0
].
base
.
functionId
;
if
(
functionId
==
TSDB_FUNC_TID_TAG
)
{
// return the tags & table Id
if
(
functionId
==
TSDB_FUNC_TID_TAG
)
{
// return the tags & table Id
assert
(
pQuery
->
numOfOutput
==
1
);
assert
(
pQuery
->
numOfOutput
==
1
);
SExprInfo
*
pExprInfo
=
&
pQuery
->
pSelectExpr
[
0
];
SExprInfo
*
pExprInfo
=
&
pQuery
->
pSelectExpr
[
0
];
int32_t
rsize
=
pExprInfo
->
bytes
;
int32_t
rsize
=
pExprInfo
->
bytes
;
count
=
0
;
count
=
0
;
while
(
pQInfo
->
tableIndex
<
num
&&
count
<
pQuery
->
rec
.
capacity
)
{
while
(
pQInfo
->
tableIndex
<
num
&&
count
<
pQuery
->
rec
.
capacity
)
{
int32_t
i
=
pQInfo
->
tableIndex
++
;
int32_t
i
=
pQInfo
->
tableIndex
++
;
SGroupItem
*
item
=
taosArrayGet
(
pa
,
i
);
SGroupItem
*
item
=
taosArrayGet
(
pa
,
i
);
...
@@ -6054,12 +6056,12 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
...
@@ -6054,12 +6056,12 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
}
}
}
}
}
}
count
+=
1
;
count
+=
1
;
}
}
qTrace
(
"QInfo:%p create (tableId, tag) info completed, rows:%d"
,
pQInfo
,
count
);
qTrace
(
"QInfo:%p create (tableId, tag) info completed, rows:%d"
,
pQInfo
,
count
);
}
else
if
(
functionId
==
TSDB_FUNC_COUNT
)
{
// handle the "count(tbname)" query
}
else
if
(
functionId
==
TSDB_FUNC_COUNT
)
{
// handle the "count(tbname)" query
*
(
int64_t
*
)
pQuery
->
sdata
[
0
]
->
data
=
num
;
*
(
int64_t
*
)
pQuery
->
sdata
[
0
]
->
data
=
num
;
...
@@ -6071,7 +6073,7 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
...
@@ -6071,7 +6073,7 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
SSchema
tbnameSchema
=
tGetTableNameColumnSchema
();
SSchema
tbnameSchema
=
tGetTableNameColumnSchema
();
while
(
pQInfo
->
tableIndex
<
num
&&
count
<
pQuery
->
rec
.
capacity
)
{
while
(
pQInfo
->
tableIndex
<
num
&&
count
<
pQuery
->
rec
.
capacity
)
{
int32_t
i
=
pQInfo
->
tableIndex
++
;
int32_t
i
=
pQInfo
->
tableIndex
++
;
SExprInfo
*
pExprInfo
=
pQuery
->
pSelectExpr
;
SExprInfo
*
pExprInfo
=
pQuery
->
pSelectExpr
;
SGroupItem
*
item
=
taosArrayGet
(
pa
,
i
);
SGroupItem
*
item
=
taosArrayGet
(
pa
,
i
);
...
@@ -6086,7 +6088,7 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
...
@@ -6086,7 +6088,7 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
char
*
data
=
tsdbGetTableTagVal
(
pQInfo
->
tsdb
,
&
item
->
id
,
pExprInfo
[
j
].
base
.
colInfo
.
colId
,
type
,
bytes
);
char
*
data
=
tsdbGetTableTagVal
(
pQInfo
->
tsdb
,
&
item
->
id
,
pExprInfo
[
j
].
base
.
colInfo
.
colId
,
type
,
bytes
);
char
*
dst
=
pQuery
->
sdata
[
j
]
->
data
+
count
*
pExprInfo
[
j
].
bytes
;
char
*
dst
=
pQuery
->
sdata
[
j
]
->
data
+
count
*
pExprInfo
[
j
].
bytes
;
if
(
type
==
TSDB_DATA_TYPE_BINARY
||
type
==
TSDB_DATA_TYPE_NCHAR
)
{
if
(
type
==
TSDB_DATA_TYPE_BINARY
||
type
==
TSDB_DATA_TYPE_NCHAR
)
{
if
(
data
==
NULL
)
{
if
(
data
==
NULL
)
{
setVardataNull
(
dst
,
type
);
setVardataNull
(
dst
,
type
);
...
@@ -6104,7 +6106,7 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
...
@@ -6104,7 +6106,7 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
}
}
count
+=
1
;
count
+=
1
;
}
}
qTrace
(
"QInfo:%p create tag values results completed, rows:%d"
,
pQInfo
,
count
);
qTrace
(
"QInfo:%p create tag values results completed, rows:%d"
,
pQInfo
,
count
);
}
}
...
...
src/rpc/src/rpcMain.c
浏览文件 @
53892448
...
@@ -393,7 +393,6 @@ void rpcSendResponse(const SRpcMsg *pRsp) {
...
@@ -393,7 +393,6 @@ void rpcSendResponse(const SRpcMsg *pRsp) {
if
(
pConn
->
inType
==
0
||
pConn
->
user
[
0
]
==
0
)
{
if
(
pConn
->
inType
==
0
||
pConn
->
user
[
0
]
==
0
)
{
tTrace
(
"%s, connection is already released, rsp wont be sent"
,
pConn
->
info
);
tTrace
(
"%s, connection is already released, rsp wont be sent"
,
pConn
->
info
);
rpcUnlockConn
(
pConn
);
rpcUnlockConn
(
pConn
);
rpcDecRef
(
pRpc
);
return
;
return
;
}
}
...
@@ -487,12 +486,19 @@ void rpcSendRecv(void *shandle, SRpcIpSet *pIpSet, const SRpcMsg *pMsg, SRpcMsg
...
@@ -487,12 +486,19 @@ void rpcSendRecv(void *shandle, SRpcIpSet *pIpSet, const SRpcMsg *pMsg, SRpcMsg
}
}
// this API is used by server app to keep an APP context in case connection is broken
// this API is used by server app to keep an APP context in case connection is broken
void
rpcReportProgress
(
void
*
handle
,
char
*
pCont
,
int
contLen
)
{
int
rpcReportProgress
(
void
*
handle
,
char
*
pCont
,
int
contLen
)
{
SRpcConn
*
pConn
=
(
SRpcConn
*
)
handle
;
SRpcConn
*
pConn
=
(
SRpcConn
*
)
handle
;
// pReqMsg and reqMsgLen is re-used to store the context from app server
if
(
pConn
->
user
[
0
])
{
pConn
->
pReqMsg
=
pCont
;
// pReqMsg and reqMsgLen is re-used to store the context from app server
pConn
->
reqMsgLen
=
contLen
;
pConn
->
pReqMsg
=
pCont
;
pConn
->
reqMsgLen
=
contLen
;
return
0
;
}
tTrace
(
"%s, rpc connection is already released"
,
pConn
->
info
);
rpcFreeCont
(
pCont
);
return
-
1
;
}
}
static
void
rpcFreeMsg
(
void
*
msg
)
{
static
void
rpcFreeMsg
(
void
*
msg
)
{
...
...
src/tsdb/src/tsdbRead.c
浏览文件 @
53892448
...
@@ -72,7 +72,7 @@ typedef struct STableCheckInfo {
...
@@ -72,7 +72,7 @@ typedef struct STableCheckInfo {
int32_t
compSize
;
int32_t
compSize
;
int32_t
numOfBlocks
;
// number of qualified data blocks not the original blocks
int32_t
numOfBlocks
;
// number of qualified data blocks not the original blocks
SDataCols
*
pDataCols
;
SDataCols
*
pDataCols
;
int32_t
chosen
;
// indicate which iterator should move forward
int32_t
chosen
;
// indicate which iterator should move forward
bool
initBuf
;
// whether to initialize the in-memory skip list iterator or not
bool
initBuf
;
// whether to initialize the in-memory skip list iterator or not
SSkipListIterator
*
iter
;
// mem buffer skip list iterator
SSkipListIterator
*
iter
;
// mem buffer skip list iterator
...
@@ -311,14 +311,14 @@ SDataRow getSDataRowInTableMem(STableCheckInfo* pCheckInfo) {
...
@@ -311,14 +311,14 @@ SDataRow getSDataRowInTableMem(STableCheckInfo* pCheckInfo) {
rmem
=
SL_GET_NODE_DATA
(
node
);
rmem
=
SL_GET_NODE_DATA
(
node
);
}
}
}
}
if
(
pCheckInfo
->
iiter
)
{
if
(
pCheckInfo
->
iiter
)
{
SSkipListNode
*
node
=
tSkipListIterGet
(
pCheckInfo
->
iiter
);
SSkipListNode
*
node
=
tSkipListIterGet
(
pCheckInfo
->
iiter
);
if
(
node
!=
NULL
)
{
if
(
node
!=
NULL
)
{
rimem
=
SL_GET_NODE_DATA
(
node
);
rimem
=
SL_GET_NODE_DATA
(
node
);
}
}
}
}
if
(
rmem
!=
NULL
&&
rimem
!=
NULL
)
{
if
(
rmem
!=
NULL
&&
rimem
!=
NULL
)
{
if
(
dataRowKey
(
rmem
)
<
dataRowKey
(
rimem
))
{
if
(
dataRowKey
(
rmem
)
<
dataRowKey
(
rimem
))
{
pCheckInfo
->
chosen
=
0
;
pCheckInfo
->
chosen
=
0
;
...
@@ -333,17 +333,17 @@ SDataRow getSDataRowInTableMem(STableCheckInfo* pCheckInfo) {
...
@@ -333,17 +333,17 @@ SDataRow getSDataRowInTableMem(STableCheckInfo* pCheckInfo) {
return
rimem
;
return
rimem
;
}
}
}
}
if
(
rmem
!=
NULL
)
{
if
(
rmem
!=
NULL
)
{
pCheckInfo
->
chosen
=
0
;
pCheckInfo
->
chosen
=
0
;
return
rmem
;
return
rmem
;
}
}
if
(
rimem
!=
NULL
)
{
if
(
rimem
!=
NULL
)
{
pCheckInfo
->
chosen
=
1
;
pCheckInfo
->
chosen
=
1
;
return
rimem
;
return
rimem
;
}
}
return
NULL
;
return
NULL
;
}
}
...
@@ -353,11 +353,11 @@ bool moveToNextRow(STableCheckInfo* pCheckInfo) {
...
@@ -353,11 +353,11 @@ bool moveToNextRow(STableCheckInfo* pCheckInfo) {
if
(
pCheckInfo
->
iter
!=
NULL
)
{
if
(
pCheckInfo
->
iter
!=
NULL
)
{
hasNext
=
tSkipListIterNext
(
pCheckInfo
->
iter
);
hasNext
=
tSkipListIterNext
(
pCheckInfo
->
iter
);
}
}
if
(
hasNext
)
{
if
(
hasNext
)
{
return
hasNext
;
return
hasNext
;
}
}
if
(
pCheckInfo
->
iiter
!=
NULL
)
{
if
(
pCheckInfo
->
iiter
!=
NULL
)
{
return
tSkipListIterGet
(
pCheckInfo
->
iiter
)
!=
NULL
;
return
tSkipListIterGet
(
pCheckInfo
->
iiter
)
!=
NULL
;
}
}
...
@@ -366,17 +366,17 @@ bool moveToNextRow(STableCheckInfo* pCheckInfo) {
...
@@ -366,17 +366,17 @@ bool moveToNextRow(STableCheckInfo* pCheckInfo) {
if
(
pCheckInfo
->
iiter
!=
NULL
)
{
if
(
pCheckInfo
->
iiter
!=
NULL
)
{
hasNext
=
tSkipListIterNext
(
pCheckInfo
->
iiter
);
hasNext
=
tSkipListIterNext
(
pCheckInfo
->
iiter
);
}
}
if
(
hasNext
)
{
if
(
hasNext
)
{
return
hasNext
;
return
hasNext
;
}
}
if
(
pCheckInfo
->
iter
!=
NULL
)
{
if
(
pCheckInfo
->
iter
!=
NULL
)
{
return
tSkipListIterGet
(
pCheckInfo
->
iter
)
!=
NULL
;
return
tSkipListIterGet
(
pCheckInfo
->
iter
)
!=
NULL
;
}
}
}
}
}
}
return
hasNext
;
return
hasNext
;
}
}
...
@@ -395,7 +395,7 @@ static bool hasMoreDataInCache(STsdbQueryHandle* pHandle) {
...
@@ -395,7 +395,7 @@ static bool hasMoreDataInCache(STsdbQueryHandle* pHandle) {
if
(
row
==
NULL
)
{
if
(
row
==
NULL
)
{
return
false
;
return
false
;
}
}
pCheckInfo
->
lastKey
=
dataRowKey
(
row
);
// first timestamp in buffer
pCheckInfo
->
lastKey
=
dataRowKey
(
row
);
// first timestamp in buffer
tsdbTrace
(
"%p uid:%"
PRId64
", tid:%d check data in buffer from skey:%"
PRId64
", order:%d, %p"
,
pHandle
,
tsdbTrace
(
"%p uid:%"
PRId64
", tid:%d check data in buffer from skey:%"
PRId64
", order:%d, %p"
,
pHandle
,
pCheckInfo
->
tableId
.
uid
,
pCheckInfo
->
tableId
.
tid
,
pCheckInfo
->
lastKey
,
pHandle
->
order
,
pHandle
->
qinfo
);
pCheckInfo
->
tableId
.
uid
,
pCheckInfo
->
tableId
.
tid
,
pCheckInfo
->
lastKey
,
pHandle
->
order
,
pHandle
->
qinfo
);
...
@@ -581,9 +581,9 @@ static bool doLoadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlo
...
@@ -581,9 +581,9 @@ static bool doLoadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlo
bool
blockLoaded
=
false
;
bool
blockLoaded
=
false
;
SArray
*
sa
=
getDefaultLoadColumns
(
pQueryHandle
,
true
);
SArray
*
sa
=
getDefaultLoadColumns
(
pQueryHandle
,
true
);
int64_t
st
=
taosGetTimestampUs
();
int64_t
st
=
taosGetTimestampUs
();
if
(
pCheckInfo
->
pDataCols
==
NULL
)
{
if
(
pCheckInfo
->
pDataCols
==
NULL
)
{
STsdbMeta
*
pMeta
=
tsdbGetMeta
(
pRepo
);
STsdbMeta
*
pMeta
=
tsdbGetMeta
(
pRepo
);
pCheckInfo
->
pDataCols
=
tdNewDataCols
(
pMeta
->
maxRowBytes
,
pMeta
->
maxCols
,
pRepo
->
config
.
maxRowsPerFileBlock
);
pCheckInfo
->
pDataCols
=
tdNewDataCols
(
pMeta
->
maxRowBytes
,
pMeta
->
maxCols
,
pRepo
->
config
.
maxRowsPerFileBlock
);
...
@@ -603,13 +603,13 @@ static bool doLoadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlo
...
@@ -603,13 +603,13 @@ static bool doLoadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlo
SDataCols
*
pCols
=
pQueryHandle
->
rhelper
.
pDataCols
[
0
];
SDataCols
*
pCols
=
pQueryHandle
->
rhelper
.
pDataCols
[
0
];
assert
(
pCols
->
numOfRows
!=
0
);
assert
(
pCols
->
numOfRows
!=
0
);
taosArrayDestroy
(
sa
);
taosArrayDestroy
(
sa
);
tfree
(
data
);
tfree
(
data
);
int64_t
et
=
taosGetTimestampUs
()
-
st
;
int64_t
et
=
taosGetTimestampUs
()
-
st
;
tsdbTrace
(
"%p load file block into buffer, elapsed time:%"
PRId64
" us"
,
pQueryHandle
,
et
);
tsdbTrace
(
"%p load file block into buffer, elapsed time:%"
PRId64
" us"
,
pQueryHandle
,
et
);
return
blockLoaded
;
return
blockLoaded
;
}
}
...
@@ -681,7 +681,7 @@ static bool loadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlock
...
@@ -681,7 +681,7 @@ static bool loadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlock
if
(
!
doLoadFileDataBlock
(
pQueryHandle
,
pBlock
,
pCheckInfo
))
{
if
(
!
doLoadFileDataBlock
(
pQueryHandle
,
pBlock
,
pCheckInfo
))
{
return
false
;
return
false
;
}
}
SDataCols
*
pTSCol
=
pQueryHandle
->
rhelper
.
pDataCols
[
0
];
SDataCols
*
pTSCol
=
pQueryHandle
->
rhelper
.
pDataCols
[
0
];
assert
(
pTSCol
->
cols
->
type
==
TSDB_DATA_TYPE_TIMESTAMP
&&
pTSCol
->
numOfRows
==
pBlock
->
numOfRows
);
assert
(
pTSCol
->
cols
->
type
==
TSDB_DATA_TYPE_TIMESTAMP
&&
pTSCol
->
numOfRows
==
pBlock
->
numOfRows
);
...
@@ -1212,7 +1212,7 @@ static int32_t createDataBlocksInfo(STsdbQueryHandle* pQueryHandle, int32_t numO
...
@@ -1212,7 +1212,7 @@ static int32_t createDataBlocksInfo(STsdbQueryHandle* pQueryHandle, int32_t numO
*
numOfAllocBlocks
=
numOfBlocks
;
*
numOfAllocBlocks
=
numOfBlocks
;
int32_t
numOfTables
=
taosArrayGetSize
(
pQueryHandle
->
pTableCheckInfo
);
int32_t
numOfTables
=
taosArrayGetSize
(
pQueryHandle
->
pTableCheckInfo
);
SBlockOrderSupporter
sup
=
{
0
};
SBlockOrderSupporter
sup
=
{
0
};
sup
.
numOfTables
=
numOfTables
;
sup
.
numOfTables
=
numOfTables
;
sup
.
numOfBlocksPerTable
=
calloc
(
1
,
sizeof
(
int32_t
)
*
numOfTables
);
sup
.
numOfBlocksPerTable
=
calloc
(
1
,
sizeof
(
int32_t
)
*
numOfTables
);
...
@@ -1256,17 +1256,17 @@ static int32_t createDataBlocksInfo(STsdbQueryHandle* pQueryHandle, int32_t numO
...
@@ -1256,17 +1256,17 @@ static int32_t createDataBlocksInfo(STsdbQueryHandle* pQueryHandle, int32_t numO
}
}
assert
(
numOfBlocks
==
cnt
);
assert
(
numOfBlocks
==
cnt
);
// since there is only one table qualified, blocks are not sorted
// since there is only one table qualified, blocks are not sorted
if
(
numOfQualTables
==
1
)
{
if
(
numOfQualTables
==
1
)
{
memcpy
(
pQueryHandle
->
pDataBlockInfo
,
sup
.
pDataBlockInfo
[
0
],
sizeof
(
STableBlockInfo
)
*
numOfBlocks
);
memcpy
(
pQueryHandle
->
pDataBlockInfo
,
sup
.
pDataBlockInfo
[
0
],
sizeof
(
STableBlockInfo
)
*
numOfBlocks
);
cleanBlockOrderSupporter
(
&
sup
,
numOfQualTables
);
cleanBlockOrderSupporter
(
&
sup
,
numOfQualTables
);
tsdbTrace
(
"%p create data blocks info struct completed for 1 table, %d blocks not sorted %p "
,
pQueryHandle
,
cnt
,
tsdbTrace
(
"%p create data blocks info struct completed for 1 table, %d blocks not sorted %p "
,
pQueryHandle
,
cnt
,
pQueryHandle
->
qinfo
);
pQueryHandle
->
qinfo
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
tsdbTrace
(
"%p create data blocks info struct completed, %d blocks in %d tables %p"
,
pQueryHandle
,
cnt
,
tsdbTrace
(
"%p create data blocks info struct completed, %d blocks in %d tables %p"
,
pQueryHandle
,
cnt
,
numOfQualTables
,
pQueryHandle
->
qinfo
);
numOfQualTables
,
pQueryHandle
->
qinfo
);
...
@@ -1683,7 +1683,7 @@ static int tsdbReadRowsFromCache(STableCheckInfo* pCheckInfo, TSKEY maxKey, int
...
@@ -1683,7 +1683,7 @@ static int tsdbReadRowsFromCache(STableCheckInfo* pCheckInfo, TSKEY maxKey, int
int64_t
elapsedTime
=
taosGetTimestampUs
()
-
st
;
int64_t
elapsedTime
=
taosGetTimestampUs
()
-
st
;
tsdbTrace
(
"%p build data block from cache completed, elapsed time:%"
PRId64
" us, numOfRows:%d, numOfCols:%d"
,
pQueryHandle
,
tsdbTrace
(
"%p build data block from cache completed, elapsed time:%"
PRId64
" us, numOfRows:%d, numOfCols:%d"
,
pQueryHandle
,
elapsedTime
,
numOfRows
,
numOfCols
);
elapsedTime
,
numOfRows
,
numOfCols
);
return
numOfRows
;
return
numOfRows
;
}
}
...
...
src/vnode/src/vnodeRead.c
浏览文件 @
53892448
...
@@ -68,6 +68,7 @@ static void vnodeNotifyCurrentQhandle(void* handle, void* qhandle, int32_t vgId)
...
@@ -68,6 +68,7 @@ static void vnodeNotifyCurrentQhandle(void* handle, void* qhandle, int32_t vgId)
killQueryMsg
->
header
.
vgId
=
htonl
(
vgId
);
killQueryMsg
->
header
.
vgId
=
htonl
(
vgId
);
killQueryMsg
->
header
.
contLen
=
htonl
(
sizeof
(
SRetrieveTableMsg
));
killQueryMsg
->
header
.
contLen
=
htonl
(
sizeof
(
SRetrieveTableMsg
));
vTrace
(
"QInfo:%p register qhandle to connect:%p"
,
qhandle
,
handle
);
rpcReportProgress
(
handle
,
(
char
*
)
killQueryMsg
,
sizeof
(
SRetrieveTableMsg
));
rpcReportProgress
(
handle
,
(
char
*
)
killQueryMsg
,
sizeof
(
SRetrieveTableMsg
));
}
}
...
@@ -85,10 +86,11 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SReadMsg *pReadMsg) {
...
@@ -85,10 +86,11 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SReadMsg *pReadMsg) {
killQueryMsg
->
free
=
htons
(
killQueryMsg
->
free
);
killQueryMsg
->
free
=
htons
(
killQueryMsg
->
free
);
killQueryMsg
->
qhandle
=
htobe64
(
killQueryMsg
->
qhandle
);
killQueryMsg
->
qhandle
=
htobe64
(
killQueryMsg
->
qhandle
);
vWarn
(
"QInfo:%p connection %p broken, kill query"
,
killQueryMsg
->
qhandle
,
pReadMsg
->
rpcMsg
.
handle
);
assert
(
pReadMsg
->
rpcMsg
.
contLen
>
0
&&
killQueryMsg
->
free
==
1
);
assert
(
pReadMsg
->
rpcMsg
.
contLen
>
0
&&
killQueryMsg
->
free
==
1
);
qDestroyQueryInfo
((
qinfo_t
)
killQueryMsg
->
qhandle
);
return
TSDB_CODE_SUCCESS
;
qKillQuery
((
qinfo_t
)
killQueryMsg
->
qhandle
);
return
TSDB_CODE_TSC_QUERY_CANCELLED
;
// todo change the error code
}
}
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
...
...
tests/pytest/fulltest.sh
浏览文件 @
53892448
...
@@ -134,6 +134,9 @@ python3 ./test.py -f query/filter.py
...
@@ -134,6 +134,9 @@ python3 ./test.py -f query/filter.py
python3 ./test.py
-f
query/filterCombo.py
python3 ./test.py
-f
query/filterCombo.py
python3 ./test.py
-f
query/queryNormal.py
python3 ./test.py
-f
query/queryNormal.py
python3 ./test.py
-f
query/queryError.py
python3 ./test.py
-f
query/queryError.py
python3 ./test.py
-f
query/filterAllIntTypes.py
python3 ./test.py
-f
query/filterFloatAndDouble.py
python3 ./test.py
-f
query/filterOtherTypes.py
#stream
#stream
python3 ./test.py
-f
stream/stream1.py
python3 ./test.py
-f
stream/stream1.py
...
...
tests/pytest/query/filterAllIntTypes.py
0 → 100644
浏览文件 @
53892448
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import
sys
import
taos
from
util.log
import
*
from
util.cases
import
*
from
util.sql
import
*
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
())
self
.
powers
=
[
7
,
15
,
31
,
63
]
self
.
types
=
[
"tinyint"
,
"smallint"
,
"int"
,
"bigint"
]
self
.
rowNum
=
10
self
.
ts
=
1537146000000
def
run
(
self
):
tdSql
.
prepare
()
for
i
in
range
(
len
(
self
.
powers
)):
curType
=
self
.
types
[
i
]
print
(
"======= Verify filter for %s type ========="
%
(
curType
))
tdLog
.
debug
(
"create table st%s(ts timestamp, num %s) tags(id %s)"
%
(
curType
,
curType
,
curType
))
tdSql
.
execute
(
"create table st%s(ts timestamp, num %s) tags(id %s)"
%
(
curType
,
curType
,
curType
))
#create 10 tables, insert 10 rows for each table
for
j
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"create table st%s%d using st%s tags(%d)"
%
(
curType
,
j
+
1
,
curType
,
j
+
1
))
for
k
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"insert into st%s%d values(%d, %d)"
%
(
curType
,
j
+
1
,
self
.
ts
+
k
+
1
,
j
*
10
+
k
+
1
))
tdSql
.
error
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
11
,
pow
(
2
,
self
.
powers
[
i
])))
tdSql
.
execute
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
12
,
pow
(
2
,
self
.
powers
[
i
])
-
1
))
tdSql
.
error
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
13
,
pow
(
-
2
,
self
.
powers
[
i
])))
tdSql
.
execute
(
"insert into st%s10 values(%d, %d)"
%
(
curType
,
self
.
ts
+
14
,
pow
(
-
2
,
self
.
powers
[
i
])
+
1
))
# > for int type on column
tdSql
.
query
(
"select * from st%s where num > 50"
%
curType
)
tdSql
.
checkRows
(
51
)
# >= for int type on column
tdSql
.
query
(
"select * from st%s where num >= 50"
%
curType
)
tdSql
.
checkRows
(
52
)
# = for int type on column
tdSql
.
query
(
"select * from st%s where num = 50"
%
curType
)
tdSql
.
checkRows
(
1
)
# < for int type on column
tdSql
.
query
(
"select * from st%s where num < 50"
%
curType
)
tdSql
.
checkRows
(
50
)
# <= for int type on column
tdSql
.
query
(
"select * from st%s where num <= 50"
%
curType
)
tdSql
.
checkRows
(
51
)
# <> for int type on column
tdSql
.
query
(
"select * from st%s where num <> 50"
%
curType
)
tdSql
.
checkRows
(
101
)
# != for int type on column
tdSql
.
query
(
"select * from st%s where num != 50"
%
curType
)
tdSql
.
checkRows
(
101
)
# > for int type on tag
tdSql
.
query
(
"select * from st%s where id > 5"
%
curType
)
tdSql
.
checkRows
(
52
)
# >= for int type on tag
tdSql
.
query
(
"select * from st%s where id >= 5"
%
curType
)
tdSql
.
checkRows
(
62
)
# = for int type on tag
tdSql
.
query
(
"select * from st%s where id = 5"
%
curType
)
tdSql
.
checkRows
(
10
)
# < for int type on tag
tdSql
.
query
(
"select * from st%s where id < 5"
%
curType
)
tdSql
.
checkRows
(
40
)
# <= for int type on tag
tdSql
.
query
(
"select * from st%s where id <= 5"
%
curType
)
tdSql
.
checkRows
(
50
)
# <> for int type on tag
tdSql
.
query
(
"select * from st%s where id <> 5"
%
curType
)
tdSql
.
checkRows
(
92
)
# != for int type on tag
tdSql
.
query
(
"select * from st%s where id != 5"
%
curType
)
tdSql
.
checkRows
(
92
)
print
(
"======= Verify filter for %s type finished ========="
%
curType
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
tests/pytest/query/filterFloatAndDouble.py
0 → 100644
浏览文件 @
53892448
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import
sys
import
taos
from
util.log
import
*
from
util.cases
import
*
from
util.sql
import
*
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
())
self
.
rowNum
=
10
self
.
ts
=
1537146000000
def
run
(
self
):
tdSql
.
prepare
()
print
(
"======= Verify filter for float and double type ========="
)
tdLog
.
debug
(
"create table st(ts timestamp, num float, speed double) tags(tagcol1 float, tagcol2 double)"
)
tdSql
.
execute
(
"create table st(ts timestamp, num float, speed double) tags(tagcol1 float, tagcol2 double)"
)
for
j
in
range
(
self
.
rowNum
):
tdSql
.
execute
(
"insert into st1 using st tags(1.1, 2.3) values(%d, %f, %f)"
%
(
self
.
ts
+
j
+
1
,
1.1
*
(
j
+
1
),
2.3
*
(
j
+
1
)))
# > for float type on column
tdSql
.
query
(
"select * from st where num > 5.5"
)
tdSql
.
checkRows
(
5
)
# >= for float type on column
tdSql
.
query
(
"select * from st where num >= 5.5"
)
tdSql
.
checkRows
(
6
)
# = for float type on column
tdSql
.
query
(
"select * from st where num = 5.5"
)
tdSql
.
checkRows
(
1
)
# <> for float type on column
tdSql
.
query
(
"select * from st where num <> 5.5"
)
tdSql
.
checkRows
(
9
)
# != for float type on column
tdSql
.
query
(
"select * from st where num != 5.5"
)
tdSql
.
checkRows
(
9
)
# <= for float type on column
tdSql
.
query
(
"select * from st where num <= 5.5"
)
tdSql
.
checkRows
(
5
)
# < for float type on column
tdSql
.
query
(
"select * from st where num < 5.5"
)
tdSql
.
checkRows
(
4
)
# > for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 > 1.1"
)
tdSql
.
checkRows
(
0
)
# >= for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 >= 1.1"
)
tdSql
.
checkRows
(
10
)
# = for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 = 1.1"
)
tdSql
.
checkRows
(
10
)
# <> for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 <> 1.1"
)
tdSql
.
checkRows
(
0
)
# != for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 != 1.1"
)
tdSql
.
checkRows
(
0
)
# <= for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 <= 1.1"
)
tdSql
.
checkRows
(
10
)
# < for float type on tag
tdSql
.
query
(
"select * from st where tagcol1 < 1.1"
)
tdSql
.
checkRows
(
0
)
# > for double type on column
tdSql
.
query
(
"select * from st where speed > 11.5"
)
tdSql
.
checkRows
(
5
)
# >= for double type on column
tdSql
.
query
(
"select * from st where speed >= 11.5"
)
tdSql
.
checkRows
(
6
)
# = for double type on column
tdSql
.
query
(
"select * from st where speed = 11.5"
)
tdSql
.
checkRows
(
1
)
# <> for double type on column
tdSql
.
query
(
"select * from st where speed <> 11.5"
)
tdSql
.
checkRows
(
9
)
# != for double type on column
tdSql
.
query
(
"select * from st where speed != 11.5"
)
tdSql
.
checkRows
(
9
)
# <= for double type on column
tdSql
.
query
(
"select * from st where speed <= 11.5"
)
tdSql
.
checkRows
(
5
)
# < for double type on column
tdSql
.
query
(
"select * from st where speed < 11.5"
)
tdSql
.
checkRows
(
4
)
# > for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 > 2.3"
)
tdSql
.
checkRows
(
0
)
# >= for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 >= 2.3"
)
tdSql
.
checkRows
(
10
)
# = for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 = 2.3"
)
tdSql
.
checkRows
(
10
)
# <> for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 <> 2.3"
)
tdSql
.
checkRows
(
0
)
# != for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 != 2.3"
)
tdSql
.
checkRows
(
0
)
# <= for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 <= 2.3"
)
tdSql
.
checkRows
(
10
)
# < for double type on tag
tdSql
.
query
(
"select * from st where tagcol2 < 2.3"
)
tdSql
.
checkRows
(
0
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
tests/pytest/query/filterOtherTypes.py
0 → 100644
浏览文件 @
53892448
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import
sys
import
taos
from
util.log
import
*
from
util.cases
import
*
from
util.sql
import
*
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
())
self
.
ts
=
1537146000000
def
run
(
self
):
tdSql
.
prepare
()
print
(
"======= Verify filter for bool, nchar and binary type ========="
)
tdLog
.
debug
(
"create table st(ts timestamp, tbcol1 bool, tbcol2 nchar(10), tbcol3 binary(20)) tags(tagcol1 bool, tagcol2 nchar(10), tagcol3 binary(10))"
)
tdSql
.
execute
(
"create table st(ts timestamp, tbcol1 bool, tbcol2 nchar(10), tbcol3 binary(20)) tags(tagcol1 bool, tagcol2 nchar(10), tagcol3 binary(10))"
)
tdSql
.
execute
(
"create table st1 using st tags(true, 'table1', '水表')"
)
for
i
in
range
(
1
,
6
):
tdSql
.
execute
(
"insert into st1 values(%d, %d, 'taosdata%d', '涛思数据%d')"
%
(
self
.
ts
+
i
,
i
%
2
,
i
,
i
))
tdSql
.
execute
(
"create table st2 using st tags(false, 'table2', '电表')"
)
for
i
in
range
(
6
,
11
):
tdSql
.
execute
(
"insert into st2 values(%d, %d, 'taosdata%d', '涛思数据%d')"
%
(
self
.
ts
+
i
,
i
%
2
,
i
,
i
))
# =============Verify stable columns====================
# > for bool type on column
tdSql
.
error
(
"select * from st where tbcol1 > false"
)
# >= for bool type on column
tdSql
.
error
(
"select * from st where tbcol1 >= false"
)
# = for bool type on column
tdSql
.
query
(
"select * from st where tbcol1 = false"
)
tdSql
.
checkRows
(
5
)
# <> for bool type on column
tdSql
.
query
(
"select * from st where tbcol1 <> true"
)
tdSql
.
checkRows
(
5
)
# != for bool type on column
tdSql
.
query
(
"select * from st where tbcol1 != true"
)
tdSql
.
checkRows
(
5
)
# > for bool type on column
tdSql
.
error
(
"select * from st where tbcol1 < true"
)
# >= for bool type on column
tdSql
.
error
(
"select * from st where tbcol1 <= true"
)
# % for bool type on column
tdSql
.
error
(
"select * from st where tbcol1 like '%'"
)
# _ for bool type on column
tdSql
.
error
(
"select * from st where tbcol1 like '____'"
)
# > for nchar type on column
tdSql
.
error
(
"select * from st where tbcol2 > 'taosdata'"
)
# >= for nchar type on column
tdSql
.
error
(
"select * from st where tbcol2 >= 'taosdata'"
)
# = for nchar type on column
tdSql
.
query
(
"select * from st where tbcol2 = 'taosdata1'"
)
tdSql
.
checkRows
(
1
)
# <> for nchar type on column
tdSql
.
query
(
"select * from st where tbcol2 <> 'taosdata1'"
)
tdSql
.
checkRows
(
9
)
# != for nchar type on column
tdSql
.
query
(
"select * from st where tbcol2 != 'taosdata1'"
)
tdSql
.
checkRows
(
9
)
# > for nchar type on column
tdSql
.
error
(
"select * from st where tbcol2 < 'taodata'"
)
# >= for nchar type on column
tdSql
.
error
(
"select * from st where tbcol2 <= 'taodata'"
)
# % for nchar type on column case 1
tdSql
.
query
(
"select * from st where tbcol2 like '%'"
)
tdSql
.
checkRows
(
10
)
# % for nchar type on column case 2
tdSql
.
query
(
"select * from st where tbcol2 like 'a%'"
)
tdSql
.
checkRows
(
0
)
# % for nchar type on column case 3
tdSql
.
query
(
"select * from st where tbcol2 like 't%_'"
)
tdSql
.
checkRows
(
10
)
# % for nchar type on column case 4
tdSql
.
query
(
"select * from st where tbcol2 like '%1'"
)
# tdSql.checkRows(2)
# _ for nchar type on column case 1
tdSql
.
query
(
"select * from st where tbcol2 like '____________'"
)
tdSql
.
checkRows
(
0
)
# _ for nchar type on column case 2
tdSql
.
query
(
"select * from st where tbcol2 like '__________'"
)
tdSql
.
checkRows
(
1
)
# _ for nchar type on column case 3
tdSql
.
query
(
"select * from st where tbcol2 like '_________'"
)
tdSql
.
checkRows
(
9
)
# _ for nchar type on column case 4
tdSql
.
query
(
"select * from st where tbcol2 like 't________'"
)
tdSql
.
checkRows
(
9
)
# _ for nchar type on column case 5
tdSql
.
query
(
"select * from st where tbcol2 like '%________'"
)
tdSql
.
checkRows
(
10
)
# > for binary type on column
tdSql
.
error
(
"select * from st where tbcol3 > '涛思数据'"
)
# >= for binary type on column
tdSql
.
error
(
"select * from st where tbcol3 >= '涛思数据'"
)
# = for binary type on column
tdSql
.
query
(
"select * from st where tbcol3 = '涛思数据1'"
)
tdSql
.
checkRows
(
1
)
# <> for binary type on column
tdSql
.
query
(
"select * from st where tbcol3 <> '涛思数据1'"
)
tdSql
.
checkRows
(
9
)
# != for binary type on column
tdSql
.
query
(
"select * from st where tbcol3 != '涛思数据1'"
)
tdSql
.
checkRows
(
9
)
# > for binary type on column
tdSql
.
error
(
"select * from st where tbcol3 < '涛思数据'"
)
# >= for binary type on column
tdSql
.
error
(
"select * from st where tbcol3 <= '涛思数据'"
)
# % for binary type on column case 1
tdSql
.
query
(
"select * from st where tbcol3 like '%'"
)
tdSql
.
checkRows
(
10
)
# % for binary type on column case 2
tdSql
.
query
(
"select * from st where tbcol3 like '陶%'"
)
tdSql
.
checkRows
(
0
)
# % for binary type on column case 3
tdSql
.
query
(
"select * from st where tbcol3 like '涛%_'"
)
tdSql
.
checkRows
(
10
)
# % for binary type on column case 4
tdSql
.
query
(
"select * from st where tbcol3 like '%1'"
)
tdSql
.
checkRows
(
1
)
# _ for binary type on column case 1
tdSql
.
query
(
"select * from st where tbcol3 like '_______'"
)
tdSql
.
checkRows
(
0
)
# _ for binary type on column case 2
tdSql
.
query
(
"select * from st where tbcol3 like '______'"
)
tdSql
.
checkRows
(
1
)
# _ for binary type on column case 2
tdSql
.
query
(
"select * from st where tbcol3 like '_____'"
)
tdSql
.
checkRows
(
9
)
# _ for binary type on column case 3
tdSql
.
query
(
"select * from st where tbcol3 like '____'"
)
tdSql
.
checkRows
(
0
)
# _ for binary type on column case 4
tdSql
.
query
(
"select * from st where tbcol3 like 't____'"
)
tdSql
.
checkRows
(
0
)
# =============Verify stable tags====================
# > for bool type on tag
tdSql
.
error
(
"select * from st where tagcol1 > false"
)
# >= for bool type on tag
tdSql
.
error
(
"select * from st where tagcol1 >= false"
)
# = for bool type on tag
tdSql
.
query
(
"select * from st where tagcol1 = false"
)
tdSql
.
checkRows
(
5
)
# <> for bool type on tag
tdSql
.
query
(
"select * from st where tagcol1 <> true"
)
tdSql
.
checkRows
(
5
)
# != for bool type on tag
tdSql
.
query
(
"select * from st where tagcol1 != true"
)
tdSql
.
checkRows
(
5
)
# > for bool type on tag
tdSql
.
error
(
"select * from st where tagcol1 < true"
)
# >= for bool type on tag
tdSql
.
error
(
"select * from st where tagcol1 <= true"
)
# % for bool type on tag
tdSql
.
error
(
"select * from st where tagcol1 like '%'"
)
# _ for bool type on tag
tdSql
.
error
(
"select * from st where tagcol1 like '____'"
)
# > for nchar type on tag
tdSql
.
error
(
"select * from st where tagcol2 > 'table'"
)
# >= for nchar type on tag
tdSql
.
error
(
"select * from st where tagcol2 >= 'table'"
)
# = for nchar type on tag
tdSql
.
query
(
"select * from st where tagcol2 = 'table1'"
)
tdSql
.
checkRows
(
5
)
# <> for nchar type on tag
tdSql
.
query
(
"select * from st where tagcol2 <> 'table1'"
)
tdSql
.
checkRows
(
5
)
# != for nchar type on tag
tdSql
.
query
(
"select * from st where tagcol2 != 'table'"
)
tdSql
.
checkRows
(
10
)
# > for nchar type on tag
tdSql
.
error
(
"select * from st where tagcol2 < 'table'"
)
# >= for nchar type on tag
tdSql
.
error
(
"select * from st where tagcol2 <= 'table'"
)
# % for nchar type on tag case 1
tdSql
.
query
(
"select * from st where tagcol2 like '%'"
)
tdSql
.
checkRows
(
10
)
# % for nchar type on tag case 2
tdSql
.
query
(
"select * from st where tagcol2 like 'a%'"
)
tdSql
.
checkRows
(
0
)
# % for nchar type on tag case 3
tdSql
.
query
(
"select * from st where tagcol2 like 't%_'"
)
tdSql
.
checkRows
(
10
)
# % for nchar type on tag case 4
tdSql
.
query
(
"select * from st where tagcol2 like '%1'"
)
tdSql
.
checkRows
(
5
)
# _ for nchar type on tag case 1
tdSql
.
query
(
"select * from st where tagcol2 like '_______'"
)
tdSql
.
checkRows
(
0
)
# _ for nchar type on tag case 2
tdSql
.
query
(
"select * from st where tagcol2 like '______'"
)
tdSql
.
checkRows
(
10
)
# _ for nchar type on tag case 3
tdSql
.
query
(
"select * from st where tagcol2 like 't_____'"
)
tdSql
.
checkRows
(
10
)
# _ for nchar type on tag case 4
tdSql
.
query
(
"select * from st where tagcol2 like 's________'"
)
tdSql
.
checkRows
(
0
)
# _ for nchar type on tag case 5
tdSql
.
query
(
"select * from st where tagcol2 like '%__'"
)
tdSql
.
checkRows
(
10
)
# > for binary type on tag
tdSql
.
error
(
"select * from st where tagcol3 > '表'"
)
# >= for binary type on tag
tdSql
.
error
(
"select * from st where tagcol3 >= '表'"
)
# = for binary type on tag
tdSql
.
query
(
"select * from st where tagcol3 = '水表'"
)
tdSql
.
checkRows
(
5
)
# <> for binary type on tag
tdSql
.
query
(
"select * from st where tagcol3 <> '水表'"
)
tdSql
.
checkRows
(
5
)
# != for binary type on tag
tdSql
.
query
(
"select * from st where tagcol3 != '水表'"
)
tdSql
.
checkRows
(
5
)
# > for binary type on tag
tdSql
.
error
(
"select * from st where tagcol3 < '水表'"
)
# >= for binary type on tag
tdSql
.
error
(
"select * from st where tagcol3 <= '水表'"
)
# % for binary type on tag case 1
tdSql
.
query
(
"select * from st where tagcol3 like '%'"
)
tdSql
.
checkRows
(
10
)
# % for binary type on tag case 2
tdSql
.
query
(
"select * from st where tagcol3 like '水%'"
)
tdSql
.
checkRows
(
5
)
# % for binary type on tag case 3
tdSql
.
query
(
"select * from st where tagcol3 like '数%_'"
)
tdSql
.
checkRows
(
0
)
# % for binary type on tag case 4
tdSql
.
query
(
"select * from st where tagcol3 like '%表'"
)
tdSql
.
checkRows
(
10
)
# % for binary type on tag case 5
tdSql
.
query
(
"select * from st where tagcol3 like '%据'"
)
tdSql
.
checkRows
(
0
)
# _ for binary type on tag case 1
tdSql
.
query
(
"select * from st where tagcol3 like '__'"
)
tdSql
.
checkRows
(
10
)
# _ for binary type on tag case 2
tdSql
.
query
(
"select * from st where tagcol3 like '水_'"
)
tdSql
.
checkRows
(
5
)
# _ for binary type on tag case 2
tdSql
.
query
(
"select * from st where tagcol3 like '_表'"
)
tdSql
.
checkRows
(
10
)
# _ for binary type on tag case 3
tdSql
.
query
(
"select * from st where tagcol3 like '___'"
)
tdSql
.
checkRows
(
0
)
# _ for binary type on tag case 4
tdSql
.
query
(
"select * from st where tagcol3 like '数_'"
)
tdSql
.
checkRows
(
0
)
# _ for binary type on tag case 5
tdSql
.
query
(
"select * from st where tagcol3 like '_据'"
)
tdSql
.
checkRows
(
0
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
tests/pytest/regressiontest.sh
浏览文件 @
53892448
...
@@ -131,6 +131,8 @@ python3 ./test.py -f user/pass_len.py
...
@@ -131,6 +131,8 @@ python3 ./test.py -f user/pass_len.py
#query
#query
python3 ./test.py
-f
query/filter.py
python3 ./test.py
-f
query/filter.py
python3 ./test.py
-f
query/filterAllIntTypes.py
python3 ./test.py
-f
query/filterFloatAndDouble.py
#stream
#stream
...
...
tests/script/unique/arbitrator/dn3_mn1_replica_change.sim
浏览文件 @
53892448
...
@@ -51,7 +51,7 @@ system sh/exec.sh -n dnode2 -s start
...
@@ -51,7 +51,7 @@ system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
sql create dnode $hostname2
sleep 3000
sleep 3000
$totalTableNum = 10
000
$totalTableNum = 10
$sleepTimer = 10000
$sleepTimer = 10000
$db = db
$db = db
...
@@ -192,7 +192,7 @@ if $data00 != $totalRows then
...
@@ -192,7 +192,7 @@ if $data00 != $totalRows then
endi
endi
print ============== step4: stop dnode2 for checking if sync
success
print ============== step4: stop dnode2 for checking if sync
ok
system sh/exec.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep $sleepTimer
sleep $sleepTimer
...
...
tests/script/unique/arbitrator/dn3_mn1_replica_change_dropDnod.sim
浏览文件 @
53892448
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
00
$totalTableNum = 10
$sleepTimer = 10000
$sleepTimer = 10000
$db = db
$db = db
...
...
tests/script/unique/arbitrator/dn3_mn1_stopDnode_timeout.sim
浏览文件 @
53892448
...
@@ -173,7 +173,7 @@ if $rows != 3 then
...
@@ -173,7 +173,7 @@ if $rows != 3 then
return -1
return -1
endi
endi
print ============== step5: remove dnode4 director, then recreate dnode4 into cluster, result should
success
print ============== step5: remove dnode4 director, then recreate dnode4 into cluster, result should
ok
system sh/exec.sh -n dnode4 -s stop
system sh/exec.sh -n dnode4 -s stop
system rm -rf ../../../sim/dnode4
system rm -rf ../../../sim/dnode4
...
...
tests/script/unique/arbitrator/dn3_mn1_vnode_change.sim
浏览文件 @
53892448
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
...
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_offline.sim
浏览文件 @
53892448
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
#sql create dnode $hostname4
#sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
@@ -177,7 +177,7 @@ if $data00 != $totalRows then
...
@@ -177,7 +177,7 @@ if $data00 != $totalRows then
return -1
return -1
endi
endi
print ============== step5: stop dnode2, and check if dnode3 sync
success
print ============== step5: stop dnode2, and check if dnode3 sync
ok
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep $sleepTimer
sleep $sleepTimer
wait_dnode2_offline_0:
wait_dnode2_offline_0:
...
...
tests/script/unique/arbitrator/dn3_mn1_vnode_corruptFile_online.sim
浏览文件 @
53892448
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
#sql create dnode $hostname4
#sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
@@ -105,7 +105,7 @@ if $data00 != $totalRows then
...
@@ -105,7 +105,7 @@ if $data00 != $totalRows then
return -1
return -1
endi
endi
print ============== step5: stop dnode2, and check if dnode3 sync
success
print ============== step5: stop dnode2, and check if dnode3 sync
ok
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep $sleepTimer
sleep $sleepTimer
wait_dnode2_offline_0:
wait_dnode2_offline_0:
...
...
tests/script/unique/arbitrator/dn3_mn1_vnode_delDir.sim
浏览文件 @
53892448
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
...
tests/script/unique/arbitrator/dn3_mn1_vnode_nomaster.sim
浏览文件 @
53892448
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
...
@@ -55,7 +55,7 @@ sql create dnode $hostname3
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
@@ -152,7 +152,7 @@ print ============== step4: restart dnode2, then create database with replica 2,
...
@@ -152,7 +152,7 @@ print ============== step4: restart dnode2, then create database with replica 2,
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db1
$db = db1
...
...
tests/script/unique/arbitrator/offline_replica2_alterTable_online.sim
浏览文件 @
53892448
...
@@ -56,7 +56,7 @@ sql create dnode $hostname2
...
@@ -56,7 +56,7 @@ sql create dnode $hostname2
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
...
tests/script/unique/arbitrator/offline_replica2_alterTag_online.sim
浏览文件 @
53892448
...
@@ -67,7 +67,7 @@ sql use $db
...
@@ -67,7 +67,7 @@ sql use $db
# create table , insert data
# create table , insert data
$stb = stb
$stb = stb
sql create table $stb (ts timestamp, c1 int, c2 int) tags(t1 int)
sql create table $stb (ts timestamp, c1 int, c2 int) tags(t
0 int, t
1 int)
$rowNum = 500
$rowNum = 500
$tblNum = $totalTableNum
$tblNum = $totalTableNum
$totalRows = 0
$totalRows = 0
...
@@ -77,7 +77,7 @@ $tsEnd = 0
...
@@ -77,7 +77,7 @@ $tsEnd = 0
$i = 0
$i = 0
while $i < $tblNum
while $i < $tblNum
$tb = tb . $i
$tb = tb . $i
sql create table $tb using $stb tags( $i )
sql create table $tb using $stb tags( $i
, $i
)
$x = 0
$x = 0
while $x < $rowNum
while $x < $rowNum
...
@@ -164,7 +164,7 @@ $totalRows = 0
...
@@ -164,7 +164,7 @@ $totalRows = 0
$i = 0
$i = 0
while $i < $tblNum
while $i < $tblNum
$tb = tb . $i
$tb = tb . $i
sql create table $tb using $stb tags( $i , $i )
sql create table $tb using $stb tags( $i , $i
, $i
)
$x = 0
$x = 0
while $x < $rowNum
while $x < $rowNum
...
...
tests/script/unique/arbitrator/offline_replica2_createTable_online.sim
浏览文件 @
53892448
...
@@ -56,7 +56,7 @@ sql create dnode $hostname2
...
@@ -56,7 +56,7 @@ sql create dnode $hostname2
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$maxTables = $totalTableNum * 2
$maxTables = $totalTableNum * 2
...
...
tests/script/unique/arbitrator/offline_replica2_dropDb_online.sim
浏览文件 @
53892448
...
@@ -56,7 +56,7 @@ sql create dnode $hostname2
...
@@ -56,7 +56,7 @@ sql create dnode $hostname2
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
...
tests/script/unique/arbitrator/offline_replica2_dropTable_online.sim
浏览文件 @
53892448
...
@@ -56,7 +56,7 @@ sql create dnode $hostname2
...
@@ -56,7 +56,7 @@ sql create dnode $hostname2
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
@@ -146,14 +146,14 @@ endi
...
@@ -146,14 +146,14 @@ endi
print ============== step4: drop some tables
print ============== step4: drop some tables
$i = 1
$i = 1
$dropTblNum =
21
$dropTblNum =
6
while $i < $dropTblNum
while $i < $dropTblNum
$tb = tb . $i
$tb = tb . $i
sql drop table if exists $tb
sql drop table if exists $tb
$i = $i + 1
$i = $i + 1
endw
endw
$tblNum = $tblNum -
20
$tblNum = $tblNum -
5
print ============== step5: restart dnode4, waiting dnode4 synced
print ============== step5: restart dnode4, waiting dnode4 synced
system sh/exec.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
...
...
tests/script/unique/arbitrator/offline_replica3_alterTable_online.sim
浏览文件 @
53892448
...
@@ -56,7 +56,7 @@ sql create dnode $hostname3
...
@@ -56,7 +56,7 @@ sql create dnode $hostname3
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
...
tests/script/unique/arbitrator/offline_replica3_alterTag_online.sim
浏览文件 @
53892448
...
@@ -67,7 +67,7 @@ sql use $db
...
@@ -67,7 +67,7 @@ sql use $db
# create table , insert data
# create table , insert data
$stb = stb
$stb = stb
sql create table $stb (ts timestamp, c1 int, c2 int) tags(t1 int)
sql create table $stb (ts timestamp, c1 int, c2 int) tags(t
0 int, t
1 int)
$rowNum = 500
$rowNum = 500
$tblNum = $totalTableNum
$tblNum = $totalTableNum
$totalRows = 0
$totalRows = 0
...
@@ -77,7 +77,7 @@ $tsEnd = 0
...
@@ -77,7 +77,7 @@ $tsEnd = 0
$i = 0
$i = 0
while $i < $tblNum
while $i < $tblNum
$tb = tb . $i
$tb = tb . $i
sql create table $tb using $stb tags( $i )
sql create table $tb using $stb tags( $i
, $i
)
$x = 0
$x = 0
while $x < $rowNum
while $x < $rowNum
...
@@ -164,7 +164,7 @@ $totalRows = 0
...
@@ -164,7 +164,7 @@ $totalRows = 0
$i = 0
$i = 0
while $i < $tblNum
while $i < $tblNum
$tb = tb . $i
$tb = tb . $i
sql create table $tb using $stb tags( $i , $i )
sql create table $tb using $stb tags( $i , $i
, $i
)
$x = 0
$x = 0
while $x < $rowNum
while $x < $rowNum
...
...
tests/script/unique/arbitrator/offline_replica3_createTable_online.sim
浏览文件 @
53892448
...
@@ -56,7 +56,7 @@ sql create dnode $hostname3
...
@@ -56,7 +56,7 @@ sql create dnode $hostname3
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$maxTables = $totalTableNum * 2
$maxTables = $totalTableNum * 2
...
...
tests/script/unique/arbitrator/offline_replica3_dropDb_online.sim
浏览文件 @
53892448
...
@@ -56,7 +56,7 @@ sql create dnode $hostname3
...
@@ -56,7 +56,7 @@ sql create dnode $hostname3
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
...
tests/script/unique/arbitrator/offline_replica3_dropTable_online.sim
浏览文件 @
53892448
...
@@ -56,7 +56,7 @@ sql create dnode $hostname3
...
@@ -56,7 +56,7 @@ sql create dnode $hostname3
sql create dnode $hostname4
sql create dnode $hostname4
sleep 3000
sleep 3000
$totalTableNum = 10
0
$totalTableNum = 10
$sleepTimer = 3000
$sleepTimer = 3000
$db = db
$db = db
...
@@ -146,14 +146,14 @@ endi
...
@@ -146,14 +146,14 @@ endi
print ============== step4: drop some tables
print ============== step4: drop some tables
$i = 1
$i = 1
$dropTblNum =
21
$dropTblNum =
6
while $i < $dropTblNum
while $i < $dropTblNum
$tb = tb . $i
$tb = tb . $i
sql drop table if exists $tb
sql drop table if exists $tb
$i = $i + 1
$i = $i + 1
endw
endw
$tblNum = $tblNum -
20
$tblNum = $tblNum -
5
print ============== step5: restart dnode4, waiting dnode4 synced
print ============== step5: restart dnode4, waiting dnode4 synced
system sh/exec.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录