Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
d076b7ce
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
d076b7ce
编写于
6月 01, 2020
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' into feature/2.0tsdb
上级
4a1f43c9
acb6ec78
变更
131
显示空白变更内容
内联
并排
Showing
131 changed file
with
2198 addition
and
2353 deletion
+2198
-2353
.travis.yml
.travis.yml
+5
-5
src/client/inc/tscUtil.h
src/client/inc/tscUtil.h
+1
-1
src/client/inc/tsclient.h
src/client/inc/tsclient.h
+2
-2
src/client/src/tscAsync.c
src/client/src/tscAsync.c
+2
-1
src/client/src/tscFunctionImpl.c
src/client/src/tscFunctionImpl.c
+58
-107
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+57
-64
src/client/src/tscSecondaryMerge.c
src/client/src/tscSecondaryMerge.c
+14
-8
src/client/src/tscServer.c
src/client/src/tscServer.c
+3
-14
src/client/src/tscSql.c
src/client/src/tscSql.c
+14
-28
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+3
-1
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+11
-11
src/common/src/ttypes.c
src/common/src/ttypes.c
+34
-14
src/inc/taosdef.h
src/inc/taosdef.h
+3
-3
src/inc/taosmsg.h
src/inc/taosmsg.h
+1
-8
src/inc/tsdb.h
src/inc/tsdb.h
+4
-0
src/mnode/src/mnodeDb.c
src/mnode/src/mnodeDb.c
+4
-4
src/query/inc/qExecutor.h
src/query/inc/qExecutor.h
+89
-79
src/query/inc/qextbuffer.h
src/query/inc/qextbuffer.h
+1
-2
src/query/inc/qfill.h
src/query/inc/qfill.h
+4
-3
src/query/inc/qresultBuf.h
src/query/inc/qresultBuf.h
+2
-0
src/query/inc/tsqlfunction.h
src/query/inc/tsqlfunction.h
+20
-25
src/query/inc/tvariant.h
src/query/inc/tvariant.h
+1
-1
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+280
-559
src/query/src/qFilterFunc.c
src/query/src/qFilterFunc.c
+1
-1
src/query/src/qUtil.c
src/query/src/qUtil.c
+2
-3
src/query/src/qfill.c
src/query/src/qfill.c
+20
-7
src/query/src/qresultBuf.c
src/query/src/qresultBuf.c
+8
-10
src/query/src/tvariant.c
src/query/src/tvariant.c
+46
-13
src/rpc/src/rpcMain.c
src/rpc/src/rpcMain.c
+38
-23
src/tsdb/src/tsdbFile.c
src/tsdb/src/tsdbFile.c
+5
-1
src/tsdb/src/tsdbMeta.c
src/tsdb/src/tsdbMeta.c
+13
-10
src/tsdb/src/tsdbRWHelper.c
src/tsdb/src/tsdbRWHelper.c
+7
-1
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+236
-81
src/util/inc/hash.h
src/util/inc/hash.h
+5
-10
src/util/inc/tutil.h
src/util/inc/tutil.h
+1
-1
src/util/src/hash.c
src/util/src/hash.c
+71
-99
src/util/src/tcompare.c
src/util/src/tcompare.c
+1
-1
src/util/src/ttimer.c
src/util/src/ttimer.c
+2
-0
src/util/tests/hashTest.cpp
src/util/tests/hashTest.cpp
+4
-4
src/vnode/src/vnodeMain.c
src/vnode/src/vnodeMain.c
+1
-0
tests/How-To-Run-Test-And-How-To-Add-New-Test-Case.md
tests/How-To-Run-Test-And-How-To-Add-New-Test-Case.md
+2
-2
tests/examples/c/demo.c
tests/examples/c/demo.c
+42
-11
tests/pytest/fulltest.sh
tests/pytest/fulltest.sh
+2
-0
tests/pytest/smoketest.sh
tests/pytest/smoketest.sh
+2
-6
tests/pytest/util/dnodes.py
tests/pytest/util/dnodes.py
+10
-10
tests/script/general/import/commit.sim
tests/script/general/import/commit.sim
+2
-1
tests/script/general/parser/create_db.sim
tests/script/general/parser/create_db.sim
+11
-16
tests/script/general/parser/interp_test.sim
tests/script/general/parser/interp_test.sim
+2
-0
tests/script/general/parser/limit1_stb.sim
tests/script/general/parser/limit1_stb.sim
+1
-0
tests/script/general/parser/testSuite.sim
tests/script/general/parser/testSuite.sim
+40
-42
tests/script/general/parser/where.sim
tests/script/general/parser/where.sim
+14
-10
tests/script/general/user/authority.sim
tests/script/general/user/authority.sim
+1
-1
tests/script/jenkins/basic.txt
tests/script/jenkins/basic.txt
+66
-68
tests/script/jenkins/sync.txt
tests/script/jenkins/sync.txt
+64
-66
tests/script/sh/cfg.sh
tests/script/sh/cfg.sh
+12
-3
tests/script/sh/clear.sh
tests/script/sh/clear.sh
+12
-4
tests/script/sh/deploy.sh
tests/script/sh/deploy.sh
+12
-3
tests/script/sh/exec.sh
tests/script/sh/exec.sh
+14
-5
tests/script/sh/exec_tarbitrator.sh
tests/script/sh/exec_tarbitrator.sh
+14
-5
tests/script/sh/exec_up.sh
tests/script/sh/exec_up.sh
+0
-100
tests/script/test.sh
tests/script/test.sh
+13
-7
tests/script/unique/account/account_create.sim
tests/script/unique/account/account_create.sim
+2
-2
tests/script/unique/account/account_delete.sim
tests/script/unique/account/account_delete.sim
+2
-2
tests/script/unique/account/account_len.sim
tests/script/unique/account/account_len.sim
+2
-2
tests/script/unique/account/authority.sim
tests/script/unique/account/authority.sim
+2
-2
tests/script/unique/account/basic.sim
tests/script/unique/account/basic.sim
+2
-2
tests/script/unique/account/paras.sim
tests/script/unique/account/paras.sim
+2
-2
tests/script/unique/account/pass_alter.sim
tests/script/unique/account/pass_alter.sim
+2
-2
tests/script/unique/account/pass_len.sim
tests/script/unique/account/pass_len.sim
+2
-2
tests/script/unique/account/usage.sim
tests/script/unique/account/usage.sim
+2
-2
tests/script/unique/account/user_create.sim
tests/script/unique/account/user_create.sim
+2
-2
tests/script/unique/account/user_len.sim
tests/script/unique/account/user_len.sim
+2
-2
tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim
...t/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim
+6
-6
tests/script/unique/arbitrator/replica_changeWithArbitrator.sim
...script/unique/arbitrator/replica_changeWithArbitrator.sim
+3
-3
tests/script/unique/big/balance.sim
tests/script/unique/big/balance.sim
+14
-14
tests/script/unique/big/maxvnodes.sim
tests/script/unique/big/maxvnodes.sim
+10
-10
tests/script/unique/big/restartSpeed.sim
tests/script/unique/big/restartSpeed.sim
+9
-9
tests/script/unique/big/tcp.sim
tests/script/unique/big/tcp.sim
+9
-9
tests/script/unique/cluster/balance1.sim
tests/script/unique/cluster/balance1.sim
+15
-15
tests/script/unique/cluster/balance2.sim
tests/script/unique/cluster/balance2.sim
+18
-18
tests/script/unique/cluster/balance3.sim
tests/script/unique/cluster/balance3.sim
+22
-22
tests/script/unique/column/replica3.sim
tests/script/unique/column/replica3.sim
+11
-11
tests/script/unique/db/commit.sim
tests/script/unique/db/commit.sim
+14
-14
tests/script/unique/db/delete.sim
tests/script/unique/db/delete.sim
+17
-17
tests/script/unique/db/delete_part.sim
tests/script/unique/db/delete_part.sim
+12
-12
tests/script/unique/db/replica_add12.sim
tests/script/unique/db/replica_add12.sim
+15
-15
tests/script/unique/db/replica_add13.sim
tests/script/unique/db/replica_add13.sim
+19
-19
tests/script/unique/db/replica_add23.sim
tests/script/unique/db/replica_add23.sim
+19
-19
tests/script/unique/db/replica_part.sim
tests/script/unique/db/replica_part.sim
+17
-17
tests/script/unique/db/replica_reduce21.sim
tests/script/unique/db/replica_reduce21.sim
+11
-11
tests/script/unique/db/replica_reduce31.sim
tests/script/unique/db/replica_reduce31.sim
+15
-15
tests/script/unique/db/replica_reduce32.sim
tests/script/unique/db/replica_reduce32.sim
+15
-15
tests/script/unique/dnode/alternativeRole.sim
tests/script/unique/dnode/alternativeRole.sim
+11
-11
tests/script/unique/dnode/balance1.sim
tests/script/unique/dnode/balance1.sim
+14
-14
tests/script/unique/dnode/balance2.sim
tests/script/unique/dnode/balance2.sim
+15
-15
tests/script/unique/dnode/balance3.sim
tests/script/unique/dnode/balance3.sim
+16
-16
tests/script/unique/dnode/balancex.sim
tests/script/unique/dnode/balancex.sim
+12
-12
tests/script/unique/dnode/basic1.sim
tests/script/unique/dnode/basic1.sim
+2
-2
tests/script/unique/dnode/monitor_bug.sim
tests/script/unique/dnode/monitor_bug.sim
+2
-2
tests/script/unique/dnode/offline1.sim
tests/script/unique/dnode/offline1.sim
+11
-11
tests/script/unique/dnode/offline2.sim
tests/script/unique/dnode/offline2.sim
+13
-13
tests/script/unique/dnode/remove1.sim
tests/script/unique/dnode/remove1.sim
+13
-13
tests/script/unique/dnode/remove2.sim
tests/script/unique/dnode/remove2.sim
+13
-13
tests/script/unique/dnode/vnode_clean.sim
tests/script/unique/dnode/vnode_clean.sim
+14
-14
tests/script/unique/http/admin.sim
tests/script/unique/http/admin.sim
+9
-9
tests/script/unique/http/opentsdb.sim
tests/script/unique/http/opentsdb.sim
+9
-9
tests/script/unique/import/replica2.sim
tests/script/unique/import/replica2.sim
+18
-18
tests/script/unique/import/replica3.sim
tests/script/unique/import/replica3.sim
+19
-19
tests/script/unique/mnode/mgmt22.sim
tests/script/unique/mnode/mgmt22.sim
+13
-13
tests/script/unique/mnode/mgmt23.sim
tests/script/unique/mnode/mgmt23.sim
+14
-14
tests/script/unique/mnode/mgmt24.sim
tests/script/unique/mnode/mgmt24.sim
+12
-12
tests/script/unique/mnode/mgmt25.sim
tests/script/unique/mnode/mgmt25.sim
+11
-11
tests/script/unique/mnode/mgmt26.sim
tests/script/unique/mnode/mgmt26.sim
+13
-13
tests/script/unique/mnode/mgmt33.sim
tests/script/unique/mnode/mgmt33.sim
+14
-14
tests/script/unique/mnode/mgmt34.sim
tests/script/unique/mnode/mgmt34.sim
+15
-15
tests/script/unique/mnode/mgmtr2.sim
tests/script/unique/mnode/mgmtr2.sim
+19
-19
tests/script/unique/stable/balance_replica1.sim
tests/script/unique/stable/balance_replica1.sim
+10
-10
tests/script/unique/stable/dnode2.sim
tests/script/unique/stable/dnode2.sim
+10
-10
tests/script/unique/stable/dnode2_stop.sim
tests/script/unique/stable/dnode2_stop.sim
+12
-12
tests/script/unique/stable/dnode3.sim
tests/script/unique/stable/dnode3.sim
+11
-11
tests/script/unique/stable/replica2_dnode4.sim
tests/script/unique/stable/replica2_dnode4.sim
+12
-12
tests/script/unique/stable/replica2_vnode3.sim
tests/script/unique/stable/replica2_vnode3.sim
+10
-10
tests/script/unique/stable/replica3_dnode6.sim
tests/script/unique/stable/replica3_dnode6.sim
+14
-14
tests/script/unique/stable/replica3_vnode3.sim
tests/script/unique/stable/replica3_vnode3.sim
+12
-12
tests/script/unique/vnode/many.sim
tests/script/unique/vnode/many.sim
+16
-16
tests/script/unique/vnode/replica2_basic2.sim
tests/script/unique/vnode/replica2_basic2.sim
+15
-15
tests/script/unique/vnode/replica2_repeat.sim
tests/script/unique/vnode/replica2_repeat.sim
+16
-16
tests/script/unique/vnode/replica3_basic.sim
tests/script/unique/vnode/replica3_basic.sim
+17
-17
tests/script/unique/vnode/replica3_repeat.sim
tests/script/unique/vnode/replica3_repeat.sim
+19
-19
tests/script/unique/vnode/replica3_vgroup.sim
tests/script/unique/vnode/replica3_vgroup.sim
+11
-11
tests/test-all.sh
tests/test-all.sh
+8
-8
未找到文件。
.travis.yml
浏览文件 @
d076b7ce
...
...
@@ -51,7 +51,7 @@ matrix:
./test-all.sh $TRAVIS_EVENT_TYPE || travis_terminate $?
cd ${TRAVIS_BUILD_DIR}/tests/pytest
./valgrind-test.sh 2>&1 > mem-error-out.
txt
./valgrind-test.sh 2>&1 > mem-error-out.
log
sleep 1
# Color setting
...
...
@@ -61,9 +61,9 @@ matrix:
GREEN_UNDERLINE='\033[4;32m'
NC='\033[0m'
grep 'start to execute\|ERROR SUMMARY' mem-error-out.
txt|grep -v 'grep'|uniq|tee uniq-mem-error-out.txt
grep 'start to execute\|ERROR SUMMARY' mem-error-out.
log|grep -v 'grep'|uniq|tee uniq-mem-error-out.log
for memError in `grep 'ERROR SUMMARY' uniq-mem-error-out.
txt | awk '{print $4}'`
for memError in `grep 'ERROR SUMMARY' uniq-mem-error-out.
log | awk '{print $4}'`
do
if [ -n "$memError" ]; then
if [ "$memError" -gt 12 ]; then
...
...
@@ -74,8 +74,8 @@ matrix:
fi
done
grep 'start to execute\|definitely lost:' mem-error-out.
txt|grep -v 'grep'|uniq|tee uniq-definitely-lost-out.txt
for defiMemError in `grep 'definitely lost:' uniq-definitely-lost-out.
txt
| awk '{print $7}'`
grep 'start to execute\|definitely lost:' mem-error-out.
log|grep -v 'grep'|uniq|tee uniq-definitely-lost-out.log
for defiMemError in `grep 'definitely lost:' uniq-definitely-lost-out.
log
| awk '{print $7}'`
do
if [ -n "$defiMemError" ]; then
if [ "$defiMemError" -gt 13 ]; then
...
...
src/client/inc/tscUtil.h
浏览文件 @
d076b7ce
...
...
@@ -175,7 +175,7 @@ SSqlExpr* tscSqlExprAppend(SQueryInfo* pQueryInfo, int16_t functionId, SColumnIn
SSqlExpr
*
tscSqlExprUpdate
(
SQueryInfo
*
pQueryInfo
,
int32_t
index
,
int16_t
functionId
,
int16_t
srcColumnIndex
,
int16_t
type
,
int16_t
size
);
int32
_t
tscSqlExprNumOfExprs
(
SQueryInfo
*
pQueryInfo
);
size
_t
tscSqlExprNumOfExprs
(
SQueryInfo
*
pQueryInfo
);
SSqlExpr
*
tscSqlExprGet
(
SQueryInfo
*
pQueryInfo
,
int32_t
index
);
void
tscSqlExprCopy
(
SArray
*
dst
,
const
SArray
*
src
,
uint64_t
uid
,
bool
deepcopy
);
...
...
src/client/inc/tsclient.h
浏览文件 @
d076b7ce
...
...
@@ -84,7 +84,7 @@ typedef struct SSqlExpr {
int16_t
functionId
;
// function id in aAgg array
int16_t
resType
;
// return value type
int16_t
resBytes
;
// length of return value
int
16
_t
interBytes
;
// inter result buffer size
int
32
_t
interBytes
;
// inter result buffer size
int16_t
numOfParams
;
// argument value of each function
tVariant
param
[
3
];
// parameters are not more than 3
int32_t
offset
;
// sub result column value of arithmetic expression.
...
...
@@ -320,7 +320,7 @@ typedef struct SSqlObj {
tsem_t
rspSem
;
SSqlCmd
cmd
;
SSqlRes
res
;
uint
8_t
numOfSubs
;
uint
16_t
numOfSubs
;
struct
SSqlObj
**
pSubs
;
struct
SSqlObj
*
prev
,
*
next
;
}
SSqlObj
;
...
...
src/client/src/tscAsync.c
浏览文件 @
d076b7ce
...
...
@@ -57,6 +57,7 @@ void doAsyncQuery(STscObj* pObj, SSqlObj* pSql, void (*fp)(), void* param, const
}
pSql
->
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
if
(
pSql
->
sqlstr
==
NULL
)
{
tscError
(
"%p failed to malloc sql string buffer"
,
pSql
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_CLI_OUT_OF_MEMORY
);
...
...
@@ -165,7 +166,7 @@ static void tscProcessAsyncRetrieveImpl(void *param, TAOS_RES *tres, int numOfRo
SSqlRes
*
pRes
=
&
pSql
->
res
;
if
((
pRes
->
qhandle
==
0
||
numOfRows
!=
0
)
&&
pCmd
->
command
<
TSDB_SQL_LOCAL
)
{
if
(
pRes
->
qhandle
==
0
)
{
if
(
pRes
->
qhandle
==
0
&&
numOfRows
!=
0
)
{
tscError
(
"qhandle is NULL"
);
}
else
{
pRes
->
code
=
numOfRows
;
...
...
src/client/src/tscFunctionImpl.c
浏览文件 @
d076b7ce
...
...
@@ -153,7 +153,7 @@ typedef struct SRateInfo {
int32_t
getResultDataInfo
(
int32_t
dataType
,
int32_t
dataBytes
,
int32_t
functionId
,
int32_t
param
,
int16_t
*
type
,
int16_t
*
bytes
,
int
16
_t
*
interBytes
,
int16_t
extLength
,
bool
isSuperTable
)
{
int16_t
*
bytes
,
int
32
_t
*
interBytes
,
int16_t
extLength
,
bool
isSuperTable
)
{
if
(
!
isValidDataType
(
dataType
,
dataBytes
))
{
tscError
(
"Illegal data type %d or data type length %d"
,
dataType
,
dataBytes
);
return
TSDB_CODE_INVALID_SQL
;
...
...
@@ -478,7 +478,7 @@ int32_t count_load_data_info(SQLFunctionCtx *pCtx, TSKEY start, TSKEY end, int32
if
(
colId
==
PRIMARYKEY_TIMESTAMP_COL_INDEX
)
{
return
BLK_DATA_NO_NEEDED
;
}
else
{
return
BLK_DATA_
FILED
S_NEEDED
;
return
BLK_DATA_
STATI
S_NEEDED
;
}
}
...
...
@@ -690,7 +690,7 @@ static void sum_func_second_merge(SQLFunctionCtx *pCtx) {
}
static
int32_t
precal_req_load_info
(
SQLFunctionCtx
*
pCtx
,
TSKEY
start
,
TSKEY
end
,
int32_t
colId
)
{
return
BLK_DATA_
FILED
S_NEEDED
;
return
BLK_DATA_
STATI
S_NEEDED
;
}
static
int32_t
data_req_load_info
(
SQLFunctionCtx
*
pCtx
,
TSKEY
start
,
TSKEY
end
,
int32_t
colId
)
{
...
...
@@ -1848,13 +1848,14 @@ static void last_row_function(SQLFunctionCtx *pCtx) {
pResInfo
->
hasResult
=
DATA_SET_FLAG
;
SLastrowInfo
*
pInfo
=
(
SLastrowInfo
*
)
pResInfo
->
interResultBuf
;
pInfo
->
ts
=
pCtx
->
param
[
0
].
i64Key
;
pInfo
->
ts
=
pCtx
->
ptsList
[
0
];
pInfo
->
hasResult
=
DATA_SET_FLAG
;
// set the result to final result buffer
if
(
pResInfo
->
superTableQ
)
{
SLastrowInfo
*
pInfo1
=
(
SLastrowInfo
*
)(
pCtx
->
aOutputBuf
+
pCtx
->
inputBytes
);
pInfo1
->
ts
=
pCtx
->
p
aram
[
0
].
i64Key
;
pInfo1
->
ts
=
pCtx
->
p
tsList
[
0
]
;
pInfo1
->
hasResult
=
DATA_SET_FLAG
;
DO_UPDATE_TAG_COLUMNS
(
pCtx
,
pInfo1
->
ts
);
...
...
@@ -1904,12 +1905,12 @@ static void valuePairAssign(tValuePair *dst, int16_t type, const char *val, int6
memcpy
(
dst
->
pTags
,
pTags
,
(
size_t
)
pTagInfo
->
tagsLen
);
}
else
{
// the tags are dumped from the ctx tag fields
for
(
int32_t
i
=
0
;
i
<
pTagInfo
->
numOfTagCols
;
++
i
)
{
SQLFunctionCtx
*
__
ctx
=
pTagInfo
->
pTagCtxList
[
i
];
if
(
__
ctx
->
functionId
==
TSDB_FUNC_TS_DUMMY
)
{
__
ctx
->
tag
=
(
tVariant
)
{.
nType
=
TSDB_DATA_TYPE_BIGINT
,
.
i64Key
=
tsKey
};
SQLFunctionCtx
*
ctx
=
pTagInfo
->
pTagCtxList
[
i
];
if
(
ctx
->
functionId
==
TSDB_FUNC_TS_DUMMY
)
{
ctx
->
tag
=
(
tVariant
)
{.
nType
=
TSDB_DATA_TYPE_BIGINT
,
.
i64Key
=
tsKey
};
}
tVariantDump
(
&
pTagInfo
->
pTagCtxList
[
i
]
->
tag
,
dst
->
pTags
+
size
,
pTagInfo
->
pTagCtxList
[
i
]
->
tag
.
nTyp
e
);
tVariantDump
(
&
ctx
->
tag
,
dst
->
pTags
+
size
,
ctx
->
tag
.
nType
,
tru
e
);
size
+=
pTagInfo
->
pTagCtxList
[
i
]
->
outputBytes
;
}
}
...
...
@@ -2226,7 +2227,6 @@ static STopBotInfo *getTopBotOutputInfo(SQLFunctionCtx *pCtx) {
static
void
buildTopBotStruct
(
STopBotInfo
*
pTopBotInfo
,
SQLFunctionCtx
*
pCtx
)
{
char
*
tmp
=
(
char
*
)
pTopBotInfo
+
sizeof
(
STopBotInfo
);
pTopBotInfo
->
res
=
(
tValuePair
**
)
tmp
;
tmp
+=
POINTER_BYTES
*
pCtx
->
param
[
0
].
i64Key
;
size_t
size
=
sizeof
(
tValuePair
)
+
pCtx
->
tagInfo
.
tagsLen
;
...
...
@@ -2981,14 +2981,7 @@ static void tag_project_function(SQLFunctionCtx *pCtx) {
assert
(
pCtx
->
inputBytes
==
pCtx
->
outputBytes
);
for
(
int32_t
i
=
0
;
i
<
pCtx
->
size
;
++
i
)
{
char
*
output
=
pCtx
->
aOutputBuf
;
if
(
pCtx
->
tag
.
nType
==
TSDB_DATA_TYPE_BINARY
||
pCtx
->
tag
.
nType
==
TSDB_DATA_TYPE_NCHAR
)
{
varDataSetLen
(
output
,
pCtx
->
tag
.
nLen
);
tVariantDump
(
&
pCtx
->
tag
,
varDataVal
(
output
),
pCtx
->
outputType
);
}
else
{
tVariantDump
(
&
pCtx
->
tag
,
output
,
pCtx
->
outputType
);
}
tVariantDump
(
&
pCtx
->
tag
,
pCtx
->
aOutputBuf
,
pCtx
->
outputType
,
true
);
pCtx
->
aOutputBuf
+=
pCtx
->
outputBytes
;
}
...
...
@@ -2997,13 +2990,7 @@ static void tag_project_function(SQLFunctionCtx *pCtx) {
static
void
tag_project_function_f
(
SQLFunctionCtx
*
pCtx
,
int32_t
index
)
{
INC_INIT_VAL
(
pCtx
,
1
);
char
*
output
=
pCtx
->
aOutputBuf
;
if
(
pCtx
->
tag
.
nType
==
TSDB_DATA_TYPE_BINARY
||
pCtx
->
tag
.
nType
==
TSDB_DATA_TYPE_NCHAR
)
{
*
(
int16_t
*
)
output
=
pCtx
->
tag
.
nLen
;
output
+=
VARSTR_HEADER_SIZE
;
}
tVariantDump
(
&
pCtx
->
tag
,
output
,
pCtx
->
tag
.
nType
);
tVariantDump
(
&
pCtx
->
tag
,
pCtx
->
aOutputBuf
,
pCtx
->
tag
.
nType
,
true
);
pCtx
->
aOutputBuf
+=
pCtx
->
outputBytes
;
}
...
...
@@ -3016,30 +3003,12 @@ static void tag_project_function_f(SQLFunctionCtx *pCtx, int32_t index) {
*/
static
void
tag_function
(
SQLFunctionCtx
*
pCtx
)
{
SET_VAL
(
pCtx
,
1
,
1
);
char
*
output
=
pCtx
->
aOutputBuf
;
// todo refactor to dump length presented string(var string)
if
(
pCtx
->
tag
.
nType
==
TSDB_DATA_TYPE_BINARY
||
pCtx
->
tag
.
nType
==
TSDB_DATA_TYPE_NCHAR
)
{
*
(
int16_t
*
)
output
=
pCtx
->
tag
.
nLen
;
output
+=
VARSTR_HEADER_SIZE
;
}
tVariantDump
(
&
pCtx
->
tag
,
output
,
pCtx
->
tag
.
nType
);
tVariantDump
(
&
pCtx
->
tag
,
pCtx
->
aOutputBuf
,
pCtx
->
tag
.
nType
,
true
);
}
static
void
tag_function_f
(
SQLFunctionCtx
*
pCtx
,
int32_t
index
)
{
SET_VAL
(
pCtx
,
1
,
1
);
char
*
output
=
pCtx
->
aOutputBuf
;
// todo refactor to dump length presented string(var string)
if
(
pCtx
->
tag
.
nType
==
TSDB_DATA_TYPE_BINARY
||
pCtx
->
tag
.
nType
==
TSDB_DATA_TYPE_NCHAR
)
{
*
(
int16_t
*
)
output
=
pCtx
->
tag
.
nLen
;
output
+=
VARSTR_HEADER_SIZE
;
}
tVariantDump
(
&
pCtx
->
tag
,
output
,
pCtx
->
tag
.
nType
);
tVariantDump
(
&
pCtx
->
tag
,
pCtx
->
aOutputBuf
,
pCtx
->
tag
.
nType
,
true
);
}
static
void
copy_function
(
SQLFunctionCtx
*
pCtx
)
{
...
...
@@ -3853,15 +3822,15 @@ void twa_function_finalizer(SQLFunctionCtx *pCtx) {
}
/**
* param[1]: default value/previous value of specified timestamp
* param[2]: next value of specified timestamp
* param[3]: denotes if the result is a precious result or interpolation results
*
* @param pCtx
*/
static
void
interp_function
(
SQLFunctionCtx
*
pCtx
)
{
// at this point, the value is existed, return directly
if
(
pCtx
->
param
[
3
].
i64Key
==
1
)
{
SResultInfo
*
pResInfo
=
GET_RES_INFO
(
pCtx
);
SInterpInfoDetail
*
pInfo
=
pResInfo
->
interResultBuf
;
if
(
pCtx
->
size
==
1
)
{
char
*
pData
=
GET_INPUT_CHAR
(
pCtx
);
assignVal
(
pCtx
->
aOutputBuf
,
pData
,
pCtx
->
inputBytes
,
pCtx
->
inputType
);
}
else
{
...
...
@@ -3869,68 +3838,57 @@ static void interp_function(SQLFunctionCtx *pCtx) {
* use interpolation to generate the result.
* Note: the result of primary timestamp column uses the timestamp specified by user in the query sql
*/
assert
(
pCtx
->
param
[
3
].
i64Key
==
2
);
SInterpInfo
interpInfo
=
*
(
SInterpInfo
*
)
pCtx
->
aOutputBuf
;
SInterpInfoDetail
*
pInfoDetail
=
interpInfo
.
pInterpDetail
;
assert
(
pCtx
->
size
==
2
);
if
(
pInfo
->
type
==
TSDB_FILL_NONE
)
{
// set no output result
return
;
}
/* set no output result */
if
(
pInfoDetail
->
type
==
TSDB_FILL_NONE
)
{
pCtx
->
param
[
3
].
i64Key
=
0
;
}
else
if
(
pInfoDetail
->
primaryCol
==
1
)
{
*
(
TSKEY
*
)
pCtx
->
aOutputBuf
=
pInfoDetail
->
ts
;
if
(
pInfo
->
primaryCol
==
1
)
{
*
(
TSKEY
*
)
pCtx
->
aOutputBuf
=
pInfo
->
ts
;
}
else
{
if
(
pInfo
Detail
->
type
==
TSDB_FILL_NULL
)
{
if
(
pInfo
->
type
==
TSDB_FILL_NULL
)
{
if
(
pCtx
->
outputType
==
TSDB_DATA_TYPE_BINARY
||
pCtx
->
outputType
==
TSDB_DATA_TYPE_NCHAR
)
{
setVardataNull
(
pCtx
->
aOutputBuf
,
pCtx
->
outputType
);
}
else
{
setNull
(
pCtx
->
aOutputBuf
,
pCtx
->
outputType
,
pCtx
->
outputBytes
);
}
}
else
if
(
pInfoDetail
->
type
==
TSDB_FILL_SET_VALUE
)
{
tVariantDump
(
&
pCtx
->
param
[
1
],
pCtx
->
aOutputBuf
,
pCtx
->
inputType
);
}
else
if
(
pInfoDetail
->
type
==
TSDB_FILL_PREV
)
{
char
*
data
=
pCtx
->
param
[
1
].
pz
;
char
*
pVal
=
data
+
TSDB_KEYSIZE
;
if
(
pCtx
->
outputType
==
TSDB_DATA_TYPE_FLOAT
)
{
float
v
=
GET_DOUBLE_VAL
(
pVal
);
assignVal
(
pCtx
->
aOutputBuf
,
(
const
char
*
)
&
v
,
pCtx
->
outputBytes
,
pCtx
->
outputTyp
e
);
}
else
{
assignVal
(
pCtx
->
aOutputBuf
,
pVal
,
pCtx
->
outputBytes
,
pCtx
->
outputType
);
}
SET_VAL
(
pCtx
,
pCtx
->
size
,
1
);
}
else
if
(
pInfo
->
type
==
TSDB_FILL_SET_VALUE
)
{
tVariantDump
(
&
pCtx
->
param
[
1
],
pCtx
->
aOutputBuf
,
pCtx
->
inputType
,
tru
e
);
}
else
if
(
pInfo
->
type
==
TSDB_FILL_PREV
)
{
char
*
data
=
GET_INPUT_CHAR_INDEX
(
pCtx
,
0
);
assignVal
(
pCtx
->
aOutputBuf
,
data
,
pCtx
->
outputBytes
,
pCtx
->
outputType
);
}
else
if
(
pInfoDetail
->
type
==
TSDB_FILL_LINEAR
)
{
char
*
data1
=
pCtx
->
param
[
1
].
pz
;
char
*
data2
=
pCtx
->
param
[
2
].
pz
;
SET_VAL
(
pCtx
,
pCtx
->
size
,
1
);
}
else
if
(
pInfo
->
type
==
TSDB_FILL_LINEAR
)
{
char
*
data1
=
GET_INPUT_CHAR_INDEX
(
pCtx
,
0
);
char
*
data2
=
GET_INPUT_CHAR_INDEX
(
pCtx
,
1
);
char
*
pVal1
=
data1
+
TSDB_KEYSIZE
;
char
*
pVal2
=
data2
+
TSDB_KEYSIZE
;
TSKEY
key1
=
pCtx
->
ptsList
[
0
]
;
TSKEY
key2
=
pCtx
->
ptsList
[
1
]
;
SPoint
point1
=
{.
key
=
*
(
TSKEY
*
)
data1
,
.
val
=
&
pCtx
->
param
[
1
].
i64Key
};
SPoint
point2
=
{.
key
=
*
(
TSKEY
*
)
data2
,
.
val
=
&
pCtx
->
param
[
2
].
i64Key
};
SPoint
point1
=
{.
key
=
key1
,
.
val
=
data1
};
SPoint
point2
=
{.
key
=
key2
,
.
val
=
data2
};
SPoint
point
=
{.
key
=
pInfo
Detail
->
ts
,
.
val
=
pCtx
->
aOutputBuf
};
SPoint
point
=
{.
key
=
pInfo
->
ts
,
.
val
=
pCtx
->
aOutputBuf
};
int32_t
srcType
=
pCtx
->
inputType
;
if
((
srcType
>=
TSDB_DATA_TYPE_TINYINT
&&
srcType
<=
TSDB_DATA_TYPE_BIGINT
)
||
srcType
==
TSDB_DATA_TYPE_TIMESTAMP
||
srcType
==
TSDB_DATA_TYPE_DOUBLE
)
{
point1
.
val
=
pVal1
;
point2
.
val
=
pVal2
;
point1
.
val
=
data1
;
point2
.
val
=
data2
;
if
(
isNull
(
pVal1
,
srcType
)
||
isNull
(
pVal
2
,
srcType
))
{
if
(
isNull
(
data1
,
srcType
)
||
isNull
(
data
2
,
srcType
))
{
setNull
(
pCtx
->
aOutputBuf
,
srcType
,
pCtx
->
inputBytes
);
}
else
{
taosDoLinearInterpolation
(
pCtx
->
outputType
,
&
point1
,
&
point2
,
&
point
);
}
}
else
if
(
srcType
==
TSDB_DATA_TYPE_FLOAT
)
{
float
v1
=
GET_DOUBLE_VAL
(
pVal1
)
;
float
v2
=
GET_DOUBLE_VAL
(
pVal2
)
;
point1
.
val
=
data1
;
point2
.
val
=
data2
;
point1
.
val
=
&
v1
;
point2
.
val
=
&
v2
;
if
(
isNull
(
pVal1
,
srcType
)
||
isNull
(
pVal2
,
srcType
))
{
if
(
isNull
(
data1
,
srcType
)
||
isNull
(
data2
,
srcType
))
{
setNull
(
pCtx
->
aOutputBuf
,
srcType
,
pCtx
->
inputBytes
);
}
else
{
taosDoLinearInterpolation
(
pCtx
->
outputType
,
&
point1
,
&
point2
,
&
point
);
...
...
@@ -3938,7 +3896,7 @@ static void interp_function(SQLFunctionCtx *pCtx) {
}
else
{
if
(
srcType
==
TSDB_DATA_TYPE_BINARY
||
srcType
==
TSDB_DATA_TYPE_NCHAR
)
{
setVardataNull
(
pCtx
->
aOutputBuf
,
pCtx
->
input
Bytes
);
setVardataNull
(
pCtx
->
aOutputBuf
,
pCtx
->
input
Type
);
}
else
{
setNull
(
pCtx
->
aOutputBuf
,
srcType
,
pCtx
->
inputBytes
);
}
...
...
@@ -3946,15 +3904,8 @@ static void interp_function(SQLFunctionCtx *pCtx) {
}
}
free
(
interpInfo
.
pInterpDetail
);
}
pCtx
->
size
=
pCtx
->
param
[
3
].
i64Key
;
tVariantDestroy
(
&
pCtx
->
param
[
1
]);
tVariantDestroy
(
&
pCtx
->
param
[
2
]);
// data in the check operation are all null, not output
SET_VAL
(
pCtx
,
pCtx
->
size
,
1
);
}
...
...
@@ -4910,7 +4861,7 @@ SQLAggFuncElem aAggs[] = {{
"interp"
,
TSDB_FUNC_INTERP
,
TSDB_FUNC_INTERP
,
TSDB_FUNCSTATE_SO
|
TSDB_FUNCSTATE_OF
|
TSDB_FUNCSTATE_STABLE
|
TSDB_FUNCSTATE_NEED_TS
,
TSDB_FUNCSTATE_SO
|
TSDB_FUNCSTATE_OF
|
TSDB_FUNCSTATE_STABLE
|
TSDB_FUNCSTATE_NEED_TS
,
function_setup
,
interp_function
,
do_sum_f
,
// todo filter handle
...
...
@@ -4918,7 +4869,7 @@ SQLAggFuncElem aAggs[] = {{
doFinalizer
,
noop1
,
copy_function
,
no_data
_info
,
data_req_load
_info
,
},
{
// 28
...
...
src/client/src/tscSQLParser.c
浏览文件 @
d076b7ce
...
...
@@ -142,7 +142,7 @@ static int setColumnFilterInfoForTimestamp(SQueryInfo* pQueryInfo, tVariant* pVa
return
invalidSqlErrMsg
(
pQueryInfo
->
msg
,
msg
);
}
}
else
{
if
(
tVariantDump
(
pVar
,
(
char
*
)
&
time
,
TSDB_DATA_TYPE_BIGINT
))
{
if
(
tVariantDump
(
pVar
,
(
char
*
)
&
time
,
TSDB_DATA_TYPE_BIGINT
,
true
))
{
return
invalidSqlErrMsg
(
pQueryInfo
->
msg
,
msg
);
}
}
...
...
@@ -1403,7 +1403,6 @@ int32_t addProjectionExprAndResultField(SQueryInfo* pQueryInfo, tSQLExprItem* pI
SSchema
colSchema
=
{.
type
=
TSDB_DATA_TYPE_BINARY
,
.
bytes
=
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
};
strcpy
(
colSchema
.
name
,
TSQL_TBNAME_L
);
pQueryInfo
->
type
=
TSDB_QUERY_TYPE_STABLE_QUERY
;
tscAddSpecialColumnForSelect
(
pQueryInfo
,
startPos
,
TSDB_FUNC_TAGPRJ
,
&
index
,
&
colSchema
,
true
);
}
else
{
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
index
.
tableIndex
);
...
...
@@ -1595,7 +1594,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
int16_t
resultType
=
0
;
int16_t
resultSize
=
0
;
int
16
_t
intermediateResSize
=
0
;
int
32
_t
intermediateResSize
=
0
;
int16_t
functionID
=
0
;
if
(
changeFunctionID
(
optr
,
&
functionID
)
!=
TSDB_CODE_SUCCESS
)
{
...
...
@@ -1628,14 +1627,14 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
if
(
optr
==
TK_LEASTSQUARES
)
{
/* set the leastsquares parameters */
char
val
[
8
]
=
{
0
};
if
(
tVariantDump
(
&
pParamElem
[
1
].
pNode
->
val
,
val
,
TSDB_DATA_TYPE_DOUBLE
)
<
0
)
{
if
(
tVariantDump
(
&
pParamElem
[
1
].
pNode
->
val
,
val
,
TSDB_DATA_TYPE_DOUBLE
,
true
)
<
0
)
{
return
TSDB_CODE_INVALID_SQL
;
}
addExprParams
(
pExpr
,
val
,
TSDB_DATA_TYPE_DOUBLE
,
DOUBLE_BYTES
,
0
);
memset
(
val
,
0
,
tListLen
(
val
));
if
(
tVariantDump
(
&
pParamElem
[
2
].
pNode
->
val
,
val
,
TSDB_DATA_TYPE_DOUBLE
)
<
0
)
{
if
(
tVariantDump
(
&
pParamElem
[
2
].
pNode
->
val
,
val
,
TSDB_DATA_TYPE_DOUBLE
,
true
)
<
0
)
{
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -1795,7 +1794,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
SSqlExpr
*
pExpr
=
NULL
;
if
(
optr
==
TK_PERCENTILE
||
optr
==
TK_APERCENTILE
)
{
tVariantDump
(
pVariant
,
val
,
TSDB_DATA_TYPE_DOUBLE
);
tVariantDump
(
pVariant
,
val
,
TSDB_DATA_TYPE_DOUBLE
,
true
);
double
dp
=
GET_DOUBLE_VAL
(
val
);
if
(
dp
<
0
||
dp
>
TOP_BOTTOM_QUERY_LIMIT
)
{
...
...
@@ -1818,7 +1817,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
pExpr
=
tscSqlExprAppend
(
pQueryInfo
,
functionId
,
&
index
,
resultType
,
resultSize
,
resultSize
,
false
);
addExprParams
(
pExpr
,
val
,
TSDB_DATA_TYPE_DOUBLE
,
sizeof
(
double
),
0
);
}
else
{
tVariantDump
(
pVariant
,
val
,
TSDB_DATA_TYPE_BIGINT
);
tVariantDump
(
pVariant
,
val
,
TSDB_DATA_TYPE_BIGINT
,
true
);
int64_t
nTop
=
*
((
int32_t
*
)
val
);
if
(
nTop
<=
0
||
nTop
>
100
)
{
// todo use macro
...
...
@@ -1902,7 +1901,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
int16_t
bytes
=
0
;
int16_t
type
=
0
;
int
16
_t
inter
=
0
;
int
32
_t
inter
=
0
;
int32_t
ret
=
getResultDataInfo
(
s
.
type
,
s
.
bytes
,
TSDB_FUNC_TID_TAG
,
0
,
&
type
,
&
bytes
,
&
inter
,
0
,
0
);
assert
(
ret
==
TSDB_CODE_SUCCESS
);
...
...
@@ -2288,7 +2287,7 @@ int32_t tscTansformSQLFuncForSTableQuery(SQueryInfo* pQueryInfo) {
int16_t
bytes
=
0
;
int16_t
type
=
0
;
int
16_t
intermediate
Bytes
=
0
;
int
32_t
inter
Bytes
=
0
;
size_t
size
=
tscSqlExprNumOfExprs
(
pQueryInfo
);
for
(
int32_t
k
=
0
;
k
<
size
;
++
k
)
{
...
...
@@ -2302,13 +2301,13 @@ int32_t tscTansformSQLFuncForSTableQuery(SQueryInfo* pQueryInfo) {
(
functionId
>=
TSDB_FUNC_FIRST_DST
&&
functionId
<=
TSDB_FUNC_LAST_DST
)
||
(
functionId
>=
TSDB_FUNC_RATE
&&
functionId
<=
TSDB_FUNC_AVG_IRATE
))
{
if
(
getResultDataInfo
(
pSrcSchema
->
type
,
pSrcSchema
->
bytes
,
functionId
,
pExpr
->
param
[
0
].
i64Key
,
&
type
,
&
bytes
,
&
inter
mediate
Bytes
,
0
,
true
)
!=
TSDB_CODE_SUCCESS
)
{
&
interBytes
,
0
,
true
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
}
tscSqlExprUpdate
(
pQueryInfo
,
k
,
functionId
,
pExpr
->
colInfo
.
colIndex
,
TSDB_DATA_TYPE_BINARY
,
bytes
);
// todo refactor
pExpr
->
interBytes
=
inter
mediate
Bytes
;
pExpr
->
interBytes
=
interBytes
;
}
}
...
...
@@ -2328,12 +2327,9 @@ void tscRestoreSQLFuncForSTableQuery(SQueryInfo* pQueryInfo) {
SSqlExpr
*
pExpr
=
tscSqlExprGet
(
pQueryInfo
,
i
);
SSchema
*
pSchema
=
tscGetTableColumnSchema
(
pTableMetaInfo
->
pTableMeta
,
pExpr
->
colInfo
.
colIndex
);
// if (/*(pExpr->functionId >= TSDB_FUNC_FIRST_DST && pExpr->functionId <= TSDB_FUNC_LAST_DST) ||
// (pExpr->functionId >= TSDB_FUNC_SUM && pExpr->functionId <= TSDB_FUNC_MAX) ||
// pExpr->functionId == TSDB_FUNC_LAST_ROW*/) {
// the final result size and type in the same as query on single table.
// so here, set the flag to be false;
int16
_t
inter
=
0
;
int32
_t
inter
=
0
;
int32_t
functionId
=
pExpr
->
functionId
;
if
(
functionId
>=
TSDB_FUNC_TS
&&
functionId
<=
TSDB_FUNC_DIFF
)
{
...
...
@@ -2348,7 +2344,6 @@ void tscRestoreSQLFuncForSTableQuery(SQueryInfo* pQueryInfo) {
getResultDataInfo
(
pSchema
->
type
,
pSchema
->
bytes
,
functionId
,
0
,
&
pExpr
->
resType
,
&
pExpr
->
resBytes
,
&
inter
,
0
,
false
);
// }
}
}
...
...
@@ -2631,23 +2626,23 @@ static int32_t doExtractColumnFilterInfo(SQueryInfo* pQueryInfo, SColumnFilterIn
}
if
(
pExpr
->
nSQLOptr
==
TK_LE
||
pExpr
->
nSQLOptr
==
TK_LT
)
{
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
&
pColumnFilter
->
upperBndd
,
colType
);
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
&
pColumnFilter
->
upperBndd
,
colType
,
false
);
}
else
{
// TK_GT,TK_GE,TK_EQ,TK_NE are based on the pColumn->lowerBndd
if
(
colType
==
TSDB_DATA_TYPE_BINARY
)
{
pColumnFilter
->
pz
=
(
int64_t
)
calloc
(
1
,
pRight
->
val
.
nLen
+
1
);
pColumnFilter
->
len
=
pRight
->
val
.
nLen
;
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
pColumnFilter
->
pz
,
colType
);
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
pColumnFilter
->
pz
,
colType
,
false
);
}
else
if
(
colType
==
TSDB_DATA_TYPE_NCHAR
)
{
// pRight->val.nLen + 1 is larger than the actual nchar string length
pColumnFilter
->
pz
=
(
int64_t
)
calloc
(
1
,
(
pRight
->
val
.
nLen
+
1
)
*
TSDB_NCHAR_SIZE
);
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
pColumnFilter
->
pz
,
colType
);
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
pColumnFilter
->
pz
,
colType
,
false
);
size_t
len
=
wcslen
((
wchar_t
*
)
pColumnFilter
->
pz
);
pColumnFilter
->
len
=
len
*
TSDB_NCHAR_SIZE
;
}
else
{
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
&
pColumnFilter
->
lowerBndd
,
colType
);
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
&
pColumnFilter
->
lowerBndd
,
colType
,
false
);
}
}
...
...
@@ -3336,9 +3331,8 @@ static int32_t handleExprInQueryCond(SQueryInfo* pQueryInfo, tSQLExpr** pExpr, S
*
pExpr
=
NULL
;
// remove this expression
*
type
=
TSQL_EXPR_TS
;
}
else
if
(
index
.
columnIndex
>=
tscGetNumOfColumns
(
pTableMeta
)
||
index
.
columnIndex
==
TSDB_TBNAME_COLUMN_INDEX
)
{
// query on tags
// check for tag query condition
}
else
if
(
index
.
columnIndex
>=
tscGetNumOfColumns
(
pTableMeta
)
||
index
.
columnIndex
==
TSDB_TBNAME_COLUMN_INDEX
)
{
// query on tags, check for tag query condition
if
(
UTIL_TABLE_IS_NORMAL_TABLE
(
pTableMetaInfo
))
{
return
invalidSqlErrMsg
(
pQueryInfo
->
msg
,
msg1
);
}
...
...
@@ -3933,7 +3927,7 @@ int32_t getTimeRange(STimeWindow* win, tSQLExpr* pRight, int32_t optr, int16_t t
* failed to parse timestamp in regular formation, try next
* it may be a epoch time in string format
*/
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
&
val
,
TSDB_DATA_TYPE_BIGINT
);
tVariantDump
(
&
pRight
->
val
,
(
char
*
)
&
val
,
TSDB_DATA_TYPE_BIGINT
,
true
);
/*
* transfer it into MICROSECOND format if it is a string, since for
...
...
@@ -4070,14 +4064,13 @@ int32_t parseFillClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySQL) {
continue
;
}
int32_t
ret
=
tVariantDump
(
&
pFillToken
->
a
[
j
].
pVar
,
(
char
*
)
&
pQueryInfo
->
fillVal
[
i
],
pFields
->
type
);
int32_t
ret
=
tVariantDump
(
&
pFillToken
->
a
[
j
].
pVar
,
(
char
*
)
&
pQueryInfo
->
fillVal
[
i
],
pFields
->
type
,
true
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
invalidSqlErrMsg
(
pQueryInfo
->
msg
,
msg
);
}
}
if
((
pFillToken
->
nExpr
<
size
)
||
((
pFillToken
->
nExpr
-
1
<
size
)
&&
(
tscIsPointInterpQuery
(
pQueryInfo
))))
{
if
((
pFillToken
->
nExpr
<
size
)
||
((
pFillToken
->
nExpr
-
1
<
size
)
&&
(
tscIsPointInterpQuery
(
pQueryInfo
))))
{
tVariantListItem
*
lastItem
=
&
pFillToken
->
a
[
pFillToken
->
nExpr
-
1
];
for
(
int32_t
i
=
numOfFillVal
;
i
<
size
;
++
i
)
{
...
...
@@ -4086,7 +4079,7 @@ int32_t parseFillClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySQL) {
if
(
pFields
->
type
==
TSDB_DATA_TYPE_BINARY
||
pFields
->
type
==
TSDB_DATA_TYPE_NCHAR
)
{
setVardataNull
((
char
*
)
&
pQueryInfo
->
fillVal
[
i
],
pFields
->
type
);
}
else
{
tVariantDump
(
&
lastItem
->
pVar
,
(
char
*
)
&
pQueryInfo
->
fillVal
[
i
],
pFields
->
type
);
tVariantDump
(
&
lastItem
->
pVar
,
(
char
*
)
&
pQueryInfo
->
fillVal
[
i
],
pFields
->
type
,
true
);
}
}
}
...
...
@@ -4168,6 +4161,10 @@ int32_t parseOrderbyClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySql, SSchema
if
(
index
.
columnIndex
>=
tscGetNumOfColumns
(
pTableMetaInfo
->
pTableMeta
))
{
int32_t
relTagIndex
=
index
.
columnIndex
-
tscGetNumOfColumns
(
pTableMetaInfo
->
pTableMeta
);
// it is a tag column
if
(
pQueryInfo
->
groupbyExpr
.
columnInfo
==
NULL
)
{
return
invalidSqlErrMsg
(
pQueryInfo
->
msg
,
msg2
);
}
SColIndex
*
pColIndex
=
taosArrayGet
(
pQueryInfo
->
groupbyExpr
.
columnInfo
,
0
);
if
(
relTagIndex
==
pColIndex
->
colIndex
)
{
orderByTags
=
true
;
...
...
@@ -4420,10 +4417,10 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
SSchema
*
pTagsSchema
=
tscGetTableColumnSchema
(
pTableMetaInfo
->
pTableMeta
,
columnIndex
.
columnIndex
);
if
(
tVariantDump
(
&
pVarList
->
a
[
1
].
pVar
,
pAlterSQL
->
tagData
.
data
/*pCmd->payload*/
,
pTagsSchema
->
type
)
!=
TSDB_CODE_SUCCESS
)
{
if
(
tVariantDump
(
&
pVarList
->
a
[
1
].
pVar
,
pAlterSQL
->
tagData
.
data
,
pTagsSchema
->
type
,
true
)
!=
TSDB_CODE_SUCCESS
)
{
return
invalidSqlErrMsg
(
pQueryInfo
->
msg
,
msg13
);
}
pAlterSQL
->
tagData
.
dataLen
=
pTagsSchema
->
bytes
;
// validate the length of binary
...
...
@@ -4680,7 +4677,7 @@ int32_t parseLimitClause(SQueryInfo* pQueryInfo, int32_t clauseIndex, SQuerySQL*
const
char
*
msg0
=
"soffset/offset can not be less than 0"
;
const
char
*
msg1
=
"slimit/soffset only available for STable query"
;
const
char
*
msg2
=
"function
not supported on table
"
;
const
char
*
msg2
=
"function
s mixed up in table query
"
;
const
char
*
msg3
=
"slimit/soffset can not apply to projection query"
;
// handle the limit offset value, validate the limit
...
...
@@ -4764,12 +4761,20 @@ int32_t parseLimitClause(SQueryInfo* pQueryInfo, int32_t clauseIndex, SQuerySQL*
size_t
size
=
taosArrayGetSize
(
pQueryInfo
->
exprList
);
bool
hasTags
=
false
;
bool
hasOtherFunc
=
false
;
// filter the query functions operating on "tbname" column that are not supported by normal columns.
for
(
int32_t
i
=
0
;
i
<
size
;
++
i
)
{
SSqlExpr
*
pExpr
=
tscSqlExprGet
(
pQueryInfo
,
i
);
if
(
pExpr
->
colInfo
.
colIndex
==
TSDB_TBNAME_COLUMN_INDEX
)
{
return
invalidSqlErrMsg
(
pQueryInfo
->
msg
,
msg2
);
if
(
TSDB_COL_IS_TAG
(
pExpr
->
colInfo
.
flag
))
{
hasTags
=
true
;
}
else
{
hasOtherFunc
=
true
;
}
}
if
(
hasTags
&&
hasOtherFunc
)
{
return
invalidSqlErrMsg
(
pQueryInfo
->
msg
,
msg2
);
}
}
...
...
@@ -5571,21 +5576,9 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
if
(
pList
->
a
[
i
].
pVar
.
nLen
+
VARSTR_HEADER_SIZE
>
pTagSchema
[
i
].
bytes
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg3
);
}
ret
=
tVariantDump
(
&
(
pList
->
a
[
i
].
pVar
),
varDataVal
(
tagVal
),
pTagSchema
[
i
].
type
);
if
(
pList
->
a
[
i
].
pVar
.
nType
==
TSDB_DATA_TYPE_NULL
)
{
if
(
pTagSchema
[
i
].
type
==
TSDB_DATA_TYPE_BINARY
)
{
varDataSetLen
(
tagVal
,
sizeof
(
uint8_t
));
}
else
{
varDataSetLen
(
tagVal
,
sizeof
(
uint32_t
));
}
}
else
{
// todo refactor
varDataSetLen
(
tagVal
,
pList
->
a
[
i
].
pVar
.
nLen
);
}
}
else
{
ret
=
tVariantDump
(
&
(
pList
->
a
[
i
].
pVar
),
tagVal
,
pTagSchema
[
i
].
type
);
}
ret
=
tVariantDump
(
&
(
pList
->
a
[
i
].
pVar
),
tagVal
,
pTagSchema
[
i
].
type
,
true
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg4
);
}
...
...
@@ -5845,7 +5838,7 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
pQueryInfo
->
window
.
ekey
=
pQueryInfo
->
window
.
ekey
/
1000
;
}
}
else
{
// set the time rang
pQueryInfo
->
window
.
skey
=
0
;
pQueryInfo
->
window
.
skey
=
TSKEY_INITIAL_VAL
;
pQueryInfo
->
window
.
ekey
=
INT64_MAX
;
}
...
...
src/client/src/tscSecondaryMerge.c
浏览文件 @
d076b7ce
...
...
@@ -689,7 +689,7 @@ int32_t tscLocalReducerEnvCreate(SSqlObj *pSql, tExtMemBuffer ***pMemBuffer, tOr
SSchema
*
p1
=
tscGetTableColumnSchema
(
pTableMetaInfo
->
pTableMeta
,
pExpr
->
colInfo
.
colIndex
);
int
16
_t
inter
=
0
;
int
32
_t
inter
=
0
;
int16_t
type
=
-
1
;
int16_t
bytes
=
0
;
...
...
@@ -1049,7 +1049,14 @@ static void doExecuteSecondaryMerge(SSqlCmd *pCmd, SLocalReducer *pLocalReducer,
int32_t
functionId
=
pExpr
->
functionId
;
if
(
functionId
==
TSDB_FUNC_TAG_DUMMY
||
functionId
==
TSDB_FUNC_TAG
||
functionId
==
TSDB_FUNC_TS_DUMMY
)
{
tVariantDestroy
(
&
pCtx
->
tag
);
tVariantCreateFromBinary
(
&
pCtx
->
tag
,
pCtx
->
aInputElemBuf
,
pCtx
->
inputBytes
,
pCtx
->
inputType
);
char
*
input
=
pCtx
->
aInputElemBuf
;
if
(
pCtx
->
inputType
==
TSDB_DATA_TYPE_BINARY
||
pCtx
->
inputType
==
TSDB_DATA_TYPE_NCHAR
)
{
assert
(
varDataLen
(
input
)
<=
pCtx
->
inputBytes
);
tVariantCreateFromBinary
(
&
pCtx
->
tag
,
varDataVal
(
input
),
varDataLen
(
input
),
pCtx
->
inputType
);
}
else
{
tVariantCreateFromBinary
(
&
pCtx
->
tag
,
input
,
pCtx
->
inputBytes
,
pCtx
->
inputType
);
}
}
pCtx
->
currentStage
=
SECONDARY_STAGE_MERGE
;
...
...
@@ -1309,7 +1316,7 @@ static bool isAllSourcesCompleted(SLocalReducer *pLocalReducer) {
return
(
pLocalReducer
->
numOfBuffer
==
pLocalReducer
->
numOfCompleted
);
}
static
bool
do
InterpolationForCurrent
Group
(
SSqlObj
*
pSql
)
{
static
bool
do
BuildFilledResultFor
Group
(
SSqlObj
*
pSql
)
{
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
SSqlRes
*
pRes
=
&
pSql
->
res
;
...
...
@@ -1347,7 +1354,7 @@ static bool doHandleLastRemainData(SSqlObj *pSql) {
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
SSqlRes
*
pRes
=
&
pSql
->
res
;
SLocalReducer
*
pLocalReducer
=
pRes
->
pLocalReducer
;
SLocalReducer
*
pLocalReducer
=
pRes
->
pLocalReducer
;
SFillInfo
*
pFillInfo
=
pLocalReducer
->
pFillInfo
;
bool
prevGroupCompleted
=
(
!
pLocalReducer
->
discard
)
&&
pLocalReducer
->
hasUnprocessedRow
;
...
...
@@ -1445,7 +1452,7 @@ int32_t tscDoLocalMerge(SSqlObj *pSql) {
return
TSDB_CODE_SUCCESS
;
}
if
(
do
InterpolationForCurrent
Group
(
pSql
))
{
if
(
do
BuildFilledResultFor
Group
(
pSql
))
{
pLocalReducer
->
status
=
TSC_LOCALREDUCE_READY
;
// set the flag, taos_free_result can release this result.
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -1464,8 +1471,7 @@ int32_t tscDoLocalMerge(SSqlObj *pSql) {
#ifdef _DEBUG_VIEW
printf
(
"chosen data in pTree[0] = %d
\n
"
,
pTree
->
pNode
[
0
].
index
);
#endif
assert
((
pTree
->
pNode
[
0
].
index
<
pLocalReducer
->
numOfBuffer
)
&&
(
pTree
->
pNode
[
0
].
index
>=
0
)
&&
tmpBuffer
->
num
==
0
);
assert
((
pTree
->
pNode
[
0
].
index
<
pLocalReducer
->
numOfBuffer
)
&&
(
pTree
->
pNode
[
0
].
index
>=
0
)
&&
tmpBuffer
->
num
==
0
);
// chosen from loser tree
SLocalDataSource
*
pOneDataSrc
=
pLocalReducer
->
pLocalDataSrc
[
pTree
->
pNode
[
0
].
index
];
...
...
src/client/src/tscServer.c
浏览文件 @
d076b7ce
...
...
@@ -1287,7 +1287,7 @@ int tscBuildAlterTableMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
pAlterTableMsg
->
numOfCols
=
htons
(
tscNumOfFields
(
pQueryInfo
));
SSchema
*
pSchema
=
pAlterTableMsg
->
schema
;
for
(
int
i
=
0
;
i
<
pAlterTableMsg
->
numOfCols
;
++
i
)
{
for
(
int
i
=
0
;
i
<
tscNumOfFields
(
pQueryInfo
)
;
++
i
)
{
TAOS_FIELD
*
pField
=
tscFieldInfoGetField
(
&
pQueryInfo
->
fieldsInfo
,
i
);
pSchema
->
type
=
pField
->
type
;
...
...
@@ -1844,17 +1844,6 @@ int tscProcessTableMetaRsp(SSqlObj *pSql) {
size_t
size
=
0
;
STableMeta
*
pTableMeta
=
tscCreateTableMetaFromMsg
(
pMetaMsg
,
&
size
);
#if 0
// if current table is created according to super table, get the table meta of super table
if (pTableMeta->tableType == TSDB_CHILD_TABLE) {
char id[TSDB_TABLE_ID_LEN + 1] = {0};
strncpy(id, pMetaMsg->stableId, TSDB_TABLE_ID_LEN);
// NOTE: if the table meta of super table is not cached at client side yet, the pSTable is NULL
pTableMeta->pSTable = taosCacheAcquireByName(tscCacheHandle, id);
}
#endif
// todo add one more function: taosAddDataIfNotExists();
STableMetaInfo
*
pTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
&
pSql
->
cmd
,
0
,
0
);
assert
(
pTableMetaInfo
->
pTableMeta
==
NULL
);
...
...
@@ -1976,7 +1965,7 @@ int tscProcessMultiMeterMetaRsp(SSqlObj *pSql) {
pSql->res.code = TSDB_CODE_SUCCESS;
pSql->res.numOfTotal = i;
tscTrace("%p load multi-metermeta resp complete num:%d", pSql, pSql->res.numOfTotal);
tscTrace("%p load multi-metermeta resp
from
complete num:%d", pSql, pSql->res.numOfTotal);
#endif
return
TSDB_CODE_SUCCESS
;
...
...
src/client/src/tscSql.c
浏览文件 @
d076b7ce
...
...
@@ -284,12 +284,11 @@ int taos_query(TAOS *taos, const char *sqlstr) {
}
SSqlObj
*
pSql
=
pObj
->
pSql
;
size_t
sqlLen
=
strlen
(
sqlstr
);
doAsyncQuery
(
pObj
,
pSql
,
waitForQueryRsp
,
taos
,
sqlstr
,
sqlLen
);
// wait for the callback function to post the semaphore
sem_wait
(
&
pSql
->
rspSem
);
t
sem_wait
(
&
pSql
->
rspSem
);
return
pSql
->
res
.
code
;
}
...
...
@@ -525,7 +524,7 @@ int taos_select_db(TAOS *taos, const char *db) {
return
taos_query
(
taos
,
sql
);
}
void
taos_free_result
_imp
(
TAOS_RES
*
res
,
int
keepCmd
)
{
void
taos_free_result
(
TAOS_RES
*
res
)
{
if
(
res
==
NULL
)
return
;
SSqlObj
*
pSql
=
(
SSqlObj
*
)
res
;
...
...
@@ -536,26 +535,23 @@ void taos_free_result_imp(TAOS_RES *res, int keepCmd) {
if
(
pSql
->
signature
!=
pSql
)
return
;
STscObj
*
pObj
=
pSql
->
pTscObj
;
if
(
pRes
==
NULL
||
pRes
->
qhandle
==
0
)
{
/* Query rsp is not received from vnode, so the qhandle is NULL */
tscTrace
(
"%p qhandle is null, abort free, fp:%p"
,
pSql
,
pSql
->
fp
);
STscObj
*
pTscObj
=
pSql
->
pTscObj
;
if
(
pTscObj
->
pSql
!=
pSql
)
{
// The semaphore can not be changed while freeing async sub query objects.
if
(
pObj
->
pSql
!=
pSql
)
{
tscTrace
(
"%p SqlObj is freed by app"
,
pSql
);
tscFreeSqlObj
(
pSql
);
}
else
{
if
(
keepCmd
)
{
tscFreeSqlResult
(
pSql
);
}
else
{
tscPartiallyFreeSqlObj
(
pSql
);
}
}
return
;
}
// set freeFlag to 1 in retrieve message if there are un-retrieved results
// set freeFlag to 1 in retrieve message if there are un-retrieved results
data in node
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
&
pSql
->
cmd
,
0
);
if
(
pQueryInfo
==
NULL
)
{
tscPartiallyFreeSqlObj
(
pSql
);
...
...
@@ -563,6 +559,7 @@ void taos_free_result_imp(TAOS_RES *res, int keepCmd) {
}
pQueryInfo
->
type
=
TSDB_QUERY_TYPE_FREE_RESOURCE
;
STscObj
*
pTscObj
=
pSql
->
pTscObj
;
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
...
...
@@ -579,9 +576,8 @@ void taos_free_result_imp(TAOS_RES *res, int keepCmd) {
if
((
pCmd
->
command
==
TSDB_SQL_SELECT
||
pCmd
->
command
==
TSDB_SQL_SHOW
||
pCmd
->
command
==
TSDB_SQL_RETRIEVE
||
pCmd
->
command
==
TSDB_SQL_FETCH
)
&&
pRes
->
code
==
TSDB_CODE_SUCCESS
&&
((
pCmd
->
command
<
TSDB_SQL_LOCAL
&&
pRes
->
completed
==
false
)
||
(
pCmd
->
command
==
TSDB_SQL_SELECT
&&
pSql
->
pStream
==
NULL
&&
pTableMetaInfo
->
pTableMeta
!=
NULL
)))
{
pCmd
->
command
==
TSDB_SQL_FETCH
)
&&
pRes
->
code
==
TSDB_CODE_SUCCESS
&&
pRes
->
completed
==
false
&&
(
pCmd
->
command
==
TSDB_SQL_SELECT
&&
pSql
->
pStream
==
NULL
&&
pTableMetaInfo
->
pTableMeta
!=
NULL
))
{
pCmd
->
command
=
(
pCmd
->
command
>
TSDB_SQL_MGMT
)
?
TSDB_SQL_RETRIEVE
:
TSDB_SQL_FETCH
;
tscTrace
(
"%p send msg to free qhandle in vnode, code:%d, numOfRows:%d, command:%s"
,
pSql
,
pRes
->
code
,
pRes
->
numOfRows
,
...
...
@@ -591,30 +587,20 @@ void taos_free_result_imp(TAOS_RES *res, int keepCmd) {
tscProcessSql
(
pSql
);
// waits for response and then goes on
STscObj
*
pTscObj
=
pSql
->
pTscObj
;
if
(
pTscObj
->
pSql
==
pSql
)
{
sem_wait
(
&
pSql
->
rspSem
);
}
}
else
{
// if no free resource msg is sent to vnode, we free this object immediately.
STscObj
*
pTscObj
=
pSql
->
pTscObj
;
if
(
pTscObj
->
pSql
!=
pSql
)
{
tscFreeSqlObj
(
pSql
);
tscTrace
(
"%p sql result is freed by app"
,
pSql
);
}
else
{
if
(
keepCmd
)
{
tscFreeSqlResult
(
pSql
);
tscTrace
(
"%p sql result is freed while sql command is kept"
,
pSql
);
}
else
{
tscPartiallyFreeSqlObj
(
pSql
);
tscTrace
(
"%p sql result is freed by app"
,
pSql
);
}
}
}
}
void
taos_free_result
(
TAOS_RES
*
res
)
{
taos_free_result_imp
(
res
,
0
);
}
// todo should not be used in async query
int
taos_errno
(
TAOS
*
taos
)
{
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
...
...
src/client/src/tscSubquery.c
浏览文件 @
d076b7ce
...
...
@@ -1084,7 +1084,7 @@ int32_t tscLaunchJoinSubquery(SSqlObj *pSql, int16_t tableIndex, SJoinSupporter
int16_t
bytes
=
0
;
int16_t
type
=
0
;
int
16
_t
inter
=
0
;
int
32
_t
inter
=
0
;
getResultDataInfo
(
s
.
type
,
s
.
bytes
,
TSDB_FUNC_TID_TAG
,
0
,
&
type
,
&
bytes
,
&
inter
,
0
,
0
);
...
...
@@ -1770,6 +1770,8 @@ int32_t tscHandleMultivnodeInsert(SSqlObj *pSql) {
*/
pNew
->
fetchFp
=
pNew
->
fp
;
pSql
->
pSubs
[
i
]
=
pNew
;
pNew
->
fetchFp
=
pNew
->
fp
;
tscTrace
(
"%p sub:%p create subObj success. orderOfSub:%d"
,
pSql
,
pNew
,
i
);
}
...
...
src/client/src/tscUtil.c
浏览文件 @
d076b7ce
...
...
@@ -421,7 +421,6 @@ void tscFreeSqlObj(SSqlObj* pSql) {
memset
(
pCmd
->
payload
,
0
,
(
size_t
)
pCmd
->
allocSize
);
tfree
(
pCmd
->
payload
);
pCmd
->
allocSize
=
0
;
tfree
(
pSql
->
sqlstr
);
...
...
@@ -1033,7 +1032,7 @@ SSqlExpr* tscSqlExprUpdate(SQueryInfo* pQueryInfo, int32_t index, int16_t functi
return
pExpr
;
}
int32_t
tscSqlExprNumOfExprs
(
SQueryInfo
*
pQueryInfo
)
{
size_t
tscSqlExprNumOfExprs
(
SQueryInfo
*
pQueryInfo
)
{
return
taosArrayGetSize
(
pQueryInfo
->
exprList
);
}
...
...
@@ -1352,7 +1351,7 @@ bool tscValidateColumnId(STableMetaInfo* pTableMetaInfo, int32_t colId) {
return
false
;
}
if
(
colId
==
-
1
&&
UTIL_TABLE_IS_SUPER_TABLE
(
pTableMetaInfo
)
)
{
if
(
colId
==
TSDB_TBNAME_COLUMN_INDEX
)
{
return
true
;
}
...
...
@@ -1768,11 +1767,12 @@ SSqlObj* createSubqueryObj(SSqlObj* pSql, int16_t tableIndex, void (*fp)(), void
pNewQueryInfo
->
limit
=
pQueryInfo
->
limit
;
pNewQueryInfo
->
slimit
=
pQueryInfo
->
slimit
;
pNewQueryInfo
->
order
=
pQueryInfo
->
order
;
pNewQueryInfo
->
clauseLimit
=
pQueryInfo
->
clauseLimit
;
pNewQueryInfo
->
pTableMetaInfo
=
NULL
;
pNewQueryInfo
->
tsBuf
=
NULL
;
pNewQueryInfo
->
fillType
=
pQueryInfo
->
fillType
;
pNewQueryInfo
->
fillVal
=
NULL
;
pNewQueryInfo
->
clauseLimit
=
pQueryInfo
->
clauseLimit
;
pNewQueryInfo
->
numOfTables
=
0
;
pNewQueryInfo
->
tsBuf
=
NULL
;
pNewQueryInfo
->
pTableMetaInfo
=
NULL
;
pNewQueryInfo
->
groupbyExpr
=
pQueryInfo
->
groupbyExpr
;
if
(
pQueryInfo
->
groupbyExpr
.
columnInfo
!=
NULL
)
{
...
...
@@ -1864,7 +1864,7 @@ SSqlObj* createSubqueryObj(SSqlObj* pSql, int16_t tableIndex, void (*fp)(), void
}
if
(
pFinalInfo
->
pTableMeta
==
NULL
)
{
tscError
(
"%p new subquery failed for get
pMeter
Meta is NULL from cache"
,
pSql
);
tscError
(
"%p new subquery failed for get
table
Meta is NULL from cache"
,
pSql
);
tscFreeSqlObj
(
pNew
);
return
NULL
;
}
...
...
@@ -2011,7 +2011,7 @@ bool hasMoreVnodesToTry(SSqlObj* pSql) {
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
assert
(
pRes
->
completed
);
// for normal table,
do not try any more if result are exhausted
// for normal table,
no need to try any more if results are all retrieved from one vnode
if
(
!
UTIL_TABLE_IS_SUPER_TABLE
(
pTableMetaInfo
)
||
(
pTableMetaInfo
->
vgroupList
==
NULL
))
{
return
false
;
}
...
...
@@ -2037,7 +2037,7 @@ void tscTryQueryNextVnode(SSqlObj* pSql, __async_cb_func_t fp) {
int32_t
totalVgroups
=
pTableMetaInfo
->
vgroupList
->
numOfVgroups
;
while
(
++
pTableMetaInfo
->
vgroupIndex
<
totalVgroups
)
{
tscTrace
(
"%p
current vnode:%d exhausted, try next:%d. total vnode
:%d. current numOfRes:%d"
,
pSql
,
tscTrace
(
"%p
results from vgroup index:%d completed, try next:%d. total vgroups
:%d. current numOfRes:%d"
,
pSql
,
pTableMetaInfo
->
vgroupIndex
-
1
,
pTableMetaInfo
->
vgroupIndex
,
totalVgroups
,
pRes
->
numOfClauseTotal
);
/*
...
...
@@ -2121,7 +2121,7 @@ void tscGetResultColumnChr(SSqlRes* pRes, SFieldInfo* pFieldInfo, int32_t column
int32_t
type
=
pInfo
->
pSqlExpr
->
resType
;
int32_t
bytes
=
pInfo
->
pSqlExpr
->
resBytes
;
char
*
pData
=
((
char
*
)
pRes
->
data
)
+
pInfo
->
pSqlExpr
->
offset
*
pRes
->
numOfRows
+
bytes
*
pRes
->
row
;
char
*
pData
=
pRes
->
data
+
pInfo
->
pSqlExpr
->
offset
*
pRes
->
numOfRows
+
bytes
*
pRes
->
row
;
if
(
type
==
TSDB_DATA_TYPE_NCHAR
||
type
==
TSDB_DATA_TYPE_BINARY
)
{
int32_t
realLen
=
varDataLen
(
pData
);
...
...
@@ -2134,7 +2134,7 @@ void tscGetResultColumnChr(SSqlRes* pRes, SFieldInfo* pFieldInfo, int32_t column
}
if
(
realLen
<
pInfo
->
pSqlExpr
->
resBytes
-
VARSTR_HEADER_SIZE
)
{
// todo refactor
*
(
char
*
)
(
pData
+
realLen
+
VARSTR_HEADER_SIZE
)
=
0
;
*
(
pData
+
realLen
+
VARSTR_HEADER_SIZE
)
=
0
;
}
pRes
->
length
[
columnIndex
]
=
realLen
;
...
...
src/common/src/ttypes.c
浏览文件 @
d076b7ce
...
...
@@ -32,6 +32,35 @@ const int32_t TYPE_BYTES[11] = {
sizeof
(
VarDataOffsetT
)
// TSDB_DATA_TYPE_NCHAR
};
static
void
getStatics_bool
(
const
TSKEY
*
primaryKey
,
const
void
*
pData
,
int32_t
numOfRow
,
int64_t
*
min
,
int64_t
*
max
,
int64_t
*
sum
,
int16_t
*
minIndex
,
int16_t
*
maxIndex
,
int16_t
*
numOfNull
)
{
int8_t
*
data
=
(
int8_t
*
)
pData
;
*
min
=
INT64_MAX
;
*
max
=
INT64_MIN
;
*
minIndex
=
0
;
*
maxIndex
=
0
;
ASSERT
(
numOfRow
<=
INT16_MAX
);
for
(
int32_t
i
=
0
;
i
<
numOfRow
;
++
i
)
{
if
(
isNull
((
char
*
)
&
data
[
i
],
TSDB_DATA_TYPE_BOOL
))
{
(
*
numOfNull
)
+=
1
;
continue
;
}
*
sum
+=
data
[
i
];
if
(
*
min
>
data
[
i
])
{
*
min
=
data
[
i
];
*
minIndex
=
i
;
}
if
(
*
max
<
data
[
i
])
{
*
max
=
data
[
i
];
*
maxIndex
=
i
;
}
}
}
static
void
getStatics_i8
(
const
TSKEY
*
primaryKey
,
const
void
*
pData
,
int32_t
numOfRow
,
int64_t
*
min
,
int64_t
*
max
,
int64_t
*
sum
,
int16_t
*
minIndex
,
int16_t
*
maxIndex
,
int16_t
*
numOfNull
)
{
int8_t
*
data
=
(
int8_t
*
)
pData
;
...
...
@@ -131,15 +160,6 @@ static void getStatics_i32(const TSKEY *primaryKey, const void *pData, int32_t n
*
max
=
data
[
i
];
*
maxIndex
=
i
;
}
// if (isNull(&lastVal, TSDB_DATA_TYPE_INT)) {
// lastKey = primaryKey[i];
// lastVal = data[i];
// } else {
// *wsum = lastVal * (primaryKey[i] - lastKey);
// lastKey = primaryKey[i];
// lastVal = data[i];
// }
}
}
...
...
@@ -279,11 +299,11 @@ static void getStatics_bin(const TSKEY *primaryKey, const void *pData, int32_t n
ASSERT
(
numOfRow
<=
INT16_MAX
);
for
(
int32_t
i
=
0
;
i
<
numOfRow
;
++
i
)
{
if
(
isNull
(
(
const
char
*
)
varDataVal
(
data
)
,
TSDB_DATA_TYPE_BINARY
))
{
if
(
isNull
(
data
,
TSDB_DATA_TYPE_BINARY
))
{
(
*
numOfNull
)
+=
1
;
}
data
+=
varDataLen
(
data
);
data
+=
varData
T
Len
(
data
);
}
*
sum
=
0
;
...
...
@@ -299,11 +319,11 @@ static void getStatics_nchr(const TSKEY *primaryKey, const void *pData, int32_t
ASSERT
(
numOfRow
<=
INT16_MAX
);
for
(
int32_t
i
=
0
;
i
<
numOfRow
;
++
i
)
{
if
(
isNull
(
(
const
char
*
)
varDataVal
(
data
)
,
TSDB_DATA_TYPE_NCHAR
))
{
if
(
isNull
(
data
,
TSDB_DATA_TYPE_NCHAR
))
{
(
*
numOfNull
)
+=
1
;
}
data
+=
varDataLen
(
data
);
data
+=
varData
T
Len
(
data
);
}
*
sum
=
0
;
...
...
@@ -315,7 +335,7 @@ static void getStatics_nchr(const TSKEY *primaryKey, const void *pData, int32_t
tDataTypeDescriptor
tDataTypeDesc
[
11
]
=
{
{
TSDB_DATA_TYPE_NULL
,
6
,
1
,
"NOTYPE"
,
NULL
,
NULL
,
NULL
},
{
TSDB_DATA_TYPE_BOOL
,
4
,
CHAR_BYTES
,
"BOOL"
,
tsCompressBool
,
tsDecompressBool
,
getStatics_
i8
},
{
TSDB_DATA_TYPE_BOOL
,
4
,
CHAR_BYTES
,
"BOOL"
,
tsCompressBool
,
tsDecompressBool
,
getStatics_
bool
},
{
TSDB_DATA_TYPE_TINYINT
,
7
,
CHAR_BYTES
,
"TINYINT"
,
tsCompressTinyint
,
tsDecompressTinyint
,
getStatics_i8
},
{
TSDB_DATA_TYPE_SMALLINT
,
8
,
SHORT_BYTES
,
"SMALLINT"
,
tsCompressSmallint
,
tsDecompressSmallint
,
getStatics_i16
},
{
TSDB_DATA_TYPE_INT
,
3
,
INT_BYTES
,
"INT"
,
tsCompressInt
,
tsDecompressInt
,
getStatics_i32
},
...
...
src/inc/taosdef.h
浏览文件 @
d076b7ce
...
...
@@ -294,9 +294,9 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size);
#define TSDB_MAX_COMP_LEVEL 2
#define TSDB_DEFAULT_COMP_LEVEL 2
#define TSDB_MIN_WAL_LEVEL
0
#define TSDB_MIN_WAL_LEVEL
1
#define TSDB_MAX_WAL_LEVEL 2
#define TSDB_DEFAULT_WAL_LEVEL
2
#define TSDB_DEFAULT_WAL_LEVEL
1
#define TSDB_MIN_REPLICA_NUM 1
#define TSDB_MAX_REPLICA_NUM 3
...
...
src/inc/taosmsg.h
浏览文件 @
d076b7ce
...
...
@@ -370,7 +370,7 @@ typedef struct SExprInfo {
struct
tExprNode
*
pExpr
;
int16_t
bytes
;
int16_t
type
;
int
16
_t
interBytes
;
int
32
_t
interBytes
;
}
SExprInfo
;
typedef
struct
SColumnFilterInfo
{
...
...
@@ -620,13 +620,6 @@ typedef struct {
SCMVgroupInfo
vgroups
[];
}
SVgroupsInfo
;
//typedef struct {
// int32_t numOfTables;
// int32_t join;
// int32_t joinCondLen; // for join condition
// int32_t metaElem[TSDB_MAX_JOIN_TABLE_NUM];
//} SSuperTableMetaMsg;
typedef
struct
STableMetaMsg
{
int32_t
contLen
;
char
tableId
[
TSDB_TABLE_ID_LEN
+
1
];
// table id
...
...
src/inc/tsdb.h
浏览文件 @
d076b7ce
...
...
@@ -200,6 +200,10 @@ TsdbQueryHandleT *tsdbQueryTables(TsdbRepoT *tsdb, STsdbQueryCond *pCond, STable
*/
TsdbQueryHandleT
tsdbQueryLastRow
(
TsdbRepoT
*
tsdb
,
STsdbQueryCond
*
pCond
,
STableGroupInfo
*
groupInfo
);
SArray
*
tsdbGetQueriedTableIdList
(
TsdbQueryHandleT
*
pHandle
);
TsdbQueryHandleT
tsdbQueryRowsInExternalWindow
(
TsdbRepoT
*
tsdb
,
STsdbQueryCond
*
pCond
,
STableGroupInfo
*
groupList
);
/**
* move to next block if exists
*
...
...
src/mnode/src/mnodeDb.c
浏览文件 @
d076b7ce
...
...
@@ -276,8 +276,8 @@ static int32_t mnodeCheckDbCfg(SDbCfg *pCfg) {
return
TSDB_CODE_INVALID_OPTION
;
}
if
(
pCfg
->
replications
>
1
&&
pCfg
->
walLevel
<=
TSDB_MIN_WAL_LEVEL
)
{
mError
(
"invalid db option walLevel:%d must
> 0, while replica:%d > 1"
,
pCfg
->
walLevel
,
pCfg
->
replications
);
if
(
pCfg
->
walLevel
<
TSDB_MIN_WAL_LEVEL
)
{
mError
(
"invalid db option walLevel:%d must
be greater than 0"
,
pCfg
->
walLevel
);
return
TSDB_CODE_INVALID_OPTION
;
}
...
...
@@ -871,8 +871,8 @@ static SDbCfg mnodeGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) {
mTrace
(
"db:%s, replications:%d change to %d"
,
pDb
->
name
,
pDb
->
cfg
.
replications
,
replications
);
newCfg
.
replications
=
replications
;
if
(
replications
>
1
&&
pDb
->
cfg
.
walLevel
<=
TSDB_MIN_WAL_LEVEL
)
{
mError
(
"db:%s, walLevel:%d must
> 0, while replica:%d > 1"
,
pDb
->
name
,
pDb
->
cfg
.
walLevel
,
replications
);
if
(
pDb
->
cfg
.
walLevel
<
TSDB_MIN_WAL_LEVEL
)
{
mError
(
"db:%s, walLevel:%d must
be greater than 0"
,
pDb
->
name
,
pDb
->
cfg
.
walLevel
);
terrno
=
TSDB_CODE_INVALID_OPTION
;
}
...
...
src/query/inc/qExecutor.h
浏览文件 @
d076b7ce
...
...
@@ -28,11 +28,6 @@
#include "tsdb.h"
#include "tsqlfunction.h"
//typedef struct tFilePage {
// int64_t num;
// char data[];
//} tFilePage;
struct
SColumnFilterElem
;
typedef
bool
(
*
__filter_func_t
)(
struct
SColumnFilterElem
*
pFilter
,
char
*
val1
,
char
*
val2
);
typedef
int32_t
(
*
__block_search_fn_t
)(
char
*
data
,
int32_t
num
,
int64_t
key
,
int32_t
order
);
...
...
@@ -62,25 +57,27 @@ typedef struct SWindowResult {
SWindowStatus
status
;
// this result status: closed or opened
}
SWindowResult
;
/**
* If the number of generated results is greater than this value,
* query query will be halt and return results to client immediate.
*/
typedef
struct
SResultRec
{
int64_t
total
;
// total generated result size in rows
int64_t
rows
;
// current result set size in rows
int64_t
capacity
;
// capacity of current result output buffer
// result size threshold in rows. If the result buffer is larger than this, pause query and return to client
int32_t
threshold
;
int32_t
threshold
;
// result size threshold in rows.
}
SResultRec
;
typedef
struct
SWindowResInfo
{
SWindowResult
*
pResult
;
// result list
void
*
hashList
;
// hash list for quick access
SHashObj
*
hashList
;
// hash list for quick access
int16_t
type
;
// data type for hash key
int32_t
capacity
;
// max capacity
int32_t
curIndex
;
// current start active index
int32_t
size
;
// number of result set
int64_t
startTime
;
// start time of the first time window for sliding query
int64_t
prevSKey
;
// previous (not completed) sliding window start key
int64_t
threshold
;
// threshold to
pausing query and return clos
ed results.
int64_t
threshold
;
// threshold to
halt query and return the generat
ed results.
}
SWindowResInfo
;
typedef
struct
SColumnFilterElem
{
...
...
@@ -90,15 +87,15 @@ typedef struct SColumnFilterElem {
}
SColumnFilterElem
;
typedef
struct
SSingleColumnFilterInfo
{
SColumnInfo
info
;
void
*
pData
;
int32_t
numOfFilters
;
SColumnInfo
info
;
SColumnFilterElem
*
pFilters
;
void
*
pData
;
}
SSingleColumnFilterInfo
;
typedef
struct
STableQueryInfo
{
// todo merge with the STableQueryInfo struct
int32_t
tableIndex
;
int32_t
groupI
dx
;
// group id in table list
int32_t
groupI
ndex
;
// group id in table list
TSKEY
lastKey
;
int32_t
numOfRes
;
int16_t
queryRangeSet
;
// denote if the query range is set, only available for interval query
...
...
@@ -110,8 +107,21 @@ typedef struct STableQueryInfo { // todo merge with the STableQueryInfo struct
SWindowResInfo
windowResInfo
;
}
STableQueryInfo
;
typedef
struct
SQueryCostSummary
{
}
SQueryCostSummary
;
typedef
struct
SQueryCostInfo
{
uint64_t
loadStatisTime
;
uint64_t
loadFileBlockTime
;
uint64_t
loadDataInCacheTime
;
uint64_t
loadStatisSize
;
uint64_t
loadFileBlockSize
;
uint64_t
loadDataInCacheSize
;
uint64_t
loadDataTime
;
uint64_t
dataInRows
;
uint64_t
checkRows
;
uint32_t
dataBlocks
;
uint32_t
loadBlockStatis
;
uint32_t
discardBlocks
;
}
SQueryCostInfo
;
typedef
struct
SGroupItem
{
STableId
id
;
...
...
@@ -121,7 +131,6 @@ typedef struct SGroupItem {
typedef
struct
SQuery
{
int16_t
numOfCols
;
int16_t
numOfTags
;
SOrderVal
order
;
STimeWindow
window
;
int64_t
intervalTime
;
...
...
@@ -144,6 +153,7 @@ typedef struct SQuery {
int32_t
pos
;
tFilePage
**
sdata
;
STableQueryInfo
*
current
;
SSingleColumnFilterInfo
*
pFilterInfo
;
}
SQuery
;
...
...
@@ -158,7 +168,7 @@ typedef struct SQueryRuntimeEnv {
SWindowResInfo
windowResInfo
;
STSBuf
*
pTSBuf
;
STSCursor
cur
;
SQueryCost
Summary
summary
;
SQueryCost
Info
summary
;
bool
stableQuery
;
// super table query or not
void
*
pQueryHandle
;
void
*
pSecQueryHandle
;
// another thread for
...
...
src/query/inc/qextbuffer.h
浏览文件 @
d076b7ce
...
...
@@ -28,8 +28,7 @@ extern "C" {
#include "tdataformat.h"
#include "talgo.h"
#define DEFAULT_PAGE_SIZE 16384 // 16k larger than the SHistoInfo
#define MIN_BUFFER_SIZE (1 << 19)
#define DEFAULT_PAGE_SIZE (1024L*56) // 16k larger than the SHistoInfo
#define MAX_TMPFILE_PATH_LENGTH PATH_MAX
#define INITIAL_ALLOCATION_BUFFER_SIZE 64
...
...
src/query/inc/qfill.h
浏览文件 @
d076b7ce
...
...
@@ -45,12 +45,13 @@ typedef struct SFillInfo {
int32_t
numOfCols
;
// number of columns, including the tags columns
int32_t
rowSize
;
// size of each row
char
**
pTags
;
// tags value for current interpolation
int64_t
slidingTime
;
// sliding value to determine the number of result for a given time window
char
*
prevValues
;
// previous row of data, to generate the interpolation results
char
*
nextValues
;
// next row of data
SFillColInfo
*
pFillCol
;
// column info for fill operations
char
**
pData
;
// original result data block involved in filling data
int32_t
capacityInRows
;
// data buffer size in rows
SFillColInfo
*
pFillCol
;
// column info for fill operations
}
SFillInfo
;
typedef
struct
SPoint
{
...
...
src/query/inc/qresultBuf.h
浏览文件 @
d076b7ce
...
...
@@ -44,6 +44,8 @@ typedef struct SDiskbasedResultBuf {
SIDList
*
list
;
// for each id, there is a page id list
}
SDiskbasedResultBuf
;
#define DEFAULT_INTERN_BUF_PAGE_SIZE (8192L*5)
/**
* create disk-based result buffer
* @param pResultBuf
...
...
src/query/inc/tsqlfunction.h
浏览文件 @
d076b7ce
...
...
@@ -164,8 +164,6 @@ typedef struct SQLFunctionCtx {
int32_t
startOffset
;
int32_t
size
;
// number of rows
uint32_t
order
;
// asc|desc
uint32_t
scanFlag
;
// TODO merge with currentStage
int16_t
inputType
;
int16_t
inputBytes
;
...
...
@@ -179,7 +177,7 @@ typedef struct SQLFunctionCtx {
int64_t
nStartQueryTimestamp
;
// timestamp range of current query when function is executed on a specific data block
int32_t
numOfParams
;
tVariant
param
[
4
];
// input parameter, e.g., top(k, 20), the number of results for top query is kept in param */
int64_t
*
ptsList
;
// corresponding timestamp array list
int64_t
*
ptsList
;
// corresponding timestamp array list
void
*
ptsOutputBuf
;
// corresponding output buffer for timestamp of each result, e.g., top/bottom*/
SQLPreAggVal
preAggVals
;
tVariant
tag
;
...
...
@@ -219,7 +217,7 @@ typedef struct SQLAggFuncElem {
#define GET_RES_INFO(ctx) ((ctx)->resultInfo)
int32_t
getResultDataInfo
(
int32_t
dataType
,
int32_t
dataBytes
,
int32_t
functionId
,
int32_t
param
,
int16_t
*
type
,
int16_t
*
len
,
int
16
_t
*
interBytes
,
int16_t
extLength
,
bool
isSuperTable
);
int16_t
*
len
,
int
32
_t
*
interBytes
,
int16_t
extLength
,
bool
isSuperTable
);
#define IS_STREAM_QUERY_VALID(x) (((x)&TSDB_FUNCSTATE_STREAM) != 0)
#define IS_MULTIOUTPUT(x) (((x)&TSDB_FUNCSTATE_MO) != 0)
...
...
@@ -239,7 +237,7 @@ enum {
/* determine the real data need to calculated the result */
enum
{
BLK_DATA_NO_NEEDED
=
0x0
,
BLK_DATA_
FILED
S_NEEDED
=
0x1
,
BLK_DATA_
STATI
S_NEEDED
=
0x1
,
BLK_DATA_ALL_NEEDED
=
0x3
,
};
...
...
@@ -269,9 +267,6 @@ extern struct SQLAggFuncElem aAggs[];
/* compatible check array list */
extern
int32_t
funcCompatDefList
[];
void
getStatistics
(
char
*
priData
,
char
*
data
,
int32_t
size
,
int32_t
numOfRow
,
int32_t
type
,
int64_t
*
min
,
int64_t
*
max
,
int64_t
*
sum
,
int16_t
*
minIndex
,
int16_t
*
maxIndex
,
int32_t
*
numOfNull
);
bool
top_bot_datablock_filter
(
SQLFunctionCtx
*
pCtx
,
int32_t
functionId
,
char
*
minval
,
char
*
maxval
);
bool
stableQueryFunctChanged
(
int32_t
funcId
);
...
...
src/query/inc/tvariant.h
浏览文件 @
d076b7ce
...
...
@@ -48,7 +48,7 @@ void tVariantAssign(tVariant *pDst, const tVariant *pSrc);
int32_t
tVariantToString
(
tVariant
*
pVar
,
char
*
dst
);
int32_t
tVariantDump
(
tVariant
*
pVariant
,
char
*
payload
,
char
type
);
int32_t
tVariantDump
(
tVariant
*
pVariant
,
char
*
payload
,
int16_t
type
,
bool
includeLengthPrefix
);
int32_t
tVariantTypeSetType
(
tVariant
*
pVariant
,
char
type
);
...
...
src/query/src/qExecutor.c
浏览文件 @
d076b7ce
...
...
@@ -12,7 +12,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include
<qfill.h>
#include
"qfill.h"
#include "os.h"
#include "hash.h"
...
...
@@ -30,8 +30,6 @@
#include "tscompression.h"
#include "ttime.h"
#define DEFAULT_INTERN_BUF_SIZE 16384L
/**
* check if the primary column is load by default, otherwise, the program will
* forced to load primary column explicitly.
...
...
@@ -55,13 +53,7 @@
((query)->colList[(query)->pSelectExpr[colidx].base.colInfo.colIndex].bytes)
#define GET_COLUMN_TYPE(query, colidx) ((query)->colList[(query)->pSelectExpr[colidx].base.colInfo.colIndex].type)
typedef
struct
SPointInterpoSupporter
{
int32_t
numOfCols
;
SArray
*
prev
;
SArray
*
next
;
}
SPointInterpoSupporter
;
typedef
enum
{
enum
{
// when query starts to execute, this status will set
QUERY_NOT_COMPLETED
=
0x1u
,
...
...
@@ -80,7 +72,7 @@ typedef enum {
* usually used in case of interval query with interpolation option
*/
QUERY_OVER
=
0x8u
,
}
vnodeQueryStatus
;
};
enum
{
TS_JOIN_TS_EQUAL
=
0
,
...
...
@@ -110,8 +102,9 @@ static void resetMergeResultBuf(SQuery *pQuery, SQLFunctionCtx *pCtx, SResultInf
static
bool
functionNeedToExecute
(
SQueryRuntimeEnv
*
pRuntimeEnv
,
SQLFunctionCtx
*
pCtx
,
int32_t
functionId
);
static
void
getNextTimeWindow
(
SQuery
*
pQuery
,
STimeWindow
*
pTimeWindow
);
static
void
setExecParams
(
SQuery
*
pQuery
,
SQLFunctionCtx
*
pCtx
,
void
*
pData
,
TSKEY
*
tsCol
,
SDataBlockInfo
*
pBlockInfo
,
int32_t
functionId
,
SDataStatis
*
pStatis
,
bool
hasNull
,
void
*
param
,
int32_t
scanFlag
);
static
void
setExecParams
(
SQuery
*
pQuery
,
SQLFunctionCtx
*
pCtx
,
void
*
inputData
,
TSKEY
*
tsCol
,
SDataBlockInfo
*
pBlockInfo
,
SDataStatis
*
pStatis
,
void
*
param
,
int32_t
colIndex
);
static
void
initCtxOutputBuf
(
SQueryRuntimeEnv
*
pRuntimeEnv
);
static
void
destroyTableQueryInfo
(
STableQueryInfo
*
pTableQueryInfo
,
int32_t
numOfCols
);
static
void
resetCtxOutputBuf
(
SQueryRuntimeEnv
*
pRuntimeEnv
);
...
...
@@ -121,111 +114,6 @@ static void buildTagQueryResult(SQInfo *pQInfo);
static
int32_t
setAdditionalInfo
(
SQInfo
*
pQInfo
,
STableId
*
pTableId
,
STableQueryInfo
*
pTableQueryInfo
);
static
int32_t
flushFromResultBuf
(
SQInfo
*
pQInfo
);
bool
getNeighborPoints
(
SQInfo
*
pQInfo
,
void
*
pMeterObj
,
SPointInterpoSupporter
*
pPointInterpSupporter
)
{
#if 0
SQueryRuntimeEnv *pRuntimeEnv = &pSupporter->runtimeEnv;
SQuery * pQuery = pRuntimeEnv->pQuery;
if (!isPointInterpoQuery(pQuery)) {
return false;
}
/*
* for interpolate point query, points that are directly before/after the specified point are required
*/
if (isFirstLastRowQuery(pQuery)) {
assert(!QUERY_IS_ASC_QUERY(pQuery));
} else {
assert(QUERY_IS_ASC_QUERY(pQuery));
}
assert(pPointInterpSupporter != NULL && pQuery->skey == pQuery->ekey);
SCacheBlock *pBlock = NULL;
qTrace("QInfo:%p get next data point, fileId:%d, slot:%d, pos:%d", GET_QINFO_ADDR(pQuery), pQuery->fileId,
pQuery->slot, pQuery->pos);
// save the point that is directly after or equals to the specified point
getOneRowFromDataBlock(pRuntimeEnv, pPointInterpSupporter->pNextPoint, pQuery->pos);
/*
* 1. for last_row query, return immediately.
* 2. the specified timestamp equals to the required key, interpolation according to neighbor points is not necessary
* for interp query.
*/
TSKEY actualKey = *(TSKEY *)pPointInterpSupporter->pNextPoint[0];
if (isFirstLastRowQuery(pQuery) || actualKey == pQuery->skey) {
setQueryStatus(pQuery, QUERY_NOT_COMPLETED);
/*
* the retrieved ts may not equals to pMeterObj->lastKey due to cache re-allocation
* set the pQuery->ekey/pQuery->skey/pQuery->lastKey to be the new value.
*/
if (pQuery->ekey != actualKey) {
pQuery->skey = actualKey;
pQuery->ekey = actualKey;
pQuery->lastKey = actualKey;
pSupporter->rawSKey = actualKey;
pSupporter->rawEKey = actualKey;
}
return true;
}
/* the qualified point is not the first point in data block */
if (pQuery->pos > 0) {
int32_t prevPos = pQuery->pos - 1;
/* save the point that is directly after the specified point */
getOneRowFromDataBlock(pRuntimeEnv, pPointInterpSupporter->pPrevPoint, prevPos);
} else {
__block_search_fn_t searchFn = vnodeSearchKeyFunc[pMeterObj->searchAlgorithm];
// savePointPosition(&pRuntimeEnv->startPos, pQuery->fileId, pQuery->slot, pQuery->pos);
// backwards movement would not set the pQuery->pos correct. We need to set it manually later.
moveToNextBlock(pRuntimeEnv, QUERY_DESC_FORWARD_STEP, searchFn, true);
/*
* no previous data exists.
* reset the status and load the data block that contains the qualified point
*/
if (Q_STATUS_EQUAL(pQuery->over, QUERY_NO_DATA_TO_CHECK)) {
qTrace("QInfo:%p no previous data block, start fileId:%d, slot:%d, pos:%d, qrange:%" PRId64 "-%" PRId64
", out of range",
GET_QINFO_ADDR(pQuery), pRuntimeEnv->startPos.fileId, pRuntimeEnv->startPos.slot,
pRuntimeEnv->startPos.pos, pQuery->skey, pQuery->ekey);
// no result, return immediately
setQueryStatus(pQuery, QUERY_COMPLETED);
return false;
} else { // prev has been located
if (pQuery->fileId >= 0) {
pQuery->pos = pQuery->pBlock[pQuery->slot].numOfRows - 1;
getOneRowFromDataBlock(pRuntimeEnv, pPointInterpSupporter->pPrevPoint, pQuery->pos);
qTrace("QInfo:%p get prev data point, fileId:%d, slot:%d, pos:%d, pQuery->pos:%d", GET_QINFO_ADDR(pQuery),
pQuery->fileId, pQuery->slot, pQuery->pos, pQuery->pos);
} else {
// moveToNextBlock make sure there is a available cache block, if exists
assert(vnodeIsDatablockLoaded(pRuntimeEnv, pMeterObj, -1, true) == DISK_BLOCK_NO_NEED_TO_LOAD);
pBlock = &pRuntimeEnv->cacheBlock;
pQuery->pos = pBlock->numOfRows - 1;
getOneRowFromDataBlock(pRuntimeEnv, pPointInterpSupporter->pPrevPoint, pQuery->pos);
qTrace("QInfo:%p get prev data point, fileId:%d, slot:%d, pos:%d, pQuery->pos:%d", GET_QINFO_ADDR(pQuery),
pQuery->fileId, pQuery->slot, pBlock->numOfRows - 1, pQuery->pos);
}
}
}
pQuery->skey = *(TSKEY *)pPointInterpSupporter->pPrevPoint[0];
pQuery->ekey = *(TSKEY *)pPointInterpSupporter->pNextPoint[0];
pQuery->lastKey = pQuery->skey;
#endif
return
true
;
}
bool
doFilterData
(
SQuery
*
pQuery
,
int32_t
elemPos
)
{
for
(
int32_t
k
=
0
;
k
<
pQuery
->
numOfFilterCols
;
++
k
)
{
SSingleColumnFilterInfo
*
pFilterInfo
=
&
pQuery
->
pFilterInfo
[
k
];
...
...
@@ -931,7 +819,7 @@ static char *getDataBlock(SQueryRuntimeEnv *pRuntimeEnv, SArithmeticSupport *sas
*
* @param pRuntimeEnv
* @param forwardStep
* @param
primaryKeyCol
* @param
tsCols
* @param pFields
* @param isDiskFileBlock
* @return the incremental number of output value, so it maybe 0 for fixed number of query,
...
...
@@ -941,35 +829,25 @@ static void blockwiseApplyFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStatis *
SDataBlockInfo
*
pDataBlockInfo
,
SWindowResInfo
*
pWindowResInfo
,
__block_search_fn_t
searchFn
,
SArray
*
pDataBlock
)
{
SQLFunctionCtx
*
pCtx
=
pRuntimeEnv
->
pCtx
;
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
SColumnInfoData
*
pColInfo
=
NULL
;
TSKEY
*
primaryKeyCol
=
NULL
;
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
TSKEY
*
tsCols
=
NULL
;
if
(
pDataBlock
!=
NULL
)
{
pColInfo
=
taosArrayGet
(
pDataBlock
,
0
);
primaryKeyCol
=
(
TSKEY
*
)(
pColInfo
->
pData
);
SColumnInfoData
*
pColInfo
=
taosArrayGet
(
pDataBlock
,
0
);
tsCols
=
(
TSKEY
*
)(
pColInfo
->
pData
);
}
SArithmeticSupport
*
sasArray
=
calloc
((
size_t
)
pQuery
->
numOfOutput
,
sizeof
(
SArithmeticSupport
));
for
(
int32_t
k
=
0
;
k
<
pQuery
->
numOfOutput
;
++
k
)
{
int32_t
functionId
=
pQuery
->
pSelectExpr
[
k
].
base
.
functionId
;
int32_t
colId
=
pQuery
->
pSelectExpr
[
k
].
base
.
colInfo
.
colId
;
SDataStatis
*
tpField
=
NULL
;
bool
hasNull
=
hasNullValue
(
pQuery
,
k
,
pDataBlockInfo
->
numOfCols
,
pStatis
,
&
tpField
);
char
*
dataBlock
=
getDataBlock
(
pRuntimeEnv
,
&
sasArray
[
k
],
k
,
pDataBlockInfo
->
rows
,
pDataBlock
);
setExecParams
(
pQuery
,
&
pCtx
[
k
],
dataBlock
,
primaryKeyCol
,
pDataBlockInfo
,
functionId
,
tpField
,
hasNull
,
&
sasArray
[
k
],
colId
);
setExecParams
(
pQuery
,
&
pCtx
[
k
],
dataBlock
,
tsCols
,
pDataBlockInfo
,
pStatis
,
&
sasArray
[
k
],
k
);
}
int32_t
step
=
GET_FORWARD_DIRECTION_FACTOR
(
pQuery
->
order
.
order
);
if
(
isIntervalQuery
(
pQuery
))
{
int32_t
offset
=
GET_COL_DATA_POS
(
pQuery
,
0
,
step
);
TSKEY
ts
=
primaryKeyCol
[
offset
];
TSKEY
ts
=
tsCols
[
offset
];
STimeWindow
win
=
getActiveTimeWindow
(
pWindowResInfo
,
ts
,
pQuery
);
if
(
setWindowOutputBufByKey
(
pRuntimeEnv
,
pWindowResInfo
,
pDataBlockInfo
->
tid
,
&
win
)
!=
TSDB_CODE_SUCCESS
)
{
...
...
@@ -978,16 +856,16 @@ static void blockwiseApplyFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStatis *
TSKEY
ekey
=
reviseWindowEkey
(
pQuery
,
&
win
);
int32_t
forwardStep
=
getNumOfRowsInTimeWindow
(
pQuery
,
pDataBlockInfo
,
primaryKeyCol
,
pQuery
->
pos
,
ekey
,
searchFn
,
true
);
getNumOfRowsInTimeWindow
(
pQuery
,
pDataBlockInfo
,
tsCols
,
pQuery
->
pos
,
ekey
,
searchFn
,
true
);
SWindowStatus
*
pStatus
=
getTimeWindowResStatus
(
pWindowResInfo
,
curTimeWindow
(
pWindowResInfo
));
doBlockwiseApplyFunctions
(
pRuntimeEnv
,
pStatus
,
&
win
,
pQuery
->
pos
,
forwardStep
,
primaryKeyCol
,
pDataBlockInfo
->
rows
);
doBlockwiseApplyFunctions
(
pRuntimeEnv
,
pStatus
,
&
win
,
pQuery
->
pos
,
forwardStep
,
tsCols
,
pDataBlockInfo
->
rows
);
int32_t
index
=
pWindowResInfo
->
curIndex
;
STimeWindow
nextWin
=
win
;
while
(
1
)
{
int32_t
startPos
=
getNextQualifiedWindow
(
pRuntimeEnv
,
&
nextWin
,
pDataBlockInfo
,
primaryKeyCol
,
searchFn
);
int32_t
startPos
=
getNextQualifiedWindow
(
pRuntimeEnv
,
&
nextWin
,
pDataBlockInfo
,
tsCols
,
searchFn
);
if
(
startPos
<
0
)
{
break
;
}
...
...
@@ -998,10 +876,10 @@ static void blockwiseApplyFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStatis *
}
ekey
=
reviseWindowEkey
(
pQuery
,
&
nextWin
);
forwardStep
=
getNumOfRowsInTimeWindow
(
pQuery
,
pDataBlockInfo
,
primaryKeyCol
,
startPos
,
ekey
,
searchFn
,
true
);
forwardStep
=
getNumOfRowsInTimeWindow
(
pQuery
,
pDataBlockInfo
,
tsCols
,
startPos
,
ekey
,
searchFn
,
true
);
pStatus
=
getTimeWindowResStatus
(
pWindowResInfo
,
curTimeWindow
(
pWindowResInfo
));
doBlockwiseApplyFunctions
(
pRuntimeEnv
,
pStatus
,
&
nextWin
,
startPos
,
forwardStep
,
primaryKeyCol
,
pDataBlockInfo
->
rows
);
doBlockwiseApplyFunctions
(
pRuntimeEnv
,
pStatus
,
&
nextWin
,
startPos
,
forwardStep
,
tsCols
,
pDataBlockInfo
->
rows
);
}
pWindowResInfo
->
curIndex
=
index
;
...
...
@@ -1163,7 +1041,7 @@ static void rowwiseApplyFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStatis *pS
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
STableQueryInfo
*
item
=
pQuery
->
current
;
TSKEY
*
primaryKeyCol
=
(
TSKEY
*
)
((
SColumnInfoData
*
)
taosArrayGet
(
pDataBlock
,
0
))
->
pData
;
TSKEY
*
tsCols
=
(
TSKEY
*
)
((
SColumnInfoData
*
)
taosArrayGet
(
pDataBlock
,
0
))
->
pData
;
bool
groupbyStateValue
=
isGroupbyNormalCol
(
pQuery
->
pGroupbyExpr
);
SArithmeticSupport
*
sasArray
=
calloc
((
size_t
)
pQuery
->
numOfOutput
,
sizeof
(
SArithmeticSupport
));
...
...
@@ -1176,16 +1054,8 @@ static void rowwiseApplyFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStatis *pS
}
for
(
int32_t
k
=
0
;
k
<
pQuery
->
numOfOutput
;
++
k
)
{
int32_t
functionId
=
pQuery
->
pSelectExpr
[
k
].
base
.
functionId
;
int32_t
colId
=
pQuery
->
pSelectExpr
[
k
].
base
.
colInfo
.
colId
;
SDataStatis
*
pColStatis
=
NULL
;
bool
hasNull
=
hasNullValue
(
pQuery
,
k
,
pDataBlockInfo
->
numOfCols
,
pStatis
,
&
pColStatis
);
char
*
dataBlock
=
getDataBlock
(
pRuntimeEnv
,
&
sasArray
[
k
],
k
,
pDataBlockInfo
->
rows
,
pDataBlock
);
setExecParams
(
pQuery
,
&
pCtx
[
k
],
dataBlock
,
primaryKeyCol
,
pDataBlockInfo
,
functionId
,
pColStatis
,
hasNull
,
&
sasArray
[
k
],
colId
);
setExecParams
(
pQuery
,
&
pCtx
[
k
],
dataBlock
,
tsCols
,
pDataBlockInfo
,
pStatis
,
&
sasArray
[
k
],
k
);
}
// set the input column data
...
...
@@ -1229,7 +1099,7 @@ static void rowwiseApplyFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStatis *pS
// interval window query
if
(
isIntervalQuery
(
pQuery
))
{
// decide the time window according to the primary timestamp
int64_t
ts
=
primaryKeyCol
[
offset
];
int64_t
ts
=
tsCols
[
offset
];
STimeWindow
win
=
getActiveTimeWindow
(
pWindowResInfo
,
ts
,
pQuery
);
int32_t
ret
=
setWindowOutputBufByKey
(
pRuntimeEnv
,
pWindowResInfo
,
pDataBlockInfo
->
tid
,
&
win
);
...
...
@@ -1237,9 +1107,6 @@ static void rowwiseApplyFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStatis *pS
continue
;
}
// all startOffset are identical
// offset -= pCtx[0].startOffset;
SWindowStatus
*
pStatus
=
getTimeWindowResStatus
(
pWindowResInfo
,
curTimeWindow
(
pWindowResInfo
));
doRowwiseApplyFunctions
(
pRuntimeEnv
,
pStatus
,
&
win
,
offset
);
...
...
@@ -1296,7 +1163,7 @@ static void rowwiseApplyFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStatis *pS
}
}
item
->
lastKey
=
primaryKeyCol
[
offset
]
+
step
;
item
->
lastKey
=
tsCols
[
offset
]
+
step
;
// todo refactor: extract method
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
...
...
@@ -1354,16 +1221,19 @@ static int32_t tableApplyFunctionsOnBlock(SQueryRuntimeEnv *pRuntimeEnv, SDataBl
}
void
setExecParams
(
SQuery
*
pQuery
,
SQLFunctionCtx
*
pCtx
,
void
*
inputData
,
TSKEY
*
tsCol
,
SDataBlockInfo
*
pBlockInfo
,
int32_t
functionId
,
SDataStatis
*
pStatis
,
bool
hasNull
,
void
*
param
,
int32_t
colId
)
{
pCtx
->
hasNull
=
hasNull
;
SDataStatis
*
pStatis
,
void
*
param
,
int32_t
colIndex
)
{
int32_t
functionId
=
pQuery
->
pSelectExpr
[
colIndex
].
base
.
functionId
;
int32_t
colId
=
pQuery
->
pSelectExpr
[
colIndex
].
base
.
colInfo
.
colId
;
SDataStatis
*
tpField
=
NULL
;
pCtx
->
hasNull
=
hasNullValue
(
pQuery
,
colIndex
,
pBlockInfo
->
numOfCols
,
pStatis
,
&
tpField
);
pCtx
->
aInputElemBuf
=
inputData
;
if
(
pStatis
!=
NULL
)
{
if
(
tpField
!=
NULL
)
{
pCtx
->
preAggVals
.
isSet
=
true
;
pCtx
->
preAggVals
.
statis
=
*
pStatis
;
if
(
pCtx
->
preAggVals
.
statis
.
numOfNull
==
-
1
)
{
pCtx
->
preAggVals
.
statis
.
numOfNull
=
pBlockInfo
->
rows
;
// todo :can not be -1
}
pCtx
->
preAggVals
.
statis
=
*
tpField
;
assert
(
pCtx
->
preAggVals
.
statis
.
numOfNull
<=
pBlockInfo
->
rows
);
}
else
{
pCtx
->
preAggVals
.
isSet
=
false
;
}
...
...
@@ -1404,6 +1274,19 @@ void setExecParams(SQuery *pQuery, SQLFunctionCtx *pCtx, void* inputData, TSKEY
pCtx
->
preAggVals
.
statis
.
min
=
pBlockInfo
->
window
.
skey
;
pCtx
->
preAggVals
.
statis
.
max
=
pBlockInfo
->
window
.
ekey
;
}
}
else
if
(
functionId
==
TSDB_FUNC_INTERP
)
{
SInterpInfoDetail
*
pInterpInfo
=
GET_RES_INFO
(
pCtx
)
->
interResultBuf
;
pInterpInfo
->
type
=
pQuery
->
fillType
;
pInterpInfo
->
ts
=
pQuery
->
window
.
skey
;
pInterpInfo
->
primaryCol
=
(
colId
==
PRIMARYKEY_TIMESTAMP_COL_INDEX
);
if
(
pQuery
->
fillVal
!=
NULL
)
{
if
(
isNull
((
const
char
*
)
&
pQuery
->
fillVal
[
colIndex
],
pCtx
->
inputType
))
{
pCtx
->
param
[
1
].
nType
=
TSDB_DATA_TYPE_NULL
;
}
else
{
// todo refactor, tVariantCreateFromBinary should handle the NULL value
tVariantCreateFromBinary
(
&
pCtx
->
param
[
1
],
(
char
*
)
&
pQuery
->
fillVal
[
colIndex
],
pCtx
->
inputBytes
,
pCtx
->
inputType
);
}
}
}
#if defined(_DEBUG_VIEW)
...
...
@@ -1426,13 +1309,14 @@ void setExecParams(SQuery *pQuery, SQLFunctionCtx *pCtx, void* inputData, TSKEY
static
void
setCtxTagColumnInfo
(
SQuery
*
pQuery
,
SQLFunctionCtx
*
pCtx
)
{
if
(
isSelectivityWithTagsQuery
(
pQuery
))
{
int32_t
num
=
0
;
SQLFunctionCtx
*
p
=
NULL
;
int16_t
tagLen
=
0
;
SQLFunctionCtx
*
p
=
NULL
;
SQLFunctionCtx
**
pTagCtx
=
calloc
(
pQuery
->
numOfOutput
,
POINTER_BYTES
);
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
SSqlFuncMsg
*
pSqlFuncMsg
=
&
pQuery
->
pSelectExpr
[
i
].
base
;
if
(
pSqlFuncMsg
->
functionId
==
TSDB_FUNC_TAG_DUMMY
||
pSqlFuncMsg
->
functionId
==
TSDB_FUNC_TS_DUMMY
)
{
tagLen
+=
pCtx
[
i
].
outputBytes
;
pTagCtx
[
num
++
]
=
&
pCtx
[
i
];
...
...
@@ -1455,6 +1339,8 @@ static void setCtxTagColumnInfo(SQuery *pQuery, SQLFunctionCtx *pCtx) {
static
void
setWindowResultInfo
(
SResultInfo
*
pResultInfo
,
SQuery
*
pQuery
,
bool
isStableQuery
)
{
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
assert
(
pQuery
->
pSelectExpr
[
i
].
interBytes
<=
DEFAULT_INTERN_BUF_PAGE_SIZE
);
setResultInfoBuf
(
&
pResultInfo
[
i
],
pQuery
->
pSelectExpr
[
i
].
interBytes
,
isStableQuery
);
}
}
...
...
@@ -1486,11 +1372,13 @@ static int32_t setupQueryRuntimeEnv(SQueryRuntimeEnv *pRuntimeEnv, int16_t order
pCtx
->
inputBytes
=
pQuery
->
tagColList
[
index
].
bytes
;
pCtx
->
inputType
=
pQuery
->
tagColList
[
index
].
type
;
}
}
else
{
pCtx
->
inputBytes
=
pQuery
->
colList
[
index
].
bytes
;
pCtx
->
inputType
=
pQuery
->
colList
[
index
].
type
;
}
assert
(
isValidDataType
(
pCtx
->
inputType
,
pCtx
->
inputBytes
));
pCtx
->
ptsOutputBuf
=
NULL
;
pCtx
->
outputBytes
=
pQuery
->
pSelectExpr
[
i
].
bytes
;
...
...
@@ -1635,10 +1523,11 @@ static bool isFixedOutputQuery(SQuery *pQuery) {
return
false
;
}
// todo refactor with isLastRowQuery
static
bool
isPointInterpoQuery
(
SQuery
*
pQuery
)
{
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
int32_t
functionID
=
pQuery
->
pSelectExpr
[
i
].
base
.
functionId
;
if
(
functionID
==
TSDB_FUNC_INTERP
||
functionID
==
TSDB_FUNC_LAST_ROW
)
{
if
(
functionID
==
TSDB_FUNC_INTERP
)
{
return
true
;
}
}
...
...
@@ -1743,54 +1632,6 @@ void getAlignQueryTimeWindow(SQuery *pQuery, int64_t key, int64_t keyFirst, int6
}
}
static
UNUSED_FUNC
bool
doGetQueryPos
(
TSKEY
key
,
SQInfo
*
pQInfo
,
SPointInterpoSupporter
*
pPointInterpSupporter
)
{
#if 0
SQueryRuntimeEnv *pRuntimeEnv = &pQInfo->runtimeEnv;
SQuery * pQuery = pRuntimeEnv->pQuery;
SMeterObj * pMeterObj = pRuntimeEnv->pTabObj;
/* key in query range. If not, no qualified in disk file */
if (key != -1 && key <= pQuery->window.ekey) {
if (isPointInterpoQuery(pQuery)) { /* no qualified data in this query range */
return getNeighborPoints(pQInfo, pMeterObj, pPointInterpSupporter);
} else {
return true;
}
} else { // key > pQuery->window.ekey, abort for normal query, continue for interp query
if (isPointInterpoQuery(pQuery)) {
return getNeighborPoints(pQInfo, pMeterObj, pPointInterpSupporter);
} else {
return false;
}
}
#endif
return
true
;
}
static
UNUSED_FUNC
bool
doSetDataInfo
(
SQInfo
*
pQInfo
,
SPointInterpoSupporter
*
pPointInterpSupporter
,
void
*
pMeterObj
,
TSKEY
nextKey
)
{
SQueryRuntimeEnv
*
pRuntimeEnv
=
&
pQInfo
->
runtimeEnv
;
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
if
(
isFirstLastRowQuery
(
pQuery
))
{
/*
* if the pQuery->window.skey != pQuery->window.ekey for last_row query,
* the query range is existed, so set them both the value of nextKey
*/
if
(
pQuery
->
window
.
skey
!=
pQuery
->
window
.
ekey
)
{
assert
(
pQuery
->
window
.
skey
>=
pQuery
->
window
.
ekey
&&
!
QUERY_IS_ASC_QUERY
(
pQuery
)
&&
nextKey
>=
pQuery
->
window
.
ekey
&&
nextKey
<=
pQuery
->
window
.
skey
);
pQuery
->
window
.
skey
=
nextKey
;
pQuery
->
window
.
ekey
=
nextKey
;
}
return
getNeighborPoints
(
pQInfo
,
pMeterObj
,
pPointInterpSupporter
);
}
else
{
return
true
;
}
}
static
void
setScanLimitationByResultBuffer
(
SQuery
*
pQuery
)
{
if
(
isTopBottomQuery
(
pQuery
))
{
pQuery
->
checkBuffer
=
0
;
...
...
@@ -1817,7 +1658,7 @@ static void setScanLimitationByResultBuffer(SQuery *pQuery) {
/*
* todo add more parameters to check soon..
*/
bool
vnodeParametersSafety
Check
(
SQuery
*
pQuery
)
{
bool
colId
Check
(
SQuery
*
pQuery
)
{
// load data column information is incorrect
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfCols
-
1
;
++
i
)
{
if
(
pQuery
->
colList
[
i
].
colId
==
pQuery
->
colList
[
i
+
1
].
colId
)
{
...
...
@@ -1825,6 +1666,7 @@ bool vnodeParametersSafetyCheck(SQuery *pQuery) {
return
false
;
}
}
return
true
;
}
...
...
@@ -1851,7 +1693,7 @@ static bool onlyFirstQuery(SQuery *pQuery) { return onlyOneQueryType(pQuery, TSD
static
bool
onlyLastQuery
(
SQuery
*
pQuery
)
{
return
onlyOneQueryType
(
pQuery
,
TSDB_FUNC_LAST
,
TSDB_FUNC_LAST_DST
);
}
static
void
changeExecuteScanOrder
(
SQuery
*
pQuery
,
bool
metric
Query
)
{
static
void
changeExecuteScanOrder
(
SQuery
*
pQuery
,
bool
stable
Query
)
{
// in case of point-interpolation query, use asc order scan
char
msg
[]
=
"QInfo:%p scan order changed for %s query, old:%d, new:%d, qrange exchanged, old qrange:%"
PRId64
"-%"
PRId64
", new qrange:%"
PRId64
"-%"
PRId64
;
...
...
@@ -1906,7 +1748,7 @@ static void changeExecuteScanOrder(SQuery *pQuery, bool metricQuery) {
}
}
else
{
// interval query
if
(
metric
Query
)
{
if
(
stable
Query
)
{
if
(
onlyFirstQuery
(
pQuery
))
{
if
(
!
QUERY_IS_ASC_QUERY
(
pQuery
))
{
qTrace
(
msg
,
GET_QINFO_ADDR
(
pQuery
),
"only-first stable"
,
pQuery
->
order
.
order
,
TSDB_ORDER_ASC
,
...
...
@@ -1985,159 +1827,6 @@ static UNUSED_FUNC void doSetInterpVal(SQLFunctionCtx *pCtx, TSKEY ts, int16_t t
pCtx
->
param
[
index
].
nLen
=
len
;
}
/**
* param[1]: default value/previous value of specified timestamp
* param[2]: next value of specified timestamp
* param[3]: denotes if the result is a precious result or interpolation results
*
* @param pQInfo
* @param pQInfo
* @param pInterpoRaw
*/
void
pointInterpSupporterSetData
(
SQInfo
*
pQInfo
,
SPointInterpoSupporter
*
pPointInterpSupport
)
{
#if 0
SQueryRuntimeEnv *pRuntimeEnv = &pQInfo->runtimeEnv;
SQuery * pQuery = pRuntimeEnv->pQuery;
// not point interpolation query, abort
if (!isPointInterpoQuery(pQuery)) {
return;
}
int32_t count = 1;
TSKEY key = *(TSKEY *)pPointInterpSupport->next[0];
if (key == pQuery->window.skey) {
// the queried timestamp has value, return it directly without interpolation
for (int32_t i = 0; i < pQuery->numOfOutput; ++i) {
tVariantCreateFromBinary(&pRuntimeEnv->pCtx[i].param[3], (char *)&count, sizeof(count), TSDB_DATA_TYPE_INT);
pRuntimeEnv->pCtx[i].param[0].i64Key = key;
pRuntimeEnv->pCtx[i].param[0].nType = TSDB_DATA_TYPE_BIGINT;
}
} else {
// set the direct previous(next) point for process
count = 2;
if (pQuery->fillType == TSDB_FILL_SET_VALUE) {
for (int32_t i = 0; i < pQuery->numOfOutput; ++i) {
SQLFunctionCtx *pCtx = &pRuntimeEnv->pCtx[i];
// only the function of interp needs the corresponding information
if (pCtx->functionId != TSDB_FUNC_INTERP) {
continue;
}
pCtx->numOfParams = 4;
SInterpInfo *pInterpInfo = (SInterpInfo *)pRuntimeEnv->pCtx[i].aOutputBuf;
pInterpInfo->pInterpDetail = calloc(1, sizeof(SInterpInfoDetail));
SInterpInfoDetail *pInterpDetail = pInterpInfo->pInterpDetail;
// for primary timestamp column, set the flag
if (pQuery->pSelectExpr[i].base.colInfo.colId == PRIMARYKEY_TIMESTAMP_COL_INDEX) {
pInterpDetail->primaryCol = 1;
}
tVariantCreateFromBinary(&pCtx->param[3], (char *)&count, sizeof(count), TSDB_DATA_TYPE_INT);
if (isNull((char *)&pQuery->fillVal[i], pCtx->inputType)) {
pCtx->param[1].nType = TSDB_DATA_TYPE_NULL;
} else {
tVariantCreateFromBinary(&pCtx->param[1], (char *)&pQuery->fillVal[i], pCtx->inputBytes, pCtx->inputType);
}
pInterpDetail->ts = pQuery->window.skey;
pInterpDetail->type = pQuery->fillType;
}
} else {
TSKEY prevKey = *(TSKEY *)pPointInterpSupport->pPrevPoint[0];
TSKEY nextKey = *(TSKEY *)pPointInterpSupport->pNextPoint[0];
for (int32_t i = 0; i < pQuery->numOfOutput; ++i) {
SQLFunctionCtx *pCtx = &pRuntimeEnv->pCtx[i];
// tag column does not need the interp environment
if (pQuery->pSelectExpr[i].base.functionId == TSDB_FUNC_TAG) {
continue;
}
int32_t colInBuf = 0; // pQuery->pSelectExpr[i].base.colInfo.colIdxInBuf;
SInterpInfo *pInterpInfo = (SInterpInfo *)pRuntimeEnv->pCtx[i].aOutputBuf;
pInterpInfo->pInterpDetail = calloc(1, sizeof(SInterpInfoDetail));
SInterpInfoDetail *pInterpDetail = pInterpInfo->pInterpDetail;
// int32_t type = GET_COLUMN_TYPE(pQuery, i);
int32_t type = 0;
assert(0);
// for primary timestamp column, set the flag
if (pQuery->pSelectExpr[i].base.colInfo.colId == PRIMARYKEY_TIMESTAMP_COL_INDEX) {
pInterpDetail->primaryCol = 1;
} else {
doSetInterpVal(pCtx, prevKey, type, 1, pPointInterpSupport->pPrevPoint[colInBuf]);
doSetInterpVal(pCtx, nextKey, type, 2, pPointInterpSupport->pNextPoint[colInBuf]);
}
tVariantCreateFromBinary(&pRuntimeEnv->pCtx[i].param[3], (char *)&count, sizeof(count), TSDB_DATA_TYPE_INT);
pInterpDetail->ts = pQInfo->runtimeEnv.pQuery->window.skey;
pInterpDetail->type = pQuery->fillType;
}
}
}
#endif
}
void
pointInterpSupporterInit
(
SQuery
*
pQuery
,
SPointInterpoSupporter
*
pInterpoSupport
)
{
#if 0
if (isPointInterpoQuery(pQuery)) {
pInterpoSupport->pPrevPoint = malloc(pQuery->numOfCols * POINTER_BYTES);
pInterpoSupport->pNextPoint = malloc(pQuery->numOfCols * POINTER_BYTES);
pInterpoSupport->numOfCols = pQuery->numOfCols;
/* get appropriated size for one row data source*/
int32_t len = 0;
for (int32_t i = 0; i < pQuery->numOfCols; ++i) {
len += pQuery->colList[i].bytes;
}
// assert(PRIMARY_TSCOL_LOADED(pQuery));
void *prev = calloc(1, len);
void *next = calloc(1, len);
int32_t offset = 0;
for (int32_t i = 0; i < pQuery->numOfCols; ++i) {
pInterpoSupport->pPrevPoint[i] = prev + offset;
pInterpoSupport->pNextPoint[i] = next + offset;
offset += pQuery->colList[i].bytes;
}
}
#endif
}
void
pointInterpSupporterDestroy
(
SPointInterpoSupporter
*
pPointInterpSupport
)
{
#if 0
if (pPointInterpSupport->numOfCols <= 0 || pPointInterpSupport->pPrevPoint == NULL) {
return;
}
tfree(pPointInterpSupport->pPrevPoint[0]);
tfree(pPointInterpSupport->pNextPoint[0]);
tfree(pPointInterpSupport->pPrevPoint);
tfree(pPointInterpSupport->pNextPoint);
pPointInterpSupport->numOfCols = 0;
#endif
}
static
int32_t
getInitialPageNum
(
SQInfo
*
pQInfo
)
{
SQuery
*
pQuery
=
pQInfo
->
runtimeEnv
.
pQuery
;
int32_t
INITIAL_RESULT_ROWS_VALUE
=
16
;
...
...
@@ -2169,7 +1858,7 @@ static int32_t getRowParamForMultiRowsOutput(SQuery *pQuery, bool isSTableQuery)
static
int32_t
getNumOfRowsInResultPage
(
SQuery
*
pQuery
,
bool
isSTableQuery
)
{
int32_t
rowSize
=
pQuery
->
rowSize
*
getRowParamForMultiRowsOutput
(
pQuery
,
isSTableQuery
);
return
(
DEFAULT_INTERN_BUF_SIZE
-
sizeof
(
tFilePage
))
/
rowSize
;
return
(
DEFAULT_INTERN_BUF_
PAGE_
SIZE
-
sizeof
(
tFilePage
))
/
rowSize
;
}
char
*
getPosInResultPage
(
SQueryRuntimeEnv
*
pRuntimeEnv
,
int32_t
columnIndex
,
SWindowResult
*
pResult
)
{
...
...
@@ -2297,9 +1986,12 @@ SArray *loadDataBlockOnDemand(SQueryRuntimeEnv *pRuntimeEnv, void* pQueryHandle,
if
(
pQuery
->
numOfFilterCols
>
0
)
{
r
=
BLK_DATA_ALL_NEEDED
;
}
else
{
// check if this data block is required to load
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
int32_t
functionId
=
pQuery
->
pSelectExpr
[
i
].
base
.
functionId
;
int32_t
colId
=
pQuery
->
pSelectExpr
[
i
].
base
.
colInfo
.
colId
;
SSqlFuncMsg
*
pSqlFunc
=
&
pQuery
->
pSelectExpr
[
i
].
base
;
int32_t
functionId
=
pSqlFunc
->
functionId
;
int32_t
colId
=
pSqlFunc
->
colInfo
.
colId
;
r
|=
aAggs
[
functionId
].
dataReqFunc
(
&
pRuntimeEnv
->
pCtx
[
i
],
pQuery
->
window
.
skey
,
pQuery
->
window
.
ekey
,
colId
);
}
...
...
@@ -2309,34 +2001,38 @@ SArray *loadDataBlockOnDemand(SQueryRuntimeEnv *pRuntimeEnv, void* pQueryHandle,
}
if
(
r
==
BLK_DATA_NO_NEEDED
)
{
qTrace
(
"QInfo:%p data block
ignore
d, brange:%"
PRId64
"-%"
PRId64
", rows:%d"
,
GET_QINFO_ADDR
(
pRuntimeEnv
),
qTrace
(
"QInfo:%p data block
discar
d, brange:%"
PRId64
"-%"
PRId64
", rows:%d"
,
GET_QINFO_ADDR
(
pRuntimeEnv
),
pBlockInfo
->
window
.
skey
,
pBlockInfo
->
window
.
ekey
,
pBlockInfo
->
rows
);
}
else
if
(
r
==
BLK_DATA_FILEDS_NEEDED
)
{
pRuntimeEnv
->
summary
.
discardBlocks
+=
1
;
}
else
if
(
r
==
BLK_DATA_STATIS_NEEDED
)
{
if
(
tsdbRetrieveDataBlockStatisInfo
(
pQueryHandle
,
pStatis
)
!=
TSDB_CODE_SUCCESS
)
{
// return DISK_DATA_LOAD_FAILED;
}
if
(
*
pStatis
==
NULL
)
{
pRuntimeEnv
->
summary
.
loadBlockStatis
+=
1
;
if
(
*
pStatis
==
NULL
)
{
// data block statistics does not exist, load data block
pDataBlock
=
tsdbRetrieveDataBlock
(
pQueryHandle
,
NULL
);
pRuntimeEnv
->
summary
.
checkRows
+=
pBlockInfo
->
rows
;
}
}
else
{
assert
(
r
==
BLK_DATA_ALL_NEEDED
);
// load the data block statistics to perform further filter
pRuntimeEnv
->
summary
.
loadBlockStatis
+=
1
;
if
(
tsdbRetrieveDataBlockStatisInfo
(
pQueryHandle
,
pStatis
)
!=
TSDB_CODE_SUCCESS
)
{
// return DISK_DATA_LOAD_FAILED;
}
/*
* if this block is completed included in the query range, do more filter operation
* filter the data block according to the value filter condition.
* no need to load the data block, continue for next block
*/
if
(
!
needToLoadDataBlock
(
pQuery
,
*
pStatis
,
pRuntimeEnv
->
pCtx
,
pBlockInfo
->
rows
))
{
if
(
!
needToLoadDataBlock
(
pQuery
,
*
pStatis
,
pRuntimeEnv
->
pCtx
,
pBlockInfo
->
rows
))
{
#if defined(_DEBUG_VIEW)
qTrace
(
"QInfo:%p block discarded by per-filter"
,
GET_QINFO_ADDR
(
pRuntimeEnv
));
#endif
// current block has been discard due to filter applied
pRuntimeEnv
->
summary
.
discardBlocks
+=
1
;
// return DISK_DATA_DISCARDED;
}
pRuntimeEnv
->
summary
.
checkRows
+=
pBlockInfo
->
rows
;
pDataBlock
=
tsdbRetrieveDataBlock
(
pQueryHandle
,
NULL
);
}
...
...
@@ -2406,6 +2102,43 @@ int32_t binarySearchForKey(char *pValue, int num, TSKEY key, int order) {
return
midPos
;
}
static
void
ensureOutputBuffer
(
SQueryRuntimeEnv
*
pRuntimeEnv
,
SDataBlockInfo
*
pBlockInfo
)
{
// in case of prj/diff query, ensure the output buffer is sufficient to accommodate the results of current block
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
if
(
!
isIntervalQuery
(
pQuery
)
&&
!
isGroupbyNormalCol
(
pQuery
->
pGroupbyExpr
)
&&
!
isFixedOutputQuery
(
pQuery
))
{
SResultRec
*
pRec
=
&
pQuery
->
rec
;
if
(
pQuery
->
rec
.
capacity
-
pQuery
->
rec
.
rows
<
pBlockInfo
->
rows
)
{
int32_t
remain
=
pRec
->
capacity
-
pRec
->
rows
;
int32_t
newSize
=
pRec
->
capacity
+
(
pBlockInfo
->
rows
-
remain
);
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
int32_t
bytes
=
pQuery
->
pSelectExpr
[
i
].
bytes
;
char
*
tmp
=
realloc
(
pQuery
->
sdata
[
i
],
bytes
*
newSize
+
sizeof
(
tFilePage
));
if
(
tmp
==
NULL
)
{
// todo handle the oom
assert
(
0
);
}
else
{
pQuery
->
sdata
[
i
]
=
(
tFilePage
*
)
tmp
;
}
// set the pCtx output buffer position
pRuntimeEnv
->
pCtx
[
i
].
aOutputBuf
=
pQuery
->
sdata
[
i
]
->
data
+
pRec
->
rows
*
bytes
;
int32_t
functionId
=
pQuery
->
pSelectExpr
[
i
].
base
.
functionId
;
if
(
functionId
==
TSDB_FUNC_TOP
||
functionId
==
TSDB_FUNC_BOTTOM
||
functionId
==
TSDB_FUNC_DIFF
)
{
pRuntimeEnv
->
pCtx
[
i
].
ptsOutputBuf
=
pRuntimeEnv
->
pCtx
[
0
].
aOutputBuf
;
}
}
qTrace
(
"QInfo:%p realloc output buffer, new size: %d rows, old:%d, remain:%d"
,
GET_QINFO_ADDR
(
pRuntimeEnv
),
newSize
,
pRec
->
capacity
,
newSize
-
pRec
->
rows
);
pRec
->
capacity
=
newSize
;
}
}
}
static
int64_t
doScanAllDataBlocks
(
SQueryRuntimeEnv
*
pRuntimeEnv
)
{
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
STableQueryInfo
*
pTableQueryInfo
=
pQuery
->
current
;
...
...
@@ -2416,6 +2149,7 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
TsdbQueryHandleT
pQueryHandle
=
IS_MASTER_SCAN
(
pRuntimeEnv
)
?
pRuntimeEnv
->
pQueryHandle
:
pRuntimeEnv
->
pSecQueryHandle
;
while
(
tsdbNextDataBlock
(
pQueryHandle
))
{
pRuntimeEnv
->
summary
.
dataBlocks
+=
1
;
if
(
isQueryKilled
(
GET_QINFO_ADDR
(
pRuntimeEnv
)))
{
return
0
;
}
...
...
@@ -2448,45 +2182,15 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
}
// in case of prj/diff query, ensure the output buffer is sufficient to accommodate the results of current block
if
(
!
isIntervalQuery
(
pQuery
)
&&
!
isGroupbyNormalCol
(
pQuery
->
pGroupbyExpr
)
&&
!
isFixedOutputQuery
(
pQuery
))
{
SResultRec
*
pRec
=
&
pQuery
->
rec
;
if
(
pQuery
->
rec
.
capacity
-
pQuery
->
rec
.
rows
<
blockInfo
.
rows
)
{
int32_t
remain
=
pRec
->
capacity
-
pRec
->
rows
;
int32_t
newSize
=
pRec
->
capacity
+
(
blockInfo
.
rows
-
remain
);
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
int32_t
bytes
=
pQuery
->
pSelectExpr
[
i
].
bytes
;
char
*
tmp
=
realloc
(
pQuery
->
sdata
[
i
],
bytes
*
newSize
+
sizeof
(
tFilePage
));
if
(
tmp
==
NULL
)
{
// todo handle the oom
assert
(
0
);
}
else
{
pQuery
->
sdata
[
i
]
=
(
tFilePage
*
)
tmp
;
}
// set the pCtx output buffer position
pRuntimeEnv
->
pCtx
[
i
].
aOutputBuf
=
pQuery
->
sdata
[
i
]
->
data
+
pRec
->
rows
*
bytes
;
int32_t
functionId
=
pQuery
->
pSelectExpr
[
i
].
base
.
functionId
;
if
(
functionId
==
TSDB_FUNC_TOP
||
functionId
==
TSDB_FUNC_BOTTOM
||
functionId
==
TSDB_FUNC_DIFF
)
{
pRuntimeEnv
->
pCtx
[
i
].
ptsOutputBuf
=
pRuntimeEnv
->
pCtx
[
0
].
aOutputBuf
;
}
}
qTrace
(
"QInfo:%p realloc output buffer, new size: %d rows, old:%d, remain:%d"
,
GET_QINFO_ADDR
(
pRuntimeEnv
),
newSize
,
pRec
->
capacity
,
newSize
-
pRec
->
rows
);
pRec
->
capacity
=
newSize
;
}
}
ensureOutputBuffer
(
pRuntimeEnv
,
&
blockInfo
);
SDataStatis
*
pStatis
=
NULL
;
pQuery
->
pos
=
QUERY_IS_ASC_QUERY
(
pQuery
)
?
0
:
blockInfo
.
rows
-
1
;
pQuery
->
pos
=
QUERY_IS_ASC_QUERY
(
pQuery
)
?
0
:
blockInfo
.
rows
-
1
;
SArray
*
pDataBlock
=
loadDataBlockOnDemand
(
pRuntimeEnv
,
pQueryHandle
,
&
blockInfo
,
&
pStatis
);
int32_t
numOfRes
=
tableApplyFunctionsOnBlock
(
pRuntimeEnv
,
&
blockInfo
,
pStatis
,
binarySearchForKey
,
pDataBlock
);
pRuntimeEnv
->
summary
.
dataInRows
+=
blockInfo
.
rows
;
qTrace
(
"QInfo:%p check data block, brange:%"
PRId64
"-%"
PRId64
", numOfRows:%d, numOfRes:%d, lastKey:%"
PRId64
,
GET_QINFO_ADDR
(
pRuntimeEnv
),
blockInfo
.
window
.
skey
,
blockInfo
.
window
.
ekey
,
blockInfo
.
rows
,
numOfRes
,
pQuery
->
current
->
lastKey
);
...
...
@@ -2590,15 +2294,19 @@ static void doMerge(SQueryRuntimeEnv *pRuntimeEnv, int64_t timestamp, SWindowRes
pCtx
[
i
].
hasNull
=
true
;
pCtx
[
i
].
nStartQueryTimestamp
=
timestamp
;
pCtx
[
i
].
aInputElemBuf
=
getPosInResultPage
(
pRuntimeEnv
,
i
,
pWindowRes
);
// pCtx[i].aInputElemBuf = ((char *)inputSrc->data) +
// ((int32_t)pRuntimeEnv->offset[i] * pRuntimeEnv->numOfRowsPerPage) +
// pCtx[i].outputBytes * inputIdx;
// in case of tag column, the tag information should be extracted from input buffer
if
(
functionId
==
TSDB_FUNC_TAG_DUMMY
||
functionId
==
TSDB_FUNC_TAG
)
{
tVariantDestroy
(
&
pCtx
[
i
].
tag
);
int32_t
type
=
pCtx
[
i
].
outputType
;
if
(
type
==
TSDB_DATA_TYPE_BINARY
||
type
==
TSDB_DATA_TYPE_NCHAR
)
{
tVariantCreateFromBinary
(
&
pCtx
[
i
].
tag
,
varDataVal
(
pCtx
[
i
].
aInputElemBuf
),
varDataLen
(
pCtx
[
i
].
aInputElemBuf
),
type
);
}
else
{
tVariantCreateFromBinary
(
&
pCtx
[
i
].
tag
,
pCtx
[
i
].
aInputElemBuf
,
pCtx
[
i
].
inputBytes
,
pCtx
[
i
].
inputType
);
}
}
}
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
...
...
@@ -2875,7 +2583,7 @@ int32_t mergeIntoGroupResultImpl(SQInfo *pQInfo, SArray *pGroup) {
size_t
size
=
taosArrayGetSize
(
pGroup
);
tFilePage
**
buffer
=
(
tFilePage
**
)
pQuery
->
sdata
;
tFilePage
**
buffer
=
pQuery
->
sdata
;
int32_t
*
posList
=
calloc
(
size
,
sizeof
(
int32_t
));
STableQueryInfo
**
pTableList
=
malloc
(
POINTER_BYTES
*
size
);
...
...
@@ -3005,7 +2713,7 @@ int32_t flushFromResultBuf(SQInfo *pQInfo) {
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
SDiskbasedResultBuf
*
pResultBuf
=
pRuntimeEnv
->
pResultBuf
;
int32_t
capacity
=
(
DEFAULT_INTERN_BUF_SIZE
-
sizeof
(
tFilePage
))
/
pQuery
->
rowSize
;
int32_t
capacity
=
(
DEFAULT_INTERN_BUF_
PAGE_
SIZE
-
sizeof
(
tFilePage
))
/
pQuery
->
rowSize
;
// the base value for group result, since the maximum number of table for each vnode will not exceed 100,000.
int32_t
pageId
=
-
1
;
...
...
@@ -3552,14 +3260,14 @@ void restoreIntervalQueryRange(SQueryRuntimeEnv *pRuntimeEnv, STableQueryInfo *p
* @param pRuntimeEnv
* @param pDataBlockInfo
*/
void
setExecutionContext
(
SQInfo
*
pQInfo
,
STableId
*
pTableId
,
int32_t
groupI
d
x
,
TSKEY
nextKey
)
{
void
setExecutionContext
(
SQInfo
*
pQInfo
,
STableId
*
pTableId
,
int32_t
groupI
nde
x
,
TSKEY
nextKey
)
{
SQueryRuntimeEnv
*
pRuntimeEnv
=
&
pQInfo
->
runtimeEnv
;
STableQueryInfo
*
pTableQueryInfo
=
pRuntimeEnv
->
pQuery
->
current
;
SWindowResInfo
*
pWindowResInfo
=
&
pRuntimeEnv
->
windowResInfo
;
int32_t
GROUPRESULTID
=
1
;
SWindowResult
*
pWindowRes
=
doSetTimeWindowFromKey
(
pRuntimeEnv
,
pWindowResInfo
,
(
char
*
)
&
groupI
dx
,
sizeof
(
groupId
x
));
SWindowResult
*
pWindowRes
=
doSetTimeWindowFromKey
(
pRuntimeEnv
,
pWindowResInfo
,
(
char
*
)
&
groupI
ndex
,
sizeof
(
groupInde
x
));
if
(
pWindowRes
==
NULL
)
{
return
;
}
...
...
@@ -3589,7 +3297,6 @@ static void setWindowResOutputBuf(SQueryRuntimeEnv *pRuntimeEnv, SWindowResult *
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
SQLFunctionCtx
*
pCtx
=
&
pRuntimeEnv
->
pCtx
[
i
];
pCtx
->
aOutputBuf
=
getPosInResultPage
(
pRuntimeEnv
,
i
,
pResult
);
int32_t
functionId
=
pQuery
->
pSelectExpr
[
i
].
base
.
functionId
;
if
(
functionId
==
TSDB_FUNC_TOP
||
functionId
==
TSDB_FUNC_BOTTOM
||
functionId
==
TSDB_FUNC_DIFF
)
{
pCtx
->
ptsOutputBuf
=
pRuntimeEnv
->
pCtx
[
0
].
aOutputBuf
;
...
...
@@ -3811,7 +3518,7 @@ static void updateWindowResNumOfRes(SQueryRuntimeEnv *pRuntimeEnv, STableQueryIn
// update the number of result for each, only update the number of rows for the corresponding window result.
if
(
pQuery
->
intervalTime
==
0
)
{
int32_t
g
=
pTableQueryInfo
->
groupI
d
x
;
int32_t
g
=
pTableQueryInfo
->
groupI
nde
x
;
assert
(
pRuntimeEnv
->
windowResInfo
.
size
>
0
);
SWindowResult
*
pWindowRes
=
doSetTimeWindowFromKey
(
pRuntimeEnv
,
&
pRuntimeEnv
->
windowResInfo
,
(
char
*
)
&
g
,
sizeof
(
g
));
...
...
@@ -3841,7 +3548,8 @@ bool queryHasRemainResults(SQueryRuntimeEnv* pRuntimeEnv) {
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
SFillInfo
*
pFillInfo
=
pRuntimeEnv
->
pFillInfo
;
if
(
pQuery
->
fillType
==
TSDB_FILL_NONE
)
{
// todo refactor
if
(
pQuery
->
fillType
==
TSDB_FILL_NONE
||
(
pQuery
->
fillType
!=
TSDB_FILL_NONE
&&
isPointInterpoQuery
(
pQuery
)))
{
assert
(
pFillInfo
==
NULL
);
return
false
;
}
...
...
@@ -3956,50 +3664,49 @@ int32_t doFillGapsInResults(SQueryRuntimeEnv* pRuntimeEnv, tFilePage **pDst, int
}
}
void
vnodePrintQueryStatistics
(
SQInfo
*
pQInfo
)
{
#if 0
void
queryCostStatis
(
SQInfo
*
pQInfo
)
{
SQueryRuntimeEnv
*
pRuntimeEnv
=
&
pQInfo
->
runtimeEnv
;
// SQuery *pQuery = pRuntimeEnv->pQuery;
SQuery
*pQuery = pRuntimeEnv->pQue
ry;
SQueryCostSummary *pSummary = &pRuntimeEnv->summary
;
if (pRuntimeEnv->pResultBuf == NULL)
{
pSummary->tmpBufferInDisk = 0
;
} else {
pSummary->tmpBufferInDisk = getResBufSize(pRuntimeEnv->pResultBuf);
}
qTrace("QInfo:%p statis: comp blocks:%d, size:%d Bytes, elapsed time:%.2f ms", pQInfo, pSummary->readCompInfo,
pSummary->totalCompInfoSize, pSummary->loadCompInfoUs / 1000.0);
qTrace("QInfo:%p statis: field info: %d, size:%d Bytes, avg size:%.2f Bytes, elapsed time:%.2f ms", pQInfo,
pSummary->readField, pSummary->totalFieldSize, (double)pSummary->totalFieldSize / pSummary->readField,
pSummary->loadFieldUs / 1000.0);
qTrace(
"QInfo:%p statis: file blocks:%d, size:%d Bytes, elapsed time:%.2f ms, skipped:%d, in-memory gen null:%d Bytes",
pQInfo, pSummary->readDiskBlocks, pSummary->totalBlockSize, pSummary->loadBlocksUs / 1000.0,
pSummary->skippedFileBlocks, pSummary->totalGenData);
qTrace("QInfo:%p statis: cache blocks:%d", pQInfo, pSummary->blocksInCache, 0);
qTrace("QInfo:%p statis
: temp file:%d Bytes", pQInfo, pSummary->tmpBufferInDisk);
qTrace("QInfo:%p statis
: file:%d, table:%d", pQInfo, pSummary->numOfFiles, pSummary->numOfTables);
qTrace("QInfo:%p statis
: seek ops:%d", pQInfo, pSummary->numOfSeek);
double total = pSummary->fileTimeUs + pSummary->cacheTimeUs;
double io = pSummary->loadCompInfoUs + pSummary->loadBlocksUs + pSummary->loadFieldUs;
SQuery
CostInfo
*
pSummary
=
&
pRuntimeEnv
->
summa
ry
;
// if (pRuntimeEnv->pResultBuf == NULL) {
//// pSummary->tmpBufferInDisk = 0
;
// } else
{
//// pSummary->tmpBufferInDisk = getResBufSize(pRuntimeEnv->pResultBuf)
;
// }
//
// qTrace("QInfo:%p cost: comp blocks:%d, size:%d Bytes, elapsed time:%.2f ms", pQInfo, pSummary->readCompInfo,
// pSummary->totalCompInfoSize, pSummary->loadCompInfoUs / 1000.0);
//
// qTrace("QInfo:%p cost: field info: %d, size:%d Bytes, avg size:%.2f Bytes, elapsed time:%.2f ms", pQInfo,
// pSummary->readField, pSummary->totalFieldSize, (double)pSummary->totalFieldSize / pSummary->readField,
// pSummary->loadFieldUs / 1000.0);
//
// qTrace(
// "QInfo:%p cost: file blocks:%d, size:%d Bytes, elapsed time:%.2f ms, skipped:%d, in-memory gen null:%d Bytes",
// pQInfo, pSummary->readDiskBlocks, pSummary->totalBlockSize, pSummary->loadBlocksUs / 1000.0,
// pSummary->skippedFileBlocks, pSummary->totalGenData);
qTrace
(
"QInfo:%p cost: check blocks:%d, statis:%d, rows:%"
PRId64
", check rows:%"
PRId64
,
pQInfo
,
pSummary
->
dataBlocks
,
pSummary
->
loadBlockStatis
,
pSummary
->
dataInRows
,
pSummary
->
checkRows
);
// qTrace("QInfo:%p cost
: temp file:%d Bytes", pQInfo, pSummary->tmpBufferInDisk);
//
// qTrace("QInfo:%p cost
: file:%d, table:%d", pQInfo, pSummary->numOfFiles, pSummary->numOfTables);
// qTrace("QInfo:%p cost
: seek ops:%d", pQInfo, pSummary->numOfSeek);
//
//
double total = pSummary->fileTimeUs + pSummary->cacheTimeUs;
//
double io = pSummary->loadCompInfoUs + pSummary->loadBlocksUs + pSummary->loadFieldUs;
// todo add the intermediate result save cost!!
double computing = total - io;
qTrace(
"QInfo:%p statis: total elapsed time:%.2f ms, file:%.2f ms(%.2f%), cache:%.2f ms(%.2f%). io:%.2f ms(%.2f%),"
"comput:%.2fms(%.2f%)",
pQInfo, total / 1000.0, pSummary->fileTimeUs / 1000.0, pSummary->fileTimeUs * 100 / total,
pSummary->cacheTimeUs / 1000.0, pSummary->cacheTimeUs * 100 / total, io / 1000.0, io * 100 / total,
computing / 1000.0, computing * 100 / total);
#endif
// double computing = total - io;
//
// qTrace(
// "QInfo:%p cost: total elapsed time:%.2f ms, file:%.2f ms(%.2f%), cache:%.2f ms(%.2f%). io:%.2f ms(%.2f%),"
// "comput:%.2fms(%.2f%)",
// pQInfo, total / 1000.0, pSummary->fileTimeUs / 1000.0, pSummary->fileTimeUs * 100 / total,
// pSummary->cacheTimeUs / 1000.0, pSummary->cacheTimeUs * 100 / total, io / 1000.0, io * 100 / total,
// computing / 1000.0, computing * 100 / total);
}
static
void
updateOffsetVal
(
SQueryRuntimeEnv
*
pRuntimeEnv
,
SDataBlockInfo
*
pBlockInfo
)
{
...
...
@@ -4195,7 +3902,6 @@ static bool skipTimeInterval(SQueryRuntimeEnv *pRuntimeEnv, TSKEY* start) {
return
true
;
}
static
void
setupQueryHandle
(
void
*
tsdb
,
SQInfo
*
pQInfo
,
bool
isSTableQuery
)
{
SQueryRuntimeEnv
*
pRuntimeEnv
=
&
pQInfo
->
runtimeEnv
;
SQuery
*
pQuery
=
pQInfo
->
runtimeEnv
.
pQuery
;
...
...
@@ -4229,12 +3935,13 @@ static void setupQueryHandle(void* tsdb, SQInfo* pQInfo, bool isSTableQuery) {
if
(
isFirstLastRowQuery
(
pQuery
))
{
pRuntimeEnv
->
pQueryHandle
=
tsdbQueryLastRow
(
tsdb
,
&
cond
,
&
pQInfo
->
tableIdGroupInfo
);
}
else
if
(
isPointInterpoQuery
(
pQuery
))
{
pRuntimeEnv
->
pQueryHandle
=
tsdbQueryRowsInExternalWindow
(
tsdb
,
&
cond
,
&
pQInfo
->
tableIdGroupInfo
);
}
else
{
pRuntimeEnv
->
pQueryHandle
=
tsdbQueryTables
(
tsdb
,
&
cond
,
&
pQInfo
->
tableIdGroupInfo
);
}
}
static
SFillColInfo
*
taosCreateFillColInfo
(
SQuery
*
pQuery
)
{
int32_t
numOfCols
=
pQuery
->
numOfOutput
;
int32_t
offset
=
0
;
...
...
@@ -4325,9 +4032,6 @@ int32_t doInitQInfo(SQInfo *pQInfo, void *param, void *tsdb, int32_t vgId, bool
setQueryStatus
(
pQuery
,
QUERY_NOT_COMPLETED
);
// SPointInterpoSupporter interpInfo = {0};
// pointInterpSupporterInit(pQuery, &interpInfo);
/*
* in case of last_row query without query range, we set the query timestamp to be
* STable->lastKey. Otherwise, keep the initial query time range unchanged.
...
...
@@ -4340,14 +4044,7 @@ int32_t doInitQInfo(SQInfo *pQInfo, void *param, void *tsdb, int32_t vgId, bool
// }
// }
/*
* here we set the value for before and after the specified time into the
* parameter for interpolation query
*/
// pointInterpSupporterSetData(pQInfo, &interpInfo);
// pointInterpSupporterDestroy(&interpInfo);
if
(
pQuery
->
fillType
!=
TSDB_FILL_NONE
)
{
if
(
pQuery
->
fillType
!=
TSDB_FILL_NONE
&&
!
isPointInterpoQuery
(
pQuery
))
{
SFillColInfo
*
pColInfo
=
taosCreateFillColInfo
(
pQuery
);
pRuntimeEnv
->
pFillInfo
=
taosInitFillInfo
(
pQuery
->
order
.
order
,
0
,
0
,
pQuery
->
rec
.
capacity
,
pQuery
->
numOfOutput
,
pQuery
->
slidingTime
,
pQuery
->
fillType
,
pColInfo
);
...
...
@@ -4423,6 +4120,7 @@ static int64_t queryOnDataBlocks(SQInfo *pQInfo) {
assert
(
pTableQueryInfo
!=
NULL
);
restoreIntervalQueryRange
(
pRuntimeEnv
,
pTableQueryInfo
);
printf
(
"table:%d, groupIndex:%d, rows:%d
\n
"
,
pTableQueryInfo
->
id
.
tid
,
pTableQueryInfo
->
groupIndex
,
blockInfo
.
tid
);
SDataStatis
*
pStatis
=
NULL
;
...
...
@@ -4430,7 +4128,7 @@ static int64_t queryOnDataBlocks(SQInfo *pQInfo) {
if
(
!
isIntervalQuery
(
pQuery
))
{
int32_t
step
=
QUERY_IS_ASC_QUERY
(
pQuery
)
?
1
:-
1
;
setExecutionContext
(
pQInfo
,
&
pTableQueryInfo
->
id
,
pTableQueryInfo
->
groupI
d
x
,
blockInfo
.
window
.
ekey
+
step
);
setExecutionContext
(
pQInfo
,
&
pTableQueryInfo
->
id
,
pTableQueryInfo
->
groupI
nde
x
,
blockInfo
.
window
.
ekey
+
step
);
}
else
{
// interval query
TSKEY
nextKey
=
blockInfo
.
window
.
skey
;
setIntervalQueryRange
(
pQInfo
,
nextKey
);
...
...
@@ -4519,14 +4217,13 @@ static void sequentialTableProcess(SQInfo *pQInfo) {
size_t
numOfGroups
=
taosArrayGetSize
(
pQInfo
->
groupInfo
.
pGroupList
);
if
(
isPointInterpoQuery
(
pQuery
))
{
if
(
isPointInterpoQuery
(
pQuery
)
||
isFirstLastRowQuery
(
pQuery
)
)
{
resetCtxOutputBuf
(
pRuntimeEnv
);
assert
(
pQuery
->
limit
.
offset
==
0
&&
pQuery
->
limit
.
limit
!=
0
);
while
(
pQInfo
->
groupIndex
<
numOfGroups
)
{
SArray
*
group
=
taosArrayGetP
(
pQInfo
->
groupInfo
.
pGroupList
,
pQInfo
->
groupIndex
);
if
(
isFirstLastRowQuery
(
pQuery
))
{
qTrace
(
"QInfo:%p last_row query on group:%d, total group:%d, current group:%d"
,
pQInfo
,
pQInfo
->
groupIndex
,
numOfGroups
);
...
...
@@ -4549,10 +4246,22 @@ static void sequentialTableProcess(SQInfo *pQInfo) {
pRuntimeEnv
->
pQueryHandle
=
NULL
;
}
if
(
isFirstLastRowQuery
(
pQuery
))
{
pRuntimeEnv
->
pQueryHandle
=
tsdbQueryLastRow
(
pQInfo
->
tsdb
,
&
cond
,
&
gp
);
}
else
{
pRuntimeEnv
->
pQueryHandle
=
tsdbQueryRowsInExternalWindow
(
pQInfo
->
tsdb
,
&
cond
,
&
gp
);
}
initCtxOutputBuf
(
pRuntimeEnv
);
setTagVal
(
pRuntimeEnv
,
(
STableId
*
)
taosArrayGet
(
tx
,
0
),
pQInfo
->
tsdb
);
SArray
*
s
=
tsdbGetQueriedTableIdList
(
pRuntimeEnv
->
pQueryHandle
);
assert
(
taosArrayGetSize
(
s
)
>=
1
);
setTagVal
(
pRuntimeEnv
,
(
STableId
*
)
taosArrayGet
(
s
,
0
),
pQInfo
->
tsdb
);
if
(
isFirstLastRowQuery
(
pQuery
))
{
assert
(
taosArrayGetSize
(
s
)
==
1
);
}
// here we simply set the first table as current table
pQuery
->
current
=
((
SGroupItem
*
)
taosArrayGet
(
group
,
0
))
->
info
;
...
...
@@ -4570,7 +4279,6 @@ static void sequentialTableProcess(SQInfo *pQInfo) {
// enable execution for next table, when handling the projection query
enableExecutionForNextTable
(
pRuntimeEnv
);
}
}
}
else
{
/*
* 1. super table projection query, 2. group-by on normal columns query, 3. ts-comp query
...
...
@@ -4795,7 +4503,7 @@ static void multiTableQueryProcess(SQInfo *pQInfo) {
}
if
(
pQuery
->
rec
.
rows
==
0
)
{
//
vnodePrintQueryStatistic
s(pSupporter);
//
queryCostStati
s(pSupporter);
}
qTrace
(
"QInfo:%p current:%lld, total:%lld"
,
pQInfo
,
pQuery
->
rec
.
rows
,
pQuery
->
rec
.
total
);
...
...
@@ -5080,7 +4788,7 @@ static void tableQueryImpl(SQInfo *pQInfo) {
}
qTrace
(
"QInfo:%p query over, %d rows are returned"
,
pQInfo
,
pQuery
->
rec
.
total
);
// vnodePrintQueryStatistics(pSupporter
);
queryCostStatis
(
pQInfo
);
return
;
}
...
...
@@ -5112,6 +4820,10 @@ static void tableQueryImpl(SQInfo *pQInfo) {
}
else
{
// todo set the table uid and tid in log
qTrace
(
"QInfo:%p query paused, %"
PRId64
" rows returned, numOfTotal:%"
PRId64
" rows"
,
pQInfo
,
pQuery
->
rec
.
rows
,
pQuery
->
rec
.
total
+
pQuery
->
rec
.
rows
);
if
(
Q_STATUS_EQUAL
(
pQuery
->
status
,
QUERY_COMPLETED
))
{
queryCostStatis
(
pQInfo
);
}
}
}
...
...
@@ -5122,11 +4834,12 @@ static void stableQueryImpl(SQInfo *pQInfo) {
int64_t
st
=
taosGetTimestampUs
();
if
(
isIntervalQuery
(
pQuery
)
||
(
isFixedOutputQuery
(
pQuery
)
&&
(
!
isPointInterpoQuery
(
pQuery
))
&&
!
isGroupbyNormalCol
(
pQuery
->
pGroupbyExpr
)))
{
(
isFixedOutputQuery
(
pQuery
)
&&
(
!
isPointInterpoQuery
(
pQuery
))
&&
!
isGroupbyNormalCol
(
pQuery
->
pGroupbyExpr
)
&&
!
isFirstLastRowQuery
(
pQuery
)))
{
multiTableQueryProcess
(
pQInfo
);
}
else
{
assert
((
pQuery
->
checkBuffer
==
1
&&
pQuery
->
intervalTime
==
0
)
||
isPointInterpoQuery
(
pQuery
)
||
isGroupbyNormalCol
(
pQuery
->
pGroupbyExpr
));
isFirstLastRowQuery
(
pQuery
)
||
isGroupbyNormalCol
(
pQuery
->
pGroupbyExpr
));
sequentialTableProcess
(
pQInfo
);
}
...
...
@@ -5138,7 +4851,7 @@ static void stableQueryImpl(SQInfo *pQInfo) {
if
(
pQuery
->
rec
.
rows
==
0
)
{
qTrace
(
"QInfo:%p over, %d tables queried, %d points are returned"
,
pQInfo
,
pQInfo
->
groupInfo
.
numOfTables
,
pQuery
->
rec
.
total
);
//
vnodePrintQueryStatistic
s(pSupporter);
//
queryCostStati
s(pSupporter);
}
}
...
...
@@ -5450,9 +5163,9 @@ static int32_t buildAirthmeticExprFromMsg(SExprInfo *pArithExprInfo, SQueryTable
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
createSqlFunctionExprFromMsg
(
SQueryTableMsg
*
pQueryMsg
,
SExprInfo
**
p
SqlFuncExpr
,
SSqlFuncMsg
**
pExprMsg
,
SColumnInfo
*
pTagCols
)
{
*
p
SqlFuncExpr
=
NULL
;
static
int32_t
createSqlFunctionExprFromMsg
(
SQueryTableMsg
*
pQueryMsg
,
SExprInfo
**
p
ExprInfo
,
SSqlFuncMsg
**
pExprMsg
,
SColumnInfo
*
pTagCols
)
{
*
p
ExprInfo
=
NULL
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
SExprInfo
*
pExprs
=
(
SExprInfo
*
)
calloc
(
1
,
sizeof
(
SExprInfo
)
*
pQueryMsg
->
numOfOutput
);
...
...
@@ -5506,8 +5219,6 @@ static int32_t createSqlFunctionExprFromMsg(SQueryTableMsg *pQueryMsg, SExprInfo
assert
(
isValidDataType
(
pExprs
[
i
].
type
,
pExprs
[
i
].
bytes
));
}
// get the correct result size for top/bottom query, according to the number of tags columns in selection clause
// TODO refactor
for
(
int32_t
i
=
0
;
i
<
pQueryMsg
->
numOfOutput
;
++
i
)
{
pExprs
[
i
].
base
=
*
pExprMsg
[
i
];
...
...
@@ -5527,7 +5238,7 @@ static int32_t createSqlFunctionExprFromMsg(SQueryTableMsg *pQueryMsg, SExprInfo
}
tfree
(
pExprMsg
);
*
p
SqlFuncExpr
=
pExprs
;
*
p
ExprInfo
=
pExprs
;
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -5646,25 +5357,32 @@ static void doUpdateExprColumnIndex(SQuery *pQuery) {
for
(
int32_t
k
=
0
;
k
<
pQuery
->
numOfOutput
;
++
k
)
{
SSqlFuncMsg
*
pSqlExprMsg
=
&
pQuery
->
pSelectExpr
[
k
].
base
;
if
(
pSqlExprMsg
->
functionId
==
TSDB_FUNC_ARITHM
||
pSqlExprMsg
->
colInfo
.
flag
==
TSDB_COL_TAG
)
{
if
(
pSqlExprMsg
->
functionId
==
TSDB_FUNC_ARITHM
)
{
continue
;
}
// todo opt performance
SColIndex
*
pColIndex
=
&
pSqlExprMsg
->
colInfo
;
if
(
!
TSDB_COL_IS_TAG
(
pColIndex
->
flag
))
{
for
(
int32_t
f
=
0
;
f
<
pQuery
->
numOfCols
;
++
f
)
{
int32_t
f
=
0
;
for
(
f
=
0
;
f
<
pQuery
->
numOfCols
;
++
f
)
{
if
(
pColIndex
->
colId
==
pQuery
->
colList
[
f
].
colId
)
{
pColIndex
->
colIndex
=
f
;
break
;
}
}
assert
(
f
<
pQuery
->
numOfCols
);
}
else
{
for
(
int32_t
f
=
0
;
f
<
pQuery
->
numOfTags
;
++
f
)
{
int32_t
f
=
0
;
for
(
f
=
0
;
f
<
pQuery
->
numOfTags
;
++
f
)
{
if
(
pColIndex
->
colId
==
pQuery
->
tagColList
[
f
].
colId
)
{
pColIndex
->
colIndex
=
f
;
break
;
}
}
assert
(
f
<
pQuery
->
numOfTags
||
pColIndex
->
colId
==
TSDB_TBNAME_COLUMN_INDEX
);
}
}
}
...
...
@@ -5784,7 +5502,6 @@ static SQInfo *createQInfoImpl(SQueryTableMsg *pQueryMsg, SArray* pTableIdList,
STableId
id
=
*
(
STableId
*
)
taosArrayGet
(
pa
,
j
);
SGroupItem
item
=
{
.
id
=
id
};
// NOTE: compare STableIdInfo with STableId
// not a problem at present because we only use their 1st int64_t field
STableIdInfo
*
pTableId
=
taosArraySearch
(
pTableIdList
,
&
id
,
compareTableIdInfo
);
if
(
pTableId
!=
NULL
)
{
window
.
skey
=
pTableId
->
key
;
...
...
@@ -5792,7 +5509,7 @@ static SQInfo *createQInfoImpl(SQueryTableMsg *pQueryMsg, SArray* pTableIdList,
window
.
skey
=
pQueryMsg
->
window
.
skey
;
}
item
.
info
=
createTableQueryInfo
(
&
pQInfo
->
runtimeEnv
,
item
.
id
,
window
);
item
.
info
->
groupI
d
x
=
i
;
item
.
info
->
groupI
nde
x
=
i
;
item
.
info
->
tableIndex
=
tableIndex
++
;
taosArrayPush
(
p1
,
&
item
);
}
...
...
@@ -5802,7 +5519,6 @@ static SQInfo *createQInfoImpl(SQueryTableMsg *pQueryMsg, SArray* pTableIdList,
pQInfo
->
arrTableIdInfo
=
taosArrayInit
(
tableIndex
,
sizeof
(
STableIdInfo
));
pQuery
->
pos
=
-
1
;
pQuery
->
window
=
pQueryMsg
->
window
;
if
(
sem_init
(
&
pQInfo
->
dataReady
,
0
,
0
)
!=
0
)
{
...
...
@@ -5810,7 +5526,7 @@ static SQInfo *createQInfoImpl(SQueryTableMsg *pQueryMsg, SArray* pTableIdList,
goto
_cleanup
;
}
vnodeParametersSafety
Check
(
pQuery
);
colId
Check
(
pQuery
);
qTrace
(
"qmsg:%p QInfo:%p created"
,
pQueryMsg
,
pQInfo
);
return
pQInfo
;
...
...
@@ -5876,6 +5592,14 @@ static int32_t initQInfo(SQueryTableMsg *pQueryMsg, void *tsdb, int32_t vgId, SQ
return
TSDB_CODE_SUCCESS
;
}
if
(
pQInfo
->
groupInfo
.
numOfTables
==
0
)
{
qTrace
(
"QInfo:%p no table qualified for tag filter, abort query"
,
pQInfo
);
setQueryStatus
(
pQuery
,
QUERY_COMPLETED
);
sem_post
(
&
pQInfo
->
dataReady
);
return
TSDB_CODE_SUCCESS
;
}
// filter the qualified
if
((
code
=
doInitQInfo
(
pQInfo
,
pTSBuf
,
tsdb
,
vgId
,
isSTable
))
!=
TSDB_CODE_SUCCESS
)
{
goto
_error
;
...
...
@@ -6108,12 +5832,7 @@ int32_t qCreateQueryInfo(void *tsdb, int32_t vgId, SQueryTableMsg *pQueryMsg, qi
// todo handle the error
/*int32_t ret =*/
tsdbQuerySTableByTagCond
(
tsdb
,
id
->
uid
,
tagCond
,
pQueryMsg
->
tagCondLen
,
pQueryMsg
->
tagNameRelType
,
tbnameCond
,
&
groupInfo
,
pGroupColIndex
,
numOfGroupByCols
);
if
(
groupInfo
.
numOfTables
==
0
)
{
// no qualified tables no need to do query
code
=
TSDB_CODE_SUCCESS
;
goto
_over
;
}
}
else
{
groupInfo
.
numOfTables
=
taosArrayGetSize
(
pTableIdList
);
SArray
*
pTableGroup
=
taosArrayInit
(
1
,
POINTER_BYTES
);
SArray
*
sa
=
taosArrayInit
(
groupInfo
.
numOfTables
,
sizeof
(
STableId
));
...
...
@@ -6142,7 +5861,6 @@ _over:
taosArrayDestroy
(
pTableIdList
);
// if failed to add ref for all meters in this query, abort current query
// atomic_fetch_add_32(&vnodeSelectReqNum, 1);
return
code
;
}
...
...
@@ -6155,7 +5873,7 @@ void qTableQuery(qinfo_t qinfo) {
SQInfo
*
pQInfo
=
(
SQInfo
*
)
qinfo
;
if
(
pQInfo
==
NULL
||
pQInfo
->
signature
!=
pQInfo
)
{
qTrace
(
"
%p freed abort query
"
,
pQInfo
);
qTrace
(
"
QInfo:%p has been freed, no need to execute
"
,
pQInfo
);
return
;
}
...
...
@@ -6268,7 +5986,10 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
size_t
num
=
taosArrayGetSize
(
pQInfo
->
groupInfo
.
pGroupList
);
assert
(
num
==
1
);
// only one group
assert
(
num
==
0
||
num
==
1
);
if
(
num
==
0
)
{
return
;
}
SArray
*
pa
=
taosArrayGetP
(
pQInfo
->
groupInfo
.
pGroupList
,
0
);
num
=
taosArrayGetSize
(
pa
);
...
...
@@ -6320,9 +6041,9 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
memcpy
(
dst
,
data
,
varDataTLen
(
data
));
}
else
{
// todo refactor, return the true length of binary|nchar data
tsdbGetTableTagVal
(
pQInfo
->
tsdb
,
&
item
->
id
,
pExprInfo
[
j
].
base
.
colInfo
.
colId
,
&
type
,
&
bytes
,
&
data
);
assert
(
bytes
=
=
pExprInfo
[
j
].
bytes
&&
type
==
pExprInfo
[
j
].
type
);
assert
(
bytes
<
=
pExprInfo
[
j
].
bytes
&&
type
==
pExprInfo
[
j
].
type
);
char
*
dst
=
pQuery
->
sdata
[
j
]
->
data
+
i
*
bytes
;
char
*
dst
=
pQuery
->
sdata
[
j
]
->
data
+
i
*
pExprInfo
[
j
].
bytes
;
if
(
type
==
TSDB_DATA_TYPE_BINARY
||
type
==
TSDB_DATA_TYPE_NCHAR
)
{
memcpy
(
dst
,
data
,
varDataTLen
(
data
));
}
else
{
...
...
src/query/src/qFilterFunc.c
浏览文件 @
d076b7ce
...
...
@@ -209,7 +209,7 @@ bool like_str(SColumnFilterElem *pFilter, char *minval, char *maxval) {
bool
like_nchar
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
SPatternCompareInfo
info
=
PATTERN_COMPARE_INFO_INITIALIZER
;
return
WCSPatternMatch
((
wchar_t
*
)
pFilter
->
filterInfo
.
pz
,
varDataVal
(
minval
),
varDataLen
(
minval
)
/
TSDB_NCHAR_SIZE
,
&
info
)
==
TSDB_PATTERN_MATCH
;
return
WCSPatternMatch
((
wchar_t
*
)
pFilter
->
filterInfo
.
pz
,
varDataVal
(
minval
),
varDataLen
(
minval
)
/
TSDB_NCHAR_SIZE
,
&
info
)
==
TSDB_PATTERN_MATCH
;
}
////////////////////////////////////////////////////////////////
...
...
src/query/src/qUtil.c
浏览文件 @
d076b7ce
...
...
@@ -137,11 +137,10 @@ void clearFirstNTimeWindow(SQueryRuntimeEnv *pRuntimeEnv, int32_t num) {
for
(
int32_t
k
=
0
;
k
<
pWindowResInfo
->
size
;
++
k
)
{
SWindowResult
*
pResult
=
&
pWindowResInfo
->
pResult
[
k
];
int32_t
*
p
=
(
int32_t
*
)
taosHashGet
(
pWindowResInfo
->
hashList
,
(
const
char
*
)
&
pResult
->
window
.
skey
,
TSDB_KEYSIZE
);
int32_t
v
=
(
*
p
-
num
);
assert
(
v
>=
0
&&
v
<=
pWindowResInfo
->
size
);
taosHashPut
(
pWindowResInfo
->
hashList
,
(
const
char
*
)
&
pResult
->
window
.
skey
,
TSDB_KEYSIZE
,
(
char
*
)
&
v
,
sizeof
(
int32_t
));
taosHashPut
(
pWindowResInfo
->
hashList
,
(
char
*
)
&
pResult
->
window
.
skey
,
TSDB_KEYSIZE
,
(
char
*
)
&
v
,
sizeof
(
int32_t
));
}
pWindowResInfo
->
curIndex
=
-
1
;
...
...
src/query/src/qfill.c
浏览文件 @
d076b7ce
...
...
@@ -79,7 +79,7 @@ SFillInfo* taosInitFillInfo(int32_t order, TSKEY skey, int32_t numOfTags, int32_
int32_t
rowsize
=
0
;
for
(
int32_t
i
=
0
;
i
<
numOfCols
;
++
i
)
{
int32_t
bytes
=
pFillInfo
->
pFillCol
[
i
].
col
.
bytes
;
pFillInfo
->
pData
[
i
]
=
calloc
(
1
,
sizeof
(
tFilePage
)
+
bytes
*
capacity
);
pFillInfo
->
pData
[
i
]
=
calloc
(
1
,
bytes
*
capacity
);
rowsize
+=
bytes
;
}
...
...
@@ -89,6 +89,8 @@ SFillInfo* taosInitFillInfo(int32_t order, TSKEY skey, int32_t numOfTags, int32_
}
pFillInfo
->
rowSize
=
rowsize
;
pFillInfo
->
capacityInRows
=
capacity
;
return
pFillInfo
;
}
...
...
@@ -119,6 +121,17 @@ void taosFillSetStartInfo(SFillInfo* pFillInfo, int32_t numOfRows, TSKEY endKey)
pFillInfo
->
rowIdx
=
0
;
pFillInfo
->
endKey
=
endKey
;
pFillInfo
->
numOfRows
=
numOfRows
;
// ensure the space
if
(
pFillInfo
->
capacityInRows
<
numOfRows
)
{
for
(
int32_t
i
=
0
;
i
<
pFillInfo
->
numOfCols
;
++
i
)
{
char
*
tmp
=
realloc
(
pFillInfo
->
pData
[
i
],
numOfRows
*
pFillInfo
->
pFillCol
[
i
].
col
.
bytes
);
assert
(
tmp
!=
NULL
);
// todo handle error
memset
(
tmp
,
0
,
numOfRows
*
pFillInfo
->
pFillCol
[
i
].
col
.
bytes
);
pFillInfo
->
pData
[
i
]
=
tmp
;
}
}
}
void
taosFillCopyInputDataFromFilePage
(
SFillInfo
*
pFillInfo
,
tFilePage
**
pInput
)
{
...
...
src/query/src/qresultBuf.c
浏览文件 @
d076b7ce
...
...
@@ -5,14 +5,12 @@
#include "tsqlfunction.h"
#include "queryLog.h"
#define DEFAULT_INTERN_BUF_SIZE 16384L
int32_t
createDiskbasedResultBuffer
(
SDiskbasedResultBuf
**
pResultBuf
,
int32_t
size
,
int32_t
rowSize
,
void
*
handle
)
{
SDiskbasedResultBuf
*
pResBuf
=
calloc
(
1
,
sizeof
(
SDiskbasedResultBuf
));
pResBuf
->
numOfRowsPerPage
=
(
DEFAULT_INTERN_BUF_SIZE
-
sizeof
(
tFilePage
))
/
rowSize
;
pResBuf
->
numOfRowsPerPage
=
(
DEFAULT_INTERN_BUF_
PAGE_
SIZE
-
sizeof
(
tFilePage
))
/
rowSize
;
pResBuf
->
numOfPages
=
size
;
pResBuf
->
totalBufSize
=
pResBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_SIZE
;
pResBuf
->
totalBufSize
=
pResBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_
PAGE_
SIZE
;
pResBuf
->
incStep
=
4
;
// init id hash table
...
...
@@ -33,7 +31,7 @@ int32_t createDiskbasedResultBuffer(SDiskbasedResultBuf** pResultBuf, int32_t si
return
TSDB_CODE_CLI_NO_DISKSPACE
;
}
int32_t
ret
=
ftruncate
(
pResBuf
->
fd
,
pResBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_SIZE
);
int32_t
ret
=
ftruncate
(
pResBuf
->
fd
,
pResBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_
PAGE_
SIZE
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
qError
(
"failed to create tmp file: %s on disk. %s"
,
pResBuf
->
path
,
strerror
(
errno
));
return
TSDB_CODE_CLI_NO_DISKSPACE
;
...
...
@@ -55,7 +53,7 @@ int32_t createDiskbasedResultBuffer(SDiskbasedResultBuf** pResultBuf, int32_t si
tFilePage
*
getResultBufferPageById
(
SDiskbasedResultBuf
*
pResultBuf
,
int32_t
id
)
{
assert
(
id
<
pResultBuf
->
numOfPages
&&
id
>=
0
);
return
(
tFilePage
*
)(
pResultBuf
->
pBuf
+
DEFAULT_INTERN_BUF_SIZE
*
id
);
return
(
tFilePage
*
)(
pResultBuf
->
pBuf
+
DEFAULT_INTERN_BUF_
PAGE_
SIZE
*
id
);
}
int32_t
getNumOfResultBufGroupId
(
SDiskbasedResultBuf
*
pResultBuf
)
{
return
taosHashGetSize
(
pResultBuf
->
idsTable
);
}
...
...
@@ -63,7 +61,7 @@ int32_t getNumOfResultBufGroupId(SDiskbasedResultBuf* pResultBuf) { return taosH
int32_t
getResBufSize
(
SDiskbasedResultBuf
*
pResultBuf
)
{
return
pResultBuf
->
totalBufSize
;
}
static
int32_t
extendDiskFileSize
(
SDiskbasedResultBuf
*
pResultBuf
,
int32_t
numOfPages
)
{
assert
(
pResultBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_SIZE
==
pResultBuf
->
totalBufSize
);
assert
(
pResultBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_
PAGE_
SIZE
==
pResultBuf
->
totalBufSize
);
int32_t
ret
=
munmap
(
pResultBuf
->
pBuf
,
pResultBuf
->
totalBufSize
);
pResultBuf
->
numOfPages
+=
numOfPages
;
...
...
@@ -72,14 +70,14 @@ static int32_t extendDiskFileSize(SDiskbasedResultBuf* pResultBuf, int32_t numOf
* disk-based output buffer is exhausted, try to extend the disk-based buffer, the available disk space may
* be insufficient
*/
ret
=
ftruncate
(
pResultBuf
->
fd
,
pResultBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_SIZE
);
ret
=
ftruncate
(
pResultBuf
->
fd
,
pResultBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_
PAGE_
SIZE
);
if
(
ret
!=
0
)
{
// dError("QInfo:%p failed to create intermediate result output file:%s. %s", pQInfo, pSupporter->extBufFile,
// strerror(errno));
return
-
TSDB_CODE_SERV_NO_DISKSPACE
;
}
pResultBuf
->
totalBufSize
=
pResultBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_SIZE
;
pResultBuf
->
totalBufSize
=
pResultBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_
PAGE_
SIZE
;
pResultBuf
->
pBuf
=
mmap
(
NULL
,
pResultBuf
->
totalBufSize
,
PROT_READ
|
PROT_WRITE
,
MAP_SHARED
,
pResultBuf
->
fd
,
0
);
if
(
pResultBuf
->
pBuf
==
MAP_FAILED
)
{
...
...
@@ -174,7 +172,7 @@ tFilePage* getNewDataBuf(SDiskbasedResultBuf* pResultBuf, int32_t groupId, int32
tFilePage
*
page
=
getResultBufferPageById
(
pResultBuf
,
*
pageId
);
// clear memory for the new page
memset
(
page
,
0
,
DEFAULT_INTERN_BUF_SIZE
);
memset
(
page
,
0
,
DEFAULT_INTERN_BUF_
PAGE_
SIZE
);
return
page
;
}
...
...
src/query/src/tvariant.c
浏览文件 @
d076b7ce
...
...
@@ -363,8 +363,6 @@ static int32_t toBinary(tVariant *pVariant, char **pDest, int32_t *pDestSize) {
taosUcs4ToMbs
(
pVariant
->
wpz
,
newSize
,
pBuf
);
free
(
pVariant
->
wpz
);
/* terminated string */
pBuf
[
newSize
]
=
0
;
}
else
{
taosUcs4ToMbs
(
pVariant
->
wpz
,
newSize
,
*
pDest
);
...
...
@@ -598,7 +596,7 @@ static int32_t convertToBool(tVariant *pVariant, int64_t *pDest) {
*
* todo handle the return value
*/
int32_t
tVariantDump
(
tVariant
*
pVariant
,
char
*
payload
,
char
type
)
{
int32_t
tVariantDump
(
tVariant
*
pVariant
,
char
*
payload
,
int16_t
type
,
bool
includeLengthPrefix
)
{
if
(
pVariant
==
NULL
||
(
pVariant
->
nType
!=
0
&&
!
isValidDataType
(
pVariant
->
nType
,
pVariant
->
nLen
)))
{
return
-
1
;
}
...
...
@@ -765,8 +763,9 @@ int32_t tVariantDump(tVariant *pVariant, char *payload, char type) {
}
case
TSDB_DATA_TYPE_BINARY
:
{
if
(
!
includeLengthPrefix
)
{
if
(
pVariant
->
nType
==
TSDB_DATA_TYPE_NULL
)
{
*
payload
=
TSDB_DATA_BINARY_NULL
;
*
(
uint8_t
*
)
payload
=
TSDB_DATA_BINARY_NULL
;
}
else
{
if
(
pVariant
->
nType
!=
TSDB_DATA_TYPE_BINARY
)
{
toBinary
(
pVariant
,
&
payload
,
&
pVariant
->
nLen
);
...
...
@@ -774,6 +773,22 @@ int32_t tVariantDump(tVariant *pVariant, char *payload, char type) {
strncpy
(
payload
,
pVariant
->
pz
,
pVariant
->
nLen
);
}
}
}
else
{
if
(
pVariant
->
nType
==
TSDB_DATA_TYPE_NULL
)
{
setVardataNull
(
payload
,
TSDB_DATA_TYPE_BINARY
);
}
else
{
char
*
p
=
varDataVal
(
payload
);
if
(
pVariant
->
nType
!=
TSDB_DATA_TYPE_BINARY
)
{
toBinary
(
pVariant
,
&
p
,
&
pVariant
->
nLen
);
}
else
{
strncpy
(
p
,
pVariant
->
pz
,
pVariant
->
nLen
);
}
varDataSetLen
(
payload
,
pVariant
->
nLen
);
assert
(
p
==
varDataVal
(
payload
));
}
}
break
;
}
case
TSDB_DATA_TYPE_TIMESTAMP
:
{
...
...
@@ -785,8 +800,9 @@ int32_t tVariantDump(tVariant *pVariant, char *payload, char type) {
break
;
}
case
TSDB_DATA_TYPE_NCHAR
:
{
if
(
!
includeLengthPrefix
)
{
if
(
pVariant
->
nType
==
TSDB_DATA_TYPE_NULL
)
{
*
(
uint32_t
*
)
payload
=
TSDB_DATA_NCHAR_NULL
;
*
(
uint32_t
*
)
payload
=
TSDB_DATA_NCHAR_NULL
;
}
else
{
if
(
pVariant
->
nType
!=
TSDB_DATA_TYPE_NCHAR
)
{
toNchar
(
pVariant
,
&
payload
,
&
pVariant
->
nLen
);
...
...
@@ -794,6 +810,23 @@ int32_t tVariantDump(tVariant *pVariant, char *payload, char type) {
wcsncpy
((
wchar_t
*
)
payload
,
pVariant
->
wpz
,
pVariant
->
nLen
);
}
}
}
else
{
if
(
pVariant
->
nType
==
TSDB_DATA_TYPE_NULL
)
{
setVardataNull
(
payload
,
TSDB_DATA_TYPE_NCHAR
);
}
else
{
char
*
p
=
varDataVal
(
payload
);
if
(
pVariant
->
nType
!=
TSDB_DATA_TYPE_NCHAR
)
{
toNchar
(
pVariant
,
&
p
,
&
pVariant
->
nLen
);
}
else
{
wcsncpy
((
wchar_t
*
)
p
,
pVariant
->
wpz
,
pVariant
->
nLen
);
}
varDataSetLen
(
payload
,
pVariant
->
nLen
);
// the length may be changed after toNchar function called
assert
(
p
==
varDataVal
(
payload
));
}
}
break
;
}
}
...
...
src/rpc/src/rpcMain.c
浏览文件 @
d076b7ce
...
...
@@ -124,8 +124,7 @@ typedef struct SRpcConn {
}
SRpcConn
;
int
tsRpcMaxUdpSize
=
15000
;
// bytes
int
tsRpcProgressTime
=
10
;
// milliseocnds
int
tsProgressTimer
=
100
;
// not configurable
int
tsRpcMaxRetry
;
int
tsRpcHeadSize
;
...
...
@@ -204,7 +203,8 @@ static void rpcUnlockConn(SRpcConn *pConn);
void
*
rpcOpen
(
const
SRpcInit
*
pInit
)
{
SRpcInfo
*
pRpc
;
tsRpcMaxRetry
=
tsRpcMaxTime
*
1000
/
tsRpcProgressTime
;
tsProgressTimer
=
tsRpcTimer
/
2
;
tsRpcMaxRetry
=
tsRpcMaxTime
*
1000
/
tsProgressTimer
;
tsRpcHeadSize
=
RPC_MSG_OVERHEAD
;
tsRpcOverhead
=
sizeof
(
SRpcReqContext
);
...
...
@@ -420,8 +420,11 @@ void rpcSendResponse(const SRpcMsg *pRsp) {
pConn
->
rspMsgLen
=
msgLen
;
if
(
pMsg
->
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
pConn
->
inTranId
--
;
SRpcInfo
*
pRpc
=
pConn
->
pRpc
;
taosTmrStopA
(
&
pConn
->
pTimer
);
// taosTmrReset(rpcProcessIdleTimer, pRpc->idleTime, pConn, pRpc->tmrCtrl, &pConn->pIdleTimer);
// set the idle timer to monitor the activity
taosTmrReset
(
rpcProcessIdleTimer
,
pRpc
->
idleTime
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pIdleTimer
);
rpcSendMsgToPeer
(
pConn
,
msg
,
msgLen
);
pConn
->
secured
=
1
;
// connection shall be secured
...
...
@@ -683,6 +686,7 @@ static SRpcConn *rpcSetupConnToServer(SRpcReqContext *pContext) {
tError
(
"%s %p, failed to set up connection(%s)"
,
pRpc
->
label
,
pContext
->
ahandle
,
tstrerror
(
terrno
));
}
pConn
->
tretry
=
0
;
return
pConn
;
}
...
...
@@ -748,20 +752,28 @@ static int rpcProcessRspHead(SRpcConn *pConn, SRpcHead *pHead) {
taosTmrStopA
(
&
pConn
->
pTimer
);
pConn
->
retry
=
0
;
if
(
pHead
->
code
==
TSDB_CODE_AUTH_REQUIRED
&&
pRpc
->
spi
)
{
tTrace
(
"%s, authentication shall be restarted"
,
pConn
->
info
);
pConn
->
secured
=
0
;
rpcSendMsgToPeer
(
pConn
,
pConn
->
pReqMsg
,
pConn
->
reqMsgLen
);
pConn
->
pTimer
=
taosTmrStart
(
rpcProcessRetryTimer
,
tsRpcTimer
,
pConn
,
pRpc
->
tmrCtrl
);
return
TSDB_CODE_ALREADY_PROCESSED
;
}
if
(
pHead
->
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
{
if
(
pConn
->
tretry
<=
tsRpcMaxRetry
)
{
tTrace
(
"%s, peer is still processing the transaction
"
,
pConn
->
info
);
tTrace
(
"%s, peer is still processing the transaction
, retry:%d"
,
pConn
->
info
,
pConn
->
tretry
);
pConn
->
tretry
++
;
rpcSendReqHead
(
pConn
);
taosTmrReset
(
rpcProcessRetryTimer
,
tsRpcTimer
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pTimer
);
pConn
->
pTimer
=
taosTmrStart
(
rpcProcessRetryTimer
,
tsRpcTimer
,
pConn
,
pRpc
->
tmrCtrl
);
return
TSDB_CODE_ALREADY_PROCESSED
;
}
else
{
// peer still in processing, give up
return
TSDB_CODE_TOO_SLOW
;
tTrace
(
"%s, server processing takes too long time, give up"
,
pConn
->
info
);
pHead
->
code
=
TSDB_CODE_TOO_SLOW
;
}
}
pConn
->
tretry
=
0
;
pConn
->
outType
=
0
;
pConn
->
pReqMsg
=
NULL
;
pConn
->
reqMsgLen
=
0
;
...
...
@@ -820,7 +832,9 @@ static SRpcConn *rpcProcessMsgHead(SRpcInfo *pRpc, SRecvInfo *pRecv) {
if
(
rpcIsReq
(
pHead
->
msgType
)
)
{
terrno
=
rpcProcessReqHead
(
pConn
,
pHead
);
pConn
->
connType
=
pRecv
->
connType
;
taosTmrReset
(
rpcProcessIdleTimer
,
pRpc
->
idleTime
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pIdleTimer
);
// client shall send the request within tsRpcTime again, put 20 mseconds tolerance
taosTmrReset
(
rpcProcessIdleTimer
,
tsRpcTimer
+
20
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pIdleTimer
);
}
else
{
terrno
=
rpcProcessRspHead
(
pConn
,
pHead
);
}
...
...
@@ -935,7 +949,7 @@ static void rpcProcessIncomingMsg(SRpcConn *pConn, SRpcHead *pHead) {
if
(
rpcIsReq
(
pHead
->
msgType
)
)
{
rpcMsg
.
handle
=
pConn
;
taosTmrReset
(
rpcProcessProgressTimer
,
tsRpcTimer
/
2
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pTimer
);
pConn
->
pTimer
=
taosTmrStart
(
rpcProcessProgressTimer
,
tsProgressTimer
,
pConn
,
pRpc
->
tmrCtrl
);
(
*
(
pRpc
->
cfp
))(
&
rpcMsg
,
NULL
);
}
else
{
// it's a response
...
...
@@ -943,14 +957,12 @@ static void rpcProcessIncomingMsg(SRpcConn *pConn, SRpcHead *pHead) {
rpcMsg
.
handle
=
pContext
->
ahandle
;
pConn
->
pContext
=
NULL
;
if
(
pHead
->
code
==
TSDB_CODE_AUTH_REQUIRED
)
{
pConn
->
secured
=
0
;
rpcSendReqToServer
(
pRpc
,
pContext
);
return
;
}
// for UDP, port may be changed by server, the port in ipSet shall be used for cache
if
(
pHead
->
code
!=
TSDB_CODE_TOO_SLOW
)
{
rpcAddConnIntoCache
(
pRpc
->
pCache
,
pConn
,
pConn
->
peerFqdn
,
pContext
->
ipSet
.
port
[
pContext
->
ipSet
.
inUse
],
pConn
->
connType
);
}
else
{
rpcCloseConn
(
pConn
);
}
if
(
pHead
->
code
==
TSDB_CODE_REDIRECT
)
{
pContext
->
redirect
++
;
...
...
@@ -1039,6 +1051,7 @@ static void rpcSendErrorMsgToPeer(SRecvInfo *pRecv, int32_t code) {
pReplyHead
->
sourceId
=
pRecvHead
->
destId
;
pReplyHead
->
destId
=
pRecvHead
->
sourceId
;
pReplyHead
->
linkUid
=
pRecvHead
->
linkUid
;
pReplyHead
->
ahandle
=
pRecvHead
->
ahandle
;
pReplyHead
->
code
=
htonl
(
code
);
msgLen
=
sizeof
(
SRpcHead
);
...
...
@@ -1095,8 +1108,8 @@ static void rpcSendReqToServer(SRpcInfo *pRpc, SRpcReqContext *pContext) {
pConn
->
reqMsgLen
=
msgLen
;
pConn
->
pContext
=
pContext
;
taosTmrReset
(
rpcProcessRetryTimer
,
tsRpcTimer
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pTimer
);
rpcSendMsgToPeer
(
pConn
,
msg
,
msgLen
);
taosTmrReset
(
rpcProcessRetryTimer
,
tsRpcTimer
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pTimer
);
rpcUnlockConn
(
pConn
);
}
...
...
@@ -1172,7 +1185,7 @@ static void rpcProcessRetryTimer(void *param, void *tmrId) {
if
(
pConn
->
retry
<
4
)
{
tTrace
(
"%s, re-send msg:%s to %s:%hu"
,
pConn
->
info
,
taosMsg
[
pConn
->
outType
],
pConn
->
peerFqdn
,
pConn
->
peerPort
);
rpcSendMsgToPeer
(
pConn
,
pConn
->
pReqMsg
,
pConn
->
reqMsgLen
);
taosTmrReset
(
rpcProcessRetryTimer
,
tsRpcTimer
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pTimer
);
pConn
->
pTimer
=
taosTmrStart
(
rpcProcessRetryTimer
,
tsRpcTimer
,
pConn
,
pRpc
->
tmrCtrl
);
}
else
{
// close the connection
tTrace
(
"%s, failed to send msg:%s to %s:%hu"
,
pConn
->
info
,
taosMsg
[
pConn
->
outType
],
pConn
->
peerFqdn
,
pConn
->
peerPort
);
...
...
@@ -1225,7 +1238,7 @@ static void rpcProcessProgressTimer(void *param, void *tmrId) {
if
(
pConn
->
inType
&&
pConn
->
user
[
0
])
{
tTrace
(
"%s, progress timer expired, send progress"
,
pConn
->
info
);
rpcSendQuickRsp
(
pConn
,
TSDB_CODE_ACTION_IN_PROGRESS
);
taosTmrReset
(
rpcProcessProgressTimer
,
tsRpcTimer
/
2
,
pConn
,
pRpc
->
tmrCtrl
,
&
pConn
->
pTimer
);
pConn
->
pTimer
=
taosTmrStart
(
rpcProcessProgressTimer
,
tsProgressTimer
,
pConn
,
pRpc
->
tmrCtrl
);
}
else
{
tTrace
(
"%s, progress timer:%p not processed"
,
pConn
->
info
,
tmrId
);
}
...
...
@@ -1357,15 +1370,17 @@ static int rpcCheckAuthentication(SRpcConn *pConn, char *msg, int msgLen) {
if
((
pConn
->
secured
&&
pHead
->
spi
==
0
)
||
(
pHead
->
spi
==
0
&&
pConn
->
spi
==
0
)){
// secured link, or no authentication
pHead
->
msgLen
=
(
int32_t
)
htonl
((
uint32_t
)
pHead
->
msgLen
);
// tTrace("%s, secured link, no auth is required", pConn->info);
return
0
;
}
if
(
!
rpcIsReq
(
pHead
->
msgType
)
)
{
// for response, if code is auth failure, it shall bypass the auth process
code
=
htonl
(
pHead
->
code
);
if
(
code
==
TSDB_CODE_INVALID_TIME_STAMP
||
code
==
TSDB_CODE_AUTH_FAILURE
||
if
(
code
==
TSDB_CODE_INVALID_TIME_STAMP
||
code
==
TSDB_CODE_AUTH_FAILURE
||
code
==
TSDB_CODE_AUTH_REQUIRED
||
code
==
TSDB_CODE_INVALID_USER
||
code
==
TSDB_CODE_NOT_READY
)
{
pHead
->
msgLen
=
(
int32_t
)
htonl
((
uint32_t
)
pHead
->
msgLen
);
// tTrace("%s, dont check authentication since code is:0x%x", pConn->info, code);
return
0
;
}
}
...
...
@@ -1388,12 +1403,12 @@ static int rpcCheckAuthentication(SRpcConn *pConn, char *msg, int msgLen) {
}
else
{
pHead
->
msgLen
=
(
int32_t
)
htonl
((
uint32_t
)
pHead
->
msgLen
)
-
sizeof
(
SRpcDigest
);
if
(
!
rpcIsReq
(
pHead
->
msgType
)
)
pConn
->
secured
=
1
;
// link is secured for client
//tTrace("%s, message is authenticated", pConn->info);
//
tTrace("%s, message is authenticated", pConn->info);
}
}
}
else
{
tError
(
"%s, auth spi:%d not matched with received:%d"
,
pConn
->
info
,
pConn
->
spi
,
pHead
->
spi
);
code
=
TSDB_CODE_AUTH_FAILURE
;
code
=
pHead
->
spi
?
TSDB_CODE_AUTH_FAILURE
:
TSDB_CODE_AUTH_REQUIRED
;
}
return
code
;
...
...
src/tsdb/src/tsdbFile.c
浏览文件 @
d076b7ce
...
...
@@ -288,7 +288,11 @@ int tsdbCopyBlockDataInFile(SFile *pOutFile, SFile *pInFile, SCompInfo *pCompInf
static
int
compFGroupKey
(
const
void
*
key
,
const
void
*
fgroup
)
{
int
fid
=
*
(
int
*
)
key
;
SFileGroup
*
pFGroup
=
(
SFileGroup
*
)
fgroup
;
return
(
fid
-
pFGroup
->
fileId
);
if
(
fid
==
pFGroup
->
fileId
)
{
return
0
;
}
else
{
return
fid
>
pFGroup
->
fileId
?
1
:-
1
;
}
}
static
int
compFGroup
(
const
void
*
arg1
,
const
void
*
arg2
)
{
...
...
src/tsdb/src/tsdbMeta.c
浏览文件 @
d076b7ce
...
...
@@ -102,6 +102,7 @@ STable *tsdbDecodeTable(void *cont, int contLen) {
ptr
=
taosDecodeString
(
ptr
,
&
(
pTable
->
sql
));
}
pTable
->
lastKey
=
TSKEY_INITIAL_VAL
;
return
pTable
;
}
...
...
@@ -250,15 +251,15 @@ int32_t tsdbGetTableTagVal(TsdbRepoT* repo, STableId* id, int32_t colId, int16_t
STsdbMeta
*
pMeta
=
tsdbGetMeta
(
repo
);
STable
*
pTable
=
tsdbGetTableByUid
(
pMeta
,
id
->
uid
);
STSchema
*
pSchema
=
tsdbGetTableTagSchema
(
pMeta
,
pTable
);
STColumn
*
pCol
=
NULL
;
*
val
=
tdQueryTagByID
(
pTable
->
tagVal
,
colId
,
type
);
// todo binary search
for
(
int32_t
col
=
0
;
col
<
schemaNCols
(
pSchema
);
++
col
)
{
STColumn
*
p
=
schemaColAt
(
pSchema
,
col
);
if
(
p
->
colId
==
colId
)
{
pCol
=
p
;
break
;
if
(
*
val
!=
NULL
)
{
switch
(
*
type
)
{
case
TSDB_DATA_TYPE_BINARY
:
case
TSDB_DATA_TYPE_NCHAR
:
*
bytes
=
varDataLen
(
*
val
);
break
;
case
TSDB_DATA_TYPE_NULL
:
*
bytes
=
0
;
break
;
default:
*
bytes
=
tDataTypeDesc
[
*
type
].
nSize
;
break
;
}
}
...
...
@@ -399,6 +400,8 @@ int tsdbCreateTable(TsdbRepoT *repo, STableCfg *pCfg) {
}
}
table
->
lastKey
=
TSKEY_INITIAL_VAL
;
// Register to meta
if
(
newSuper
)
{
tsdbAddTableToMeta
(
pMeta
,
super
,
true
);
...
...
src/tsdb/src/tsdbRWHelper.c
浏览文件 @
d076b7ce
...
...
@@ -448,7 +448,12 @@ int tsdbWriteCompIdx(SRWHelper *pHelper) {
for
(
uint32_t
i
=
0
;
i
<
pHelper
->
config
.
maxTables
;
i
++
)
{
SCompIdx
*
pCompIdx
=
pHelper
->
pCompIdx
+
i
;
if
(
pCompIdx
->
offset
>
0
)
{
buf
=
taosEncodeVariantU32
(
buf
,
i
);
int
drift
=
POINTER_DISTANCE
(
buf
,
pHelper
->
pBuffer
);
if
(
tsizeof
(
pHelper
->
pBuffer
)
-
drift
<
128
)
{
pHelper
->
pBuffer
=
trealloc
(
pHelper
->
pBuffer
,
tsizeof
(
pHelper
->
pBuffer
)
*
2
);
}
buf
=
POINTER_SHIFT
(
pHelper
->
pBuffer
,
drift
);
buf
=
taosEncodeVariant32
(
buf
,
i
);
buf
=
tsdbEncodeSCompIdx
(
buf
,
pCompIdx
);
}
}
...
...
@@ -474,6 +479,7 @@ int tsdbLoadCompIdx(SRWHelper *pHelper, void *target) {
ASSERT
(
pFile
->
info
.
offset
>
TSDB_FILE_HEAD_SIZE
);
if
(
lseek
(
fd
,
pFile
->
info
.
offset
,
SEEK_SET
)
<
0
)
return
-
1
;
if
((
pHelper
->
pBuffer
=
trealloc
(
pHelper
->
pBuffer
,
pFile
->
info
.
len
))
==
NULL
)
return
-
1
;
if
(
tread
(
fd
,
(
void
*
)(
pHelper
->
pBuffer
),
pFile
->
info
.
len
)
<
pFile
->
info
.
len
)
return
-
1
;
if
(
!
taosCheckChecksumWhole
((
uint8_t
*
)(
pHelper
->
pBuffer
),
pFile
->
info
.
len
))
{
...
...
src/tsdb/src/tsdbRead.c
浏览文件 @
d076b7ce
...
...
@@ -95,7 +95,6 @@ typedef struct STsdbQueryHandle {
SQueryFilePos
cur
;
// current position
int16_t
order
;
STimeWindow
window
;
// the primary query time window that applies to all queries
SCompBlock
*
pBlock
;
SDataStatis
*
statis
;
// query level statistics, only one table block statistics info exists at any time
int32_t
numOfBlocks
;
SArray
*
pColumns
;
// column list, SColumnInfoData array list
...
...
@@ -117,6 +116,12 @@ typedef struct STsdbQueryHandle {
}
STsdbQueryHandle
;
static
void
changeQueryHandleForLastrowQuery
(
TsdbQueryHandleT
pqHandle
);
static
void
changeQueryHandleForInterpQuery
(
TsdbQueryHandleT
pHandle
);
static
void
doMergeTwoLevelData
(
STsdbQueryHandle
*
pQueryHandle
,
STableCheckInfo
*
pCheckInfo
,
SCompBlock
*
pBlock
,
SArray
*
sa
);
static
int32_t
binarySearchForKey
(
char
*
pValue
,
int
num
,
TSKEY
key
,
int
order
);
static
int
tsdbReadRowsFromCache
(
SSkipListIterator
*
pIter
,
STable
*
pTable
,
TSKEY
maxKey
,
int
maxRowsToRead
,
TSKEY
*
skey
,
TSKEY
*
ekey
,
STsdbQueryHandle
*
pQueryHandle
);
static
void
tsdbInitDataBlockLoadInfo
(
SDataBlockLoadInfo
*
pBlockLoadInfo
)
{
pBlockLoadInfo
->
slot
=
-
1
;
...
...
@@ -188,9 +193,6 @@ TsdbQueryHandleT* tsdbQueryTables(TsdbRepoT* tsdb, STsdbQueryCond* pCond, STable
}
}
for
(
int32_t
i
=
0
;
i
<
numOfCols
;
++
i
)
{
}
uTrace
(
"%p total numOfTable:%d in query"
,
pQueryHandle
,
taosArrayGetSize
(
pQueryHandle
->
pTableCheckInfo
));
tsdbInitDataBlockLoadInfo
(
&
pQueryHandle
->
dataBlockLoadInfo
);
...
...
@@ -209,13 +211,29 @@ TsdbQueryHandleT tsdbQueryLastRow(TsdbRepoT *tsdb, STsdbQueryCond *pCond, STable
return
pQueryHandle
;
}
SArray
*
tsdbGetQueriedTableIdList
(
TsdbQueryHandleT
*
pHandle
)
{
assert
(
pHandle
!=
NULL
);
STsdbQueryHandle
*
pQueryHandle
=
(
STsdbQueryHandle
*
)
pHandle
;
size_t
size
=
taosArrayGetSize
(
pQueryHandle
->
pTableCheckInfo
);
SArray
*
res
=
taosArrayInit
(
size
,
sizeof
(
STableId
));
for
(
int32_t
i
=
0
;
i
<
size
;
++
i
)
{
STableCheckInfo
*
pCheckInfo
=
taosArrayGet
(
pQueryHandle
->
pTableCheckInfo
,
i
);
taosArrayPush
(
res
,
&
pCheckInfo
->
tableId
);
}
return
res
;
}
TsdbQueryHandleT
tsdbQueryRowsInExternalWindow
(
TsdbRepoT
*
tsdb
,
STsdbQueryCond
*
pCond
,
STableGroupInfo
*
groupList
)
{
STsdbQueryHandle
*
pQueryHandle
=
(
STsdbQueryHandle
*
)
tsdbQueryTables
(
tsdb
,
pCond
,
groupList
);
pQueryHandle
->
type
=
TSDB_QUERY_TYPE_EXTERNAL
;
pQueryHandle
->
order
=
TSDB_ORDER_ASC
;
// pQueryHandle->outputCapacity = 2; // only allowed two rows to be loaded
// changeQueryHandleForLastrow
Query(pQueryHandle);
changeQueryHandleForInterp
Query
(
pQueryHandle
);
return
pQueryHandle
;
}
...
...
@@ -329,12 +347,34 @@ static bool hasMoreDataInCache(STsdbQueryHandle* pHandle) {
return
false
;
}
int32_t
step
=
ASCENDING_TRAVERSE
(
pHandle
->
order
)
?
1
:-
1
;
STimeWindow
*
win
=
&
pHandle
->
cur
.
win
;
pHandle
->
cur
.
rows
=
tsdbReadRowsFromCache
(
pCheckInfo
->
iter
,
pCheckInfo
->
pTableObj
,
pHandle
->
window
.
ekey
,
pHandle
->
outputCapacity
,
&
win
->
skey
,
&
win
->
ekey
,
pHandle
);
// todo refactor API
// update the last key value
pCheckInfo
->
lastKey
=
win
->
ekey
+
step
;
pHandle
->
cur
.
lastKey
=
win
->
ekey
+
step
;
pHandle
->
cur
.
mixBlock
=
true
;
if
(
!
ASCENDING_TRAVERSE
(
pHandle
->
order
))
{
SWAP
(
win
->
skey
,
win
->
ekey
,
TSKEY
);
}
return
true
;
}
static
int32_t
getFileIdFromKey
(
TSKEY
key
,
int32_t
daysPerFile
)
{
if
(
key
==
TSKEY_INITIAL_VAL
)
{
return
INT32_MIN
;
}
int64_t
fid
=
(
int64_t
)(
key
/
(
daysPerFile
*
tsMsPerDay
[
0
]));
// set the starting fileId
if
(
fid
>
INT32_MAX
)
{
if
(
fid
<
0L
&&
llabs
(
fid
)
>
INT32_MAX
)
{
// data value overflow for INT32
fid
=
INT32_MIN
;
}
if
(
fid
>
0L
&&
fid
>
INT32_MAX
)
{
fid
=
INT32_MAX
;
}
...
...
@@ -472,12 +512,6 @@ static SArray* getDefaultLoadColumns(STsdbQueryHandle* pQueryHandle, bool loadTS
return
pLocalIdList
;
}
static
void
doMergeTwoLevelData
(
STsdbQueryHandle
*
pQueryHandle
,
STableCheckInfo
*
pCheckInfo
,
SCompBlock
*
pBlock
,
SArray
*
sa
);
static
int32_t
binarySearchForKey
(
char
*
pValue
,
int
num
,
TSKEY
key
,
int
order
);
static
int
tsdbReadRowsFromCache
(
SSkipListIterator
*
pIter
,
STable
*
pTable
,
TSKEY
maxKey
,
int
maxRowsToRead
,
TSKEY
*
skey
,
TSKEY
*
ekey
,
STsdbQueryHandle
*
pQueryHandle
);
static
bool
doLoadFileDataBlock
(
STsdbQueryHandle
*
pQueryHandle
,
SCompBlock
*
pBlock
,
STableCheckInfo
*
pCheckInfo
)
{
STsdbRepo
*
pRepo
=
pQueryHandle
->
pTsdb
;
SCompData
*
data
=
calloc
(
1
,
sizeof
(
SCompData
)
+
sizeof
(
SCompCol
)
*
pBlock
->
numOfCols
);
...
...
@@ -581,11 +615,19 @@ static void handleDataMergeIfNeeded(STsdbQueryHandle* pQueryHandle, SCompBlock*
}
SArray
*
sa
=
getDefaultLoadColumns
(
pQueryHandle
,
true
);
doLoadFileDataBlock
(
pQueryHandle
,
pBlock
,
pCheckInfo
);
doMergeTwoLevelData
(
pQueryHandle
,
pCheckInfo
,
pBlock
,
sa
);
taosArrayDestroy
(
sa
);
}
else
{
/*
* no data in cache, only load data from file
* during the query processing, data in cache will not be checked anymore.
*
* Here the buffer is not enough, so only part of file block can be loaded into memory buffer
*/
assert
(
pQueryHandle
->
outputCapacity
>=
binfo
.
rows
);
pQueryHandle
->
realNumOfRows
=
binfo
.
rows
;
cur
->
rows
=
binfo
.
rows
;
...
...
@@ -622,15 +664,14 @@ static bool loadFileDataBlock(STsdbQueryHandle* pQueryHandle, SCompBlock* pBlock
handleDataMergeIfNeeded
(
pQueryHandle
,
pBlock
,
pCheckInfo
);
}
}
else
{
//desc order, query ended in current block
if
(
pQueryHandle
->
window
.
ekey
>
pBlock
->
keyFirst
)
{
if
(
pQueryHandle
->
window
.
ekey
>
pBlock
->
keyFirst
||
pCheckInfo
->
lastKey
<
pBlock
->
keyLast
)
{
if
(
!
doLoadFileDataBlock
(
pQueryHandle
,
pBlock
,
pCheckInfo
))
{
return
false
;
}
SDataCols
*
p
DataCols
=
pCheckInfo
->
pDataCols
;
SDataCols
*
p
TSCol
=
pQueryHandle
->
rhelper
.
pDataCols
[
0
]
;
if
(
pCheckInfo
->
lastKey
<
pBlock
->
keyLast
)
{
cur
->
pos
=
binarySearchForKey
(
pDataCols
->
cols
[
0
].
pData
,
pBlock
->
numOfRows
,
pCheckInfo
->
lastKey
,
pQueryHandle
->
order
);
cur
->
pos
=
binarySearchForKey
(
pTSCol
->
cols
[
0
].
pData
,
pBlock
->
numOfRows
,
pCheckInfo
->
lastKey
,
pQueryHandle
->
order
);
}
else
{
cur
->
pos
=
pBlock
->
numOfRows
-
1
;
}
...
...
@@ -1011,7 +1052,7 @@ int32_t binarySearchForKey(char* pValue, int num, TSKEY key, int order) {
firstPos
=
0
;
lastPos
=
num
-
1
;
if
(
order
==
0
)
{
if
(
order
==
TSDB_ORDER_DESC
)
{
// find the first position which is smaller than the key
while
(
1
)
{
if
(
key
>=
keyList
[
lastPos
])
return
lastPos
;
...
...
@@ -1293,7 +1334,7 @@ static bool getDataBlocksInFiles(STsdbQueryHandle* pQueryHandle) {
static
bool
doHasDataInBuffer
(
STsdbQueryHandle
*
pQueryHandle
)
{
size_t
numOfTables
=
taosArrayGetSize
(
pQueryHandle
->
pTableCheckInfo
);
// todo add assert, the value of numOfTables should be less than the maximum value for each vnode capacity
assert
(
numOfTables
<=
((
STsdbRepo
*
)
pQueryHandle
->
pTsdb
)
->
config
.
maxTables
);
while
(
pQueryHandle
->
activeIndex
<
numOfTables
)
{
if
(
hasMoreDataInCache
(
pQueryHandle
))
{
...
...
@@ -1307,12 +1348,116 @@ static bool doHasDataInBuffer(STsdbQueryHandle* pQueryHandle) {
}
// handle data in cache situation
bool
tsdbNextDataBlock
(
TsdbQueryHandleT
*
p
q
Handle
)
{
STsdbQueryHandle
*
pQueryHandle
=
(
STsdbQueryHandle
*
)
p
q
Handle
;
bool
tsdbNextDataBlock
(
TsdbQueryHandleT
*
pHandle
)
{
STsdbQueryHandle
*
pQueryHandle
=
(
STsdbQueryHandle
*
)
pHandle
;
size_t
numOfTables
=
taosArrayGetSize
(
pQueryHandle
->
pTableCheckInfo
);
assert
(
numOfTables
>
0
);
if
(
pQueryHandle
->
type
==
TSDB_QUERY_TYPE_EXTERNAL
)
{
pQueryHandle
->
type
=
TSDB_QUERY_TYPE_ALL
;
pQueryHandle
->
order
=
TSDB_ORDER_DESC
;
if
(
!
tsdbNextDataBlock
(
pHandle
))
{
return
false
;
}
SArray
*
sa
=
getDefaultLoadColumns
(
pQueryHandle
,
true
);
/*SDataBlockInfo* pBlockInfo =*/
tsdbRetrieveDataBlockInfo
(
pHandle
);
/*SArray *pDataBlock = */
tsdbRetrieveDataBlock
(
pHandle
,
sa
);
if
(
pQueryHandle
->
cur
.
win
.
ekey
==
pQueryHandle
->
window
.
skey
)
{
// data already retrieve, discard other data rows and return
int32_t
numOfCols
=
QH_GET_NUM_OF_COLS
(
pQueryHandle
);
for
(
int32_t
i
=
0
;
i
<
numOfCols
;
++
i
)
{
SColumnInfoData
*
pCol
=
taosArrayGet
(
pQueryHandle
->
pColumns
,
i
);
memcpy
(
pCol
->
pData
,
pCol
->
pData
+
pCol
->
info
.
bytes
*
(
pQueryHandle
->
cur
.
rows
-
1
),
pCol
->
info
.
bytes
);
}
pQueryHandle
->
cur
.
win
=
(
STimeWindow
){
pQueryHandle
->
window
.
skey
,
pQueryHandle
->
window
.
skey
};
pQueryHandle
->
window
=
pQueryHandle
->
cur
.
win
;
pQueryHandle
->
cur
.
rows
=
1
;
pQueryHandle
->
type
=
TSDB_QUERY_TYPE_EXTERNAL
;
return
true
;
}
else
{
STsdbQueryHandle
*
pSecQueryHandle
=
calloc
(
1
,
sizeof
(
STsdbQueryHandle
));
pSecQueryHandle
->
order
=
TSDB_ORDER_ASC
;
pSecQueryHandle
->
window
=
(
STimeWindow
)
{
pQueryHandle
->
window
.
skey
,
INT64_MAX
};
pSecQueryHandle
->
pTsdb
=
pQueryHandle
->
pTsdb
;
pSecQueryHandle
->
type
=
TSDB_QUERY_TYPE_ALL
;
pSecQueryHandle
->
cur
.
fid
=
-
1
;
pSecQueryHandle
->
cur
.
win
=
TSWINDOW_INITIALIZER
;
pSecQueryHandle
->
checkFiles
=
true
;
pSecQueryHandle
->
activeIndex
=
0
;
pSecQueryHandle
->
outputCapacity
=
((
STsdbRepo
*
)
pSecQueryHandle
->
pTsdb
)
->
config
.
maxRowsPerFileBlock
;
tsdbInitReadHelper
(
&
pSecQueryHandle
->
rhelper
,
(
STsdbRepo
*
)
pSecQueryHandle
->
pTsdb
);
// allocate buffer in order to load data blocks from file
int32_t
numOfCols
=
QH_GET_NUM_OF_COLS
(
pQueryHandle
);
pSecQueryHandle
->
statis
=
calloc
(
numOfCols
,
sizeof
(
SDataStatis
));
pSecQueryHandle
->
pColumns
=
taosArrayInit
(
numOfCols
,
sizeof
(
SColumnInfoData
));
for
(
int32_t
i
=
0
;
i
<
numOfCols
;
++
i
)
{
SColumnInfoData
colInfo
=
{{
0
},
0
};
SColumnInfoData
*
pCol
=
taosArrayGet
(
pQueryHandle
->
pColumns
,
i
);
colInfo
.
info
=
pCol
->
info
;
colInfo
.
pData
=
calloc
(
1
,
EXTRA_BYTES
+
pQueryHandle
->
outputCapacity
*
pCol
->
info
.
bytes
);
taosArrayPush
(
pSecQueryHandle
->
pColumns
,
&
colInfo
);
pSecQueryHandle
->
statis
[
i
].
colId
=
colInfo
.
info
.
colId
;
}
size_t
si
=
taosArrayGetSize
(
pQueryHandle
->
pTableCheckInfo
);
pSecQueryHandle
->
pTableCheckInfo
=
taosArrayInit
(
si
,
sizeof
(
STableCheckInfo
));
STsdbMeta
*
pMeta
=
tsdbGetMeta
(
pQueryHandle
->
pTsdb
);
assert
(
pMeta
!=
NULL
);
for
(
int32_t
j
=
0
;
j
<
si
;
++
j
)
{
STableCheckInfo
*
pCheckInfo
=
(
STableCheckInfo
*
)
taosArrayGet
(
pQueryHandle
->
pTableCheckInfo
,
j
);
STableCheckInfo
info
=
{
.
lastKey
=
pSecQueryHandle
->
window
.
skey
,
.
tableId
=
pCheckInfo
->
tableId
,
.
pTableObj
=
pCheckInfo
->
pTableObj
,
};
taosArrayPush
(
pSecQueryHandle
->
pTableCheckInfo
,
&
info
);
}
tsdbInitDataBlockLoadInfo
(
&
pSecQueryHandle
->
dataBlockLoadInfo
);
tsdbInitCompBlockLoadInfo
(
&
pSecQueryHandle
->
compBlockLoadInfo
);
bool
ret
=
tsdbNextDataBlock
((
void
*
)
pSecQueryHandle
);
assert
(
ret
);
/*SDataBlockInfo* pBlockInfo =*/
tsdbRetrieveDataBlockInfo
((
void
*
)
pSecQueryHandle
);
/*SArray *pDataBlock = */
tsdbRetrieveDataBlock
((
void
*
)
pSecQueryHandle
,
sa
);
for
(
int32_t
i
=
0
;
i
<
numOfCols
;
++
i
)
{
SColumnInfoData
*
pCol
=
taosArrayGet
(
pQueryHandle
->
pColumns
,
i
);
memcpy
(
pCol
->
pData
,
pCol
->
pData
+
pCol
->
info
.
bytes
*
(
pQueryHandle
->
cur
.
rows
-
1
),
pCol
->
info
.
bytes
);
SColumnInfoData
*
pCol1
=
taosArrayGet
(
pSecQueryHandle
->
pColumns
,
i
);
assert
(
pCol
->
info
.
colId
==
pCol1
->
info
.
colId
);
memcpy
(
pCol
->
pData
+
pCol
->
info
.
bytes
,
pCol1
->
pData
,
pCol1
->
info
.
bytes
);
}
SColumnInfoData
*
pTSCol
=
taosArrayGet
(
pQueryHandle
->
pColumns
,
0
);
pQueryHandle
->
cur
.
win
=
(
STimeWindow
){((
TSKEY
*
)
pTSCol
->
pData
)[
0
],
((
TSKEY
*
)
pTSCol
->
pData
)[
1
]};
pQueryHandle
->
window
=
pQueryHandle
->
cur
.
win
;
pQueryHandle
->
cur
.
rows
=
2
;
tsdbCleanupQueryHandle
(
pSecQueryHandle
);
}
pQueryHandle
->
type
=
TSDB_QUERY_TYPE_EXTERNAL
;
return
true
;
}
if
(
pQueryHandle
->
checkFiles
)
{
if
(
getDataBlocksInFiles
(
pQueryHandle
))
{
return
true
;
...
...
@@ -1322,7 +1467,6 @@ bool tsdbNextDataBlock(TsdbQueryHandleT* pqHandle) {
pQueryHandle
->
checkFiles
=
false
;
}
// TODO: opt by using lastKeyOnFile
// TODO: opt by consider the scan order
return
doHasDataInBuffer
(
pQueryHandle
);
}
...
...
@@ -1336,23 +1480,25 @@ void changeQueryHandleForLastrowQuery(TsdbQueryHandleT pqHandle) {
// todo consider the query time window, current last_row does not apply the query time window
size_t
numOfTables
=
taosArrayGetSize
(
pQueryHandle
->
pTableCheckInfo
);
TSKEY
key
=
0
;
TSKEY
key
=
TSKEY_INITIAL_VAL
;
int32_t
index
=
-
1
;
for
(
int32_t
i
=
0
;
i
<
numOfTables
;
++
i
)
{
STableCheckInfo
*
pCheckInfo
=
taosArrayGet
(
pQueryHandle
->
pTableCheckInfo
,
i
);
if
(
pCheckInfo
->
pTableObj
->
lastKey
>
key
)
{
//todo lastKey should not be 0 by default
if
(
pCheckInfo
->
pTableObj
->
tableId
.
uid
==
12094628167747
)
{
printf
(
"abc
\n
"
);
}
if
(
pCheckInfo
->
pTableObj
->
lastKey
>
key
)
{
key
=
pCheckInfo
->
pTableObj
->
lastKey
;
index
=
i
;
}
}
// todo, there are no data in all the tables. opt performance
if
(
index
==
-
1
)
{
return
;
}
// erase all other elements in array list
, todo refactor
// erase all other elements in array list
size_t
size
=
taosArrayGetSize
(
pQueryHandle
->
pTableCheckInfo
);
for
(
int32_t
i
=
0
;
i
<
size
;
++
i
)
{
if
(
i
==
index
)
{
...
...
@@ -1371,9 +1517,7 @@ void changeQueryHandleForLastrowQuery(TsdbQueryHandleT pqHandle) {
}
STableCheckInfo
info
=
*
(
STableCheckInfo
*
)
taosArrayGet
(
pQueryHandle
->
pTableCheckInfo
,
index
);
taosArrayDestroy
(
pQueryHandle
->
pTableCheckInfo
);
pQueryHandle
->
pTableCheckInfo
=
taosArrayInit
(
1
,
sizeof
(
STableCheckInfo
));
taosArrayClear
(
pQueryHandle
->
pTableCheckInfo
);
info
.
lastKey
=
key
;
taosArrayPush
(
pQueryHandle
->
pTableCheckInfo
,
&
info
);
...
...
@@ -1382,6 +1526,43 @@ void changeQueryHandleForLastrowQuery(TsdbQueryHandleT pqHandle) {
pQueryHandle
->
window
=
(
STimeWindow
)
{
key
,
key
};
}
static
void
changeQueryHandleForInterpQuery
(
TsdbQueryHandleT
pHandle
)
{
// filter the queried time stamp in the first place
STsdbQueryHandle
*
pQueryHandle
=
(
STsdbQueryHandle
*
)
pHandle
;
pQueryHandle
->
order
=
TSDB_ORDER_DESC
;
assert
(
pQueryHandle
->
window
.
skey
==
pQueryHandle
->
window
.
ekey
);
// starts from the buffer in case of descending timestamp order check data blocks
// todo consider the query time window, current last_row does not apply the query time window
size_t
numOfTables
=
taosArrayGetSize
(
pQueryHandle
->
pTableCheckInfo
);
int32_t
i
=
0
;
while
(
i
<
numOfTables
)
{
STableCheckInfo
*
pCheckInfo
=
taosArrayGet
(
pQueryHandle
->
pTableCheckInfo
,
i
);
if
(
pQueryHandle
->
window
.
skey
<=
pCheckInfo
->
pTableObj
->
lastKey
&&
pCheckInfo
->
pTableObj
->
lastKey
!=
TSKEY_INITIAL_VAL
)
{
break
;
}
i
++
;
}
// there are no data in all the tables
if
(
i
==
numOfTables
)
{
return
;
}
STableCheckInfo
info
=
*
(
STableCheckInfo
*
)
taosArrayGet
(
pQueryHandle
->
pTableCheckInfo
,
i
);
taosArrayClear
(
pQueryHandle
->
pTableCheckInfo
);
info
.
lastKey
=
pQueryHandle
->
window
.
skey
;
taosArrayPush
(
pQueryHandle
->
pTableCheckInfo
,
&
info
);
// update the query time window according to the chosen last timestamp
pQueryHandle
->
window
=
(
STimeWindow
)
{
info
.
lastKey
,
TSKEY_INITIAL_VAL
};
}
static
int
tsdbReadRowsFromCache
(
SSkipListIterator
*
pIter
,
STable
*
pTable
,
TSKEY
maxKey
,
int
maxRowsToRead
,
TSKEY
*
skey
,
TSKEY
*
ekey
,
STsdbQueryHandle
*
pQueryHandle
)
{
int
numOfRows
=
0
;
...
...
@@ -1466,58 +1647,29 @@ static int tsdbReadRowsFromCache(SSkipListIterator* pIter, STable* pTable, TSKEY
return
numOfRows
;
}
// copy data from cache into data block
SDataBlockInfo
tsdbRetrieveDataBlockInfo
(
TsdbQueryHandleT
*
pQueryHandle
)
{
STsdbQueryHandle
*
pHandle
=
(
STsdbQueryHandle
*
)
pQueryHandle
;
int32_t
step
=
ASCENDING_TRAVERSE
(
pHandle
->
order
)
?
1
:-
1
;
SQueryFilePos
*
cur
=
&
pHandle
->
cur
;
STable
*
pTable
=
NULL
;
// there are data in file
if
(
pHandle
->
cur
.
fid
>=
0
)
{
STableBlockInfo
*
pBlockInfo
=
&
pHandle
->
pDataBlockInfo
[
pHandle
->
cur
.
slot
];
STable
*
pTable
=
pBlockInfo
->
pTableCheckInfo
->
pTableObj
;
SDataBlockInfo
blockInfo
=
{
.
uid
=
pTable
->
tableId
.
uid
,
.
tid
=
pTable
->
tableId
.
tid
,
.
rows
=
pHandle
->
cur
.
rows
,
.
window
=
pHandle
->
cur
.
win
,
.
numOfCols
=
QH_GET_NUM_OF_COLS
(
pHandle
),
};
return
blockInfo
;
STableBlockInfo
*
pBlockInfo
=
&
pHandle
->
pDataBlockInfo
[
cur
->
slot
];
pTable
=
pBlockInfo
->
pTableCheckInfo
->
pTableObj
;
}
else
{
STableCheckInfo
*
pCheckInfo
=
taosArrayGet
(
pHandle
->
pTableCheckInfo
,
pHandle
->
activeIndex
);
SQueryFilePos
*
cur
=
&
pHandle
->
cur
;
STable
*
pTable
=
pCheckInfo
->
pTableObj
;
if
(
pTable
->
mem
!=
NULL
)
{
// create mem table iterator if it is not created yet
assert
(
pCheckInfo
->
iter
!=
NULL
);
STimeWindow
*
win
=
&
cur
->
win
;
pHandle
->
cur
.
rows
=
tsdbReadRowsFromCache
(
pCheckInfo
->
iter
,
pCheckInfo
->
pTableObj
,
pHandle
->
window
.
ekey
,
pHandle
->
outputCapacity
,
&
win
->
skey
,
&
win
->
ekey
,
pHandle
);
// todo refactor API
// update the last key value
pCheckInfo
->
lastKey
=
win
->
ekey
+
step
;
cur
->
lastKey
=
win
->
ekey
+
step
;
cur
->
mixBlock
=
true
;
}
if
(
!
ASCENDING_TRAVERSE
(
pHandle
->
order
))
{
SWAP
(
pHandle
->
cur
.
win
.
skey
,
pHandle
->
cur
.
win
.
ekey
,
TSKEY
);
pTable
=
pCheckInfo
->
pTableObj
;
}
SDataBlockInfo
blockInfo
=
{
.
uid
=
pTable
->
tableId
.
uid
,
.
tid
=
pTable
->
tableId
.
tid
,
.
rows
=
pHandle
->
cur
.
rows
,
.
window
=
pHandle
->
cur
.
win
,
.
rows
=
cur
->
rows
,
.
window
=
cur
->
win
,
.
numOfCols
=
QH_GET_NUM_OF_COLS
(
pHandle
),
};
return
blockInfo
;
}
}
/*
...
...
@@ -1536,6 +1688,13 @@ int32_t tsdbRetrieveDataBlockStatisInfo(TsdbQueryHandleT* pQueryHandle, SDataSta
((
cur
->
slot
==
pHandle
->
numOfBlocks
)
&&
(
cur
->
slot
==
0
)));
STableBlockInfo
*
pBlockInfo
=
&
pHandle
->
pDataBlockInfo
[
cur
->
slot
];
// file block with subblocks has no statistics data
if
(
pBlockInfo
->
compBlock
->
numOfSubBlocks
>
1
)
{
*
pBlockStatis
=
NULL
;
return
TSDB_CODE_SUCCESS
;
}
tsdbLoadCompData
(
&
pHandle
->
rhelper
,
pBlockInfo
->
compBlock
,
NULL
);
size_t
numOfCols
=
QH_GET_NUM_OF_COLS
(
pHandle
);
...
...
@@ -1708,12 +1867,7 @@ void filterPrepare(void* expr, void* param) {
pInfo
->
q
=
(
char
*
)
pCond
->
arr
;
}
else
{
pInfo
->
q
=
calloc
(
1
,
pSchema
->
bytes
);
if
(
pSchema
->
type
==
TSDB_DATA_TYPE_BINARY
||
pSchema
->
type
==
TSDB_DATA_TYPE_NCHAR
)
{
tVariantDump
(
pCond
,
varDataVal
(
pInfo
->
q
),
pSchema
->
type
);
varDataSetLen
(
pInfo
->
q
,
pCond
->
nLen
);
// the length may be changed after dump, so assign its value after dump
}
else
{
tVariantDump
(
pCond
,
pInfo
->
q
,
pSchema
->
type
);
}
tVariantDump
(
pCond
,
pInfo
->
q
,
pSchema
->
type
,
true
);
}
}
...
...
@@ -1844,6 +1998,7 @@ bool indexedNodeFilterFp(const void* pNode, void* param) {
}
else
{
val
=
tdGetKVRowValOfCol
(
elem
->
pTable
->
tagVal
,
pInfo
->
sch
.
colId
);
}
//todo :the val is possible to be null, so check it out carefully
int32_t
ret
=
0
;
if
(
type
==
TSDB_DATA_TYPE_BINARY
||
type
==
TSDB_DATA_TYPE_NCHAR
)
{
...
...
src/util/inc/hash.h
浏览文件 @
d076b7ce
...
...
@@ -30,24 +30,19 @@ typedef void (*_hash_free_fn_t)(void *param);
typedef
struct
SHashNode
{
char
*
key
;
union
{
//
union {
struct
SHashNode
*
prev
;
struct
SHashEntry
*
prev1
;
};
//
struct SHashEntry *prev1;
//
};
//
struct
SHashNode
*
next
;
uint32_t
hashVal
;
// the hash value of key, if hashVal == HASH_VALUE_IN_TRASH, this node is moved to trash
uint32_t
keyLen
;
// length of the key
char
data
[];
}
SHashNode
;
typedef
struct
SHashEntry
{
SHashNode
*
next
;
uint32_t
num
;
}
SHashEntry
;
typedef
struct
SHashObj
{
SHash
Entry
**
hashList
;
SHash
Node
**
hashList
;
size_t
capacity
;
// number of slots
size_t
size
;
// number of elements in hash table
_hash_fn_t
hashFp
;
// hash function
...
...
src/util/inc/tutil.h
浏览文件 @
d076b7ce
...
...
@@ -46,7 +46,7 @@ extern "C" {
// Pointer p drift right by b bytes
#define POINTER_SHIFT(p, b) ((void *)((char *)(p) + (b)))
#define POINTER_DISTANCE(p1, p2) ((char *)
p1 - (char *)p2)
#define POINTER_DISTANCE(p1, p2) ((char *)
(p1) - (char *)(p2))
#ifndef NDEBUG
#define ASSERT(x) assert(x)
...
...
src/util/src/hash.c
浏览文件 @
d076b7ce
...
...
@@ -83,17 +83,10 @@ static FORCE_INLINE int32_t taosHashCapacity(int32_t length) {
int32_t
len
=
MIN
(
length
,
HASH_MAX_CAPACITY
);
uint32_t
i
=
4
;
while
(
i
<
len
)
i
=
(
i
<<
1
U
);
while
(
i
<
len
)
i
=
(
i
<<
1
u
);
return
i
;
}
/**
* inplace update node in hash table
* @param pHashObj hash table object
* @param pNode hash data node
*/
static
void
doUpdateHashTable
(
SHashObj
*
pHashObj
,
SHashNode
*
pNode
);
/**
* Get SHashNode from hashlist, nodes from trash are not included.
* @param pHashObj Cache objection
...
...
@@ -106,9 +99,8 @@ FORCE_INLINE SHashNode *doGetNodeFromHashTable(SHashObj *pHashObj, const void *k
uint32_t
hash
=
(
*
pHashObj
->
hashFp
)(
key
,
keyLen
);
int32_t
slot
=
HASH_INDEX
(
hash
,
pHashObj
->
capacity
);
SHash
Entry
*
pEntry
=
pHashObj
->
hashList
[
slot
];
SHash
Node
*
pNode
=
pHashObj
->
hashList
[
slot
];
SHashNode
*
pNode
=
pEntry
->
next
;
while
(
pNode
)
{
if
((
pNode
->
keyLen
==
keyLen
)
&&
(
memcmp
(
pNode
->
key
,
key
,
keyLen
)
==
0
))
{
break
;
...
...
@@ -190,17 +182,13 @@ SHashObj *taosHashInit(size_t capacity, _hash_fn_t fn, bool threadsafe) {
pHashObj
->
hashFp
=
fn
;
pHashObj
->
hashList
=
(
SHash
Entry
**
)
calloc
(
pHashObj
->
capacity
,
sizeof
(
SHashEntry
*
)
);
pHashObj
->
hashList
=
(
SHash
Node
**
)
calloc
(
pHashObj
->
capacity
,
POINTER_BYTES
);
if
(
pHashObj
->
hashList
==
NULL
)
{
free
(
pHashObj
);
uError
(
"failed to allocate memory, reason:%s"
,
strerror
(
errno
));
return
NULL
;
}
for
(
int32_t
i
=
0
;
i
<
pHashObj
->
capacity
;
++
i
)
{
pHashObj
->
hashList
[
i
]
=
calloc
(
1
,
sizeof
(
SHashEntry
));
}
if
(
threadsafe
)
{
#if defined(LINUX)
pHashObj
->
lock
=
calloc
(
1
,
sizeof
(
pthread_rwlock_t
));
...
...
@@ -252,7 +240,18 @@ int32_t taosHashPut(SHashObj *pHashObj, const void *key, size_t keyLen, void *da
return
-
1
;
}
doUpdateHashTable
(
pHashObj
,
pNewNode
);
if
(
pNewNode
->
prev
)
{
pNewNode
->
prev
->
next
=
pNewNode
;
}
else
{
int32_t
slot
=
HASH_INDEX
(
pNewNode
->
hashVal
,
pHashObj
->
capacity
);
assert
(
pHashObj
->
hashList
[
slot
]
==
pNode
);
pHashObj
->
hashList
[
slot
]
=
pNewNode
;
}
if
(
pNewNode
->
next
)
{
(
pNewNode
->
next
)
->
prev
=
pNewNode
;
}
}
__unlock
(
pHashObj
->
lock
);
...
...
@@ -287,24 +286,19 @@ void taosHashRemove(SHashObj *pHashObj, const void *key, size_t keyLen) {
}
SHashNode
*
pNext
=
pNode
->
next
;
if
(
pNode
->
prev
!
=
NULL
)
{
if
(
pNode
->
prev
=
=
NULL
)
{
int32_t
slot
=
HASH_INDEX
(
val
,
pHashObj
->
capacity
);
if
(
pHashObj
->
hashList
[
slot
]
->
next
==
pNode
)
{
pHashObj
->
hashList
[
slot
]
->
next
=
pNext
;
assert
(
pHashObj
->
hashList
[
slot
]
==
pNode
);
pHashObj
->
hashList
[
slot
]
=
pNext
;
}
else
{
pNode
->
prev
->
next
=
pNext
;
}
}
if
(
pNext
!=
NULL
)
{
pNext
->
prev
=
pNode
->
prev
;
}
uint32_t
index
=
HASH_INDEX
(
pNode
->
hashVal
,
pHashObj
->
capacity
);
SHashEntry
*
pEntry
=
pHashObj
->
hashList
[
index
];
pEntry
->
num
--
;
pHashObj
->
size
--
;
pNode
->
next
=
NULL
;
...
...
@@ -325,8 +319,7 @@ void taosHashCleanup(SHashObj *pHashObj) {
if
(
pHashObj
->
hashList
)
{
for
(
int32_t
i
=
0
;
i
<
pHashObj
->
capacity
;
++
i
)
{
SHashEntry
*
pEntry
=
pHashObj
->
hashList
[
i
];
pNode
=
pEntry
->
next
;
pNode
=
pHashObj
->
hashList
[
i
];
while
(
pNode
)
{
pNext
=
pNode
->
next
;
...
...
@@ -337,8 +330,6 @@ void taosHashCleanup(SHashObj *pHashObj) {
free
(
pNode
);
pNode
=
pNext
;
}
tfree
(
pEntry
);
}
free
(
pHashObj
->
hashList
);
...
...
@@ -385,13 +376,13 @@ bool taosHashIterNext(SHashMutableIterator *pIter) {
assert
(
pIter
->
pCur
==
NULL
&&
pIter
->
pNext
==
NULL
);
while
(
1
)
{
SHash
Entry
*
pEntry
=
pIter
->
pHashObj
->
hashList
[
pIter
->
entryIndex
];
if
(
pEntry
->
next
==
NULL
)
{
SHash
Node
*
pEntry
=
pIter
->
pHashObj
->
hashList
[
pIter
->
entryIndex
];
if
(
pEntry
==
NULL
)
{
pIter
->
entryIndex
++
;
continue
;
}
pIter
->
pCur
=
pEntry
->
next
;
pIter
->
pCur
=
pEntry
;
if
(
pIter
->
pCur
->
next
)
{
pIter
->
pNext
=
pIter
->
pCur
->
next
;
...
...
@@ -444,23 +435,23 @@ int32_t taosHashGetMaxOverflowLinkLength(const SHashObj *pHashObj) {
int32_t
num
=
0
;
for
(
int32_t
i
=
0
;
i
<
pHashObj
->
size
;
++
i
)
{
SHashEntry
*
pEntry
=
pHashObj
->
hashList
[
i
];
if
(
num
<
pEntry
->
num
)
{
num
=
pEntry
->
num
;
}
SHashNode
*
pEntry
=
pHashObj
->
hashList
[
i
];
if
(
pEntry
==
NULL
)
{
continue
;
}
return
num
;
}
void
doUpdateHashTable
(
SHashObj
*
pHashObj
,
SHashNode
*
pNode
)
{
if
(
pNode
->
prev1
)
{
pNode
->
prev1
->
next
=
pNode
;
int32_t
j
=
0
;
while
(
pEntry
!=
NULL
)
{
pEntry
=
pEntry
->
next
;
j
++
;
}
if
(
pNode
->
next
)
{
(
pNode
->
next
)
->
prev
=
pNode
;
if
(
num
<
j
)
{
num
=
j
;
}
}
return
num
;
}
void
taosHashTableResize
(
SHashObj
*
pHashObj
)
{
...
...
@@ -479,69 +470,53 @@ void taosHashTableResize(SHashObj *pHashObj) {
return
;
}
// int64_t st = taosGetTimestampUs();
SHashEntry
**
pNewEntry
=
realloc
(
pHashObj
->
hashList
,
sizeof
(
SHashEntry
*
)
*
newSize
);
if
(
pNewEntry
==
NULL
)
{
void
*
pNewEntry
=
realloc
(
pHashObj
->
hashList
,
POINTER_BYTES
*
newSize
);
if
(
pNewEntry
==
NULL
)
{
// todo handle error
// uTrace("cache resize failed due to out of memory, capacity remain:%d", pHashObj->capacity);
return
;
}
pHashObj
->
hashList
=
pNewEntry
;
for
(
int32_t
i
=
pHashObj
->
capacity
;
i
<
newSize
;
++
i
)
{
pHashObj
->
hashList
[
i
]
=
calloc
(
1
,
sizeof
(
SHashEntry
));
}
memset
(
&
pHashObj
->
hashList
[
pHashObj
->
capacity
],
0
,
POINTER_BYTES
*
(
newSize
-
pHashObj
->
capacity
));
pHashObj
->
capacity
=
newSize
;
for
(
int32_t
i
=
0
;
i
<
pHashObj
->
capacity
;
++
i
)
{
SHashEntry
*
pEntry
=
pHashObj
->
hashList
[
i
];
pNode
=
pEntry
->
next
;
pNode
=
pHashObj
->
hashList
[
i
];
if
(
pNode
!=
NULL
)
{
assert
(
pNode
->
prev
1
==
pEntry
&&
pEntry
->
num
>
0
);
assert
(
pNode
->
prev
==
NULL
);
}
while
(
pNode
)
{
int32_t
j
=
HASH_INDEX
(
pNode
->
hashVal
,
pHashObj
->
capacity
);
if
(
j
==
i
)
{
// this key
resid
es in the same slot, no need to relocate it
if
(
j
==
i
)
{
// this key
locat
es in the same slot, no need to relocate it
pNode
=
pNode
->
next
;
}
else
{
pNext
=
pNode
->
next
;
// remove from current slot
assert
(
pNode
->
prev1
!=
NULL
);
if
(
pNode
->
prev1
==
pEntry
)
{
// first node of the overflow linked list
pEntry
->
next
=
pNode
->
next
;
if
(
pNode
->
prev
==
NULL
)
{
// first node of the overflow linked list
pHashObj
->
hashList
[
i
]
=
pNext
;
}
else
{
pNode
->
prev
->
next
=
pN
ode
->
n
ext
;
pNode
->
prev
->
next
=
pNext
;
}
pEntry
->
num
--
;
assert
(
pEntry
->
num
>=
0
);
if
(
pNode
->
next
!=
NULL
)
{
(
pNode
->
next
)
->
prev
=
pNode
->
prev
;
if
(
pNext
!=
NULL
)
{
pNext
->
prev
=
pNode
->
prev
;
}
//
added into new slot
//
clear pointer
pNode
->
next
=
NULL
;
pNode
->
prev1
=
NULL
;
SHashEntry
*
pNewIndexEntry
=
pHashObj
->
hashList
[
j
];
if
(
pNewIndexEntry
->
next
!=
NULL
)
{
assert
(
pNewIndexEntry
->
next
->
prev1
==
pNewIndexEntry
);
pNode
->
prev
=
NULL
;
pNewIndexEntry
->
next
->
prev
=
pNode
;
// added into new slot
SHashNode
*
pNew
=
pHashObj
->
hashList
[
j
];
if
(
pNew
!=
NULL
)
{
assert
(
pNew
->
prev
==
NULL
);
pNew
->
prev
=
pNode
;
}
pNode
->
next
=
pNewIndexEntry
->
next
;
pNode
->
prev1
=
pNewIndexEntry
;
pNewIndexEntry
->
next
=
pNode
;
pNewIndexEntry
->
num
++
;
pNode
->
next
=
pNew
;
pHashObj
->
hashList
[
j
]
=
pNode
;
// continue
pNode
=
pNext
;
...
...
@@ -549,7 +524,6 @@ void taosHashTableResize(SHashObj *pHashObj) {
}
}
// int64_t et = taosGetTimestampUs();
// uTrace("hash table resize completed, new capacity:%d, load factor:%f, elapsed time:%fms", pHashObj->capacity,
// ((double)pHashObj->size) / pHashObj->capacity, (et - st) / 1000.0);
}
...
...
@@ -596,18 +570,16 @@ void doAddToHashTable(SHashObj *pHashObj, SHashNode *pNode) {
assert
(
pNode
!=
NULL
);
int32_t
index
=
HASH_INDEX
(
pNode
->
hashVal
,
pHashObj
->
capacity
);
SHashEntry
*
pEntry
=
pHashObj
->
hashList
[
index
];
pNode
->
next
=
pEntry
->
next
;
SHashNode
*
pEntry
=
pHashObj
->
hashList
[
index
];
if
(
pEntry
!=
NULL
)
{
pEntry
->
prev
=
pNode
;
if
(
pEntry
->
next
)
{
p
Entry
->
next
->
prev
=
pNode
;
pNode
->
next
=
pEntry
;
p
Node
->
prev
=
NULL
;
}
pEntry
->
next
=
pNode
;
pNode
->
prev1
=
pEntry
;
pEntry
->
num
++
;
pHashObj
->
hashList
[
index
]
=
pNode
;
pHashObj
->
size
++
;
}
...
...
@@ -616,13 +588,13 @@ SHashNode *getNextHashNode(SHashMutableIterator *pIter) {
pIter
->
entryIndex
++
;
while
(
pIter
->
entryIndex
<
pIter
->
pHashObj
->
capacity
)
{
SHash
Entry
*
pEntry
=
pIter
->
pHashObj
->
hashList
[
pIter
->
entryIndex
];
if
(
p
Entry
->
next
==
NULL
)
{
SHash
Node
*
pNode
=
pIter
->
pHashObj
->
hashList
[
pIter
->
entryIndex
];
if
(
p
Node
==
NULL
)
{
pIter
->
entryIndex
++
;
continue
;
}
return
p
Entry
->
next
;
return
p
Node
;
}
return
NULL
;
...
...
src/util/src/tcompare.c
浏览文件 @
d076b7ce
...
...
@@ -92,7 +92,7 @@ int32_t compareLenPrefixedWStr(const void *pLeft, const void *pRight) {
if
(
len1
!=
len2
)
{
return
len1
>
len2
?
1
:-
1
;
}
else
{
int32_t
ret
=
wcsncmp
(
varDataVal
(
pLeft
),
varDataVal
(
pRight
),
len1
);
int32_t
ret
=
wcsncmp
(
varDataVal
(
pLeft
),
varDataVal
(
pRight
),
len1
/
TSDB_NCHAR_SIZE
);
if
(
ret
==
0
)
{
return
0
;
}
else
{
...
...
src/util/src/ttimer.c
浏览文件 @
d076b7ce
...
...
@@ -342,6 +342,7 @@ static void taosTimerLoopFunc(int signo) {
int64_t
now
=
taosGetTimestampMs
();
for
(
int
i
=
0
;
i
<
tListLen
(
wheels
);
i
++
)
{
tmrTrace
(
"begin processing wheel %d"
,
i
);
// `expried` is a temporary expire list.
// expired timers are first add to this list, then move
// to expired queue as a batch to improve performance.
...
...
@@ -389,6 +390,7 @@ static void taosTimerLoopFunc(int signo) {
}
addToExpired
(
expired
);
tmrTrace
(
"end processing wheel %d"
,
i
);
}
}
...
...
src/util/tests/hashTest.cpp
浏览文件 @
d076b7ce
...
...
@@ -149,8 +149,8 @@ int main(int argc, char** argv) {
}
TEST
(
testCase
,
hashTest
)
{
//
simpleTest();
//
stringKeyTest();
//
noLockPerformanceTest();
//
multithreadsTest();
simpleTest
();
stringKeyTest
();
noLockPerformanceTest
();
multithreadsTest
();
}
\ No newline at end of file
src/vnode/src/vnodeMain.c
浏览文件 @
d076b7ce
...
...
@@ -552,6 +552,7 @@ static int32_t vnodeReadCfg(SVnodeObj *pVnode) {
int
len
=
fread
(
content
,
1
,
maxLen
,
fp
);
if
(
len
<=
0
)
{
vError
(
"vgId:%d, failed to read vnode cfg, content is null"
,
pVnode
->
vgId
);
free
(
content
);
return
errno
;
}
...
...
tests/How-To-Run-Test-And-How-To-Add-New-Test-Case.md
浏览文件 @
d076b7ce
...
...
@@ -8,8 +8,8 @@
3.
mkdir debug; cd debug; cmake ..; make ; sudo make install
4.
pip install src/connector/python/linux/python2 ; pip3 install
src/connector/python/linux/python3
4.
pip install
../
src/connector/python/linux/python2 ; pip3 install
../
src/connector/python/linux/python3
> Note: Both Python2 and Python3 are currently supported by the Python test
> framework. Since Python2 is no longer officially supported by Python Software
...
...
tests/examples/c/demo.c
浏览文件 @
d076b7ce
...
...
@@ -16,11 +16,12 @@
// TAOS standard API example. The same syntax as MySQL, but only a subet
// to compile: gcc -o demo demo.c -ltaos
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <taos.h> // TAOS header file
#include <unistd.h>
void
taosMsleep
(
int
mseconds
);
...
...
@@ -49,19 +50,52 @@ static int32_t doQuery(TAOS* taos, const char* sql) {
return
0
;
}
void
*
oneLoader
(
void
*
param
)
{
TAOS
*
conn
=
(
TAOS
*
)
param
;
for
(
int32_t
i
=
0
;
i
<
20000
;
++
i
)
{
// doQuery(conn, "show databases");
doQuery
(
conn
,
"use test"
);
// doQuery(conn, "describe t12");
// doQuery(conn, "show tables");
// doQuery(conn, "create table if not exists abc (ts timestamp, k int)");
// doQuery(conn, "select * from t12");
}
return
0
;
}
static
__attribute__
((
unused
))
void
multiThreadTest
(
int32_t
numOfThreads
,
void
*
conn
)
{
pthread_attr_t
thattr
;
pthread_attr_init
(
&
thattr
);
pthread_attr_setdetachstate
(
&
thattr
,
PTHREAD_CREATE_JOINABLE
);
pthread_t
*
threadId
=
malloc
(
sizeof
(
pthread_t
)
*
numOfThreads
);
for
(
int
i
=
0
;
i
<
numOfThreads
;
++
i
)
{
pthread_create
(
&
threadId
[
i
],
NULL
,
oneLoader
,
conn
);
}
for
(
int32_t
i
=
0
;
i
<
numOfThreads
;
++
i
)
{
pthread_join
(
threadId
[
i
],
NULL
);
}
pthread_attr_destroy
(
&
thattr
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
TAOS
*
taos
;
char
qstr
[
1024
];
TAOS_RES
*
result
;
// connect to server
if
(
argc
<
2
)
{
printf
(
"please input server-ip
\n
"
);
return
0
;
}
taos_options
(
TSDB_OPTION_CONFIGDIR
,
"
~/sec
/cfg"
);
taos_options
(
TSDB_OPTION_CONFIGDIR
,
"
/home/lisa/Documents/workspace/TDinternal/community/sim/tsim
/cfg"
);
// init TAOS
taos_init
();
...
...
@@ -73,15 +107,12 @@ int main(int argc, char *argv[]) {
}
printf
(
"success to connect to server
\n
"
);
doQuery
(
taos
,
"create database if not exists test"
);
doQuery
(
taos
,
"use test"
);
doQuery
(
taos
,
"select count(*) from m1 where ts>='2020-1-1 1:1:1' and ts<='2020-1-1 1:1:59' interval(500a) fill(value, 99)"
);
// doQuery(taos, "create table t1(ts timestamp, k binary(12), f nchar(2))");
// for(int32_t i = 0; i< 100000; ++i) {
// doQuery(taos, "select m1.ts,m1.a from m1, m2 where m1.ts=m2.ts and m1.a=m2.b;");
// usleep(500000);
// multiThreadTest(1, taos);
doQuery
(
taos
,
"select max(c1), min(c2), sum(c3), avg(c4), first(c7), last(c8), first(c9) from lm2_db0.lm2_stb0 where ts >= 1537146000000 and ts <= 1543145400000 interval(5m) fill(value, -1, -2) group by t1 limit 2 offset 10;"
);
// for(int32_t i = 0; i < 100000; ++i) {
// doQuery(taos, "insert into t1 values(now, 2)");
// }
// doQuery(taos, "create table t1(ts timestamp, k binary(12), f nchar(2))");
// doQuery(taos, "insert into tm0 values('2020-1-1 1:1:1', 'abc')");
// doQuery(taos, "create table if not exists tm0 (ts timestamp, k int);");
...
...
tests/pytest/fulltest.sh
浏览文件 @
d076b7ce
#!/bin/bash
ulimit
-c
unlimited
python3 ./test.py
-f
insert/basic.py
python3 ./test.py
-f
insert/int.py
python3 ./test.py
-f
insert/float.py
...
...
tests/pytest/smoketest.sh
浏览文件 @
d076b7ce
#!/bin/bash
ulimit
-c
unlimited
# insert
python3 ./test.py
$1
-f
insert/basic.py
python3 ./test.py
$1
-s
&&
sleep
1
...
...
@@ -56,10 +58,4 @@ python3 ./test.py $1 -s && sleep 1
#query
python3 ./test.py
$1
-f
query/filter.py
python3 ./test.py
$1
-s
&&
sleep
1
python3 ./test.py
$1
-f
query/filterCombo.py
python3 ./test.py
$1
-s
&&
sleep
1
python3 ./test.py
$1
-f
query/queryNormal.py
python3 ./test.py
$1
-s
&&
sleep
1
python3 ./test.py
$1
-f
query/queryError.py
python3 ./test.py
$1
-s
&&
sleep
1
tests/pytest/util/dnodes.py
浏览文件 @
d076b7ce
...
...
@@ -38,9 +38,9 @@ class TDSimClient:
tdLog
.
exit
(
cmd
)
def
deploy
(
self
):
self
.
logDir
=
"%s/
py
sim/psim/log"
%
(
self
.
path
,)
self
.
cfgDir
=
"%s/
py
sim/psim/cfg"
%
(
self
.
path
)
self
.
cfgPath
=
"%s/
py
sim/psim/cfg/taos.cfg"
%
(
self
.
path
)
self
.
logDir
=
"%s/sim/psim/log"
%
(
self
.
path
,)
self
.
cfgDir
=
"%s/sim/psim/cfg"
%
(
self
.
path
)
self
.
cfgPath
=
"%s/sim/psim/cfg/taos.cfg"
%
(
self
.
path
)
cmd
=
"rm -rf "
+
self
.
logDir
if
os
.
system
(
cmd
)
!=
0
:
...
...
@@ -113,10 +113,10 @@ class TDDnode:
return
totalSize
def
deploy
(
self
):
self
.
logDir
=
"%s/
py
sim/dnode%d/log"
%
(
self
.
path
,
self
.
index
)
self
.
dataDir
=
"%s/
py
sim/dnode%d/data"
%
(
self
.
path
,
self
.
index
)
self
.
cfgDir
=
"%s/
py
sim/dnode%d/cfg"
%
(
self
.
path
,
self
.
index
)
self
.
cfgPath
=
"%s/
py
sim/dnode%d/cfg/taos.cfg"
%
(
self
.
logDir
=
"%s/sim/dnode%d/log"
%
(
self
.
path
,
self
.
index
)
self
.
dataDir
=
"%s/sim/dnode%d/data"
%
(
self
.
path
,
self
.
index
)
self
.
cfgDir
=
"%s/sim/dnode%d/cfg"
%
(
self
.
path
,
self
.
index
)
self
.
cfgPath
=
"%s/sim/dnode%d/cfg/taos.cfg"
%
(
self
.
path
,
self
.
index
)
cmd
=
"rm -rf "
+
self
.
dataDir
...
...
@@ -298,11 +298,11 @@ class TDDnode:
tdLog
.
exit
(
cmd
)
def
getDnodeRootDir
(
self
,
index
):
dnodeRootDir
=
"%s/
py
sim/psim/dnode%d"
%
(
self
.
path
,
index
)
dnodeRootDir
=
"%s/sim/psim/dnode%d"
%
(
self
.
path
,
index
)
return
dnodeRootDir
def
getDnodesRootDir
(
self
):
dnodesRootDir
=
"%s/
py
sim/psim"
%
(
self
.
path
)
dnodesRootDir
=
"%s/sim/psim"
%
(
self
.
path
)
return
dnodesRootDir
...
...
@@ -455,7 +455,7 @@ class TDDnodes:
# tdLog.exit(cmd)
def
getDnodesRootDir
(
self
):
dnodesRootDir
=
"%s/
py
sim"
%
(
self
.
path
)
dnodesRootDir
=
"%s/sim"
%
(
self
.
path
)
return
dnodesRootDir
def
getSimCfgPath
(
self
):
...
...
tests/script/general/import/commit.sim
浏览文件 @
d076b7ce
...
...
@@ -79,6 +79,7 @@ sleep 5000
print ========= step4
sql select * from ic2db.tb;
if $rows != 13 then
print expect 13, actual:$rows
return -1
endi
...
...
tests/script/general/parser/create_db.sim
浏览文件 @
d076b7ce
...
...
@@ -108,10 +108,10 @@ $cache = 16 # 16MB
$ablocks = 100
$tblocks = 32 # max=512, automatically trimmed when exceeding
$ctime = 36000 # 10 hours
$wal =
0 # valid value is 0,
1, 2
$wal =
1 # valid value is
1, 2
$comp = 1 # max=32, automatically trimmed when exceeding
sql create database $db replica $replica days $days keep $keep maxrows $rows_db cache $cache ctime $ctime wal $wal comp $comp
sql create database $db replica $replica days $days keep $keep maxrows $rows_db cache $cache
blocks 4
ctime $ctime wal $wal comp $comp
sql show databases
if $rows != 1 then
return -1
...
...
@@ -129,18 +129,15 @@ if $data06 != 365,365,365 then
return -1
endi
print data08 = $data08
if $data08 != $rows_db then
if $data08 != $cache then
print expect $cache, actual:$data08
return -1
endi
if $data09 !=
$cache then
if $data09 !=
4 then
return -1
endi
sql drop database $db
# ablocks_smaller_than_tblocks
#$ablocks = 50
#$tblocks = 100
#sql_error create database $db ablocks $ablocks tblocks $tblocks
sql drop database $db
## param range tests
# replica [1,3]
...
...
@@ -160,14 +157,11 @@ sql_error create database $db maxrows 199
#sql_error create database $db maxrows 10001
# cache [100, 10485760]
sql_error create database $db cache
99
sql_error create database $db cache
0
#sql_error create database $db cache 10485761
# ablocks [overwriten by 4*maxtablesPerVnode, 409600]
sql_error create database $db ablocks -1
#sql_error create database $db ablocks 409601
#
t
blocks [32, 4096 overwriten by 4096 if exceeds, Note added:2018-10-24]
# blocks [32, 4096 overwriten by 4096 if exceeds, Note added:2018-10-24]
#sql_error create database $db tblocks 31
#sql_error create database $db tblocks 4097
...
...
@@ -175,9 +169,10 @@ sql_error create database $db ablocks -1
sql_error create database $db ctime 29
sql_error create database $db ctime 40961
# wal {0, 1}
# wal {1, 2}
sql_error create database $db wal 0
sql_error create database $db wal -1
#sql_error create database $db wal 2
sql_error create database $db wal 3
# comp {0, 1, 2}
sql_error create database $db comp -1
...
...
tests/script/general/parser/interp_test.sim
浏览文件 @
d076b7ce
...
...
@@ -117,6 +117,7 @@ $tb = $tbPrefix . 0
return -1
endi
if $data01 != NULL then
print expect NULL, actual $data01
return -1
endi
if $data02 != NULL then
...
...
@@ -213,6 +214,7 @@ $tb = $tbPrefix . 0
return -1
endi
if $data03 != 0.00000 then
print expect 0.00000, actual:$data03
return -1
endi
# if $data04 != NULL then
...
...
tests/script/general/parser/limit1_stb.sim
浏览文件 @
d076b7ce
...
...
@@ -400,6 +400,7 @@ endi
$limit = $totalNum / 2
sql select max(c1), min(c2), avg(c3), count(c4), sum(c5), spread(c6), first(c7), last(c8), first(c9) from $stb where ts >= $ts0 and ts <= $tsu and t1 > 1 and t1 < 8 group by t1 order by t1 asc limit $limit offset 0
if $rows != 6 then
print expect 6, actual:$rows
return -1
endi
if $data00 != 9 then
...
...
tests/script/general/parser/testSuite.sim
浏览文件 @
d076b7ce
...
...
@@ -8,38 +8,38 @@
#sleep 2000
#run general/parser/auto_create_tb_drop_tb.sim
sleep 2000
run general/parser/col_arithmetic_operation.sim
sleep 2000
run general/parser/columnValue.sim
sleep 2000
run general/parser/commit.sim
sleep 2000
run general/parser/create_db.sim
sleep 2000
run general/parser/create_mt.sim
sleep 2000
run general/parser/create_tb.sim
sleep 2000
run general/parser/dbtbnameValidate.sim
sleep 2000
run general/parser/import_commit1.sim
sleep 2000
run general/parser/import_commit2.sim
sleep 2000
run general/parser/import_commit3.sim
sleep 2000
run general/parser/insert_tb.sim
sleep 2000
run general/parser/first_last.sim
sleep 2000
run general/parser/import_file.sim
sleep 2000
run general/parser/lastrow.sim
sleep 2000
run general/parser/nchar.sim
sleep 2000
run general/parser/null_char.sim
#
sleep 2000
#
run general/parser/col_arithmetic_operation.sim
#
sleep 2000
#
run general/parser/columnValue.sim
#
sleep 2000
#
run general/parser/commit.sim
#
sleep 2000
#
run general/parser/create_db.sim
#
sleep 2000
#
run general/parser/create_mt.sim
#
sleep 2000
#
run general/parser/create_tb.sim
#
sleep 2000
#
run general/parser/dbtbnameValidate.sim
#
sleep 2000
#
run general/parser/import_commit1.sim
#
sleep 2000
#
run general/parser/import_commit2.sim
#
sleep 2000
#
run general/parser/import_commit3.sim
#
sleep 2000
#
run general/parser/insert_tb.sim
#
sleep 2000
#
run general/parser/first_last.sim
#
sleep 2000
##
run general/parser/import_file.sim
#
sleep 2000
#
run general/parser/lastrow.sim
#
sleep 2000
#
run general/parser/nchar.sim
#
sleep 2000
##
run general/parser/null_char.sim
sleep 2000
run general/parser/single_row_in_tb.sim
sleep 2000
...
...
@@ -62,20 +62,23 @@ sleep 2000
run general/parser/tbnameIn.sim
sleep 2000
run general/parser/projection_limit_offset.sim
sleep 2000
run general/parser/limit2.sim
sleep 2000
run general/parser/slimit.sim
sleep 2000
run general/parser/fill.sim
sleep 2000
run general/parser/fill_stb.sim
sleep 2000
run general/parser/tags_dynamically_specifiy.sim
run general/parser/where.sim
sleep 2000
run general/parser/slimit.sim
sleep 2000
run general/parser/select_with_tags.sim
sleep 2000
run general/parser/interp.sim
sleep 2000
run general/parser/tags_dynamically_specifiy.sim
sleep 2000
run general/parser/set_tag_vals.sim
...
...
@@ -86,8 +89,6 @@ run general/parser/stream_on_sys.sim
sleep 2000
run general/parser/stream.sim
sleep 2000
run general/parser/where.sim
sleep 2000
#run general/parser/repeatAlter.sim
sleep 2000
...
...
@@ -97,11 +98,8 @@ run general/parser/join.sim
sleep 2000
run general/parser/join_multivnode.sim
sleep 2000
run general/parser/select_with_tags.sim
sleep 2000
run general/parser/groupby.sim
sleep 2000
run general/parser/binary_escapeCharacter.sim
sleep 2000
...
...
tests/script/general/parser/where.sim
浏览文件 @
d076b7ce
...
...
@@ -78,12 +78,16 @@ sql select tbname from $mt where t1 < 2
if $rows != 2 then
return -1
endi
print $tbPrefix
$tb = $tbPrefix . 0
if $data00 != $tb then
if $data00 != wh_tb1 then
print expect wh_tb1, actual:$data00
return -1
endi
$tb = $tbPrefix . 1
if $data10 != $tb then
if $data10 != wh_tb0 then
print expect wh_tb0, actual:$data00
return -1
endi
...
...
tests/script/general/user/authority.sim
浏览文件 @
d076b7ce
...
...
@@ -63,4 +63,4 @@ sql close
sql connect
sleep 2000
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/jenkins/basic.txt
浏览文件 @
d076b7ce
cd ../../debug; cmake ..
cd ../../debug; make
cd ../../../debug; cmake ..
cd ../../../debug; make
...
...
@@ -61,7 +59,7 @@ cd ../../../debug; make
./test.sh -f general/db/delete_writing1.sim
./test.sh -f general/db/delete_writing2.sim
./test.sh -f general/db/delete.sim
./test.sh -f general/db/dropdnodes.sim
#not test
./test.sh -f general/db/dropdnodes.sim
./test.sh -f general/db/len.sim
./test.sh -f general/db/repeat.sim
./test.sh -f general/db/tables.sim
...
...
@@ -235,78 +233,78 @@ cd ../../../debug; make
./test.sh -f general/vector/table_query.sim
./test.sh -f general/vector/table_time.sim
./test.sh -
u -
f unique/account/account_create.sim
./test.sh -
u -
f unique/account/account_delete.sim
./test.sh -
u -
f unique/account/account_len.sim
./test.sh -
u -
f unique/account/authority.sim
./test.sh -
u -
f unique/account/basic.sim
./test.sh -
u -
f unique/account/paras.sim
./test.sh -
u -
f unique/account/pass_alter.sim
./test.sh -
u -
f unique/account/pass_len.sim
./test.sh -
u -
f unique/account/usage.sim
./test.sh -
u -
f unique/account/user_create.sim
./test.sh -
u -
f unique/account/user_len.sim
./test.sh -f unique/account/account_create.sim
./test.sh -f unique/account/account_delete.sim
./test.sh -f unique/account/account_len.sim
./test.sh -f unique/account/authority.sim
./test.sh -f unique/account/basic.sim
./test.sh -f unique/account/paras.sim
./test.sh -f unique/account/pass_alter.sim
./test.sh -f unique/account/pass_len.sim
./test.sh -f unique/account/usage.sim
./test.sh -f unique/account/user_create.sim
./test.sh -f unique/account/user_len.sim
./test.sh -
u -
f unique/big/balance.sim
./test.sh -
u -
f unique/big/maxvnodes.sim
./test.sh -
u -
f unique/big/tcp.sim
./test.sh -f unique/big/balance.sim
./test.sh -f unique/big/maxvnodes.sim
./test.sh -f unique/big/tcp.sim
./test.sh -
u -
f unique/cluster/balance1.sim
./test.sh -
u -
f unique/cluster/balance2.sim
./test.sh -
u -
f unique/cluster/balance3.sim
./test.sh -
u -
f unique/cluster/cache.sim
./test.sh -f unique/cluster/balance1.sim
./test.sh -f unique/cluster/balance2.sim
./test.sh -f unique/cluster/balance3.sim
./test.sh -f unique/cluster/cache.sim
./test.sh -
u -
f unique/column/replica3.sim
./test.sh -f unique/column/replica3.sim
./test.sh -
u -
f unique/db/commit.sim
./test.sh -
u -
f unique/db/delete.sim
./test.sh -
u -
f unique/db/delete_part.sim
./test.sh -
u -
f unique/db/replica_add12.sim
./test.sh -
u -
f unique/db/replica_add13.sim
./test.sh -
u -
f unique/db/replica_add23.sim
./test.sh -
u -
f unique/db/replica_reduce21.sim
./test.sh -
u -
f unique/db/replica_reduce32.sim
./test.sh -
u -
f unique/db/replica_reduce31.sim
./test.sh -
u -
f unique/db/replica_part.sim
./test.sh -f unique/db/commit.sim
./test.sh -f unique/db/delete.sim
./test.sh -f unique/db/delete_part.sim
./test.sh -f unique/db/replica_add12.sim
./test.sh -f unique/db/replica_add13.sim
./test.sh -f unique/db/replica_add23.sim
./test.sh -f unique/db/replica_reduce21.sim
./test.sh -f unique/db/replica_reduce32.sim
./test.sh -f unique/db/replica_reduce31.sim
./test.sh -f unique/db/replica_part.sim
./test.sh -
u -
f unique/dnode/alternativeRole.sim
./test.sh -
u -
f unique/dnode/balance1.sim
./test.sh -
u -
f unique/dnode/balance2.sim
./test.sh -
u -
f unique/dnode/balance3.sim
./test.sh -
u -
f unique/dnode/balancex.sim
./test.sh -
u -
f unique/dnode/offline1.sim
./test.sh -
u -
f unique/dnode/offline2.sim
./test.sh -
u -
f unique/dnode/remove1.sim
./test.sh -
u -
f unique/dnode/remove2.sim
./test.sh -
u -
f unique/dnode/vnode_clean.sim
./test.sh -f unique/dnode/alternativeRole.sim
./test.sh -f unique/dnode/balance1.sim
./test.sh -f unique/dnode/balance2.sim
./test.sh -f unique/dnode/balance3.sim
./test.sh -f unique/dnode/balancex.sim
./test.sh -f unique/dnode/offline1.sim
./test.sh -f unique/dnode/offline2.sim
./test.sh -f unique/dnode/remove1.sim
./test.sh -f unique/dnode/remove2.sim
./test.sh -f unique/dnode/vnode_clean.sim
./test.sh -
u -
f unique/http/admin.sim
./test.sh -
u -
f unique/http/opentsdb.sim
./test.sh -f unique/http/admin.sim
./test.sh -f unique/http/opentsdb.sim
./test.sh -
u -
f unique/import/replica2.sim
./test.sh -
u -
f unique/import/replica3.sim
./test.sh -f unique/import/replica2.sim
./test.sh -f unique/import/replica3.sim
./test.sh -
u -
f unique/stable/balance_replica1.sim
./test.sh -
u -
f unique/stable/dnode2_stop.sim
./test.sh -
u -
f unique/stable/dnode2.sim
./test.sh -
u -
f unique/stable/dnode3.sim
./test.sh -
u -
f unique/stable/replica2_dnode4.sim
./test.sh -
u -
f unique/stable/replica2_vnode3.sim
./test.sh -
u -
f unique/stable/replica3_dnode6.sim
./test.sh -
u -
f unique/stable/replica3_vnode3.sim
./test.sh -f unique/stable/balance_replica1.sim
./test.sh -f unique/stable/dnode2_stop.sim
./test.sh -f unique/stable/dnode2.sim
./test.sh -f unique/stable/dnode3.sim
./test.sh -f unique/stable/replica2_dnode4.sim
./test.sh -f unique/stable/replica2_vnode3.sim
./test.sh -f unique/stable/replica3_dnode6.sim
./test.sh -f unique/stable/replica3_vnode3.sim
./test.sh -
u -
f unique/mnode/mgmt22.sim
./test.sh -
u -
f unique/mnode/mgmt23.sim
./test.sh -
u -
f unique/mnode/mgmt24.sim
./test.sh -
u -
f unique/mnode/mgmt25.sim
./test.sh -
u -
f unique/mnode/mgmt26.sim
./test.sh -
u -
f unique/mnode/mgmt33.sim
./test.sh -
u -
f unique/mnode/mgmt34.sim
./test.sh -
u -
f unique/mnode/mgmtr2.sim
./test.sh -f unique/mnode/mgmt22.sim
./test.sh -f unique/mnode/mgmt23.sim
./test.sh -f unique/mnode/mgmt24.sim
./test.sh -f unique/mnode/mgmt25.sim
./test.sh -f unique/mnode/mgmt26.sim
./test.sh -f unique/mnode/mgmt33.sim
./test.sh -f unique/mnode/mgmt34.sim
./test.sh -f unique/mnode/mgmtr2.sim
./test.sh -
u -
f unique/vnode/many.sim
./test.sh -
u -
f unique/vnode/replica2_basic2.sim
./test.sh -
u -
f unique/vnode/replica2_repeat.sim
./test.sh -
u -
f unique/vnode/replica3_basic.sim
./test.sh -
u -
f unique/vnode/replica3_repeat.sim
./test.sh -
u -
f unique/vnode/replica3_vgroup.sim
./test.sh -f unique/vnode/many.sim
./test.sh -f unique/vnode/replica2_basic2.sim
./test.sh -f unique/vnode/replica2_repeat.sim
./test.sh -f unique/vnode/replica3_basic.sim
./test.sh -f unique/vnode/replica3_repeat.sim
./test.sh -f unique/vnode/replica3_vgroup.sim
tests/script/jenkins/sync.txt
浏览文件 @
d076b7ce
cd ../../debug; cmake ..
cd ../../debug; make
cd ../../../debug; cmake ..
cd ../../../debug; make
./test.sh -
u -
f unique/account/account_create.sim
./test.sh -
u -
f unique/account/account_delete.sim
./test.sh -
u -
f unique/account/account_len.sim
./test.sh -
u -
f unique/account/authority.sim
./test.sh -
u -
f unique/account/basic.sim
./test.sh -
u -
f unique/account/paras.sim
./test.sh -
u -
f unique/account/pass_alter.sim
./test.sh -
u -
f unique/account/pass_len.sim
./test.sh -
u -
f unique/account/usage.sim
./test.sh -
u -
f unique/account/user_create.sim
./test.sh -
u -
f unique/account/user_len.sim
./test.sh -f unique/account/account_create.sim
./test.sh -f unique/account/account_delete.sim
./test.sh -f unique/account/account_len.sim
./test.sh -f unique/account/authority.sim
./test.sh -f unique/account/basic.sim
./test.sh -f unique/account/paras.sim
./test.sh -f unique/account/pass_alter.sim
./test.sh -f unique/account/pass_len.sim
./test.sh -f unique/account/usage.sim
./test.sh -f unique/account/user_create.sim
./test.sh -f unique/account/user_len.sim
./test.sh -
u -
f unique/big/balance.sim
./test.sh -
u -
f unique/big/maxvnodes.sim
./test.sh -
u -
f unique/big/tcp.sim
./test.sh -f unique/big/balance.sim
./test.sh -f unique/big/maxvnodes.sim
./test.sh -f unique/big/tcp.sim
./test.sh -
u -
f unique/cluster/balance1.sim
./test.sh -
u -
f unique/cluster/balance2.sim
./test.sh -
u -
f unique/cluster/balance3.sim
./test.sh -
u -
f unique/cluster/cache.sim
./test.sh -f unique/cluster/balance1.sim
./test.sh -f unique/cluster/balance2.sim
./test.sh -f unique/cluster/balance3.sim
./test.sh -f unique/cluster/cache.sim
./test.sh -
u -
f unique/column/replica3.sim
./test.sh -f unique/column/replica3.sim
./test.sh -
u -
f unique/db/commit.sim
./test.sh -
u -
f unique/db/delete.sim
./test.sh -
u -
f unique/db/delete_part.sim
./test.sh -
u -
f unique/db/replica_add12.sim
./test.sh -
u -
f unique/db/replica_add13.sim
./test.sh -
u -
f unique/db/replica_add23.sim
./test.sh -
u -
f unique/db/replica_reduce21.sim
./test.sh -
u -
f unique/db/replica_reduce32.sim
./test.sh -
u -
f unique/db/replica_reduce31.sim
./test.sh -
u -
f unique/db/replica_part.sim
./test.sh -f unique/db/commit.sim
./test.sh -f unique/db/delete.sim
./test.sh -f unique/db/delete_part.sim
./test.sh -f unique/db/replica_add12.sim
./test.sh -f unique/db/replica_add13.sim
./test.sh -f unique/db/replica_add23.sim
./test.sh -f unique/db/replica_reduce21.sim
./test.sh -f unique/db/replica_reduce32.sim
./test.sh -f unique/db/replica_reduce31.sim
./test.sh -f unique/db/replica_part.sim
./test.sh -
u -
f unique/dnode/balance1.sim
./test.sh -
u -
f unique/dnode/balance2.sim
./test.sh -
u -
f unique/dnode/balance3.sim
./test.sh -
u -
f unique/dnode/balancex.sim
./test.sh -
u -
f unique/dnode/offline1.sim
./test.sh -
u -
f unique/dnode/offline2.sim
./test.sh -
u -
f unique/dnode/remove1.sim
./test.sh -
u -
f unique/dnode/remove2.sim
./test.sh -
u -
f unique/dnode/vnode_clean.sim
./test.sh -f unique/dnode/balance1.sim
./test.sh -f unique/dnode/balance2.sim
./test.sh -f unique/dnode/balance3.sim
./test.sh -f unique/dnode/balancex.sim
./test.sh -f unique/dnode/offline1.sim
./test.sh -f unique/dnode/offline2.sim
./test.sh -f unique/dnode/remove1.sim
./test.sh -f unique/dnode/remove2.sim
./test.sh -f unique/dnode/vnode_clean.sim
./test.sh -
u -
f unique/http/admin.sim
./test.sh -
u -
f unique/http/opentsdb.sim
./test.sh -f unique/http/admin.sim
./test.sh -f unique/http/opentsdb.sim
./test.sh -
u -
f unique/import/replica2.sim
./test.sh -
u -
f unique/import/replica3.sim
./test.sh -f unique/import/replica2.sim
./test.sh -f unique/import/replica3.sim
./test.sh -
u -
f unique/stable/balance_replica1.sim
./test.sh -
u -
f unique/stable/dnode2_stop.sim
./test.sh -
u -
f unique/stable/dnode2.sim
./test.sh -
u -
f unique/stable/dnode3.sim
./test.sh -
u -
f unique/stable/replica2_dnode4.sim
./test.sh -
u -
f unique/stable/replica2_vnode3.sim
./test.sh -
u -
f unique/stable/replica3_dnode6.sim
./test.sh -
u -
f unique/stable/replica3_vnode3.sim
./test.sh -f unique/stable/balance_replica1.sim
./test.sh -f unique/stable/dnode2_stop.sim
./test.sh -f unique/stable/dnode2.sim
./test.sh -f unique/stable/dnode3.sim
./test.sh -f unique/stable/replica2_dnode4.sim
./test.sh -f unique/stable/replica2_vnode3.sim
./test.sh -f unique/stable/replica3_dnode6.sim
./test.sh -f unique/stable/replica3_vnode3.sim
./test.sh -
u -
f unique/mnode/mgmt22.sim
./test.sh -
u -
f unique/mnode/mgmt23.sim
./test.sh -
u -
f unique/mnode/mgmt24.sim
./test.sh -
u -
f unique/mnode/mgmt25.sim
./test.sh -
u -
f unique/mnode/mgmt26.sim
./test.sh -
u -
f unique/mnode/mgmt33.sim
./test.sh -
u -
f unique/mnode/mgmt34.sim
./test.sh -
u -
f unique/mnode/mgmtr2.sim
./test.sh -f unique/mnode/mgmt22.sim
./test.sh -f unique/mnode/mgmt23.sim
./test.sh -f unique/mnode/mgmt24.sim
./test.sh -f unique/mnode/mgmt25.sim
./test.sh -f unique/mnode/mgmt26.sim
./test.sh -f unique/mnode/mgmt33.sim
./test.sh -f unique/mnode/mgmt34.sim
./test.sh -f unique/mnode/mgmtr2.sim
./test.sh -
u -
f unique/vnode/many.sim
./test.sh -
u -
f unique/vnode/replica2_basic2.sim
./test.sh -
u -
f unique/vnode/replica2_repeat.sim
./test.sh -
u -
f unique/vnode/replica3_basic.sim
./test.sh -
u -
f unique/vnode/replica3_repeat.sim
./test.sh -
u -
f unique/vnode/replica3_vgroup.sim
./test.sh -f unique/vnode/many.sim
./test.sh -f unique/vnode/replica2_basic2.sim
./test.sh -f unique/vnode/replica2_repeat.sim
./test.sh -f unique/vnode/replica3_basic.sim
./test.sh -f unique/vnode/replica3_repeat.sim
./test.sh -f unique/vnode/replica3_vgroup.sim
tests/script/sh/cfg.sh
浏览文件 @
d076b7ce
#!/bin/sh
#!/bin/
ba
sh
if
[
$#
!=
6
]
;
then
echo
"argument list need input : "
...
...
@@ -33,10 +33,19 @@ SCRIPT_DIR=`dirname $0`
cd
$SCRIPT_DIR
/../
SCRIPT_DIR
=
`
pwd
`
cd
../../
TDINTERNAL
=
"TDinternal"
if
[[
"
$SCRIPT_DIR
"
==
*
"
$TDINTERNAL
"
*
]]
;
then
cd
../../..
else
cd
../../
fi
TAOS_DIR
=
`
pwd
`
BUILD_DIR
=
$TAOS_DIR
/debug/build
BIN_DIR
=
`
find
.
-name
"taosd"
|grep bin|
cut
-d
'/'
--fields
=
2,3
`
BUILD_DIR
=
$TAOS_DIR
/
$BIN_DIR
SIM_DIR
=
$TAOS_DIR
/sim
NODE_DIR
=
$SIM_DIR
/
$NODE_NAME
...
...
tests/script/sh/clear.sh
浏览文件 @
d076b7ce
#!/bin/sh
#!/bin/
ba
sh
echo
"Executing clear.sh"
...
...
@@ -36,12 +36,20 @@ cd $SCRIPT_DIR/../
SCRIPT_DIR
=
`
pwd
`
echo
"SCRIPT_DIR:
$SCRIPT_DIR
"
cd
../../
TDINTERNAL
=
"TDinternal"
if
[[
"
$SCRIPT_DIR
"
==
*
"
$TDINTERNAL
"
*
]]
;
then
cd
../../..
else
cd
../../
fi
TAOS_DIR
=
`
pwd
`
BUILD_DIR
=
$TAOS_DIR
/debug/build
SIM_DIR
=
$TAOS_DIR
/sim
BIN_DIR
=
`
find
.
-name
"taosd"
|grep bin|
cut
-d
'/'
--fields
=
2,3
`
BUILD_DIR
=
$TAOS_DIR
/
$BIN_DIR
SIM_DIR
=
$TAOS_DIR
/sim
NODE_DIR
=
$SIM_DIR
/
$NODE_NAME
EXE_DIR
=
$BUILD_DIR
/bin
CFG_DIR
=
$NODE_DIR
/cfg
...
...
tests/script/sh/deploy.sh
浏览文件 @
d076b7ce
#!/bin/sh
#!/bin/
ba
sh
echo
"Executing deploy.sh"
...
...
@@ -31,10 +31,19 @@ cd $SCRIPT_DIR/../
SCRIPT_DIR
=
`
pwd
`
echo
"SCRIPT_DIR:
$SCRIPT_DIR
"
cd
../../
TDINTERNAL
=
"TDinternal"
if
[[
"
$SCRIPT_DIR
"
==
*
"
$TDINTERNAL
"
*
]]
;
then
cd
../../..
else
cd
../../
fi
TAOS_DIR
=
`
pwd
`
BUILD_DIR
=
$TAOS_DIR
/debug/build
BIN_DIR
=
`
find
.
-name
"taosd"
|grep bin|
cut
-d
'/'
--fields
=
2,3
`
BUILD_DIR
=
$TAOS_DIR
/
$BIN_DIR
SIM_DIR
=
$TAOS_DIR
/sim
NODE_DIR
=
$SIM_DIR
/
$NODE_NAME
...
...
tests/script/sh/exec.sh
浏览文件 @
d076b7ce
#!/bin/sh
#!/bin/
ba
sh
# if [ $# != 4 || $# != 5 ]; then
# echo "argument list need input : "
...
...
@@ -42,10 +42,19 @@ SCRIPT_DIR=`dirname $0`
cd
$SCRIPT_DIR
/../
SCRIPT_DIR
=
`
pwd
`
cd
../../
TDINTERNAL
=
"TDinternal"
if
[[
"
$SCRIPT_DIR
"
==
*
"
$TDINTERNAL
"
*
]]
;
then
cd
../../..
else
cd
../../
fi
TAOS_DIR
=
`
pwd
`
BUILD_DIR
=
$TAOS_DIR
/debug/build
BIN_DIR
=
`
find
.
-name
"taosd"
|grep bin|
cut
-d
'/'
--fields
=
2,3
`
BUILD_DIR
=
$TAOS_DIR
/
$BIN_DIR
SIM_DIR
=
$TAOS_DIR
/sim
NODE_DIR
=
$SIM_DIR
/
$NODE_NAME
EXE_DIR
=
$BUILD_DIR
/bin
...
...
@@ -86,9 +95,9 @@ else
if
[
-n
"
$PID
"
]
;
then
if
[
"
$SIGNAL
"
=
"SIGINT"
]
;
then
echo
killed by signal
sudo kill
-sigint
$PID
kill
-SIGINT
$PID
else
sudo
kill
-9
$PID
kill
-9
$PID
fi
fi
fi
...
...
tests/script/sh/exec_tarbitrator.sh
浏览文件 @
d076b7ce
#!/bin/sh
#!/bin/
ba
sh
# if [ $# != 2 || $# != 3 ]; then
# echo "argument list need input : "
...
...
@@ -39,10 +39,19 @@ SCRIPT_DIR=`dirname $0`
cd
$SCRIPT_DIR
/../
SCRIPT_DIR
=
`
pwd
`
cd
../../
TDINTERNAL
=
"TDinternal"
if
[[
"
$SCRIPT_DIR
"
==
*
"
$TDINTERNAL
"
*
]]
;
then
cd
../../..
else
cd
../../
fi
TAOS_DIR
=
`
pwd
`
BUILD_DIR
=
$TAOS_DIR
/../debug/build
BIN_DIR
=
`
find
.
-name
"taosd"
|grep bin|
cut
-d
'/'
--fields
=
2,3
`
BUILD_DIR
=
$TAOS_DIR
/
$BIN_DIR
SIM_DIR
=
$TAOS_DIR
/sim
NODE_DIR
=
$SIM_DIR
/arbitrator
EXE_DIR
=
$BUILD_DIR
/bin
...
...
@@ -57,8 +66,8 @@ else
#relative path
PID
=
`
ps
-ef
|grep tarbitrator |
grep
-v
grep
|
awk
'{print $2}'
`
if
[
-n
"
$PID
"
]
;
then
sudo
kill
-9
$PID
sudo
pkill
-9
tarbitrator
kill
-9
$PID
pkill
-9
tarbitrator
fi
fi
tests/script/sh/exec_up.sh
已删除
100755 → 0
浏览文件 @
4a1f43c9
#!/bin/sh
# if [ $# != 4 || $# != 5 ]; then
# echo "argument list need input : "
# echo " -n nodeName"
# echo " -s start/stop"
# echo " -c clear"
# exit 1
# fi
NODE_NAME
=
EXEC_OPTON
=
CLEAR_OPTION
=
"false"
while
getopts
"n:s:u:x:ct"
arg
do
case
$arg
in
n
)
NODE_NAME
=
$OPTARG
;;
s
)
EXEC_OPTON
=
$OPTARG
;;
c
)
CLEAR_OPTION
=
"clear"
;;
t
)
SHELL_OPTION
=
"true"
;;
u
)
USERS
=
$OPTARG
;;
x
)
SIGNAL
=
$OPTARG
;;
?
)
echo
"unkown argument"
;;
esac
done
SCRIPT_DIR
=
`
dirname
$0
`
cd
$SCRIPT_DIR
/../
SCRIPT_DIR
=
`
pwd
`
cd
../../
TAOS_DIR
=
`
pwd
`
BUILD_DIR
=
$TAOS_DIR
/../debug/build
SIM_DIR
=
$TAOS_DIR
/sim
NODE_DIR
=
$SIM_DIR
/
$NODE_NAME
EXE_DIR
=
$BUILD_DIR
/bin
CFG_DIR
=
$NODE_DIR
/cfg
LOG_DIR
=
$NODE_DIR
/log
DATA_DIR
=
$NODE_DIR
/data
MGMT_DIR
=
$NODE_DIR
/data/mgmt
TSDB_DIR
=
$NODE_DIR
/data/tsdb
TAOS_CFG
=
$NODE_DIR
/cfg/taos.cfg
echo
------------
$EXEC_OPTON
$NODE_NAME
TAOS_FLAG
=
$SIM_DIR
/tsim/flag
if
[
-f
"
$TAOS_FLAG
"
]
;
then
EXE_DIR
=
/usr/local/bin/taos
fi
if
[
"
$CLEAR_OPTION
"
=
"clear"
]
;
then
echo rm
-rf
$MGMT_DIR
$TSDB_DIR
rm
-rf
$TSDB_DIR
rm
-rf
$MGMT_DIR
fi
if
[
"
$EXEC_OPTON
"
=
"start"
]
;
then
echo
"ExcuteCmd:"
$EXE_DIR
/taosd
-c
$CFG_DIR
if
[
"
$SHELL_OPTION
"
=
"true"
]
;
then
nohup
valgrind
--log-file
=
${
LOG_DIR
}
/valgrind.log
--tool
=
memcheck
--leak-check
=
full
--show-reachable
=
no
--track-origins
=
yes
--show-leak-kinds
=
all
-v
--workaround-gcc296-bugs
=
yes
$EXE_DIR
/taosd
-c
$CFG_DIR
>
/dev/null 2>&1 &
else
nohup
$EXE_DIR
/taosd
-c
$CFG_DIR
>
/dev/null 2>&1 &
fi
#TT=`date +%s`
#mkdir ${LOG_DIR}/${TT}
#echo valgrind --log-file=${LOG_DIR}/${TT}/valgrind.log --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes $EXE_DIR/taosd -c $CFG_DIR
#nohup valgrind --log-file=${LOG_DIR}/${TT}/valgrind.log --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes $EXE_DIR/taosd -c $CFG_DIR > /dev/null 2>&1 &
else
#relative path
RCFG_DIR
=
sim/
$NODE_NAME
/cfg
PID
=
`
ps
-ef
|grep taosd |
grep
$RCFG_DIR
|
grep
-v
grep
|
awk
'{print $2}'
`
if
[
-n
"
$PID
"
]
;
then
if
[
"
$SIGNAL
"
=
"SIGINT"
]
;
then
echo
killed by signal
sudo kill
-sigint
$PID
else
sudo kill
-9
$PID
fi
fi
fi
tests/script/test.sh
浏览文件 @
d076b7ce
...
...
@@ -40,9 +40,20 @@ cd .
# Get responsible directories
CODE_DIR
=
`
dirname
$0
`
CODE_DIR
=
`
pwd
`
cd
../../
TDINTERNAL
=
"TDinternal"
if
[[
"
$CODE_DIR
"
==
*
"
$TDINTERNAL
"
*
]]
;
then
cd
../../..
else
cd
../../
fi
TOP_DIR
=
`
pwd
`
BUILD_DIR
=
$TOP_DIR
/debug/build
BIN_DIR
=
`
find
.
-name
"taosd"
|grep bin|
cut
-d
'/'
--fields
=
2,3
`
BUILD_DIR
=
$TOP_DIR
/
$BIN_DIR
SIM_DIR
=
$TOP_DIR
/sim
if
[
$ASYNC
-eq
0
]
;
then
...
...
@@ -51,11 +62,6 @@ else
PROGRAM
=
"
$BUILD_DIR
/bin/tsim -a"
fi
if
[
$UNIQUE
-eq
0
]
;
then
PROGRAM
=
$BUILD_DIR
/bin/tsim
else
PROGRAM
=
"
$TOP_DIR
/../debug/build/bin/tsim"
fi
PRG_DIR
=
$SIM_DIR
/tsim
CFG_DIR
=
$PRG_DIR
/cfg
...
...
tests/script/unique/account/account_create.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c wallevel -v 0
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -77,4 +77,4 @@ if $rows != 1 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/account/account_delete.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c wallevel -v 0
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -96,4 +96,4 @@ if $rows != 1 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/account/account_len.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c wallevel -v 0
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -89,4 +89,4 @@ if $rows != 3 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/account/authority.sim
浏览文件 @
d076b7ce
...
...
@@ -2,7 +2,7 @@ system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c wallevel -v 0
system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 8
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -344,4 +344,4 @@ sql drop database d2
sql drop database d3
sql drop database d4
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/account/basic.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -43,4 +43,4 @@ endi
print $data00 $data01 $data02
print $data10 $data11 $data22
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/account/paras.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -111,4 +111,4 @@ if $data16 != 0.000/10.000 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/account/pass_alter.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c wallevel -v 0
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -113,4 +113,4 @@ sql drop account oroot
sql drop user read
sql drop user write
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/account/pass_len.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c wallevel -v 0
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -78,4 +78,4 @@ if $rows != 3 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/account/usage.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -57,4 +57,4 @@ endi
print =============== check grant
sql_error create database d6
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/account/user_create.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c wallevel -v 0
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -81,4 +81,4 @@ step42:
sql drop user read
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/account/user_len.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c wallevel -v 0
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -91,4 +91,4 @@ if $rows != 1 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/arbitrator/dn3_mn1_replica2_wal1_AddDelDnode.sim
浏览文件 @
d076b7ce
...
...
@@ -56,13 +56,13 @@ print ============== step0: start tarbitrator
system sh/exec_tarbitrator.sh -s start
print ============== step1: start dnode1, only deploy mnode
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
print ============== step2: start dnode2/dnode3 and add into cluster, then create database, create table , and insert data
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 1000
sql create dnode $hostname2
sql create dnode $hostname3
...
...
@@ -108,7 +108,7 @@ if $data00 != $totalRows then
endi
print ============== step3: add one new dnode4 expect auto balancing
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sql create dnode $hostname4
sleep 10000
sql select count(*) from $stb
...
...
@@ -119,7 +119,7 @@ endi
print ============== step4: stop dnode3, after offlineThreshold, dnode3 will be dropped for cluster
system sh/exec
_up
.sh -n dnode3 -s stop
system sh/exec.sh -n dnode3 -s stop
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
...
...
@@ -182,7 +182,7 @@ endi
print ============== step5: start dnode5 and add into cluster , drop database
sql drop database $db
sleep 1000
system sh/exec
_up
.sh -n dnode5 -s start
system sh/exec.sh -n dnode5 -s start
sql create dnode $hostname5
sleep 3000
wait_dnode5:
...
...
tests/script/unique/arbitrator/replica_changeWithArbitrator.sim
浏览文件 @
d076b7ce
...
...
@@ -24,7 +24,7 @@ system sh/exec_tarbitrator.sh -s start
print ============== step1: replica is 1, and start 1 dnode
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -58,7 +58,7 @@ while $i < $tblNum
endw
print ============== step2: add 1 new dnode, expect balanced
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
# expect after balanced, 2 vondes in dnode1, 1 vonde in dnode2
...
...
@@ -81,7 +81,7 @@ if $data2_2 != 1 then
endi
print ============== step4: stop dnode1, and wait dnode2 master
system sh/exec
_up
.sh -n dnode1 -s stop
system sh/exec.sh -n dnode1 -s stop
$x = 0
loop_wait:
...
...
tests/script/unique/big/balance.sim
浏览文件 @
d076b7ce
...
...
@@ -20,7 +20,7 @@ system sh/cfg.sh -n dnode5 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode5 -c maxtablesPerVnode -v 1000
print =============== prepare data
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -87,7 +87,7 @@ endi
print ========== step1
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$x = 0
show1:
...
...
@@ -142,7 +142,7 @@ endi
print ========== step2
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 10000
print ========== step3
...
...
@@ -170,7 +170,7 @@ if $data2_3 != 2 then
goto show3
endi
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sql reset query cache
sleep 1000
...
...
@@ -226,7 +226,7 @@ if $data2_3 != null then
goto show4
endi
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sql reset query cache
sleep 1000
...
...
@@ -262,7 +262,7 @@ if $data00 != $totalNum then
endi
print ========== step5
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sql create dnode $hostname4
sleep 3000
...
...
@@ -319,11 +319,11 @@ if $data00 != $totalNum then
goto show5
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/big/maxvnodes.sim
浏览文件 @
d076b7ce
...
...
@@ -15,7 +15,7 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v $totalVnodes
print ========== prepare data
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
sql create database db blocks 2 cache 1 maxTables $maxTables
...
...
@@ -45,7 +45,7 @@ endi
print ========== step3
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$x = 0
show3:
...
...
@@ -78,11 +78,11 @@ endi
return
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/big/restartSpeed.sim
浏览文件 @
d076b7ce
...
...
@@ -15,7 +15,7 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v $totalVnodes
print ========== prepare data
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
sql create database db blocks 2 cache 1 maxTables $maxTables
...
...
@@ -33,11 +33,11 @@ while $x < $totalRows
endw
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/big/tcp.sim
浏览文件 @
d076b7ce
...
...
@@ -14,7 +14,7 @@ system sh/cfg.sh -n dnode1 -c adminDebugFlag -v 131
system sh/cfg.sh -n dnode1 -c httpDebugFlag -v 135
system sh/cfg.sh -n dnode1 -c debugFlag -v 131
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
print ======================== dnode1 start
...
...
@@ -104,11 +104,11 @@ while $i < 10
$i = $i + 1
endw
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode4 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode5 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode6 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode7 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode8 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
tests/script/unique/cluster/balance1.sim
浏览文件 @
d076b7ce
...
...
@@ -46,7 +46,7 @@ system sh/cfg.sh -n dnode8 -c wallevel -v 1
print ============== step1
print ========= start dnode1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create database c_b1_d1 maxTables 4
...
...
@@ -85,7 +85,7 @@ print ============================== step2
print ========= start dnode2
sleep 2000
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
$x = 0
...
...
@@ -162,9 +162,9 @@ print dnode4 ==> $dnode4Role
print ============================== step5
print ========= add dnode2
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname3
sleep 9000
...
...
@@ -251,7 +251,7 @@ endi
print ============================== step9
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sleep 9000
$x = 0
...
...
@@ -333,7 +333,7 @@ sql_error create table c_b1_t5 (t timestamp, i int) -x error3
print ============================== step13
sql create dnode $hostname5
system sh/exec
_up
.sh -n dnode5 -s start
system sh/exec.sh -n dnode5 -s start
sleep 9000
sql show mnodes
...
...
@@ -381,7 +381,7 @@ endi
print ============================== step14
sql create dnode $hostname6
system sh/exec
_up
.sh -n dnode6 -s start
system sh/exec.sh -n dnode6 -s start
sleep 15000
sql create database c_b1_d7 maxTables 4
...
...
@@ -554,11 +554,11 @@ if $data41 != 85 then
endi
print ============================================ over=
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/cluster/balance2.sim
浏览文件 @
d076b7ce
...
...
@@ -46,14 +46,14 @@ system sh/cfg.sh -n dnode8 -c mnodeEqualVnodeNum -v 0
print ============== step1
print ========= start dnode1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sleep 4001
sql create dnode $hostname2
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 4001
sql create database c_b2_d1 replica 2 maxTables 4
...
...
@@ -148,12 +148,12 @@ print dnode2 ==> $dnode2Role
print dnode3 ==> $dnode3Role
print dnode4 ==> $dnode4Role
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
print ============================== step3
print ========= start dnode4
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sleep 10000
$x = 0
...
...
@@ -259,12 +259,12 @@ if $dnode4Role != slave then
return -1
endi
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
print ============================== step5
print ========= start dnode3
sql create dnode $hostname5
system sh/exec
_up
.sh -n dnode5 -s start
system sh/exec.sh -n dnode5 -s start
sleep 9000
$x = 0
...
...
@@ -301,7 +301,7 @@ print dnode4 ==> $dnode4Role
print dnode5 ==> $dnode5Role
print ============================== step6
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
print stop dnode1 and sleep 10000
sleep 10000
...
...
@@ -322,7 +322,7 @@ if $dnode1Role != offline then
endi
print ============================== step6.1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
$x = 0
show6:
...
...
@@ -357,7 +357,7 @@ print dnode1 ==> $dnode1Role
print dnode4 ==> $dnode4Role
print dnode5 ==> $dnode5Role
#system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
#system sh/exec.sh -n dnode1 -s stop -x SIGINT
print ============================== step12
print ========= check data
...
...
@@ -421,11 +421,11 @@ if $data41 != 35 then
endi
print ============================================ over
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode4 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode5 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode6 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode7 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode8 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
tests/script/unique/cluster/balance3.sim
浏览文件 @
d076b7ce
...
...
@@ -47,14 +47,14 @@ system sh/cfg.sh -n dnode8 -c wallevel -v 1
print ============== step1
print ========= start dnode1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sleep 2001
sql create dnode $hostname2
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3001
sql create database c_b3_d1 replica 3
...
...
@@ -117,7 +117,7 @@ endi
print ============================== step2
print ========= start dnode4
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sleep 9000
$x = 0
...
...
@@ -176,11 +176,11 @@ if $dnode4Vnodes != 3 then
goto show3
endi
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
print ============================== step4
sql create dnode $hostname5
system sh/exec
_up
.sh -n dnode5 -s start
system sh/exec.sh -n dnode5 -s start
sleep 10000
$x = 0
...
...
@@ -239,11 +239,11 @@ if $dnode4Vnodes != 3 then
goto show5
endi
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
print ============================== step6
sql create dnode $hostname6
system sh/exec
_up
.sh -n dnode6 -s start
system sh/exec.sh -n dnode6 -s start
sleep 9000
$x = 0
...
...
@@ -302,11 +302,11 @@ if $dnode4Vnodes != null then
goto show7
endi
system sh/exec
_up
.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
print ============================== step8
sql create dnode $hostname7
system sh/exec
_up
.sh -n dnode7 -s start
system sh/exec.sh -n dnode7 -s start
sleep 9000
$x = 0
...
...
@@ -332,7 +332,7 @@ endi
print ============================== step9
print ========= drop dnode1
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
print stop dnode1 and sleep 10000
sleep 10000
...
...
@@ -353,7 +353,7 @@ if $dnode1Role != offline then
endi
print ============================== step9.1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
$x = 0
show9:
...
...
@@ -380,7 +380,7 @@ if $dnode7Vnodes != 3 then
goto show9
endi
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
print ============================== step11
print ========= add db4
...
...
@@ -428,7 +428,7 @@ if $dnode7Vnodes != 4 then
goto show11
endi
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
print ============================== step13
sql reset query cache
...
...
@@ -492,11 +492,11 @@ if $data41 != 35 then
endi
print ============================================ over
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode4 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode5 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode6 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode7 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode8 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
tests/script/unique/column/replica3.sim
浏览文件 @
d076b7ce
...
...
@@ -10,12 +10,12 @@ system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3
system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sql create database db replica 3
sql use db
...
...
@@ -33,11 +33,11 @@ sql_error create database d1 replica 2 wal 0
sql create database d2 replica 1 wal 0
sql_error alter database d2 replica 2
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/db/commit.sim
浏览文件 @
d076b7ce
...
...
@@ -14,13 +14,13 @@ system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4
system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4
print ========= start dnode1 as master
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sleep 3000
print ========= start other dnodes
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 3000
print ======== step1 create db
...
...
@@ -47,9 +47,9 @@ if $data01 != 40 then
endi
print ======== step2 stop dnode
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 3000
sql select * from tb order by ts desc
...
...
@@ -98,9 +98,9 @@ if $data01 != 40 then
endi
print ======== step5 stop dnode
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 3000
sql select * from tb
...
...
@@ -115,11 +115,11 @@ if $data01 != 40 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/db/delete.sim
浏览文件 @
d076b7ce
...
...
@@ -14,13 +14,13 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 10
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 10
print ========= start dnodes
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
print ======== step1
sql create database db replica 3 blocks 2 maxtables 1000
...
...
@@ -65,14 +65,14 @@ endi
print ======== step3
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 1000
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
$x = 0
step3:
...
...
@@ -90,11 +90,11 @@ endi
sleep 1000
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/db/delete_part.sim
浏览文件 @
d076b7ce
...
...
@@ -30,11 +30,11 @@ system sh/cfg.sh -n dnode3 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode4 -c maxtablesPerVnode -v 4
print ========= start dnodes
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$loop = 0
begin:
...
...
@@ -137,14 +137,14 @@ begin:
print ======== step2 $loop
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 1000
print ==> drop database $db
sql drop database $db
print ======== step3 $loop
sleep 2000
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 15000
sql show dnodes
...
...
@@ -175,11 +175,11 @@ begin:
goto begin
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/db/replica_add12.sim
浏览文件 @
d076b7ce
...
...
@@ -26,12 +26,12 @@ system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
print ======== step1
...
...
@@ -145,7 +145,7 @@ sql reset query cache
sleep 2000
print ========= step5
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql select * from d1.t1
...
...
@@ -196,7 +196,7 @@ if $rows != 2 then
endi
print ========= step6
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
sql insert into d1.t1 values(now, 3)
...
...
@@ -226,7 +226,7 @@ endi
print ========= step61
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 5000
sql_error insert into d1.t1 values(now, 3)
...
...
@@ -255,7 +255,7 @@ if $rows != 3 then
endi
print ========= step7
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
sql insert into d1.t1 values(now, 5)
...
...
@@ -283,11 +283,11 @@ if $rows != 4 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/db/replica_add13.sim
浏览文件 @
d076b7ce
...
...
@@ -26,14 +26,14 @@ system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sleep 3000
print ======== step1
...
...
@@ -139,7 +139,7 @@ endi
print ========= step5
sql reset query cache
sleep 1000
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql insert into d1.t1 values(1589529000013, 3)
...
...
@@ -168,9 +168,9 @@ if $rows != 3 then
endi
print ========= step6
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(1589529000014, 4)
...
...
@@ -203,9 +203,9 @@ if $rows != 4 then
endi
print ========= step7
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(1589529000015, 5)
...
...
@@ -234,9 +234,9 @@ if $rows != 5 then
endi
print ========= step8
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql insert into d1.t1 values(1589529000016, 6)
...
...
@@ -264,11 +264,11 @@ if $rows != 6 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/db/replica_add23.sim
浏览文件 @
d076b7ce
...
...
@@ -26,14 +26,14 @@ system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sleep 3000
print ======== step1
...
...
@@ -140,7 +140,7 @@ sql reset query cache
sleep 1000
print ========= step5
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql insert into d1.t1 values(1588262400003, 3)
...
...
@@ -169,9 +169,9 @@ if $rows != 3 then
endi
print ========= step6
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 5000
sql insert into d1.t1 values(1588262400004, 4)
...
...
@@ -200,9 +200,9 @@ if $rows != 4 then
endi
print ========= step7
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
sleep 5000
sql insert into d1.t1 values(1588262400005, 5)
...
...
@@ -231,9 +231,9 @@ if $rows != 5 then
endi
print ========= step8
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql insert into d1.t1 values(1588262400006, 6)
...
...
@@ -261,11 +261,11 @@ if $rows != 6 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/db/replica_part.sim
浏览文件 @
d076b7ce
...
...
@@ -18,12 +18,12 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
print ======== step1
...
...
@@ -63,7 +63,7 @@ if $rows != 1 then
endi
print ========= step2 alter db
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql alter database d1 replica 2
sql alter database d2 replica 2
...
...
@@ -72,7 +72,7 @@ sql alter database d4 replica 2
sleep 5000
print ========= step3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 10000
print ========= step4
...
...
@@ -102,7 +102,7 @@ if $rows != 2 then
endi
print ========= step5
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql reset query cache
...
...
@@ -118,9 +118,9 @@ sql insert into d4.t4 values(now, 3) -x s4
s4:
print ========= step6
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 5000
sql insert into d1.t1 values(now, 4) -x s5
...
...
@@ -133,7 +133,7 @@ sql insert into d4.t4 values(now, 4) -x s8
s8:
print ========= step7
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
sql insert into d1.t1 values(now, 5)
...
...
@@ -146,11 +146,11 @@ sql select * from d2.t2
sql select * from d3.t3
sql select * from d4.t4
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/db/replica_reduce21.sim
浏览文件 @
d076b7ce
...
...
@@ -18,10 +18,10 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 3000
print ======== step1
...
...
@@ -117,7 +117,7 @@ if $rows != 2 then
endi
print ======== step9 stop dnode2
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000
sql insert into d5.t5 values(now, 3)
...
...
@@ -145,11 +145,11 @@ if $rows != 3 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/db/replica_reduce31.sim
浏览文件 @
d076b7ce
...
...
@@ -18,12 +18,12 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
print ======== step1
...
...
@@ -139,7 +139,7 @@ if $rows != 3 then
endi
print ========= step4
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql reset query cache
...
...
@@ -155,9 +155,9 @@ sql insert into d4.t4 values(now, 4) -x step4
step4:
print ========= step5
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 5000
sql insert into d1.t1 values(now, 5) -x step5
...
...
@@ -170,7 +170,7 @@ sql insert into d4.t4 values(now, 5) -x step8
step8:
print ========= step6
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
sql insert into d1.t1 values(now, 6)
...
...
@@ -183,11 +183,11 @@ sql select * from d2.t2
sql select * from d3.t3
sql select * from d4.t4
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/db/replica_reduce32.sim
浏览文件 @
d076b7ce
...
...
@@ -18,12 +18,12 @@ system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
print ======== step1
...
...
@@ -99,7 +99,7 @@ sql reset query cache
sleep 1000
print ========= step4
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
sql insert into d1.t1 values(now, 3) -x step1
...
...
@@ -117,10 +117,10 @@ sql select * from d3.t3
sql select * from d4.t4
print ========= step5
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 5000
sql reset query cache
...
...
@@ -136,7 +136,7 @@ sql insert into d4.t4 values(now, 3) -x step41
step41:
print ========= step6
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
sql insert into d1.t1 values(now, 5)
...
...
@@ -156,11 +156,11 @@ print d3.t3 $rows
sql select * from d4.t4
print d4.t4 $rows
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/dnode/alternativeRole.sim
浏览文件 @
d076b7ce
...
...
@@ -17,13 +17,13 @@ system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 3000
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
sql show dnodes
...
...
@@ -81,11 +81,11 @@ if $data2_3 != 1 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/dnode/balance1.sim
浏览文件 @
d076b7ce
...
...
@@ -26,7 +26,7 @@ system sh/cfg.sh -n dnode3 -c wallevel -v 2
system sh/cfg.sh -n dnode4 -c wallevel -v 2
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sleep 3000
...
...
@@ -47,7 +47,7 @@ endi
print ========== step2
sleep 2000
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$x = 0
show2:
...
...
@@ -110,11 +110,11 @@ if $rows != 1 then
goto show4
endi
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
print ========== step5
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
$x = 0
show5:
...
...
@@ -164,7 +164,7 @@ endi
print ========== step7
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
$x = 0
show7:
...
...
@@ -250,7 +250,7 @@ if $data2_4 != 4 then
goto show9
endi
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sql reset query cache
sleep 1000
...
...
@@ -328,11 +328,11 @@ if $data41 != 45 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/dnode/balance2.sim
浏览文件 @
d076b7ce
...
...
@@ -19,13 +19,13 @@ system sh/cfg.sh -n dnode4 -c wallevel -v 1
system sh/cfg.sh -n dnode5 -c wallevel -v 1
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
sql create database d1 replica 2 maxTables 4
...
...
@@ -83,11 +83,11 @@ if $data2_3 != 2 then
goto show2
endi
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
print ========== step3
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
$x = 0
show3:
...
...
@@ -144,7 +144,7 @@ endi
print ========== step5
sql create dnode $hostname5
system sh/exec
_up
.sh -n dnode5 -s start
system sh/exec.sh -n dnode5 -s start
$x = 0
show5:
...
...
@@ -209,7 +209,7 @@ if $data2_5 != 3 then
goto show6
endi
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sql reset query cache
sleep 1000
...
...
@@ -269,11 +269,11 @@ if $data41 != 35 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/dnode/balance3.sim
浏览文件 @
d076b7ce
...
...
@@ -22,15 +22,15 @@ system sh/cfg.sh -n dnode5 -c wallevel -v 1
system sh/cfg.sh -n dnode6 -c wallevel -v 1
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
sql create dnode $hostname3
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode4 -s start
sleep 3000
sql create database d1 replica 3 maxTables 4
...
...
@@ -98,11 +98,11 @@ if $data2_4 != 2 then
goto show2
endi
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
print ========== step
sql create dnode $hostname5
system sh/exec
_up
.sh -n dnode5 -s start
system sh/exec.sh -n dnode5 -s start
$x = 0
show3:
...
...
@@ -178,7 +178,7 @@ endi
print ========== step5
sql create dnode $hostname6
system sh/deploy.sh -n dnode6 -i 6
system sh/exec
_up
.sh -n dnode6 -s start
system sh/exec.sh -n dnode6 -s start
$x = 0
show5:
...
...
@@ -238,7 +238,7 @@ if $data2_5 != 3 then
goto show6
endi
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sql reset query cache
sleep 1000
...
...
@@ -298,11 +298,11 @@ if $data41 != 35 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/dnode/balancex.sim
浏览文件 @
d076b7ce
...
...
@@ -16,7 +16,7 @@ system sh/cfg.sh -n dnode3 -c wallevel -v 1
system sh/cfg.sh -n dnode4 -c wallevel -v 1
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sleep 3000
...
...
@@ -44,7 +44,7 @@ endi
print ========== step2
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$x = 0
show2:
...
...
@@ -92,7 +92,7 @@ endi
print ========== step3
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
$x = 0
show4:
...
...
@@ -139,7 +139,7 @@ if $data2_3 != 3 then
goto show5
endi
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sql reset query cache
sleep 1000
...
...
@@ -199,11 +199,11 @@ if $data41 != 35 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/dnode/basic1.sim
浏览文件 @
d076b7ce
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/deploy.sh -n dnode2 -i 2
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode2 -s start
sql connect
print =============== show dnodes
...
...
tests/script/unique/dnode/monitor_bug.sim
浏览文件 @
d076b7ce
...
...
@@ -13,7 +13,7 @@ system sh/cfg.sh -n dnode1 -c monitor -v 1
system sh/cfg.sh -n dnode2 -c monitor -v 0
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sleep 5000
...
...
@@ -25,7 +25,7 @@ endi
print ========== step2
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$x = 0
show2:
...
...
tests/script/unique/dnode/offline1.sim
浏览文件 @
d076b7ce
...
...
@@ -21,10 +21,10 @@ system sh/cfg.sh -n dnode2 -c wallevel -v 1
system sh/cfg.sh -n dnode3 -c wallevel -v 1
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 3000
sql show dnodes
...
...
@@ -39,7 +39,7 @@ if $data4_2 != ready then
endi
print ========== step2
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 8000
sql show dnodes
...
...
@@ -67,11 +67,11 @@ if $data4_2 != null then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/dnode/offline2.sim
浏览文件 @
d076b7ce
...
...
@@ -21,10 +21,10 @@ system sh/cfg.sh -n dnode2 -c wallevel -v 1
system sh/cfg.sh -n dnode3 -c wallevel -v 1
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 3000
sql create database d1 replica 2 maxTables 4
...
...
@@ -43,7 +43,7 @@ if $data4_2 != ready then
endi
print ========== step2
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 8000
sql show dnodes
...
...
@@ -73,8 +73,8 @@ endi
print ========== step4
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
sql drop dnode $hostname2
sleep 5000
...
...
@@ -109,11 +109,11 @@ if $rows != 1 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/dnode/remove1.sim
浏览文件 @
d076b7ce
...
...
@@ -16,7 +16,7 @@ system sh/cfg.sh -n dnode3 -c wallevel -v 1
system sh/cfg.sh -n dnode4 -c wallevel -v 1
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -44,7 +44,7 @@ endi
print ========== step2
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 9000
sql create database d3 replica 2 maxTables 4
...
...
@@ -91,7 +91,7 @@ print dnode2 openVnodes $data2_2
print ========== step4
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
$x = 0
show4:
...
...
@@ -109,11 +109,11 @@ if $data2_2 != null then
goto show4
endi
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
print ========== step5
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
$x = 0
show5:
...
...
@@ -195,11 +195,11 @@ if $data41 != 35 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/dnode/remove2.sim
浏览文件 @
d076b7ce
...
...
@@ -16,7 +16,7 @@ system sh/cfg.sh -n dnode3 -c wallevel -v 2
system sh/cfg.sh -n dnode4 -c wallevel -v 2
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -44,7 +44,7 @@ endi
print ========== step2
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 9000
sql create database d3 replica 2 maxTables 4
...
...
@@ -74,7 +74,7 @@ if $data2_2 != 3 then
endi
print ========== step3
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sql drop dnode $hostname2
sleep 4000
...
...
@@ -84,7 +84,7 @@ print dnode2 openVnodes $data2_2
print ========== step4
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
...
...
@@ -97,7 +97,7 @@ if $data2_3 != 0 then
endi
print ============ step 4.1
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$x = 0
show4:
...
...
@@ -146,11 +146,11 @@ if $data41 != 35 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/dnode/vnode_clean.sim
浏览文件 @
d076b7ce
...
...
@@ -16,7 +16,7 @@ system sh/cfg.sh -n dnode3 -c wallevel -v 1
system sh/cfg.sh -n dnode4 -c wallevel -v 1
print ========== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create database d1 maxTables 4
...
...
@@ -35,7 +35,7 @@ endi
print ========== step2
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$x = 0
show2:
...
...
@@ -98,12 +98,12 @@ if $rows != 1 then
goto show4
endi
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
print ========== step5
sleep 2000
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
$x = 0
show5:
...
...
@@ -143,7 +143,7 @@ endi
print ========== step7
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
$x = 0
show7:
...
...
@@ -222,7 +222,7 @@ if $data2_4 != 4 then
goto show9
endi
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
print ========== step10
sql select * from d1.t1 order by t desc
...
...
@@ -297,11 +297,11 @@ if $data41 != 45 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/http/admin.sim
浏览文件 @
d076b7ce
...
...
@@ -5,7 +5,7 @@ system sh/cfg.sh -n dnode1 -c http -v 1
system sh/cfg.sh -n dnode1 -c wallevel -v 0
#system sh/cfg.sh -n dnode1 -c adminRowLimit -v 10
system sh/cfg.sh -n dnode1 -c httpDebugFlag -v 135
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sleep 3000
...
...
@@ -179,11 +179,11 @@ print =============== step8 - monitor dbs
# return -1
# endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/http/opentsdb.sim
浏览文件 @
d076b7ce
...
...
@@ -4,7 +4,7 @@ system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c http -v 1
system sh/cfg.sh -n dnode1 -c wallevel -v 0
system sh/cfg.sh -n dnode1 -c httpDebugFlag -v 135
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -238,11 +238,11 @@ if $system_content != @{"status":"succ","head":["count(*)"],"data":[[8]],"rows":
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/import/replica2.sim
浏览文件 @
d076b7ce
...
...
@@ -26,12 +26,12 @@ system sh/cfg.sh -n dnode3 -c walLevel -v 2
system sh/cfg.sh -n dnode4 -c walLevel -v 2
print ========= start dnode1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create database ir2db replica 2 days 7
sql use ir2db
...
...
@@ -95,9 +95,9 @@ if $rows != 14 then
endi
print ================== dnode restart
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 5000
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 5000
sql select * from tb;
if $rows != 14 then
...
...
@@ -162,9 +162,9 @@ if $rows != 35 then
endi
print ================= step10
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 5000
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 5000
sql select * from tb;
print $rows
...
...
@@ -192,9 +192,9 @@ if $rows != 49 then
endi
print ================= step13
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
print ================= step14
...
...
@@ -213,20 +213,20 @@ if $rows != 52 then
endi
print ================= step15
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 5000
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 5000
if $rows != 52 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/import/replica3.sim
浏览文件 @
d076b7ce
...
...
@@ -26,14 +26,14 @@ system sh/cfg.sh -n dnode3 -c walLevel -v 2
system sh/cfg.sh -n dnode4 -c walLevel -v 2
print ========= start dnode1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sql create database ir3db replica 3 days 7
...
...
@@ -98,9 +98,9 @@ if $rows != 14 then
endi
print ================== dnode restart
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 5000
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 5000
sql select * from tb;
if $rows != 14 then
...
...
@@ -165,9 +165,9 @@ if $rows != 35 then
endi
print ================= step10
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 5000
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 5000
sql select * from tb;
print $rows
...
...
@@ -195,9 +195,9 @@ if $rows != 49 then
endi
print ================= step13
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
print ================= step14
...
...
@@ -216,20 +216,20 @@ if $rows != 52 then
endi
print ================= step15
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 5000
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
if $rows != 52 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/mnode/mgmt22.sim
浏览文件 @
d076b7ce
...
...
@@ -8,7 +8,7 @@ system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2
print ============== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -20,7 +20,7 @@ if $data2_1 != master then
endi
print ============== step2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
$x = 0
...
...
@@ -46,7 +46,7 @@ sql_error drop dnode $hostname1 -x error1
print should not drop master
print ============== step4
system sh/exec
_up
.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode1 -s stop -x SIGINT
sleep 2000
sql_error show mnodes
print error of no master
...
...
@@ -56,7 +56,7 @@ sql_error drop dnode $hostname1
print error of no master
print ============== step6
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 2000
sql close
sql connect
...
...
@@ -80,7 +80,7 @@ if $data2_2 != slave then
endi
print ============== step7
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname3
sleep 5000
...
...
@@ -106,11 +106,11 @@ if $data3_3 != null then
goto show7
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/mnode/mgmt23.sim
浏览文件 @
d076b7ce
...
...
@@ -8,7 +8,7 @@ system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2
print ============== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql show mnodes
...
...
@@ -19,7 +19,7 @@ if $data2_1 != master then
endi
print ============== step2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
$x = 0
...
...
@@ -41,7 +41,7 @@ if $data2_2 != slave then
endi
print ============== step3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname3
sleep 8000
...
...
@@ -85,14 +85,14 @@ if $dnode3Role != slave then
return -1
endi
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
print ============== step5
sleep 2000
sql create dnode $hostname2
system sh/deploy.sh -n dnode2 -i 2
system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 8000
sql show mnodes
...
...
@@ -114,7 +114,7 @@ if $dnode3Role != slave then
endi
print ============== step6
system sh/exec
_up
.sh -n dnode1 -s stop
system sh/exec.sh -n dnode1 -s stop
sleep 10000
sql_error show mnodes
...
...
@@ -122,11 +122,11 @@ sql_error show mnodes
print ============== step7
sql_error drop dnode $hostname1
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/mnode/mgmt24.sim
浏览文件 @
d076b7ce
...
...
@@ -8,7 +8,7 @@ system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2
print ============== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql show mnodes
...
...
@@ -19,7 +19,7 @@ if $data2_1 != master then
endi
print ============== step2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
$x = 0
...
...
@@ -41,7 +41,7 @@ if $data2_2 != slave then
endi
print ============== step3
system sh/exec
_up
.sh -n dnode1 -s stop
system sh/exec.sh -n dnode1 -s stop
sleep 2000
sql_error show mnodes
...
...
@@ -49,7 +49,7 @@ print ============== step4
sql_error drop dnode $hostname1
print ============== step5
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql_error create dnode $hostname1
sql close
...
...
@@ -74,11 +74,11 @@ if $data2_2 != slave then
goto step5
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/mnode/mgmt25.sim
浏览文件 @
d076b7ce
...
...
@@ -8,7 +8,7 @@ system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2
print ============== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql show mnodes
...
...
@@ -19,7 +19,7 @@ if $data2_1 != master then
endi
print ============== step2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
$x = 0
...
...
@@ -41,7 +41,7 @@ if $data2_2 != slave then
endi
print ============== step3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname3
sleep 6000
...
...
@@ -85,11 +85,11 @@ if $dnode3Role != slave then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/mnode/mgmt26.sim
浏览文件 @
d076b7ce
...
...
@@ -8,7 +8,7 @@ system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2
print ============== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql show mnodes
...
...
@@ -19,7 +19,7 @@ if $data2_1 != master then
endi
print ============== step2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
$x = 0
...
...
@@ -41,7 +41,7 @@ if $data2_2 != slave then
endi
print ============== step3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname3
sleep 6000
...
...
@@ -87,11 +87,11 @@ if $dnode3Role != slave then
endi
print ============== step5
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
system sh/deploy.sh -n dnode2 -i 2
system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2
sleep 5000
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
sleep 6000
...
...
@@ -113,11 +113,11 @@ if $dnode3Role != slave then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/mnode/mgmt33.sim
浏览文件 @
d076b7ce
...
...
@@ -8,7 +8,7 @@ system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3
print ============== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql show mnodes
...
...
@@ -26,7 +26,7 @@ if $data3_3 != null then
endi
print ============== step2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
sleep 8000
...
...
@@ -49,7 +49,7 @@ if $dnode3Role != null then
endi
print ============== step3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname3
sleep 8000
...
...
@@ -93,12 +93,12 @@ if $dnode3Role != slave then
return -1
endi
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 3000
system sh/deploy.sh -n dnode2 -i 2
system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
print ============== step5
sql create dnode $hostname2
...
...
@@ -123,7 +123,7 @@ if $dnode3Role != slave then
endi
print ============== step6
system sh/exec
_up
.sh -n dnode1 -s stop
system sh/exec.sh -n dnode1 -s stop
sleep 10000
sql show mnodes
...
...
@@ -166,11 +166,11 @@ endi
# return -1
#endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/mnode/mgmt34.sim
浏览文件 @
d076b7ce
...
...
@@ -11,7 +11,7 @@ system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3
system sh/cfg.sh -n dnode4 -c numOfMnodes -v 3
print ============== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -30,7 +30,7 @@ if $data3_3 != null then
endi
print ============== step2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
sleep 8000
...
...
@@ -58,7 +58,7 @@ if $dnode4Role != null then
endi
print ============== step3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname3
sleep 8000
...
...
@@ -87,7 +87,7 @@ endi
print ============== step4
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sql create dnode $hostname4
sleep 8000
...
...
@@ -141,12 +141,12 @@ if $dnode4Role != slave then
return -1
endi
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 3000
system sh/deploy.sh -n dnode2 -i 2
system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
print ============== step6
sql create dnode $hostname2
...
...
@@ -176,7 +176,7 @@ if $dnode4Role != slave then
endi
print ============== step7
system sh/exec
_up
.sh -n dnode1 -s stop
system sh/exec.sh -n dnode1 -s stop
sleep 4000
sql show mnodes
...
...
@@ -220,11 +220,11 @@ endi
# return -1
#endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/mnode/mgmtr2.sim
浏览文件 @
d076b7ce
...
...
@@ -8,7 +8,7 @@ system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 2
print ============== step1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
...
...
@@ -37,22 +37,22 @@ sql create dnode $hostname3
print ============== step3
print ========= start dnode2 and dnode3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 1000
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 8000
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec
_up
.sh -n dnode3 -s stop
system sh/exec.sh -n dnode2 -s stop
system sh/exec.sh -n dnode3 -s stop
sleep 4000
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 4000
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec
_up
.sh -n dnode3 -s stop
system sh/exec.sh -n dnode2 -s stop
system sh/exec.sh -n dnode3 -s stop
sleep 4000
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
print ============== step4
sql show mnodes
...
...
@@ -74,11 +74,11 @@ if $dnode3Role != null then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/stable/balance_replica1.sim
浏览文件 @
d076b7ce
...
...
@@ -23,7 +23,7 @@ $totalNum = 200
print ============== step1
print ========= start dnode1
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
$i = 0
...
...
@@ -78,7 +78,7 @@ if $dnode2Vnodes != null then
endi
print =============== step3 start dnode2
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 8000
$x = 0
...
...
@@ -135,11 +135,11 @@ if $rows != 2600 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/stable/dnode2.sim
浏览文件 @
d076b7ce
...
...
@@ -7,12 +7,12 @@ system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$x = 0
createDnode:
...
...
@@ -194,11 +194,11 @@ if $rows != 0 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/stable/dnode2_stop.sim
浏览文件 @
d076b7ce
...
...
@@ -7,11 +7,11 @@ system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$x = 0
createDnode:
...
...
@@ -73,7 +73,7 @@ endi
sleep 100
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
print =============== step2
sql select count(*) from $mt -x step2
...
...
@@ -84,7 +84,7 @@ sql select count(tbcol) from $mt -x step21
return -1
step21:
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 10000
print =============== step3
...
...
@@ -147,11 +147,11 @@ if $rows != 0 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/stable/dnode3.sim
浏览文件 @
d076b7ce
...
...
@@ -11,14 +11,14 @@ system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode3 -c maxtablesPerVnode -v 4
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
$x = 0
createDnode:
...
...
@@ -222,11 +222,11 @@ if $rows != 0 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/stable/replica2_dnode4.sim
浏览文件 @
d076b7ce
...
...
@@ -15,16 +15,16 @@ system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode3 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode4 -c maxtablesPerVnode -v 4
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
sql create dnode $hostname3
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode4 -s start
$x = 0
createDnode:
...
...
@@ -212,11 +212,11 @@ if $rows != 0 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/stable/replica2_vnode3.sim
浏览文件 @
d076b7ce
...
...
@@ -7,11 +7,11 @@ system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
$x = 0
createDnode:
...
...
@@ -191,11 +191,11 @@ if $rows != 0 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/stable/replica3_dnode6.sim
浏览文件 @
d076b7ce
...
...
@@ -27,7 +27,7 @@ system sh/cfg.sh -n dnode4 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode5 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode6 -c maxtablesPerVnode -v 4
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
...
...
@@ -35,11 +35,11 @@ sql create dnode $hostname3
sql create dnode $hostname4
sql create dnode $hostname5
sql create dnode $hostname6
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec
_up
.sh -n dnode5 -s start
system sh/exec
_up
.sh -n dnode6 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode4 -s start
system sh/exec.sh -n dnode5 -s start
system sh/exec.sh -n dnode6 -s start
$x = 0
createDnode:
...
...
@@ -239,11 +239,11 @@ if $rows != 0 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/stable/replica3_vnode3.sim
浏览文件 @
d076b7ce
...
...
@@ -16,16 +16,16 @@ system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode3 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode4 -c maxtablesPerVnode -v 4
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
sql create dnode $hostname3
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode4 -s start
$x = 0
createDnode:
$x = $x + 1
...
...
@@ -213,11 +213,11 @@ if $rows != 0 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/vnode/many.sim
浏览文件 @
d076b7ce
...
...
@@ -20,13 +20,13 @@ system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
print ========= step1
...
...
@@ -57,22 +57,22 @@ run_back unique/vnode/back_insert_many.sim
sleep 5000
print ======== step3
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 5000
$x = 0
loop:
print ======== step4
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode3 -s stop
system sh/exec.sh -n dnode3 -s stop
sleep 5000
print ======== step5
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 5000
print ======== step6
...
...
@@ -113,11 +113,11 @@ if $x < 2 then
goto loop
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/vnode/replica2_basic2.sim
浏览文件 @
d076b7ce
...
...
@@ -26,13 +26,13 @@ system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
print ========= start dnodes
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
sql create dnode $hostname2
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
sql reset query cache
...
...
@@ -130,7 +130,7 @@ if $rows != 2 then
endi
print ========= step3
system sh/exec
_up
.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 5000
#sql insert into d1.t1 values(now, 3)
...
...
@@ -159,9 +159,9 @@ if $rows != 2 then
endi
print ========= step4
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 5000
#sql insert into d1.t1 values(now, 4)
...
...
@@ -190,7 +190,7 @@ if $rows != 2 then
endi
print ========= step5
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
sql insert into d1.t1 values(now, 5)
...
...
@@ -218,11 +218,11 @@ if $rows != 3 then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/vnode/replica2_repeat.sim
浏览文件 @
d076b7ce
...
...
@@ -16,13 +16,13 @@ system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4
system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4
system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4
system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
print ========= step1
...
...
@@ -37,22 +37,22 @@ run_back unique/vnode/back_insert.sim
sleep 3000
print ======== step3
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 5000
$x = 0
loop:
print ======== step4
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode3 -s stop
system sh/exec.sh -n dnode3 -s stop
sleep 5000
print ======== step5
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 5000
print ======== step6
...
...
@@ -71,11 +71,11 @@ if $x < 2 then
goto loop
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/vnode/replica3_basic.sim
浏览文件 @
d076b7ce
...
...
@@ -10,12 +10,12 @@ system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3
system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
$N = 10
...
...
@@ -48,7 +48,7 @@ if $rows != $expect then
endi
print =================== step 3
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 2000
$y = $x + $N
$expect = $N * 2
...
...
@@ -65,7 +65,7 @@ if $rows != $expect then
endi
print =================== step 4
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 2000
$y = $x + $N
$expect = $N * 3
...
...
@@ -82,7 +82,7 @@ if $rows != $expect then
endi
print =================== step 5
system sh/exec
_up
.sh -n dnode3 -s stop
system sh/exec.sh -n dnode3 -s stop
sleep 2000
$y = $x + $N
$expect = $N * 4
...
...
@@ -99,7 +99,7 @@ if $rows != $expect then
endi
print =================== step 6
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 2000
$y = $x + $N
$expect = $N * 5
...
...
@@ -116,7 +116,7 @@ return -1
endi
print =================== step 7
system sh/exec
_up
.sh -n dnode1 -s stop
system sh/exec.sh -n dnode1 -s stop
sleep 2000
$y = $x + $N
$expect = $N * 6
...
...
@@ -133,7 +133,7 @@ return -1
endi
print =================== step 8
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sleep 2000
$y = $x + $N
$expect = $N * 7
...
...
@@ -149,11 +149,11 @@ if $rows != $expect then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/vnode/replica3_repeat.sim
浏览文件 @
d076b7ce
...
...
@@ -17,15 +17,15 @@ system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4
system sh/cfg.sh -n dnode3 -c mnodeEqualVnodeNum -v 4
system sh/cfg.sh -n dnode4 -c mnodeEqualVnodeNum -v 4
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
sql create dnode $hostname3
sql create dnode $hostname4
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode4 -s start
sleep 3000
print ========= step1
...
...
@@ -40,28 +40,28 @@ run_back unique/vnode/back_insert.sim
sleep 3000
print ======== step3
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 5000
$x = 0
loop:
print ======== step4
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode3 -s stop
system sh/exec.sh -n dnode3 -s stop
sleep 5000
print ======== step5
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode3 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode4 -s stop
system sh/exec.sh -n dnode4 -s stop
sleep 5000
print ======== step6
system sh/exec
_up
.sh -n dnode4 -s start
system sh/exec.sh -n dnode4 -s start
sleep 5000
system sh/exec
_up
.sh -n dnode2 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 5000
print ======== step7
...
...
@@ -80,11 +80,11 @@ if $x < 2 then
goto loop
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/script/unique/vnode/replica3_vgroup.sim
浏览文件 @
d076b7ce
...
...
@@ -10,12 +10,12 @@ system sh/cfg.sh -n dnode1 -c numOfMnodes -v 3
system sh/cfg.sh -n dnode2 -c numOfMnodes -v 3
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 3
system sh/exec
_up
.sh -n dnode1 -s start
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
sql create dnode $hostname3
system sh/exec
_up
.sh -n dnode2 -s start
system sh/exec
_up
.sh -n dnode3 -s start
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
$N = 10
...
...
@@ -61,11 +61,11 @@ if $rows != $expect then
return -1
endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
system sh/exec_up.sh -n dnode5 -s stop -x SIGINT
system sh/exec_up.sh -n dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -s stop -x SIGINT
system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
system sh/exec.sh -n dnode1 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode3 -s stop -x SIGINT
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode5 -s stop -x SIGINT
system sh/exec.sh -n dnode6 -s stop -x SIGINT
system sh/exec.sh -n dnode7 -s stop -x SIGINT
system sh/exec.sh -n dnode8 -s stop -x SIGINT
\ No newline at end of file
tests/test-all.sh
浏览文件 @
d076b7ce
...
...
@@ -9,10 +9,10 @@ NC='\033[0m'
echo
"### run TSIM script ###"
cd
script
./test.sh
-f
basicSuite.sim 2>&1 |
grep
'success\|failed\|fault'
|
grep
-v
'default'
|
tee
out.
txt
./test.sh
-f
basicSuite.sim 2>&1 |
grep
'success\|failed\|fault'
|
grep
-v
'default'
|
tee
out.
log
totalSuccess
=
`
grep
'success'
out.
txt
|
wc
-l
`
totalBasic
=
`
grep
success out.
txt
|
grep
Suite |
wc
-l
`
totalSuccess
=
`
grep
'success'
out.
log
|
wc
-l
`
totalBasic
=
`
grep
success out.
log
|
grep
Suite |
wc
-l
`
if
[
"
$totalSuccess
"
-gt
"0"
]
;
then
totalSuccess
=
`
expr
$totalSuccess
-
$totalBasic
`
...
...
@@ -20,7 +20,7 @@ fi
echo
-e
"
${
GREEN
}
### Total
$totalSuccess
TSIM case(s) succeed! ###
${
NC
}
"
totalFailed
=
`
grep
'failed\|fault'
out.
txt
|
wc
-l
`
totalFailed
=
`
grep
'failed\|fault'
out.
log
|
wc
-l
`
# echo -e "${RED} ### Total $totalFailed TSIM case(s) failed! ### ${NC}"
if
[
"
$totalFailed
"
-ne
"0"
]
;
then
...
...
@@ -33,17 +33,17 @@ echo "### run Python script ###"
cd
../pytest
if
[
"
$1
"
==
"cron"
]
;
then
./fulltest.sh 2>&1 |
grep
'successfully executed\|failed\|fault'
|
grep
-v
'default'
|
tee
pytest-out.
txt
./fulltest.sh 2>&1 |
grep
'successfully executed\|failed\|fault'
|
grep
-v
'default'
|
tee
pytest-out.
log
else
./smoketest.sh 2>&1 |
grep
'successfully executed\|failed\|fault'
|
grep
-v
'default'
|
tee
pytest-out.
txt
./smoketest.sh 2>&1 |
grep
'successfully executed\|failed\|fault'
|
grep
-v
'default'
|
tee
pytest-out.
log
fi
totalPySuccess
=
`
grep
'successfully executed'
pytest-out.
txt
|
wc
-l
`
totalPySuccess
=
`
grep
'successfully executed'
pytest-out.
log
|
wc
-l
`
if
[
"
$totalPySuccess
"
-gt
"0"
]
;
then
echo
-e
"
${
GREEN
}
### Total
$totalPySuccess
python case(s) succeed! ###
${
NC
}
"
fi
totalPyFailed
=
`
grep
'failed\|fault'
pytest-out.
txt
|
wc
-l
`
totalPyFailed
=
`
grep
'failed\|fault'
pytest-out.
log
|
wc
-l
`
if
[
"
$totalPyFailed
"
-ne
"0"
]
;
then
echo
-e
"
${
RED
}
### Total
$totalPyFailed
python case(s) failed! ###
${
NC
}
"
# exit $totalPyFailed
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录