Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
王长生-AnH
TDengine
提交
0146c627
T
TDengine
项目概览
王长生-AnH
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
5
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0146c627
编写于
12月 18, 2020
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/develop' into feature/wal
上级
8ff09041
5986847b
变更
28
展开全部
显示空白变更内容
内联
并排
Showing
28 changed file
with
499 addition
and
409 deletion
+499
-409
.appveyor.yml
.appveyor.yml
+2
-0
src/client/inc/tscLog.h
src/client/inc/tscLog.h
+9
-9
src/client/inc/tsclient.h
src/client/inc/tsclient.h
+1
-1
src/client/src/tscAsync.c
src/client/src/tscAsync.c
+5
-1
src/client/src/tscFunctionImpl.c
src/client/src/tscFunctionImpl.c
+26
-30
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+2
-3
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+45
-52
src/client/src/tscServer.c
src/client/src/tscServer.c
+3
-3
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+10
-10
src/common/inc/tglobal.h
src/common/inc/tglobal.h
+3
-3
src/common/inc/tulog.h
src/common/inc/tulog.h
+1
-1
src/common/src/tglobal.c
src/common/src/tglobal.c
+10
-11
src/kit/shell/inc/shell.h
src/kit/shell/inc/shell.h
+1
-1
src/kit/shell/src/shellEngine.c
src/kit/shell/src/shellEngine.c
+21
-9
src/kit/shell/src/shellMain.c
src/kit/shell/src/shellMain.c
+28
-4
src/os/inc/osMemory.h
src/os/inc/osMemory.h
+1
-1
src/query/inc/qExecutor.h
src/query/inc/qExecutor.h
+1
-1
src/query/inc/qSqlparser.h
src/query/inc/qSqlparser.h
+23
-23
src/query/inc/queryLog.h
src/query/inc/queryLog.h
+8
-8
src/query/inc/sql.y
src/query/inc/sql.y
+1
-1
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+64
-67
src/query/src/qParserImpl.c
src/query/src/qParserImpl.c
+55
-55
src/query/src/sql.c
src/query/src/sql.c
+99
-77
src/rpc/inc/rpcLog.h
src/rpc/inc/rpcLog.h
+1
-1
src/util/src/ttimer.c
src/util/src/ttimer.c
+1
-1
tests/pytest/query/queryError.py
tests/pytest/query/queryError.py
+9
-0
tests/pytest/test.py
tests/pytest/test.py
+15
-3
tests/pytest/util/dnodes.py
tests/pytest/util/dnodes.py
+54
-33
未找到文件。
.appveyor.yml
浏览文件 @
0146c627
...
...
@@ -3,6 +3,7 @@ os: Visual Studio 2015
environment
:
matrix
:
-
ARCH
:
amd64
-
ARCH
:
x86
clone_folder
:
c:\dev\TDengine
clone_depth
:
1
...
...
@@ -23,6 +24,7 @@ notifications:
-
provider
:
Email
to
:
-
sangshuduo@gmail.com
on_build_success
:
true
on_build_failure
:
true
on_build_status_changed
:
true
src/client/inc/tscLog.h
浏览文件 @
0146c627
...
...
@@ -22,16 +22,16 @@ extern "C" {
#include "tlog.h"
extern
int32_t
cDebugFlag
;
extern
int32_t
tscEmbedded
;
extern
u
int32_t
cDebugFlag
;
extern
u
int32_t
tscEmbedded
;
#define tscFatal(...)
{ if (cDebugFlag & DEBUG_FATAL) { taosPrintLog("TSC FATAL ", tscEmbedded ? 255 : cDebugFlag, __VA_ARGS__); }}
#define tscError(...)
{ if (cDebugFlag & DEBUG_ERROR) { taosPrintLog("TSC ERROR ", tscEmbedded ? 255 : cDebugFlag, __VA_ARGS__); }}
#define tscWarn(...)
{ if (cDebugFlag & DEBUG_WARN) { taosPrintLog("TSC WARN ", tscEmbedded ? 255 : cDebugFlag, __VA_ARGS__); }}
#define tscInfo(...)
{ if (cDebugFlag & DEBUG_INFO) { taosPrintLog("TSC ", tscEmbedded ? 255 : cDebugFlag, __VA_ARGS__); }}
#define tscDebug(...)
{ if (cDebugFlag & DEBUG_DEBUG) { taosPrintLog("TSC ", cDebugFlag, __VA_ARGS__); }}
#define tscTrace(...)
{ if (cDebugFlag & DEBUG_TRACE) { taosPrintLog("TSC ", cDebugFlag, __VA_ARGS__); }}
#define tscDebugL(...)
{ if (cDebugFlag & DEBUG_DEBUG) { taosPrintLongString("TSC ", cDebugFlag, __VA_ARGS__); }}
#define tscFatal(...)
do { if (cDebugFlag & DEBUG_FATAL) { taosPrintLog("TSC FATAL ", tscEmbedded ? 255 : cDebugFlag, __VA_ARGS__); }} while(0)
#define tscError(...)
do { if (cDebugFlag & DEBUG_ERROR) { taosPrintLog("TSC ERROR ", tscEmbedded ? 255 : cDebugFlag, __VA_ARGS__); }} while(0)
#define tscWarn(...)
do { if (cDebugFlag & DEBUG_WARN) { taosPrintLog("TSC WARN ", tscEmbedded ? 255 : cDebugFlag, __VA_ARGS__); }} while(0)
#define tscInfo(...)
do { if (cDebugFlag & DEBUG_INFO) { taosPrintLog("TSC ", tscEmbedded ? 255 : cDebugFlag, __VA_ARGS__); }} while(0)
#define tscDebug(...)
do { if (cDebugFlag & DEBUG_DEBUG) { taosPrintLog("TSC ", cDebugFlag, __VA_ARGS__); }} while(0)
#define tscTrace(...)
do { if (cDebugFlag & DEBUG_TRACE) { taosPrintLog("TSC ", cDebugFlag, __VA_ARGS__); }} while(0)
#define tscDebugL(...)
do { if (cDebugFlag & DEBUG_DEBUG) { taosPrintLongString("TSC ", cDebugFlag, __VA_ARGS__); }} while(0)
#ifdef __cplusplus
}
...
...
src/client/inc/tsclient.h
浏览文件 @
0146c627
...
...
@@ -229,7 +229,7 @@ typedef struct {
int32_t
numOfTablesInSubmit
;
};
int32_t
insertType
;
uint32_t
insertType
;
int32_t
clauseIndex
;
// index of multiple subclause query
char
*
curSql
;
// current sql, resume position of sql after parsing paused
...
...
src/client/src/tscAsync.c
浏览文件 @
0146c627
...
...
@@ -381,6 +381,7 @@ void tscQueueAsyncError(void(*fp), void *param, int32_t code) {
taosScheduleTask
(
tscQhandle
,
&
schedMsg
);
}
void
tscQueueAsyncRes
(
SSqlObj
*
pSql
)
{
if
(
pSql
==
NULL
||
pSql
->
signature
!=
pSql
)
{
tscDebug
(
"%p SqlObj is freed, not add into queue async res"
,
pSql
);
...
...
@@ -390,7 +391,10 @@ void tscQueueAsyncRes(SSqlObj *pSql) {
tscError
(
"%p add into queued async res, code:%s"
,
pSql
,
tstrerror
(
pSql
->
res
.
code
));
SSqlRes
*
pRes
=
&
pSql
->
res
;
assert
(
pSql
->
fp
!=
NULL
&&
pSql
->
fetchFp
!=
NULL
);
if
(
pSql
->
fp
==
NULL
||
pSql
->
fetchFp
==
NULL
){
return
;
}
pSql
->
fp
=
pSql
->
fetchFp
;
(
*
pSql
->
fp
)(
pSql
->
param
,
pSql
,
pRes
->
code
);
...
...
src/client/src/tscFunctionImpl.c
浏览文件 @
0146c627
...
...
@@ -48,7 +48,7 @@
break; \
} \
GET_RES_INFO(ctx)->numOfRes = (res); \
} while (0)
;
} while (0)
#define INC_INIT_VAL(ctx, res) (GET_RES_INFO(ctx)->numOfRes += (res));
...
...
@@ -482,17 +482,16 @@ int32_t no_data_info(SQLFunctionCtx *pCtx, TSKEY start, TSKEY end, int32_t colId
DO_UPDATE_TAG_COLUMNS(ctx, k); \
(num) += 1; \
} \
} while (0)
;
} while (0)
#define DUPATE_DATA_WITHOUT_TS(ctx, left, right, num, sign) \
do {
\
do {
\
if (((left) < (right)) ^ (sign)) { \
(left) = (right); \
DO_UPDATE_TAG_COLUMNS_WITHOUT_TS(ctx); \
(num) += 1; \
} \
} while (0);
} while (0)
#define LOOPCHECK_N(val, list, ctx, tsdbType, sign, num) \
for (int32_t i = 0; i < ((ctx)->size); ++i) { \
...
...
@@ -709,15 +708,14 @@ static int32_t firstDistFuncRequired(SQLFunctionCtx *pCtx, TSKEY start, TSKEY en
return
BLK_DATA_ALL_NEEDED
;
}
// the pCtx should be set to current Ctx and output buffer before call this function. Otherwise, pCtx->aOutputBuf is
// the previous windowRes output buffer, not current unloaded block. In this case, the following filter is invalid
SFirstLastInfo
*
pInfo
=
(
SFirstLastInfo
*
)
(
pCtx
->
aOutputBuf
+
pCtx
->
inputBytes
);
if
(
pInfo
->
hasResult
!=
DATA_SET_FLAG
)
{
return
BLK_DATA_ALL_NEEDED
;
// TODO pCtx->aOutputBuf is the previous windowRes output buffer, not current unloaded block. so the following filter
// is invalid
// SFirstLastInfo *pInfo = (SFirstLastInfo*) (pCtx->aOutputBuf + pCtx->inputBytes);
// if (pInfo->hasResult != DATA_SET_FLAG) {
// return BLK_DATA_ALL_NEEDED;
// } else { // data in current block is not earlier than current result
// return (pInfo->ts <= start) ? BLK_DATA_NO_NEEDED : BLK_DATA_ALL_NEEDED;
// }
}
else
{
// data in current block is not earlier than current result
return
(
pInfo
->
ts
<=
start
)
?
BLK_DATA_NO_NEEDED
:
BLK_DATA_ALL_NEEDED
;
}
}
static
int32_t
lastDistFuncRequired
(
SQLFunctionCtx
*
pCtx
,
TSKEY
start
,
TSKEY
end
,
int32_t
colId
)
{
...
...
@@ -730,16 +728,14 @@ static int32_t lastDistFuncRequired(SQLFunctionCtx *pCtx, TSKEY start, TSKEY end
return
BLK_DATA_ALL_NEEDED
;
}
// the pCtx should be set to current Ctx and output buffer before call this function. Otherwise, pCtx->aOutputBuf is
// the previous windowRes output buffer, not current unloaded block. In this case, the following filter is invalid
SFirstLastInfo
*
pInfo
=
(
SFirstLastInfo
*
)
(
pCtx
->
aOutputBuf
+
pCtx
->
inputBytes
);
if
(
pInfo
->
hasResult
!=
DATA_SET_FLAG
)
{
return
BLK_DATA_ALL_NEEDED
;
// TODO pCtx->aOutputBuf is the previous windowRes output buffer, not current unloaded block. so the following filter
// is invalid
// SFirstLastInfo *pInfo = (SFirstLastInfo*) (pCtx->aOutputBuf + pCtx->inputBytes);
// if (pInfo->hasResult != DATA_SET_FLAG) {
// return BLK_DATA_ALL_NEEDED;
// } else {
// return (pInfo->ts > end) ? BLK_DATA_NO_NEEDED : BLK_DATA_ALL_NEEDED;
// }
}
else
{
return
(
pInfo
->
ts
>
end
)
?
BLK_DATA_NO_NEEDED
:
BLK_DATA_ALL_NEEDED
;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
...
...
@@ -1909,7 +1905,7 @@ static void valuePairAssign(tValuePair *dst, int16_t type, const char *val, int6
(dst)->timestamp = (src)->timestamp; \
(dst)->v = (src)->v; \
memcpy((dst)->pTags, (src)->pTags, (size_t)(__l)); \
} while (0)
;
} while (0)
static
void
do_top_function_add
(
STopBotInfo
*
pInfo
,
int32_t
maxLen
,
void
*
pData
,
int64_t
ts
,
uint16_t
type
,
SExtTagsInfo
*
pTagInfo
,
char
*
pTags
,
int16_t
stage
)
{
...
...
@@ -2885,7 +2881,7 @@ static void leastsquares_function_f(SQLFunctionCtx *pCtx, int32_t index) {
int32_t
*
p
=
pData
;
LEASTSQR_CAL
(
param
,
pInfo
->
startVal
,
p
,
0
,
pCtx
->
param
[
1
].
dKey
);
break
;
}
;
}
case
TSDB_DATA_TYPE_TINYINT
:
{
int8_t
*
p
=
pData
;
LEASTSQR_CAL
(
param
,
pInfo
->
startVal
,
p
,
0
,
pCtx
->
param
[
1
].
dKey
);
...
...
src/client/src/tscParseInsert.c
浏览文件 @
0146c627
...
...
@@ -1292,7 +1292,6 @@ int tsInsertInitialCheck(SSqlObj *pSql) {
pCmd
->
count
=
0
;
pCmd
->
command
=
TSDB_SQL_INSERT
;
pSql
->
res
.
numOfRows
=
0
;
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetailSafely
(
pCmd
,
pCmd
->
clauseIndex
);
...
...
@@ -1357,7 +1356,7 @@ int tsParseSql(SSqlObj *pSql, bool initial) {
ret
=
tscToSQLCmd
(
pSql
,
&
SQLInfo
);
}
S
QL
InfoDestroy
(
&
SQLInfo
);
S
ql
InfoDestroy
(
&
SQLInfo
);
}
/*
...
...
@@ -1523,7 +1522,7 @@ void tscProcessMultiVnodesImportFromFile(SSqlObj *pSql) {
pSql
->
res
.
code
=
TAOS_SYSTEM_ERROR
(
errno
);
tscError
(
"%p failed to open file %s to load data from file, code:%s"
,
pSql
,
pCmd
->
payload
,
tstrerror
(
pSql
->
res
.
code
));
tfree
(
pSupporter
)
tfree
(
pSupporter
)
;
tscQueueAsyncRes
(
pSql
);
return
;
...
...
src/client/src/tscSQLParser.c
浏览文件 @
0146c627
...
...
@@ -66,9 +66,9 @@ static bool validateTagParams(SArray* pTagsList, SArray* pFieldList, SSqlCmd* pC
static
int32_t
setObjFullName
(
char
*
fullName
,
const
char
*
account
,
SStrToken
*
pDB
,
SStrToken
*
tableName
,
int32_t
*
len
);
static
void
getColumnName
(
tS
QL
ExprItem
*
pItem
,
char
*
resultFieldName
,
int32_t
nameLength
);
static
void
getColumnName
(
tS
ql
ExprItem
*
pItem
,
char
*
resultFieldName
,
int32_t
nameLength
);
static
int32_t
addExprAndResultField
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
int32_t
colIndex
,
tS
QL
ExprItem
*
pItem
,
bool
finalResult
);
static
int32_t
addExprAndResultField
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
int32_t
colIndex
,
tS
ql
ExprItem
*
pItem
,
bool
finalResult
);
static
int32_t
insertResultField
(
SQueryInfo
*
pQueryInfo
,
int32_t
outputIndex
,
SColumnList
*
pIdList
,
int16_t
bytes
,
int8_t
type
,
char
*
fieldName
,
SSqlExpr
*
pSqlExpr
);
...
...
@@ -87,7 +87,7 @@ static int32_t parseIntervalClause(SSqlObj* pSql, SQueryInfo* pQueryInfo, SQuery
static
int32_t
parseOffsetClause
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
SQuerySQL
*
pQuerySql
);
static
int32_t
parseSlidingClause
(
SSqlObj
*
pSql
,
SQueryInfo
*
pQueryInfo
,
SQuerySQL
*
pQuerySql
);
static
int32_t
addProjectionExprAndResultField
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tS
QL
ExprItem
*
pItem
);
static
int32_t
addProjectionExprAndResultField
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tS
ql
ExprItem
*
pItem
);
static
int32_t
parseWhereClause
(
SQueryInfo
*
pQueryInfo
,
tSQLExpr
**
pExpr
,
SSqlObj
*
pSql
);
static
int32_t
parseFillClause
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
SQuerySQL
*
pQuerySQL
);
...
...
@@ -1279,7 +1279,7 @@ static void tscInsertPrimaryTSSourceColumn(SQueryInfo* pQueryInfo, SColumnIndex*
tscColumnListInsert
(
pQueryInfo
->
colList
,
&
tsCol
);
}
static
int32_t
handleArithmeticExpr
(
SSqlCmd
*
pCmd
,
int32_t
clauseIndex
,
int32_t
exprIndex
,
tS
QL
ExprItem
*
pItem
)
{
static
int32_t
handleArithmeticExpr
(
SSqlCmd
*
pCmd
,
int32_t
clauseIndex
,
int32_t
exprIndex
,
tS
ql
ExprItem
*
pItem
)
{
const
char
*
msg1
=
"invalid column name, illegal column type, or columns in arithmetic expression from two tables"
;
const
char
*
msg2
=
"invalid arithmetic expression in select clause"
;
const
char
*
msg3
=
"tag columns can not be used in arithmetic expression"
;
...
...
@@ -1420,7 +1420,7 @@ static int32_t handleArithmeticExpr(SSqlCmd* pCmd, int32_t clauseIndex, int32_t
return
TSDB_CODE_SUCCESS
;
}
static
void
addProjectQueryCol
(
SQueryInfo
*
pQueryInfo
,
int32_t
startPos
,
SColumnIndex
*
pIndex
,
tS
QL
ExprItem
*
pItem
)
{
static
void
addProjectQueryCol
(
SQueryInfo
*
pQueryInfo
,
int32_t
startPos
,
SColumnIndex
*
pIndex
,
tS
ql
ExprItem
*
pItem
)
{
SSqlExpr
*
pExpr
=
doAddProjectCol
(
pQueryInfo
,
pIndex
->
columnIndex
,
pIndex
->
tableIndex
);
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
pIndex
->
tableIndex
);
...
...
@@ -1484,7 +1484,7 @@ int32_t parseSelectClause(SSqlCmd* pCmd, int32_t clauseIndex, tSQLExprList* pSel
for
(
int32_t
i
=
0
;
i
<
pSelection
->
nExpr
;
++
i
)
{
int32_t
outputIndex
=
(
int32_t
)
tscSqlExprNumOfExprs
(
pQueryInfo
);
tS
QL
ExprItem
*
pItem
=
&
pSelection
->
a
[
i
];
tS
ql
ExprItem
*
pItem
=
&
pSelection
->
a
[
i
];
// project on all fields
int32_t
optr
=
pItem
->
pNode
->
nSQLOptr
;
...
...
@@ -1643,7 +1643,7 @@ static int32_t doAddProjectionExprAndResultFields(SQueryInfo* pQueryInfo, SColum
return
numOfTotalColumns
;
}
int32_t
addProjectionExprAndResultField
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tS
QL
ExprItem
*
pItem
)
{
int32_t
addProjectionExprAndResultField
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
tS
ql
ExprItem
*
pItem
)
{
const
char
*
msg0
=
"invalid column name"
;
const
char
*
msg1
=
"tag for normal table query is not allowed"
;
...
...
@@ -1767,7 +1767,7 @@ static int32_t setExprInfoForFunctions(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SS
return
TSDB_CODE_SUCCESS
;
}
void
setResultColName
(
char
*
name
,
tS
QL
ExprItem
*
pItem
,
int32_t
functionId
,
SStrToken
*
pToken
,
bool
multiCols
)
{
void
setResultColName
(
char
*
name
,
tS
ql
ExprItem
*
pItem
,
int32_t
functionId
,
SStrToken
*
pToken
,
bool
multiCols
)
{
if
(
pItem
->
aliasName
!=
NULL
)
{
tstrncpy
(
name
,
pItem
->
aliasName
,
TSDB_COL_NAME_LEN
);
}
else
if
(
multiCols
)
{
...
...
@@ -1790,7 +1790,7 @@ void setResultColName(char* name, tSQLExprItem* pItem, int32_t functionId, SStrT
}
}
int32_t
addExprAndResultField
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
int32_t
colIndex
,
tS
QL
ExprItem
*
pItem
,
bool
finalResult
)
{
int32_t
addExprAndResultField
(
SSqlCmd
*
pCmd
,
SQueryInfo
*
pQueryInfo
,
int32_t
colIndex
,
tS
ql
ExprItem
*
pItem
,
bool
finalResult
)
{
STableMetaInfo
*
pTableMetaInfo
=
NULL
;
int32_t
optr
=
pItem
->
pNode
->
nSQLOptr
;
...
...
@@ -1820,7 +1820,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
if
(
pItem
->
pNode
->
pParam
!=
NULL
)
{
tS
QL
ExprItem
*
pParamElem
=
&
pItem
->
pNode
->
pParam
->
a
[
0
];
tS
ql
ExprItem
*
pParamElem
=
&
pItem
->
pNode
->
pParam
->
a
[
0
];
SStrToken
*
pToken
=
&
pParamElem
->
pNode
->
colInfo
;
int16_t
sqlOptr
=
pParamElem
->
pNode
->
nSQLOptr
;
if
((
pToken
->
z
==
NULL
||
pToken
->
n
==
0
)
...
...
@@ -1921,7 +1921,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
}
tS
QL
ExprItem
*
pParamElem
=
&
(
pItem
->
pNode
->
pParam
->
a
[
0
]);
tS
ql
ExprItem
*
pParamElem
=
&
(
pItem
->
pNode
->
pParam
->
a
[
0
]);
if
(
pParamElem
->
pNode
->
nSQLOptr
!=
TK_ALL
&&
pParamElem
->
pNode
->
nSQLOptr
!=
TK_ID
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
}
...
...
@@ -2040,7 +2040,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
/* in first/last function, multiple columns can be add to resultset */
for
(
int32_t
i
=
0
;
i
<
pItem
->
pNode
->
pParam
->
nExpr
;
++
i
)
{
tS
QL
ExprItem
*
pParamElem
=
&
(
pItem
->
pNode
->
pParam
->
a
[
i
]);
tS
ql
ExprItem
*
pParamElem
=
&
(
pItem
->
pNode
->
pParam
->
a
[
i
]);
if
(
pParamElem
->
pNode
->
nSQLOptr
!=
TK_ALL
&&
pParamElem
->
pNode
->
nSQLOptr
!=
TK_ID
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg3
);
}
...
...
@@ -2153,7 +2153,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
}
tS
QL
ExprItem
*
pParamElem
=
&
(
pItem
->
pNode
->
pParam
->
a
[
0
]);
tS
ql
ExprItem
*
pParamElem
=
&
(
pItem
->
pNode
->
pParam
->
a
[
0
]);
if
(
pParamElem
->
pNode
->
nSQLOptr
!=
TK_ID
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
}
...
...
@@ -2353,7 +2353,7 @@ static SColumnList getColumnList(int32_t num, int16_t tableIndex, int32_t column
return
columnList
;
}
void
getColumnName
(
tS
QL
ExprItem
*
pItem
,
char
*
resultFieldName
,
int32_t
nameLength
)
{
void
getColumnName
(
tS
ql
ExprItem
*
pItem
,
char
*
resultFieldName
,
int32_t
nameLength
)
{
if
(
pItem
->
aliasName
!=
NULL
)
{
strncpy
(
resultFieldName
,
pItem
->
aliasName
,
nameLength
);
}
else
{
...
...
@@ -3520,7 +3520,7 @@ static int32_t validateSQLExpr(SSqlCmd* pCmd, tSQLExpr* pExpr, SQueryInfo* pQuer
int32_t
outputIndex
=
(
int32_t
)
tscSqlExprNumOfExprs
(
pQueryInfo
);
tS
QL
ExprItem
item
=
{.
pNode
=
pExpr
,
.
aliasName
=
NULL
};
tS
ql
ExprItem
item
=
{.
pNode
=
pExpr
,
.
aliasName
=
NULL
};
// sql function list in selection clause.
// Append the sqlExpr into exprList of pQueryInfo structure sequentially
...
...
@@ -3737,7 +3737,7 @@ static int32_t setExprToCond(tSQLExpr** parent, tSQLExpr* pExpr, const char* msg
return
invalidSqlErrMsg
(
msgBuf
,
msg
);
}
*
parent
=
tS
QL
ExprCreate
((
*
parent
),
pExpr
,
parentOptr
);
*
parent
=
tS
ql
ExprCreate
((
*
parent
),
pExpr
,
parentOptr
);
}
else
{
*
parent
=
pExpr
;
}
...
...
@@ -3785,7 +3785,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSQL
* to release expression, e.g., m1.ts = m2.ts,
* since this expression is used to set the join query type
*/
tS
QL
ExprDestroy
(
*
pExpr
);
tS
ql
ExprDestroy
(
*
pExpr
);
}
else
{
ret
=
setExprToCond
(
&
pCondExpr
->
pTimewindow
,
*
pExpr
,
msg3
,
parentOptr
,
pQueryInfo
->
msg
);
}
...
...
@@ -3931,17 +3931,17 @@ static void doCompactQueryExpr(tSQLExpr** pExpr) {
if
((
*
pExpr
)
->
pLeft
==
NULL
&&
(
*
pExpr
)
->
pRight
==
NULL
&&
((
*
pExpr
)
->
nSQLOptr
==
TK_OR
||
(
*
pExpr
)
->
nSQLOptr
==
TK_AND
))
{
tS
QL
ExprNodeDestroy
(
*
pExpr
);
tS
ql
ExprNodeDestroy
(
*
pExpr
);
*
pExpr
=
NULL
;
}
else
if
((
*
pExpr
)
->
pLeft
==
NULL
&&
(
*
pExpr
)
->
pRight
!=
NULL
)
{
tSQLExpr
*
tmpPtr
=
(
*
pExpr
)
->
pRight
;
tS
QL
ExprNodeDestroy
(
*
pExpr
);
tS
ql
ExprNodeDestroy
(
*
pExpr
);
(
*
pExpr
)
=
tmpPtr
;
}
else
if
((
*
pExpr
)
->
pRight
==
NULL
&&
(
*
pExpr
)
->
pLeft
!=
NULL
)
{
tSQLExpr
*
tmpPtr
=
(
*
pExpr
)
->
pLeft
;
tS
QL
ExprNodeDestroy
(
*
pExpr
);
tS
ql
ExprNodeDestroy
(
*
pExpr
);
(
*
pExpr
)
=
tmpPtr
;
}
...
...
@@ -3964,7 +3964,7 @@ static void doExtractExprForSTable(SSqlCmd* pCmd, tSQLExpr** pExpr, SQueryInfo*
(
*
pExpr
)
=
NULL
;
}
else
{
*
pOut
=
tS
QL
ExprCreate
(
NULL
,
NULL
,
(
*
pExpr
)
->
nSQLOptr
);
*
pOut
=
tS
ql
ExprCreate
(
NULL
,
NULL
,
(
*
pExpr
)
->
nSQLOptr
);
doExtractExprForSTable
(
pCmd
,
&
(
*
pExpr
)
->
pLeft
,
pQueryInfo
,
&
((
*
pOut
)
->
pLeft
),
tableIndex
);
doExtractExprForSTable
(
pCmd
,
&
(
*
pExpr
)
->
pRight
,
pQueryInfo
,
&
((
*
pOut
)
->
pRight
),
tableIndex
);
...
...
@@ -4171,23 +4171,23 @@ static int32_t validateJoinExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCondExpr
static
void
cleanQueryExpr
(
SCondExpr
*
pCondExpr
)
{
if
(
pCondExpr
->
pTableCond
)
{
tS
QL
ExprDestroy
(
pCondExpr
->
pTableCond
);
tS
ql
ExprDestroy
(
pCondExpr
->
pTableCond
);
}
if
(
pCondExpr
->
pTagCond
)
{
tS
QL
ExprDestroy
(
pCondExpr
->
pTagCond
);
tS
ql
ExprDestroy
(
pCondExpr
->
pTagCond
);
}
if
(
pCondExpr
->
pColumnCond
)
{
tS
QL
ExprDestroy
(
pCondExpr
->
pColumnCond
);
tS
ql
ExprDestroy
(
pCondExpr
->
pColumnCond
);
}
if
(
pCondExpr
->
pTimewindow
)
{
tS
QL
ExprDestroy
(
pCondExpr
->
pTimewindow
);
tS
ql
ExprDestroy
(
pCondExpr
->
pTimewindow
);
}
if
(
pCondExpr
->
pJoinExpr
)
{
tS
QL
ExprDestroy
(
pCondExpr
->
pJoinExpr
);
tS
ql
ExprDestroy
(
pCondExpr
->
pJoinExpr
);
}
}
...
...
@@ -4256,7 +4256,7 @@ static int32_t getTagQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SCondE
tsSetSTableQueryCond
(
&
pQueryInfo
->
tagCond
,
uid
,
&
bw
);
doCompactQueryExpr
(
pExpr
);
tS
QL
ExprDestroy
(
p1
);
tS
ql
ExprDestroy
(
p1
);
tExprTreeDestroy
(
&
p
,
NULL
);
taosArrayDestroy
(
colList
);
...
...
@@ -6369,14 +6369,13 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
assert
(
pQuerySql
!=
NULL
&&
(
pQuerySql
->
from
==
NULL
||
taosArrayGetSize
(
pQuerySql
->
from
)
>
0
));
const
char
*
msg0
=
"invalid table name"
;
const
char
*
msg2
=
"point interpolation query needs timestamp"
;
const
char
*
msg5
=
"fill only available for interval query"
;
const
char
*
msg6
=
"start(end) time of query range required or time range too large"
;
const
char
*
msg7
=
"illegal number of tables in from clause"
;
const
char
*
msg8
=
"too many columns in selection clause"
;
const
char
*
msg9
=
"TWA query requires both the start and end time"
;
const
char
*
msg10
=
"too many tables in from clause"
;
const
char
*
msg11
=
"invalid table alias name"
;
const
char
*
msg1
=
"point interpolation query needs timestamp"
;
const
char
*
msg2
=
"fill only available for interval query"
;
const
char
*
msg3
=
"start(end) time of query range required or time range too large"
;
const
char
*
msg4
=
"illegal number of tables in from clause"
;
const
char
*
msg5
=
"too many columns in selection clause"
;
const
char
*
msg6
=
"too many tables in from clause"
;
const
char
*
msg7
=
"invalid table alias name"
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
...
...
@@ -6392,7 +6391,7 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
// too many result columns not support order by in query
if
(
pQuerySql
->
pSelection
->
nExpr
>
TSDB_MAX_COLUMNS
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
8
);
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
5
);
}
/*
...
...
@@ -6410,13 +6409,13 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
size_t
fromSize
=
taosArrayGetSize
(
pQuerySql
->
from
);
if
(
fromSize
>
TSDB_MAX_JOIN_TABLE_NUM
*
2
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
7
);
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
4
);
}
pQueryInfo
->
command
=
TSDB_SQL_SELECT
;
if
(
fromSize
>
4
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
10
);
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
6
);
}
// set all query tables, which are maybe more than one.
...
...
@@ -6449,12 +6448,12 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
tVariantListItem
*
p1
=
taosArrayGet
(
pQuerySql
->
from
,
i
+
1
);
if
(
p1
->
pVar
.
nType
!=
TSDB_DATA_TYPE_BINARY
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
11
);
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
7
);
}
SStrToken
aliasName
=
{.
z
=
p1
->
pVar
.
pz
,
.
n
=
p1
->
pVar
.
nLen
,
.
type
=
TK_STRING
};
if
(
tscValidateName
(
&
aliasName
)
!=
TSDB_CODE_SUCCESS
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
11
);
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
7
);
}
// has no table alias name
...
...
@@ -6532,12 +6531,6 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
}
}
// user does not specified the query time window, twa is not allowed in such case.
if
((
pQueryInfo
->
window
.
skey
==
INT64_MIN
||
pQueryInfo
->
window
.
ekey
==
INT64_MAX
||
(
pQueryInfo
->
window
.
ekey
==
INT64_MAX
/
1000
&&
tinfo
.
precision
==
TSDB_TIME_PRECISION_MILLI
))
&&
tscIsTWAQuery
(
pQueryInfo
))
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg9
);
}
// no result due to invalid query time range
if
(
pQueryInfo
->
window
.
skey
>
pQueryInfo
->
window
.
ekey
)
{
pQueryInfo
->
command
=
TSDB_SQL_RETRIEVE_EMPTY_RESULT
;
...
...
@@ -6545,7 +6538,7 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
}
if
(
!
hasTimestampForPointInterpQuery
(
pQueryInfo
))
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
2
);
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
1
);
}
// in case of join query, time range is required.
...
...
@@ -6553,7 +6546,7 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
int64_t
timeRange
=
ABS
(
pQueryInfo
->
window
.
skey
-
pQueryInfo
->
window
.
ekey
);
if
(
timeRange
==
0
&&
pQueryInfo
->
window
.
skey
==
0
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
6
);
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
3
);
}
}
...
...
@@ -6573,19 +6566,19 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
*/
if
(
pQuerySql
->
fillType
!=
NULL
)
{
if
(
pQueryInfo
->
interval
.
interval
==
0
&&
(
!
tscIsPointInterpQuery
(
pQueryInfo
)))
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
5
);
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
2
);
}
if
(
pQueryInfo
->
interval
.
interval
>
0
)
{
bool
initialWindows
=
TSWINDOW_IS_EQUAL
(
pQueryInfo
->
window
,
TSWINDOW_INITIALIZER
);
if
(
initialWindows
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
6
);
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
3
);
}
int64_t
timeRange
=
ABS
(
pQueryInfo
->
window
.
skey
-
pQueryInfo
->
window
.
ekey
);
// number of result is not greater than 10,000,000
if
((
timeRange
==
0
)
||
(
timeRange
/
pQueryInfo
->
interval
.
interval
)
>
MAX_INTERVAL_TIME_WINDOW
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
6
);
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
3
);
}
}
...
...
src/client/src/tscServer.c
浏览文件 @
0146c627
...
...
@@ -1267,14 +1267,14 @@ int32_t tscBuildKillMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
return
TSDB_CODE_SUCCESS
;
}
// TODO update it
int
tscEstimateCreateTableMsgLength
(
SSqlObj
*
pSql
,
SSqlInfo
*
pInfo
)
{
SSqlCmd
*
pCmd
=
&
(
pSql
->
cmd
);
int32_t
size
=
minMsgSize
()
+
sizeof
(
SCMCreateTableMsg
)
+
sizeof
(
SCreate
dTableInfo
);
int32_t
size
=
minMsgSize
()
+
sizeof
(
SCMCreateTableMsg
)
+
sizeof
(
SCreate
TableMsg
);
SCreateTableSQL
*
pCreateTableInfo
=
pInfo
->
pCreateTableInfo
;
if
(
pCreateTableInfo
->
type
==
TSQL_CREATE_TABLE_FROM_STABLE
)
{
size
+=
sizeof
(
STagData
);
int32_t
numOfTables
=
(
int32_t
)
taosArrayGetSize
(
pInfo
->
pCreateTableInfo
->
childTableInfo
);
size
+=
numOfTables
*
(
sizeof
(
SCreateTableMsg
)
+
TSDB_MAX_TAGS_LEN
);
}
else
{
size
+=
sizeof
(
SSchema
)
*
(
pCmd
->
numOfCols
+
pCmd
->
count
);
}
...
...
src/client/src/tscSubquery.c
浏览文件 @
0146c627
...
...
@@ -384,7 +384,7 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) {
}
SQueryInfo
*
pSubQueryInfo
=
tscGetQueryInfoDetail
(
&
pPrevSub
->
cmd
,
0
);
STSBuf
*
pTS
Buf
=
pSubQueryInfo
->
tsBuf
;
STSBuf
*
pTs
Buf
=
pSubQueryInfo
->
tsBuf
;
pSubQueryInfo
->
tsBuf
=
NULL
;
// free result for async object will also free sqlObj
...
...
@@ -402,7 +402,7 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) {
pSql
->
pSubs
[
i
]
=
pNew
;
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
&
pNew
->
cmd
,
0
);
pQueryInfo
->
tsBuf
=
pT
S
Buf
;
// transfer the ownership of timestamp comp-z data to the new created object
pQueryInfo
->
tsBuf
=
pT
s
Buf
;
// transfer the ownership of timestamp comp-z data to the new created object
// set the second stage sub query for join process
TSDB_QUERY_SET_TYPE
(
pQueryInfo
->
type
,
TSDB_QUERY_TYPE_JOIN_SEC_STAGE
);
...
...
@@ -1648,7 +1648,7 @@ int32_t tscHandleMasterSTableQuery(SSqlObj *pSql) {
pRes
->
qhandle
=
0x1
;
// hack the qhandle check
const
uint32_t
nBufferSize
=
(
1u
<<
16
);
// 64KB
const
uint32_t
nBufferSize
=
(
1u
<<
16
u
);
// 64KB
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
pCmd
->
clauseIndex
);
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
...
...
@@ -2151,7 +2151,7 @@ void tscRetrieveDataRes(void *param, TAOS_RES *tres, int code) {
static
bool
needRetryInsert
(
SSqlObj
*
pParentObj
,
int32_t
numOfSub
)
{
if
(
pParentObj
->
retry
>
pParentObj
->
maxRetry
)
{
tscError
(
"%p max retry reached, abort the retry effort"
,
pParentObj
)
tscError
(
"%p max retry reached, abort the retry effort"
,
pParentObj
)
;
return
false
;
}
...
...
@@ -2501,12 +2501,12 @@ void tscBuildResFromSubqueries(SSqlObj *pSql) {
tscRestoreSQLFuncForSTableQuery
(
pQueryInfo
);
}
while
(
1
)
{
assert
(
pRes
->
row
>=
pRes
->
numOfRows
);
doBuildResFromSubqueries
(
pSql
);
tsem_post
(
&
pSql
->
rspSem
);
return
;
if
(
pRes
->
code
==
TSDB_CODE_SUCCESS
)
{
(
*
pSql
->
fp
)(
pSql
->
param
,
pSql
,
pRes
->
numOfRows
);
}
else
{
tscQueueAsyncRes
(
pSql
);
}
}
...
...
src/common/inc/tglobal.h
浏览文件 @
0146c627
...
...
@@ -134,7 +134,7 @@ extern int32_t tsEnableStream;
// internal
extern
int32_t
tsPrintAuth
;
extern
int32_t
tscEmbedded
;
extern
u
int32_t
tscEmbedded
;
extern
char
configDir
[];
extern
char
tsVnodeDir
[];
extern
char
tsDnodeDir
[];
...
...
@@ -177,7 +177,7 @@ extern int32_t tsLogKeepDays;
extern
int32_t
dDebugFlag
;
extern
int32_t
vDebugFlag
;
extern
int32_t
mDebugFlag
;
extern
int32_t
cDebugFlag
;
extern
u
int32_t
cDebugFlag
;
extern
int32_t
jniDebugFlag
;
extern
int32_t
tmrDebugFlag
;
extern
int32_t
sdbDebugFlag
;
...
...
@@ -187,7 +187,7 @@ extern int32_t monDebugFlag;
extern
int32_t
uDebugFlag
;
extern
int32_t
rpcDebugFlag
;
extern
int32_t
odbcDebugFlag
;
extern
int32_t
qDebugFlag
;
extern
u
int32_t
qDebugFlag
;
extern
int32_t
wDebugFlag
;
extern
int32_t
cqDebugFlag
;
extern
int32_t
debugFlag
;
...
...
src/common/inc/tulog.h
浏览文件 @
0146c627
...
...
@@ -23,7 +23,7 @@ extern "C" {
#include "tlog.h"
extern
int32_t
uDebugFlag
;
extern
int32_t
tscEmbedded
;
extern
u
int32_t
tscEmbedded
;
#define uFatal(...) { if (uDebugFlag & DEBUG_FATAL) { taosPrintLog("UTL FATAL", tscEmbedded ? 255 : uDebugFlag, __VA_ARGS__); }}
#define uError(...) { if (uDebugFlag & DEBUG_ERROR) { taosPrintLog("UTL ERROR ", tscEmbedded ? 255 : uDebugFlag, __VA_ARGS__); }}
...
...
src/common/src/tglobal.c
浏览文件 @
0146c627
...
...
@@ -25,7 +25,6 @@
#include "tutil.h"
#include "tlocale.h"
#include "ttimezone.h"
#include "tsync.h"
// cluster
char
tsFirst
[
TSDB_EP_LEN
]
=
{
0
};
...
...
@@ -172,7 +171,7 @@ int32_t tsEnableStream = 1;
// internal
int32_t
tsPrintAuth
=
0
;
int32_t
tscEmbedded
=
0
;
u
int32_t
tscEmbedded
=
0
;
char
configDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsVnodeDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
char
tsDnodeDir
[
TSDB_FILENAME_LEN
]
=
{
0
};
...
...
@@ -210,13 +209,13 @@ int32_t mDebugFlag = 131;
int32_t
sdbDebugFlag
=
131
;
int32_t
dDebugFlag
=
135
;
int32_t
vDebugFlag
=
135
;
int32_t
cDebugFlag
=
131
;
u
int32_t
cDebugFlag
=
131
;
int32_t
jniDebugFlag
=
131
;
int32_t
odbcDebugFlag
=
131
;
int32_t
httpDebugFlag
=
131
;
int32_t
mqttDebugFlag
=
131
;
int32_t
monDebugFlag
=
131
;
int32_t
qDebugFlag
=
131
;
u
int32_t
qDebugFlag
=
131
;
int32_t
rpcDebugFlag
=
131
;
int32_t
uDebugFlag
=
131
;
int32_t
debugFlag
=
0
;
...
...
src/kit/shell/inc/shell.h
浏览文件 @
0146c627
...
...
@@ -86,6 +86,6 @@ extern void set_terminal_mode();
extern
int
get_old_terminal_mode
(
struct
termios
*
tio
);
extern
void
reset_terminal_mode
();
extern
SShellArguments
args
;
extern
TAOS_RES
*
result
;
extern
int64_t
result
;
#endif
src/kit/shell/src/shellEngine.c
浏览文件 @
0146c627
...
...
@@ -46,7 +46,7 @@ char CONTINUE_PROMPT[] = " -> ";
int
prompt_size
=
6
;
#endif
TAOS_RES
*
result
=
NULL
;
int64_t
result
=
0
;
SShellHistory
history
;
#define DEFAULT_MAX_BINARY_DISPLAY_WIDTH 30
...
...
@@ -260,6 +260,14 @@ int32_t shellRunCommand(TAOS* con, char* command) {
}
void
freeResultWithRid
(
int64_t
rid
)
{
SSqlObj
*
pSql
=
taosAcquireRef
(
tscObjRef
,
rid
);
if
(
pSql
){
taos_free_result
(
pSql
);
taosReleaseRef
(
tscObjRef
,
rid
);
}
}
void
shellRunCommandOnServer
(
TAOS
*
con
,
char
command
[])
{
int64_t
st
,
et
;
wordexp_t
full_path
;
...
...
@@ -294,18 +302,22 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
st
=
taosGetTimestampUs
();
TAOS_RES
*
pSql
=
taos_query_h
(
con
,
command
,
&
result
);
TAOS_RES
*
tmpSql
=
NULL
;
TAOS_RES
*
pSql
=
taos_query_h
(
con
,
command
,
&
tmpSql
);
if
(
taos_errno
(
pSql
))
{
taos_error
(
pSql
,
st
);
return
;
}
atomic_store_64
(
&
result
,
((
SSqlObj
*
)
tmpSql
)
->
self
);
int64_t
oresult
=
atomic_load_64
(
&
result
);
if
(
regex_match
(
command
,
"^
\\
s*use
\\
s+[a-zA-Z0-9_]+
\\
s*;
\\
s*$"
,
REG_EXTENDED
|
REG_ICASE
))
{
fprintf
(
stdout
,
"Database changed.
\n\n
"
);
fflush
(
stdout
);
atomic_store_
ptr
(
&
result
,
0
);
taos_free_result
(
pSql
);
atomic_store_
64
(
&
result
,
0
);
freeResultWithRid
(
oresult
);
return
;
}
...
...
@@ -313,8 +325,8 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
int
error_no
=
0
;
int
numOfRows
=
shellDumpResult
(
pSql
,
fname
,
&
error_no
,
printMode
);
if
(
numOfRows
<
0
)
{
atomic_store_
ptr
(
&
result
,
0
);
taos_free_result
(
pSql
);
atomic_store_
64
(
&
result
,
0
);
freeResultWithRid
(
oresult
);
return
;
}
...
...
@@ -336,8 +348,8 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
wordfree
(
&
full_path
);
}
atomic_store_
ptr
(
&
result
,
0
);
taos_free_result
(
pSql
);
atomic_store_
64
(
&
result
,
0
);
freeResultWithRid
(
oresult
);
}
/* Function to do regular expression check */
...
...
@@ -501,7 +513,7 @@ static int dumpResultToFile(const char* fname, TAOS_RES* tres) {
row
=
taos_fetch_row
(
tres
);
}
while
(
row
!=
NULL
);
result
=
NULL
;
result
=
0
;
fclose
(
fp
);
return
numOfRows
;
...
...
src/kit/shell/src/shellMain.c
浏览文件 @
0146c627
...
...
@@ -19,15 +19,31 @@
#include "tnettest.h"
pthread_t
pid
;
static
tsem_t
cancelSem
;
void
shellQueryInterruptHandler
(
int
signum
)
{
tsem_post
(
&
cancelSem
);
}
void
*
cancelHandler
(
void
*
arg
)
{
while
(
1
)
{
if
(
tsem_wait
(
&
cancelSem
)
!=
0
)
{
taosMsleep
(
10
);
continue
;
}
#ifdef LINUX
void
*
pResHandle
=
atomic_val_compare_exchange_64
(
&
result
,
result
,
0
);
taos_stop_query
(
pResHandle
);
int64_t
rid
=
atomic_val_compare_exchange_64
(
&
result
,
result
,
0
);
SSqlObj
*
pSql
=
taosAcquireRef
(
tscObjRef
,
rid
);
taos_stop_query
(
pSql
);
taosReleaseRef
(
tscObjRef
,
rid
);
#else
printf
(
"
\n
Receive ctrl+c or other signal, quit shell.
\n
"
);
exit
(
0
);
#endif
}
return
NULL
;
}
int
checkVersion
()
{
...
...
@@ -105,6 +121,14 @@ int main(int argc, char* argv[]) {
exit
(
EXIT_FAILURE
);
}
if
(
tsem_init
(
&
cancelSem
,
0
,
0
)
!=
0
)
{
printf
(
"failed to create cancel semphore
\n
"
);
exit
(
EXIT_FAILURE
);
}
pthread_t
spid
;
pthread_create
(
&
spid
,
NULL
,
cancelHandler
,
NULL
);
/* Interrupt handler. */
struct
sigaction
act
;
memset
(
&
act
,
0
,
sizeof
(
struct
sigaction
));
...
...
src/os/inc/osMemory.h
浏览文件 @
0146c627
...
...
@@ -52,7 +52,7 @@ void taosTMemset(void *ptr, int c);
free((void *)(x)); \
x = 0; \
} \
} while (0)
;
} while (0)
#ifdef TAOS_MEM_CHECK
#ifdef TAOS_MEM_CHECK_TEST
...
...
src/query/inc/qExecutor.h
浏览文件 @
0146c627
...
...
@@ -185,7 +185,7 @@ typedef struct SQueryRuntimeEnv {
uint16_t
scanFlag
;
// denotes reversed scan of data or not
SFillInfo
*
pFillInfo
;
SResultRowInfo
windowResInfo
;
STSBuf
*
pT
S
Buf
;
STSBuf
*
pT
s
Buf
;
STSCursor
cur
;
SQueryCostInfo
summary
;
void
*
pQueryHandle
;
...
...
src/query/inc/qSqlparser.h
浏览文件 @
0146c627
...
...
@@ -202,16 +202,16 @@ typedef struct tSQLExpr {
}
tSQLExpr
;
// used in select clause. select <tSQLExprList> from xxx
typedef
struct
tS
QL
ExprItem
{
typedef
struct
tS
ql
ExprItem
{
tSQLExpr
*
pNode
;
// The list of expressions
char
*
aliasName
;
// alias name, null-terminated string
}
tS
QL
ExprItem
;
}
tS
ql
ExprItem
;
// todo refactor by using SArray
typedef
struct
tSQLExprList
{
int32_t
nExpr
;
/* Number of expressions on the list */
int32_t
nAlloc
;
/* Number of entries allocated below */
tS
QL
ExprItem
*
a
;
/* One entry for each expression */
tS
ql
ExprItem
*
a
;
/* One entry for each expression */
}
tSQLExprList
;
/**
...
...
@@ -233,63 +233,63 @@ SArray *tVariantListAppend(SArray *pList, tVariant *pVar, uint8_t sortOrder);
SArray
*
tVariantListInsert
(
SArray
*
pList
,
tVariant
*
pVar
,
uint8_t
sortOrder
,
int32_t
index
);
SArray
*
tVariantListAppendToken
(
SArray
*
pList
,
SStrToken
*
pAliasToken
,
uint8_t
sortOrder
);
tSQLExpr
*
tS
QLExprCreate
(
tSQLExpr
*
pLeft
,
tSQLExpr
*
pRight
,
int32_t
opt
Type
);
tSQLExpr
*
tS
qlExprCreate
(
tSQLExpr
*
pLeft
,
tSQLExpr
*
pRight
,
int32_t
optr
Type
);
void
tS
QLExprDestroy
(
tSQLExpr
*
);
void
tS
qlExprDestroy
(
tSQLExpr
*
pExpr
);
tSQLExprList
*
tS
QL
ExprListAppend
(
tSQLExprList
*
pList
,
tSQLExpr
*
pNode
,
SStrToken
*
pToken
);
tSQLExprList
*
tS
ql
ExprListAppend
(
tSQLExprList
*
pList
,
tSQLExpr
*
pNode
,
SStrToken
*
pToken
);
void
tS
QL
ExprListDestroy
(
tSQLExprList
*
pList
);
void
tS
ql
ExprListDestroy
(
tSQLExprList
*
pList
);
SQuerySQL
*
tSetQueryS
QL
Elems
(
SStrToken
*
pSelectToken
,
tSQLExprList
*
pSelection
,
SArray
*
pFrom
,
tSQLExpr
*
pWhere
,
SQuerySQL
*
tSetQueryS
ql
Elems
(
SStrToken
*
pSelectToken
,
tSQLExprList
*
pSelection
,
SArray
*
pFrom
,
tSQLExpr
*
pWhere
,
SArray
*
pGroupby
,
SArray
*
pSortOrder
,
SIntervalVal
*
pInterval
,
SStrToken
*
pSliding
,
SArray
*
pFill
,
SLimitVal
*
pLimit
,
SLimitVal
*
pGLimit
);
SCreateTableSQL
*
tSetCreateS
QL
Elems
(
SArray
*
pCols
,
SArray
*
pTags
,
SQuerySQL
*
pSelect
,
int32_t
type
);
SCreateTableSQL
*
tSetCreateS
ql
Elems
(
SArray
*
pCols
,
SArray
*
pTags
,
SQuerySQL
*
pSelect
,
int32_t
type
);
void
tS
QL
ExprNodeDestroy
(
tSQLExpr
*
pExpr
);
void
tS
ql
ExprNodeDestroy
(
tSQLExpr
*
pExpr
);
SAlterTableSQL
*
tAlterTableSQL
Elems
(
SStrToken
*
pTableName
,
SArray
*
pCols
,
SArray
*
pVals
,
int32_t
type
);
SAlterTableSQL
*
tAlterTableSql
Elems
(
SStrToken
*
pTableName
,
SArray
*
pCols
,
SArray
*
pVals
,
int32_t
type
);
SCreatedTableInfo
createNewChildTableInfo
(
SStrToken
*
pTableName
,
SArray
*
pTagVals
,
SStrToken
*
pToken
,
SStrToken
*
igExists
);
void
destroyAllSelectClause
(
SSubclauseInfo
*
pSql
);
void
doDestroyQuerySql
(
SQuerySQL
*
pSql
);
void
freeCreateTableInfo
(
void
*
p
);
SSqlInfo
*
setSQL
Info
(
SSqlInfo
*
pInfo
,
void
*
pSqlExprInfo
,
SStrToken
*
pTableName
,
int32_t
type
);
SSqlInfo
*
setSql
Info
(
SSqlInfo
*
pInfo
,
void
*
pSqlExprInfo
,
SStrToken
*
pTableName
,
int32_t
type
);
SSubclauseInfo
*
setSubclause
(
SSubclauseInfo
*
pClause
,
void
*
pSqlExprInfo
);
SSubclauseInfo
*
appendSelectClause
(
SSubclauseInfo
*
pInfo
,
void
*
pSubclause
);
void
setCreatedTableName
(
SSqlInfo
*
pInfo
,
SStrToken
*
pTableNameToken
,
SStrToken
*
pIfNotExists
);
void
S
QL
InfoDestroy
(
SSqlInfo
*
pInfo
);
void
S
ql
InfoDestroy
(
SSqlInfo
*
pInfo
);
void
setDCLSQLElems
(
SSqlInfo
*
pInfo
,
int32_t
type
,
int32_t
nParams
,
...);
void
setDropD
B
TableInfo
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
pToken
,
SStrToken
*
existsCheck
);
void
setDropD
b
TableInfo
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
pToken
,
SStrToken
*
existsCheck
);
void
setShowOptions
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
prefix
,
SStrToken
*
pPatterns
);
tDCLSQL
*
tTokenListAppend
(
tDCLSQL
*
pTokenList
,
SStrToken
*
pToken
);
void
setCreateDBSQL
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
pToken
,
SCreateDBInfo
*
pDB
,
SStrToken
*
pIgExists
);
void
setCreateAcctS
QL
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
pName
,
SStrToken
*
pPwd
,
SCreateAcctSQL
*
pAcctInfo
);
void
setCreateUserS
QL
(
SSqlInfo
*
pInfo
,
SStrToken
*
pName
,
SStrToken
*
pPasswd
);
void
setKillS
QL
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
ip
);
void
setAlterUserS
QL
(
SSqlInfo
*
pInfo
,
int16_t
type
,
SStrToken
*
pName
,
SStrToken
*
pPwd
,
SStrToken
*
pPrivilege
);
void
setCreateAcctS
ql
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
pName
,
SStrToken
*
pPwd
,
SCreateAcctSQL
*
pAcctInfo
);
void
setCreateUserS
ql
(
SSqlInfo
*
pInfo
,
SStrToken
*
pName
,
SStrToken
*
pPasswd
);
void
setKillS
ql
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
ip
);
void
setAlterUserS
ql
(
SSqlInfo
*
pInfo
,
int16_t
type
,
SStrToken
*
pName
,
SStrToken
*
pPwd
,
SStrToken
*
pPrivilege
);
void
setDefaultCreateDbOption
(
SCreateDBInfo
*
pDBInfo
);
// prefix show db.tables;
void
setD
BName
(
SStrToken
*
pCpxName
,
SStrToken
*
pDB
);
void
setD
bName
(
SStrToken
*
pCpxName
,
SStrToken
*
pDb
);
tSQLExpr
*
tS
QLExprIdValueCreate
(
SStrToken
*
pToken
,
int32_t
opt
Type
);
tSQLExpr
*
tS
qlExprIdValueCreate
(
SStrToken
*
pToken
,
int32_t
optr
Type
);
tSQLExpr
*
tS
QL
ExprCreateFunction
(
tSQLExprList
*
pList
,
SStrToken
*
pFuncToken
,
SStrToken
*
endToken
,
int32_t
optType
);
tSQLExpr
*
tS
ql
ExprCreateFunction
(
tSQLExprList
*
pList
,
SStrToken
*
pFuncToken
,
SStrToken
*
endToken
,
int32_t
optType
);
void
tS
QL
SetColumnInfo
(
TAOS_FIELD
*
pField
,
SStrToken
*
pName
,
TAOS_FIELD
*
pType
);
void
tS
ql
SetColumnInfo
(
TAOS_FIELD
*
pField
,
SStrToken
*
pName
,
TAOS_FIELD
*
pType
);
void
tS
QLSetColumnType
(
TAOS_FIELD
*
pField
,
SStrToken
*
pToken
);
void
tS
qlSetColumnType
(
TAOS_FIELD
*
pField
,
SStrToken
*
type
);
void
*
ParseAlloc
(
void
*
(
*
mallocProc
)(
size_t
));
...
...
src/query/inc/queryLog.h
浏览文件 @
0146c627
...
...
@@ -22,15 +22,15 @@ extern "C" {
#include "tlog.h"
extern
int32_t
qDebugFlag
;
extern
int32_t
tscEmbedded
;
extern
u
int32_t
qDebugFlag
;
extern
u
int32_t
tscEmbedded
;
#define qFatal(...)
{ if (qDebugFlag & DEBUG_FATAL) { taosPrintLog("QRY FATAL ", 255, __VA_ARGS__); }}
#define qError(...)
{ if (qDebugFlag & DEBUG_ERROR) { taosPrintLog("QRY ERROR ", 255, __VA_ARGS__); }}
#define qWarn(...)
{ if (qDebugFlag & DEBUG_WARN) { taosPrintLog("QRY WARN ", 255, __VA_ARGS__); }}
#define qInfo(...)
{ if (qDebugFlag & DEBUG_INFO) { taosPrintLog("QRY ", 255, __VA_ARGS__); }}
#define qDebug(...)
{ if (qDebugFlag & DEBUG_DEBUG) { taosPrintLog("QRY ", qDebugFlag, __VA_ARGS__); }}
#define qTrace(...)
{ if (qDebugFlag & DEBUG_TRACE) { taosPrintLog("QRY ", qDebugFlag, __VA_ARGS__); }}
#define qFatal(...)
do { if (qDebugFlag & DEBUG_FATAL) { taosPrintLog("QRY FATAL ", 255, __VA_ARGS__); }} while(0)
#define qError(...)
do { if (qDebugFlag & DEBUG_ERROR) { taosPrintLog("QRY ERROR ", 255, __VA_ARGS__); }} while(0)
#define qWarn(...)
do { if (qDebugFlag & DEBUG_WARN) { taosPrintLog("QRY WARN ", 255, __VA_ARGS__); }} while(0)
#define qInfo(...)
do { if (qDebugFlag & DEBUG_INFO) { taosPrintLog("QRY ", 255, __VA_ARGS__); }} while(0)
#define qDebug(...)
do { if (qDebugFlag & DEBUG_DEBUG) { taosPrintLog("QRY ", qDebugFlag, __VA_ARGS__); }} while(0)
#define qTrace(...)
do { if (qDebugFlag & DEBUG_TRACE) { taosPrintLog("QRY ", qDebugFlag, __VA_ARGS__); }} while(0)
#ifdef __cplusplus
}
...
...
src/query/inc/sql.y
浏览文件 @
0146c627
...
...
@@ -298,7 +298,7 @@ cmd ::= CREATE TABLE create_table_args. {}
cmd ::= CREATE TABLE create_table_list(Z). { pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = Z;}
%type create_table_list{SCreateTableSQL*}
%destructor create_table_list{destroyCreateTableS
QL
($$);}
%destructor create_table_list{destroyCreateTableS
ql
($$);}
create_table_list(A) ::= create_from_stable(Z). {
SCreateTableSQL* pCreateTable = calloc(1, sizeof(SCreateTableSQL));
pCreateTable->childTableInfo = taosArrayInit(4, sizeof(SCreatedTableInfo));
...
...
src/query/src/qExecutor.c
浏览文件 @
0146c627
此差异已折叠。
点击以展开。
src/query/src/qParserImpl.c
浏览文件 @
0146c627
...
...
@@ -71,13 +71,13 @@ abort_parse:
return
sqlInfo
;
}
tSQLExprList
*
tS
QL
ExprListAppend
(
tSQLExprList
*
pList
,
tSQLExpr
*
pNode
,
SStrToken
*
pToken
)
{
tSQLExprList
*
tS
ql
ExprListAppend
(
tSQLExprList
*
pList
,
tSQLExpr
*
pNode
,
SStrToken
*
pToken
)
{
if
(
pList
==
NULL
)
{
pList
=
calloc
(
1
,
sizeof
(
tSQLExprList
));
}
if
(
pList
->
nAlloc
<=
pList
->
nExpr
)
{
pList
->
nAlloc
=
(
pList
->
nAlloc
<<
1
)
+
4
;
pList
->
nAlloc
=
(
pList
->
nAlloc
<<
1
u
)
+
4
;
pList
->
a
=
realloc
(
pList
->
a
,
pList
->
nAlloc
*
sizeof
(
pList
->
a
[
0
]));
if
(
pList
->
a
==
0
)
{
pList
->
nExpr
=
pList
->
nAlloc
=
0
;
...
...
@@ -87,7 +87,7 @@ tSQLExprList *tSQLExprListAppend(tSQLExprList *pList, tSQLExpr *pNode, SStrToken
assert
(
pList
->
a
!=
0
);
if
(
pNode
||
pToken
)
{
struct
tS
QL
ExprItem
*
pItem
=
&
pList
->
a
[
pList
->
nExpr
++
];
struct
tS
ql
ExprItem
*
pItem
=
&
pList
->
a
[
pList
->
nExpr
++
];
memset
(
pItem
,
0
,
sizeof
(
*
pItem
));
pItem
->
pNode
=
pNode
;
if
(
pToken
)
{
// set the as clause
...
...
@@ -101,62 +101,62 @@ tSQLExprList *tSQLExprListAppend(tSQLExprList *pList, tSQLExpr *pNode, SStrToken
return
pList
;
}
void
tS
QL
ExprListDestroy
(
tSQLExprList
*
pList
)
{
void
tS
ql
ExprListDestroy
(
tSQLExprList
*
pList
)
{
if
(
pList
==
NULL
)
return
;
for
(
int32_t
i
=
0
;
i
<
pList
->
nExpr
;
++
i
)
{
if
(
pList
->
a
[
i
].
aliasName
!=
NULL
)
{
free
(
pList
->
a
[
i
].
aliasName
);
}
tS
QL
ExprDestroy
(
pList
->
a
[
i
].
pNode
);
tS
ql
ExprDestroy
(
pList
->
a
[
i
].
pNode
);
}
free
(
pList
->
a
);
free
(
pList
);
}
tSQLExpr
*
tS
QL
ExprIdValueCreate
(
SStrToken
*
pToken
,
int32_t
optrType
)
{
tSQLExpr
*
pS
QL
Expr
=
calloc
(
1
,
sizeof
(
tSQLExpr
));
tSQLExpr
*
tS
ql
ExprIdValueCreate
(
SStrToken
*
pToken
,
int32_t
optrType
)
{
tSQLExpr
*
pS
ql
Expr
=
calloc
(
1
,
sizeof
(
tSQLExpr
));
if
(
pToken
!=
NULL
)
{
pS
QL
Expr
->
token
=
*
pToken
;
pS
ql
Expr
->
token
=
*
pToken
;
}
if
(
optrType
==
TK_INTEGER
||
optrType
==
TK_STRING
||
optrType
==
TK_FLOAT
||
optrType
==
TK_BOOL
)
{
toTSDBType
(
pToken
->
type
);
tVariantCreate
(
&
pS
QL
Expr
->
val
,
pToken
);
pS
QL
Expr
->
nSQLOptr
=
optrType
;
tVariantCreate
(
&
pS
ql
Expr
->
val
,
pToken
);
pS
ql
Expr
->
nSQLOptr
=
optrType
;
}
else
if
(
optrType
==
TK_NOW
)
{
// use microsecond by default
pS
QL
Expr
->
val
.
i64Key
=
taosGetTimestamp
(
TSDB_TIME_PRECISION_MICRO
);
pS
QL
Expr
->
val
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
pS
QL
Expr
->
nSQLOptr
=
TK_TIMESTAMP
;
// TK_TIMESTAMP used to denote the time value is in microsecond
pS
ql
Expr
->
val
.
i64Key
=
taosGetTimestamp
(
TSDB_TIME_PRECISION_MICRO
);
pS
ql
Expr
->
val
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
pS
ql
Expr
->
nSQLOptr
=
TK_TIMESTAMP
;
// TK_TIMESTAMP used to denote the time value is in microsecond
}
else
if
(
optrType
==
TK_VARIABLE
)
{
int32_t
ret
=
parseAbsoluteDuration
(
pToken
->
z
,
pToken
->
n
,
&
pS
QL
Expr
->
val
.
i64Key
);
int32_t
ret
=
parseAbsoluteDuration
(
pToken
->
z
,
pToken
->
n
,
&
pS
ql
Expr
->
val
.
i64Key
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
terrno
=
TSDB_CODE_TSC_SQL_SYNTAX_ERROR
;
}
pS
QL
Expr
->
val
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
pS
QL
Expr
->
nSQLOptr
=
TK_TIMESTAMP
;
pS
ql
Expr
->
val
.
nType
=
TSDB_DATA_TYPE_BIGINT
;
pS
ql
Expr
->
nSQLOptr
=
TK_TIMESTAMP
;
}
else
{
// it must be the column name (tk_id) if it is not the number
assert
(
optrType
==
TK_ID
||
optrType
==
TK_ALL
);
if
(
pToken
!=
NULL
)
{
pS
QL
Expr
->
colInfo
=
*
pToken
;
pS
ql
Expr
->
colInfo
=
*
pToken
;
}
pS
QL
Expr
->
nSQLOptr
=
optrType
;
pS
ql
Expr
->
nSQLOptr
=
optrType
;
}
return
pS
QL
Expr
;
return
pS
ql
Expr
;
}
/*
* pList is the parameters for function with id(optType)
* function name is denoted by pFunctionToken
*/
tSQLExpr
*
tS
QL
ExprCreateFunction
(
tSQLExprList
*
pList
,
SStrToken
*
pFuncToken
,
SStrToken
*
endToken
,
int32_t
optType
)
{
tSQLExpr
*
tS
ql
ExprCreateFunction
(
tSQLExprList
*
pList
,
SStrToken
*
pFuncToken
,
SStrToken
*
endToken
,
int32_t
optType
)
{
if
(
pFuncToken
==
NULL
)
return
NULL
;
tSQLExpr
*
pExpr
=
calloc
(
1
,
sizeof
(
tSQLExpr
));
...
...
@@ -177,7 +177,7 @@ tSQLExpr *tSQLExprCreateFunction(tSQLExprList *pList, SStrToken *pFuncToken, SSt
* create binary expression in this procedure
* if the expr is arithmetic, calculate the result and set it to tSQLExpr Object
*/
tSQLExpr
*
tS
QL
ExprCreate
(
tSQLExpr
*
pLeft
,
tSQLExpr
*
pRight
,
int32_t
optrType
)
{
tSQLExpr
*
tS
ql
ExprCreate
(
tSQLExpr
*
pLeft
,
tSQLExpr
*
pRight
,
int32_t
optrType
)
{
tSQLExpr
*
pExpr
=
calloc
(
1
,
sizeof
(
tSQLExpr
));
if
(
pLeft
!=
NULL
&&
pRight
!=
NULL
&&
(
optrType
!=
TK_IN
))
{
...
...
@@ -223,8 +223,8 @@ tSQLExpr *tSQLExprCreate(tSQLExpr *pLeft, tSQLExpr *pRight, int32_t optrType) {
}
}
tS
QL
ExprDestroy
(
pLeft
);
tS
QL
ExprDestroy
(
pRight
);
tS
ql
ExprDestroy
(
pLeft
);
tS
ql
ExprDestroy
(
pRight
);
}
else
if
((
pLeft
->
nSQLOptr
==
TK_FLOAT
&&
pRight
->
nSQLOptr
==
TK_INTEGER
)
||
(
pLeft
->
nSQLOptr
==
TK_INTEGER
&&
pRight
->
nSQLOptr
==
TK_FLOAT
)
||
(
pLeft
->
nSQLOptr
==
TK_FLOAT
&&
pRight
->
nSQLOptr
==
TK_FLOAT
))
{
...
...
@@ -257,8 +257,8 @@ tSQLExpr *tSQLExprCreate(tSQLExpr *pLeft, tSQLExpr *pRight, int32_t optrType) {
}
}
tS
QL
ExprDestroy
(
pLeft
);
tS
QL
ExprDestroy
(
pRight
);
tS
ql
ExprDestroy
(
pLeft
);
tS
ql
ExprDestroy
(
pRight
);
}
else
{
pExpr
->
nSQLOptr
=
optrType
;
...
...
@@ -288,7 +288,7 @@ tSQLExpr *tSQLExprCreate(tSQLExpr *pLeft, tSQLExpr *pRight, int32_t optrType) {
return
pExpr
;
}
void
tS
QL
ExprNodeDestroy
(
tSQLExpr
*
pExpr
)
{
void
tS
ql
ExprNodeDestroy
(
tSQLExpr
*
pExpr
)
{
if
(
pExpr
==
NULL
)
{
return
;
}
...
...
@@ -297,20 +297,20 @@ void tSQLExprNodeDestroy(tSQLExpr *pExpr) {
tVariantDestroy
(
&
pExpr
->
val
);
}
tS
QL
ExprListDestroy
(
pExpr
->
pParam
);
tS
ql
ExprListDestroy
(
pExpr
->
pParam
);
free
(
pExpr
);
}
void
tS
QL
ExprDestroy
(
tSQLExpr
*
pExpr
)
{
void
tS
ql
ExprDestroy
(
tSQLExpr
*
pExpr
)
{
if
(
pExpr
==
NULL
)
{
return
;
}
tS
QL
ExprDestroy
(
pExpr
->
pLeft
);
tS
QL
ExprDestroy
(
pExpr
->
pRight
);
tS
ql
ExprDestroy
(
pExpr
->
pLeft
);
tS
ql
ExprDestroy
(
pExpr
->
pRight
);
tS
QL
ExprNodeDestroy
(
pExpr
);
tS
ql
ExprNodeDestroy
(
pExpr
);
}
SArray
*
tVariantListAppendToken
(
SArray
*
pList
,
SStrToken
*
pToken
,
uint8_t
order
)
{
...
...
@@ -366,13 +366,13 @@ SArray *tVariantListInsert(SArray *pList, tVariant *pVar, uint8_t sortOrder, int
return
pList
;
}
void
setD
BName
(
SStrToken
*
pCpxName
,
SStrToken
*
pDB
)
{
pCpxName
->
type
=
pD
B
->
type
;
pCpxName
->
z
=
pD
B
->
z
;
pCpxName
->
n
=
pD
B
->
n
;
void
setD
bName
(
SStrToken
*
pCpxName
,
SStrToken
*
pDb
)
{
pCpxName
->
type
=
pD
b
->
type
;
pCpxName
->
z
=
pD
b
->
z
;
pCpxName
->
n
=
pD
b
->
n
;
}
void
tS
QL
SetColumnInfo
(
TAOS_FIELD
*
pField
,
SStrToken
*
pName
,
TAOS_FIELD
*
pType
)
{
void
tS
ql
SetColumnInfo
(
TAOS_FIELD
*
pField
,
SStrToken
*
pName
,
TAOS_FIELD
*
pType
)
{
int32_t
maxLen
=
sizeof
(
pField
->
name
)
/
sizeof
(
pField
->
name
[
0
]);
// truncate the column name
...
...
@@ -387,10 +387,10 @@ void tSQLSetColumnInfo(TAOS_FIELD *pField, SStrToken *pName, TAOS_FIELD *pType)
pField
->
bytes
=
pType
->
bytes
;
}
void
tS
QL
SetColumnType
(
TAOS_FIELD
*
pField
,
SStrToken
*
type
)
{
void
tS
ql
SetColumnType
(
TAOS_FIELD
*
pField
,
SStrToken
*
type
)
{
pField
->
type
=
-
1
;
for
(
int
8
_t
i
=
0
;
i
<
tListLen
(
tDataTypeDesc
);
++
i
)
{
for
(
int
32
_t
i
=
0
;
i
<
tListLen
(
tDataTypeDesc
);
++
i
)
{
if
((
strncasecmp
(
type
->
z
,
tDataTypeDesc
[
i
].
aName
,
tDataTypeDesc
[
i
].
nameLen
)
==
0
)
&&
(
type
->
n
==
tDataTypeDesc
[
i
].
nameLen
))
{
pField
->
type
=
i
;
...
...
@@ -438,7 +438,7 @@ void tSQLSetColumnType(TAOS_FIELD *pField, SStrToken *type) {
/*
* extract the select info out of sql string
*/
SQuerySQL
*
tSetQueryS
QL
Elems
(
SStrToken
*
pSelectToken
,
tSQLExprList
*
pSelection
,
SArray
*
pFrom
,
tSQLExpr
*
pWhere
,
SQuerySQL
*
tSetQueryS
ql
Elems
(
SStrToken
*
pSelectToken
,
tSQLExprList
*
pSelection
,
SArray
*
pFrom
,
tSQLExpr
*
pWhere
,
SArray
*
pGroupby
,
SArray
*
pSortOrder
,
SIntervalVal
*
pInterval
,
SStrToken
*
pSliding
,
SArray
*
pFill
,
SLimitVal
*
pLimit
,
SLimitVal
*
pGLimit
)
{
assert
(
pSelection
!=
NULL
);
...
...
@@ -491,11 +491,11 @@ void doDestroyQuerySql(SQuerySQL *pQuerySql) {
return
;
}
tS
QL
ExprListDestroy
(
pQuerySql
->
pSelection
);
tS
ql
ExprListDestroy
(
pQuerySql
->
pSelection
);
pQuerySql
->
pSelection
=
NULL
;
tS
QL
ExprDestroy
(
pQuerySql
->
pWhere
);
tS
ql
ExprDestroy
(
pQuerySql
->
pWhere
);
pQuerySql
->
pWhere
=
NULL
;
taosArrayDestroyEx
(
pQuerySql
->
pSortOrder
,
freeVariant
);
...
...
@@ -526,7 +526,7 @@ void destroyAllSelectClause(SSubclauseInfo *pClause) {
tfree
(
pClause
->
pClause
);
}
SCreateTableSQL
*
tSetCreateS
QL
Elems
(
SArray
*
pCols
,
SArray
*
pTags
,
SQuerySQL
*
pSelect
,
int32_t
type
)
{
SCreateTableSQL
*
tSetCreateS
ql
Elems
(
SArray
*
pCols
,
SArray
*
pTags
,
SQuerySQL
*
pSelect
,
int32_t
type
)
{
SCreateTableSQL
*
pCreate
=
calloc
(
1
,
sizeof
(
SCreateTableSQL
));
switch
(
type
)
{
...
...
@@ -570,7 +570,7 @@ SCreatedTableInfo createNewChildTableInfo(SStrToken *pTableName, SArray *pTagVal
return
info
;
}
SAlterTableSQL
*
tAlterTableS
QL
Elems
(
SStrToken
*
pTableName
,
SArray
*
pCols
,
SArray
*
pVals
,
int32_t
type
)
{
SAlterTableSQL
*
tAlterTableS
ql
Elems
(
SStrToken
*
pTableName
,
SArray
*
pCols
,
SArray
*
pVals
,
int32_t
type
)
{
SAlterTableSQL
*
pAlterTable
=
calloc
(
1
,
sizeof
(
SAlterTableSQL
));
pAlterTable
->
name
=
*
pTableName
;
...
...
@@ -591,7 +591,7 @@ SAlterTableSQL *tAlterTableSQLElems(SStrToken *pTableName, SArray *pCols, SArray
return
pAlterTable
;
}
void
*
destroyCreateTableS
QL
(
SCreateTableSQL
*
pCreate
)
{
void
*
destroyCreateTableS
ql
(
SCreateTableSQL
*
pCreate
)
{
doDestroyQuerySql
(
pCreate
->
pSelect
);
taosArrayDestroy
(
pCreate
->
colInfo
.
pColumns
);
...
...
@@ -603,13 +603,13 @@ void* destroyCreateTableSQL(SCreateTableSQL* pCreate) {
return
NULL
;
}
void
S
QL
InfoDestroy
(
SSqlInfo
*
pInfo
)
{
void
S
ql
InfoDestroy
(
SSqlInfo
*
pInfo
)
{
if
(
pInfo
==
NULL
)
return
;
if
(
pInfo
->
type
==
TSDB_SQL_SELECT
)
{
destroyAllSelectClause
(
&
pInfo
->
subclauseInfo
);
}
else
if
(
pInfo
->
type
==
TSDB_SQL_CREATE_TABLE
)
{
pInfo
->
pCreateTableInfo
=
destroyCreateTableS
QL
(
pInfo
->
pCreateTableInfo
);
pInfo
->
pCreateTableInfo
=
destroyCreateTableS
ql
(
pInfo
->
pCreateTableInfo
);
}
else
if
(
pInfo
->
type
==
TSDB_SQL_ALTER_TABLE
)
{
taosArrayDestroyEx
(
pInfo
->
pAlterInfo
->
varList
,
freeVariant
);
taosArrayDestroy
(
pInfo
->
pAlterInfo
->
pAddColumns
);
...
...
@@ -647,7 +647,7 @@ SSubclauseInfo* setSubclause(SSubclauseInfo* pSubclause, void *pSqlExprInfo) {
return
pSubclause
;
}
SSqlInfo
*
setSQL
Info
(
SSqlInfo
*
pInfo
,
void
*
pSqlExprInfo
,
SStrToken
*
pTableName
,
int32_t
type
)
{
SSqlInfo
*
setSql
Info
(
SSqlInfo
*
pInfo
,
void
*
pSqlExprInfo
,
SStrToken
*
pTableName
,
int32_t
type
)
{
pInfo
->
type
=
type
;
if
(
type
==
TSDB_SQL_SELECT
)
{
...
...
@@ -683,7 +683,7 @@ void setCreatedTableName(SSqlInfo *pInfo, SStrToken *pTableNameToken, SStrToken
void
tTokenListBuyMoreSpace
(
tDCLSQL
*
pTokenList
)
{
if
(
pTokenList
->
nAlloc
<=
pTokenList
->
nTokens
)
{
//
pTokenList
->
nAlloc
=
(
pTokenList
->
nAlloc
<<
1
)
+
4
;
pTokenList
->
nAlloc
=
(
pTokenList
->
nAlloc
<<
1
u
)
+
4
;
pTokenList
->
a
=
realloc
(
pTokenList
->
a
,
pTokenList
->
nAlloc
*
sizeof
(
pTokenList
->
a
[
0
]));
if
(
pTokenList
->
a
==
0
)
{
pTokenList
->
nTokens
=
pTokenList
->
nAlloc
=
0
;
...
...
@@ -718,7 +718,7 @@ void setDCLSQLElems(SSqlInfo *pInfo, int32_t type, int32_t nParam, ...) {
va_end
(
va
);
}
void
setDropD
B
TableInfo
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
pToken
,
SStrToken
*
existsCheck
)
{
void
setDropD
b
TableInfo
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
pToken
,
SStrToken
*
existsCheck
)
{
pInfo
->
type
=
type
;
pInfo
->
pDCLInfo
=
tTokenListAppend
(
pInfo
->
pDCLInfo
,
pToken
);
pInfo
->
pDCLInfo
->
existsCheck
=
(
existsCheck
->
n
==
1
);
...
...
@@ -758,7 +758,7 @@ void setCreateDBSQL(SSqlInfo *pInfo, int32_t type, SStrToken *pToken, SCreateDBI
pInfo
->
pDCLInfo
->
dbOpt
.
ignoreExists
=
pIgExists
->
n
;
// sql.y has: ifnotexists(X) ::= IF NOT EXISTS. {X.n = 1;}
}
void
setCreateAcctS
QL
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
pName
,
SStrToken
*
pPwd
,
SCreateAcctSQL
*
pAcctInfo
)
{
void
setCreateAcctS
ql
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
pName
,
SStrToken
*
pPwd
,
SCreateAcctSQL
*
pAcctInfo
)
{
pInfo
->
type
=
type
;
if
(
pInfo
->
pDCLInfo
==
NULL
)
{
pInfo
->
pDCLInfo
=
calloc
(
1
,
sizeof
(
tDCLSQL
));
...
...
@@ -774,7 +774,7 @@ void setCreateAcctSQL(SSqlInfo *pInfo, int32_t type, SStrToken *pName, SStrToken
}
}
void
setCreateUserS
QL
(
SSqlInfo
*
pInfo
,
SStrToken
*
pName
,
SStrToken
*
pPasswd
)
{
void
setCreateUserS
ql
(
SSqlInfo
*
pInfo
,
SStrToken
*
pName
,
SStrToken
*
pPasswd
)
{
pInfo
->
type
=
TSDB_SQL_CREATE_USER
;
if
(
pInfo
->
pDCLInfo
==
NULL
)
{
pInfo
->
pDCLInfo
=
calloc
(
1
,
sizeof
(
tDCLSQL
));
...
...
@@ -786,7 +786,7 @@ void setCreateUserSQL(SSqlInfo *pInfo, SStrToken *pName, SStrToken *pPasswd) {
pInfo
->
pDCLInfo
->
user
.
passwd
=
*
pPasswd
;
}
void
setAlterUserS
QL
(
SSqlInfo
*
pInfo
,
int16_t
type
,
SStrToken
*
pName
,
SStrToken
*
pPwd
,
SStrToken
*
pPrivilege
)
{
void
setAlterUserS
ql
(
SSqlInfo
*
pInfo
,
int16_t
type
,
SStrToken
*
pName
,
SStrToken
*
pPwd
,
SStrToken
*
pPrivilege
)
{
pInfo
->
type
=
TSDB_SQL_ALTER_USER
;
if
(
pInfo
->
pDCLInfo
==
NULL
)
{
pInfo
->
pDCLInfo
=
calloc
(
1
,
sizeof
(
tDCLSQL
));
...
...
@@ -811,7 +811,7 @@ void setAlterUserSQL(SSqlInfo *pInfo, int16_t type, SStrToken *pName, SStrToken*
}
}
void
setKillS
QL
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
ip
)
{
void
setKillS
ql
(
SSqlInfo
*
pInfo
,
int32_t
type
,
SStrToken
*
ip
)
{
pInfo
->
type
=
type
;
if
(
pInfo
->
pDCLInfo
==
NULL
)
{
pInfo
->
pDCLInfo
=
calloc
(
1
,
sizeof
(
tDCLSQL
));
...
...
src/query/src/sql.c
浏览文件 @
0146c627
此差异已折叠。
点击以展开。
src/rpc/inc/rpcLog.h
浏览文件 @
0146c627
...
...
@@ -23,7 +23,7 @@ extern "C" {
#include "tlog.h"
extern
int32_t
rpcDebugFlag
;
extern
int32_t
tscEmbedded
;
extern
u
int32_t
tscEmbedded
;
#define tFatal(...) { if (rpcDebugFlag & DEBUG_FATAL) { taosPrintLog("RPC FATAL ", tscEmbedded ? 255 : rpcDebugFlag, __VA_ARGS__); }}
#define tError(...) { if (rpcDebugFlag & DEBUG_ERROR) { taosPrintLog("RPC ERROR ", tscEmbedded ? 255 : rpcDebugFlag, __VA_ARGS__); }}
...
...
src/util/src/ttimer.c
浏览文件 @
0146c627
...
...
@@ -19,7 +19,7 @@
#include "ttimer.h"
#include "tutil.h"
extern
int32_t
tscEmbedded
;
extern
u
int32_t
tscEmbedded
;
#define tmrFatal(...) { if (tmrDebugFlag & DEBUG_FATAL) { taosPrintLog("TMR FATAL ", tscEmbedded ? 255 : tmrDebugFlag, __VA_ARGS__); }}
#define tmrError(...) { if (tmrDebugFlag & DEBUG_ERROR) { taosPrintLog("TMR ERROR ", tscEmbedded ? 255 : tmrDebugFlag, __VA_ARGS__); }}
...
...
tests/pytest/query/queryError.py
浏览文件 @
0146c627
...
...
@@ -56,6 +56,15 @@ class TDTestCase:
# query .. order by non-time field
tdSql
.
error
(
"select * from st order by name"
)
# TD-2133
tdSql
.
error
(
"select diff(tagtype),bottom(tagtype,1) from dev_001"
)
# TD-2190
tdSql
.
error
(
"select min(tagtype),max(tagtype) from dev_002 interval(1n) fill(prev)"
)
# TD-2208
tdSql
.
error
(
"select diff(tagtype),top(tagtype,1) from dev_001"
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
...
...
tests/pytest/test.py
浏览文件 @
0146c627
...
...
@@ -115,9 +115,21 @@ if __name__ == "__main__":
tdDnodes
.
init
(
deployPath
)
tdDnodes
.
setTestCluster
(
testCluster
)
tdDnodes
.
setValgrind
(
valgrind
)
tdDnodes
.
stopAll
()
tdDnodes
.
deploy
(
1
)
is_test_framework
=
0
key_word
=
'tdCases.addLinux'
if
key_word
in
open
(
fileName
).
read
():
is_test_framework
=
1
if
is_test_framework
:
moduleName
=
fileName
.
replace
(
".py"
,
""
).
replace
(
"/"
,
"."
)
uModule
=
importlib
.
import_module
(
moduleName
)
try
:
ucase
=
uModule
.
TDTestCase
()
tdDnodes
.
deploy
(
1
,
ucase
.
updatecfgDict
)
except
:
tdDnodes
.
deploy
(
1
,{})
else
:
tdDnodes
.
deploy
(
1
,{})
tdDnodes
.
start
(
1
)
if
masterIp
==
""
:
...
...
tests/pytest/util/dnodes.py
浏览文件 @
0146c627
...
...
@@ -108,6 +108,36 @@ class TDDnode:
self
.
deployed
=
0
self
.
testCluster
=
False
self
.
valgrind
=
0
self
.
cfgDict
=
{
"numOfLogLines"
:
"100000000"
,
"mnodeEqualVnodeNum"
:
"0"
,
"walLevel"
:
"2"
,
"fsync"
:
"1000"
,
"statusInterval"
:
"1"
,
"numOfMnodes"
:
"3"
,
"numOfThreadsPerCore"
:
"2.0"
,
"monitor"
:
"0"
,
"maxVnodeConnections"
:
"30000"
,
"maxMgmtConnections"
:
"30000"
,
"maxMeterConnections"
:
"30000"
,
"maxShellConns"
:
"30000"
,
"locale"
:
"en_US.UTF-8"
,
"charset"
:
"UTF-8"
,
"asyncLog"
:
"0"
,
"anyIp"
:
"0"
,
"tsEnableTelemetryReporting"
:
"0"
,
"dDebugFlag"
:
"135"
,
"mDebugFlag"
:
"135"
,
"sdbDebugFlag"
:
"135"
,
"rpcDebugFlag"
:
"135"
,
"tmrDebugFlag"
:
"131"
,
"cDebugFlag"
:
"135"
,
"httpDebugFlag"
:
"135"
,
"monitorDebugFlag"
:
"135"
,
"udebugFlag"
:
"135"
,
"jnidebugFlag"
:
"135"
,
"qdebugFlag"
:
"135"
}
def
init
(
self
,
path
):
self
.
path
=
path
...
...
@@ -131,7 +161,10 @@ class TDDnode:
return
totalSize
def
deploy
(
self
):
def
addExtraCfg
(
self
,
option
,
value
):
self
.
cfgDict
.
update
({
option
:
value
})
def
deploy
(
self
,
*
updatecfgDict
):
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
)
...
...
@@ -175,36 +208,17 @@ class TDDnode:
self
.
cfg
(
"publicIp"
,
"192.168.0.%d"
%
(
self
.
index
))
self
.
cfg
(
"internalIp"
,
"192.168.0.%d"
%
(
self
.
index
))
self
.
cfg
(
"privateIp"
,
"192.168.0.%d"
%
(
self
.
index
))
self
.
cfg
(
"dataDir"
,
self
.
dataDir
)
self
.
cfg
(
"logDir"
,
self
.
logDir
)
self
.
cfg
(
"numOfLogLines"
,
"100000000"
)
self
.
cfg
(
"mnodeEqualVnodeNum"
,
"0"
)
self
.
cfg
(
"walLevel"
,
"2"
)
self
.
cfg
(
"fsync"
,
"1000"
)
self
.
cfg
(
"statusInterval"
,
"1"
)
self
.
cfg
(
"numOfMnodes"
,
"3"
)
self
.
cfg
(
"numOfThreadsPerCore"
,
"2.0"
)
self
.
cfg
(
"monitor"
,
"0"
)
self
.
cfg
(
"maxVnodeConnections"
,
"30000"
)
self
.
cfg
(
"maxMgmtConnections"
,
"30000"
)
self
.
cfg
(
"maxMeterConnections"
,
"30000"
)
self
.
cfg
(
"maxShellConns"
,
"30000"
)
self
.
cfg
(
"locale"
,
"en_US.UTF-8"
)
self
.
cfg
(
"charset"
,
"UTF-8"
)
self
.
cfg
(
"asyncLog"
,
"0"
)
self
.
cfg
(
"anyIp"
,
"0"
)
self
.
cfg
(
"tsEnableTelemetryReporting"
,
"0"
)
self
.
cfg
(
"dDebugFlag"
,
"135"
)
self
.
cfg
(
"mDebugFlag"
,
"135"
)
self
.
cfg
(
"sdbDebugFlag"
,
"135"
)
self
.
cfg
(
"rpcDebugFlag"
,
"135"
)
self
.
cfg
(
"tmrDebugFlag"
,
"131"
)
self
.
cfg
(
"cDebugFlag"
,
"135"
)
self
.
cfg
(
"httpDebugFlag"
,
"135"
)
self
.
cfg
(
"monitorDebugFlag"
,
"135"
)
self
.
cfg
(
"udebugFlag"
,
"135"
)
self
.
cfg
(
"jnidebugFlag"
,
"135"
)
self
.
cfg
(
"qdebugFlag"
,
"135"
)
self
.
cfg
(
"dataDir"
,
self
.
dataDir
)
self
.
cfg
(
"logDir"
,
self
.
logDir
)
print
(
updatecfgDict
)
if
updatecfgDict
[
0
]
and
updatecfgDict
[
0
][
0
]:
print
(
updatecfgDict
[
0
][
0
])
for
key
,
value
in
updatecfgDict
[
0
][
0
].
items
():
self
.
addExtraCfg
(
key
,
value
)
for
key
,
value
in
self
.
cfgDict
.
items
():
self
.
cfg
(
key
,
value
)
self
.
deployed
=
1
tdLog
.
debug
(
"dnode:%d is deployed and configured by %s"
%
...
...
@@ -260,6 +274,12 @@ class TDDnode:
key
=
'from offline to online'
bkey
=
bytes
(
key
,
encoding
=
"utf8"
)
logFile
=
self
.
logDir
+
"/taosdlog.0"
i
=
0
while
not
os
.
path
.
exists
(
logFile
):
sleep
(
0.1
)
i
+=
1
if
i
>
50
:
break
popen
=
subprocess
.
Popen
(
'tail -f '
+
logFile
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
,
shell
=
True
)
pid
=
popen
.
pid
print
(
'Popen.pid:'
+
str
(
pid
))
...
...
@@ -274,6 +294,7 @@ class TDDnode:
tdLog
.
debug
(
"wait 5 seconds for the dnode:%d to start."
%
(
self
.
index
))
time
.
sleep
(
5
)
# time.sleep(5)
def
startWithoutSleep
(
self
):
...
...
@@ -454,7 +475,7 @@ class TDDnodes:
def
setValgrind
(
self
,
value
):
self
.
valgrind
=
value
def
deploy
(
self
,
index
):
def
deploy
(
self
,
index
,
*
updatecfgDict
):
self
.
sim
.
setTestCluster
(
self
.
testCluster
)
if
(
self
.
simDeployed
==
False
):
...
...
@@ -464,7 +485,7 @@ class TDDnodes:
self
.
check
(
index
)
self
.
dnodes
[
index
-
1
].
setTestCluster
(
self
.
testCluster
)
self
.
dnodes
[
index
-
1
].
setValgrind
(
self
.
valgrind
)
self
.
dnodes
[
index
-
1
].
deploy
()
self
.
dnodes
[
index
-
1
].
deploy
(
updatecfgDict
)
def
cfg
(
self
,
index
,
option
,
value
):
self
.
check
(
index
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录