Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
dc714776
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
dc714776
编写于
4月 02, 2022
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/3.0' into feature/shm
上级
8e8728a0
6800c011
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
400 addition
and
459 deletion
+400
-459
include/client/taos.h
include/client/taos.h
+1
-1
include/common/tmsg.h
include/common/tmsg.h
+4
-5
include/common/ttypes.h
include/common/ttypes.h
+1
-0
source/client/inc/clientInt.h
source/client/inc/clientInt.h
+4
-2
source/client/src/clientEnv.c
source/client/src/clientEnv.c
+1
-0
source/client/src/clientImpl.c
source/client/src/clientImpl.c
+26
-3
source/client/src/clientMain.c
source/client/src/clientMain.c
+7
-5
source/client/src/tmq.c
source/client/src/tmq.c
+11
-25
source/common/src/tmsg.c
source/common/src/tmsg.c
+10
-12
source/dnode/mnode/impl/src/mndStb.c
source/dnode/mnode/impl/src/mndStb.c
+38
-1
source/dnode/mnode/impl/src/mndSubscribe.c
source/dnode/mnode/impl/src/mndSubscribe.c
+1
-1
source/dnode/mnode/sdb/src/sdbHash.c
source/dnode/mnode/sdb/src/sdbHash.c
+4
-0
source/dnode/vnode/src/vnd/vnodeWrite.c
source/dnode/vnode/src/vnd/vnodeWrite.c
+19
-5
source/libs/executor/inc/executorimpl.h
source/libs/executor/inc/executorimpl.h
+2
-22
source/libs/executor/src/executorimpl.c
source/libs/executor/src/executorimpl.c
+34
-351
source/libs/scalar/src/filter.c
source/libs/scalar/src/filter.c
+0
-1
source/libs/scalar/test/filter/filterTests.cpp
source/libs/scalar/test/filter/filterTests.cpp
+0
-20
tests/script/tsim/query/session.sim
tests/script/tsim/query/session.sim
+229
-0
tests/test-all.sh
tests/test-all.sh
+8
-5
未找到文件。
include/client/taos.h
浏览文件 @
dc714776
...
@@ -189,7 +189,7 @@ DLL_EXPORT bool taos_is_null(TAOS_RES *res, int32_t row, int32_t col);
...
@@ -189,7 +189,7 @@ DLL_EXPORT bool taos_is_null(TAOS_RES *res, int32_t row, int32_t col);
DLL_EXPORT
bool
taos_is_update_query
(
TAOS_RES
*
res
);
DLL_EXPORT
bool
taos_is_update_query
(
TAOS_RES
*
res
);
DLL_EXPORT
int
taos_fetch_block
(
TAOS_RES
*
res
,
TAOS_ROW
*
rows
);
DLL_EXPORT
int
taos_fetch_block
(
TAOS_RES
*
res
,
TAOS_ROW
*
rows
);
DLL_EXPORT
int
taos_validate_sql
(
TAOS
*
taos
,
const
char
*
sql
);
DLL_EXPORT
int
taos_validate_sql
(
TAOS
*
taos
,
const
char
*
sql
);
DLL_EXPORT
void
taos_reset_current_db
(
TAOS
*
taos
);
DLL_EXPORT
void
taos_reset_current_db
(
TAOS
*
taos
);
DLL_EXPORT
int
*
taos_fetch_lengths
(
TAOS_RES
*
res
);
DLL_EXPORT
int
*
taos_fetch_lengths
(
TAOS_RES
*
res
);
DLL_EXPORT
TAOS_ROW
*
taos_result_block
(
TAOS_RES
*
res
);
DLL_EXPORT
TAOS_ROW
*
taos_result_block
(
TAOS_RES
*
res
);
...
...
include/common/tmsg.h
浏览文件 @
dc714776
...
@@ -1395,11 +1395,10 @@ typedef struct {
...
@@ -1395,11 +1395,10 @@ typedef struct {
}
SDDropTopicReq
;
}
SDDropTopicReq
;
typedef
struct
{
typedef
struct
{
float
xFilesFactor
;
float
xFilesFactor
;
int8_t
delayUnit
;
int32_t
delay
;
int8_t
nFuncIds
;
int8_t
nFuncIds
;
int32_t
*
pFuncIds
;
func_id_t
*
pFuncIds
;
int64_t
delay
;
}
SRSmaParam
;
}
SRSmaParam
;
typedef
struct
SVCreateTbReq
{
typedef
struct
SVCreateTbReq
{
...
...
include/common/ttypes.h
浏览文件 @
dc714776
...
@@ -31,6 +31,7 @@ typedef int16_t col_id_t;
...
@@ -31,6 +31,7 @@ typedef int16_t col_id_t;
typedef
int8_t
col_type_t
;
typedef
int8_t
col_type_t
;
typedef
int32_t
col_bytes_t
;
typedef
int32_t
col_bytes_t
;
typedef
uint16_t
schema_ver_t
;
typedef
uint16_t
schema_ver_t
;
typedef
int32_t
func_id_t
;
#pragma pack(push, 1)
#pragma pack(push, 1)
typedef
struct
{
typedef
struct
{
...
...
source/client/inc/clientInt.h
浏览文件 @
dc714776
...
@@ -136,7 +136,7 @@ typedef struct STscObj {
...
@@ -136,7 +136,7 @@ typedef struct STscObj {
uint32_t
connId
;
uint32_t
connId
;
int32_t
connType
;
int32_t
connType
;
uint64_t
id
;
// ref ID returned by taosAddRef
uint64_t
id
;
// ref ID returned by taosAddRef
TdThreadMutex
mutex
;
// used to protect the operation on db
TdThreadMutex
mutex
;
// used to protect the operation on db
int32_t
numOfReqs
;
// number of sqlObj bound to this connection
int32_t
numOfReqs
;
// number of sqlObj bound to this connection
SAppInstInfo
*
pAppInfo
;
SAppInstInfo
*
pAppInfo
;
}
STscObj
;
}
STscObj
;
...
@@ -152,7 +152,8 @@ typedef struct SResultColumn {
...
@@ -152,7 +152,8 @@ typedef struct SResultColumn {
typedef
struct
SReqResultInfo
{
typedef
struct
SReqResultInfo
{
const
char
*
pRspMsg
;
const
char
*
pRspMsg
;
const
char
*
pData
;
const
char
*
pData
;
TAOS_FIELD
*
fields
;
TAOS_FIELD
*
fields
;
// todo, column names are not needed.
TAOS_FIELD
*
userFields
;
// the fields info that return to user
uint32_t
numOfCols
;
uint32_t
numOfCols
;
int32_t
*
length
;
int32_t
*
length
;
char
**
convertBuf
;
char
**
convertBuf
;
...
@@ -221,6 +222,7 @@ void destroyRequest(SRequestObj* pRequest);
...
@@ -221,6 +222,7 @@ void destroyRequest(SRequestObj* pRequest);
char
*
getDbOfConnection
(
STscObj
*
pObj
);
char
*
getDbOfConnection
(
STscObj
*
pObj
);
void
setConnectionDB
(
STscObj
*
pTscObj
,
const
char
*
db
);
void
setConnectionDB
(
STscObj
*
pTscObj
,
const
char
*
db
);
void
resetConnectDB
(
STscObj
*
pTscObj
);
void
taos_init_imp
(
void
);
void
taos_init_imp
(
void
);
int
taos_options_imp
(
TSDB_OPTION
option
,
const
char
*
str
);
int
taos_options_imp
(
TSDB_OPTION
option
,
const
char
*
str
);
...
...
source/client/src/clientEnv.c
浏览文件 @
dc714776
...
@@ -169,6 +169,7 @@ static void doFreeReqResultInfo(SReqResultInfo *pResInfo) {
...
@@ -169,6 +169,7 @@ static void doFreeReqResultInfo(SReqResultInfo *pResInfo) {
taosMemoryFreeClear
(
pResInfo
->
row
);
taosMemoryFreeClear
(
pResInfo
->
row
);
taosMemoryFreeClear
(
pResInfo
->
pCol
);
taosMemoryFreeClear
(
pResInfo
->
pCol
);
taosMemoryFreeClear
(
pResInfo
->
fields
);
taosMemoryFreeClear
(
pResInfo
->
fields
);
taosMemoryFreeClear
(
pResInfo
->
userFields
);
if
(
pResInfo
->
convertBuf
!=
NULL
)
{
if
(
pResInfo
->
convertBuf
!=
NULL
)
{
for
(
int32_t
i
=
0
;
i
<
pResInfo
->
numOfCols
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pResInfo
->
numOfCols
;
++
i
)
{
...
...
source/client/src/clientImpl.c
浏览文件 @
dc714776
...
@@ -56,7 +56,7 @@ TAOS* taos_connect_internal(const char* ip, const char* user, const char* pass,
...
@@ -56,7 +56,7 @@ TAOS* taos_connect_internal(const char* ip, const char* user, const char* pass,
}
}
char
localDb
[
TSDB_DB_NAME_LEN
]
=
{
0
};
char
localDb
[
TSDB_DB_NAME_LEN
]
=
{
0
};
if
(
db
!=
NULL
)
{
if
(
db
!=
NULL
&&
strlen
(
db
)
>
0
)
{
if
(
!
validateDbName
(
db
))
{
if
(
!
validateDbName
(
db
))
{
terrno
=
TSDB_CODE_TSC_INVALID_DB_LENGTH
;
terrno
=
TSDB_CODE_TSC_INVALID_DB_LENGTH
;
return
NULL
;
return
NULL
;
...
@@ -164,6 +164,7 @@ int32_t parseSql(SRequestObj* pRequest, bool topicQuery, SQuery** pQuery) {
...
@@ -164,6 +164,7 @@ int32_t parseSql(SRequestObj* pRequest, bool topicQuery, SQuery** pQuery) {
if
((
*
pQuery
)
->
haveResultSet
)
{
if
((
*
pQuery
)
->
haveResultSet
)
{
setResSchemaInfo
(
&
pRequest
->
body
.
resInfo
,
(
*
pQuery
)
->
pResSchema
,
(
*
pQuery
)
->
numOfResCols
);
setResSchemaInfo
(
&
pRequest
->
body
.
resInfo
,
(
*
pQuery
)
->
pResSchema
,
(
*
pQuery
)
->
numOfResCols
);
}
}
TSWAP
(
pRequest
->
dbList
,
(
*
pQuery
)
->
pDbList
,
SArray
*
);
TSWAP
(
pRequest
->
dbList
,
(
*
pQuery
)
->
pDbList
,
SArray
*
);
TSWAP
(
pRequest
->
tableList
,
(
*
pQuery
)
->
pTableList
,
SArray
*
);
TSWAP
(
pRequest
->
tableList
,
(
*
pQuery
)
->
pTableList
,
SArray
*
);
}
}
...
@@ -228,12 +229,24 @@ void setResSchemaInfo(SReqResultInfo* pResInfo, const SSchema* pSchema, int32_t
...
@@ -228,12 +229,24 @@ void setResSchemaInfo(SReqResultInfo* pResInfo, const SSchema* pSchema, int32_t
assert
(
pSchema
!=
NULL
&&
numOfCols
>
0
);
assert
(
pSchema
!=
NULL
&&
numOfCols
>
0
);
pResInfo
->
numOfCols
=
numOfCols
;
pResInfo
->
numOfCols
=
numOfCols
;
pResInfo
->
fields
=
taosMemoryCalloc
(
numOfCols
,
sizeof
(
pSchema
[
0
]));
pResInfo
->
fields
=
taosMemoryCalloc
(
numOfCols
,
sizeof
(
TAOS_FIELD
));
pResInfo
->
userFields
=
taosMemoryCalloc
(
numOfCols
,
sizeof
(
TAOS_FIELD
));
for
(
int32_t
i
=
0
;
i
<
pResInfo
->
numOfCols
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
pResInfo
->
numOfCols
;
++
i
)
{
pResInfo
->
fields
[
i
].
bytes
=
pSchema
[
i
].
bytes
;
pResInfo
->
fields
[
i
].
bytes
=
pSchema
[
i
].
bytes
;
pResInfo
->
fields
[
i
].
type
=
pSchema
[
i
].
type
;
pResInfo
->
fields
[
i
].
type
=
pSchema
[
i
].
type
;
pResInfo
->
userFields
[
i
].
bytes
=
pSchema
[
i
].
bytes
;
pResInfo
->
userFields
[
i
].
type
=
pSchema
[
i
].
type
;
if
(
pSchema
[
i
].
type
==
TSDB_DATA_TYPE_VARCHAR
)
{
pResInfo
->
userFields
[
i
].
bytes
-=
VARSTR_HEADER_SIZE
;
}
else
if
(
pSchema
[
i
].
type
==
TSDB_DATA_TYPE_NCHAR
)
{
pResInfo
->
userFields
[
i
].
bytes
=
(
pResInfo
->
userFields
[
i
].
bytes
-
VARSTR_HEADER_SIZE
)
/
TSDB_NCHAR_SIZE
;
}
tstrncpy
(
pResInfo
->
fields
[
i
].
name
,
pSchema
[
i
].
name
,
tListLen
(
pResInfo
->
fields
[
i
].
name
));
tstrncpy
(
pResInfo
->
fields
[
i
].
name
,
pSchema
[
i
].
name
,
tListLen
(
pResInfo
->
fields
[
i
].
name
));
tstrncpy
(
pResInfo
->
userFields
[
i
].
name
,
pSchema
[
i
].
name
,
tListLen
(
pResInfo
->
userFields
[
i
].
name
));
}
}
}
}
...
@@ -791,6 +804,16 @@ void setConnectionDB(STscObj* pTscObj, const char* db) {
...
@@ -791,6 +804,16 @@ void setConnectionDB(STscObj* pTscObj, const char* db) {
taosThreadMutexUnlock
(
&
pTscObj
->
mutex
);
taosThreadMutexUnlock
(
&
pTscObj
->
mutex
);
}
}
void
resetConnectDB
(
STscObj
*
pTscObj
)
{
if
(
pTscObj
==
NULL
)
{
return
;
}
taosThreadMutexLock
(
&
pTscObj
->
mutex
);
pTscObj
->
db
[
0
]
=
0
;
taosThreadMutexUnlock
(
&
pTscObj
->
mutex
);
}
int32_t
setQueryResultFromRsp
(
SReqResultInfo
*
pResultInfo
,
const
SRetrieveTableRsp
*
pRsp
)
{
int32_t
setQueryResultFromRsp
(
SReqResultInfo
*
pResultInfo
,
const
SRetrieveTableRsp
*
pRsp
)
{
assert
(
pResultInfo
!=
NULL
&&
pRsp
!=
NULL
);
assert
(
pResultInfo
!=
NULL
&&
pRsp
!=
NULL
);
...
...
source/client/src/clientMain.c
浏览文件 @
dc714776
...
@@ -146,7 +146,7 @@ TAOS_FIELD *taos_fetch_fields(TAOS_RES *res) {
...
@@ -146,7 +146,7 @@ TAOS_FIELD *taos_fetch_fields(TAOS_RES *res) {
}
}
SReqResultInfo
*
pResInfo
=
&
(((
SRequestObj
*
)
res
)
->
body
.
resInfo
);
SReqResultInfo
*
pResInfo
=
&
(((
SRequestObj
*
)
res
)
->
body
.
resInfo
);
return
pResInfo
->
f
ields
;
return
pResInfo
->
userF
ields
;
}
}
TAOS_RES
*
taos_query
(
TAOS
*
taos
,
const
char
*
sql
)
{
TAOS_RES
*
taos_query
(
TAOS
*
taos
,
const
char
*
sql
)
{
...
@@ -365,8 +365,7 @@ bool taos_is_null(TAOS_RES *res, int32_t row, int32_t col) {
...
@@ -365,8 +365,7 @@ bool taos_is_null(TAOS_RES *res, int32_t row, int32_t col) {
}
}
bool
taos_is_update_query
(
TAOS_RES
*
res
)
{
bool
taos_is_update_query
(
TAOS_RES
*
res
)
{
// TODO
return
taos_num_fields
(
res
)
==
0
;
return
true
;
}
}
int
taos_fetch_block
(
TAOS_RES
*
res
,
TAOS_ROW
*
rows
)
{
int
taos_fetch_block
(
TAOS_RES
*
res
,
TAOS_ROW
*
rows
)
{
...
@@ -393,8 +392,11 @@ int taos_fetch_block(TAOS_RES *res, TAOS_ROW *rows) {
...
@@ -393,8 +392,11 @@ int taos_fetch_block(TAOS_RES *res, TAOS_ROW *rows) {
int
taos_validate_sql
(
TAOS
*
taos
,
const
char
*
sql
)
{
return
true
;
}
int
taos_validate_sql
(
TAOS
*
taos
,
const
char
*
sql
)
{
return
true
;
}
void
taos_reset_current_db
(
TAOS
*
taos
)
{
void
taos_reset_current_db
(
TAOS
*
taos
)
{
// TODO
if
(
taos
==
NULL
)
{
return
;
return
;
}
resetConnectDB
(
taos
);
}
}
const
char
*
taos_get_server_info
(
TAOS
*
taos
)
{
const
char
*
taos_get_server_info
(
TAOS
*
taos
)
{
...
...
source/client/src/tmq.c
浏览文件 @
dc714776
...
@@ -911,7 +911,7 @@ CREATE_MSG_FAIL:
...
@@ -911,7 +911,7 @@ CREATE_MSG_FAIL:
bool
tmqUpdateEp
(
tmq_t
*
tmq
,
int32_t
epoch
,
SMqCMGetSubEpRsp
*
pRsp
)
{
bool
tmqUpdateEp
(
tmq_t
*
tmq
,
int32_t
epoch
,
SMqCMGetSubEpRsp
*
pRsp
)
{
/*printf("call update ep %d\n", epoch);*/
/*printf("call update ep %d\n", epoch);*/
/*printf("tmq update ep epoch %d to epoch %d\n", tmq->epoch, epoch);*/
tscDebug
(
"tmq update ep epoch %d to epoch %d"
,
tmq
->
epoch
,
epoch
);
bool
set
=
false
;
bool
set
=
false
;
int32_t
topicNumGet
=
taosArrayGetSize
(
pRsp
->
topics
);
int32_t
topicNumGet
=
taosArrayGetSize
(
pRsp
->
topics
);
char
vgKey
[
TSDB_TOPIC_FNAME_LEN
+
22
];
char
vgKey
[
TSDB_TOPIC_FNAME_LEN
+
22
];
...
@@ -984,6 +984,7 @@ bool tmqUpdateEp(tmq_t* tmq, int32_t epoch, SMqCMGetSubEpRsp* pRsp) {
...
@@ -984,6 +984,7 @@ bool tmqUpdateEp(tmq_t* tmq, int32_t epoch, SMqCMGetSubEpRsp* pRsp) {
int32_t
tmqAskEpCb
(
void
*
param
,
const
SDataBuf
*
pMsg
,
int32_t
code
)
{
int32_t
tmqAskEpCb
(
void
*
param
,
const
SDataBuf
*
pMsg
,
int32_t
code
)
{
SMqAskEpCbParam
*
pParam
=
(
SMqAskEpCbParam
*
)
param
;
SMqAskEpCbParam
*
pParam
=
(
SMqAskEpCbParam
*
)
param
;
tmq_t
*
tmq
=
pParam
->
tmq
;
tmq_t
*
tmq
=
pParam
->
tmq
;
tscDebug
(
"consumer %ld recv ep"
,
tmq
->
consumerId
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
tscError
(
"get topic endpoint error, not ready, wait:%d
\n
"
,
pParam
->
sync
);
tscError
(
"get topic endpoint error, not ready, wait:%d
\n
"
,
pParam
->
sync
);
goto
END
;
goto
END
;
...
@@ -1032,12 +1033,14 @@ END:
...
@@ -1032,12 +1033,14 @@ END:
int32_t
tmqAskEp
(
tmq_t
*
tmq
,
bool
sync
)
{
int32_t
tmqAskEp
(
tmq_t
*
tmq
,
bool
sync
)
{
int8_t
epStatus
=
atomic_val_compare_exchange_8
(
&
tmq
->
epStatus
,
0
,
1
);
int8_t
epStatus
=
atomic_val_compare_exchange_8
(
&
tmq
->
epStatus
,
0
,
1
);
if
(
epStatus
==
1
)
{
if
(
epStatus
==
1
)
{
tscDebug
(
"consumer %ld skip ask ep"
,
tmq
->
consumerId
);
return
0
;
return
0
;
}
}
int32_t
tlen
=
sizeof
(
SMqCMGetSubEpReq
);
int32_t
tlen
=
sizeof
(
SMqCMGetSubEpReq
);
SMqCMGetSubEpReq
*
req
=
taosMemoryMalloc
(
tlen
);
SMqCMGetSubEpReq
*
req
=
taosMemoryMalloc
(
tlen
);
if
(
req
==
NULL
)
{
if
(
req
==
NULL
)
{
tscError
(
"failed to malloc get subscribe ep buf"
);
tscError
(
"failed to malloc get subscribe ep buf"
);
atomic_store_8
(
&
tmq
->
epStatus
,
0
);
return
-
1
;
return
-
1
;
}
}
req
->
consumerId
=
htobe64
(
tmq
->
consumerId
);
req
->
consumerId
=
htobe64
(
tmq
->
consumerId
);
...
@@ -1048,6 +1051,7 @@ int32_t tmqAskEp(tmq_t* tmq, bool sync) {
...
@@ -1048,6 +1051,7 @@ int32_t tmqAskEp(tmq_t* tmq, bool sync) {
if
(
pParam
==
NULL
)
{
if
(
pParam
==
NULL
)
{
tscError
(
"failed to malloc subscribe param"
);
tscError
(
"failed to malloc subscribe param"
);
taosMemoryFree
(
req
);
taosMemoryFree
(
req
);
atomic_store_8
(
&
tmq
->
epStatus
,
0
);
return
-
1
;
return
-
1
;
}
}
pParam
->
tmq
=
tmq
;
pParam
->
tmq
=
tmq
;
...
@@ -1059,6 +1063,7 @@ int32_t tmqAskEp(tmq_t* tmq, bool sync) {
...
@@ -1059,6 +1063,7 @@ int32_t tmqAskEp(tmq_t* tmq, bool sync) {
tsem_destroy
(
&
pParam
->
rspSem
);
tsem_destroy
(
&
pParam
->
rspSem
);
taosMemoryFree
(
pParam
);
taosMemoryFree
(
pParam
);
taosMemoryFree
(
req
);
taosMemoryFree
(
req
);
atomic_store_8
(
&
tmq
->
epStatus
,
0
);
return
-
1
;
return
-
1
;
}
}
...
@@ -1076,6 +1081,8 @@ int32_t tmqAskEp(tmq_t* tmq, bool sync) {
...
@@ -1076,6 +1081,8 @@ int32_t tmqAskEp(tmq_t* tmq, bool sync) {
SEpSet
epSet
=
getEpSet_s
(
&
tmq
->
pTscObj
->
pAppInfo
->
mgmtEp
);
SEpSet
epSet
=
getEpSet_s
(
&
tmq
->
pTscObj
->
pAppInfo
->
mgmtEp
);
tscDebug
(
"consumer %ld ask ep"
,
tmq
->
consumerId
);
int64_t
transporterId
=
0
;
int64_t
transporterId
=
0
;
asyncSendMsgToServer
(
tmq
->
pTscObj
->
pAppInfo
->
pTransporter
,
&
epSet
,
&
transporterId
,
sendInfo
);
asyncSendMsgToServer
(
tmq
->
pTscObj
->
pAppInfo
->
pTransporter
,
&
epSet
,
&
transporterId
,
sendInfo
);
...
@@ -1214,7 +1221,7 @@ int32_t tmqPollImpl(tmq_t* tmq, int64_t blockingTime) {
...
@@ -1214,7 +1221,7 @@ int32_t tmqPollImpl(tmq_t* tmq, int64_t blockingTime) {
SMqClientVg
*
pVg
=
taosArrayGet
(
pTopic
->
vgs
,
j
);
SMqClientVg
*
pVg
=
taosArrayGet
(
pTopic
->
vgs
,
j
);
int32_t
vgStatus
=
atomic_val_compare_exchange_32
(
&
pVg
->
vgStatus
,
TMQ_VG_STATUS__IDLE
,
TMQ_VG_STATUS__WAIT
);
int32_t
vgStatus
=
atomic_val_compare_exchange_32
(
&
pVg
->
vgStatus
,
TMQ_VG_STATUS__IDLE
,
TMQ_VG_STATUS__WAIT
);
if
(
vgStatus
!=
TMQ_VG_STATUS__IDLE
)
{
if
(
vgStatus
!=
TMQ_VG_STATUS__IDLE
)
{
tscDebug
(
"
skip vg %d"
,
pVg
->
vgId
);
tscDebug
(
"
consumer %ld skip vg %d"
,
tmq
->
consumerId
,
pVg
->
vgId
);
continue
;
continue
;
}
}
SMqPollReq
*
pReq
=
tmqBuildConsumeReqImpl
(
tmq
,
blockingTime
,
pTopic
,
pVg
);
SMqPollReq
*
pReq
=
tmqBuildConsumeReqImpl
(
tmq
,
blockingTime
,
pTopic
,
pVg
);
...
@@ -1258,7 +1265,7 @@ int32_t tmqPollImpl(tmq_t* tmq, int64_t blockingTime) {
...
@@ -1258,7 +1265,7 @@ int32_t tmqPollImpl(tmq_t* tmq, int64_t blockingTime) {
int64_t
transporterId
=
0
;
int64_t
transporterId
=
0
;
/*printf("send poll\n");*/
/*printf("send poll\n");*/
atomic_add_fetch_32
(
&
tmq
->
waitingRequest
,
1
);
atomic_add_fetch_32
(
&
tmq
->
waitingRequest
,
1
);
tscDebug
(
"
tmq send poll: vg %d, req offset %ld"
,
pVg
->
vgId
,
pVg
->
currentOffset
);
tscDebug
(
"
consumer %ld send poll: vg %d, req offset %ld"
,
tmq
->
consumerId
,
pVg
->
vgId
,
pVg
->
currentOffset
);
/*printf("send vg %d %ld\n", pVg->vgId, pVg->currentOffset);*/
/*printf("send vg %d %ld\n", pVg->vgId, pVg->currentOffset);*/
asyncSendMsgToServer
(
tmq
->
pTscObj
->
pAppInfo
->
pTransporter
,
&
pVg
->
epSet
,
&
transporterId
,
sendInfo
);
asyncSendMsgToServer
(
tmq
->
pTscObj
->
pAppInfo
->
pTransporter
,
&
pVg
->
epSet
,
&
transporterId
,
sendInfo
);
pVg
->
pollCnt
++
;
pVg
->
pollCnt
++
;
...
@@ -1322,7 +1329,7 @@ tmq_message_t* tmqHandleAllRsp(tmq_t* tmq, int64_t blockingTime, bool pollIfRese
...
@@ -1322,7 +1329,7 @@ tmq_message_t* tmqHandleAllRsp(tmq_t* tmq, int64_t blockingTime, bool pollIfRese
tmqHandleNoPollRsp
(
tmq
,
rspHead
,
&
reset
);
tmqHandleNoPollRsp
(
tmq
,
rspHead
,
&
reset
);
taosFreeQitem
(
rspHead
);
taosFreeQitem
(
rspHead
);
if
(
pollIfReset
&&
reset
)
{
if
(
pollIfReset
&&
reset
)
{
tscDebug
(
"
reset and repoll
\n
"
);
tscDebug
(
"
consumer %ld reset and repoll"
,
tmq
->
consumerId
);
tmqPollImpl
(
tmq
,
blockingTime
);
tmqPollImpl
(
tmq
,
blockingTime
);
}
}
}
}
...
@@ -1561,24 +1568,3 @@ TAOS_ROW tmq_get_row(tmq_message_t* message) {
...
@@ -1561,24 +1568,3 @@ TAOS_ROW tmq_get_row(tmq_message_t* message) {
}
}
char
*
tmq_get_topic_name
(
tmq_message_t
*
message
)
{
return
"not implemented yet"
;
}
char
*
tmq_get_topic_name
(
tmq_message_t
*
message
)
{
return
"not implemented yet"
;
}
#if 0
tmq_t* tmqCreateConsumerImpl(TAOS* conn, tmq_conf_t* conf) {
tmq_t* pTmq = taosMemoryMalloc(sizeof(tmq_t));
if (pTmq == NULL) {
return NULL;
}
strcpy(pTmq->groupId, conf->groupId);
strcpy(pTmq->clientId, conf->clientId);
pTmq->pTscObj = (STscObj*)conn;
pTmq->pTscObj->connType = HEARTBEAT_TYPE_MQ;
return pTmq;
}
static void destroySendMsgInfo(SMsgSendInfo* pMsgBody) {
assert(pMsgBody != NULL);
taosMemoryFreeClear(pMsgBody->msgInfo.pData);
taosMemoryFreeClear(pMsgBody);
}
#endif
source/common/src/tmsg.c
浏览文件 @
dc714776
...
@@ -314,13 +314,12 @@ int32_t tSerializeSVCreateTbReq(void **buf, SVCreateTbReq *pReq) {
...
@@ -314,13 +314,12 @@ int32_t tSerializeSVCreateTbReq(void **buf, SVCreateTbReq *pReq) {
}
}
if
(
pReq
->
rollup
&&
pReq
->
stbCfg
.
pRSmaParam
)
{
if
(
pReq
->
rollup
&&
pReq
->
stbCfg
.
pRSmaParam
)
{
SRSmaParam
*
param
=
pReq
->
stbCfg
.
pRSmaParam
;
SRSmaParam
*
param
=
pReq
->
stbCfg
.
pRSmaParam
;
tlen
+=
taosEncode
FixedU32
(
buf
,
(
uint32_t
)
param
->
xFilesFactor
);
tlen
+=
taosEncode
Binary
(
buf
,
(
const
void
*
)
&
param
->
xFilesFactor
,
sizeof
(
param
->
xFilesFactor
)
);
tlen
+=
taosEncodeFixedI
8
(
buf
,
param
->
delayUnit
);
tlen
+=
taosEncodeFixedI
32
(
buf
,
param
->
delay
);
tlen
+=
taosEncodeFixedI8
(
buf
,
param
->
nFuncIds
);
tlen
+=
taosEncodeFixedI8
(
buf
,
param
->
nFuncIds
);
for
(
int8_t
i
=
0
;
i
<
param
->
nFuncIds
;
++
i
)
{
for
(
int8_t
i
=
0
;
i
<
param
->
nFuncIds
;
++
i
)
{
tlen
+=
taosEncodeFixedI32
(
buf
,
param
->
pFuncIds
[
i
]);
tlen
+=
taosEncodeFixedI32
(
buf
,
param
->
pFuncIds
[
i
]);
}
}
tlen
+=
taosEncodeFixedI64
(
buf
,
param
->
delay
);
}
}
break
;
break
;
case
TD_CHILD_TABLE
:
case
TD_CHILD_TABLE
:
...
@@ -339,13 +338,12 @@ int32_t tSerializeSVCreateTbReq(void **buf, SVCreateTbReq *pReq) {
...
@@ -339,13 +338,12 @@ int32_t tSerializeSVCreateTbReq(void **buf, SVCreateTbReq *pReq) {
}
}
if
(
pReq
->
rollup
&&
pReq
->
ntbCfg
.
pRSmaParam
)
{
if
(
pReq
->
rollup
&&
pReq
->
ntbCfg
.
pRSmaParam
)
{
SRSmaParam
*
param
=
pReq
->
ntbCfg
.
pRSmaParam
;
SRSmaParam
*
param
=
pReq
->
ntbCfg
.
pRSmaParam
;
tlen
+=
taosEncode
FixedU32
(
buf
,
(
uint32_t
)
param
->
xFilesFactor
);
tlen
+=
taosEncode
Binary
(
buf
,
(
const
void
*
)
&
param
->
xFilesFactor
,
sizeof
(
param
->
xFilesFactor
)
);
tlen
+=
taosEncodeFixedI
8
(
buf
,
param
->
delayUnit
);
tlen
+=
taosEncodeFixedI
32
(
buf
,
param
->
delay
);
tlen
+=
taosEncodeFixedI8
(
buf
,
param
->
nFuncIds
);
tlen
+=
taosEncodeFixedI8
(
buf
,
param
->
nFuncIds
);
for
(
int8_t
i
=
0
;
i
<
param
->
nFuncIds
;
++
i
)
{
for
(
int8_t
i
=
0
;
i
<
param
->
nFuncIds
;
++
i
)
{
tlen
+=
taosEncodeFixedI32
(
buf
,
param
->
pFuncIds
[
i
]);
tlen
+=
taosEncodeFixedI32
(
buf
,
param
->
pFuncIds
[
i
]);
}
}
tlen
+=
taosEncodeFixedI64
(
buf
,
param
->
delay
);
}
}
break
;
break
;
default:
default:
...
@@ -387,17 +385,17 @@ void *tDeserializeSVCreateTbReq(void *buf, SVCreateTbReq *pReq) {
...
@@ -387,17 +385,17 @@ void *tDeserializeSVCreateTbReq(void *buf, SVCreateTbReq *pReq) {
if
(
pReq
->
rollup
)
{
if
(
pReq
->
rollup
)
{
pReq
->
stbCfg
.
pRSmaParam
=
(
SRSmaParam
*
)
taosMemoryMalloc
(
sizeof
(
SRSmaParam
));
pReq
->
stbCfg
.
pRSmaParam
=
(
SRSmaParam
*
)
taosMemoryMalloc
(
sizeof
(
SRSmaParam
));
SRSmaParam
*
param
=
pReq
->
stbCfg
.
pRSmaParam
;
SRSmaParam
*
param
=
pReq
->
stbCfg
.
pRSmaParam
;
buf
=
taosDecode
FixedU32
(
buf
,
(
uint32_t
*
)
&
param
->
xFilesFactor
);
buf
=
taosDecode
BinaryTo
(
buf
,
(
void
*
)
&
param
->
xFilesFactor
,
sizeof
(
param
->
xFilesFactor
)
);
buf
=
taosDecodeFixedI
8
(
buf
,
&
param
->
delayUnit
);
buf
=
taosDecodeFixedI
32
(
buf
,
&
param
->
delay
);
buf
=
taosDecodeFixedI8
(
buf
,
&
param
->
nFuncIds
);
buf
=
taosDecodeFixedI8
(
buf
,
&
param
->
nFuncIds
);
if
(
param
->
nFuncIds
>
0
)
{
if
(
param
->
nFuncIds
>
0
)
{
param
->
pFuncIds
=
(
func_id_t
*
)
taosMemoryMalloc
(
param
->
nFuncIds
*
sizeof
(
func_id_t
));
for
(
int8_t
i
=
0
;
i
<
param
->
nFuncIds
;
++
i
)
{
for
(
int8_t
i
=
0
;
i
<
param
->
nFuncIds
;
++
i
)
{
buf
=
taosDecodeFixedI32
(
buf
,
param
->
pFuncIds
+
i
);
buf
=
taosDecodeFixedI32
(
buf
,
param
->
pFuncIds
+
i
);
}
}
}
else
{
}
else
{
param
->
pFuncIds
=
NULL
;
param
->
pFuncIds
=
NULL
;
}
}
buf
=
taosDecodeFixedI64
(
buf
,
&
param
->
delay
);
}
else
{
}
else
{
pReq
->
stbCfg
.
pRSmaParam
=
NULL
;
pReq
->
stbCfg
.
pRSmaParam
=
NULL
;
}
}
...
@@ -420,17 +418,17 @@ void *tDeserializeSVCreateTbReq(void *buf, SVCreateTbReq *pReq) {
...
@@ -420,17 +418,17 @@ void *tDeserializeSVCreateTbReq(void *buf, SVCreateTbReq *pReq) {
if
(
pReq
->
rollup
)
{
if
(
pReq
->
rollup
)
{
pReq
->
ntbCfg
.
pRSmaParam
=
(
SRSmaParam
*
)
taosMemoryMalloc
(
sizeof
(
SRSmaParam
));
pReq
->
ntbCfg
.
pRSmaParam
=
(
SRSmaParam
*
)
taosMemoryMalloc
(
sizeof
(
SRSmaParam
));
SRSmaParam
*
param
=
pReq
->
ntbCfg
.
pRSmaParam
;
SRSmaParam
*
param
=
pReq
->
ntbCfg
.
pRSmaParam
;
buf
=
taosDecode
FixedU32
(
buf
,
(
uint32_t
*
)
&
param
->
xFilesFactor
);
buf
=
taosDecode
BinaryTo
(
buf
,
(
void
*
)
&
param
->
xFilesFactor
,
sizeof
(
param
->
xFilesFactor
)
);
buf
=
taosDecodeFixedI
8
(
buf
,
&
param
->
delayUnit
);
buf
=
taosDecodeFixedI
32
(
buf
,
&
param
->
delay
);
buf
=
taosDecodeFixedI8
(
buf
,
&
param
->
nFuncIds
);
buf
=
taosDecodeFixedI8
(
buf
,
&
param
->
nFuncIds
);
if
(
param
->
nFuncIds
>
0
)
{
if
(
param
->
nFuncIds
>
0
)
{
param
->
pFuncIds
=
(
func_id_t
*
)
taosMemoryMalloc
(
param
->
nFuncIds
*
sizeof
(
func_id_t
));
for
(
int8_t
i
=
0
;
i
<
param
->
nFuncIds
;
++
i
)
{
for
(
int8_t
i
=
0
;
i
<
param
->
nFuncIds
;
++
i
)
{
buf
=
taosDecodeFixedI32
(
buf
,
param
->
pFuncIds
+
i
);
buf
=
taosDecodeFixedI32
(
buf
,
param
->
pFuncIds
+
i
);
}
}
}
else
{
}
else
{
param
->
pFuncIds
=
NULL
;
param
->
pFuncIds
=
NULL
;
}
}
buf
=
taosDecodeFixedI64
(
buf
,
&
param
->
delay
);
}
else
{
}
else
{
pReq
->
ntbCfg
.
pRSmaParam
=
NULL
;
pReq
->
ntbCfg
.
pRSmaParam
=
NULL
;
}
}
...
...
source/dnode/mnode/impl/src/mndStb.c
浏览文件 @
dc714776
...
@@ -354,6 +354,7 @@ static void *mndBuildVCreateStbReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pSt
...
@@ -354,6 +354,7 @@ static void *mndBuildVCreateStbReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pSt
req
.
name
=
(
char
*
)
tNameGetTableName
(
&
name
);
req
.
name
=
(
char
*
)
tNameGetTableName
(
&
name
);
req
.
ttl
=
0
;
req
.
ttl
=
0
;
req
.
keep
=
0
;
req
.
keep
=
0
;
req
.
rollup
=
pStb
->
aggregationMethod
>
-
1
?
1
:
0
;
req
.
type
=
TD_SUPER_TABLE
;
req
.
type
=
TD_SUPER_TABLE
;
req
.
stbCfg
.
suid
=
pStb
->
uid
;
req
.
stbCfg
.
suid
=
pStb
->
uid
;
req
.
stbCfg
.
nCols
=
pStb
->
numOfColumns
;
req
.
stbCfg
.
nCols
=
pStb
->
numOfColumns
;
...
@@ -365,7 +366,7 @@ static void *mndBuildVCreateStbReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pSt
...
@@ -365,7 +366,7 @@ static void *mndBuildVCreateStbReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pSt
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
NULL
;
return
NULL
;
}
}
int
bSmaStat
=
0
;
// no column has bsma
int
bSmaStat
=
0
;
// no column has bsma
if
(
pStb
->
numOfSmas
==
pStb
->
numOfColumns
)
{
// assume pColumns > 0
if
(
pStb
->
numOfSmas
==
pStb
->
numOfColumns
)
{
// assume pColumns > 0
bSmaStat
=
1
;
// all columns have bsma
bSmaStat
=
1
;
// all columns have bsma
...
@@ -405,9 +406,38 @@ static void *mndBuildVCreateStbReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pSt
...
@@ -405,9 +406,38 @@ static void *mndBuildVCreateStbReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pSt
}
}
}
}
SRSmaParam
*
pRSmaParam
=
NULL
;
if
(
req
.
rollup
)
{
pRSmaParam
=
(
SRSmaParam
*
)
taosMemoryCalloc
(
1
,
sizeof
(
SRSmaParam
));
if
(
pRSmaParam
==
NULL
)
{
taosMemoryFreeClear
(
req
.
stbCfg
.
pSchema
);
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
NULL
;
}
pRSmaParam
->
xFilesFactor
=
pStb
->
xFilesFactor
;
pRSmaParam
->
delay
=
pStb
->
delay
;
pRSmaParam
->
nFuncIds
=
1
;
// only 1 aggregation method supported currently
pRSmaParam
->
pFuncIds
=
(
func_id_t
*
)
taosMemoryCalloc
(
pRSmaParam
->
nFuncIds
,
sizeof
(
func_id_t
));
if
(
pRSmaParam
->
pFuncIds
==
NULL
)
{
taosMemoryFreeClear
(
req
.
stbCfg
.
pRSmaParam
);
taosMemoryFreeClear
(
req
.
stbCfg
.
pSchema
);
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
NULL
;
}
for
(
int32_t
f
=
0
;
f
<
pRSmaParam
->
nFuncIds
;
++
f
)
{
*
(
pRSmaParam
->
pFuncIds
+
f
)
=
pStb
->
aggregationMethod
;
}
req
.
stbCfg
.
pRSmaParam
=
pRSmaParam
;
}
int32_t
contLen
=
tSerializeSVCreateTbReq
(
NULL
,
&
req
)
+
sizeof
(
SMsgHead
);
int32_t
contLen
=
tSerializeSVCreateTbReq
(
NULL
,
&
req
)
+
sizeof
(
SMsgHead
);
SMsgHead
*
pHead
=
taosMemoryMalloc
(
contLen
);
SMsgHead
*
pHead
=
taosMemoryMalloc
(
contLen
);
if
(
pHead
==
NULL
)
{
if
(
pHead
==
NULL
)
{
if
(
pRSmaParam
)
{
taosMemoryFreeClear
(
pRSmaParam
->
pFuncIds
);
taosMemoryFreeClear
(
pRSmaParam
);
}
taosMemoryFreeClear
(
req
.
stbCfg
.
pSchema
);
taosMemoryFreeClear
(
req
.
stbCfg
.
pSchema
);
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
NULL
;
return
NULL
;
...
@@ -420,6 +450,10 @@ static void *mndBuildVCreateStbReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pSt
...
@@ -420,6 +450,10 @@ static void *mndBuildVCreateStbReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pSt
tSerializeSVCreateTbReq
(
&
pBuf
,
&
req
);
tSerializeSVCreateTbReq
(
&
pBuf
,
&
req
);
*
pContLen
=
contLen
;
*
pContLen
=
contLen
;
if
(
pRSmaParam
)
{
taosMemoryFreeClear
(
pRSmaParam
->
pFuncIds
);
taosMemoryFreeClear
(
pRSmaParam
);
}
taosMemoryFreeClear
(
req
.
stbCfg
.
pSchema
);
taosMemoryFreeClear
(
req
.
stbCfg
.
pSchema
);
return
pHead
;
return
pHead
;
}
}
...
@@ -632,6 +666,9 @@ static int32_t mndCreateStb(SMnode *pMnode, SNodeMsg *pReq, SMCreateStbReq *pCre
...
@@ -632,6 +666,9 @@ static int32_t mndCreateStb(SMnode *pMnode, SNodeMsg *pReq, SMCreateStbReq *pCre
stbObj
.
dbUid
=
pDb
->
uid
;
stbObj
.
dbUid
=
pDb
->
uid
;
stbObj
.
version
=
1
;
stbObj
.
version
=
1
;
stbObj
.
nextColId
=
1
;
stbObj
.
nextColId
=
1
;
stbObj
.
xFilesFactor
=
pCreate
->
xFilesFactor
;
stbObj
.
aggregationMethod
=
pCreate
->
aggregationMethod
;
stbObj
.
delay
=
pCreate
->
delay
;
stbObj
.
ttl
=
pCreate
->
ttl
;
stbObj
.
ttl
=
pCreate
->
ttl
;
stbObj
.
numOfColumns
=
pCreate
->
numOfColumns
;
stbObj
.
numOfColumns
=
pCreate
->
numOfColumns
;
stbObj
.
numOfTags
=
pCreate
->
numOfTags
;
stbObj
.
numOfTags
=
pCreate
->
numOfTags
;
...
...
source/dnode/mnode/impl/src/mndSubscribe.c
浏览文件 @
dc714776
...
@@ -507,7 +507,7 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
...
@@ -507,7 +507,7 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
// TODO: log rebalance statistics
// TODO: log rebalance statistics
SSdbRaw
*
pSubRaw
=
mndSubActionEncode
(
pSub
);
SSdbRaw
*
pSubRaw
=
mndSubActionEncode
(
pSub
);
sdbSetRawStatus
(
pSubRaw
,
SDB_STATUS_
UPDATING
);
sdbSetRawStatus
(
pSubRaw
,
SDB_STATUS_
READY
);
mndTransAppendRedolog
(
pTrans
,
pSubRaw
);
mndTransAppendRedolog
(
pTrans
,
pSubRaw
);
}
}
mndReleaseSubscribe
(
pMnode
,
pSub
);
mndReleaseSubscribe
(
pMnode
,
pSub
);
...
...
source/dnode/mnode/sdb/src/sdbHash.c
浏览文件 @
dc714776
...
@@ -40,6 +40,10 @@ const char *sdbTableName(ESdbType type) {
...
@@ -40,6 +40,10 @@ const char *sdbTableName(ESdbType type) {
return
"auth"
;
return
"auth"
;
case
SDB_ACCT
:
case
SDB_ACCT
:
return
"acct"
;
return
"acct"
;
case
SDB_STREAM
:
return
"stream"
;
case
SDB_OFFSET
:
return
"offset"
;
case
SDB_SUBSCRIBE
:
case
SDB_SUBSCRIBE
:
return
"subscribe"
;
return
"subscribe"
;
case
SDB_CONSUMER
:
case
SDB_CONSUMER
:
...
...
source/dnode/vnode/src/vnd/vnodeWrite.c
浏览文件 @
dc714776
...
@@ -78,10 +78,13 @@ int vnodeApplyWMsg(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
...
@@ -78,10 +78,13 @@ int vnodeApplyWMsg(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
// TODO: handle error
// TODO: handle error
}
}
// TODO:
maybe need to clear the request struct
// TODO:
to encapsule a free API
taosMemoryFree
(
vCreateTbReq
.
stbCfg
.
pSchema
);
taosMemoryFree
(
vCreateTbReq
.
stbCfg
.
pSchema
);
taosMemoryFree
(
vCreateTbReq
.
stbCfg
.
pTagSchema
);
taosMemoryFree
(
vCreateTbReq
.
stbCfg
.
pTagSchema
);
taosMemoryFree
(
vCreateTbReq
.
stbCfg
.
pRSmaParam
);
if
(
vCreateTbReq
.
stbCfg
.
pRSmaParam
)
{
taosMemoryFree
(
vCreateTbReq
.
stbCfg
.
pRSmaParam
->
pFuncIds
);
taosMemoryFree
(
vCreateTbReq
.
stbCfg
.
pRSmaParam
);
}
taosMemoryFree
(
vCreateTbReq
.
dbFName
);
taosMemoryFree
(
vCreateTbReq
.
dbFName
);
taosMemoryFree
(
vCreateTbReq
.
name
);
taosMemoryFree
(
vCreateTbReq
.
name
);
break
;
break
;
...
@@ -110,17 +113,24 @@ int vnodeApplyWMsg(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
...
@@ -110,17 +113,24 @@ int vnodeApplyWMsg(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
// TODO: handle error
// TODO: handle error
vError
(
"vgId:%d, failed to create table: %s"
,
pVnode
->
vgId
,
pCreateTbReq
->
name
);
vError
(
"vgId:%d, failed to create table: %s"
,
pVnode
->
vgId
,
pCreateTbReq
->
name
);
}
}
// TODO: to encapsule a free API
taosMemoryFree
(
pCreateTbReq
->
name
);
taosMemoryFree
(
pCreateTbReq
->
name
);
taosMemoryFree
(
pCreateTbReq
->
dbFName
);
taosMemoryFree
(
pCreateTbReq
->
dbFName
);
if
(
pCreateTbReq
->
type
==
TD_SUPER_TABLE
)
{
if
(
pCreateTbReq
->
type
==
TD_SUPER_TABLE
)
{
taosMemoryFree
(
pCreateTbReq
->
stbCfg
.
pSchema
);
taosMemoryFree
(
pCreateTbReq
->
stbCfg
.
pSchema
);
taosMemoryFree
(
pCreateTbReq
->
stbCfg
.
pTagSchema
);
taosMemoryFree
(
pCreateTbReq
->
stbCfg
.
pTagSchema
);
taosMemoryFree
(
pCreateTbReq
->
stbCfg
.
pRSmaParam
);
if
(
pCreateTbReq
->
stbCfg
.
pRSmaParam
)
{
taosMemoryFree
(
pCreateTbReq
->
stbCfg
.
pRSmaParam
->
pFuncIds
);
taosMemoryFree
(
pCreateTbReq
->
stbCfg
.
pRSmaParam
);
}
}
else
if
(
pCreateTbReq
->
type
==
TD_CHILD_TABLE
)
{
}
else
if
(
pCreateTbReq
->
type
==
TD_CHILD_TABLE
)
{
taosMemoryFree
(
pCreateTbReq
->
ctbCfg
.
pTag
);
taosMemoryFree
(
pCreateTbReq
->
ctbCfg
.
pTag
);
}
else
{
}
else
{
taosMemoryFree
(
pCreateTbReq
->
ntbCfg
.
pSchema
);
taosMemoryFree
(
pCreateTbReq
->
ntbCfg
.
pSchema
);
taosMemoryFree
(
pCreateTbReq
->
ntbCfg
.
pRSmaParam
);
if
(
pCreateTbReq
->
ntbCfg
.
pRSmaParam
)
{
taosMemoryFree
(
pCreateTbReq
->
ntbCfg
.
pRSmaParam
->
pFuncIds
);
taosMemoryFree
(
pCreateTbReq
->
ntbCfg
.
pRSmaParam
);
}
}
}
}
}
...
@@ -145,9 +155,13 @@ int vnodeApplyWMsg(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
...
@@ -145,9 +155,13 @@ int vnodeApplyWMsg(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
SVCreateTbReq
vAlterTbReq
=
{
0
};
SVCreateTbReq
vAlterTbReq
=
{
0
};
vTrace
(
"vgId:%d, process alter stb req"
,
pVnode
->
vgId
);
vTrace
(
"vgId:%d, process alter stb req"
,
pVnode
->
vgId
);
tDeserializeSVCreateTbReq
(
POINTER_SHIFT
(
pMsg
->
pCont
,
sizeof
(
SMsgHead
)),
&
vAlterTbReq
);
tDeserializeSVCreateTbReq
(
POINTER_SHIFT
(
pMsg
->
pCont
,
sizeof
(
SMsgHead
)),
&
vAlterTbReq
);
// TODO: to encapsule a free API
taosMemoryFree
(
vAlterTbReq
.
stbCfg
.
pSchema
);
taosMemoryFree
(
vAlterTbReq
.
stbCfg
.
pSchema
);
taosMemoryFree
(
vAlterTbReq
.
stbCfg
.
pTagSchema
);
taosMemoryFree
(
vAlterTbReq
.
stbCfg
.
pTagSchema
);
taosMemoryFree
(
vAlterTbReq
.
stbCfg
.
pRSmaParam
);
if
(
vAlterTbReq
.
stbCfg
.
pRSmaParam
)
{
taosMemoryFree
(
vAlterTbReq
.
stbCfg
.
pRSmaParam
->
pFuncIds
);
taosMemoryFree
(
vAlterTbReq
.
stbCfg
.
pRSmaParam
);
}
taosMemoryFree
(
vAlterTbReq
.
dbFName
);
taosMemoryFree
(
vAlterTbReq
.
dbFName
);
taosMemoryFree
(
vAlterTbReq
.
name
);
taosMemoryFree
(
vAlterTbReq
.
name
);
break
;
break
;
...
...
source/libs/executor/inc/executorimpl.h
浏览文件 @
dc714776
...
@@ -393,6 +393,7 @@ typedef struct STableScanInfo {
...
@@ -393,6 +393,7 @@ typedef struct STableScanInfo {
int32_t
times
;
// repeat counts
int32_t
times
;
// repeat counts
int32_t
current
;
int32_t
current
;
int32_t
reverseTimes
;
// 0 by default
int32_t
reverseTimes
;
// 0 by default
SNode
*
pFilterNode
;
// filter operator info
SqlFunctionCtx
*
pCtx
;
// next operator query context
SqlFunctionCtx
*
pCtx
;
// next operator query context
SResultRowInfo
*
pResultRowInfo
;
SResultRowInfo
*
pResultRowInfo
;
int32_t
*
rowCellInfoOffset
;
int32_t
*
rowCellInfoOffset
;
...
@@ -501,12 +502,6 @@ typedef struct SProjectOperatorInfo {
...
@@ -501,12 +502,6 @@ typedef struct SProjectOperatorInfo {
int64_t
curOutput
;
int64_t
curOutput
;
}
SProjectOperatorInfo
;
}
SProjectOperatorInfo
;
typedef
struct
SLimitOperatorInfo
{
SLimit
limit
;
int64_t
currentOffset
;
int64_t
currentRows
;
}
SLimitOperatorInfo
;
typedef
struct
SSLimitOperatorInfo
{
typedef
struct
SSLimitOperatorInfo
{
int64_t
groupTotal
;
int64_t
groupTotal
;
int64_t
currentGroupOffset
;
int64_t
currentGroupOffset
;
...
@@ -525,11 +520,6 @@ typedef struct SSLimitOperatorInfo {
...
@@ -525,11 +520,6 @@ typedef struct SSLimitOperatorInfo {
int64_t
threshold
;
int64_t
threshold
;
}
SSLimitOperatorInfo
;
}
SSLimitOperatorInfo
;
typedef
struct
SFilterOperatorInfo
{
SSingleColumnFilterInfo
*
pFilterInfo
;
int32_t
numOfFilterCols
;
}
SFilterOperatorInfo
;
typedef
struct
SFillOperatorInfo
{
typedef
struct
SFillOperatorInfo
{
struct
SFillInfo
*
pFillInfo
;
struct
SFillInfo
*
pFillInfo
;
SSDataBlock
*
pRes
;
SSDataBlock
*
pRes
;
...
@@ -639,7 +629,7 @@ typedef struct SDistinctOperatorInfo {
...
@@ -639,7 +629,7 @@ typedef struct SDistinctOperatorInfo {
SOperatorInfo
*
createExchangeOperatorInfo
(
const
SNodeList
*
pSources
,
SSDataBlock
*
pBlock
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createExchangeOperatorInfo
(
const
SNodeList
*
pSources
,
SSDataBlock
*
pBlock
,
SExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createTableScanOperatorInfo
(
void
*
pTsdbReadHandle
,
int32_t
order
,
int32_t
numOfCols
,
int32_t
repeatTime
,
SOperatorInfo
*
createTableScanOperatorInfo
(
void
*
pTsdbReadHandle
,
int32_t
order
,
int32_t
numOfCols
,
int32_t
repeatTime
,
int32_t
reverseTime
,
SArray
*
pColMatchInfo
,
SExecTaskInfo
*
pTaskInfo
);
int32_t
reverseTime
,
SArray
*
pColMatchInfo
,
S
Node
*
pCondition
,
S
ExecTaskInfo
*
pTaskInfo
);
SOperatorInfo
*
createAggregateOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResultBlock
,
SOperatorInfo
*
createAggregateOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResultBlock
,
SExecTaskInfo
*
pTaskInfo
,
const
STableGroupInfo
*
pTableGroupInfo
);
SExecTaskInfo
*
pTaskInfo
,
const
STableGroupInfo
*
pTableGroupInfo
);
SOperatorInfo
*
createMultiTableAggOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResBlock
,
SExecTaskInfo
*
pTaskInfo
,
const
STableGroupInfo
*
pTableGroupInfo
);
SOperatorInfo
*
createMultiTableAggOperatorInfo
(
SOperatorInfo
*
downstream
,
SExprInfo
*
pExprInfo
,
int32_t
numOfCols
,
SSDataBlock
*
pResBlock
,
SExecTaskInfo
*
pTaskInfo
,
const
STableGroupInfo
*
pTableGroupInfo
);
...
@@ -682,22 +672,12 @@ SOperatorInfo* createSLimitOperatorInfo(STaskRuntimeEnv* pRuntimeEnv, SOperatorI
...
@@ -682,22 +672,12 @@ SOperatorInfo* createSLimitOperatorInfo(STaskRuntimeEnv* pRuntimeEnv, SOperatorI
SOperatorInfo
*
createJoinOperatorInfo
(
SOperatorInfo
**
pdownstream
,
int32_t
numOfDownstream
,
SSchema
*
pSchema
,
SOperatorInfo
*
createJoinOperatorInfo
(
SOperatorInfo
**
pdownstream
,
int32_t
numOfDownstream
,
SSchema
*
pSchema
,
int32_t
numOfOutput
);
int32_t
numOfOutput
);
void
*
doDestroyFilterInfo
(
SSingleColumnFilterInfo
*
pFilterInfo
,
int32_t
numOfFilterCols
);
void
setInputDataBlock
(
SOperatorInfo
*
pOperator
,
SqlFunctionCtx
*
pCtx
,
SSDataBlock
*
pBlock
,
int32_t
order
);
void
setInputDataBlock
(
SOperatorInfo
*
pOperator
,
SqlFunctionCtx
*
pCtx
,
SSDataBlock
*
pBlock
,
int32_t
order
);
void
finalizeQueryResult
(
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
);
void
finalizeQueryResult
(
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
);
void
clearOutputBuf
(
SOptrBasicInfo
*
pBInfo
,
int32_t
*
bufCapacity
);
void
copyTsColoum
(
SSDataBlock
*
pRes
,
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
);
void
copyTsColoum
(
SSDataBlock
*
pRes
,
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
);
int32_t
createQueryFilter
(
char
*
data
,
uint16_t
len
,
SFilterInfo
**
pFilters
);
int32_t
createFilterInfo
(
STaskAttr
*
pQueryAttr
,
uint64_t
qId
);
void
freeColumnFilterInfo
(
SColumnFilterInfo
*
pFilter
,
int32_t
numOfFilters
);
STableQueryInfo
*
createTableQueryInfo
(
void
*
buf
,
bool
groupbyColumn
,
STimeWindow
win
);
STableQueryInfo
*
createTableQueryInfo
(
void
*
buf
,
bool
groupbyColumn
,
STimeWindow
win
);
STableQueryInfo
*
createTmpTableQueryInfo
(
STimeWindow
win
);
bool
isTaskKilled
(
SExecTaskInfo
*
pTaskInfo
);
bool
isTaskKilled
(
SExecTaskInfo
*
pTaskInfo
);
int32_t
checkForQueryBuf
(
size_t
numOfTables
);
int32_t
checkForQueryBuf
(
size_t
numOfTables
);
...
...
source/libs/executor/src/executorimpl.c
浏览文件 @
dc714776
...
@@ -194,9 +194,6 @@ static void getNextTimeWindow(SInterval* pInterval, int32_t precision, int32_t o
...
@@ -194,9 +194,6 @@ static void getNextTimeWindow(SInterval* pInterval, int32_t precision, int32_t o
}
}
static
void
doSetTagValueToResultBuf
(
char
*
output
,
const
char
*
val
,
int16_t
type
,
int16_t
bytes
);
static
void
doSetTagValueToResultBuf
(
char
*
output
,
const
char
*
val
,
int16_t
type
,
int16_t
bytes
);
static
void
setResultOutputBuf
(
STaskRuntimeEnv
*
pRuntimeEnv
,
SResultRow
*
pResult
,
SqlFunctionCtx
*
pCtx
,
int32_t
numOfCols
,
int32_t
*
rowCellInfoOffset
);
void
setResultRowOutputBufInitCtx
(
STaskRuntimeEnv
*
pRuntimeEnv
,
SResultRow
*
pResult
,
SqlFunctionCtx
*
pCtx
,
void
setResultRowOutputBufInitCtx
(
STaskRuntimeEnv
*
pRuntimeEnv
,
SResultRow
*
pResult
,
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
,
int32_t
*
rowCellInfoOffset
);
int32_t
numOfOutput
,
int32_t
*
rowCellInfoOffset
);
static
bool
functionNeedToExecute
(
SqlFunctionCtx
*
pCtx
);
static
bool
functionNeedToExecute
(
SqlFunctionCtx
*
pCtx
);
...
@@ -214,8 +211,6 @@ static int32_t binarySearchForKey(char* pValue, int num, TSKEY key, int order);
...
@@ -214,8 +211,6 @@ static int32_t binarySearchForKey(char* pValue, int num, TSKEY key, int order);
// static STsdbQueryCond createTsdbQueryCond(STaskAttr* pQueryAttr, STimeWindow* win);
// static STsdbQueryCond createTsdbQueryCond(STaskAttr* pQueryAttr, STimeWindow* win);
static
STableIdInfo
createTableIdInfo
(
STableQueryInfo
*
pTableQueryInfo
);
static
STableIdInfo
createTableIdInfo
(
STableQueryInfo
*
pTableQueryInfo
);
static
void
setTableScanFilterOperatorInfo
(
STableScanInfo
*
pTableScanInfo
,
SOperatorInfo
*
pDownstream
);
static
int32_t
getNumOfScanTimes
(
STaskAttr
*
pQueryAttr
);
static
int32_t
getNumOfScanTimes
(
STaskAttr
*
pQueryAttr
);
static
void
destroyBasicOperatorInfo
(
void
*
param
,
int32_t
numOfOutput
);
static
void
destroyBasicOperatorInfo
(
void
*
param
,
int32_t
numOfOutput
);
...
@@ -264,10 +259,6 @@ static void getAlignQueryTimeWindow(SInterval* pInterval, int32_t precision,
...
@@ -264,10 +259,6 @@ static void getAlignQueryTimeWindow(SInterval* pInterval, int32_t precision,
static
void
setResultBufSize
(
STaskAttr
*
pQueryAttr
,
SResultInfo
*
pResultInfo
);
static
void
setResultBufSize
(
STaskAttr
*
pQueryAttr
,
SResultInfo
*
pResultInfo
);
static
void
setCtxTagForJoin
(
STaskRuntimeEnv
*
pRuntimeEnv
,
SqlFunctionCtx
*
pCtx
,
SExprInfo
*
pExprInfo
,
void
*
pTable
);
static
void
setCtxTagForJoin
(
STaskRuntimeEnv
*
pRuntimeEnv
,
SqlFunctionCtx
*
pCtx
,
SExprInfo
*
pExprInfo
,
void
*
pTable
);
static
void
setParamForStableStddev
(
STaskRuntimeEnv
*
pRuntimeEnv
,
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
,
SExprInfo
*
pExpr
);
static
void
setParamForStableStddevByColData
(
STaskRuntimeEnv
*
pRuntimeEnv
,
SqlFunctionCtx
*
pCtx
,
int32_t
numOfOutput
,
SExprInfo
*
pExpr
,
char
*
val
,
int16_t
bytes
);
static
void
doSetTableGroupOutputBuf
(
SAggOperatorInfo
*
pAggInfo
,
int32_t
numOfOutput
,
int32_t
tableGroupId
,
static
void
doSetTableGroupOutputBuf
(
SAggOperatorInfo
*
pAggInfo
,
int32_t
numOfOutput
,
int32_t
tableGroupId
,
SExecTaskInfo
*
pTaskInfo
);
SExecTaskInfo
*
pTaskInfo
);
...
@@ -3025,6 +3016,23 @@ int32_t loadDataBlock(SExecTaskInfo* pTaskInfo, STableScanInfo* pTableScanInfo,
...
@@ -3025,6 +3016,23 @@ int32_t loadDataBlock(SExecTaskInfo* pTaskInfo, STableScanInfo* pTableScanInfo,
taosArraySet
(
pBlock
->
pDataBlock
,
pColMatchInfo
->
targetSlotId
,
p
);
taosArraySet
(
pBlock
->
pDataBlock
,
pColMatchInfo
->
targetSlotId
,
p
);
}
}
if
(
pTableScanInfo
->
pFilterNode
!=
NULL
)
{
SFilterInfo
*
filter
=
NULL
;
int32_t
code
=
filterInitFromNode
((
SNode
*
)
pTableScanInfo
->
pFilterNode
,
&
filter
,
0
);
SFilterColumnParam
param1
=
{.
numOfCols
=
pBlock
->
info
.
numOfCols
,
.
pDataBlock
=
pBlock
->
pDataBlock
};
code
=
filterSetDataFromSlotId
(
filter
,
&
param1
);
int8_t
*
rowRes
=
NULL
;
bool
keep
=
filterExecute
(
filter
,
pBlock
,
&
rowRes
,
NULL
,
param1
.
numOfCols
);
// filterSetColFieldData(pQueryAttr->pFilters, pBlock->info.numOfCols, pBlock->pDataBlock);
// if (pQueryAttr->pFilters != NULL) {
// filterColRowsInDataBlock(pRuntimeEnv, pBlock, ascQuery);
// }
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
...
@@ -3344,11 +3352,6 @@ void setTagValue(SOperatorInfo* pOperatorInfo, void* pTable, SqlFunctionCtx* pCt
...
@@ -3344,11 +3352,6 @@ void setTagValue(SOperatorInfo* pOperatorInfo, void* pTable, SqlFunctionCtx* pCt
offset
+=
pLocalExprInfo
->
base
.
resSchema
.
bytes
;
offset
+=
pLocalExprInfo
->
base
.
resSchema
.
bytes
;
}
}
// todo : use index to avoid iterator all possible output columns
if
(
pQueryAttr
->
stableQuery
&&
pQueryAttr
->
stabledev
&&
(
pRuntimeEnv
->
prevResult
!=
NULL
))
{
setParamForStableStddev
(
pRuntimeEnv
,
pCtx
,
numOfOutput
,
pExprInfo
);
}
}
}
// set the tsBuf start position before check each data block
// set the tsBuf start position before check each data block
...
@@ -3544,19 +3547,6 @@ void copyTsColoum(SSDataBlock* pRes, SqlFunctionCtx* pCtx, int32_t numOfOutput)
...
@@ -3544,19 +3547,6 @@ void copyTsColoum(SSDataBlock* pRes, SqlFunctionCtx* pCtx, int32_t numOfOutput)
}
}
}
}
void
clearOutputBuf
(
SOptrBasicInfo
*
pBInfo
,
int32_t
*
bufCapacity
)
{
SSDataBlock
*
pDataBlock
=
pBInfo
->
pRes
;
for
(
int32_t
i
=
0
;
i
<
pDataBlock
->
info
.
numOfCols
;
++
i
)
{
SColumnInfoData
*
pColInfo
=
taosArrayGet
(
pDataBlock
->
pDataBlock
,
i
);
int32_t
functionId
=
pBInfo
->
pCtx
[
i
].
functionId
;
if
(
functionId
<
0
)
{
memset
(
pBInfo
->
pCtx
[
i
].
pOutput
,
0
,
pColInfo
->
info
.
bytes
*
(
*
bufCapacity
));
}
}
}
void
initCtxOutputBuffer
(
SqlFunctionCtx
*
pCtx
,
int32_t
size
)
{
void
initCtxOutputBuffer
(
SqlFunctionCtx
*
pCtx
,
int32_t
size
)
{
for
(
int32_t
j
=
0
;
j
<
size
;
++
j
)
{
for
(
int32_t
j
=
0
;
j
<
size
;
++
j
)
{
struct
SResultRowEntryInfo
*
pResInfo
=
GET_RES_INFO
(
&
pCtx
[
j
]);
struct
SResultRowEntryInfo
*
pResInfo
=
GET_RES_INFO
(
&
pCtx
[
j
]);
...
@@ -3714,23 +3704,6 @@ STableQueryInfo* createTableQueryInfo(void* buf, bool groupbyColumn, STimeWindow
...
@@ -3714,23 +3704,6 @@ STableQueryInfo* createTableQueryInfo(void* buf, bool groupbyColumn, STimeWindow
return
pTableQueryInfo
;
return
pTableQueryInfo
;
}
}
STableQueryInfo
*
createTmpTableQueryInfo
(
STimeWindow
win
)
{
STableQueryInfo
*
pTableQueryInfo
=
taosMemoryCalloc
(
1
,
sizeof
(
STableQueryInfo
));
// pTableQueryInfo->win = win;
pTableQueryInfo
->
lastKey
=
win
.
skey
;
// set more initial size of interval/groupby query
int32_t
initialSize
=
16
;
int32_t
code
=
initResultRowInfo
(
&
pTableQueryInfo
->
resInfo
,
initialSize
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
taosMemoryFreeClear
(
pTableQueryInfo
);
return
NULL
;
}
return
pTableQueryInfo
;
}
void
destroyTableQueryInfoImpl
(
STableQueryInfo
*
pTableQueryInfo
)
{
void
destroyTableQueryInfoImpl
(
STableQueryInfo
*
pTableQueryInfo
)
{
if
(
pTableQueryInfo
==
NULL
)
{
if
(
pTableQueryInfo
==
NULL
)
{
return
;
return
;
...
@@ -3834,30 +3807,6 @@ void setExecutionContext(int32_t numOfOutput, int32_t tableGroupId, TSKEY nextKe
...
@@ -3834,30 +3807,6 @@ void setExecutionContext(int32_t numOfOutput, int32_t tableGroupId, TSKEY nextKe
pAggInfo
->
groupId
=
tableGroupId
;
pAggInfo
->
groupId
=
tableGroupId
;
}
}
void
setResultOutputBuf
(
STaskRuntimeEnv
*
pRuntimeEnv
,
SResultRow
*
pResult
,
SqlFunctionCtx
*
pCtx
,
int32_t
numOfCols
,
int32_t
*
rowCellInfoOffset
)
{
// Note: pResult->pos[i]->num == 0, there is only fixed number of results for each group
SFilePage
*
page
=
getBufPage
(
pRuntimeEnv
->
pResultBuf
,
pResult
->
pageId
);
int16_t
offset
=
0
;
for
(
int32_t
i
=
0
;
i
<
numOfCols
;
++
i
)
{
pCtx
[
i
].
pOutput
=
getPosInResultPage
(
pRuntimeEnv
->
pQueryAttr
,
page
,
pResult
->
offset
,
offset
);
offset
+=
pCtx
[
i
].
resDataInfo
.
bytes
;
int32_t
functionId
=
pCtx
[
i
].
functionId
;
if
(
functionId
==
FUNCTION_TOP
||
functionId
==
FUNCTION_BOTTOM
||
functionId
==
FUNCTION_DIFF
||
functionId
==
FUNCTION_DERIVATIVE
)
{
if
(
i
>
0
)
pCtx
[
i
].
ptsOutputBuf
=
pCtx
[
i
-
1
].
pOutput
;
}
/*
* set the output buffer information and intermediate buffer,
* not all queries require the interResultBuf, such as COUNT
*/
pCtx
[
i
].
resultInfo
=
getResultCell
(
pResult
,
i
,
rowCellInfoOffset
);
}
}
void
setCtxTagForJoin
(
STaskRuntimeEnv
*
pRuntimeEnv
,
SqlFunctionCtx
*
pCtx
,
SExprInfo
*
pExprInfo
,
void
*
pTable
)
{
void
setCtxTagForJoin
(
STaskRuntimeEnv
*
pRuntimeEnv
,
SqlFunctionCtx
*
pCtx
,
SExprInfo
*
pExprInfo
,
void
*
pTable
)
{
STaskAttr
*
pQueryAttr
=
pRuntimeEnv
->
pQueryAttr
;
STaskAttr
*
pQueryAttr
=
pRuntimeEnv
->
pQueryAttr
;
...
@@ -4626,73 +4575,6 @@ static int32_t setupQueryHandle(void* tsdb, STaskRuntimeEnv* pRuntimeEnv, int64_
...
@@ -4626,73 +4575,6 @@ static int32_t setupQueryHandle(void* tsdb, STaskRuntimeEnv* pRuntimeEnv, int64_
return
terrno
;
return
terrno
;
}
}
int32_t
doInitQInfo
(
SQInfo
*
pQInfo
,
STSBuf
*
pTsBuf
,
void
*
tsdb
,
void
*
sourceOptr
,
int32_t
tbScanner
,
SArray
*
pOperator
,
void
*
param
)
{
STaskRuntimeEnv
*
pRuntimeEnv
=
&
pQInfo
->
runtimeEnv
;
STaskAttr
*
pQueryAttr
=
pQInfo
->
runtimeEnv
.
pQueryAttr
;
pQueryAttr
->
tsdb
=
tsdb
;
if
(
tsdb
!=
NULL
)
{
int32_t
code
=
setupQueryHandle
(
tsdb
,
pRuntimeEnv
,
pQInfo
->
qId
,
pQueryAttr
->
stableQuery
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
}
pQueryAttr
->
interBufSize
=
getOutputInterResultBufSize
(
pQueryAttr
);
pRuntimeEnv
->
groupResInfo
.
totalGroup
=
(
int32_t
)(
pQueryAttr
->
stableQuery
?
GET_NUM_OF_TABLEGROUP
(
pRuntimeEnv
)
:
0
);
pRuntimeEnv
->
enableGroupData
=
false
;
pRuntimeEnv
->
pQueryAttr
=
pQueryAttr
;
pRuntimeEnv
->
pTsBuf
=
pTsBuf
;
pRuntimeEnv
->
cur
.
vgroupIndex
=
-
1
;
setResultBufSize
(
pQueryAttr
,
&
pRuntimeEnv
->
resultInfo
);
if
(
sourceOptr
!=
NULL
)
{
assert
(
pRuntimeEnv
->
proot
==
NULL
);
pRuntimeEnv
->
proot
=
sourceOptr
;
}
if
(
pTsBuf
!=
NULL
)
{
int16_t
order
=
(
pQueryAttr
->
order
.
order
==
pRuntimeEnv
->
pTsBuf
->
tsOrder
)
?
TSDB_ORDER_ASC
:
TSDB_ORDER_DESC
;
tsBufSetTraverseOrder
(
pRuntimeEnv
->
pTsBuf
,
order
);
}
int32_t
ps
=
4096
;
getIntermediateBufInfo
(
pRuntimeEnv
,
&
ps
,
&
pQueryAttr
->
intermediateResultRowSize
);
int32_t
TENMB
=
1024
*
1024
*
10
;
int32_t
code
=
createDiskbasedBuf
(
&
pRuntimeEnv
->
pResultBuf
,
ps
,
TENMB
,
""
,
"/tmp"
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
// create runtime environment
int32_t
numOfTables
=
(
int32_t
)
pQueryAttr
->
tableGroupInfo
.
numOfTables
;
pQInfo
->
summary
.
tableInfoSize
+=
(
numOfTables
*
sizeof
(
STableQueryInfo
));
pQInfo
->
summary
.
queryProfEvents
=
taosArrayInit
(
512
,
sizeof
(
SQueryProfEvent
));
if
(
pQInfo
->
summary
.
queryProfEvents
==
NULL
)
{
// qDebug("QInfo:0x%"PRIx64" failed to allocate query prof events array", pQInfo->qId);
}
pQInfo
->
summary
.
operatorProfResults
=
taosHashInit
(
8
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_TINYINT
),
true
,
HASH_NO_LOCK
);
if
(
pQInfo
->
summary
.
operatorProfResults
==
NULL
)
{
// qDebug("QInfo:0x%"PRIx64" failed to allocate operator prof results hash", pQInfo->qId);
}
code
=
setupQueryRuntimeEnv
(
pRuntimeEnv
,
(
int32_t
)
pQueryAttr
->
tableGroupInfo
.
numOfTables
,
pOperator
,
param
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
// setTaskStatus(pOperator->pTaskInfo, QUERY_NOT_COMPLETED);
return
TSDB_CODE_SUCCESS
;
}
static
void
doTableQueryInfoTimeWindowCheck
(
SExecTaskInfo
*
pTaskInfo
,
STableQueryInfo
*
pTableQueryInfo
,
int32_t
order
)
{
static
void
doTableQueryInfoTimeWindowCheck
(
SExecTaskInfo
*
pTaskInfo
,
STableQueryInfo
*
pTableQueryInfo
,
int32_t
order
)
{
#if 0
#if 0
if (order == TSDB_ORDER_ASC) {
if (order == TSDB_ORDER_ASC) {
...
@@ -4790,7 +4672,6 @@ static SSDataBlock* doTableScanImpl(SOperatorInfo* pOperator, bool* newgroup) {
...
@@ -4790,7 +4672,6 @@ static SSDataBlock* doTableScanImpl(SOperatorInfo* pOperator, bool* newgroup) {
// break;
// break;
// }
// }
//
//
// pRuntimeEnv->current = *pTableQueryInfo;
// doTableQueryInfoTimeWindowCheck(pTaskInfo, *pTableQueryInfo, pTableScanInfo->order);
// doTableQueryInfoTimeWindowCheck(pTaskInfo, *pTableQueryInfo, pTableScanInfo->order);
// }
// }
...
@@ -5548,7 +5429,7 @@ SSDataBlock* createResultDataBlock(const SArray* pExprInfo) {
...
@@ -5548,7 +5429,7 @@ SSDataBlock* createResultDataBlock(const SArray* pExprInfo) {
SOperatorInfo
*
createTableScanOperatorInfo
(
void
*
pTsdbReadHandle
,
int32_t
order
,
int32_t
numOfOutput
,
SOperatorInfo
*
createTableScanOperatorInfo
(
void
*
pTsdbReadHandle
,
int32_t
order
,
int32_t
numOfOutput
,
int32_t
repeatTime
,
int32_t
reverseTime
,
SArray
*
pColMatchInfo
,
int32_t
repeatTime
,
int32_t
reverseTime
,
SArray
*
pColMatchInfo
,
SExecTaskInfo
*
pTaskInfo
)
{
S
Node
*
pCondition
,
S
ExecTaskInfo
*
pTaskInfo
)
{
assert
(
repeatTime
>
0
);
assert
(
repeatTime
>
0
);
STableScanInfo
*
pInfo
=
taosMemoryCalloc
(
1
,
sizeof
(
STableScanInfo
));
STableScanInfo
*
pInfo
=
taosMemoryCalloc
(
1
,
sizeof
(
STableScanInfo
));
...
@@ -5567,21 +5448,22 @@ SOperatorInfo* createTableScanOperatorInfo(void* pTsdbReadHandle, int32_t order,
...
@@ -5567,21 +5448,22 @@ SOperatorInfo* createTableScanOperatorInfo(void* pTsdbReadHandle, int32_t order,
taosArrayPush
(
pInfo
->
block
.
pDataBlock
,
&
idata
);
taosArrayPush
(
pInfo
->
block
.
pDataBlock
,
&
idata
);
}
}
pInfo
->
pTsdbReadHandle
=
pTsdbReadHandle
;
pInfo
->
pFilterNode
=
pCondition
;
pInfo
->
times
=
repeatTime
;
pInfo
->
pTsdbReadHandle
=
pTsdbReadHandle
;
pInfo
->
reverseTimes
=
reverseTime
;
pInfo
->
times
=
repeatTime
;
pInfo
->
order
=
order
;
pInfo
->
reverseTimes
=
reverseTime
;
pInfo
->
current
=
0
;
pInfo
->
order
=
order
;
pInfo
->
scanFlag
=
MAIN_SCAN
;
pInfo
->
current
=
0
;
pInfo
->
pColMatchInfo
=
pColMatchInfo
;
pInfo
->
scanFlag
=
MAIN_SCAN
;
pOperator
->
name
=
"TableScanOperator"
;
pInfo
->
pColMatchInfo
=
pColMatchInfo
;
pOperator
->
name
=
"TableScanOperator"
;
pOperator
->
operatorType
=
QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN
;
pOperator
->
operatorType
=
QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN
;
pOperator
->
blockingOptr
=
false
;
pOperator
->
blockingOptr
=
false
;
pOperator
->
status
=
OP_NOT_OPENED
;
pOperator
->
status
=
OP_NOT_OPENED
;
pOperator
->
info
=
pInfo
;
pOperator
->
info
=
pInfo
;
pOperator
->
numOfOutput
=
numOfOutput
;
pOperator
->
numOfOutput
=
numOfOutput
;
pOperator
->
getNextFn
=
doTableScan
;
pOperator
->
getNextFn
=
doTableScan
;
pOperator
->
pTaskInfo
=
pTaskInfo
;
pOperator
->
pTaskInfo
=
pTaskInfo
;
return
pOperator
;
return
pOperator
;
}
}
...
@@ -5838,7 +5720,7 @@ static SSDataBlock* doSysTableScan(SOperatorInfo* pOperator, bool* newgroup) {
...
@@ -5838,7 +5720,7 @@ static SSDataBlock* doSysTableScan(SOperatorInfo* pOperator, bool* newgroup) {
SColumnInfoData
*
pColInfoData
=
taosArrayGet
(
pInfo
->
pRes
->
pDataBlock
,
i
);
SColumnInfoData
*
pColInfoData
=
taosArrayGet
(
pInfo
->
pRes
->
pDataBlock
,
i
);
int64_t
tmp
=
0
;
int64_t
tmp
=
0
;
char
t
[
10
]
=
{
0
};
char
t
[
10
]
=
{
0
};
STR_TO_VARSTR
(
t
,
"_"
);
STR_TO_VARSTR
(
t
,
"_"
);
//TODO
if
(
IS_VAR_DATA_TYPE
(
pColInfoData
->
info
.
type
))
{
if
(
IS_VAR_DATA_TYPE
(
pColInfoData
->
info
.
type
))
{
colDataAppend
(
pColInfoData
,
numOfRows
,
t
,
false
);
colDataAppend
(
pColInfoData
,
numOfRows
,
t
,
false
);
}
else
{
}
else
{
...
@@ -6890,58 +6772,6 @@ static SSDataBlock* doProjectOperation(SOperatorInfo* pOperator, bool* newgroup)
...
@@ -6890,58 +6772,6 @@ static SSDataBlock* doProjectOperation(SOperatorInfo* pOperator, bool* newgroup)
return
(
pInfo
->
pRes
->
info
.
rows
>
0
)
?
pInfo
->
pRes
:
NULL
;
return
(
pInfo
->
pRes
->
info
.
rows
>
0
)
?
pInfo
->
pRes
:
NULL
;
}
}
static
SSDataBlock
*
doLimit
(
SOperatorInfo
*
pOperator
,
bool
*
newgroup
)
{
if
(
pOperator
->
status
==
OP_EXEC_DONE
)
{
return
NULL
;
}
SLimitOperatorInfo
*
pInfo
=
pOperator
->
info
;
SSDataBlock
*
pBlock
=
NULL
;
SOperatorInfo
*
pDownstream
=
pOperator
->
pDownstream
[
0
];
while
(
1
)
{
publishOperatorProfEvent
(
pDownstream
,
QUERY_PROF_BEFORE_OPERATOR_EXEC
);
pBlock
=
pDownstream
->
getNextFn
(
pDownstream
,
newgroup
);
publishOperatorProfEvent
(
pDownstream
,
QUERY_PROF_AFTER_OPERATOR_EXEC
);
if
(
pBlock
==
NULL
)
{
doSetOperatorCompleted
(
pOperator
);
return
NULL
;
}
if
(
pInfo
->
currentOffset
==
0
)
{
break
;
}
else
if
(
pInfo
->
currentOffset
>=
pBlock
->
info
.
rows
)
{
pInfo
->
currentOffset
-=
pBlock
->
info
.
rows
;
}
else
{
// TODO handle the data movement
int32_t
remain
=
(
int32_t
)(
pBlock
->
info
.
rows
-
pInfo
->
currentOffset
);
pBlock
->
info
.
rows
=
remain
;
for
(
int32_t
i
=
0
;
i
<
pBlock
->
info
.
numOfCols
;
++
i
)
{
SColumnInfoData
*
pColInfoData
=
taosArrayGet
(
pBlock
->
pDataBlock
,
i
);
int16_t
bytes
=
pColInfoData
->
info
.
bytes
;
memmove
(
pColInfoData
->
pData
,
pColInfoData
->
pData
+
bytes
*
pInfo
->
currentOffset
,
remain
*
bytes
);
}
pInfo
->
currentOffset
=
0
;
break
;
}
}
if
(
pInfo
->
currentRows
+
pBlock
->
info
.
rows
>=
pInfo
->
limit
.
limit
)
{
pBlock
->
info
.
rows
=
(
int32_t
)(
pInfo
->
limit
.
limit
-
pInfo
->
currentRows
);
pInfo
->
currentRows
=
pInfo
->
limit
.
limit
;
doSetOperatorCompleted
(
pOperator
);
}
else
{
pInfo
->
currentRows
+=
pBlock
->
info
.
rows
;
}
return
pBlock
;
}
static
int32_t
doOpenIntervalAgg
(
SOperatorInfo
*
pOperator
)
{
static
int32_t
doOpenIntervalAgg
(
SOperatorInfo
*
pOperator
)
{
if
(
OPTR_IS_OPENED
(
pOperator
))
{
if
(
OPTR_IS_OPENED
(
pOperator
))
{
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
@@ -7791,11 +7621,6 @@ static void destroyOrderOperatorInfo(void* param, int32_t numOfOutput) {
...
@@ -7791,11 +7621,6 @@ static void destroyOrderOperatorInfo(void* param, int32_t numOfOutput) {
taosArrayDestroy
(
pInfo
->
pSortInfo
);
taosArrayDestroy
(
pInfo
->
pSortInfo
);
}
}
static
void
destroyConditionOperatorInfo
(
void
*
param
,
int32_t
numOfOutput
)
{
SFilterOperatorInfo
*
pInfo
=
(
SFilterOperatorInfo
*
)
param
;
doDestroyFilterInfo
(
pInfo
->
pFilterInfo
,
pInfo
->
numOfFilterCols
);
}
static
void
destroyDistinctOperatorInfo
(
void
*
param
,
int32_t
numOfOutput
)
{
static
void
destroyDistinctOperatorInfo
(
void
*
param
,
int32_t
numOfOutput
)
{
SDistinctOperatorInfo
*
pInfo
=
(
SDistinctOperatorInfo
*
)
param
;
SDistinctOperatorInfo
*
pInfo
=
(
SDistinctOperatorInfo
*
)
param
;
taosHashCleanup
(
pInfo
->
pSet
);
taosHashCleanup
(
pInfo
->
pSet
);
...
@@ -8810,7 +8635,7 @@ SOperatorInfo* createOperatorTree(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo
...
@@ -8810,7 +8635,7 @@ SOperatorInfo* createOperatorTree(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo
SArray
*
pColList
=
extractColMatchInfo
(
pScanPhyNode
->
pScanCols
,
pScanPhyNode
->
node
.
pOutputDataBlockDesc
,
&
numOfCols
);
SArray
*
pColList
=
extractColMatchInfo
(
pScanPhyNode
->
pScanCols
,
pScanPhyNode
->
node
.
pOutputDataBlockDesc
,
&
numOfCols
);
return
createTableScanOperatorInfo
(
pDataReader
,
pScanPhyNode
->
order
,
numOfCols
,
pScanPhyNode
->
count
,
return
createTableScanOperatorInfo
(
pDataReader
,
pScanPhyNode
->
order
,
numOfCols
,
pScanPhyNode
->
count
,
pScanPhyNode
->
reverse
,
pColList
,
pTaskInfo
);
pScanPhyNode
->
reverse
,
pColList
,
p
ScanPhyNode
->
node
.
pConditions
,
p
TaskInfo
);
}
else
if
(
QUERY_NODE_PHYSICAL_PLAN_EXCHANGE
==
nodeType
(
pPhyNode
))
{
}
else
if
(
QUERY_NODE_PHYSICAL_PLAN_EXCHANGE
==
nodeType
(
pPhyNode
))
{
SExchangePhysiNode
*
pExchange
=
(
SExchangePhysiNode
*
)
pPhyNode
;
SExchangePhysiNode
*
pExchange
=
(
SExchangePhysiNode
*
)
pPhyNode
;
SSDataBlock
*
pResBlock
=
createOutputBuf_rv1
(
pExchange
->
node
.
pOutputDataBlockDesc
);
SSDataBlock
*
pResBlock
=
createOutputBuf_rv1
(
pExchange
->
node
.
pOutputDataBlockDesc
);
...
@@ -9175,41 +9000,6 @@ _complete:
...
@@ -9175,41 +9000,6 @@ _complete:
return
code
;
return
code
;
}
}
int32_t
cloneExprFilterInfo
(
SColumnFilterInfo
**
dst
,
SColumnFilterInfo
*
src
,
int32_t
filterNum
)
{
if
(
filterNum
<=
0
)
{
return
TSDB_CODE_SUCCESS
;
}
*
dst
=
taosMemoryCalloc
(
filterNum
,
sizeof
(
*
src
));
if
(
*
dst
==
NULL
)
{
return
TSDB_CODE_QRY_OUT_OF_MEMORY
;
}
memcpy
(
*
dst
,
src
,
sizeof
(
*
src
)
*
filterNum
);
for
(
int32_t
i
=
0
;
i
<
filterNum
;
i
++
)
{
if
((
*
dst
)[
i
].
filterstr
&&
dst
[
i
]
->
len
>
0
)
{
void
*
pz
=
taosMemoryCalloc
(
1
,
(
size_t
)(
*
dst
)[
i
].
len
+
1
);
if
(
pz
==
NULL
)
{
if
(
i
==
0
)
{
taosMemoryFree
(
*
dst
);
}
else
{
freeColumnFilterInfo
(
*
dst
,
i
);
}
return
TSDB_CODE_QRY_OUT_OF_MEMORY
;
}
memcpy
(
pz
,
(
void
*
)
src
->
pz
,
(
size_t
)
src
->
len
+
1
);
(
*
dst
)[
i
].
pz
=
(
int64_t
)
pz
;
}
}
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
updateOutputBufForTopBotQuery
(
SQueriedTableInfo
*
pTableInfo
,
SColumnInfo
*
pTagCols
,
SExprInfo
*
pExprs
,
static
int32_t
updateOutputBufForTopBotQuery
(
SQueriedTableInfo
*
pTableInfo
,
SColumnInfo
*
pTagCols
,
SExprInfo
*
pExprs
,
int32_t
numOfOutput
,
int32_t
tagLen
,
bool
superTable
)
{
int32_t
numOfOutput
,
int32_t
tagLen
,
bool
superTable
)
{
for
(
int32_t
i
=
0
;
i
<
numOfOutput
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
numOfOutput
;
++
i
)
{
...
@@ -9232,113 +9022,6 @@ static int32_t updateOutputBufForTopBotQuery(SQueriedTableInfo* pTableInfo, SCol
...
@@ -9232,113 +9022,6 @@ static int32_t updateOutputBufForTopBotQuery(SQueriedTableInfo* pTableInfo, SCol
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
// TODO tag length should be passed from client, refactor
int32_t
createQueryFilter
(
char
*
data
,
uint16_t
len
,
SFilterInfo
**
pFilters
)
{
tExprNode
*
expr
=
NULL
;
TRY
(
TSDB_MAX_TAG_CONDITIONS
)
{
expr
=
exprTreeFromBinary
(
data
,
len
);
}
CATCH
(
code
)
{
CLEANUP_EXECUTE
();
return
code
;
}
END_TRY
if
(
expr
==
NULL
)
{
// qError("failed to create expr tree");
return
TSDB_CODE_QRY_APP_ERROR
;
}
// int32_t ret = filterInitFromTree(expr, pFilters, 0);
// tExprTreeDestroy(expr, NULL);
// return ret;
}
// int32_t doCreateFilterInfo(SColumnInfo* pCols, int32_t numOfCols, int32_t numOfFilterCols, SSingleColumnFilterInfo**
// pFilterInfo, uint64_t qId) {
// *pFilterInfo = taosMemoryCalloc(1, sizeof(SSingleColumnFilterInfo) * numOfFilterCols);
// if (*pFilterInfo == NULL) {
// return TSDB_CODE_QRY_OUT_OF_MEMORY;
// }
//
// for (int32_t i = 0, j = 0; i < numOfCols; ++i) {
// if (pCols[i].flist.numOfFilters > 0) {
// SSingleColumnFilterInfo* pFilter = &((*pFilterInfo)[j]);
//
// memcpy(&pFilter->info, &pCols[i], sizeof(SColumnInfo));
// pFilter->info = pCols[i];
//
// pFilter->numOfFilters = pCols[i].flist.numOfFilters;
// pFilter->pFilters = taosMemoryCalloc(pFilter->numOfFilters, sizeof(SColumnFilterElem));
// if (pFilter->pFilters == NULL) {
// return TSDB_CODE_QRY_OUT_OF_MEMORY;
// }
//
// for (int32_t f = 0; f < pFilter->numOfFilters; ++f) {
// SColumnFilterElem* pSingleColFilter = &pFilter->pFilters[f];
// pSingleColFilter->filterInfo = pCols[i].flist.filterInfo[f];
//
// int32_t lower = pSingleColFilter->filterInfo.lowerRelOptr;
// int32_t upper = pSingleColFilter->filterInfo.upperRelOptr;
// if (lower == TSDB_RELATION_INVALID && upper == TSDB_RELATION_INVALID) {
// //qError("QInfo:0x%"PRIx64" invalid filter info", qId);
// return TSDB_CODE_QRY_INVALID_MSG;
// }
//
// pSingleColFilter->fp = getFilterOperator(lower, upper);
// if (pSingleColFilter->fp == NULL) {
// //qError("QInfo:0x%"PRIx64" invalid filter info", qId);
// return TSDB_CODE_QRY_INVALID_MSG;
// }
//
// pSingleColFilter->bytes = pCols[i].bytes;
//
// if (lower == TSDB_RELATION_IN) {
//// buildFilterSetFromBinary(&pSingleColFilter->q, (char *)(pSingleColFilter->filterInfo.pz),
///(int32_t)(pSingleColFilter->filterInfo.len));
// }
// }
//
// j++;
// }
// }
//
// return TSDB_CODE_SUCCESS;
//}
void
*
doDestroyFilterInfo
(
SSingleColumnFilterInfo
*
pFilterInfo
,
int32_t
numOfFilterCols
)
{
// for (int32_t i = 0; i < numOfFilterCols; ++i) {
// if (pFilterInfo[i].numOfFilters > 0) {
// if (pFilterInfo[i].pFilters->filterInfo.lowerRelOptr == TSDB_RELATION_IN) {
// taosHashCleanup((SHashObj *)(pFilterInfo[i].pFilters->q));
// }
// taosMemoryFreeClear(pFilterInfo[i].pFilters);
// }
// }
//
// taosMemoryFreeClear(pFilterInfo);
return
NULL
;
}
int32_t
createFilterInfo
(
STaskAttr
*
pQueryAttr
,
uint64_t
qId
)
{
for
(
int32_t
i
=
0
;
i
<
pQueryAttr
->
numOfCols
;
++
i
)
{
// if (pQueryAttr->tableCols[i].flist.numOfFilters > 0 && pQueryAttr->tableCols[i].flist.filterInfo != NULL) {
// pQueryAttr->numOfFilterCols++;
// }
}
if
(
pQueryAttr
->
numOfFilterCols
==
0
)
{
return
TSDB_CODE_SUCCESS
;
}
// doCreateFilterInfo(pQueryAttr->tableCols, pQueryAttr->numOfCols, pQueryAttr->numOfFilterCols,
// &pQueryAttr->pFilterInfo, qId);
pQueryAttr
->
createFilterOperator
=
true
;
return
TSDB_CODE_SUCCESS
;
}
static
void
doUpdateExprColumnIndex
(
STaskAttr
*
pQueryAttr
)
{
static
void
doUpdateExprColumnIndex
(
STaskAttr
*
pQueryAttr
)
{
assert
(
pQueryAttr
->
pExpr1
!=
NULL
&&
pQueryAttr
!=
NULL
);
assert
(
pQueryAttr
->
pExpr1
!=
NULL
&&
pQueryAttr
!=
NULL
);
...
...
source/libs/scalar/src/filter.c
浏览文件 @
dc714776
...
@@ -3668,7 +3668,6 @@ bool filterExecute(SFilterInfo *info, SSDataBlock *pSrc, int8_t** p, SColumnData
...
@@ -3668,7 +3668,6 @@ bool filterExecute(SFilterInfo *info, SSDataBlock *pSrc, int8_t** p, SColumnData
taosArrayPush
(
pList
,
&
pSrc
);
taosArrayPush
(
pList
,
&
pSrc
);
FLT_ERR_RET
(
scalarCalculate
(
info
->
sclCtx
.
node
,
pList
,
&
output
));
FLT_ERR_RET
(
scalarCalculate
(
info
->
sclCtx
.
node
,
pList
,
&
output
));
taosArrayDestroy
(
pList
);
taosArrayDestroy
(
pList
);
// TODO Fix it
// TODO Fix it
// *p = output.orig.data;
// *p = output.orig.data;
...
...
source/libs/scalar/test/filter/filterTests.cpp
浏览文件 @
dc714776
...
@@ -275,7 +275,6 @@ TEST(timerangeTest, greater_and_lower) {
...
@@ -275,7 +275,6 @@ TEST(timerangeTest, greater_and_lower) {
nodesDestroyNode
(
logicNode
);
nodesDestroyNode
(
logicNode
);
}
}
TEST
(
columnTest
,
smallint_column_greater_double_value
)
{
TEST
(
columnTest
,
smallint_column_greater_double_value
)
{
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
int16_t
leftv
[
5
]
=
{
1
,
2
,
3
,
4
,
5
};
int16_t
leftv
[
5
]
=
{
1
,
2
,
3
,
4
,
5
};
...
@@ -386,7 +385,6 @@ TEST(columnTest, int_column_greater_smallint_value) {
...
@@ -386,7 +385,6 @@ TEST(columnTest, int_column_greater_smallint_value) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
columnTest
,
int_column_in_double_list
)
{
TEST
(
columnTest
,
int_column_in_double_list
)
{
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
listNode
=
NULL
,
*
opNode
=
NULL
;
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
listNode
=
NULL
,
*
opNode
=
NULL
;
int32_t
leftv
[
5
]
=
{
1
,
2
,
3
,
4
,
5
};
int32_t
leftv
[
5
]
=
{
1
,
2
,
3
,
4
,
5
};
...
@@ -432,8 +430,6 @@ TEST(columnTest, int_column_in_double_list) {
...
@@ -432,8 +430,6 @@ TEST(columnTest, int_column_in_double_list) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
columnTest
,
binary_column_in_binary_list
)
{
TEST
(
columnTest
,
binary_column_in_binary_list
)
{
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
listNode
=
NULL
,
*
opNode
=
NULL
;
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
listNode
=
NULL
,
*
opNode
=
NULL
;
bool
eRes
[
5
]
=
{
true
,
true
,
false
,
false
,
false
};
bool
eRes
[
5
]
=
{
true
,
true
,
false
,
false
,
false
};
...
@@ -497,7 +493,6 @@ TEST(columnTest, binary_column_in_binary_list) {
...
@@ -497,7 +493,6 @@ TEST(columnTest, binary_column_in_binary_list) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
columnTest
,
binary_column_like_binary
)
{
TEST
(
columnTest
,
binary_column_like_binary
)
{
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
char
rightv
[
64
]
=
{
0
};
char
rightv
[
64
]
=
{
0
};
...
@@ -546,7 +541,6 @@ TEST(columnTest, binary_column_like_binary) {
...
@@ -546,7 +541,6 @@ TEST(columnTest, binary_column_like_binary) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
columnTest
,
binary_column_is_null
)
{
TEST
(
columnTest
,
binary_column_is_null
)
{
SNode
*
pLeft
=
NULL
,
*
opNode
=
NULL
;
SNode
*
pLeft
=
NULL
,
*
opNode
=
NULL
;
char
leftv
[
5
][
5
]
=
{
0
};
char
leftv
[
5
][
5
]
=
{
0
};
...
@@ -641,8 +635,6 @@ TEST(columnTest, binary_column_is_not_null) {
...
@@ -641,8 +635,6 @@ TEST(columnTest, binary_column_is_not_null) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
opTest
,
smallint_column_greater_int_column
)
{
TEST
(
opTest
,
smallint_column_greater_int_column
)
{
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
int16_t
leftv
[
5
]
=
{
1
,
-
6
,
-
2
,
11
,
101
};
int16_t
leftv
[
5
]
=
{
1
,
-
6
,
-
2
,
11
,
101
};
...
@@ -680,7 +672,6 @@ TEST(opTest, smallint_column_greater_int_column) {
...
@@ -680,7 +672,6 @@ TEST(opTest, smallint_column_greater_int_column) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
opTest
,
smallint_value_add_int_column
)
{
TEST
(
opTest
,
smallint_value_add_int_column
)
{
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
int32_t
leftv
=
1
;
int32_t
leftv
=
1
;
...
@@ -719,8 +710,6 @@ TEST(opTest, smallint_value_add_int_column) {
...
@@ -719,8 +710,6 @@ TEST(opTest, smallint_value_add_int_column) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
opTest
,
bigint_column_multi_binary_column
)
{
TEST
(
opTest
,
bigint_column_multi_binary_column
)
{
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
int64_t
leftv
[
5
]
=
{
1
,
2
,
3
,
4
,
5
};
int64_t
leftv
[
5
]
=
{
1
,
2
,
3
,
4
,
5
};
...
@@ -845,8 +834,6 @@ TEST(opTest, smallint_column_or_float_column) {
...
@@ -845,8 +834,6 @@ TEST(opTest, smallint_column_or_float_column) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
opTest
,
smallint_column_or_double_value
)
{
TEST
(
opTest
,
smallint_column_or_double_value
)
{
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
SNode
*
pLeft
=
NULL
,
*
pRight
=
NULL
,
*
opNode
=
NULL
;
int16_t
leftv
[
5
]
=
{
0
,
2
,
3
,
0
,
-
1
};
int16_t
leftv
[
5
]
=
{
0
,
2
,
3
,
0
,
-
1
};
...
@@ -885,7 +872,6 @@ TEST(opTest, smallint_column_or_double_value) {
...
@@ -885,7 +872,6 @@ TEST(opTest, smallint_column_or_double_value) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
opTest
,
binary_column_is_true
)
{
TEST
(
opTest
,
binary_column_is_true
)
{
SNode
*
pLeft
=
NULL
,
*
opNode
=
NULL
;
SNode
*
pLeft
=
NULL
,
*
opNode
=
NULL
;
char
leftv
[
5
][
5
]
=
{
0
};
char
leftv
[
5
][
5
]
=
{
0
};
...
@@ -930,7 +916,6 @@ TEST(opTest, binary_column_is_true) {
...
@@ -930,7 +916,6 @@ TEST(opTest, binary_column_is_true) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
filterModelogicTest
,
diff_columns_and_or_and
)
{
TEST
(
filterModelogicTest
,
diff_columns_and_or_and
)
{
flttInitLogFile
();
flttInitLogFile
();
...
@@ -1071,7 +1056,6 @@ TEST(filterModelogicTest, same_column_and_or_and) {
...
@@ -1071,7 +1056,6 @@ TEST(filterModelogicTest, same_column_and_or_and) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
filterModelogicTest
,
diff_columns_or_and_or
)
{
TEST
(
filterModelogicTest
,
diff_columns_or_and_or
)
{
SNode
*
pLeft1
=
NULL
,
*
pRight1
=
NULL
,
*
pLeft2
=
NULL
,
*
pRight2
=
NULL
,
*
opNode1
=
NULL
,
*
opNode2
=
NULL
;
SNode
*
pLeft1
=
NULL
,
*
pRight1
=
NULL
,
*
pLeft2
=
NULL
,
*
pRight2
=
NULL
,
*
opNode1
=
NULL
,
*
opNode2
=
NULL
;
SNode
*
logicNode1
=
NULL
,
*
logicNode2
=
NULL
;
SNode
*
logicNode1
=
NULL
,
*
logicNode2
=
NULL
;
...
@@ -1210,8 +1194,6 @@ TEST(filterModelogicTest, same_column_or_and_or) {
...
@@ -1210,8 +1194,6 @@ TEST(filterModelogicTest, same_column_or_and_or) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
TEST
(
scalarModelogicTest
,
diff_columns_or_and_or
)
{
TEST
(
scalarModelogicTest
,
diff_columns_or_and_or
)
{
flttInitLogFile
();
flttInitLogFile
();
...
@@ -1283,8 +1265,6 @@ TEST(scalarModelogicTest, diff_columns_or_and_or) {
...
@@ -1283,8 +1265,6 @@ TEST(scalarModelogicTest, diff_columns_or_and_or) {
blockDataDestroy
(
src
);
blockDataDestroy
(
src
);
}
}
int
main
(
int
argc
,
char
**
argv
)
{
int
main
(
int
argc
,
char
**
argv
)
{
taosSeedRand
(
taosGetTimestampSec
());
taosSeedRand
(
taosGetTimestampSec
());
testing
::
InitGoogleTest
(
&
argc
,
argv
);
testing
::
InitGoogleTest
(
&
argc
,
argv
);
...
...
tests/script/tsim/query/session.sim
0 → 100644
浏览文件 @
dc714776
#### session windows
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1
system sh/exec.sh -n dnode1 -s start
$loop_cnt = 0
check_dnode_ready:
$loop_cnt = $loop_cnt + 1
sleep 200
if $loop_cnt == 10 then
print ====> dnode not ready!
return -1
endi
sql show dnodes
print ===> $rows $data00 $data01 $data02 $data03 $data04 $data05
if $data00 != 1 then
return -1
endi
if $data04 != ready then
goto check_dnode_ready
endi
sql connect
$vgroups = 4
$dbNamme = d0
print =============== create database $dbNamme vgroups $vgroups
sql create database $dbNamme vgroups $vgroups
sql show databases
print $data00 $data01 $data02 $data03 $data04 $data05 $data06 $data07 $data08 $data09
print $data10 $data11 $data12 $data13 $data14 $data15 $data16 $data17 $data18 $data19
#print $data20 $data21 $data22 $data23 $data24 $data25 $data26 $data27 $data28 $data29
sql use $dbNamme
print =============== create super table, child table and insert data
sql create table if not exists st (ts timestamp, tagtype int) tags(dev nchar(50), tag2 binary(16))
sql create table if not exists dev_001 using st tags("dev_01", "tag_01")
sql create table if not exists dev_002 using st tags("dev_02", "tag_02")
sql INSERT INTO dev_001 VALUES('2020-05-13 10:00:00.000', 1)('2020-05-13 10:00:00.005', 2)('2020-05-13 10:00:00.011', 3)
sql INSERT INTO dev_001 VALUES('2020-05-13 10:00:01.011', 4)('2020-05-13 10:00:01.611', 5)('2020-05-13 10:00:02.612', 6)
sql INSERT INTO dev_001 VALUES('2020-05-13 10:01:02.612', 7)('2020-05-13 10:02:02.612', 8)('2020-05-13 10:03:02.613', 9)
sql INSERT INTO dev_001 VALUES('2020-05-13 11:00:00.000', 10)('2020-05-13 12:00:00.000', 11)('2020-05-13 13:00:00.001', 12)
sql INSERT INTO dev_001 VALUES('2020-05-14 13:00:00.001', 13)('2020-05-15 14:00:00.000', 14)('2020-05-20 10:00:00.000', 15)
sql INSERT INTO dev_001 VALUES('2020-05-27 10:00:00.001', 16)
sql INSERT INTO dev_002 VALUES('2020-05-13 10:00:00.000', 1)('2020-05-13 10:00:00.005', 2)('2020-05-13 10:00:00.009', 3)
sql INSERT INTO dev_002 VALUES('2020-05-13 10:00:00.0021', 4)('2020-05-13 10:00:00.031', 5)('2020-05-13 10:00:00.036', 6)('2020-05-13 10:00:00.51', 7)
# session(ts,5a)
print ====> select count(*) from dev_001 session(ts,5a)
sql select count(*) from dev_001 session(ts,5a)
print ====> rows: $rows
print ====> $data00 $data01 $data02 $data03 $data04 $data05
print ====> $data10 $data11 $data12 $data13 $data14 $data15
print ====> $data20 $data21 $data22 $data23 $data24 $data25
print ====> $data30 $data31 $data32 $data33 $data34 $data35
print ====> $data40 $data41 $data42 $data43 $data44 $data45
print ====> $data50 $data51 $data52 $data53 $data54 $data55
print ====> $data60 $data61 $data62 $data63 $data64 $data65
print ====> $data70 $data71 $data72 $data73 $data74 $data75
print ====> $data80 $data81 $data82 $data83 $data84 $data85
print ====> $data90 $data91 $data92 $data93 $data94 $data95
if $rows != 15 then
return -1
endi
if $data01 != 2 then
return -1
endi
return
#
# # session(ts,5a) main query
# tdSql.query("select count(*) from (select * from dev_001) session(ts,5a)")
# tdSql.checkRows(15)
# tdSql.checkData(0, 1, 2)
#
#
# # session(ts,1s)
# tdSql.query("select count(*) from dev_001 session(ts,1s)")
# tdSql.checkRows(12)
# tdSql.checkData(0, 1, 5)
#
# # session(ts,1s) main query
# tdSql.query("select count(*) from (select * from dev_001) session(ts,1s)")
# tdSql.checkRows(12)
# tdSql.checkData(0, 1, 5)
#
# tdSql.query("select count(*) from dev_001 session(ts,1000a)")
# tdSql.checkRows(12)
# tdSql.checkData(0, 1, 5)
#
# tdSql.query("select count(*) from (select * from dev_001) session(ts,1000a)")
# tdSql.checkRows(12)
# tdSql.checkData(0, 1, 5)
#
# # session(ts,1m)
# tdSql.query("select count(*) from dev_001 session(ts,1m)")
# tdSql.checkRows(9)
# tdSql.checkData(0, 1, 8)
#
# # session(ts,1m)
# tdSql.query("select count(*) from (select * from dev_001) session(ts,1m)")
# tdSql.checkRows(9)
# tdSql.checkData(0, 1, 8)
#
# # session(ts,1h)
# tdSql.query("select count(*) from dev_001 session(ts,1h)")
# tdSql.checkRows(6)
# tdSql.checkData(0, 1, 11)
#
# # session(ts,1h)
# tdSql.query("select count(*) from (select * from dev_001) session(ts,1h)")
# tdSql.checkRows(6)
# tdSql.checkData(0, 1, 11)
#
# # session(ts,1d)
# tdSql.query("select count(*) from dev_001 session(ts,1d)")
# tdSql.checkRows(4)
# tdSql.checkData(0, 1, 13)
#
# # session(ts,1d)
# tdSql.query("select count(*) from (select * from dev_001) session(ts,1d)")
# tdSql.checkRows(4)
# tdSql.checkData(0, 1, 13)
#
# # session(ts,1w)
# tdSql.query("select count(*) from dev_001 session(ts,1w)")
# tdSql.checkRows(2)
# tdSql.checkData(0, 1, 15)
#
# # session(ts,1w)
# tdSql.query("select count(*) from (select * from dev_001) session(ts,1w)")
# tdSql.checkRows(2)
# tdSql.checkData(0, 1, 15)
#
# # session with where
# tdSql.query("select count(*),first(tagtype),last(tagtype),avg(tagtype),sum(tagtype),min(tagtype),max(tagtype),leastsquares(tagtype, 1, 1),spread(tagtype),stddev(tagtype),percentile(tagtype,0) from dev_001 where ts <'2020-05-20 0:0:0' session(ts,1d)")
#
# tdSql.checkRows(2)
# tdSql.checkData(0, 1, 13)
# tdSql.checkData(0, 2, 1)
# tdSql.checkData(0, 3, 13)
# tdSql.checkData(0, 4, 7)
# tdSql.checkData(0, 5, 91)
# tdSql.checkData(0, 6, 1)
# tdSql.checkData(0, 7, 13)
# tdSql.checkData(0, 8, '{slop:1.000000, intercept:0.000000}')
# tdSql.checkData(0, 9, 12)
# tdSql.checkData(0, 10, 3.741657387)
# tdSql.checkData(0, 11, 1)
# tdSql.checkData(1, 11, 14)
#
# # session with where main
#
# tdSql.query("select count(*),first(tagtype),last(tagtype),avg(tagtype),sum(tagtype),min(tagtype),max(tagtype),leastsquares(tagtype, 1, 1) from (select * from dev_001 where ts <'2020-05-20 0:0:0') session(ts,1d)")
#
# tdSql.checkRows(2)
# tdSql.checkData(0, 1, 13)
# tdSql.checkData(0, 2, 1)
# tdSql.checkData(0, 3, 13)
# tdSql.checkData(0, 4, 7)
# tdSql.checkData(0, 5, 91)
# tdSql.checkData(0, 6, 1)
# tdSql.checkData(0, 7, 13)
# tdSql.checkData(0, 8, '{slop:1.000000, intercept:0.000000}')
#
# # tdsql err
# tdSql.error("select * from dev_001 session(ts,1w)")
# tdSql.error("select count(*) from st session(ts,1w)")
# tdSql.error("select count(*) from dev_001 group by tagtype session(ts,1w) ")
# tdSql.error("select count(*) from dev_001 session(ts,1n)")
# tdSql.error("select count(*) from dev_001 session(ts,1y)")
# tdSql.error("select count(*) from dev_001 session(ts,0s)")
# tdSql.error("select count(*) from dev_001 session(i,1y)")
# tdSql.error("select count(*) from dev_001 session(ts,1d) where ts <'2020-05-20 0:0:0'")
#
# #test precision us
# tdSql.execute("create database test precision 'us'")
# tdSql.execute("use test")
# tdSql.execute("create table dev_001 (ts timestamp ,i timestamp ,j int)")
# tdSql.execute("insert into dev_001 values(1623046993681000,now,1)(1623046993681001,now+1s,2)(1623046993681002,now+2s,3)(1623046993681004,now+5s,4)")
#
# # session(ts,1u)
# tdSql.query("select count(*) from dev_001 session(ts,1u)")
# tdSql.checkRows(2)
# tdSql.checkData(0, 1, 3)
# tdSql.error("select count(*) from dev_001 session(i,1s)")
# # test second timestamp fileds
# tdSql.execute("create table secondts(ts timestamp,t2 timestamp,i int)")
# tdSql.error("select count(*) from secondts session(t2,2s)")
#
#
#if $loop_test == 0 then
# print =============== stop and restart taosd
# system sh/exec.sh -n dnode1 -s stop -x SIGINT
# system sh/exec.sh -n dnode1 -s start
#
# $loop_cnt = 0
# check_dnode_ready_0:
# $loop_cnt = $loop_cnt + 1
# sleep 200
# if $loop_cnt == 10 then
# print ====> dnode not ready!
# return -1
# endi
# sql show dnodes
# print ===> $rows $data00 $data01 $data02 $data03 $data04 $data05
# if $data00 != 1 then
# return -1
# endi
# if $data04 != ready then
# goto check_dnode_ready_0
# endi
#
# $loop_test = 1
# goto loop_test_pos
#endi
#
#system sh/exec.sh -n dnode1 -s stop -x SIGINT
tests/test-all.sh
浏览文件 @
dc714776
...
@@ -91,20 +91,23 @@ function runSimCaseOneByOnefq {
...
@@ -91,20 +91,23 @@ function runSimCaseOneByOnefq {
for
((
i
=
$start
;
i<
=
$end
;
i++
))
;
do
for
((
i
=
$start
;
i<
=
$end
;
i++
))
;
do
line
=
`
sed
-n
"
$i
"
p jenkins/basic.txt
`
line
=
`
sed
-n
"
$i
"
p jenkins/basic.txt
`
if
[[
$line
=
~ ^./test.sh
*
]]
||
[[
$line
=
~ ^run
*
]]
;
then
if
[[
$line
=
~ ^./test.sh
*
]]
||
[[
$line
=
~ ^run
*
]]
;
then
case
=
`
echo
$line
|
grep
sim
$
|awk
'{print $NF}'
`
#case=`echo $line | grep sim$ |awk '{print $NF}'`
case
=
`
echo
$line
|
grep
-o
".*
\.
sim"
|awk
'{print $NF}'
`
start_time
=
`
date
+%s
`
start_time
=
`
date
+%s
`
date
+%F
\
%T
|
tee
-a
out.log
date
+%F
\
%T
|
tee
-a
out.log
if
[[
"
$tests_dir
"
==
*
"
$IN_TDINTERNAL
"
*
]]
;
then
if
[[
"
$tests_dir
"
==
*
"
$IN_TDINTERNAL
"
*
]]
;
then
echo
-n
$case
#echo -n $case
./test.sh
-f
$case
>
case
.log 2>&1
\
echo
-n
$line
$line
>
case
.log 2>&1
\
&&
\
&&
\
([
-f
../../../sim/tsim/log/taoslog0.0
]
&&
grep
-q
'script.*'
$case
'.*failed.*, err.*lineNum'
../../../sim/tsim/log/taoslog0.0
&&
echo
-e
"
${
RED
}
failed
${
NC
}
"
|
tee
-a
out.log
||
echo
-e
"
${
GREEN
}
success
${
NC
}
"
|
tee
-a
out.log
)
||
\
([
-f
../../../sim/tsim/log/taoslog0.0
]
&&
grep
-q
'script.*'
$case
'.*failed.*, err.*lineNum'
../../../sim/tsim/log/taoslog0.0
&&
echo
-e
"
${
RED
}
failed
${
NC
}
"
|
tee
-a
out.log
||
echo
-e
"
${
GREEN
}
success
${
NC
}
"
|
tee
-a
out.log
)
||
\
([
-f
../../../sim/tsim/log/taoslog0.0
]
&&
grep
-q
'script.*success.*m$'
../../../sim/tsim/log/taoslog0.0
&&
echo
-e
"
${
GREEN
}
success
${
NC
}
"
|
tee
-a
out.log
)
||
\
([
-f
../../../sim/tsim/log/taoslog0.0
]
&&
grep
-q
'script.*success.*m$'
../../../sim/tsim/log/taoslog0.0
&&
echo
-e
"
${
GREEN
}
success
${
NC
}
"
|
tee
-a
out.log
)
||
\
(
echo
-e
"
${
RED
}
failed
${
NC
}
"
|
tee
-a
out.log
&&
echo
'=====================log====================='
&&
cat
case
.log
)
(
echo
-e
"
${
RED
}
failed
${
NC
}
"
|
tee
-a
out.log
&&
echo
'=====================log====================='
&&
cat
case
.log
)
else
else
echo
-n
$case
#echo -n $case
./test.sh
-f
$case
>
../../sim/case.log 2>&1
&&
\
echo
-n
$line
$line
>
../../sim/case.log 2>&1
&&
\
([
-f
../../sim/tsim/log/taoslog0.0
]
&&
grep
-q
'script.*'
$case
'.*failed.*, err.*lineNum'
../../sim/tsim/log/taoslog0.0
&&
echo
-e
"
${
RED
}
failed
${
NC
}
"
|
tee
-a
out.log
||
echo
-e
"
${
GREEN
}
success
${
NC
}
"
|
tee
-a
out.log
)||
\
([
-f
../../sim/tsim/log/taoslog0.0
]
&&
grep
-q
'script.*'
$case
'.*failed.*, err.*lineNum'
../../sim/tsim/log/taoslog0.0
&&
echo
-e
"
${
RED
}
failed
${
NC
}
"
|
tee
-a
out.log
||
echo
-e
"
${
GREEN
}
success
${
NC
}
"
|
tee
-a
out.log
)||
\
([
-f
../../sim/tsim/log/taoslog0.0
]
&&
grep
-q
'script.*success.*m$'
../../sim/tsim/log/taoslog0.0
&&
echo
-e
"
${
GREEN
}
success
${
NC
}
"
|
tee
-a
out.log
)
||
\
([
-f
../../sim/tsim/log/taoslog0.0
]
&&
grep
-q
'script.*success.*m$'
../../sim/tsim/log/taoslog0.0
&&
echo
-e
"
${
GREEN
}
success
${
NC
}
"
|
tee
-a
out.log
)
||
\
(
echo
-e
"
${
RED
}
failed
${
NC
}
"
|
tee
-a
out.log
&&
echo
'=====================log====================='
&&
pwd
&&
cat
../../sim/case.log
)
(
echo
-e
"
${
RED
}
failed
${
NC
}
"
|
tee
-a
out.log
&&
echo
'=====================log====================='
&&
pwd
&&
cat
../../sim/case.log
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录