Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
3bb9451c
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
3bb9451c
编写于
6月 06, 2020
作者:
S
Steven Li
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/develop' into feature/crash_gen
上级
3e93fccf
5e9986d6
变更
76
隐藏空白更改
内联
并排
Showing
76 changed file
with
1396 addition
and
1045 deletion
+1396
-1045
src/client/src/TSDBJNIConnector.c
src/client/src/TSDBJNIConnector.c
+1
-1
src/client/src/tscAsync.c
src/client/src/tscAsync.c
+17
-17
src/client/src/tscFunctionImpl.c
src/client/src/tscFunctionImpl.c
+2
-2
src/client/src/tscLocal.c
src/client/src/tscLocal.c
+4
-4
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+20
-20
src/client/src/tscPrepare.c
src/client/src/tscPrepare.c
+20
-21
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+118
-113
src/client/src/tscSecondaryMerge.c
src/client/src/tscSecondaryMerge.c
+11
-11
src/client/src/tscServer.c
src/client/src/tscServer.c
+53
-52
src/client/src/tscSql.c
src/client/src/tscSql.c
+28
-70
src/client/src/tscStream.c
src/client/src/tscStream.c
+6
-6
src/client/src/tscSub.c
src/client/src/tscSub.c
+3
-3
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+19
-19
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+35
-34
src/common/src/tglobal.c
src/common/src/tglobal.c
+1
-1
src/connector/python/linux/python2/taos/cinterface.py
src/connector/python/linux/python2/taos/cinterface.py
+1
-1
src/connector/python/linux/python2/taos/cursor.py
src/connector/python/linux/python2/taos/cursor.py
+2
-3
src/connector/python/linux/python3/taos/cinterface.py
src/connector/python/linux/python3/taos/cinterface.py
+1
-1
src/connector/python/linux/python3/taos/cursor.py
src/connector/python/linux/python3/taos/cursor.py
+3
-4
src/connector/python/windows/python2/taos/cinterface.py
src/connector/python/windows/python2/taos/cinterface.py
+1
-1
src/connector/python/windows/python2/taos/cursor.py
src/connector/python/windows/python2/taos/cursor.py
+2
-3
src/connector/python/windows/python3/taos/cinterface.py
src/connector/python/windows/python3/taos/cinterface.py
+1
-1
src/connector/python/windows/python3/taos/cursor.py
src/connector/python/windows/python3/taos/cursor.py
+2
-3
src/dnode/src/dnodeMPeer.c
src/dnode/src/dnodeMPeer.c
+2
-2
src/dnode/src/dnodeMRead.c
src/dnode/src/dnodeMRead.c
+3
-3
src/dnode/src/dnodeMWrite.c
src/dnode/src/dnodeMWrite.c
+3
-3
src/dnode/src/dnodeMgmt.c
src/dnode/src/dnodeMgmt.c
+3
-3
src/dnode/src/dnodePeer.c
src/dnode/src/dnodePeer.c
+3
-3
src/dnode/src/dnodeShell.c
src/dnode/src/dnodeShell.c
+3
-3
src/dnode/src/dnodeVRead.c
src/dnode/src/dnodeVRead.c
+3
-3
src/dnode/src/dnodeVWrite.c
src/dnode/src/dnodeVWrite.c
+1
-1
src/inc/taoserror.h
src/inc/taoserror.h
+165
-127
src/kit/shell/src/shellEngine.c
src/kit/shell/src/shellEngine.c
+4
-4
src/kit/shell/src/shellMain.c
src/kit/shell/src/shellMain.c
+4
-7
src/mnode/src/mnodeAcct.c
src/mnode/src/mnodeAcct.c
+1
-1
src/mnode/src/mnodeBalance.c
src/mnode/src/mnodeBalance.c
+1
-1
src/mnode/src/mnodeDb.c
src/mnode/src/mnodeDb.c
+40
-40
src/mnode/src/mnodeDnode.c
src/mnode/src/mnodeDnode.c
+17
-17
src/mnode/src/mnodeInt.c
src/mnode/src/mnodeInt.c
+1
-1
src/mnode/src/mnodeMnode.c
src/mnode/src/mnodeMnode.c
+7
-7
src/mnode/src/mnodePeer.c
src/mnode/src/mnodePeer.c
+3
-3
src/mnode/src/mnodeProfile.c
src/mnode/src/mnodeProfile.c
+12
-12
src/mnode/src/mnodeRead.c
src/mnode/src/mnodeRead.c
+3
-3
src/mnode/src/mnodeSdb.c
src/mnode/src/mnodeSdb.c
+3
-3
src/mnode/src/mnodeShow.c
src/mnode/src/mnodeShow.c
+11
-11
src/mnode/src/mnodeTable.c
src/mnode/src/mnodeTable.c
+75
-75
src/mnode/src/mnodeUser.c
src/mnode/src/mnodeUser.c
+22
-22
src/mnode/src/mnodeVgroup.c
src/mnode/src/mnodeVgroup.c
+12
-12
src/mnode/src/mnodeWrite.c
src/mnode/src/mnodeWrite.c
+4
-4
src/plugins/http/src/httpJson.c
src/plugins/http/src/httpJson.c
+2
-2
src/plugins/http/src/httpSql.c
src/plugins/http/src/httpSql.c
+3
-3
src/plugins/http/src/tgJson.c
src/plugins/http/src/tgJson.c
+2
-2
src/plugins/monitor/src/monitorMain.c
src/plugins/monitor/src/monitorMain.c
+1
-1
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+85
-61
src/query/src/qast.c
src/query/src/qast.c
+3
-3
src/query/src/qresultBuf.c
src/query/src/qresultBuf.c
+5
-5
src/query/src/qsyntaxtreefunction.c
src/query/src/qsyntaxtreefunction.c
+1
-1
src/query/src/tlosertree.c
src/query/src/tlosertree.c
+1
-1
src/query/tests/unitTest.cpp
src/query/tests/unitTest.cpp
+52
-52
src/rpc/src/rpcMain.c
src/rpc/src/rpcMain.c
+70
-50
src/tsdb/src/tsdbMain.c
src/tsdb/src/tsdbMain.c
+11
-12
src/tsdb/src/tsdbMeta.c
src/tsdb/src/tsdbMeta.c
+6
-6
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+8
-8
src/util/src/tbuffer.c
src/util/src/tbuffer.c
+3
-3
src/util/src/tqueue.c
src/util/src/tqueue.c
+2
-2
src/util/src/tutil.c
src/util/src/tutil.c
+3
-3
src/vnode/src/vnodeMain.c
src/vnode/src/vnodeMain.c
+11
-11
src/vnode/src/vnodeRead.c
src/vnode/src/vnodeRead.c
+8
-4
src/vnode/src/vnodeWrite.c
src/vnode/src/vnodeWrite.c
+3
-3
src/wal/src/walMain.c
src/wal/src/walMain.c
+1
-1
tests/examples/C#/TDengineDriver.cs
tests/examples/C#/TDengineDriver.cs
+0
-2
tests/pytest/random-test/random-test-multi-threading-3.py
tests/pytest/random-test/random-test-multi-threading-3.py
+54
-28
tests/pytest/random-test/random-test-multi-threading.py
tests/pytest/random-test/random-test-multi-threading.py
+30
-14
tests/pytest/util/dnodes.py
tests/pytest/util/dnodes.py
+1
-1
tests/script/unique/arbitrator/dn3_mn1_vnode_nomaster.sim
tests/script/unique/arbitrator/dn3_mn1_vnode_nomaster.sim
+269
-0
tests/tsim/src/simExe.c
tests/tsim/src/simExe.c
+4
-4
未找到文件。
src/client/src/TSDBJNIConnector.c
浏览文件 @
3bb9451c
...
...
@@ -309,7 +309,7 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getErrCodeImp(JNI
TAOS
*
tscon
=
(
TAOS
*
)
con
;
if
(
tscon
==
NULL
)
{
jniError
(
"jobj:%p, connection is closed"
,
jobj
);
return
(
jint
)
TSDB_CODE_INVALID_CONNECTION
;
return
(
jint
)
TSDB_CODE_
TSC_
INVALID_CONNECTION
;
}
if
((
void
*
)
tres
==
NULL
)
{
...
...
src/client/src/tscAsync.c
浏览文件 @
3bb9451c
...
...
@@ -53,7 +53,7 @@ void doAsyncQuery(STscObj* pObj, SSqlObj* pSql, void (*fp)(), void* param, const
sem_init
(
&
pSql
->
rspSem
,
0
,
0
);
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
TSDB_DEFAULT_PAYLOAD_SIZE
))
{
tscError
(
"failed to malloc payload"
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
CLI
_OUT_OF_MEMORY
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
TSC
_OUT_OF_MEMORY
);
return
;
}
...
...
@@ -61,7 +61,7 @@ void doAsyncQuery(STscObj* pObj, SSqlObj* pSql, void (*fp)(), void* param, const
pSql
->
sqlstr
=
calloc
(
1
,
sqlLen
+
1
);
if
(
pSql
->
sqlstr
==
NULL
)
{
tscError
(
"%p failed to malloc sql string buffer"
,
pSql
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
CLI
_OUT_OF_MEMORY
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
TSC
_OUT_OF_MEMORY
);
free
(
pCmd
->
payload
);
return
;
}
...
...
@@ -73,7 +73,7 @@ void doAsyncQuery(STscObj* pObj, SSqlObj* pSql, void (*fp)(), void* param, const
tscDump
(
"%p SQL: %s"
,
pSql
,
pSql
->
sqlstr
);
int32_t
code
=
tsParseSql
(
pSql
,
true
);
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
return
;
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
pSql
->
res
.
code
=
code
;
...
...
@@ -89,16 +89,16 @@ void taos_query_a(TAOS *taos, const char *sqlstr, __async_cb_func_t fp, void *pa
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
tscError
(
"bug!!! pObj:%p"
,
pObj
);
terrno
=
TSDB_CODE_DISCONNECTED
;
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_DISCONNECTED
);
terrno
=
TSDB_CODE_
TSC_
DISCONNECTED
;
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
TSC_
DISCONNECTED
);
return
;
}
int32_t
sqlLen
=
strlen
(
sqlstr
);
if
(
sqlLen
>
tsMaxSQLStringLen
)
{
tscError
(
"sql string exceeds max length:%d"
,
tsMaxSQLStringLen
);
terrno
=
TSDB_CODE_INVALID_SQL
;
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_INVALID_SQL
);
terrno
=
TSDB_CODE_
TSC_
INVALID_SQL
;
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
TSC_
INVALID_SQL
);
return
;
}
...
...
@@ -107,8 +107,8 @@ void taos_query_a(TAOS *taos, const char *sqlstr, __async_cb_func_t fp, void *pa
SSqlObj
*
pSql
=
(
SSqlObj
*
)
calloc
(
1
,
sizeof
(
SSqlObj
));
if
(
pSql
==
NULL
)
{
tscError
(
"failed to malloc sqlObj"
);
terrno
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
CLI
_OUT_OF_MEMORY
);
terrno
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
TSC
_OUT_OF_MEMORY
);
return
;
}
...
...
@@ -203,7 +203,7 @@ void taos_fetch_rows_a(TAOS_RES *taosa, void (*fp)(void *, TAOS_RES *, int), voi
SSqlObj
*
pSql
=
(
SSqlObj
*
)
taosa
;
if
(
pSql
==
NULL
||
pSql
->
signature
!=
pSql
)
{
tscError
(
"sql object is NULL"
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_DISCONNECTED
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
TSC_
DISCONNECTED
);
return
;
}
...
...
@@ -212,7 +212,7 @@ void taos_fetch_rows_a(TAOS_RES *taosa, void (*fp)(void *, TAOS_RES *, int), voi
if
(
pRes
->
qhandle
==
0
)
{
tscError
(
"qhandle is NULL"
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_INVALID_QHANDLE
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
TSC_
INVALID_QHANDLE
);
return
;
}
...
...
@@ -260,7 +260,7 @@ void taos_fetch_row_a(TAOS_RES *taosa, void (*fp)(void *, TAOS_RES *, TAOS_ROW),
SSqlObj
*
pSql
=
(
SSqlObj
*
)
taosa
;
if
(
pSql
==
NULL
||
pSql
->
signature
!=
pSql
)
{
tscError
(
"sql object is NULL"
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_DISCONNECTED
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
TSC_
DISCONNECTED
);
return
;
}
...
...
@@ -269,7 +269,7 @@ void taos_fetch_row_a(TAOS_RES *taosa, void (*fp)(void *, TAOS_RES *, TAOS_ROW),
if
(
pRes
->
qhandle
==
0
)
{
tscError
(
"qhandle is NULL"
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_INVALID_QHANDLE
);
tscQueueAsyncError
(
fp
,
param
,
TSDB_CODE_
TSC_
INVALID_QHANDLE
);
return
;
}
...
...
@@ -466,7 +466,7 @@ void tscTableMetaCallBack(void *param, TAOS_RES *res, int code) {
code
=
tscGetSTableVgroupInfo
(
pSql
,
0
);
pRes
->
code
=
code
;
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
return
;
}
else
{
// normal async query continues
if
(
pCmd
->
parseFinished
)
{
tscTrace
(
"%p re-send data to vnode in table Meta callback since sql parsed completed"
,
pSql
);
...
...
@@ -491,7 +491,7 @@ void tscTableMetaCallBack(void *param, TAOS_RES *res, int code) {
return
;
}
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
return
;
}
}
...
...
@@ -500,13 +500,13 @@ void tscTableMetaCallBack(void *param, TAOS_RES *res, int code) {
code
=
tscGetTableMeta
(
pSql
,
pTableMetaInfo
);
pRes
->
code
=
code
;
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_SUCCESS
&&
UTIL_TABLE_IS_SUPER_TABLE
(
pTableMetaInfo
))
{
code
=
tscGetSTableVgroupInfo
(
pSql
,
pCmd
->
clauseIndex
);
pRes
->
code
=
code
;
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
return
;
}
}
...
...
src/client/src/tscFunctionImpl.c
浏览文件 @
3bb9451c
...
...
@@ -156,7 +156,7 @@ int32_t getResultDataInfo(int32_t dataType, int32_t dataBytes, int32_t functionI
int16_t
*
bytes
,
int32_t
*
interBytes
,
int16_t
extLength
,
bool
isSuperTable
)
{
if
(
!
isValidDataType
(
dataType
,
dataBytes
))
{
tscError
(
"Illegal data type %d or data type length %d"
,
dataType
,
dataBytes
);
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
functionId
==
TSDB_FUNC_TS
||
functionId
==
TSDB_FUNC_TS_DUMMY
||
functionId
==
TSDB_FUNC_TAG_DUMMY
||
...
...
@@ -325,7 +325,7 @@ int32_t getResultDataInfo(int32_t dataType, int32_t dataBytes, int32_t functionI
*
bytes
=
(
int16_t
)
dataBytes
;
*
interBytes
=
dataBytes
+
sizeof
(
SLastrowInfo
);
}
else
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
TSDB_CODE_SUCCESS
;
...
...
src/client/src/tscLocal.c
浏览文件 @
3bb9451c
...
...
@@ -345,12 +345,12 @@ static void tscProcessServStatus(SSqlObj *pSql) {
STscObj
*
pObj
=
pSql
->
pTscObj
;
if
(
pObj
->
pHb
!=
NULL
)
{
if
(
pObj
->
pHb
->
res
.
code
==
TSDB_CODE_NETWORK_UNAVAIL
)
{
pSql
->
res
.
code
=
TSDB_CODE_NETWORK_UNAVAIL
;
if
(
pObj
->
pHb
->
res
.
code
==
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
)
{
pSql
->
res
.
code
=
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
;
return
;
}
}
else
{
if
(
pSql
->
res
.
code
==
TSDB_CODE_NETWORK_UNAVAIL
)
{
if
(
pSql
->
res
.
code
==
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
)
{
return
;
}
}
...
...
@@ -414,7 +414,7 @@ int tscProcessLocalCmd(SSqlObj *pSql) {
}
else
if
(
pCmd
->
command
==
TSDB_SQL_SERV_STATUS
)
{
tscProcessServStatus
(
pSql
);
}
else
{
pSql
->
res
.
code
=
TSDB_CODE_INVALID_SQL
;
pSql
->
res
.
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
tscError
(
"%p not support command:%d"
,
pSql
,
pCmd
->
command
);
}
...
...
src/client/src/tscParseInsert.c
浏览文件 @
3bb9451c
...
...
@@ -134,7 +134,7 @@ int tsParseTime(SSQLToken *pToken, int64_t *time, char **next, char *error, int1
}
if
(
getTimestampInUsFromStr
(
valueToken
.
z
,
valueToken
.
n
,
&
interval
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
timePrec
==
TSDB_TIME_PRECISION_MILLI
)
{
...
...
@@ -423,7 +423,7 @@ int tsParseOneRowData(char **str, STableDataBlocks *pDataBlocks, SSchema schema[
}
strcpy
(
error
,
"client out of memory"
);
*
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
*
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
-
1
;
}
...
...
@@ -431,7 +431,7 @@ int tsParseOneRowData(char **str, STableDataBlocks *pDataBlocks, SSchema schema[
if
((
type
!=
TK_NOW
&&
type
!=
TK_INTEGER
&&
type
!=
TK_STRING
&&
type
!=
TK_FLOAT
&&
type
!=
TK_BOOL
&&
type
!=
TK_NULL
&&
type
!=
TK_HEX
&&
type
!=
TK_OCT
&&
type
!=
TK_BIN
)
||
(
sToken
.
n
==
0
)
||
(
type
==
TK_RP
))
{
tscInvalidSQLErrMsg
(
error
,
"invalid data or symbol"
,
sToken
.
z
);
*
code
=
TSDB_CODE_INVALID_SQL
;
*
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
return
-
1
;
}
...
...
@@ -463,13 +463,13 @@ int tsParseOneRowData(char **str, STableDataBlocks *pDataBlocks, SSchema schema[
bool
isPrimaryKey
=
(
colIndex
==
PRIMARYKEY_TIMESTAMP_COL_INDEX
);
int32_t
ret
=
tsParseOneColumnData
(
pSchema
,
&
sToken
,
start
,
error
,
str
,
isPrimaryKey
,
timePrec
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
*
code
=
TSDB_CODE_INVALID_SQL
;
*
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
return
-
1
;
// NOTE: here 0 mean error!
}
if
(
isPrimaryKey
&&
tsCheckTimestamp
(
pDataBlocks
,
start
)
!=
TSDB_CODE_SUCCESS
)
{
tscInvalidSQLErrMsg
(
error
,
"client time/server time can not be mixed up"
,
sToken
.
z
);
*
code
=
TSDB_CODE_INVALID_TIME_STAMP
;
*
code
=
TSDB_CODE_
TSC_
INVALID_TIME_STAMP
;
return
-
1
;
}
}
...
...
@@ -526,7 +526,7 @@ int tsParseValues(char **str, STableDataBlocks *pDataBlock, STableMeta *pTableMe
if
(
spd
->
hasVal
[
0
]
==
false
)
{
strcpy
(
error
,
"primary timestamp column can not be null"
);
*
code
=
TSDB_CODE_INVALID_SQL
;
*
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
return
-
1
;
}
...
...
@@ -560,7 +560,7 @@ int tsParseValues(char **str, STableDataBlocks *pDataBlock, STableMeta *pTableMe
*
str
+=
index
;
if
(
sToken
.
n
==
0
||
sToken
.
type
!=
TK_RP
)
{
tscInvalidSQLErrMsg
(
error
,
") expected"
,
*
str
);
*
code
=
TSDB_CODE_INVALID_SQL
;
*
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
return
-
1
;
}
...
...
@@ -569,7 +569,7 @@ int tsParseValues(char **str, STableDataBlocks *pDataBlock, STableMeta *pTableMe
if
(
numOfRows
<=
0
)
{
strcpy
(
error
,
"no any data points"
);
*
code
=
TSDB_CODE_INVALID_SQL
;
*
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
return
-
1
;
}
else
{
return
numOfRows
;
...
...
@@ -611,7 +611,7 @@ int32_t tscAllocateMemIfNeed(STableDataBlocks *pDataBlock, int32_t rowSize, int3
// do nothing, if allocate more memory failed
pDataBlock
->
nAllocSize
=
nAllocSizeOld
;
*
numOfRows
=
(
int32_t
)(
pDataBlock
->
nAllocSize
-
pDataBlock
->
headerSize
)
/
rowSize
;
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
}
...
...
@@ -687,13 +687,13 @@ static int32_t doParseInsertStatement(SSqlObj *pSql, void *pTableList, char **st
int32_t
maxNumOfRows
;
ret
=
tscAllocateMemIfNeed
(
dataBuf
,
tinfo
.
rowSize
,
&
maxNumOfRows
);
if
(
TSDB_CODE_SUCCESS
!=
ret
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
int32_t
code
=
TSDB_CODE_INVALID_SQL
;
int32_t
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
char
*
tmpTokenBuf
=
calloc
(
1
,
4096
);
// used for deleting Escape character: \\, \', \"
if
(
NULL
==
tmpTokenBuf
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
int32_t
numOfRows
=
tsParseValues
(
str
,
dataBuf
,
pTableMeta
,
maxNumOfRows
,
spd
,
pCmd
->
payload
,
&
code
,
tmpTokenBuf
);
...
...
@@ -772,7 +772,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) {
}
if
(
numOfColList
==
0
&&
cstart
!=
NULL
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
TABLE_INDEX
);
...
...
@@ -954,7 +954,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) {
createTable
=
true
;
code
=
tscGetMeterMetaEx
(
pSql
,
pTableMetaInfo
,
true
);
if
(
TSDB_CODE_ACTION_IN_PROGRESS
==
code
)
{
if
(
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
==
code
)
{
return
code
;
}
...
...
@@ -967,7 +967,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) {
code
=
tscGetMeterMetaEx
(
pSql
,
pTableMetaInfo
,
false
);
if
(
pCmd
->
curSql
==
NULL
)
{
assert
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
);
assert
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
);
}
}
...
...
@@ -981,7 +981,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) {
}
if
(
*
sqlstr
==
NULL
)
{
code
=
TSDB_CODE_INVALID_SQL
;
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
code
;
...
...
@@ -1046,7 +1046,7 @@ int doParseInsertSql(SSqlObj *pSql, char *str) {
pSql
->
cmd
.
pDataBlocks
=
tscCreateBlockArrayList
();
if
(
NULL
==
pCmd
->
pTableList
||
NULL
==
pSql
->
cmd
.
pDataBlocks
)
{
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
goto
_error_clean
;
}
}
else
{
...
...
@@ -1075,7 +1075,7 @@ int doParseInsertSql(SSqlObj *pSql, char *str) {
* Otherwise, create the first submit block and submit to virtual node.
*/
if
(
totalNum
==
0
)
{
code
=
TSDB_CODE_INVALID_SQL
;
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
goto
_error_clean
;
}
else
{
break
;
...
...
@@ -1103,7 +1103,7 @@ int doParseInsertSql(SSqlObj *pSql, char *str) {
* And during the getMeterMetaCallback function, the sql string will be parsed from the
* interrupted position.
*/
if
(
TSDB_CODE_ACTION_IN_PROGRESS
==
code
)
{
if
(
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
==
code
)
{
tscTrace
(
"%p waiting for get table meta during insert, then resume from offset: %"
PRId64
" , %s"
,
pSql
,
pos
,
pCmd
->
curSql
);
return
code
;
...
...
@@ -1297,7 +1297,7 @@ _clean:
int
tsParseInsertSql
(
SSqlObj
*
pSql
)
{
if
(
!
pSql
->
pTscObj
->
writeAuth
)
{
return
TSDB_CODE_
NO_RIGHTS
;
return
TSDB_CODE_
TSC_NO_WRITE_AUTH
;
}
int32_t
index
=
0
;
...
...
src/client/src/tscPrepare.c
浏览文件 @
3bb9451c
...
...
@@ -24,7 +24,6 @@
#include "tscSubquery.h"
int
tsParseInsertSql
(
SSqlObj
*
pSql
);
int
taos_query_imp
(
STscObj
*
pObj
,
SSqlObj
*
pSql
);
////////////////////////////////////////////////////////////////////////////////
// functions for normal statement preparation
...
...
@@ -62,7 +61,7 @@ static int normalStmtAddPart(SNormalStmt* stmt, bool isParam, char* str, uint32_
size
*=
2
;
void
*
tmp
=
realloc
(
stmt
->
parts
,
sizeof
(
SNormalStmtPart
)
*
size
);
if
(
tmp
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
stmt
->
sizeParts
=
size
;
stmt
->
parts
=
(
SNormalStmtPart
*
)
tmp
;
...
...
@@ -133,7 +132,7 @@ static int normalStmtBindParam(STscStmt* stmt, TAOS_BIND* bind) {
case
TSDB_DATA_TYPE_NCHAR
:
var
->
pz
=
(
char
*
)
malloc
((
*
tb
->
length
)
+
1
);
if
(
var
->
pz
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
memcpy
(
var
->
pz
,
tb
->
buffer
,
(
*
tb
->
length
));
var
->
pz
[
*
tb
->
length
]
=
0
;
...
...
@@ -142,7 +141,7 @@ static int normalStmtBindParam(STscStmt* stmt, TAOS_BIND* bind) {
default:
tscTrace
(
"param %d: type mismatch or invalid"
,
i
);
return
TSDB_CODE_INVALID_VALUE
;
return
TSDB_CODE_
TSC_
INVALID_VALUE
;
}
}
...
...
@@ -187,7 +186,7 @@ static int normalStmtPrepare(STscStmt* stmt) {
if
(
normal
->
numParams
>
0
)
{
normal
->
params
=
calloc
(
normal
->
numParams
,
sizeof
(
tVariant
));
if
(
normal
->
params
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
}
...
...
@@ -273,7 +272,7 @@ static int doBindParam(char* data, SParamInfo* param, TAOS_BIND* bind) {
}
if
(
bind
->
buffer_type
!=
param
->
type
)
{
return
TSDB_CODE_INVALID_VALUE
;
return
TSDB_CODE_
TSC_
INVALID_VALUE
;
}
short
size
=
0
;
...
...
@@ -300,7 +299,7 @@ static int doBindParam(char* data, SParamInfo* param, TAOS_BIND* bind) {
case
TSDB_DATA_TYPE_BINARY
:
if
((
*
bind
->
length
)
>
param
->
bytes
)
{
return
TSDB_CODE_INVALID_VALUE
;
return
TSDB_CODE_
TSC_
INVALID_VALUE
;
}
size
=
(
short
)
*
bind
->
length
;
STR_WITH_SIZE_TO_VARSTR
(
data
+
param
->
offset
,
bind
->
buffer
,
size
);
...
...
@@ -309,14 +308,14 @@ static int doBindParam(char* data, SParamInfo* param, TAOS_BIND* bind) {
case
TSDB_DATA_TYPE_NCHAR
:
{
size_t
output
=
0
;
if
(
!
taosMbsToUcs4
(
bind
->
buffer
,
*
bind
->
length
,
varDataVal
(
data
+
param
->
offset
),
param
->
bytes
-
VARSTR_HEADER_SIZE
,
&
output
))
{
return
TSDB_CODE_INVALID_VALUE
;
return
TSDB_CODE_
TSC_
INVALID_VALUE
;
}
varDataSetLen
(
data
+
param
->
offset
,
output
);
return
TSDB_CODE_SUCCESS
;
}
default:
assert
(
false
);
return
TSDB_CODE_INVALID_VALUE
;
return
TSDB_CODE_
TSC_
INVALID_VALUE
;
}
memcpy
(
data
+
param
->
offset
,
bind
->
buffer
,
size
);
...
...
@@ -344,7 +343,7 @@ static int insertStmtBindParam(STscStmt* stmt, TAOS_BIND* bind) {
const
double
factor
=
1
.
5
;
void
*
tmp
=
realloc
(
pBlock
->
pData
,
(
uint32_t
)(
totalDataSize
*
factor
));
if
(
tmp
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
pBlock
->
pData
=
(
char
*
)
tmp
;
pBlock
->
nAllocSize
=
(
uint32_t
)(
totalDataSize
*
factor
);
...
...
@@ -416,7 +415,7 @@ static int insertStmtReset(STscStmt* pStmt) {
static
int
insertStmtExecute
(
STscStmt
*
stmt
)
{
SSqlCmd
*
pCmd
=
&
stmt
->
pSql
->
cmd
;
if
(
pCmd
->
batchSize
==
0
)
{
return
TSDB_CODE_INVALID_VALUE
;
return
TSDB_CODE_
TSC_
INVALID_VALUE
;
}
if
((
pCmd
->
batchSize
%
2
)
==
1
)
{
++
pCmd
->
batchSize
;
...
...
@@ -470,14 +469,14 @@ static int insertStmtExecute(STscStmt* stmt) {
TAOS_STMT
*
taos_stmt_init
(
TAOS
*
taos
)
{
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
terrno
=
TSDB_CODE_DISCONNECTED
;
terrno
=
TSDB_CODE_
TSC_
DISCONNECTED
;
tscError
(
"connection disconnected"
);
return
NULL
;
}
STscStmt
*
pStmt
=
calloc
(
1
,
sizeof
(
STscStmt
));
if
(
pStmt
==
NULL
)
{
terrno
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
tscError
(
"failed to allocate memory for statement"
);
return
NULL
;
}
...
...
@@ -486,7 +485,7 @@ TAOS_STMT* taos_stmt_init(TAOS* taos) {
SSqlObj
*
pSql
=
calloc
(
1
,
sizeof
(
SSqlObj
));
if
(
pSql
==
NULL
)
{
free
(
pStmt
);
terrno
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
tscError
(
"failed to allocate memory for statement"
);
return
NULL
;
}
...
...
@@ -504,8 +503,8 @@ int taos_stmt_prepare(TAOS_STMT* stmt, const char* sql, unsigned long length) {
STscStmt
*
pStmt
=
(
STscStmt
*
)
stmt
;
if
(
stmt
==
NULL
||
pStmt
->
taos
==
NULL
||
pStmt
->
pSql
==
NULL
)
{
terrno
=
TSDB_CODE_DISCONNECTED
;
return
TSDB_CODE_DISCONNECTED
;
terrno
=
TSDB_CODE_
TSC_
DISCONNECTED
;
return
TSDB_CODE_
TSC_
DISCONNECTED
;
}
SSqlObj
*
pSql
=
pStmt
->
pSql
;
...
...
@@ -520,7 +519,7 @@ int taos_stmt_prepare(TAOS_STMT* stmt, const char* sql, unsigned long length) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
TSDB_DEFAULT_PAYLOAD_SIZE
))
{
tscError
(
"%p failed to malloc payload buffer"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
pSql
->
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
...
...
@@ -528,7 +527,7 @@ int taos_stmt_prepare(TAOS_STMT* stmt, const char* sql, unsigned long length) {
if
(
pSql
->
sqlstr
==
NULL
)
{
tscError
(
"%p failed to malloc sql string buffer"
,
pSql
);
free
(
pCmd
->
payload
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
pRes
->
qhandle
=
0
;
...
...
@@ -544,7 +543,7 @@ int taos_stmt_prepare(TAOS_STMT* stmt, const char* sql, unsigned long length) {
pSql
->
cmd
.
batchSize
=
0
;
int32_t
code
=
tsParseSql
(
pSql
,
true
);
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
{
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
{
// wait for the callback function to post the semaphore
tsem_wait
(
&
pSql
->
rspSem
);
return
pSql
->
res
.
code
;
...
...
@@ -589,7 +588,7 @@ int taos_stmt_add_batch(TAOS_STMT* stmt) {
if
(
pStmt
->
isInsert
)
{
return
insertStmtAddBatch
(
pStmt
);
}
return
TSDB_CODE_OPS_NOT_SUPPORT
;
return
TSDB_CODE_
COM_
OPS_NOT_SUPPORT
;
}
int
taos_stmt_reset
(
TAOS_STMT
*
stmt
)
{
...
...
@@ -608,7 +607,7 @@ int taos_stmt_execute(TAOS_STMT* stmt) {
}
else
{
char
*
sql
=
normalStmtBuildSql
(
pStmt
);
if
(
sql
==
NULL
)
{
ret
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
ret
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
else
{
tfree
(
pStmt
->
pSql
->
sqlstr
);
pStmt
->
pSql
->
sqlstr
=
sql
;
...
...
src/client/src/tscSQLParser.c
浏览文件 @
3bb9451c
...
...
@@ -41,7 +41,7 @@
#define COLUMN_INDEX_VALIDE(index) (((index).tableIndex >= 0) && ((index).columnIndex >= TSDB_TBNAME_COLUMN_INDEX))
#define TBNAME_LIST_SEP ","
typedef
struct
SColumnList
{
typedef
struct
SColumnList
{
// todo refactor
int32_t
num
;
SColumnIndex
ids
[
TSDB_MAX_COLUMNS
];
}
SColumnList
;
...
...
@@ -179,7 +179,7 @@ static int32_t handlePassword(SSqlCmd* pCmd, SSQLToken* pPwd) {
// todo handle memory leak in error handle function
int32_t
tscToSQLCmd
(
SSqlObj
*
pSql
,
struct
SSqlInfo
*
pInfo
)
{
if
(
pInfo
==
NULL
||
pSql
==
NULL
||
pSql
->
signature
!=
pSql
)
{
return
TSDB_CODE_APP_ERROR
;
return
TSDB_CODE_
TSC_
APP_ERROR
;
}
SSqlCmd
*
pCmd
=
&
(
pSql
->
cmd
);
...
...
@@ -264,7 +264,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
case
TSDB_SQL_SHOW
:
{
if
(
setShowInfo
(
pSql
,
pInfo
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
break
;
...
...
@@ -286,7 +286,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
parseCreateDBOptions
(
pCmd
,
pCreateDB
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
break
;
...
...
@@ -314,7 +314,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSQLToken
*
pPwd
=
&
pInfo
->
pDCLInfo
->
user
.
passwd
;
if
(
handlePassword
(
pCmd
,
pPwd
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
pName
->
n
>
TSDB_USER_LEN
)
{
...
...
@@ -411,12 +411,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if
(
pCmd
->
command
==
TSDB_SQL_CREATE_USER
)
{
if
(
handlePassword
(
pCmd
,
pPwd
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
else
{
if
(
pUser
->
type
==
TSDB_ALTER_USER_PASSWD
)
{
if
(
handlePassword
(
pCmd
,
pPwd
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
else
if
(
pUser
->
type
==
TSDB_ALTER_USER_PRIVILEGES
)
{
assert
(
pPwd
->
type
==
TSDB_DATA_TYPE_NULL
);
...
...
@@ -577,7 +577,7 @@ int32_t parseIntervalClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySql) {
// interval is not null
SSQLToken
*
t
=
&
pQuerySql
->
interval
;
if
(
getTimestampInUsFromStr
(
t
->
z
,
t
->
n
,
&
pQueryInfo
->
intervalTime
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
// if the unit of time window value is millisecond, change the value from microsecond
...
...
@@ -596,7 +596,7 @@ int32_t parseIntervalClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySql) {
// for top/bottom + interval query, we do not add additional timestamp column in the front
if
(
isTopBottomQuery
(
pQueryInfo
))
{
if
(
parseSlidingClause
(
pQueryInfo
,
pQuerySql
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
TSDB_CODE_SUCCESS
;
...
...
@@ -635,7 +635,7 @@ int32_t parseIntervalClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySql) {
}
if
(
tableIndex
==
COLUMN_INDEX_INITIAL_VAL
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
SColumnIndex
index
=
{
tableIndex
,
PRIMARYKEY_TIMESTAMP_COL_INDEX
};
...
...
@@ -651,7 +651,7 @@ int32_t parseIntervalClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySql) {
}
if
(
parseSlidingClause
(
pQueryInfo
,
pQuerySql
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
TSDB_CODE_SUCCESS
;
...
...
@@ -1040,7 +1040,7 @@ int32_t setObjFullName(char* fullName, const char* account, SSQLToken* pDB, SSQL
/* db name is not specified, the tableName dose not include db name */
if
(
pDB
!=
NULL
)
{
if
(
pDB
->
n
>
TSDB_DB_NAME_LEN
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
memcpy
(
&
fullName
[
totalLen
],
pDB
->
z
,
pDB
->
n
);
...
...
@@ -1054,12 +1054,12 @@ int32_t setObjFullName(char* fullName, const char* account, SSQLToken* pDB, SSQL
/* here we only check the table name length limitation */
if
(
tableName
->
n
>
TSDB_TABLE_NAME_LEN
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
else
{
// pDB == NULL, the db prefix name is specified in tableName
/* the length limitation includes tablename + dbname + sep */
if
(
tableName
->
n
>
TSDB_TABLE_NAME_LEN
+
TSDB_DB_NAME_LEN
+
tListLen
(
TS_PATH_DELIMITER
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -1075,7 +1075,7 @@ int32_t setObjFullName(char* fullName, const char* account, SSQLToken* pDB, SSQL
fullName
[
totalLen
]
=
0
;
}
return
(
totalLen
<=
TSDB_TABLE_ID_LEN
)
?
TSDB_CODE_SUCCESS
:
TSDB_CODE_INVALID_SQL
;
return
(
totalLen
<=
TSDB_TABLE_ID_LEN
)
?
TSDB_CODE_SUCCESS
:
TSDB_CODE_
TSC_
INVALID_SQL
;
}
static
void
extractColumnNameFromString
(
tSQLExprItem
*
pItem
)
{
...
...
@@ -1122,12 +1122,12 @@ int32_t parseSelectClause(SSqlCmd* pCmd, int32_t clauseIndex, tSQLExprList* pSel
// select table_name1.field_name1, table_name2.field_name2 from table_name1, table_name2
if
(
addProjectionExprAndResultField
(
pQueryInfo
,
pItem
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
else
if
(
pItem
->
pNode
->
nSQLOptr
>=
TK_COUNT
&&
pItem
->
pNode
->
nSQLOptr
<=
TK_TBID
)
{
// sql function in selection clause, append sql function info in pSqlCmd structure sequentially
if
(
addExprAndResultField
(
pQueryInfo
,
outputIndex
,
pItem
,
true
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
else
if
(
pItem
->
pNode
->
nSQLOptr
>=
TK_PLUS
&&
pItem
->
pNode
->
nSQLOptr
<=
TK_REM
)
{
...
...
@@ -1154,7 +1154,7 @@ int32_t parseSelectClause(SSqlCmd* pCmd, int32_t clauseIndex, tSQLExprList* pSel
}
if
(
buildArithmeticExprString
(
pItem
->
pNode
,
&
p
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
// expr string is set as the parameter of function
...
...
@@ -1230,7 +1230,7 @@ int32_t parseSelectClause(SSqlCmd* pCmd, int32_t clauseIndex, tSQLExprList* pSel
}
if
(
pQueryInfo
->
fieldsInfo
.
numOfOutput
>
TSDB_MAX_COLUMNS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -1246,7 +1246,7 @@ int32_t parseSelectClause(SSqlCmd* pCmd, int32_t clauseIndex, tSQLExprList* pSel
tscTansformSQLFuncForSTableQuery
(
pQueryInfo
);
if
(
hasUnsupportFunctionsForSTableQuery
(
pQueryInfo
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -1414,7 +1414,7 @@ int32_t addProjectionExprAndResultField(SQueryInfo* pQueryInfo, tSQLExprItem* pI
addProjectQueryCol
(
pQueryInfo
,
startPos
,
&
index
,
pItem
);
}
}
else
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
TSDB_CODE_SUCCESS
;
...
...
@@ -1483,7 +1483,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
int16_t
functionID
=
0
;
if
(
changeFunctionID
(
optr
,
&
functionID
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
SSqlExpr
*
pExpr
=
NULL
;
...
...
@@ -1517,12 +1517,14 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
index
.
tableIndex
);
// count tag is equalled to count(tbname)
if
(
index
.
columnIndex
>=
tscGetNumOfColumns
(
pTableMetaInfo
->
pTableMeta
))
{
bool
isTag
=
false
;
if
(
index
.
columnIndex
>=
tscGetNumOfColumns
(
pTableMetaInfo
->
pTableMeta
)
||
index
.
columnIndex
==
TSDB_TBNAME_COLUMN_INDEX
)
{
index
.
columnIndex
=
TSDB_TBNAME_COLUMN_INDEX
;
isTag
=
true
;
}
int32_t
size
=
tDataTypeDesc
[
TSDB_DATA_TYPE_BIGINT
].
nSize
;
pExpr
=
tscSqlExprAppend
(
pQueryInfo
,
functionID
,
&
index
,
TSDB_DATA_TYPE_BIGINT
,
size
,
size
,
false
);
pExpr
=
tscSqlExprAppend
(
pQueryInfo
,
functionID
,
&
index
,
TSDB_DATA_TYPE_BIGINT
,
size
,
size
,
isTag
);
}
}
else
{
// count(*) is equalled to count(primary_timestamp_key)
index
=
(
SColumnIndex
){
0
,
PRIMARYKEY_TIMESTAMP_COL_INDEX
};
...
...
@@ -1543,10 +1545,13 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
tscColumnListInsert
(
pQueryInfo
->
colList
,
&
(
ids
.
ids
[
i
]));
}
}
SColumnIndex
tsCol
=
{.
tableIndex
=
index
.
tableIndex
,
.
columnIndex
=
PRIMARYKEY_TIMESTAMP_COL_INDEX
};
tscColumnListInsert
(
pQueryInfo
->
colList
,
&
tsCol
);
// the time stamp may be always needed
if
(
index
.
tableIndex
>
0
&&
index
.
tableIndex
<
tscGetNumOfColumns
(
pTableMetaInfo
->
pTableMeta
))
{
SColumnIndex
tsCol
=
{.
tableIndex
=
index
.
tableIndex
,
.
columnIndex
=
PRIMARYKEY_TIMESTAMP_COL_INDEX
};
tscColumnListInsert
(
pQueryInfo
->
colList
,
&
tsCol
);
}
return
TSDB_CODE_SUCCESS
;
}
case
TK_SUM
:
...
...
@@ -1596,12 +1601,12 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
int16_t
functionID
=
0
;
if
(
changeFunctionID
(
optr
,
&
functionID
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
getResultDataInfo
(
pSchema
->
type
,
pSchema
->
bytes
,
functionID
,
0
,
&
resultType
,
&
resultSize
,
&
intermediateResSize
,
0
,
false
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
// set the first column ts for diff query
...
...
@@ -1626,14 +1631,14 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
/* set the leastsquares parameters */
char
val
[
8
]
=
{
0
};
if
(
tVariantDump
(
&
pParamElem
[
1
].
pNode
->
val
,
val
,
TSDB_DATA_TYPE_DOUBLE
,
true
)
<
0
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
addExprParams
(
pExpr
,
val
,
TSDB_DATA_TYPE_DOUBLE
,
DOUBLE_BYTES
,
0
);
memset
(
val
,
0
,
tListLen
(
val
));
if
(
tVariantDump
(
&
pParamElem
[
2
].
pNode
->
val
,
val
,
TSDB_DATA_TYPE_DOUBLE
,
true
)
<
0
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
addExprParams
(
pExpr
,
val
,
TSDB_DATA_TYPE_DOUBLE
,
sizeof
(
double
),
0
);
...
...
@@ -1698,7 +1703,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
for
(
int32_t
j
=
0
;
j
<
tscGetNumOfColumns
(
pTableMetaInfo
->
pTableMeta
);
++
j
)
{
index
.
columnIndex
=
j
;
if
(
setExprInfoForFunctions
(
pQueryInfo
,
pSchema
,
functionID
,
pItem
->
aliasName
,
colIndex
++
,
&
index
)
!=
0
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -1716,7 +1721,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
}
if
(
setExprInfoForFunctions
(
pQueryInfo
,
pSchema
,
functionID
,
pItem
->
aliasName
,
colIndex
+
i
,
&
index
)
!=
0
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
}
...
...
@@ -1733,7 +1738,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
SColumnIndex
index
=
{.
tableIndex
=
j
,
.
columnIndex
=
i
};
if
(
setExprInfoForFunctions
(
pQueryInfo
,
pSchema
,
functionID
,
pItem
->
aliasName
,
colIndex
+
i
+
j
,
&
index
)
!=
0
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -1809,7 +1814,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
*/
int16_t
functionId
=
0
;
if
(
changeFunctionID
(
optr
,
&
functionId
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
pExpr
=
tscSqlExprAppend
(
pQueryInfo
,
functionId
,
&
index
,
resultType
,
resultSize
,
resultSize
,
false
);
...
...
@@ -1824,7 +1829,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
int16_t
functionId
=
0
;
if
(
changeFunctionID
(
optr
,
&
functionId
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
// set the first column ts for top/bottom query
...
...
@@ -1930,7 +1935,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr
}
default:
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -2030,7 +2035,7 @@ int32_t doGetColumnIndexByName(SSQLToken* pToken, SQueryInfo* pQueryInfo, SColum
if
(
COLUMN_INDEX_VALIDE
(
*
pIndex
))
{
return
TSDB_CODE_SUCCESS
;
}
else
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -2057,7 +2062,7 @@ int32_t getTableIndexImpl(SSQLToken* pTableToken, SQueryInfo* pQueryInfo, SColum
}
if
(
pIndex
->
tableIndex
<
0
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
TSDB_CODE_SUCCESS
;
...
...
@@ -2068,7 +2073,7 @@ int32_t getTableIndexByName(SSQLToken* pToken, SQueryInfo* pQueryInfo, SColumnIn
extractTableNameFromToken
(
pToken
,
&
tableToken
);
if
(
getTableIndexImpl
(
&
tableToken
,
pQueryInfo
,
pIndex
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
TSDB_CODE_SUCCESS
;
...
...
@@ -2076,13 +2081,13 @@ int32_t getTableIndexByName(SSQLToken* pToken, SQueryInfo* pQueryInfo, SColumnIn
int32_t
getColumnIndexByName
(
const
SSQLToken
*
pToken
,
SQueryInfo
*
pQueryInfo
,
SColumnIndex
*
pIndex
)
{
if
(
pQueryInfo
->
pTableMetaInfo
==
NULL
||
pQueryInfo
->
numOfTables
==
0
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
SSQLToken
tmpToken
=
*
pToken
;
if
(
getTableIndexByName
(
&
tmpToken
,
pQueryInfo
,
pIndex
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
doGetColumnIndexByName
(
&
tmpToken
,
pQueryInfo
,
pIndex
);
...
...
@@ -2255,7 +2260,7 @@ int32_t setKillInfo(SSqlObj* pSql, struct SSqlInfo* pInfo, int32_t killType) {
SSQLToken
*
idStr
=
&
(
pInfo
->
pDCLInfo
->
ip
);
if
(
idStr
->
n
>
TSDB_KILL_MSG_LEN
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
strncpy
(
pCmd
->
payload
,
idStr
->
z
,
idStr
->
n
);
...
...
@@ -2302,7 +2307,7 @@ int32_t tscTansformSQLFuncForSTableQuery(SQueryInfo* pQueryInfo) {
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
if
(
pTableMetaInfo
->
pTableMeta
==
NULL
||
!
UTIL_TABLE_IS_SUPER_TABLE
(
pTableMetaInfo
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
assert
(
tscGetNumOfTags
(
pTableMetaInfo
->
pTableMeta
)
>=
0
);
...
...
@@ -2324,7 +2329,7 @@ int32_t tscTansformSQLFuncForSTableQuery(SQueryInfo* pQueryInfo) {
(
functionId
>=
TSDB_FUNC_RATE
&&
functionId
<=
TSDB_FUNC_AVG_IRATE
))
{
if
(
getResultDataInfo
(
pSrcSchema
->
type
,
pSrcSchema
->
bytes
,
functionId
,
pExpr
->
param
[
0
].
i64Key
,
&
type
,
&
bytes
,
&
interBytes
,
0
,
true
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
tscSqlExprUpdate
(
pQueryInfo
,
k
,
functionId
,
pExpr
->
colInfo
.
colIndex
,
TSDB_DATA_TYPE_BINARY
,
bytes
);
...
...
@@ -2748,7 +2753,7 @@ static bool isExprDirectParentOfLeaftNode(tSQLExpr* pExpr) {
static
int32_t
tSQLExprLeafToString
(
tSQLExpr
*
pExpr
,
bool
addParentheses
,
char
**
output
)
{
if
(
!
isExprDirectParentOfLeaftNode
(
pExpr
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
tSQLExpr
*
pLeft
=
pExpr
->
pLeft
;
...
...
@@ -2761,7 +2766,7 @@ static int32_t tSQLExprLeafToString(tSQLExpr* pExpr, bool addParentheses, char**
tSQLExprNodeToString
(
pLeft
,
output
);
if
(
optrToString
(
pExpr
,
output
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
tSQLExprNodeToString
(
pRight
,
output
);
...
...
@@ -2827,7 +2832,7 @@ static int32_t optrToString(tSQLExpr* pExpr, char** exprString) {
break
;
}
default:
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
*
exprString
+=
1
;
...
...
@@ -2838,7 +2843,7 @@ static int32_t optrToString(tSQLExpr* pExpr, char** exprString) {
static
int32_t
tablenameListToString
(
tSQLExpr
*
pExpr
,
SStringBuilder
*
sb
)
{
tSQLExprList
*
pList
=
pExpr
->
pParam
;
if
(
pList
->
nExpr
<=
0
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
pList
->
nExpr
>
0
)
{
...
...
@@ -2854,7 +2859,7 @@ static int32_t tablenameListToString(tSQLExpr* pExpr, SStringBuilder* sb) {
}
if
(
pSub
->
val
.
nLen
<=
0
||
pSub
->
val
.
nLen
>
TSDB_TABLE_NAME_LEN
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -2902,7 +2907,7 @@ static int32_t extractColumnFilterInfo(SQueryInfo* pQueryInfo, SColumnIndex* pIn
// TODO fixme: failed to invalid the filter expression: "col1 = 1 OR col2 = 2"
pColFilter
=
addColumnFilterInfo
(
pColumn
);
}
else
{
// error;
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
pColFilter
->
filterstr
=
...
...
@@ -2977,7 +2982,7 @@ static int32_t getTablenameCond(SQueryInfo* pQueryInfo, tSQLExpr* pTableCond, SS
tSQLExpr
*
pRight
=
pTableCond
->
pRight
;
if
(
!
isTablenameToken
(
&
pLeft
->
colInfo
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
int32_t
ret
=
TSDB_CODE_SUCCESS
;
...
...
@@ -3010,7 +3015,7 @@ static int32_t getColumnQueryCondInfo(SQueryInfo* pQueryInfo, tSQLExpr* pExpr, i
}
else
{
// handle leaf node
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
if
(
getColumnIndexByName
(
&
pExpr
->
pLeft
->
colInfo
,
pQueryInfo
,
&
index
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
extractColumnFilterInfo
(
pQueryInfo
,
&
index
,
pExpr
,
relOptr
);
...
...
@@ -3034,7 +3039,7 @@ static int32_t getJoinCondInfo(SQueryInfo* pQueryInfo, tSQLExpr* pExpr) {
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
if
(
getColumnIndexByName
(
&
pExpr
->
pLeft
->
colInfo
,
pQueryInfo
,
&
index
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
index
.
tableIndex
);
...
...
@@ -3046,7 +3051,7 @@ static int32_t getJoinCondInfo(SQueryInfo* pQueryInfo, tSQLExpr* pExpr) {
index
=
(
SColumnIndex
)
COLUMN_INDEX_INITIALIZER
;
if
(
getColumnIndexByName
(
&
pExpr
->
pRight
->
colInfo
,
pQueryInfo
,
&
index
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
index
.
tableIndex
);
...
...
@@ -3072,7 +3077,7 @@ int32_t buildArithmeticExprString(tSQLExpr* pExpr, char** exprString) {
}
else
{
int32_t
ret
=
tSQLExprNodeToString
(
pLeft
,
exprString
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -3083,7 +3088,7 @@ int32_t buildArithmeticExprString(tSQLExpr* pExpr, char** exprString) {
}
else
{
int32_t
ret
=
tSQLExprNodeToString
(
pRight
,
exprString
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -3097,12 +3102,12 @@ static int32_t validateSQLExpr(tSQLExpr* pExpr, SQueryInfo* pQueryInfo, SColumnL
if
(
*
type
==
NON_ARITHMEIC_EXPR
)
{
*
type
=
NORMAL_ARITHMETIC
;
}
else
if
(
*
type
==
AGG_ARIGHTMEIC
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
if
(
getColumnIndexByName
(
&
pExpr
->
colInfo
,
pQueryInfo
,
&
index
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
// if column is timestamp, bool, binary, nchar, not support arithmetic, so return invalid sql
...
...
@@ -3111,17 +3116,17 @@ static int32_t validateSQLExpr(tSQLExpr* pExpr, SQueryInfo* pQueryInfo, SColumnL
if
((
pSchema
->
type
==
TSDB_DATA_TYPE_TIMESTAMP
)
||
(
pSchema
->
type
==
TSDB_DATA_TYPE_BOOL
)
||
(
pSchema
->
type
==
TSDB_DATA_TYPE_BINARY
)
||
(
pSchema
->
type
==
TSDB_DATA_TYPE_NCHAR
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
pList
->
ids
[
pList
->
num
++
]
=
index
;
}
else
if
(
pExpr
->
nSQLOptr
==
TK_FLOAT
&&
(
isnan
(
pExpr
->
val
.
dKey
)
||
isinf
(
pExpr
->
val
.
dKey
)))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
else
if
(
pExpr
->
nSQLOptr
>=
TK_COUNT
&&
pExpr
->
nSQLOptr
<=
TK_AVG_IRATE
)
{
if
(
*
type
==
NON_ARITHMEIC_EXPR
)
{
*
type
=
AGG_ARIGHTMEIC
;
}
else
if
(
*
type
==
NORMAL_ARITHMETIC
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
int32_t
outputIndex
=
tscSqlExprNumOfExprs
(
pQueryInfo
);
...
...
@@ -3130,7 +3135,7 @@ static int32_t validateSQLExpr(tSQLExpr* pExpr, SQueryInfo* pQueryInfo, SColumnL
// sql function in selection clause, append sql function info in pSqlCmd structure sequentially
if
(
addExprAndResultField
(
pQueryInfo
,
outputIndex
,
&
item
,
false
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -3334,7 +3339,7 @@ static int32_t handleExprInQueryCond(SQueryInfo* pQueryInfo, tSQLExpr** pExpr, S
if
(
index
.
columnIndex
==
PRIMARYKEY_TIMESTAMP_COL_INDEX
)
{
// query on time range
if
(
!
validateJoinExprNode
(
pQueryInfo
,
*
pExpr
,
&
index
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
// set join query condition
...
...
@@ -3396,7 +3401,7 @@ static int32_t handleExprInQueryCond(SQueryInfo* pQueryInfo, tSQLExpr** pExpr, S
}
else
{
if
(
pRight
->
nSQLOptr
==
TK_ID
)
{
// join on tag columns for stable query
if
(
!
validateJoinExprNode
(
pQueryInfo
,
*
pExpr
,
&
index
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
pCondExpr
->
pJoinExpr
!=
NULL
)
{
...
...
@@ -3441,7 +3446,7 @@ int32_t getQueryCondExpr(SQueryInfo* pQueryInfo, tSQLExpr** pExpr, SCondExpr* pC
tSQLExpr
*
pRight
=
(
*
pExpr
)
->
pRight
;
if
(
!
isValidExpr
(
pLeft
,
pRight
,
(
*
pExpr
)
->
nSQLOptr
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
int32_t
leftType
=
-
1
;
...
...
@@ -3679,7 +3684,7 @@ static int32_t getTimeRangeFromExpr(SQueryInfo* pQueryInfo, tSQLExpr* pExpr) {
}
else
{
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
if
(
getColumnIndexByName
(
&
pExpr
->
pLeft
->
colInfo
,
pQueryInfo
,
&
index
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
index
.
tableIndex
);
...
...
@@ -3907,7 +3912,7 @@ int32_t getTimeRange(STimeWindow* win, tSQLExpr* pRight, int32_t optr, int16_t t
* where ts in ('2015-12-12 4:8:12')
*/
if
(
pRight
->
nSQLOptr
==
TK_SET
||
optr
==
TK_IN
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
int64_t
val
=
0
;
...
...
@@ -3920,14 +3925,14 @@ int32_t getTimeRange(STimeWindow* win, tSQLExpr* pRight, int32_t optr, int16_t t
if
(
taosParseTime
(
pRight
->
val
.
pz
,
&
val
,
pRight
->
val
.
nLen
,
TSDB_TIME_PRECISION_MICRO
)
==
TSDB_CODE_SUCCESS
)
{
parsed
=
true
;
}
else
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
else
{
SSQLToken
token
=
{.
z
=
pRight
->
val
.
pz
,
.
n
=
pRight
->
val
.
nLen
,
.
type
=
TK_ID
};
int32_t
len
=
tSQLGetToken
(
pRight
->
val
.
pz
,
&
token
.
type
);
if
((
token
.
type
!=
TK_INTEGER
&&
token
.
type
!=
TK_FLOAT
)
||
len
!=
pRight
->
val
.
nLen
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
}
else
if
(
pRight
->
nSQLOptr
==
TK_INTEGER
&&
timePrecision
==
TSDB_TIME_PRECISION_MILLI
)
{
...
...
@@ -4035,7 +4040,7 @@ int32_t parseFillClause(SQueryInfo* pQueryInfo, SQuerySQL* pQuerySQL) {
if
(
pQueryInfo
->
fillVal
==
NULL
)
{
pQueryInfo
->
fillVal
=
calloc
(
size
,
sizeof
(
int64_t
));
if
(
pQueryInfo
->
fillVal
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
}
...
...
@@ -4346,7 +4351,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
!
validateOneTags
(
pCmd
,
&
pFieldList
->
p
[
0
]))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
tscFieldInfoAppend
(
&
pQueryInfo
->
fieldsInfo
,
&
pFieldList
->
p
[
0
]);
...
...
@@ -4369,7 +4374,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSQLToken
name
=
{.
z
=
pItem
->
pVar
.
pz
,
.
n
=
pItem
->
pVar
.
nLen
,
.
type
=
TK_STRING
};
if
(
getColumnIndexByName
(
&
name
,
pQueryInfo
,
&
index
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
index
.
columnIndex
<
tscGetNumOfColumns
(
pTableMeta
))
{
...
...
@@ -4386,7 +4391,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
else
if
(
pAlterSQL
->
type
==
TSDB_ALTER_TABLE_CHANGE_TAG_COLUMN
)
{
tVariantList
*
pVarList
=
pAlterSQL
->
varList
;
if
(
pVarList
->
nExpr
>
2
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
tVariantListItem
*
pSrcItem
=
&
pAlterSQL
->
varList
->
a
[
0
];
...
...
@@ -4405,12 +4410,12 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSQLToken
srcToken
=
{.
z
=
pSrcItem
->
pVar
.
pz
,
.
n
=
pSrcItem
->
pVar
.
nLen
,
.
type
=
TK_STRING
};
if
(
getColumnIndexByName
(
&
srcToken
,
pQueryInfo
,
&
srcIndex
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
SSQLToken
destToken
=
{.
z
=
pDstItem
->
pVar
.
pz
,
.
n
=
pDstItem
->
pVar
.
nLen
,
.
type
=
TK_STRING
};
if
(
getColumnIndexByName
(
&
destToken
,
pQueryInfo
,
&
destIndex
)
==
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
char
name
[
TSDB_COL_NAME_LEN
+
1
]
=
{
0
};
...
...
@@ -4433,7 +4438,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SColumnIndex
columnIndex
=
COLUMN_INDEX_INITIALIZER
;
SSQLToken
name
=
{.
type
=
TK_STRING
,
.
z
=
pTagName
->
pz
,
.
n
=
pTagName
->
nLen
};
if
(
getColumnIndexByName
(
&
name
,
pQueryInfo
,
&
columnIndex
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
columnIndex
.
columnIndex
<
tscGetNumOfColumns
(
pTableMeta
))
{
...
...
@@ -4456,7 +4461,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
int32_t
size
=
sizeof
(
SUpdateTableTagValMsg
)
+
pTagsSchema
->
bytes
+
TSDB_EXTRA_PAYLOAD_SIZE
;
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
size
))
{
tscError
(
"%p failed to malloc for alter table msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SUpdateTableTagValMsg
*
pUpdateMsg
=
(
SUpdateTableTagValMsg
*
)
(
pCmd
->
payload
+
tsRpcHeadSize
);
...
...
@@ -4490,7 +4495,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
!
validateOneColumn
(
pCmd
,
&
pFieldList
->
p
[
0
]))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
tscFieldInfoAppend
(
&
pQueryInfo
->
fieldsInfo
,
&
pFieldList
->
p
[
0
]);
...
...
@@ -4579,7 +4584,7 @@ int32_t validateFunctionsInIntervalOrGroupbyQuery(SQueryInfo* pQueryInfo) {
invalidSqlErrMsg
(
pQueryInfo
->
msg
,
msg1
);
}
return
isProjectionFunction
==
true
?
TSDB_CODE_INVALID_SQL
:
TSDB_CODE_SUCCESS
;
return
isProjectionFunction
==
true
?
TSDB_CODE_
TSC_
INVALID_SQL
:
TSDB_CODE_SUCCESS
;
}
typedef
struct
SDNodeDynConfOption
{
...
...
@@ -4589,7 +4594,7 @@ typedef struct SDNodeDynConfOption {
int32_t
validateDNodeConfig
(
tDCLSQL
*
pOptions
)
{
if
(
pOptions
->
nTokens
<
2
||
pOptions
->
nTokens
>
3
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
const
int
DNODE_DYNAMIC_CFG_OPTIONS_SIZE
=
17
;
...
...
@@ -4615,7 +4620,7 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) {
SSQLToken
*
pValToken
=
&
pOptions
->
a
[
2
];
int32_t
val
=
strtol
(
pValToken
->
z
,
NULL
,
10
);
if
(
val
!=
0
&&
val
!=
1
)
{
return
TSDB_CODE_INVALID_SQL
;
// options value is invalid
return
TSDB_CODE_
TSC_
INVALID_SQL
;
// options value is invalid
}
return
TSDB_CODE_SUCCESS
;
}
else
{
...
...
@@ -4624,7 +4629,7 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) {
int32_t
val
=
strtol
(
pValToken
->
z
,
NULL
,
10
);
if
(
val
<
131
||
val
>
199
)
{
/* options value is out of valid range */
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
for
(
int32_t
i
=
2
;
i
<
DNODE_DYNAMIC_CFG_OPTIONS_SIZE
-
1
;
++
i
)
{
...
...
@@ -4637,12 +4642,12 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) {
}
}
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
int32_t
validateLocalConfig
(
tDCLSQL
*
pOptions
)
{
if
(
pOptions
->
nTokens
<
1
||
pOptions
->
nTokens
>
2
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
SDNodeDynConfOption
LOCAL_DYNAMIC_CFG_OPTIONS
[
6
]
=
{{
"resetLog"
,
8
},
{
"rpcDebugFlag"
,
12
},
{
"tmrDebugFlag"
,
12
},
...
...
@@ -4664,7 +4669,7 @@ int32_t validateLocalConfig(tDCLSQL* pOptions) {
int32_t
val
=
strtol
(
pValToken
->
z
,
NULL
,
10
);
if
(
val
<
131
||
val
>
199
)
{
// options value is out of valid range
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
for
(
int32_t
i
=
1
;
i
<
tListLen
(
LOCAL_DYNAMIC_CFG_OPTIONS
);
++
i
)
{
...
...
@@ -4675,20 +4680,20 @@ int32_t validateLocalConfig(tDCLSQL* pOptions) {
}
}
}
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
int32_t
validateColumnName
(
char
*
name
)
{
bool
ret
=
isKeyWord
(
name
,
strlen
(
name
));
if
(
ret
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
SSQLToken
token
=
{.
z
=
name
};
token
.
n
=
tSQLGetToken
(
name
,
&
token
.
type
);
if
(
token
.
type
!=
TK_STRING
&&
token
.
type
!=
TK_ID
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
token
.
type
==
TK_STRING
)
{
...
...
@@ -4697,13 +4702,13 @@ int32_t validateColumnName(char* name) {
int32_t
k
=
tSQLGetToken
(
token
.
z
,
&
token
.
type
);
if
(
k
!=
token
.
n
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
validateColumnName
(
token
.
z
);
}
else
{
if
(
isNumber
(
&
token
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -4901,15 +4906,15 @@ int32_t parseCreateDBOptions(SSqlCmd* pCmd, SCreateDBInfo* pCreateDbSql) {
setCreateDBOption
(
pMsg
,
pCreateDbSql
);
if
(
setKeepOption
(
pCmd
,
pMsg
,
pCreateDbSql
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
setTimePrecision
(
pCmd
,
pMsg
,
pCreateDbSql
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
tscCheckCreateDbParams
(
pCmd
,
pMsg
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
TSDB_CODE_SUCCESS
;
...
...
@@ -5340,7 +5345,7 @@ int32_t doFunctionsCompatibleCheck(SSqlCmd* pCmd, SQueryInfo* pQueryInfo) {
}
if
(
checkUpdateTagPrjFunctions
(
pQueryInfo
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
/*
...
...
@@ -5348,7 +5353,7 @@ int32_t doFunctionsCompatibleCheck(SSqlCmd* pCmd, SQueryInfo* pQueryInfo) {
* divide the subset of final result.
*/
if
(
doAddGroupbyColumnsOnDemand
(
pQueryInfo
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
// projection query on super table does not compatible with "group by" syntax
...
...
@@ -5540,7 +5545,7 @@ int32_t doCheckForCreateTable(SSqlObj* pSql, int32_t subClauseIndex, SSqlInfo* p
if
(
!
validateTableColumnInfo
(
pFieldList
,
pCmd
)
||
(
pTagList
!=
NULL
&&
!
validateTagParams
(
pTagList
,
pFieldList
,
pCmd
)))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
int32_t
col
=
0
;
...
...
@@ -5689,22 +5694,22 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
bool
isSTable
=
UTIL_TABLE_IS_SUPER_TABLE
(
pTableMetaInfo
);
if
(
parseSelectClause
(
&
pSql
->
cmd
,
0
,
pQuerySql
->
pSelection
,
isSTable
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
pQuerySql
->
pWhere
!=
NULL
)
{
// query condition in stream computing
if
(
parseWhereClause
(
pQueryInfo
,
&
pQuerySql
->
pWhere
,
pSql
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
// set interval value
if
(
parseIntervalClause
(
pQueryInfo
,
pQuerySql
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
else
{
if
((
pQueryInfo
->
intervalTime
>
0
)
&&
(
validateFunctionsInIntervalOrGroupbyQuery
(
pQueryInfo
)
!=
TSDB_CODE_SUCCESS
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
...
...
@@ -5718,13 +5723,13 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
}
if
(
tsRewriteFieldNameIfNecessary
(
pQueryInfo
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
pCmd
->
numOfCols
=
pQueryInfo
->
fieldsInfo
.
numOfOutput
;
if
(
validateSqlFunctionInStreamSql
(
pQueryInfo
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
/*
...
...
@@ -5845,26 +5850,26 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
// parse the group by clause in the first place
if
(
parseGroupbyClause
(
pQueryInfo
,
pQuerySql
->
pGroupby
,
pCmd
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
parseSelectClause
(
pCmd
,
index
,
pQuerySql
->
pSelection
,
isSTable
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
// set interval value
if
(
parseIntervalClause
(
pQueryInfo
,
pQuerySql
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
else
{
if
((
pQueryInfo
->
intervalTime
>
0
)
&&
(
validateFunctionsInIntervalOrGroupbyQuery
(
pQueryInfo
)
!=
TSDB_CODE_SUCCESS
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
// set order by info
if
(
parseOrderbyClause
(
pQueryInfo
,
pQuerySql
,
tscGetTableSchema
(
pTableMetaInfo
->
pTableMeta
))
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
// set where info
...
...
@@ -5872,7 +5877,7 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
if
(
pQuerySql
->
pWhere
!=
NULL
)
{
if
(
parseWhereClause
(
pQueryInfo
,
&
pQuerySql
->
pWhere
,
pSql
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
pQuerySql
->
pWhere
=
NULL
;
...
...
@@ -6021,7 +6026,7 @@ int32_t exprTreeFromSqlExpr(tExprNode **pExpr, const tSQLExpr* pSqlExpr, SArray*
return
TSDB_CODE_SUCCESS
;
}
else
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
else
{
...
...
@@ -6040,9 +6045,9 @@ int32_t exprTreeFromSqlExpr(tExprNode **pExpr, const tSQLExpr* pSqlExpr, SArray*
if
((
*
pExpr
)
->
_node
.
optr
==
TSDB_BINARY_OP_DIVIDE
)
{
if
(
pRight
->
nodeType
==
TSQL_NODE_VALUE
)
{
if
(
pRight
->
pVal
->
nType
==
TSDB_DATA_TYPE_INT
&&
pRight
->
pVal
->
i64Key
==
0
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
else
if
(
pRight
->
pVal
->
nType
==
TSDB_DATA_TYPE_FLOAT
&&
pRight
->
pVal
->
dKey
==
0
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
}
...
...
src/client/src/tscSecondaryMerge.c
浏览文件 @
3bb9451c
...
...
@@ -161,7 +161,7 @@ void tscCreateLocalReducer(tExtMemBuffer **pMemBuffer, int32_t numOfBuffer, tOrd
tscLocalReducerEnvDestroy
(
pMemBuffer
,
pDesc
,
finalmodel
,
numOfBuffer
);
tscError
(
"%p pMemBuffer is NULL"
,
pMemBuffer
);
pRes
->
code
=
TSDB_CODE_APP_ERROR
;
pRes
->
code
=
TSDB_CODE_
TSC_
APP_ERROR
;
return
;
}
...
...
@@ -169,7 +169,7 @@ void tscCreateLocalReducer(tExtMemBuffer **pMemBuffer, int32_t numOfBuffer, tOrd
tscLocalReducerEnvDestroy
(
pMemBuffer
,
pDesc
,
finalmodel
,
numOfBuffer
);
tscError
(
"%p no local buffer or intermediate result format model"
,
pSql
);
pRes
->
code
=
TSDB_CODE_APP_ERROR
;
pRes
->
code
=
TSDB_CODE_
TSC_
APP_ERROR
;
return
;
}
...
...
@@ -196,7 +196,7 @@ void tscCreateLocalReducer(tExtMemBuffer **pMemBuffer, int32_t numOfBuffer, tOrd
pMemBuffer
[
0
]
->
pageSize
);
tscLocalReducerEnvDestroy
(
pMemBuffer
,
pDesc
,
finalmodel
,
numOfBuffer
);
pRes
->
code
=
TSDB_CODE_APP_ERROR
;
pRes
->
code
=
TSDB_CODE_
TSC_
APP_ERROR
;
return
;
}
...
...
@@ -207,7 +207,7 @@ void tscCreateLocalReducer(tExtMemBuffer **pMemBuffer, int32_t numOfBuffer, tOrd
tscError
(
"%p failed to create local merge structure, out of memory"
,
pSql
);
tscLocalReducerEnvDestroy
(
pMemBuffer
,
pDesc
,
finalmodel
,
numOfBuffer
);
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
;
}
...
...
@@ -229,7 +229,7 @@ void tscCreateLocalReducer(tExtMemBuffer **pMemBuffer, int32_t numOfBuffer, tOrd
SLocalDataSource
*
ds
=
(
SLocalDataSource
*
)
malloc
(
sizeof
(
SLocalDataSource
)
+
pMemBuffer
[
0
]
->
pageSize
);
if
(
ds
==
NULL
)
{
tscError
(
"%p failed to create merge structure"
,
pSql
);
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
;
}
...
...
@@ -327,7 +327,7 @@ void tscCreateLocalReducer(tExtMemBuffer **pMemBuffer, int32_t numOfBuffer, tOrd
// tfree(pReducer->pBufForInterpo);
tfree
(
pReducer
->
prevRowOfInput
);
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
;
}
...
...
@@ -561,7 +561,7 @@ static int32_t createOrderDescriptor(tOrderDescriptor **pOrderDesc, SSqlCmd *pCm
int32_t
*
orderIdx
=
(
int32_t
*
)
calloc
(
numOfGroupByCols
,
sizeof
(
int32_t
));
if
(
orderIdx
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
if
(
numOfGroupByCols
>
0
)
{
...
...
@@ -582,7 +582,7 @@ static int32_t createOrderDescriptor(tOrderDescriptor **pOrderDesc, SSqlCmd *pCm
tfree
(
orderIdx
);
if
(
*
pOrderDesc
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
else
{
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -647,7 +647,7 @@ int32_t tscLocalReducerEnvCreate(SSqlObj *pSql, tExtMemBuffer ***pMemBuffer, tOr
(
*
pMemBuffer
)
=
(
tExtMemBuffer
**
)
malloc
(
POINTER_BYTES
*
pSql
->
numOfSubs
);
if
(
*
pMemBuffer
==
NULL
)
{
tscError
(
"%p failed to allocate memory"
,
pSql
);
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
pRes
->
code
;
}
...
...
@@ -656,7 +656,7 @@ int32_t tscLocalReducerEnvCreate(SSqlObj *pSql, tExtMemBuffer ***pMemBuffer, tOr
pSchema
=
(
SSchema
*
)
calloc
(
1
,
sizeof
(
SSchema
)
*
size
);
if
(
pSchema
==
NULL
)
{
tscError
(
"%p failed to allocate memory"
,
pSql
);
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
pRes
->
code
;
}
...
...
@@ -684,7 +684,7 @@ int32_t tscLocalReducerEnvCreate(SSqlObj *pSql, tExtMemBuffer ***pMemBuffer, tOr
}
if
(
createOrderDescriptor
(
pOrderDesc
,
pCmd
,
pModel
)
!=
TSDB_CODE_SUCCESS
)
{
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
pRes
->
code
;
}
...
...
src/client/src/tscServer.c
浏览文件 @
3bb9451c
...
...
@@ -179,7 +179,7 @@ int tscSendMsgToServer(SSqlObj *pSql) {
char
*
pMsg
=
rpcMallocCont
(
pCmd
->
payloadLen
);
if
(
NULL
==
pMsg
)
{
tscError
(
"%p msg:%s malloc fail"
,
pSql
,
taosMsg
[
pSql
->
cmd
.
msgType
]);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
if
(
pSql
->
cmd
.
command
<
TSDB_SQL_MGMT
)
{
...
...
@@ -234,11 +234,11 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
}
if
(
rpcMsg
->
pCont
==
NULL
)
{
rpcMsg
->
code
=
TSDB_CODE_NETWORK_UNAVAIL
;
rpcMsg
->
code
=
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
;
}
else
{
STableMetaInfo
*
pTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
pCmd
,
pCmd
->
clauseIndex
,
0
);
if
(
rpcMsg
->
code
==
TSDB_CODE_
INVALID_TABLE_ID
||
rpcMsg
->
code
==
TSDB_CODE
_INVALID_VGROUP_ID
||
rpcMsg
->
code
==
TSDB_CODE_NETWORK_UNAVAIL
)
{
if
(
rpcMsg
->
code
==
TSDB_CODE_
TDB_INVALID_TABLE_ID
||
rpcMsg
->
code
==
TSDB_CODE_VND
_INVALID_VGROUP_ID
||
rpcMsg
->
code
==
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
)
{
/*
* not_active_table: 1. the virtual node may fail to create table, since the procedure of create table is asynchronized,
* the virtual node may have not create table till now, so try again by using the new metermeta.
...
...
@@ -250,11 +250,11 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
* not_active_session: db has been move to other node, the vnode does not exist on this dnode anymore.
*/
if
(
pCmd
->
command
==
TSDB_SQL_CONNECT
)
{
rpcMsg
->
code
=
TSDB_CODE_NETWORK_UNAVAIL
;
rpcMsg
->
code
=
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
;
rpcFreeCont
(
rpcMsg
->
pCont
);
return
;
}
else
if
(
pCmd
->
command
==
TSDB_SQL_HB
)
{
rpcMsg
->
code
=
TSDB_CODE_NOT_READY
;
rpcMsg
->
code
=
TSDB_CODE_
RPC_
NOT_READY
;
rpcFreeCont
(
rpcMsg
->
pCont
);
return
;
}
else
if
(
pCmd
->
command
==
TSDB_SQL_META
)
{
...
...
@@ -281,8 +281,8 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
pRes
->
rspLen
=
0
;
if
(
pRes
->
code
!=
TSDB_CODE_QUERY_CANCELLED
)
{
pRes
->
code
=
(
rpcMsg
->
code
!=
TSDB_CODE_SUCCESS
)
?
rpcMsg
->
code
:
TSDB_CODE_NETWORK_UNAVAIL
;
if
(
pRes
->
code
!=
TSDB_CODE_
TSC_
QUERY_CANCELLED
)
{
pRes
->
code
=
(
rpcMsg
->
code
!=
TSDB_CODE_SUCCESS
)
?
rpcMsg
->
code
:
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
;
}
else
{
tscTrace
(
"%p query is cancelled, code:%d"
,
pSql
,
tstrerror
(
pRes
->
code
));
}
...
...
@@ -292,7 +292,7 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
pSql
->
retry
=
0
;
}
if
(
pRes
->
code
!=
TSDB_CODE_QUERY_CANCELLED
)
{
if
(
pRes
->
code
!=
TSDB_CODE_
TSC_
QUERY_CANCELLED
)
{
assert
(
rpcMsg
->
msgType
==
pCmd
->
msgType
+
1
);
pRes
->
code
=
rpcMsg
->
code
;
pRes
->
rspType
=
rpcMsg
->
msgType
;
...
...
@@ -301,7 +301,7 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
if
(
pRes
->
rspLen
>
0
&&
rpcMsg
->
pCont
)
{
char
*
tmp
=
(
char
*
)
realloc
(
pRes
->
pRsp
,
pRes
->
rspLen
);
if
(
tmp
==
NULL
)
{
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
else
{
pRes
->
pRsp
=
tmp
;
memcpy
(
pRes
->
pRsp
,
rpcMsg
->
pCont
,
pRes
->
rspLen
);
...
...
@@ -333,7 +333,8 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcIpSet *pIpSet) {
if
(
pRes
->
code
==
TSDB_CODE_SUCCESS
&&
tscProcessMsgRsp
[
pCmd
->
command
])
rpcMsg
->
code
=
(
*
tscProcessMsgRsp
[
pCmd
->
command
])(
pSql
);
if
(
rpcMsg
->
code
!=
TSDB_CODE_ACTION_IN_PROGRESS
)
{
if
(
rpcMsg
->
code
!=
TSDB_CODE_TSC_ACTION_IN_PROGRESS
)
{
rpcMsg
->
code
=
(
pRes
->
code
==
TSDB_CODE_SUCCESS
)
?
pRes
->
numOfRows
:
pRes
->
code
;
bool
shouldFree
=
tscShouldBeFreed
(
pSql
);
...
...
@@ -401,7 +402,7 @@ int tscProcessSql(SSqlObj *pSql) {
tscTrace
(
"%p SQL cmd:%s will be processed, name:%s, type:%d"
,
pSql
,
sqlCmd
[
pCmd
->
command
],
name
,
type
);
if
(
pCmd
->
command
<
TSDB_SQL_MGMT
)
{
// the pTableMetaInfo cannot be NULL
if
(
pTableMetaInfo
==
NULL
)
{
pSql
->
res
.
code
=
TSDB_CODE_
OTHERS
;
pSql
->
res
.
code
=
TSDB_CODE_
TSC_APP_ERROR
;
return
pSql
->
res
.
code
;
}
}
else
if
(
pCmd
->
command
<
TSDB_SQL_LOCAL
)
{
...
...
@@ -432,7 +433,7 @@ void tscKillSTableQuery(SSqlObj *pSql) {
* here, we cannot set the command = TSDB_SQL_KILL_QUERY. Otherwise, it may cause
* sub-queries not correctly released and master sql object of metric query reaches an abnormal state.
*/
pSql
->
pSubs
[
i
]
->
res
.
code
=
TSDB_CODE_QUERY_CANCELLED
;
pSql
->
pSubs
[
i
]
->
res
.
code
=
TSDB_CODE_
TSC_
QUERY_CANCELLED
;
//taosStopRpcConn(pSql->pSubs[i]->thandle);
}
...
...
@@ -605,7 +606,7 @@ int tscBuildQueryMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
size
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
-
1
;
return
-
1
;
// todo add test for this
}
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
pCmd
->
clauseIndex
);
...
...
@@ -677,7 +678,7 @@ int tscBuildQueryMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
pSql
,
pTableMeta
->
sid
,
pTableMeta
->
uid
,
pTableMetaInfo
->
name
,
tscGetNumOfColumns
(
pTableMeta
),
pCol
->
colIndex
,
pColSchema
->
name
);
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
pQueryMsg
->
colList
[
i
].
colId
=
htons
(
pColSchema
->
colId
);
...
...
@@ -795,7 +796,7 @@ int tscBuildQueryMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
pSql
,
pTableMeta
->
sid
,
pTableMeta
->
uid
,
pTableMetaInfo
->
name
,
total
,
numOfTagColumns
,
pCol
->
colIndex
,
pColSchema
->
name
);
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
SColumnInfo
*
pTagCol
=
(
SColumnInfo
*
)
pMsg
;
...
...
@@ -885,7 +886,7 @@ int32_t tscBuildCreateDnodeMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
pCmd
->
payloadLen
=
sizeof
(
SCMCreateDnodeMsg
);
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMCreateDnodeMsg
*
pCreate
=
(
SCMCreateDnodeMsg
*
)
pCmd
->
payload
;
...
...
@@ -901,7 +902,7 @@ int32_t tscBuildAcctMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
pCmd
->
payloadLen
=
sizeof
(
SCMCreateAcctMsg
);
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMCreateAcctMsg
*
pAlterMsg
=
(
SCMCreateAcctMsg
*
)
pCmd
->
payload
;
...
...
@@ -947,7 +948,7 @@ int32_t tscBuildUserMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMCreateUserMsg
*
pAlterMsg
=
(
SCMCreateUserMsg
*
)
pCmd
->
payload
;
...
...
@@ -986,7 +987,7 @@ int32_t tscBuildDropDbMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMDropDbMsg
*
pDropDbMsg
=
(
SCMDropDbMsg
*
)
pCmd
->
payload
;
...
...
@@ -1005,7 +1006,7 @@ int32_t tscBuildDropTableMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMDropTableMsg
*
pDropTableMsg
=
(
SCMDropTableMsg
*
)
pCmd
->
payload
;
...
...
@@ -1022,7 +1023,7 @@ int32_t tscBuildDropDnodeMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
pCmd
->
payloadLen
=
sizeof
(
SCMDropDnodeMsg
);
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMDropDnodeMsg
*
pDrop
=
(
SCMDropDnodeMsg
*
)
pCmd
->
payload
;
...
...
@@ -1040,7 +1041,7 @@ int32_t tscBuildDropUserMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMDropUserMsg
*
pDropMsg
=
(
SCMDropUserMsg
*
)
pCmd
->
payload
;
...
...
@@ -1057,7 +1058,7 @@ int32_t tscBuildDropAcctMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMDropUserMsg
*
pDropMsg
=
(
SCMDropUserMsg
*
)
pCmd
->
payload
;
...
...
@@ -1073,7 +1074,7 @@ int32_t tscBuildUseDbMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMUseDbMsg
*
pUseDbMsg
=
(
SCMUseDbMsg
*
)
pCmd
->
payload
;
...
...
@@ -1092,7 +1093,7 @@ int32_t tscBuildShowMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMShowMsg
*
pShowMsg
=
(
SCMShowMsg
*
)
pCmd
->
payload
;
...
...
@@ -1176,7 +1177,7 @@ int tscBuildCreateTableMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
size
=
tscEstimateCreateTableMsgLength
(
pSql
,
pInfo
);
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
size
))
{
tscError
(
"%p failed to malloc for create table msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
...
...
@@ -1321,7 +1322,7 @@ int tscBuildRetrieveFromMgmtMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
0
);
...
...
@@ -1431,7 +1432,7 @@ int tscBuildConnectMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
pCmd
->
payloadLen
))
{
tscError
(
"%p failed to malloc for query msg"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
SCMConnectMsg
*
pConnect
=
(
SCMConnectMsg
*
)
pCmd
->
payload
;
...
...
@@ -1456,7 +1457,7 @@ int tscBuildTableMetaMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
len
>
0
)
{
tmpData
=
calloc
(
1
,
len
);
if
(
NULL
==
tmpData
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
// STagData is in binary format, strncpy is not available
...
...
@@ -1778,17 +1779,17 @@ int tscProcessTableMetaRsp(SSqlObj *pSql) {
if
(
pMetaMsg
->
sid
<
0
||
pMetaMsg
->
vgroup
.
numOfIps
<
0
)
{
tscError
(
"invalid meter vgId:%d, sid%d"
,
pMetaMsg
->
vgroup
.
numOfIps
,
pMetaMsg
->
sid
);
return
TSDB_CODE_INVALID_VALUE
;
return
TSDB_CODE_
TSC_
INVALID_VALUE
;
}
if
(
pMetaMsg
->
numOfTags
>
TSDB_MAX_TAGS
||
pMetaMsg
->
numOfTags
<
0
)
{
tscError
(
"invalid numOfTags:%d"
,
pMetaMsg
->
numOfTags
);
return
TSDB_CODE_INVALID_VALUE
;
return
TSDB_CODE_
TSC_
INVALID_VALUE
;
}
if
(
pMetaMsg
->
numOfColumns
>
TSDB_MAX_COLUMNS
||
pMetaMsg
->
numOfColumns
<=
0
)
{
tscError
(
"invalid numOfColumns:%d"
,
pMetaMsg
->
numOfColumns
);
return
TSDB_CODE_INVALID_VALUE
;
return
TSDB_CODE_
TSC_
INVALID_VALUE
;
}
for
(
int
i
=
0
;
i
<
pMetaMsg
->
vgroup
.
numOfIps
;
++
i
)
{
...
...
@@ -1818,7 +1819,7 @@ int tscProcessTableMetaRsp(SSqlObj *pSql) {
// todo handle out of memory case
if
(
pTableMetaInfo
->
pTableMeta
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
tscTrace
(
"%p recv table meta: %"
PRId64
", tid:%d, name:%s"
,
pSql
,
pTableMeta
->
uid
,
pTableMeta
->
sid
,
pTableMetaInfo
->
name
);
...
...
@@ -1839,9 +1840,9 @@ int tscProcessMultiMeterMetaRsp(SSqlObj *pSql) {
ieType = *rsp;
if (ieType != TSDB_IE_TYPE_META) {
tscError("invalid ie type:%d", ieType);
pSql->res.code = TSDB_CODE_INVALID_IE;
pSql->res.code = TSDB_CODE_
TSC_
INVALID_IE;
pSql->res.numOfTotal = 0;
return TSDB_CODE_
OTHERS
;
return TSDB_CODE_
TSC_APP_ERROR
;
}
rsp++;
...
...
@@ -1861,32 +1862,32 @@ int tscProcessMultiMeterMetaRsp(SSqlObj *pSql) {
if (pMeta->sid <= 0 || pMeta->vgId < 0) {
tscError("invalid meter vgId:%d, sid%d", pMeta->vgId, pMeta->sid);
pSql->res.code = TSDB_CODE_INVALID_VALUE;
pSql->res.code = TSDB_CODE_
TSC_
INVALID_VALUE;
pSql->res.numOfTotal = i;
return TSDB_CODE_
OTHERS
;
return TSDB_CODE_
TSC_APP_ERROR
;
}
// pMeta->numOfColumns = htons(pMeta->numOfColumns);
//
// if (pMeta->numOfTags > TSDB_MAX_TAGS || pMeta->numOfTags < 0) {
// tscError("invalid tag value count:%d", pMeta->numOfTags);
// pSql->res.code = TSDB_CODE_INVALID_VALUE;
// pSql->res.code = TSDB_CODE_
TSC_
INVALID_VALUE;
// pSql->res.numOfTotal = i;
// return TSDB_CODE_
OTHERS
;
// return TSDB_CODE_
TSC_APP_ERROR
;
// }
//
// if (pMeta->numOfTags > TSDB_MAX_TAGS || pMeta->numOfTags < 0) {
// tscError("invalid numOfTags:%d", pMeta->numOfTags);
// pSql->res.code = TSDB_CODE_INVALID_VALUE;
// pSql->res.code = TSDB_CODE_
TSC_
INVALID_VALUE;
// pSql->res.numOfTotal = i;
// return TSDB_CODE_
OTHERS
;
// return TSDB_CODE_
TSC_APP_ERROR
;
// }
//
// if (pMeta->numOfColumns > TSDB_MAX_COLUMNS || pMeta->numOfColumns < 0) {
// tscError("invalid numOfColumns:%d", pMeta->numOfColumns);
// pSql->res.code = TSDB_CODE_INVALID_VALUE;
// pSql->res.code = TSDB_CODE_
TSC_
INVALID_VALUE;
// pSql->res.numOfTotal = i;
// return TSDB_CODE_
OTHERS
;
// return TSDB_CODE_
TSC_APP_ERROR
;
// }
//
// for (int j = 0; j < TSDB_REPLICA_MAX_NUM; ++j) {
...
...
@@ -1951,7 +1952,7 @@ int tscProcessSTableVgroupRsp(SSqlObj *pSql) {
if (metricMetaList == NULL || sizes == NULL) {
tfree(metricMetaList);
tfree(sizes);
pSql->res.code = TSDB_CODE_
CLI
_OUT_OF_MEMORY;
pSql->res.code = TSDB_CODE_
TSC
_OUT_OF_MEMORY;
return pSql->res.code;
}
...
...
@@ -1970,7 +1971,7 @@ int tscProcessSTableVgroupRsp(SSqlObj *pSql) {
char *pBuf = calloc(1, size);
if (pBuf == NULL) {
pSql->res.code = TSDB_CODE_
CLI
_OUT_OF_MEMORY;
pSql->res.code = TSDB_CODE_
TSC
_OUT_OF_MEMORY;
goto _error_clean;
}
...
...
@@ -2030,7 +2031,7 @@ int tscProcessSTableVgroupRsp(SSqlObj *pSql) {
// failed to put into cache
if (pTableMetaInfo->pMetricMeta == NULL) {
pSql->res.code = TSDB_CODE_
CLI
_OUT_OF_MEMORY;
pSql->res.code = TSDB_CODE_
TSC
_OUT_OF_MEMORY;
goto _error_clean;
}
}
...
...
@@ -2324,7 +2325,7 @@ static int32_t getTableMetaFromMgmt(SSqlObj *pSql, STableMetaInfo *pTableMetaInf
SSqlObj
*
pNew
=
calloc
(
1
,
sizeof
(
SSqlObj
));
if
(
NULL
==
pNew
)
{
tscError
(
"%p malloc failed for new sqlobj to get table meta"
,
pSql
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
pNew
->
pTscObj
=
pSql
->
pTscObj
;
...
...
@@ -2341,7 +2342,7 @@ static int32_t getTableMetaFromMgmt(SSqlObj *pSql, STableMetaInfo *pTableMetaInf
tscError
(
"%p malloc failed for payload to get table meta"
,
pSql
);
free
(
pNew
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
STableMetaInfo
*
pNewMeterMetaInfo
=
tscAddEmptyMetaInfo
(
pNewQueryInfo
);
...
...
@@ -2357,7 +2358,7 @@ static int32_t getTableMetaFromMgmt(SSqlObj *pSql, STableMetaInfo *pTableMetaInf
int32_t
code
=
tscProcessSql
(
pNew
);
if
(
code
==
TSDB_CODE_SUCCESS
)
{
code
=
TSDB_CODE_ACTION_IN_PROGRESS
;
code
=
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
;
}
return
code
;
...
...
@@ -2454,7 +2455,7 @@ static bool allVgroupInfoRetrieved(SSqlCmd* pCmd, int32_t clauseIndex) {
}
int
tscGetSTableVgroupInfo
(
SSqlObj
*
pSql
,
int32_t
clauseIndex
)
{
int
code
=
TSDB_CODE_NETWORK_UNAVAIL
;
int
code
=
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
;
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
if
(
allVgroupInfoRetrieved
(
pCmd
,
clauseIndex
))
{
...
...
@@ -2491,7 +2492,7 @@ int tscGetSTableVgroupInfo(SSqlObj *pSql, int32_t clauseIndex) {
pNew
->
param
=
pSql
;
code
=
tscProcessSql
(
pNew
);
if
(
code
==
TSDB_CODE_SUCCESS
)
{
code
=
TSDB_CODE_ACTION_IN_PROGRESS
;
code
=
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
;
}
return
code
;
...
...
src/client/src/tscSql.c
浏览文件 @
3bb9451c
...
...
@@ -57,12 +57,12 @@ SSqlObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
taos_init
();
if
(
!
validUserName
(
user
))
{
terrno
=
TSDB_CODE_
INVALID_ACCT
;
terrno
=
TSDB_CODE_
TSC_INVALID_USER_LENGTH
;
return
NULL
;
}
if
(
!
validPassword
(
pass
))
{
terrno
=
TSDB_CODE_
INVALID_PASS
;
terrno
=
TSDB_CODE_
TSC_INVALID_PASS_LENGTH
;
return
NULL
;
}
...
...
@@ -73,13 +73,13 @@ SSqlObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
void
*
pDnodeConn
=
NULL
;
if
(
tscInitRpc
(
user
,
pass
,
&
pDnodeConn
)
!=
0
)
{
terrno
=
TSDB_CODE_NETWORK_UNAVAIL
;
terrno
=
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
;
return
NULL
;
}
STscObj
*
pObj
=
(
STscObj
*
)
calloc
(
1
,
sizeof
(
STscObj
));
if
(
NULL
==
pObj
)
{
terrno
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
rpcClose
(
pDnodeConn
);
return
NULL
;
}
...
...
@@ -93,7 +93,7 @@ SSqlObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
int32_t
len
=
strlen
(
db
);
/* db name is too long */
if
(
len
>
TSDB_DB_NAME_LEN
)
{
terrno
=
TSDB_CODE_
INVALID_DB
;
terrno
=
TSDB_CODE_
TSC_INVALID_DB_LENGTH
;
rpcClose
(
pDnodeConn
);
free
(
pObj
);
return
NULL
;
...
...
@@ -110,7 +110,7 @@ SSqlObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
SSqlObj
*
pSql
=
(
SSqlObj
*
)
calloc
(
1
,
sizeof
(
SSqlObj
));
if
(
NULL
==
pSql
)
{
terrno
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
rpcClose
(
pDnodeConn
);
free
(
pObj
);
return
NULL
;
...
...
@@ -131,7 +131,7 @@ SSqlObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
pSql
->
cmd
.
command
=
TSDB_SQL_CONNECT
;
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
&
pSql
->
cmd
,
TSDB_DEFAULT_PAYLOAD_SIZE
))
{
terrno
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
rpcClose
(
pDnodeConn
);
free
(
pSql
);
free
(
pObj
);
...
...
@@ -212,48 +212,6 @@ void taos_close(TAOS *taos) {
}
}
int
taos_query_imp
(
STscObj
*
pObj
,
SSqlObj
*
pSql
)
{
SSqlRes
*
pRes
=
&
pSql
->
res
;
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
pRes
->
numOfRows
=
1
;
pRes
->
numOfTotal
=
0
;
pRes
->
numOfClauseTotal
=
0
;
pCmd
->
curSql
=
NULL
;
if
(
NULL
!=
pCmd
->
pTableList
)
{
taosHashCleanup
(
pCmd
->
pTableList
);
pCmd
->
pTableList
=
NULL
;
}
tscDump
(
"%p pObj:%p, SQL: %s"
,
pSql
,
pObj
,
pSql
->
sqlstr
);
pRes
->
code
=
(
uint8_t
)
tsParseSql
(
pSql
,
false
);
/*
* set the qhandle to 0 before return in order to erase the qhandle value assigned in the previous successful query.
* If qhandle is NOT set 0, the function of taos_free_result() will send message to server by calling tscProcessSql()
* to free connection, which may cause segment fault, when the parse phrase is not even successfully executed.
*/
pRes
->
qhandle
=
0
;
if
(
pRes
->
code
==
TSDB_CODE_SUCCESS
)
{
tscDoQuery
(
pSql
);
}
if
(
pRes
->
code
==
TSDB_CODE_SUCCESS
)
{
tscTrace
(
"%p SQL result:%d, %s pObj:%p"
,
pSql
,
pRes
->
code
,
taos_errstr
(
pObj
),
pObj
);
}
else
{
tscError
(
"%p SQL result:%d, %s pObj:%p"
,
pSql
,
pRes
->
code
,
taos_errstr
(
pObj
),
pObj
);
}
if
(
pRes
->
code
!=
TSDB_CODE_SUCCESS
)
{
tscPartiallyFreeSqlObj
(
pSql
);
}
return
pRes
->
code
;
}
void
waitForQueryRsp
(
void
*
param
,
TAOS_RES
*
tres
,
int
code
)
{
assert
(
tres
!=
NULL
);
...
...
@@ -264,14 +222,14 @@ void waitForQueryRsp(void *param, TAOS_RES *tres, int code) {
TAOS_RES
*
taos_query
(
TAOS
*
taos
,
const
char
*
sqlstr
)
{
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
terrno
=
TSDB_CODE_DISCONNECTED
;
terrno
=
TSDB_CODE_
TSC_
DISCONNECTED
;
return
NULL
;
}
int32_t
sqlLen
=
strlen
(
sqlstr
);
if
(
sqlLen
>
tsMaxSQLStringLen
)
{
tscError
(
"sql string exceeds max length:%d"
,
tsMaxSQLStringLen
);
terrno
=
TSDB_CODE_INVALID_SQL
;
terrno
=
TSDB_CODE_
TSC_
INVALID_SQL
;
return
NULL
;
}
...
...
@@ -280,7 +238,7 @@ TAOS_RES* taos_query(TAOS *taos, const char *sqlstr) {
SSqlObj
*
pSql
=
calloc
(
1
,
sizeof
(
SSqlObj
));
if
(
pSql
==
NULL
)
{
tscError
(
"failed to malloc sqlObj"
);
terrno
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
NULL
;
}
...
...
@@ -419,7 +377,7 @@ static void waitForRetrieveRsp(void *param, TAOS_RES *tres, int numOfRows) {
TAOS_ROW
taos_fetch_row
(
TAOS_RES
*
res
)
{
SSqlObj
*
pSql
=
(
SSqlObj
*
)
res
;
if
(
pSql
==
NULL
||
pSql
->
signature
!=
pSql
)
{
terrno
=
TSDB_CODE_DISCONNECTED
;
terrno
=
TSDB_CODE_
TSC_
DISCONNECTED
;
return
NULL
;
}
...
...
@@ -462,7 +420,7 @@ int taos_fetch_block(TAOS_RES *res, TAOS_ROW *rows) {
int nRows = 0;
if (pSql == NULL || pSql->signature != pSql) {
terrno = TSDB_CODE_DISCONNECTED;
terrno = TSDB_CODE_
TSC_
DISCONNECTED;
*rows = NULL;
return 0;
}
...
...
@@ -505,8 +463,8 @@ int taos_select_db(TAOS *taos, const char *db) {
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
terrno
=
TSDB_CODE_DISCONNECTED
;
return
TSDB_CODE_DISCONNECTED
;
terrno
=
TSDB_CODE_
TSC_
DISCONNECTED
;
return
TSDB_CODE_
TSC_
DISCONNECTED
;
}
snprintf
(
sql
,
tListLen
(
sql
),
"use %s"
,
db
);
...
...
@@ -587,7 +545,7 @@ int taos_errno(TAOS_RES *tres) {
* why the sql is invalid
*/
static
bool
hasAdditionalErrorInfo
(
int32_t
code
,
SSqlCmd
*
pCmd
)
{
if
(
code
!=
TSDB_CODE_INVALID_SQL
)
{
if
(
code
!=
TSDB_CODE_
TSC_
INVALID_SQL
)
{
return
false
;
}
...
...
@@ -649,7 +607,7 @@ void taos_stop_query(TAOS_RES *res) {
if
(
pSql
->
signature
!=
pSql
)
return
;
tscTrace
(
"%p start to cancel query"
,
res
);
pSql
->
res
.
code
=
TSDB_CODE_QUERY_CANCELLED
;
pSql
->
res
.
code
=
TSDB_CODE_
TSC_
QUERY_CANCELLED
;
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
pCmd
->
clauseIndex
);
if
(
tscIsTwoStageSTableQuery
(
pQueryInfo
,
0
))
{
...
...
@@ -734,8 +692,8 @@ int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields)
int
taos_validate_sql
(
TAOS
*
taos
,
const
char
*
sql
)
{
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
terrno
=
TSDB_CODE_DISCONNECTED
;
return
TSDB_CODE_DISCONNECTED
;
terrno
=
TSDB_CODE_
TSC_
DISCONNECTED
;
return
TSDB_CODE_
TSC_
DISCONNECTED
;
}
SSqlObj
*
pSql
=
calloc
(
1
,
sizeof
(
SSqlObj
));
...
...
@@ -752,13 +710,13 @@ int taos_validate_sql(TAOS *taos, const char *sql) {
int32_t
sqlLen
=
strlen
(
sql
);
if
(
sqlLen
>
tsMaxSQLStringLen
)
{
tscError
(
"%p sql too long"
,
pSql
);
pRes
->
code
=
TSDB_CODE_INVALID_SQL
;
pRes
->
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
return
pRes
->
code
;
}
pSql
->
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
if
(
pSql
->
sqlstr
==
NULL
)
{
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
tscError
(
"%p failed to malloc sql string buffer"
,
pSql
);
tscTrace
(
"%p Valid SQL result:%d, %s pObj:%p"
,
pSql
,
pRes
->
code
,
taos_errstr
(
taos
),
pObj
);
return
pRes
->
code
;
...
...
@@ -790,7 +748,7 @@ static int tscParseTblNameList(SSqlObj *pSql, const char *tblNameList, int32_t t
pCmd
->
command
=
TSDB_SQL_MULTI_META
;
pCmd
->
count
=
0
;
int
code
=
TSDB_CODE_
INVALID_TABLE_ID
;
int
code
=
TSDB_CODE_
TSC_INVALID_TABLE_ID_LENGTH
;
char
*
str
=
(
char
*
)
tblNameList
;
SQueryInfo
*
pQueryInfo
=
NULL
;
...
...
@@ -824,7 +782,7 @@ static int tscParseTblNameList(SSqlObj *pSql, const char *tblNameList, int32_t t
// Check if the table name available or not
if
(
tscValidateName
(
&
sToken
)
!=
TSDB_CODE_SUCCESS
)
{
code
=
TSDB_CODE_
INVALID_TABLE_ID
;
code
=
TSDB_CODE_
TSC_INVALID_TABLE_ID_LENGTH
;
sprintf
(
pCmd
->
payload
,
"table name is invalid"
);
return
code
;
}
...
...
@@ -834,7 +792,7 @@ static int tscParseTblNameList(SSqlObj *pSql, const char *tblNameList, int32_t t
}
if
(
++
pCmd
->
count
>
TSDB_MULTI_METERMETA_MAX_NUM
)
{
code
=
TSDB_CODE_
INVALID_TABLE_ID
;
code
=
TSDB_CODE_
TSC_INVALID_TABLE_ID_LENGTH
;
sprintf
(
pCmd
->
payload
,
"tables over the max number"
);
return
code
;
}
...
...
@@ -842,7 +800,7 @@ static int tscParseTblNameList(SSqlObj *pSql, const char *tblNameList, int32_t t
if
(
payloadLen
+
strlen
(
pTableMetaInfo
->
name
)
+
128
>=
pCmd
->
allocSize
)
{
char
*
pNewMem
=
realloc
(
pCmd
->
payload
,
pCmd
->
allocSize
+
tblListLen
);
if
(
pNewMem
==
NULL
)
{
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
sprintf
(
pCmd
->
payload
,
"failed to allocate memory"
);
return
code
;
}
...
...
@@ -866,8 +824,8 @@ int taos_load_table_info(TAOS *taos, const char *tableNameList) {
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
terrno
=
TSDB_CODE_DISCONNECTED
;
return
TSDB_CODE_DISCONNECTED
;
terrno
=
TSDB_CODE_
TSC_
DISCONNECTED
;
return
TSDB_CODE_
TSC_
DISCONNECTED
;
}
SSqlObj
*
pSql
=
calloc
(
1
,
sizeof
(
SSqlObj
));
...
...
@@ -884,13 +842,13 @@ int taos_load_table_info(TAOS *taos, const char *tableNameList) {
int32_t
tblListLen
=
strlen
(
tableNameList
);
if
(
tblListLen
>
MAX_TABLE_NAME_LENGTH
)
{
tscError
(
"%p tableNameList too long, length:%d, maximum allowed:%d"
,
pSql
,
tblListLen
,
MAX_TABLE_NAME_LENGTH
);
pRes
->
code
=
TSDB_CODE_INVALID_SQL
;
pRes
->
code
=
TSDB_CODE_
TSC_
INVALID_SQL
;
return
pRes
->
code
;
}
char
*
str
=
calloc
(
1
,
tblListLen
+
1
);
if
(
str
==
NULL
)
{
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
tscError
(
"%p failed to malloc sql string buffer"
,
pSql
);
return
pRes
->
code
;
}
...
...
src/client/src/tscStream.c
浏览文件 @
3bb9451c
...
...
@@ -77,13 +77,13 @@ static void tscProcessStreamLaunchQuery(SSchedMsg *pMsg) {
int
code
=
tscGetTableMeta
(
pSql
,
pTableMetaInfo
);
pSql
->
res
.
code
=
code
;
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
return
;
if
(
code
==
0
&&
UTIL_TABLE_IS_SUPER_TABLE
(
pTableMetaInfo
))
{
code
=
tscGetSTableVgroupInfo
(
pSql
,
0
);
pSql
->
res
.
code
=
code
;
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
return
;
}
tscTansformSQLFuncForSTableQuery
(
pQueryInfo
);
...
...
@@ -480,7 +480,7 @@ TAOS_STREAM *taos_open_stream(TAOS *taos, const char *sqlstr, void (*fp)(void *p
SSqlObj
*
pSql
=
(
SSqlObj
*
)
calloc
(
1
,
sizeof
(
SSqlObj
));
if
(
pSql
==
NULL
)
{
setErrorInfo
(
pSql
,
TSDB_CODE_
CLI
_OUT_OF_MEMORY
,
NULL
);
setErrorInfo
(
pSql
,
TSDB_CODE_
TSC
_OUT_OF_MEMORY
,
NULL
);
return
NULL
;
}
...
...
@@ -497,7 +497,7 @@ TAOS_STREAM *taos_open_stream(TAOS *taos, const char *sqlstr, void (*fp)(void *p
pSql
->
sqlstr
=
strdup
(
sqlstr
);
if
(
pSql
->
sqlstr
==
NULL
)
{
setErrorInfo
(
pSql
,
TSDB_CODE_
CLI
_OUT_OF_MEMORY
,
NULL
);
setErrorInfo
(
pSql
,
TSDB_CODE_
TSC
_OUT_OF_MEMORY
,
NULL
);
tfree
(
pSql
);
return
NULL
;
...
...
@@ -512,7 +512,7 @@ TAOS_STREAM *taos_open_stream(TAOS *taos, const char *sqlstr, void (*fp)(void *p
ret
=
tscAllocPayload
(
&
pSql
->
cmd
,
TSDB_DEFAULT_PAYLOAD_SIZE
);
if
(
TSDB_CODE_SUCCESS
!=
ret
)
{
setErrorInfo
(
pSql
,
ret
,
NULL
);
tscError
(
"%p open stream failed, sql:%s, code:%d"
,
pSql
,
sqlstr
,
TSDB_CODE_
CLI
_OUT_OF_MEMORY
);
tscError
(
"%p open stream failed, sql:%s, code:%d"
,
pSql
,
sqlstr
,
TSDB_CODE_
TSC
_OUT_OF_MEMORY
);
tscFreeSqlObj
(
pSql
);
return
NULL
;
}
...
...
@@ -530,7 +530,7 @@ TAOS_STREAM *taos_open_stream(TAOS *taos, const char *sqlstr, void (*fp)(void *p
SSqlStream
*
pStream
=
(
SSqlStream
*
)
calloc
(
1
,
sizeof
(
SSqlStream
));
if
(
pStream
==
NULL
)
{
setErrorInfo
(
pSql
,
TSDB_CODE_
CLI
_OUT_OF_MEMORY
,
NULL
);
setErrorInfo
(
pSql
,
TSDB_CODE_
TSC
_OUT_OF_MEMORY
,
NULL
);
tscError
(
"%p open stream failed, sql:%s, reason:%s, code:%d"
,
pSql
,
sqlstr
,
pCmd
->
payload
,
pRes
->
code
);
tscFreeSqlObj
(
pSql
);
...
...
src/client/src/tscSub.c
浏览文件 @
3bb9451c
...
...
@@ -124,7 +124,7 @@ static SSub* tscCreateSubscription(STscObj* pObj, const char* topic, const char*
strtolower
(
pSql
->
sqlstr
,
pSql
->
sqlstr
);
code
=
tsParseSql
(
pSql
,
false
);
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
{
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
{
// wait for the callback function to post the semaphore
sem_wait
(
&
pSql
->
rspSem
);
code
=
pSql
->
res
.
code
;
...
...
@@ -148,7 +148,7 @@ static SSub* tscCreateSubscription(STscObj* pObj, const char* topic, const char*
pSub
->
topic
[
sizeof
(
pSub
->
topic
)
-
1
]
=
0
;
pSub
->
progress
=
taosArrayInit
(
32
,
sizeof
(
SSubscriptionProgress
));
if
(
pSub
->
progress
==
NULL
)
{
THROW
(
TSDB_CODE_
CLI
_OUT_OF_MEMORY
);
THROW
(
TSDB_CODE_
TSC
_OUT_OF_MEMORY
);
}
CLEANUP_EXECUTE
();
...
...
@@ -324,7 +324,7 @@ void tscSaveSubscriptionProgress(void* sub) {
TAOS_SUB
*
taos_subscribe
(
TAOS
*
taos
,
int
restart
,
const
char
*
topic
,
const
char
*
sql
,
TAOS_SUBSCRIBE_CALLBACK
fp
,
void
*
param
,
int
interval
)
{
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
terrno
=
TSDB_CODE_DISCONNECTED
;
terrno
=
TSDB_CODE_
TSC_
DISCONNECTED
;
tscError
(
"connection disconnected"
);
return
NULL
;
}
...
...
src/client/src/tscSubquery.c
浏览文件 @
3bb9451c
...
...
@@ -348,7 +348,7 @@ int32_t tscLaunchSecondPhaseSubqueries(SSqlObj* pSql) {
//prepare the subqueries object failed, abort
if
(
!
success
)
{
pSql
->
res
.
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pSql
->
res
.
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
tscError
(
"%p failed to prepare subqueries objs for secondary phase query, numOfSub:%d, code:%d"
,
pSql
,
pSql
->
numOfSubs
,
pSql
->
res
.
code
);
freeJoinSubqueryObj
(
pSql
);
...
...
@@ -698,7 +698,7 @@ static void joinRetrieveCallback(void* param, TAOS_RES* tres, int numOfRows) {
if
(
pBuf
==
NULL
)
{
tscError
(
"%p invalid ts comp file from vnode, abort subquery, file size:%d"
,
pSql
,
numOfRows
);
pSupporter
->
pState
->
code
=
TSDB_CODE_APP_ERROR
;
// todo set the informative code
pSupporter
->
pState
->
code
=
TSDB_CODE_
TSC_
APP_ERROR
;
// todo set the informative code
quitAllSubquery
(
pParentSql
,
pSupporter
);
return
;
}
...
...
@@ -1019,13 +1019,13 @@ int32_t tscLaunchJoinSubquery(SSqlObj *pSql, int16_t tableIndex, SJoinSupporter
if
(
pSql
->
pSubs
==
NULL
)
{
pSql
->
pSubs
=
calloc
(
pSupporter
->
pState
->
numOfTotal
,
POINTER_BYTES
);
if
(
pSql
->
pSubs
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
}
SSqlObj
*
pNew
=
createSubqueryObj
(
pSql
,
tableIndex
,
tscJoinQueryCallback
,
pSupporter
,
TSDB_SQL_SELECT
,
NULL
);
if
(
pNew
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
pSql
->
pSubs
[
pSql
->
numOfSubs
++
]
=
pNew
;
...
...
@@ -1163,7 +1163,7 @@ int32_t tscHandleMasterJoinQuery(SSqlObj* pSql) {
if
(
pSupporter
==
NULL
)
{
// failed to create support struct, abort current query
tscError
(
"%p tableIndex:%d, failed to allocate join support object, abort further query"
,
pSql
,
i
);
pState
->
numOfCompleted
=
pQueryInfo
->
numOfTables
-
i
-
1
;
pSql
->
res
.
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pSql
->
res
.
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
pSql
->
res
.
code
;
}
...
...
@@ -1171,7 +1171,7 @@ int32_t tscHandleMasterJoinQuery(SSqlObj* pSql) {
int32_t
code
=
tscLaunchJoinSubquery
(
pSql
,
i
,
pSupporter
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
// failed to create subquery object, quit query
tscDestroyJoinSupporter
(
pSupporter
);
pSql
->
res
.
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pSql
->
res
.
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
break
;
}
...
...
@@ -1209,7 +1209,7 @@ int32_t tscHandleMasterSTableQuery(SSqlObj *pSql) {
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
// pRes->code check only serves in launching metric sub-queries
if
(
pRes
->
code
==
TSDB_CODE_QUERY_CANCELLED
)
{
if
(
pRes
->
code
==
TSDB_CODE_
TSC_
QUERY_CANCELLED
)
{
pCmd
->
command
=
TSDB_SQL_RETRIEVE_LOCALMERGE
;
// enable the abort of kill super table function.
return
pRes
->
code
;
}
...
...
@@ -1230,7 +1230,7 @@ int32_t tscHandleMasterSTableQuery(SSqlObj *pSql) {
int32_t
ret
=
tscLocalReducerEnvCreate
(
pSql
,
&
pMemoryBuf
,
&
pDesc
,
&
pModel
,
nBufferSize
);
if
(
ret
!=
0
)
{
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
tscQueueAsyncRes
(
pSql
);
return
ret
;
}
...
...
@@ -1291,14 +1291,14 @@ int32_t tscHandleMasterSTableQuery(SSqlObj *pSql) {
if
(
i
<
pSql
->
numOfSubs
)
{
tscError
(
"%p failed to prepare subquery structure and launch subqueries"
,
pSql
);
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
tscLocalReducerEnvDestroy
(
pMemoryBuf
,
pDesc
,
pModel
,
pSql
->
numOfSubs
);
doCleanupSubqueries
(
pSql
,
i
,
pState
);
return
pRes
->
code
;
// free all allocated resource
}
if
(
pRes
->
code
==
TSDB_CODE_QUERY_CANCELLED
)
{
if
(
pRes
->
code
==
TSDB_CODE_
TSC_
QUERY_CANCELLED
)
{
tscLocalReducerEnvDestroy
(
pMemoryBuf
,
pDesc
,
pModel
,
pSql
->
numOfSubs
);
doCleanupSubqueries
(
pSql
,
i
,
pState
);
return
pRes
->
code
;
...
...
@@ -1369,7 +1369,7 @@ void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, int numO
/*
* kill current sub-query connection, which may retrieve data from vnodes;
* Here we get: pPObj->res.code == TSDB_CODE_QUERY_CANCELLED
* Here we get: pPObj->res.code == TSDB_CODE_
TSC_
QUERY_CANCELLED
*/
pSql
->
res
.
numOfRows
=
0
;
trsupport
->
numOfRetry
=
MAX_NUM_OF_SUBQUERY_RETRY
;
// disable retry efforts
...
...
@@ -1401,7 +1401,7 @@ void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, int numO
tscError
(
"%p sub:%p failed to create new subquery sqlObj due to out of memory, abort retry"
,
trsupport
->
pParentSqlObj
,
pSql
);
pState
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pState
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
trsupport
->
numOfRetry
=
MAX_NUM_OF_SUBQUERY_RETRY
;
return
;
}
...
...
@@ -1475,7 +1475,7 @@ static void tscAllDataRetrievedFromDnode(SRetrieveSupport *trsupport, SSqlObj* p
if
(
tsTotalTmpDirGB
!=
0
&&
tsAvailTmpDirGB
<
tsMinimalTmpDirGB
)
{
tscError
(
"%p sub:%p client disk space remain %.3f GB, need at least %.3f GB, stop query"
,
pPObj
,
pSql
,
tsAvailTmpDirGB
,
tsMinimalTmpDirGB
);
tscAbortFurtherRetryRetrieval
(
trsupport
,
pSql
,
TSDB_CODE_
CLI
_NO_DISKSPACE
);
tscAbortFurtherRetryRetrieval
(
trsupport
,
pSql
,
TSDB_CODE_
TSC
_NO_DISKSPACE
);
return
;
}
...
...
@@ -1484,7 +1484,7 @@ static void tscAllDataRetrievedFromDnode(SRetrieveSupport *trsupport, SSqlObj* p
int32_t
ret
=
tscFlushTmpBuffer
(
trsupport
->
pExtMemBuffer
[
idx
],
pDesc
,
trsupport
->
localBuffer
,
pQueryInfo
->
groupbyExpr
.
orderType
);
if
(
ret
!=
0
)
{
// set no disk space error info, and abort retry
return
tscAbortFurtherRetryRetrieval
(
trsupport
,
pSql
,
TSDB_CODE_
CLI
_NO_DISKSPACE
);
return
tscAbortFurtherRetryRetrieval
(
trsupport
,
pSql
,
TSDB_CODE_
TSC
_NO_DISKSPACE
);
}
// keep this value local variable, since the pState variable may be released by other threads, if atomic_add opertion
...
...
@@ -1563,7 +1563,7 @@ static void tscRetrieveFromDnodeCallBack(void *param, TAOS_RES *tres, int numOfR
if
(
num
>
tsMaxNumOfOrderedResults
&&
tscIsProjectionQueryOnSTable
(
pQueryInfo
,
0
))
{
tscError
(
"%p sub:%p num of OrderedRes is too many, max allowed:%"
PRId64
" , current:%"
PRId64
,
pPObj
,
pSql
,
tsMaxNumOfOrderedResults
,
num
);
tscAbortFurtherRetryRetrieval
(
trsupport
,
tres
,
TSDB_CODE_SORTED_RES_TOO_MANY
);
tscAbortFurtherRetryRetrieval
(
trsupport
,
tres
,
TSDB_CODE_
TSC_
SORTED_RES_TOO_MANY
);
return
;
}
...
...
@@ -1578,14 +1578,14 @@ static void tscRetrieveFromDnodeCallBack(void *param, TAOS_RES *tres, int numOfR
if
(
tsTotalTmpDirGB
!=
0
&&
tsAvailTmpDirGB
<
tsMinimalTmpDirGB
)
{
tscError
(
"%p sub:%p client disk space remain %.3f GB, need at least %.3f GB, stop query"
,
pPObj
,
pSql
,
tsAvailTmpDirGB
,
tsMinimalTmpDirGB
);
tscAbortFurtherRetryRetrieval
(
trsupport
,
tres
,
TSDB_CODE_
CLI
_NO_DISKSPACE
);
tscAbortFurtherRetryRetrieval
(
trsupport
,
tres
,
TSDB_CODE_
TSC
_NO_DISKSPACE
);
return
;
}
int32_t
ret
=
saveToBuffer
(
trsupport
->
pExtMemBuffer
[
idx
],
pDesc
,
trsupport
->
localBuffer
,
pRes
->
data
,
pRes
->
numOfRows
,
pQueryInfo
->
groupbyExpr
.
orderType
);
if
(
ret
<
0
)
{
// set no disk space error info, and abort retry
tscAbortFurtherRetryRetrieval
(
trsupport
,
tres
,
TSDB_CODE_
CLI
_NO_DISKSPACE
);
tscAbortFurtherRetryRetrieval
(
trsupport
,
tres
,
TSDB_CODE_
TSC
_NO_DISKSPACE
);
}
else
if
(
pRes
->
completed
)
{
tscAllDataRetrievedFromDnode
(
trsupport
,
pSql
);
...
...
@@ -1672,7 +1672,7 @@ void tscRetrieveDataRes(void *param, TAOS_RES *tres, int code) {
tscError
(
"%p sub:%p failed to create new subquery due to out of memory, abort retry, vgId:%d, orderOfSub:%d"
,
trsupport
->
pParentSqlObj
,
pSql
,
pVgroup
->
vgId
,
trsupport
->
subqueryIndex
);
pState
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pState
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
trsupport
->
numOfRetry
=
MAX_NUM_OF_SUBQUERY_RETRY
;
}
else
{
SQueryInfo
*
pNewQueryInfo
=
tscGetQueryInfoDetail
(
&
pNew
->
cmd
,
0
);
...
...
@@ -1783,7 +1783,7 @@ int32_t tscHandleMultivnodeInsert(SSqlObj *pSql) {
if
(
i
<
pSql
->
numOfSubs
)
{
tscError
(
"%p failed to prepare subObj structure and launch sub-insertion"
,
pSql
);
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
pRes
->
code
;
// free all allocated resource
}
...
...
src/client/src/tscUtil.c
浏览文件 @
3bb9451c
...
...
@@ -79,8 +79,14 @@ bool tscQueryOnSTable(SSqlCmd* pCmd) {
bool
tscQueryTags
(
SQueryInfo
*
pQueryInfo
)
{
for
(
int32_t
i
=
0
;
i
<
pQueryInfo
->
fieldsInfo
.
numOfOutput
;
++
i
)
{
int32_t
functId
=
tscSqlExprGet
(
pQueryInfo
,
i
)
->
functionId
;
SSqlExpr
*
pExpr
=
tscSqlExprGet
(
pQueryInfo
,
i
);
int32_t
functId
=
pExpr
->
functionId
;
// "select count(tbname)" query
if
(
functId
==
TSDB_FUNC_COUNT
&&
pExpr
->
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
)
{
continue
;
}
if
(
functId
!=
TSDB_FUNC_TAGPRJ
&&
functId
!=
TSDB_FUNC_TID_TAG
)
{
return
false
;
}
...
...
@@ -183,7 +189,7 @@ bool tscIsProjectionQueryOnSTable(SQueryInfo* pQueryInfo, int32_t tableIndex) {
/*
* In following cases, return false for non ordered project query on super table
* 1. failed to get
meterm
eta from server; 2. not a super table; 3. limitation is 0;
* 1. failed to get
tableM
eta from server; 2. not a super table; 3. limitation is 0;
* 4. show queries, instead of a select query
*/
size_t
numOfExprs
=
tscSqlExprNumOfExprs
(
pQueryInfo
);
...
...
@@ -192,11 +198,6 @@ bool tscIsProjectionQueryOnSTable(SQueryInfo* pQueryInfo, int32_t tableIndex) {
return
false
;
}
// only query on tag, a project query
if
(
tscQueryTags
(
pQueryInfo
))
{
return
true
;
}
for
(
int32_t
i
=
0
;
i
<
numOfExprs
;
++
i
)
{
int32_t
functionId
=
tscSqlExprGet
(
pQueryInfo
,
i
)
->
functionId
;
if
(
functionId
!=
TSDB_FUNC_PRJ
&&
functionId
!=
TSDB_FUNC_TAGPRJ
&&
functionId
!=
TSDB_FUNC_TAG
&&
...
...
@@ -208,6 +209,7 @@ bool tscIsProjectionQueryOnSTable(SQueryInfo* pQueryInfo, int32_t tableIndex) {
return
true
;
}
// not order by timestamp projection query on super table
bool
tscNonOrderedProjectionQueryOnSTable
(
SQueryInfo
*
pQueryInfo
,
int32_t
tableIndex
)
{
if
(
!
tscIsProjectionQueryOnSTable
(
pQueryInfo
,
tableIndex
))
{
return
false
;
...
...
@@ -299,7 +301,7 @@ int32_t tscCreateResPointerInfo(SSqlRes* pRes, SQueryInfo* pQueryInfo) {
tfree
(
pRes
->
buffer
);
tfree
(
pRes
->
length
);
pRes
->
code
=
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
pRes
->
code
=
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
return
pRes
->
code
;
}
}
...
...
@@ -574,7 +576,7 @@ int32_t tscCreateDataBlock(size_t initialSize, int32_t rowSize, int32_t startOff
STableDataBlocks
*
dataBuf
=
(
STableDataBlocks
*
)
calloc
(
1
,
sizeof
(
STableDataBlocks
));
if
(
dataBuf
==
NULL
)
{
tscError
(
"failed to allocated memory, reason:%s"
,
strerror
(
errno
));
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
dataBuf
->
nAllocSize
=
(
uint32_t
)
initialSize
;
...
...
@@ -709,7 +711,7 @@ int32_t tscMergeTableDataBlocks(SSqlObj* pSql, SDataBlockList* pTableDataBlockLi
tscDestroyBlockArrayList
(
pVnodeDataBlockList
);
tfree
(
dataBuf
->
pData
);
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
}
...
...
@@ -780,12 +782,12 @@ int tscAllocPayload(SSqlCmd* pCmd, int size) {
assert
(
pCmd
->
allocSize
==
0
);
pCmd
->
payload
=
(
char
*
)
calloc
(
1
,
size
);
if
(
pCmd
->
payload
==
NULL
)
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
if
(
pCmd
->
payload
==
NULL
)
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
pCmd
->
allocSize
=
size
;
}
else
{
if
(
pCmd
->
allocSize
<
size
)
{
char
*
b
=
realloc
(
pCmd
->
payload
,
size
);
if
(
b
==
NULL
)
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
if
(
b
==
NULL
)
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
pCmd
->
payload
=
b
;
pCmd
->
allocSize
=
size
;
}
...
...
@@ -984,7 +986,6 @@ static SSqlExpr* doBuildSqlExpr(SQueryInfo* pQueryInfo, int16_t functionId, SCol
pExpr
->
uid
=
pTableMetaInfo
->
pTableMeta
->
uid
;
}
return
pExpr
;
}
...
...
@@ -1245,14 +1246,14 @@ static int32_t validateQuoteToken(SSQLToken* pToken) {
}
if
(
k
!=
pToken
->
n
||
pToken
->
type
!=
TK_ID
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
TSDB_CODE_SUCCESS
;
}
int32_t
tscValidateName
(
SSQLToken
*
pToken
)
{
if
(
pToken
->
type
!=
TK_STRING
&&
pToken
->
type
!=
TK_ID
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
char
*
sep
=
strnchr
(
pToken
->
z
,
TS_PATH_DELIMITER
[
0
],
pToken
->
n
,
true
);
...
...
@@ -1269,14 +1270,14 @@ int32_t tscValidateName(SSQLToken* pToken) {
}
else
{
sep
=
strnchr
(
pToken
->
z
,
TS_PATH_DELIMITER
[
0
],
pToken
->
n
,
true
);
if
(
sep
==
NULL
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
return
tscValidateName
(
pToken
);
}
}
else
{
if
(
isNumber
(
pToken
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
}
}
else
{
// two part
...
...
@@ -1289,15 +1290,15 @@ int32_t tscValidateName(SSQLToken* pToken) {
pToken
->
n
=
tSQLGetToken
(
pToken
->
z
,
&
pToken
->
type
);
if
(
pToken
->
z
[
pToken
->
n
]
!=
TS_PATH_DELIMITER
[
0
])
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
pToken
->
type
!=
TK_STRING
&&
pToken
->
type
!=
TK_ID
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
pToken
->
type
==
TK_STRING
&&
validateQuoteToken
(
pToken
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
int32_t
firstPartLen
=
pToken
->
n
;
...
...
@@ -1306,11 +1307,11 @@ int32_t tscValidateName(SSQLToken* pToken) {
pToken
->
n
=
oldLen
-
(
sep
-
pStr
)
-
1
;
int32_t
len
=
tSQLGetToken
(
pToken
->
z
,
&
pToken
->
type
);
if
(
len
!=
pToken
->
n
||
(
pToken
->
type
!=
TK_STRING
&&
pToken
->
type
!=
TK_ID
))
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
if
(
pToken
->
type
==
TK_STRING
&&
validateQuoteToken
(
pToken
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
// re-build the whole name string
...
...
@@ -1579,7 +1580,7 @@ int32_t tscAddSubqueryInfo(SSqlCmd* pCmd) {
size_t
s
=
pCmd
->
numOfClause
+
1
;
char
*
tmp
=
realloc
(
pCmd
->
pQueryInfo
,
s
*
POINTER_BYTES
);
if
(
tmp
==
NULL
)
{
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TSC
_OUT_OF_MEMORY
;
}
pCmd
->
pQueryInfo
=
(
SQueryInfo
**
)
tmp
;
...
...
@@ -1947,8 +1948,8 @@ int16_t tscGetJoinTagColIndexByUid(STagCond* pTagCond, uint64_t uid) {
bool
tscIsUpdateQuery
(
SSqlObj
*
pSql
)
{
if
(
pSql
==
NULL
||
pSql
->
signature
!=
pSql
)
{
terrno
=
TSDB_CODE_DISCONNECTED
;
return
TSDB_CODE_DISCONNECTED
;
terrno
=
TSDB_CODE_
TSC_
DISCONNECTED
;
return
TSDB_CODE_
TSC_
DISCONNECTED
;
}
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
...
...
@@ -1965,7 +1966,7 @@ int32_t tscInvalidSQLErrMsg(char* msg, const char* additionalInfo, const char* s
if
(
sql
==
NULL
)
{
assert
(
additionalInfo
!=
NULL
);
sprintf
(
msg
,
msgFormat1
,
additionalInfo
);
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
char
buf
[
64
]
=
{
0
};
// only extract part of sql string
...
...
@@ -1977,7 +1978,7 @@ int32_t tscInvalidSQLErrMsg(char* msg, const char* additionalInfo, const char* s
sprintf
(
msg
,
msgFormat3
,
buf
);
// no additional information for invalid sql error
}
return
TSDB_CODE_INVALID_SQL
;
return
TSDB_CODE_
TSC_
INVALID_SQL
;
}
bool
tscHasReachLimitation
(
SQueryInfo
*
pQueryInfo
,
SSqlRes
*
pRes
)
{
...
...
@@ -2146,7 +2147,7 @@ void tscGetResultColumnChr(SSqlRes* pRes, SFieldInfo* pFieldInfo, int32_t column
void
*
malloc_throw
(
size_t
size
)
{
void
*
p
=
malloc
(
size
);
if
(
p
==
NULL
)
{
THROW
(
TSDB_CODE_
CLI
_OUT_OF_MEMORY
);
THROW
(
TSDB_CODE_
TSC
_OUT_OF_MEMORY
);
}
return
p
;
}
...
...
@@ -2154,7 +2155,7 @@ void* malloc_throw(size_t size) {
void
*
calloc_throw
(
size_t
nmemb
,
size_t
size
)
{
void
*
p
=
calloc
(
nmemb
,
size
);
if
(
p
==
NULL
)
{
THROW
(
TSDB_CODE_
CLI
_OUT_OF_MEMORY
);
THROW
(
TSDB_CODE_
TSC
_OUT_OF_MEMORY
);
}
return
p
;
}
...
...
@@ -2162,7 +2163,7 @@ void* calloc_throw(size_t nmemb, size_t size) {
char
*
strdup_throw
(
const
char
*
str
)
{
char
*
p
=
strdup
(
str
);
if
(
p
==
NULL
)
{
THROW
(
TSDB_CODE_
CLI
_OUT_OF_MEMORY
);
THROW
(
TSDB_CODE_
TSC
_OUT_OF_MEMORY
);
}
return
p
;
}
...
...
@@ -2173,7 +2174,7 @@ int tscSetMgmtIpListFromCfg(const char *first, const char *second) {
if
(
first
&&
first
[
0
]
!=
0
)
{
if
(
strlen
(
first
)
>=
TSDB_EP_LEN
)
{
terrno
=
TSDB_CODE_INVALID_FQDN
;
terrno
=
TSDB_CODE_
TSC_
INVALID_FQDN
;
return
-
1
;
}
taosGetFqdnPortFromEp
(
first
,
tscMgmtIpSet
.
fqdn
[
tscMgmtIpSet
.
numOfIps
],
&
tscMgmtIpSet
.
port
[
tscMgmtIpSet
.
numOfIps
]);
...
...
@@ -2182,7 +2183,7 @@ int tscSetMgmtIpListFromCfg(const char *first, const char *second) {
if
(
second
&&
second
[
0
]
!=
0
)
{
if
(
strlen
(
second
)
>=
TSDB_EP_LEN
)
{
terrno
=
TSDB_CODE_INVALID_FQDN
;
terrno
=
TSDB_CODE_
TSC_
INVALID_FQDN
;
return
-
1
;
}
taosGetFqdnPortFromEp
(
second
,
tscMgmtIpSet
.
fqdn
[
tscMgmtIpSet
.
numOfIps
],
&
tscMgmtIpSet
.
port
[
tscMgmtIpSet
.
numOfIps
]);
...
...
@@ -2190,7 +2191,7 @@ int tscSetMgmtIpListFromCfg(const char *first, const char *second) {
}
if
(
tscMgmtIpSet
.
numOfIps
==
0
)
{
terrno
=
TSDB_CODE_INVALID_FQDN
;
terrno
=
TSDB_CODE_
TSC_
INVALID_FQDN
;
return
-
1
;
}
...
...
src/common/src/tglobal.c
浏览文件 @
3bb9451c
...
...
@@ -234,7 +234,7 @@ bool taosCfgDynamicOptions(char *msg) {
int32_t
vint
=
0
;
paGetToken
(
msg
,
&
option
,
&
olen
);
if
(
olen
==
0
)
return
TSDB_CODE_
INVALID_MSG_CONTENT
;
if
(
olen
==
0
)
return
TSDB_CODE_
COM_INVALID_CFG_MSG
;
paGetToken
(
option
+
olen
+
1
,
&
value
,
&
vlen
);
if
(
vlen
==
0
)
...
...
src/connector/python/linux/python2/taos/cinterface.py
浏览文件 @
3bb9451c
...
...
@@ -413,5 +413,5 @@ if __name__ == '__main__':
print
(
data
)
cinter
.
free
r
esult
(
result
)
cinter
.
free
R
esult
(
result
)
cinter
.
close
(
conn
)
\ No newline at end of file
src/connector/python/linux/python2/taos/cursor.py
浏览文件 @
3bb9451c
...
...
@@ -93,7 +93,6 @@ class TDengineCursor(object):
if
self
.
_connection
is
None
:
return
False
self
.
_connection
.
clear_result_set
()
self
.
_reset_result
()
self
.
_connection
=
None
...
...
@@ -109,7 +108,6 @@ class TDengineCursor(object):
# TODO : change the exception raised here
raise
ProgrammingError
(
"Cursor is not connected"
)
self
.
_connection
.
clear_result_set
()
self
.
_reset_result
()
stmt
=
operation
...
...
@@ -202,7 +200,6 @@ class TDengineCursor(object):
for
i
in
range
(
len
(
self
.
_fields
)):
buffer
[
i
].
extend
(
block
[
i
])
self
.
_connection
.
clear_result_set
()
return
list
(
map
(
tuple
,
zip
(
*
buffer
)))
...
...
@@ -222,6 +219,8 @@ class TDengineCursor(object):
"""
self
.
_description
=
None
self
.
_rowcount
=
-
1
if
self
.
_result
is
not
None
:
CTaosInterface
.
freeResult
(
self
.
_result
)
self
.
_result
=
None
self
.
_fields
=
None
self
.
_block
=
None
...
...
src/connector/python/linux/python3/taos/cinterface.py
浏览文件 @
3bb9451c
...
...
@@ -413,5 +413,5 @@ if __name__ == '__main__':
print
(
data
)
cinter
.
free
r
esult
(
result
)
cinter
.
free
R
esult
(
result
)
cinter
.
close
(
conn
)
\ No newline at end of file
src/connector/python/linux/python3/taos/cursor.py
浏览文件 @
3bb9451c
...
...
@@ -95,7 +95,6 @@ class TDengineCursor(object):
if
self
.
_connection
is
None
:
return
False
self
.
_connection
.
clear_result_set
()
self
.
_reset_result
()
self
.
_connection
=
None
...
...
@@ -111,7 +110,6 @@ class TDengineCursor(object):
# TODO : change the exception raised here
raise
ProgrammingError
(
"Cursor is not connected"
)
self
.
_connection
.
clear_result_set
()
self
.
_reset_result
()
stmt
=
operation
...
...
@@ -204,8 +202,6 @@ class TDengineCursor(object):
for
i
in
range
(
len
(
self
.
_fields
)):
buffer
[
i
].
extend
(
block
[
i
])
self
.
_connection
.
clear_result_set
()
return
list
(
map
(
tuple
,
zip
(
*
buffer
)))
def
nextset
(
self
):
...
...
@@ -224,6 +220,8 @@ class TDengineCursor(object):
"""
self
.
_description
=
None
self
.
_rowcount
=
-
1
if
self
.
_result
is
not
None
:
CTaosInterface
.
freeResult
(
self
.
_result
)
self
.
_result
=
None
self
.
_fields
=
None
self
.
_block
=
None
...
...
@@ -240,3 +238,4 @@ class TDengineCursor(object):
(
ele
[
'name'
],
ele
[
'type'
],
None
,
None
,
None
,
None
,
False
))
return
self
.
_result
src/connector/python/windows/python2/taos/cinterface.py
浏览文件 @
3bb9451c
...
...
@@ -413,5 +413,5 @@ if __name__ == '__main__':
print
(
data
)
cinter
.
free
r
esult
(
result
)
cinter
.
free
R
esult
(
result
)
cinter
.
close
(
conn
)
\ No newline at end of file
src/connector/python/windows/python2/taos/cursor.py
浏览文件 @
3bb9451c
...
...
@@ -86,7 +86,6 @@ class TDengineCursor(object):
if
self
.
_connection
is
None
:
return
False
self
.
_connection
.
clear_result_set
()
self
.
_reset_result
()
self
.
_connection
=
None
...
...
@@ -102,7 +101,6 @@ class TDengineCursor(object):
# TODO : change the exception raised here
raise
ProgrammingError
(
"Cursor is not connected"
)
self
.
_connection
.
clear_result_set
()
self
.
_reset_result
()
stmt
=
operation
...
...
@@ -149,7 +147,6 @@ class TDengineCursor(object):
for
i
in
range
(
len
(
self
.
_fields
)):
buffer
[
i
].
extend
(
block
[
i
])
self
.
_connection
.
clear_result_set
()
return
list
(
map
(
tuple
,
zip
(
*
buffer
)))
...
...
@@ -171,6 +168,8 @@ class TDengineCursor(object):
"""
self
.
_description
=
None
self
.
_rowcount
=
-
1
if
self
.
_result
is
not
None
:
CTaosInterface
.
freeResult
(
self
.
_result
)
self
.
_result
=
None
self
.
_fields
=
None
self
.
_block
=
None
...
...
src/connector/python/windows/python3/taos/cinterface.py
浏览文件 @
3bb9451c
...
...
@@ -413,5 +413,5 @@ if __name__ == '__main__':
print
(
data
)
cinter
.
free
r
esult
(
result
)
cinter
.
free
R
esult
(
result
)
cinter
.
close
(
conn
)
\ No newline at end of file
src/connector/python/windows/python3/taos/cursor.py
浏览文件 @
3bb9451c
...
...
@@ -86,7 +86,6 @@ class TDengineCursor(object):
if
self
.
_connection
is
None
:
return
False
self
.
_connection
.
clear_result_set
()
self
.
_reset_result
()
self
.
_connection
=
None
...
...
@@ -102,7 +101,6 @@ class TDengineCursor(object):
# TODO : change the exception raised here
raise
ProgrammingError
(
"Cursor is not connected"
)
self
.
_connection
.
clear_result_set
()
self
.
_reset_result
()
stmt
=
operation
...
...
@@ -149,7 +147,6 @@ class TDengineCursor(object):
for
i
in
range
(
len
(
self
.
_fields
)):
buffer
[
i
].
extend
(
block
[
i
])
self
.
_connection
.
clear_result_set
()
return
list
(
map
(
tuple
,
zip
(
*
buffer
)))
...
...
@@ -171,6 +168,8 @@ class TDengineCursor(object):
"""
self
.
_description
=
None
self
.
_rowcount
=
-
1
if
self
.
_result
is
not
None
:
CTaosInterface
.
freeResult
(
self
.
_result
)
self
.
_result
=
None
self
.
_fields
=
None
self
.
_block
=
None
...
...
src/dnode/src/dnodeMPeer.c
浏览文件 @
3bb9451c
...
...
@@ -79,7 +79,7 @@ void dnodeCleanupMnodePeer() {
int32_t
dnodeAllocateMnodePqueue
()
{
tsMPeerQueue
=
taosOpenQueue
();
if
(
tsMPeerQueue
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
tsMPeerQueue
==
NULL
)
return
TSDB_CODE_
DND
_OUT_OF_MEMORY
;
taosAddIntoQset
(
tsMPeerQset
,
tsMPeerQueue
,
NULL
);
...
...
@@ -125,7 +125,7 @@ static void dnodeFreeMnodePeerMsg(SMnodeMsg *pPeer) {
}
static
void
dnodeSendRpcMnodePeerRsp
(
SMnodeMsg
*
pPeer
,
int32_t
code
)
{
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
MND_
ACTION_IN_PROGRESS
)
return
;
SRpcMsg
rpcRsp
=
{
.
handle
=
pPeer
->
rpcMsg
.
handle
,
...
...
src/dnode/src/dnodeMRead.c
浏览文件 @
3bb9451c
...
...
@@ -84,7 +84,7 @@ void dnodeCleanupMnodeRead() {
int32_t
dnodeAllocateMnodeRqueue
()
{
tsMReadQueue
=
taosOpenQueue
();
if
(
tsMReadQueue
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
tsMReadQueue
==
NULL
)
return
TSDB_CODE_
DND
_OUT_OF_MEMORY
;
taosAddIntoQset
(
tsMReadQset
,
tsMReadQueue
,
NULL
);
...
...
@@ -130,8 +130,8 @@ static void dnodeFreeMnodeReadMsg(SMnodeMsg *pRead) {
}
static
void
dnodeSendRpcMnodeReadRsp
(
SMnodeMsg
*
pRead
,
int32_t
code
)
{
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_ACTION_NEED_REPROCESSED
)
{
if
(
code
==
TSDB_CODE_
MND_
ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
MND_
ACTION_NEED_REPROCESSED
)
{
// may be a auto create req, should put into write queue
dnodeReprocessMnodeWriteMsg
(
pRead
);
return
;
...
...
src/dnode/src/dnodeMWrite.c
浏览文件 @
3bb9451c
...
...
@@ -81,7 +81,7 @@ void dnodeCleanupMnodeWrite() {
int32_t
dnodeAllocateMnodeWqueue
()
{
tsMWriteQueue
=
taosOpenQueue
();
if
(
tsMWriteQueue
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
tsMWriteQueue
==
NULL
)
return
TSDB_CODE_
DND
_OUT_OF_MEMORY
;
taosAddIntoQset
(
tsMWriteQset
,
tsMWriteQueue
,
NULL
);
...
...
@@ -128,8 +128,8 @@ static void dnodeFreeMnodeWriteMsg(SMnodeMsg *pWrite) {
void
dnodeSendRpcMnodeWriteRsp
(
void
*
pRaw
,
int32_t
code
)
{
SMnodeMsg
*
pWrite
=
pRaw
;
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_ACTION_NEED_REPROCESSED
)
{
if
(
code
==
TSDB_CODE_
MND_
ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
MND_
ACTION_NEED_REPROCESSED
)
{
dnodeReprocessMnodeWriteMsg
(
pWrite
);
return
;
}
...
...
src/dnode/src/dnodeMgmt.c
浏览文件 @
3bb9451c
...
...
@@ -180,7 +180,7 @@ void dnodeDispatchToMgmtQueue(SRpcMsg *pMsg) {
SRpcMsg
rsp
;
rsp
.
handle
=
pMsg
->
handle
;
rsp
.
pCont
=
NULL
;
rsp
.
code
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
rsp
.
code
=
TSDB_CODE_
DND
_OUT_OF_MEMORY
;
rpcSendResponse
(
&
rsp
);
rpcFreeCont
(
pMsg
->
pCont
);
}
...
...
@@ -202,7 +202,7 @@ static void *dnodeProcessMgmtQueue(void *param) {
if
(
dnodeProcessMgmtMsgFp
[
pMsg
->
msgType
])
{
rsp
.
code
=
(
*
dnodeProcessMgmtMsgFp
[
pMsg
->
msgType
])(
pMsg
);
}
else
{
rsp
.
code
=
TSDB_CODE_MSG_NOT_PROCESSED
;
rsp
.
code
=
TSDB_CODE_
DND_
MSG_NOT_PROCESSED
;
}
rsp
.
handle
=
pMsg
->
handle
;
...
...
@@ -219,7 +219,7 @@ static void *dnodeProcessMgmtQueue(void *param) {
static
int32_t
dnodeGetVnodeList
(
int32_t
vnodeList
[],
int32_t
*
numOfVnodes
)
{
DIR
*
dir
=
opendir
(
tsVnodeDir
);
if
(
dir
==
NULL
)
{
return
TSDB_CODE_NO_WRITE_ACCESS
;
return
TSDB_CODE_
DND_
NO_WRITE_ACCESS
;
}
*
numOfVnodes
=
0
;
...
...
src/dnode/src/dnodePeer.c
浏览文件 @
3bb9451c
...
...
@@ -89,7 +89,7 @@ static void dnodeProcessReqMsgFromDnode(SRpcMsg *pMsg, SRpcIpSet *pIpSet) {
rspMsg
.
contLen
=
0
;
if
(
dnodeGetRunStatus
()
!=
TSDB_DNODE_RUN_STATUS_RUNING
)
{
rspMsg
.
code
=
TSDB_CODE_NOT_READY
;
rspMsg
.
code
=
TSDB_CODE_
RPC_
NOT_READY
;
rpcSendResponse
(
&
rspMsg
);
rpcFreeCont
(
pMsg
->
pCont
);
dTrace
(
"RPC %p, msg:%s is ignored since dnode not running"
,
pMsg
->
handle
,
taosMsg
[
pMsg
->
msgType
]);
...
...
@@ -97,7 +97,7 @@ static void dnodeProcessReqMsgFromDnode(SRpcMsg *pMsg, SRpcIpSet *pIpSet) {
}
if
(
pMsg
->
pCont
==
NULL
)
{
rspMsg
.
code
=
TSDB_CODE_INVALID_MSG_LEN
;
rspMsg
.
code
=
TSDB_CODE_
DND_
INVALID_MSG_LEN
;
rpcSendResponse
(
&
rspMsg
);
return
;
}
...
...
@@ -106,7 +106,7 @@ static void dnodeProcessReqMsgFromDnode(SRpcMsg *pMsg, SRpcIpSet *pIpSet) {
(
*
dnodeProcessReqMsgFp
[
pMsg
->
msgType
])(
pMsg
);
}
else
{
dTrace
(
"RPC %p, message:%s not processed"
,
pMsg
->
handle
,
taosMsg
[
pMsg
->
msgType
]);
rspMsg
.
code
=
TSDB_CODE_MSG_NOT_PROCESSED
;
rspMsg
.
code
=
TSDB_CODE_
DND_
MSG_NOT_PROCESSED
;
rpcSendResponse
(
&
rspMsg
);
rpcFreeCont
(
pMsg
->
pCont
);
}
...
...
src/dnode/src/dnodeShell.c
浏览文件 @
3bb9451c
...
...
@@ -115,7 +115,7 @@ void dnodeProcessMsgFromShell(SRpcMsg *pMsg, SRpcIpSet *pIpSet) {
if
(
dnodeGetRunStatus
()
!=
TSDB_DNODE_RUN_STATUS_RUNING
)
{
dError
(
"RPC %p, shell msg:%s is ignored since dnode not running"
,
pMsg
->
handle
,
taosMsg
[
pMsg
->
msgType
]);
rpcMsg
.
code
=
TSDB_CODE_NOT_READY
;
rpcMsg
.
code
=
TSDB_CODE_
RPC_
NOT_READY
;
rpcSendResponse
(
&
rpcMsg
);
rpcFreeCont
(
pMsg
->
pCont
);
return
;
...
...
@@ -131,7 +131,7 @@ void dnodeProcessMsgFromShell(SRpcMsg *pMsg, SRpcIpSet *pIpSet) {
(
*
dnodeProcessShellMsgFp
[
pMsg
->
msgType
])(
pMsg
);
}
else
{
dError
(
"RPC %p, shell msg:%s is not processed"
,
pMsg
->
handle
,
taosMsg
[
pMsg
->
msgType
]);
rpcMsg
.
code
=
TSDB_CODE_MSG_NOT_PROCESSED
;
rpcMsg
.
code
=
TSDB_CODE_
DND_
MSG_NOT_PROCESSED
;
rpcSendResponse
(
&
rpcMsg
);
rpcFreeCont
(
pMsg
->
pCont
);
return
;
...
...
@@ -140,7 +140,7 @@ void dnodeProcessMsgFromShell(SRpcMsg *pMsg, SRpcIpSet *pIpSet) {
static
int
dnodeRetrieveUserAuthInfo
(
char
*
user
,
char
*
spi
,
char
*
encrypt
,
char
*
secret
,
char
*
ckey
)
{
int
code
=
mnodeRetriveAuth
(
user
,
spi
,
encrypt
,
secret
,
ckey
);
if
(
code
!=
TSDB_CODE_NOT_READY
)
return
code
;
if
(
code
!=
TSDB_CODE_
RPC_
NOT_READY
)
return
code
;
SDMAuthMsg
*
pMsg
=
rpcMallocCont
(
sizeof
(
SDMAuthMsg
));
strcpy
(
pMsg
->
user
,
user
);
...
...
src/dnode/src/dnodeVRead.c
浏览文件 @
3bb9451c
...
...
@@ -134,7 +134,7 @@ void dnodeDispatchToVnodeReadQueue(SRpcMsg *pMsg) {
.
handle
=
pMsg
->
handle
,
.
pCont
=
NULL
,
.
contLen
=
0
,
.
code
=
TSDB_CODE_INVALID_VGROUP_ID
,
.
code
=
TSDB_CODE_
VND_
INVALID_VGROUP_ID
,
.
msgType
=
0
};
rpcSendResponse
(
&
rpcRsp
);
...
...
@@ -189,8 +189,8 @@ static void dnodeContinueExecuteQuery(void* pVnode, void* qhandle, SReadMsg *pMs
}
void
dnodeSendRpcReadRsp
(
void
*
pVnode
,
SReadMsg
*
pRead
,
int32_t
code
)
{
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_ACTION_NEED_REPROCESSED
)
{
if
(
code
==
TSDB_CODE_
VND_
ACTION_IN_PROGRESS
)
return
;
if
(
code
==
TSDB_CODE_
VND_
ACTION_NEED_REPROCESSED
)
{
dnodeContinueExecuteQuery
(
pVnode
,
pRead
->
rspRet
.
qhandle
,
pRead
);
}
...
...
src/dnode/src/dnodeVWrite.c
浏览文件 @
3bb9451c
...
...
@@ -115,7 +115,7 @@ void dnodeDispatchToVnodeWriteQueue(SRpcMsg *pMsg) {
.
handle
=
pMsg
->
handle
,
.
pCont
=
NULL
,
.
contLen
=
0
,
.
code
=
TSDB_CODE_INVALID_VGROUP_ID
,
.
code
=
TSDB_CODE_
VND_
INVALID_VGROUP_ID
,
.
msgType
=
0
};
rpcSendResponse
(
&
rpcRsp
);
...
...
src/inc/taoserror.h
浏览文件 @
3bb9451c
...
...
@@ -46,135 +46,173 @@ static STaosError errors[] = {
#endif
// rpc
TAOS_DEFINE_ERROR
(
TSDB_CODE_ACTION_IN_PROGRESS
,
0
,
0x0001
,
"action in progress"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ACTION_NEED_REPROCESSED
,
0
,
0x0003
,
"action need to be reprocessed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MSG_NOT_PROCESSED
,
0
,
0x0004
,
"message not processed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ALREADY_PROCESSED
,
0
,
0x0005
,
"message already processed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_REDIRECT
,
0
,
0x0006
,
"redirect"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_LAST_SESSION_NOT_FINISHED
,
0
,
0x0007
,
"last session not finished"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MAX_SESSIONS
,
0
,
0x0008
,
"max sessions"
)
// too many sessions
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_SESSION_ID
,
0
,
0x0009
,
"invalid session id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_TRAN_ID
,
0
,
0x000A
,
"invalid transaction id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_MSG_TYPE
,
0
,
0x000B
,
"invalid message type"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_MSG_LEN
,
0
,
0x000C
,
"invalid message length"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_MSG_CONTENT
,
0
,
0x000D
,
"invalid message content"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_MSG_VERSION
,
0
,
0x000E
,
"invalid message version"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_UNEXPECTED_RESPONSE
,
0
,
0x000F
,
"unexpected response"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_RESPONSE_TYPE
,
0
,
0x0010
,
"invalid response type"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MISMATCHED_METER_ID
,
0
,
0x0011
,
"mismatched meter id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DISCONNECTED
,
0
,
0x0012
,
"disconnected"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NOT_READY
,
0
,
0x0013
,
"not ready"
)
// peer is not ready to process data
TAOS_DEFINE_ERROR
(
TSDB_CODE_TOO_SLOW
,
0
,
0x0014
,
"too slow"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_OTHERS
,
0
,
0x0015
,
"others"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_APP_ERROR
,
0
,
0x0016
,
"app error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_ALREADY_THERE
,
0
,
0x0017
,
"already there"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NO_RESOURCE
,
0
,
0x0018
,
"no resource"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_OPS_NOT_SUPPORT
,
0
,
0x0019
,
"operations not support"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_OPTION
,
0
,
0x001A
,
"invalid option"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NOT_CONFIGURED
,
0
,
0x001B
,
"not configured"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NETWORK_UNAVAIL
,
0
,
0x001C
,
"network unavailable"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_AUTH_REQUIRED
,
0
,
0x001D
,
"auth required"
)
// db
TAOS_DEFINE_ERROR
(
TSDB_CODE_DB_NOT_SELECTED
,
0
,
0x0100
,
"db not selected"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DB_ALREADY_EXIST
,
0
,
0x0101
,
"database aleady exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_DB
,
0
,
0x0102
,
"invalid database"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MONITOR_DB_FORBIDDEN
,
0
,
0x0103
,
"monitor db forbidden"
)
// user
TAOS_DEFINE_ERROR
(
TSDB_CODE_USER_ALREADY_EXIST
,
0
,
0x0180
,
"user already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_USER
,
0
,
0x0181
,
"invalid user"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_PASS
,
0
,
0x0182
,
"invalid password"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_USER_FORMAT
,
0
,
0x0183
,
"invalid user format"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_PASS_FORMAT
,
0
,
0x0184
,
"invalid password format"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NO_USER_FROM_CONN
,
0
,
0x0185
,
"can not get user from conn"
)
// table
TAOS_DEFINE_ERROR
(
TSDB_CODE_TABLE_ALREADY_EXIST
,
0
,
0x0200
,
"table already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_TABLE_ID
,
0
,
0x0201
,
"invalid table id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_TABLE_TYPE
,
0
,
0x0202
,
"invalid table type"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NOT_SUPER_TABLE
,
0
,
0x0203
,
"no super table"
)
// operation only available for super table
TAOS_DEFINE_ERROR
(
TSDB_CODE_TAG_ALREAY_EXIST
,
0
,
0x0204
,
"tag already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TAG_NOT_EXIST
,
0
,
0x0205
,
"tag not exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_FIELD_ALREAY_EXIST
,
0
,
0x0206
,
"field already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_FIELD_NOT_EXIST
,
0
,
0x0207
,
"field not exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_COL_NAME_TOO_LONG
,
0
,
0x0208
,
"column name too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TOO_MANY_TAGS
,
0
,
0x0209
,
"too many tags"
)
// dnode & mnode
TAOS_DEFINE_ERROR
(
TSDB_CODE_NO_ENOUGH_DNODES
,
0
,
0x0280
,
"no enough dnodes"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DNODE_ALREADY_EXIST
,
0
,
0x0281
,
"dnode already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DNODE_NOT_EXIST
,
0
,
0x0282
,
"dnode not exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NO_MASTER
,
0
,
0x0283
,
"no master"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NO_REMOVE_MASTER
,
0
,
0x0284
,
"no remove master"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_QUERY_ID
,
0
,
0x0285
,
"invalid query id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_STREAM_ID
,
0
,
0x0286
,
"invalid stream id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_CONNECTION
,
0
,
0x0287
,
"invalid connection"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_SDB_ERROR
,
0
,
0x0288
,
"sdb error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TIMESTAMP_OUT_OF_RANGE
,
0
,
0x0289
,
"timestamp is out of range"
)
// acct
TAOS_DEFINE_ERROR
(
TSDB_CODE_ACCT_ALREADY_EXIST
,
0
,
0x0300
,
"accounts already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_ACCT
,
0
,
0x0301
,
"invalid account"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_ACCT_PARAMETER
,
0
,
0x0302
,
"invalid account parameter"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TOO_MANY_ACCTS
,
0
,
0x0303
,
"too many accounts"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TOO_MANY_USERS
,
0
,
0x0304
,
"too many users"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TOO_MANY_TABLES
,
0
,
0x0305
,
"too many tables"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TOO_MANY_DATABASES
,
0
,
0x0306
,
"too many databases"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TOO_MANY_TIME_SERIES
,
0
,
0x0307
,
"not enough time series"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_ACTION_IN_PROGRESS
,
0
,
0x0001
,
"action in progress"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_AUTH_REQUIRED
,
0
,
0x0002
,
"auth required"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_AUTH_FAILURE
,
0
,
0x0003
,
"auth failure"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_REDIRECT
,
0
,
0x0004
,
"redirect"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_NOT_READY
,
0
,
0x0005
,
"not ready"
)
// peer is not ready to process data
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_ALREADY_PROCESSED
,
0
,
0x0006
,
"message already processed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_LAST_SESSION_NOT_FINISHED
,
0
,
0x0007
,
"last session not finished"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_MISMATCHED_LINK_ID
,
0
,
0x0008
,
"mismatched meter id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_TOO_SLOW
,
0
,
0x0009
,
"too slow"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_MAX_SESSIONS
,
0
,
0x000A
,
"max sessions"
)
// too many sessions
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_NETWORK_UNAVAIL
,
0
,
0x000B
,
"network unavailable"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_APP_ERROR
,
0
,
0x000C
,
"rpc app error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_UNEXPECTED_RESPONSE
,
0
,
0x000D
,
"unexpected response"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_INVALID_VALUE
,
0
,
0x000E
,
"invalid value"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_INVALID_TRAN_ID
,
0
,
0x000F
,
"invalid transaction id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_INVALID_SESSION_ID
,
0
,
0x0010
,
"invalid session id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_INVALID_MSG_TYPE
,
0
,
0x0011
,
"invalid message type"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_INVALID_RESPONSE_TYPE
,
0
,
0x0012
,
"invalid response type"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_RPC_INVALID_TIME_STAMP
,
0
,
0x0013
,
"invalid timestamp"
)
//common & util
TAOS_DEFINE_ERROR
(
TSDB_CODE_COM_OPS_NOT_SUPPORT
,
0
,
0x0100
,
"operations not support"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_COM_MEMORY_CORRUPTED
,
0
,
0x0101
,
"memory corrupted"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_COM_OUT_OF_MEMORY
,
0
,
0x0102
,
"out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_COM_INVALID_CFG_MSG
,
0
,
0x0103
,
"invalid config message"
)
//client
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_SQL
,
0
,
0x0200
,
"invalid sql"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_QHANDLE
,
0
,
0x0201
,
"client invalid qhandle"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_TIME_STAMP
,
0
,
0x0202
,
"client time/server time can not be mixed up"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_VALUE
,
0
,
0x0203
,
"clientinvalid value"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_VERSION
,
0
,
0x0204
,
"client invalid version"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_IE
,
0
,
0x0205
,
"client invalid ie"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_FQDN
,
0
,
0x0206
,
"client invalid fqdn"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_USER_LENGTH
,
0
,
0x0207
,
"client invalid username length"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_PASS_LENGTH
,
0
,
0x0208
,
"client invalid password length"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_DB_LENGTH
,
0
,
0x0209
,
"client invalid database length"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_TABLE_ID_LENGTH
,
0
,
0x020A
,
"client invalid table length"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_CONNECTION
,
0
,
0x020B
,
"client invalid connection"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_OUT_OF_MEMORY
,
0
,
0x020C
,
"client out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_NO_DISKSPACE
,
0
,
0x020D
,
"client no disk space"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_QUERY_CACHE_ERASED
,
0
,
0x020E
,
"client query cache erased"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_QUERY_CANCELLED
,
0
,
0x020F
,
"client query cancelled"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_SORTED_RES_TOO_MANY
,
0
,
0x0210
,
"client sorted res too many"
)
// too many result for ordered super table projection query
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_APP_ERROR
,
0
,
0x0211
,
"client app error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_ACTION_IN_PROGRESS
,
0
,
0x0212
,
"client action in progress"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_DISCONNECTED
,
0
,
0x0213
,
"client disconnected"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_NO_WRITE_AUTH
,
0
,
0x0214
,
"client no write auth"
)
// mnode
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_MSG_NOT_PROCESSED
,
0
,
0x0300
,
"mnode message not processed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_ACTION_IN_PROGRESS
,
0
,
0x0301
,
"mnode action in progress"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_ACTION_NEED_REPROCESSED
,
0
,
0x0302
,
"mnode action need to be reprocessed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_NO_RIGHTS
,
0
,
0x0303
,
"mnode no rights"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_APP_ERROR
,
0
,
0x0304
,
"mnode app error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_CONNECTION
,
0
,
0x0305
,
"mnode invalid message connection"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_MSG_VERSION
,
0
,
0x0306
,
"mnode invalid message version"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_MSG_LEN
,
0
,
0x0307
,
"mnode invalid message length"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_MSG_TYPE
,
0
,
0x0308
,
"mnode invalid message type"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_TOO_MANY_SHELL_CONNS
,
0
,
0x0309
,
"mnode too many shell conns"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_OUT_OF_MEMORY
,
0
,
0x030A
,
"mnode out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_SHOWOBJ
,
0
,
0x030B
,
"mnode invalid show handle"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_QUERY_ID
,
0
,
0x030C
,
"mnode invalid query id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_STREAM_ID
,
0
,
0x030D
,
"mnode invalid stream id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_CONN_ID
,
0
,
0x030E
,
"mnode invalid connection"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_SDB_OBJ_ALREADY_THERE
,
0
,
0x0320
,
"mnode object already there"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_SDB_ERROR
,
0
,
0x0321
,
"mnode sdb error"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_DNODE_ALREADY_EXIST
,
0
,
0x0330
,
"mnode dnode already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_DNODE_NOT_EXIST
,
0
,
0x0331
,
"mnode dnode not exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_VGROUP_NOT_EXIST
,
0
,
0x0332
,
"mnode vgroup not exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_NO_REMOVE_MASTER
,
0
,
0x0333
,
"mnode cant not remove master"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_NO_ENOUGH_DNODES
,
0
,
0x0334
,
"mnode no enough dnodes"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_ACCT_ALREADY_EXIST
,
0
,
0x0340
,
"mnode accounts already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_ACCT
,
0
,
0x0341
,
"mnode invalid account"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_ACCT_PARA
,
0
,
0x0342
,
"mnode invalid account parameter"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_ACCT_OPTION
,
0
,
0x0343
,
"mnode invalid acct option"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_TOO_MANY_ACCTS
,
0
,
0x0344
,
"mnode too many accounts"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_USER_ALREADY_EXIST
,
0
,
0x0350
,
"mnode user already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_USER
,
0
,
0x0351
,
"mnode invalid user"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_USER_FORMAT
,
0
,
0x0352
,
"mnode invalid user format"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_PASS_FORMAT
,
0
,
0x0353
,
"mnode invalid password format"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_NO_USER_FROM_CONN
,
0
,
0x0354
,
"mnode can not get user from conn"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_TOO_MANY_USERS
,
0
,
0x0355
,
"mnode too many users"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_TABLE_ALREADY_EXIST
,
0
,
0x0360
,
"mnode table already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_TABLE_ID
,
0
,
0x0361
,
"mnode invalid table id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_TABLE_TYPE
,
0
,
0x0362
,
"mnode invalid table type"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_TOO_MANY_TAGS
,
0
,
0x0363
,
"mnode too many tags"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_TOO_MANY_TABLES
,
0
,
0x0364
,
"mnode too many tables"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_TOO_MANY_TIMESERIES
,
0
,
0x0365
,
"mnode not enough time series"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_NOT_SUPER_TABLE
,
0
,
0x0366
,
"mnode no super table"
)
// operation only available for super table
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_COL_NAME_TOO_LONG
,
0
,
0x0367
,
"mnode column name too long"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_TAG_ALREAY_EXIST
,
0
,
0x0368
,
"mnode tag already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_TAG_NOT_EXIST
,
0
,
0x0369
,
"mnode tag not exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_FIELD_ALREAY_EXIST
,
0
,
0x036A
,
"mnode field already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_FIELD_NOT_EXIST
,
0
,
0x036B
,
"mnode field not exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_DB_NOT_SELECTED
,
0
,
0x0380
,
"mnode db not selected"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_DB_ALREADY_EXIST
,
0
,
0x0381
,
"mnode database aleady exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_DB_OPTION
,
0
,
0x0382
,
"mnode invalid db option"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_INVALID_DB
,
0
,
0x0383
,
"mnode invalid database"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_MONITOR_DB_FORBIDDEN
,
0
,
0x0384
,
"mnode monitor db forbidden"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_TOO_MANY_DATABASES
,
0
,
0x0385
,
"mnode too many databases"
)
// dnode
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_MSG_NOT_PROCESSED
,
0
,
0x0400
,
"dnode message not processed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_OUT_OF_MEMORY
,
0
,
0x0401
,
"dnode out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_NO_WRITE_ACCESS
,
0
,
0x0402
,
"dnode no disk write access"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_INVALID_MSG_LEN
,
0
,
0x0403
,
"dnode invalid message length"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_DND_INVALID_FILE_FORMAT
,
0
,
0x0404
,
"dnode invalid file format"
)
// vnode
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_ACTION_IN_PROGRESS
,
0
,
0x0500
,
"vnode action in progress"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_MSG_NOT_PROCESSED
,
0
,
0x0501
,
"vnode message not processed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_ACTION_NEED_REPROCESSED
,
0
,
0x0502
,
"vnode action need to be reprocessed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_INVALID_VGROUP_ID
,
0
,
0x0503
,
"vnode invalid vgroup id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_INIT_FAILED
,
0
,
0x0504
,
"vnode init failed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_NO_DISKSPACE
,
0
,
0x0505
,
"vnode no diskspace"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_NO_DISK_PERMISSIONS
,
0
,
0x0506
,
"vnode no disk permissions"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_NO_SUCH_FILE_OR_DIR
,
0
,
0x0507
,
"vnode no such file or directory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_OUT_OF_MEMORY
,
0
,
0x0508
,
"vnode out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VND_APP_ERROR
,
0
,
0x0509
,
"vnode app error"
)
// tsdb
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_INVALID_TABLE_ID
,
0
,
0x0600
,
"tsdb invalid table id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_INVALID_TABLE_TYPE
,
0
,
0x0601
,
"tsdb invalid table schema version"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_TABLE_SCHEMA_VERSION
,
0
,
0x0602
,
"tsdb invalid table schema version"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_TABLE_ALREADY_EXIST
,
0
,
0x0603
,
"tsdb table already exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_INVALID_CONFIG
,
0
,
0x0604
,
"tsdb invalid configuration"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_INIT_FAILED
,
0
,
0x0605
,
"tsdb init failed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_NO_DISKSPACE
,
0
,
0x0606
,
"tsdb no diskspace"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_NO_DISK_PERMISSIONS
,
0
,
0x0607
,
"tsdb no disk permissions"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_FILE_CORRUPTED
,
0
,
0x0608
,
"tsdb file corrupted"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_OUT_OF_MEMORY
,
0
,
0x0609
,
"tsdb out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_TAG_VER_OUT_OF_DATE
,
0
,
0x060A
,
"tsdb tag version is out of date"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TDB_TIMESTAMP_OUT_OF_RANGE
,
0
,
0x060B
,
"tsdb timestamp is out of range"
)
// query
TAOS_DEFINE_ERROR
(
TSDB_CODE_QRY_INVALID_QHANDLE
,
0
,
0x0700
,
"query invalid handle"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_QRY_INVALID_MSG
,
0
,
0x0701
,
"query invalid message"
)
// failed to validate the sql expression msg by vnode
TAOS_DEFINE_ERROR
(
TSDB_CODE_QRY_NO_DISKSPACE
,
0
,
0x0702
,
"query no diskspace"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_QRY_OUT_OF_MEMORY
,
0
,
0x0703
,
"query out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_QRY_APP_ERROR
,
0
,
0x0704
,
"query app error"
)
// grant
TAOS_DEFINE_ERROR
(
TSDB_CODE_AUTH_FAILURE
,
0
,
0x0380
,
"auth failure"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NO_RIGHTS
,
0
,
0x0381
,
"no rights"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NO_WRITE_ACCESS
,
0
,
0x0382
,
"no write access"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NO_READ_ACCESS
,
0
,
0x0383
,
"no read access"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_EXPIRED
,
0
,
0x0384
,
"grant expired"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_DNODE_LIMITED
,
0
,
0x0385
,
"grant dnode limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_ACCT_LIMITED
,
0
,
0x0386
,
"grant account limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_TIMESERIES_LIMITED
,
0
,
0x0387
,
"grant timeseries limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_DB_LIMITED
,
0
,
0x0388
,
"grant db limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_USER_LIMITED
,
0
,
0x0389
,
"grant user limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_CONN_LIMITED
,
0
,
0x038A
,
"grant conn limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_STREAM_LIMITED
,
0
,
0x038B
,
"grant stream limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_SPEED_LIMITED
,
0
,
0x038C
,
"grant speed limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_STORAGE_LIMITED
,
0
,
0x038D
,
"grant storage limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_QUERYTIME_LIMITED
,
0
,
0x038E
,
"grant query time limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_CPU_LIMITED
,
0
,
0x038F
,
"grant cpu limited"
)
// server
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_VGROUP_ID
,
0
,
0x0400
,
"invalid vgroup id"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_VG_INIT_FAILED
,
0
,
0x0402
,
"vgroup init failed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_SERV_NO_DISKSPACE
,
0
,
0x0403
,
"server no diskspace"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_SERV_OUT_OF_MEMORY
,
0
,
0x0404
,
"server out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NO_DISK_PERMISSIONS
,
0
,
0x0405
,
"no disk permissions"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_FILE_CORRUPTED
,
0
,
0x0406
,
"file corrupted"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MEMORY_CORRUPTED
,
0
,
0x0407
,
"memory corrupted"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_NOT_SUCH_FILE_OR_DIR
,
0
,
0x0408
,
"no such file or directory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TOO_MANY_SHELL_CONNS
,
0
,
0x0409
,
"too many shell conns"
)
// client
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_CLIENT_VERSION
,
0
,
0x0481
,
"invalid client version"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_CLI_OUT_OF_MEMORY
,
0
,
0x0482
,
"client out of memory"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_CLI_NO_DISKSPACE
,
0
,
0x0483
,
"client no disk space"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_TIME_STAMP
,
0
,
0x0484
,
"invalid timestamp"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_SQL
,
0
,
0x0485
,
"invalid sql"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_QUERY_CACHE_ERASED
,
0
,
0x0486
,
"query cache erased"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_QUERY_MSG
,
0
,
0x0487
,
"invalid query message"
)
// failed to validate the sql expression msg by vnode
TAOS_DEFINE_ERROR
(
TSDB_CODE_SORTED_RES_TOO_MANY
,
0
,
0x0488
,
"sorted res too many"
)
// too many result for ordered super table projection query
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_QHANDLE
,
0
,
0x0489
,
"invalid handle"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_QUERY_CANCELLED
,
0
,
0x048A
,
"query cancelled"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_IE
,
0
,
0x048B
,
"invalid ie"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_VALUE
,
0
,
0x048C
,
"invalid value"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_FQDN
,
0
,
0x048D
,
"invalid FQDN"
)
// others
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_FILE_FORMAT
,
0
,
0x0500
,
"invalid file format"
)
// TSDB
TAOS_DEFINE_ERROR
(
TSDB_CODE_INVALID_CONFIG
,
0
,
0x0580
,
"invalid TSDB configuration"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TAG_VER_OUT_OF_DATE
,
0
,
0x0581
,
"tag version is out of date"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TABLE_SCHEMA_VERSION
,
0
,
0x0582
,
"invalid table schema version from client"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_EXPIRED
,
0
,
0x0800
,
"grant expired"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_DNODE_LIMITED
,
0
,
0x0801
,
"grant dnode limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_ACCT_LIMITED
,
0
,
0x0802
,
"grant account limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_TIMESERIES_LIMITED
,
0
,
0x0803
,
"grant timeseries limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_DB_LIMITED
,
0
,
0x0804
,
"grant db limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_USER_LIMITED
,
0
,
0x0805
,
"grant user limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_CONN_LIMITED
,
0
,
0x0806
,
"grant conn limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_STREAM_LIMITED
,
0
,
0x0807
,
"grant stream limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_SPEED_LIMITED
,
0
,
0x0808
,
"grant speed limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_STORAGE_LIMITED
,
0
,
0x0809
,
"grant storage limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_QUERYTIME_LIMITED
,
0
,
0x080A
,
"grant query time limited"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_GRANT_CPU_LIMITED
,
0
,
0x080B
,
"grant cpu limited"
)
// sync
TAOS_DEFINE_ERROR
(
TSDB_CODE_SYN_INVALID_CONFIG
,
0
,
0x0900
,
"sync invalid configuration"
)
// wal
TAOS_DEFINE_ERROR
(
TSDB_CODE_WAL_APP_ERROR
,
0
,
0x1000
,
"wal app error"
)
#ifdef TAOS_ERROR_C
};
...
...
src/kit/shell/src/shellEngine.c
浏览文件 @
3bb9451c
...
...
@@ -858,11 +858,11 @@ void shellGetGrantInfo(void *con) {
char
sql
[]
=
"show grants"
;
TAOS_RES
*
pSql
=
taos_query
(
con
,
sql
);
int
code
=
taos_errno
(
pSql
);
result
=
taos_query
(
con
,
sql
);
int
code
=
taos_errno
(
result
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
==
TSDB_CODE_OPS_NOT_SUPPORT
)
{
if
(
code
==
TSDB_CODE_
COM_
OPS_NOT_SUPPORT
)
{
fprintf
(
stdout
,
"Server is Community Edition, version is %s
\n\n
"
,
taos_get_server_info
(
con
));
}
else
{
fprintf
(
stderr
,
"Failed to check Server Edition, Reason:%d:%s
\n\n
"
,
taos_errno
(
con
),
taos_errstr
(
con
));
...
...
src/kit/shell/src/shellMain.c
浏览文件 @
3bb9451c
...
...
@@ -16,21 +16,19 @@
#include "os.h"
#include "shell.h"
#include "tsclient.h"
#include "tutil.h"
TAOS_RES
*
con
;
pthread_t
pid
;
// TODO: IMPLEMENT INTERRUPT HANDLER.
void
interruptHandler
(
int
signum
)
{
#ifdef LINUX
taos_stop_query
(
con
);
if
(
con
!=
NULL
)
{
taos_stop_query
(
result
);
if
(
result
!=
NULL
)
{
/*
* we need to free result in async model, in order to avoid free
* results while the master thread is waiting for server response.
*/
tscQueueAsyncFreeResult
(
con
);
tscQueueAsyncFreeResult
(
result
);
}
result
=
NULL
;
...
...
@@ -88,7 +86,7 @@ int main(int argc, char* argv[]) {
shellParseArgument
(
argc
,
argv
,
&
args
);
/* Initialize the shell */
con
=
shellInit
(
&
args
);
TAOS
*
con
=
shellInit
(
&
args
);
if
(
con
==
NULL
)
{
exit
(
EXIT_FAILURE
);
}
...
...
@@ -109,5 +107,4 @@ int main(int argc, char* argv[]) {
pthread_create
(
&
pid
,
NULL
,
shellLoopQuery
,
con
);
pthread_join
(
pid
,
NULL
);
}
return
0
;
}
src/mnode/src/mnodeAcct.c
浏览文件 @
3bb9451c
...
...
@@ -70,7 +70,7 @@ static int32_t mnodeActionActionEncode(SSdbOper *pOper) {
static
int32_t
mnodeAcctActionDecode
(
SSdbOper
*
pOper
)
{
SAcctObj
*
pAcct
=
(
SAcctObj
*
)
calloc
(
1
,
sizeof
(
SAcctObj
));
if
(
pAcct
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
pAcct
==
NULL
)
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
memcpy
(
pAcct
,
pOper
->
rowData
,
tsAcctUpdateSize
);
pOper
->
pObj
=
pAcct
;
...
...
src/mnode/src/mnodeBalance.c
浏览文件 @
3bb9451c
...
...
@@ -56,7 +56,7 @@ int32_t balanceAllocVnodes(SVgObj *pVgroup) {
if
(
pSelDnode
==
NULL
)
{
mError
(
"failed to alloc vnode to vgroup"
);
return
TSDB_CODE_NO_ENOUGH_DNODES
;
return
TSDB_CODE_
MND_
NO_ENOUGH_DNODES
;
}
pVgroup
->
vnodeGid
[
0
].
dnodeId
=
pSelDnode
->
dnodeId
;
...
...
src/mnode/src/mnodeDb.c
浏览文件 @
3bb9451c
...
...
@@ -71,7 +71,7 @@ static int32_t mnodeDbActionInsert(SSdbOper *pOper) {
}
else
{
mError
(
"db:%s, acct:%s info not exist in sdb"
,
pDb
->
name
,
pDb
->
acct
);
return
TSDB_CODE_INVALID_ACCT
;
return
TSDB_CODE_
MND_
INVALID_ACCT
;
}
return
TSDB_CODE_SUCCESS
;
...
...
@@ -111,7 +111,7 @@ static int32_t mnodeDbActionEncode(SSdbOper *pOper) {
static
int32_t
mnodeDbActionDecode
(
SSdbOper
*
pOper
)
{
SDbObj
*
pDb
=
(
SDbObj
*
)
calloc
(
1
,
sizeof
(
SDbObj
));
if
(
pDb
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
pDb
==
NULL
)
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
memcpy
(
pDb
,
pOper
->
rowData
,
tsDbUpdateSize
);
pOper
->
pObj
=
pDb
;
...
...
@@ -189,102 +189,102 @@ static int32_t mnodeCheckDbCfg(SDbCfg *pCfg) {
if
(
pCfg
->
cacheBlockSize
<
TSDB_MIN_CACHE_BLOCK_SIZE
||
pCfg
->
cacheBlockSize
>
TSDB_MAX_CACHE_BLOCK_SIZE
)
{
mError
(
"invalid db option cacheBlockSize:%d valid range: [%d, %d]"
,
pCfg
->
cacheBlockSize
,
TSDB_MIN_CACHE_BLOCK_SIZE
,
TSDB_MAX_CACHE_BLOCK_SIZE
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
totalBlocks
<
TSDB_MIN_TOTAL_BLOCKS
||
pCfg
->
totalBlocks
>
TSDB_MAX_TOTAL_BLOCKS
)
{
mError
(
"invalid db option totalBlocks:%d valid range: [%d, %d]"
,
pCfg
->
totalBlocks
,
TSDB_MIN_TOTAL_BLOCKS
,
TSDB_MAX_TOTAL_BLOCKS
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
maxTables
<
TSDB_MIN_TABLES
||
pCfg
->
maxTables
>
TSDB_MAX_TABLES
)
{
mError
(
"invalid db option maxTables:%d valid range: [%d, %d]"
,
pCfg
->
maxTables
,
TSDB_MIN_TABLES
,
TSDB_MAX_TABLES
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
daysPerFile
<
TSDB_MIN_DAYS_PER_FILE
||
pCfg
->
daysPerFile
>
TSDB_MAX_DAYS_PER_FILE
)
{
mError
(
"invalid db option daysPerFile:%d valid range: [%d, %d]"
,
pCfg
->
daysPerFile
,
TSDB_MIN_DAYS_PER_FILE
,
TSDB_MAX_DAYS_PER_FILE
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
daysToKeep
<
TSDB_MIN_KEEP
||
pCfg
->
daysToKeep
>
TSDB_MAX_KEEP
)
{
mError
(
"invalid db option daysToKeep:%d valid range: [%d, %d]"
,
pCfg
->
daysToKeep
,
TSDB_MIN_KEEP
,
TSDB_MAX_KEEP
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
daysToKeep
<
pCfg
->
daysPerFile
)
{
mError
(
"invalid db option daysToKeep:%d should larger than daysPerFile:%d"
,
pCfg
->
daysToKeep
,
pCfg
->
daysPerFile
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
daysToKeep2
<
TSDB_MIN_KEEP
||
pCfg
->
daysToKeep2
>
pCfg
->
daysToKeep
)
{
mError
(
"invalid db option daysToKeep2:%d valid range: [%d, %d]"
,
pCfg
->
daysToKeep
,
TSDB_MIN_KEEP
,
pCfg
->
daysToKeep
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
daysToKeep1
<
TSDB_MIN_KEEP
||
pCfg
->
daysToKeep1
>
pCfg
->
daysToKeep2
)
{
mError
(
"invalid db option daysToKeep1:%d valid range: [%d, %d]"
,
pCfg
->
daysToKeep1
,
TSDB_MIN_KEEP
,
pCfg
->
daysToKeep2
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
maxRowsPerFileBlock
<
TSDB_MIN_MAX_ROW_FBLOCK
||
pCfg
->
maxRowsPerFileBlock
>
TSDB_MAX_MAX_ROW_FBLOCK
)
{
mError
(
"invalid db option maxRowsPerFileBlock:%d valid range: [%d, %d]"
,
pCfg
->
maxRowsPerFileBlock
,
TSDB_MIN_MAX_ROW_FBLOCK
,
TSDB_MAX_MAX_ROW_FBLOCK
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
minRowsPerFileBlock
<
TSDB_MIN_MIN_ROW_FBLOCK
||
pCfg
->
minRowsPerFileBlock
>
TSDB_MAX_MIN_ROW_FBLOCK
)
{
mError
(
"invalid db option minRowsPerFileBlock:%d valid range: [%d, %d]"
,
pCfg
->
minRowsPerFileBlock
,
TSDB_MIN_MIN_ROW_FBLOCK
,
TSDB_MAX_MIN_ROW_FBLOCK
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
minRowsPerFileBlock
>
pCfg
->
maxRowsPerFileBlock
)
{
mError
(
"invalid db option minRowsPerFileBlock:%d should smaller than maxRowsPerFileBlock:%d"
,
pCfg
->
minRowsPerFileBlock
,
pCfg
->
maxRowsPerFileBlock
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
commitTime
<
TSDB_MIN_COMMIT_TIME
||
pCfg
->
commitTime
>
TSDB_MAX_COMMIT_TIME
)
{
mError
(
"invalid db option commitTime:%d valid range: [%d, %d]"
,
pCfg
->
commitTime
,
TSDB_MIN_COMMIT_TIME
,
TSDB_MAX_COMMIT_TIME
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
precision
<
TSDB_MIN_PRECISION
&&
pCfg
->
precision
>
TSDB_MAX_PRECISION
)
{
mError
(
"invalid db option timePrecision:%d valid value: [%d, %d]"
,
pCfg
->
precision
,
TSDB_MIN_PRECISION
,
TSDB_MAX_PRECISION
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
compression
<
TSDB_MIN_COMP_LEVEL
||
pCfg
->
compression
>
TSDB_MAX_COMP_LEVEL
)
{
mError
(
"invalid db option compression:%d valid range: [%d, %d]"
,
pCfg
->
compression
,
TSDB_MIN_COMP_LEVEL
,
TSDB_MAX_COMP_LEVEL
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
walLevel
<
TSDB_MIN_WAL_LEVEL
||
pCfg
->
walLevel
>
TSDB_MAX_WAL_LEVEL
)
{
mError
(
"invalid db option walLevel:%d, valid range: [%d, %d]"
,
pCfg
->
walLevel
,
TSDB_MIN_WAL_LEVEL
,
TSDB_MAX_WAL_LEVEL
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
replications
<
TSDB_MIN_REPLICA_NUM
||
pCfg
->
replications
>
TSDB_MAX_REPLICA_NUM
)
{
mError
(
"invalid db option replications:%d valid range: [%d, %d]"
,
pCfg
->
replications
,
TSDB_MIN_REPLICA_NUM
,
TSDB_MAX_REPLICA_NUM
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
pCfg
->
walLevel
<
TSDB_MIN_WAL_LEVEL
)
{
mError
(
"invalid db option walLevel:%d must be greater than 0"
,
pCfg
->
walLevel
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
#ifndef _SYNC
if
(
pCfg
->
replications
!=
1
)
{
mError
(
"invalid db option replications:%d can only be 1 in this version"
,
pCfg
->
replications
);
return
TSDB_CODE_
INVALID
_OPTION
;
return
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
#endif
...
...
@@ -320,7 +320,7 @@ static int32_t mnodeCreateDb(SAcctObj *pAcct, SCMCreateDbMsg *pCreate) {
return
TSDB_CODE_SUCCESS
;
}
else
{
mError
(
"db:%s, is already exist, ignore exist not set"
,
pCreate
->
db
);
return
TSDB_CODE_DB_ALREADY_EXIST
;
return
TSDB_CODE_
MND_
DB_ALREADY_EXIST
;
}
}
...
...
@@ -366,7 +366,7 @@ static int32_t mnodeCreateDb(SAcctObj *pAcct, SCMCreateDbMsg *pCreate) {
code
=
sdbInsertRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
tfree
(
pDb
);
code
=
TSDB_CODE_SDB_ERROR
;
code
=
TSDB_CODE_
MND_
SDB_ERROR
;
}
return
code
;
...
...
@@ -743,7 +743,7 @@ static int32_t mnodeSetDbDropping(SDbObj *pDb) {
int32_t
code
=
sdbUpdateRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
return
code
;
...
...
@@ -766,7 +766,7 @@ static int32_t mnodeProcessCreateDbMsg(SMnodeMsg *pMsg) {
if
(
grantCheck
(
TSDB_GRANT_TIME
)
!=
TSDB_CODE_SUCCESS
)
{
code
=
TSDB_CODE_GRANT_EXPIRED
;
}
else
if
(
!
pMsg
->
pUser
->
writeAuth
)
{
code
=
TSDB_CODE_NO_RIGHTS
;
code
=
TSDB_CODE_
MND_
NO_RIGHTS
;
}
else
{
code
=
mnodeCreateDb
(
pMsg
->
pUser
->
pAcct
,
pCreate
);
if
(
code
==
TSDB_CODE_SUCCESS
)
{
...
...
@@ -800,7 +800,7 @@ static SDbCfg mnodeGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) {
if
(
cacheBlockSize
>
0
&&
cacheBlockSize
!=
pDb
->
cfg
.
cacheBlockSize
)
{
mError
(
"db:%s, can't alter cache option"
,
pDb
->
name
);
terrno
=
TSDB_CODE_
INVALID
_OPTION
;
terrno
=
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
totalBlocks
>
0
&&
totalBlocks
!=
pDb
->
cfg
.
totalBlocks
)
{
...
...
@@ -813,13 +813,13 @@ static SDbCfg mnodeGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) {
newCfg
.
maxTables
=
maxTables
;
if
(
newCfg
.
maxTables
<
pDb
->
cfg
.
maxTables
)
{
mError
(
"db:%s, tables:%d should larger than origin:%d"
,
pDb
->
name
,
newCfg
.
maxTables
,
pDb
->
cfg
.
maxTables
);
terrno
=
TSDB_CODE_
INVALID
_OPTION
;
terrno
=
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
}
if
(
daysPerFile
>
0
&&
daysPerFile
!=
pDb
->
cfg
.
daysPerFile
)
{
mError
(
"db:%s, can't alter days option"
,
pDb
->
name
);
terrno
=
TSDB_CODE_
INVALID
_OPTION
;
terrno
=
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
daysToKeep
>
0
&&
daysToKeep
!=
pDb
->
cfg
.
daysToKeep
)
{
...
...
@@ -839,22 +839,22 @@ static SDbCfg mnodeGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) {
if
(
minRows
>
0
&&
minRows
!=
pDb
->
cfg
.
minRowsPerFileBlock
)
{
mError
(
"db:%s, can't alter minRows option"
,
pDb
->
name
);
terrno
=
TSDB_CODE_
INVALID
_OPTION
;
terrno
=
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
maxRows
>
0
&&
maxRows
!=
pDb
->
cfg
.
maxRowsPerFileBlock
)
{
mError
(
"db:%s, can't alter maxRows option"
,
pDb
->
name
);
terrno
=
TSDB_CODE_
INVALID
_OPTION
;
terrno
=
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
commitTime
>
0
&&
commitTime
!=
pDb
->
cfg
.
commitTime
)
{
mError
(
"db:%s, can't alter commitTime option"
,
pDb
->
name
);
terrno
=
TSDB_CODE_
INVALID
_OPTION
;
terrno
=
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
precision
>
0
&&
precision
!=
pDb
->
cfg
.
precision
)
{
mError
(
"db:%s, can't alter precision option"
,
pDb
->
name
);
terrno
=
TSDB_CODE_
INVALID
_OPTION
;
terrno
=
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
compression
>=
0
&&
compression
!=
pDb
->
cfg
.
compression
)
{
...
...
@@ -864,7 +864,7 @@ static SDbCfg mnodeGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) {
if
(
walLevel
>
0
&&
walLevel
!=
pDb
->
cfg
.
walLevel
)
{
mError
(
"db:%s, can't alter walLevel option"
,
pDb
->
name
);
terrno
=
TSDB_CODE_
INVALID
_OPTION
;
terrno
=
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
replications
>
0
&&
replications
!=
pDb
->
cfg
.
replications
)
{
...
...
@@ -873,17 +873,17 @@ static SDbCfg mnodeGetAlterDbOption(SDbObj *pDb, SCMAlterDbMsg *pAlter) {
if
(
pDb
->
cfg
.
walLevel
<
TSDB_MIN_WAL_LEVEL
)
{
mError
(
"db:%s, walLevel:%d must be greater than 0"
,
pDb
->
name
,
pDb
->
cfg
.
walLevel
);
terrno
=
TSDB_CODE_
INVALID
_OPTION
;
terrno
=
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
if
(
replications
>
mnodeGetDnodesNum
())
{
mError
(
"db:%s, no enough dnode to change replica:%d"
,
pDb
->
name
,
replications
);
terrno
=
TSDB_CODE_NO_ENOUGH_DNODES
;
terrno
=
TSDB_CODE_
MND_
NO_ENOUGH_DNODES
;
}
if
(
pDb
->
cfg
.
replications
-
replications
>=
2
)
{
mError
(
"db:%s, replica number can't change from 3 to 1"
,
pDb
->
name
,
replications
);
terrno
=
TSDB_CODE_
INVALID
_OPTION
;
terrno
=
TSDB_CODE_
MND_INVALID_DB
_OPTION
;
}
}
...
...
@@ -914,7 +914,7 @@ static int32_t mnodeAlterDb(SDbObj *pDb, SCMAlterDbMsg *pAlter) {
int32_t
code
=
sdbUpdateRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
}
...
...
@@ -942,7 +942,7 @@ static int32_t mnodeProcessAlterDbMsg(SMnodeMsg *pMsg) {
if
(
pMsg
->
pDb
==
NULL
)
pMsg
->
pDb
=
mnodeGetDb
(
pAlter
->
db
);
if
(
pMsg
->
pDb
==
NULL
)
{
mError
(
"db:%s, failed to alter, invalid db"
,
pAlter
->
db
);
return
TSDB_CODE_INVALID_DB
;
return
TSDB_CODE_
MND_
INVALID_DB
;
}
int32_t
code
=
mnodeAlterDb
(
pMsg
->
pDb
,
pAlter
);
...
...
@@ -966,7 +966,7 @@ static int32_t mnodeDropDb(SMnodeMsg *pMsg) {
};
int32_t
code
=
sdbDeleteRow
(
&
oper
);
if
(
code
!=
0
)
{
code
=
TSDB_CODE_SDB_ERROR
;
code
=
TSDB_CODE_
MND_
SDB_ERROR
;
}
return
code
;
...
...
@@ -983,13 +983,13 @@ static int32_t mnodeProcessDropDbMsg(SMnodeMsg *pMsg) {
return
TSDB_CODE_SUCCESS
;
}
else
{
mError
(
"db:%s, failed to drop, invalid db"
,
pDrop
->
db
);
return
TSDB_CODE_INVALID_DB
;
return
TSDB_CODE_
MND_
INVALID_DB
;
}
}
if
(
mnodeCheckIsMonitorDB
(
pMsg
->
pDb
->
name
,
tsMonitorDbName
))
{
mError
(
"db:%s, can't drop monitor database"
,
pDrop
->
db
);
return
TSDB_CODE_MONITOR_DB_FORBIDDEN
;
return
TSDB_CODE_M
ND_M
ONITOR_DB_FORBIDDEN
;
}
int32_t
code
=
mnodeSetDbDropping
(
pMsg
->
pDb
);
...
...
src/mnode/src/mnodeDnode.c
浏览文件 @
3bb9451c
...
...
@@ -107,7 +107,7 @@ static int32_t mnodeDnodeActionEncode(SSdbOper *pOper) {
static
int32_t
mnodeDnodeActionDecode
(
SSdbOper
*
pOper
)
{
SDnodeObj
*
pDnode
=
(
SDnodeObj
*
)
calloc
(
1
,
sizeof
(
SDnodeObj
));
if
(
pDnode
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
pDnode
==
NULL
)
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
memcpy
(
pDnode
,
pOper
->
rowData
,
tsDnodeUpdateSize
);
pOper
->
pObj
=
pDnode
;
...
...
@@ -249,7 +249,7 @@ static int32_t mnodeProcessCfgDnodeMsg(SMnodeMsg *pMsg) {
}
if
(
strcmp
(
pMsg
->
pUser
->
user
,
"root"
)
!=
0
)
{
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
SRpcIpSet
ipSet
=
mnodeGetIpSetFromIp
(
pCmCfgDnode
->
ep
);
...
...
@@ -286,7 +286,7 @@ static int32_t mnodeProcessDnodeStatusMsg(SMnodeMsg *pMsg) {
uint32_t
version
=
htonl
(
pStatus
->
version
);
if
(
version
!=
tsVersion
)
{
mError
(
"status msg version:%d not equal with mnode:%d"
,
version
,
tsVersion
);
return
TSDB_CODE_INVALID_MSG_VERSION
;
return
TSDB_CODE_
MND_
INVALID_MSG_VERSION
;
}
SDnodeObj
*
pDnode
=
NULL
;
...
...
@@ -294,13 +294,13 @@ static int32_t mnodeProcessDnodeStatusMsg(SMnodeMsg *pMsg) {
pDnode
=
mnodeGetDnodeByEp
(
pStatus
->
dnodeEp
);
if
(
pDnode
==
NULL
)
{
mTrace
(
"dnode %s not created"
,
pStatus
->
dnodeEp
);
return
TSDB_CODE_DNODE_NOT_EXIST
;
return
TSDB_CODE_
MND_
DNODE_NOT_EXIST
;
}
}
else
{
pDnode
=
mnodeGetDnode
(
pStatus
->
dnodeId
);
if
(
pDnode
==
NULL
)
{
mError
(
"dnode id:%d, %s not exist"
,
pStatus
->
dnodeId
,
pStatus
->
dnodeEp
);
return
TSDB_CODE_DNODE_NOT_EXIST
;
return
TSDB_CODE_
MND_
DNODE_NOT_EXIST
;
}
}
...
...
@@ -347,7 +347,7 @@ static int32_t mnodeProcessDnodeStatusMsg(SMnodeMsg *pMsg) {
int32_t
contLen
=
sizeof
(
SDMStatusRsp
)
+
TSDB_MAX_VNODES
*
sizeof
(
SDMVgroupAccess
);
SDMStatusRsp
*
pRsp
=
rpcMallocCont
(
contLen
);
if
(
pRsp
==
NULL
)
{
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
mnodeGetMnodeInfos
(
&
pRsp
->
mnodes
);
...
...
@@ -376,7 +376,7 @@ static int32_t mnodeCreateDnode(char *ep) {
if
(
pDnode
!=
NULL
)
{
mnodeDecDnodeRef
(
pDnode
);
mError
(
"dnode:%d is alredy exist, %s:%d"
,
pDnode
->
dnodeId
,
pDnode
->
dnodeFqdn
,
pDnode
->
dnodePort
);
return
TSDB_CODE_DNODE_ALREADY_EXIST
;
return
TSDB_CODE_
MND_
DNODE_ALREADY_EXIST
;
}
pDnode
=
(
SDnodeObj
*
)
calloc
(
1
,
sizeof
(
SDnodeObj
));
...
...
@@ -398,7 +398,7 @@ static int32_t mnodeCreateDnode(char *ep) {
int
dnodeId
=
pDnode
->
dnodeId
;
tfree
(
pDnode
);
mError
(
"failed to create dnode:%d, result:%s"
,
dnodeId
,
tstrerror
(
code
));
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
mPrint
(
"dnode:%d is created, result:%s"
,
pDnode
->
dnodeId
,
tstrerror
(
code
));
...
...
@@ -414,7 +414,7 @@ int32_t mnodeDropDnode(SDnodeObj *pDnode) {
int32_t
code
=
sdbDeleteRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
code
=
TSDB_CODE_SDB_ERROR
;
code
=
TSDB_CODE_
MND_
SDB_ERROR
;
}
mLPrint
(
"dnode:%d, is dropped from cluster, result:%s"
,
pDnode
->
dnodeId
,
tstrerror
(
code
));
...
...
@@ -425,13 +425,13 @@ static int32_t mnodeDropDnodeByEp(char *ep) {
SDnodeObj
*
pDnode
=
mnodeGetDnodeByEp
(
ep
);
if
(
pDnode
==
NULL
)
{
mError
(
"dnode:%s, is not exist"
,
ep
);
return
TSDB_CODE_DNODE_NOT_EXIST
;
return
TSDB_CODE_
MND_
DNODE_NOT_EXIST
;
}
mnodeDecDnodeRef
(
pDnode
);
if
(
strcmp
(
pDnode
->
dnodeEp
,
dnodeGetMnodeMasterEp
())
==
0
)
{
mError
(
"dnode:%d, can't drop dnode:%s which is master"
,
pDnode
->
dnodeId
,
ep
);
return
TSDB_CODE_NO_REMOVE_MASTER
;
return
TSDB_CODE_
MND_
NO_REMOVE_MASTER
;
}
mPrint
(
"dnode:%d, start to drop it"
,
pDnode
->
dnodeId
);
...
...
@@ -446,7 +446,7 @@ static int32_t mnodeProcessCreateDnodeMsg(SMnodeMsg *pMsg) {
SCMCreateDnodeMsg
*
pCreate
=
pMsg
->
rpcMsg
.
pCont
;
if
(
strcmp
(
pMsg
->
pUser
->
user
,
"root"
)
!=
0
)
{
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
else
{
int32_t
code
=
mnodeCreateDnode
(
pCreate
->
ep
);
...
...
@@ -466,7 +466,7 @@ static int32_t mnodeProcessDropDnodeMsg(SMnodeMsg *pMsg) {
SCMDropDnodeMsg
*
pDrop
=
pMsg
->
rpcMsg
.
pCont
;
if
(
strcmp
(
pMsg
->
pUser
->
user
,
"root"
)
!=
0
)
{
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
else
{
int32_t
code
=
mnodeDropDnodeByEp
(
pDrop
->
ep
);
...
...
@@ -486,7 +486,7 @@ static int32_t mnodeGetDnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
if
(
strcmp
(
pUser
->
pAcct
->
user
,
"root"
)
!=
0
)
{
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
int32_t
cols
=
0
;
...
...
@@ -615,7 +615,7 @@ static int32_t mnodeGetModuleMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *p
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
{
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
SSchema
*
pSchema
=
pMeta
->
schema
;
...
...
@@ -725,7 +725,7 @@ static int32_t mnodeGetConfigMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *p
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
{
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
SSchema
*
pSchema
=
pMeta
->
schema
;
...
...
@@ -812,7 +812,7 @@ static int32_t mnodeGetVnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
{
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
SSchema
*
pSchema
=
pMeta
->
schema
;
...
...
src/mnode/src/mnodeInt.c
浏览文件 @
3bb9451c
...
...
@@ -41,7 +41,7 @@ void mnodeCreateMsg(SMnodeMsg *pMsg, SRpcMsg *rpcMsg) {
int32_t
mnodeInitMsg
(
SMnodeMsg
*
pMsg
)
{
pMsg
->
pUser
=
mnodeGetUserFromConn
(
pMsg
->
rpcMsg
.
handle
);
if
(
pMsg
->
pUser
==
NULL
)
{
return
TSDB_CODE_INVALID_USER
;
return
TSDB_CODE_
MND_
INVALID_USER
;
}
return
TSDB_CODE_SUCCESS
;
...
...
src/mnode/src/mnodeMnode.c
浏览文件 @
3bb9451c
...
...
@@ -63,7 +63,7 @@ static int32_t mnodeMnodeActionDestroy(SSdbOper *pOper) {
static
int32_t
mnodeMnodeActionInsert
(
SSdbOper
*
pOper
)
{
SMnodeObj
*
pMnode
=
pOper
->
pObj
;
SDnodeObj
*
pDnode
=
mnodeGetDnode
(
pMnode
->
mnodeId
);
if
(
pDnode
==
NULL
)
return
TSDB_CODE_DNODE_NOT_EXIST
;
if
(
pDnode
==
NULL
)
return
TSDB_CODE_
MND_
DNODE_NOT_EXIST
;
pDnode
->
isMgmt
=
true
;
mnodeDecDnodeRef
(
pDnode
);
...
...
@@ -75,7 +75,7 @@ static int32_t mnodeMnodeActionDelete(SSdbOper *pOper) {
SMnodeObj
*
pMnode
=
pOper
->
pObj
;
SDnodeObj
*
pDnode
=
mnodeGetDnode
(
pMnode
->
mnodeId
);
if
(
pDnode
==
NULL
)
return
TSDB_CODE_DNODE_NOT_EXIST
;
if
(
pDnode
==
NULL
)
return
TSDB_CODE_
MND_
DNODE_NOT_EXIST
;
pDnode
->
isMgmt
=
false
;
mnodeDecDnodeRef
(
pDnode
);
...
...
@@ -103,7 +103,7 @@ static int32_t mnodeMnodeActionEncode(SSdbOper *pOper) {
static
int32_t
mnodeMnodeActionDecode
(
SSdbOper
*
pOper
)
{
SMnodeObj
*
pMnode
=
calloc
(
1
,
sizeof
(
SMnodeObj
));
if
(
pMnode
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
pMnode
==
NULL
)
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
memcpy
(
pMnode
,
pOper
->
rowData
,
tsMnodeUpdateSize
);
pOper
->
pObj
=
pMnode
;
...
...
@@ -285,7 +285,7 @@ int32_t mnodeAddMnode(int32_t dnodeId) {
int32_t
code
=
sdbInsertRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
tfree
(
pMnode
);
code
=
TSDB_CODE_SDB_ERROR
;
code
=
TSDB_CODE_
MND_
SDB_ERROR
;
}
mnodeUpdateMnodeIpSet
();
...
...
@@ -307,7 +307,7 @@ void mnodeDropMnodeLocal(int32_t dnodeId) {
int32_t
mnodeDropMnode
(
int32_t
dnodeId
)
{
SMnodeObj
*
pMnode
=
mnodeGetMnode
(
dnodeId
);
if
(
pMnode
==
NULL
)
{
return
TSDB_CODE_DNODE_NOT_EXIST
;
return
TSDB_CODE_
MND_
DNODE_NOT_EXIST
;
}
SSdbOper
oper
=
{
...
...
@@ -318,7 +318,7 @@ int32_t mnodeDropMnode(int32_t dnodeId) {
int32_t
code
=
sdbDeleteRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
code
=
TSDB_CODE_SDB_ERROR
;
code
=
TSDB_CODE_
MND_
SDB_ERROR
;
}
sdbDecRef
(
tsMnodeSdb
,
pMnode
);
...
...
@@ -335,7 +335,7 @@ static int32_t mnodeGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
if
(
strcmp
(
pUser
->
pAcct
->
user
,
"root"
)
!=
0
)
{
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
int32_t
cols
=
0
;
...
...
src/mnode/src/mnodePeer.c
浏览文件 @
3bb9451c
...
...
@@ -48,7 +48,7 @@ void mnodeAddPeerRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)) {
int32_t
mnodeProcessPeerReq
(
SMnodeMsg
*
pMsg
)
{
if
(
pMsg
->
rpcMsg
.
pCont
==
NULL
)
{
mError
(
"%p, msg:%s in mpeer queue, content is null"
,
pMsg
->
rpcMsg
.
ahandle
,
taosMsg
[
pMsg
->
rpcMsg
.
msgType
]);
return
TSDB_CODE_INVALID_MSG_LEN
;
return
TSDB_CODE_
MND_
INVALID_MSG_LEN
;
}
if
(
!
sdbIsMaster
())
{
...
...
@@ -63,12 +63,12 @@ int32_t mnodeProcessPeerReq(SMnodeMsg *pMsg) {
mTrace
(
"mnode index:%d ip:%s:%d"
,
i
,
ipSet
->
fqdn
[
i
],
htons
(
ipSet
->
port
[
i
]));
}
return
TSDB_CODE_REDIRECT
;
return
TSDB_CODE_R
PC_R
EDIRECT
;
}
if
(
tsMnodeProcessPeerMsgFp
[
pMsg
->
rpcMsg
.
msgType
]
==
NULL
)
{
mError
(
"%p, msg:%s in mpeer queue, not processed"
,
pMsg
->
rpcMsg
.
ahandle
,
taosMsg
[
pMsg
->
rpcMsg
.
msgType
]);
return
TSDB_CODE_MSG_NOT_PROCESSED
;
return
TSDB_CODE_M
ND_M
SG_NOT_PROCESSED
;
}
return
(
*
tsMnodeProcessPeerMsgFp
[
pMsg
->
rpcMsg
.
msgType
])(
pMsg
);
...
...
src/mnode/src/mnodeProfile.c
浏览文件 @
3bb9451c
...
...
@@ -84,7 +84,7 @@ SConnObj *mnodeCreateConn(char *user, uint32_t ip, uint16_t port) {
if
(
connSize
>
tsMaxShellConns
)
{
mError
(
"failed to create conn for user:%s ip:%s:%u, conns:%d larger than maxShellConns:%d, "
,
user
,
taosIpStr
(
ip
),
port
,
connSize
,
tsMaxShellConns
);
terrno
=
TSDB_CODE_TOO_MANY_SHELL_CONNS
;
terrno
=
TSDB_CODE_
MND_
TOO_MANY_SHELL_CONNS
;
return
NULL
;
}
...
...
@@ -168,7 +168,7 @@ static void *mnodeGetNextConn(SHashMutableIterator *pIter, SConnObj **pConn) {
static
int32_t
mnodeGetConnsMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_
MND_
NO_RIGHTS
;
int32_t
cols
=
0
;
SSchema
*
pSchema
=
pMeta
->
schema
;
...
...
@@ -282,7 +282,7 @@ int32_t mnodeSaveQueryStreamList(SConnObj *pConn, SCMHeartBeatMsg *pHBMsg) {
static
int32_t
mnodeGetQueryMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_
MND_
NO_RIGHTS
;
int32_t
cols
=
0
;
SSchema
*
pSchema
=
pMeta
->
schema
;
...
...
@@ -391,7 +391,7 @@ static int32_t mnodeRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, v
static
int32_t
mnodeGetStreamMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
return
0
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_
MND_
NO_RIGHTS
;
int32_t
cols
=
0
;
SSchema
*
pSchema
=
pMeta
->
schema
;
...
...
@@ -519,7 +519,7 @@ static int32_t mnodeRetrieveStreams(SShowObj *pShow, char *data, int32_t rows, v
static
int32_t
mnodeProcessKillQueryMsg
(
SMnodeMsg
*
pMsg
)
{
SUserObj
*
pUser
=
pMsg
->
pUser
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_
MND_
NO_RIGHTS
;
SCMKillQueryMsg
*
pKill
=
pMsg
->
rpcMsg
.
pCont
;
mPrint
(
"kill query msg is received, queryId:%s"
,
pKill
->
queryId
);
...
...
@@ -530,7 +530,7 @@ static int32_t mnodeProcessKillQueryMsg(SMnodeMsg *pMsg) {
if
(
queryIdStr
==
NULL
||
connIdStr
==
NULL
)
{
mPrint
(
"failed to kill query, queryId:%s"
,
pKill
->
queryId
);
return
TSDB_CODE_INVALID_QUERY_ID
;
return
TSDB_CODE_
MND_
INVALID_QUERY_ID
;
}
int32_t
queryId
=
(
int32_t
)
strtol
(
queryIdStr
,
NULL
,
10
);
...
...
@@ -538,7 +538,7 @@ static int32_t mnodeProcessKillQueryMsg(SMnodeMsg *pMsg) {
SConnObj
*
pConn
=
taosCacheAcquireByName
(
tsMnodeConnCache
,
connIdStr
);
if
(
pConn
==
NULL
)
{
mError
(
"connId:%s, failed to kill queryId:%d, conn not exist"
,
connIdStr
,
queryId
);
return
TSDB_CODE_
INVALID_CONNECTION
;
return
TSDB_CODE_
MND_INVALID_CONN_ID
;
}
else
{
mPrint
(
"connId:%s, queryId:%d is killed by user:%s"
,
connIdStr
,
queryId
,
pUser
->
user
);
pConn
->
queryId
=
queryId
;
...
...
@@ -549,7 +549,7 @@ static int32_t mnodeProcessKillQueryMsg(SMnodeMsg *pMsg) {
static
int32_t
mnodeProcessKillStreamMsg
(
SMnodeMsg
*
pMsg
)
{
SUserObj
*
pUser
=
pMsg
->
pUser
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_
MND_
NO_RIGHTS
;
SCMKillQueryMsg
*
pKill
=
pMsg
->
rpcMsg
.
pCont
;
mPrint
(
"kill stream msg is received, streamId:%s"
,
pKill
->
queryId
);
...
...
@@ -560,7 +560,7 @@ static int32_t mnodeProcessKillStreamMsg(SMnodeMsg *pMsg) {
if
(
streamIdStr
==
NULL
||
connIdStr
==
NULL
)
{
mPrint
(
"failed to kill stream, streamId:%s"
,
pKill
->
queryId
);
return
TSDB_CODE_INVALID_STREAM_ID
;
return
TSDB_CODE_
MND_
INVALID_STREAM_ID
;
}
int32_t
streamId
=
(
int32_t
)
strtol
(
streamIdStr
,
NULL
,
10
);
...
...
@@ -568,7 +568,7 @@ static int32_t mnodeProcessKillStreamMsg(SMnodeMsg *pMsg) {
SConnObj
*
pConn
=
taosCacheAcquireByName
(
tsMnodeConnCache
,
connIdStr
);
if
(
pConn
==
NULL
)
{
mError
(
"connId:%s, failed to kill streamId:%d, conn not exist"
,
connIdStr
,
streamId
);
return
TSDB_CODE_
INVALID_CONNECTION
;
return
TSDB_CODE_
MND_INVALID_CONN_ID
;
}
else
{
mPrint
(
"connId:%s, streamId:%d is killed by user:%s"
,
connIdStr
,
streamId
,
pUser
->
user
);
pConn
->
streamId
=
streamId
;
...
...
@@ -579,13 +579,13 @@ static int32_t mnodeProcessKillStreamMsg(SMnodeMsg *pMsg) {
static
int32_t
mnodeProcessKillConnectionMsg
(
SMnodeMsg
*
pMsg
)
{
SUserObj
*
pUser
=
pMsg
->
pUser
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_NO_RIGHTS
;
if
(
strcmp
(
pUser
->
user
,
"root"
)
!=
0
)
return
TSDB_CODE_
MND_
NO_RIGHTS
;
SCMKillConnMsg
*
pKill
=
pMsg
->
rpcMsg
.
pCont
;
SConnObj
*
pConn
=
taosCacheAcquireByName
(
tsMnodeConnCache
,
pKill
->
queryId
);
if
(
pConn
==
NULL
)
{
mError
(
"connId:%s, failed to kill, conn not exist"
,
pKill
->
queryId
);
return
TSDB_CODE_
INVALID_CONNECTION
;
return
TSDB_CODE_
MND_INVALID_CONN_ID
;
}
else
{
mPrint
(
"connId:%s, is killed by user:%s"
,
pKill
->
queryId
,
pUser
->
user
);
pConn
->
killed
=
1
;
...
...
src/mnode/src/mnodeRead.c
浏览文件 @
3bb9451c
...
...
@@ -44,7 +44,7 @@ void mnodeAddReadMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *pMsg)) {
int32_t
mnodeProcessRead
(
SMnodeMsg
*
pMsg
)
{
if
(
pMsg
->
rpcMsg
.
pCont
==
NULL
)
{
mError
(
"%p, msg:%s in mread queue, content is null"
,
pMsg
->
rpcMsg
.
ahandle
,
taosMsg
[
pMsg
->
rpcMsg
.
msgType
]);
return
TSDB_CODE_INVALID_MSG_LEN
;
return
TSDB_CODE_
MND_
INVALID_MSG_LEN
;
}
if
(
!
sdbIsMaster
())
{
...
...
@@ -59,12 +59,12 @@ int32_t mnodeProcessRead(SMnodeMsg *pMsg) {
mTrace
(
"mnode index:%d ip:%s:%d"
,
i
,
ipSet
->
fqdn
[
i
],
htons
(
ipSet
->
port
[
i
]));
}
return
TSDB_CODE_REDIRECT
;
return
TSDB_CODE_R
PC_R
EDIRECT
;
}
if
(
tsMnodeProcessReadMsgFp
[
pMsg
->
rpcMsg
.
msgType
]
==
NULL
)
{
mError
(
"%p, msg:%s in mread queue, not processed"
,
pMsg
->
rpcMsg
.
ahandle
,
taosMsg
[
pMsg
->
rpcMsg
.
msgType
]);
return
TSDB_CODE_MSG_NOT_PROCESSED
;
return
TSDB_CODE_M
ND_M
SG_NOT_PROCESSED
;
}
int32_t
code
=
mnodeInitMsg
(
pMsg
);
...
...
src/mnode/src/mnodeSdb.c
浏览文件 @
3bb9451c
...
...
@@ -518,7 +518,7 @@ static int sdbWrite(void *param, void *data, int type) {
sdbError
(
"table:%s, failed to restore %s record:%s from wal, version:%"
PRId64
" too large, sdb version:%"
PRId64
,
pTable
->
tableName
,
sdbGetActionStr
(
action
),
sdbGetKeyStr
(
pTable
,
pHead
->
cont
),
pHead
->
version
,
tsSdbObj
.
version
);
return
TSDB_CODE_
OTHERS
;
return
TSDB_CODE_
MND_APP_ERROR
;
}
else
{
tsSdbObj
.
version
=
pHead
->
version
;
}
...
...
@@ -561,7 +561,7 @@ static int sdbWrite(void *param, void *data, int type) {
SSdbOper
oper
=
{.
rowSize
=
pHead
->
len
,
.
rowData
=
pHead
->
cont
,
.
table
=
pTable
};
code
=
(
*
pTable
->
decodeFp
)(
&
oper
);
return
sdbUpdateHash
(
pTable
,
&
oper
);
}
else
{
return
TSDB_CODE_INVALID_MSG_TYPE
;
}
}
else
{
return
TSDB_CODE_
MND_
INVALID_MSG_TYPE
;
}
}
int32_t
sdbInsertRow
(
SSdbOper
*
pOper
)
{
...
...
@@ -571,7 +571,7 @@ int32_t sdbInsertRow(SSdbOper *pOper) {
if
(
sdbGetRowFromObj
(
pTable
,
pOper
->
pObj
))
{
sdbError
(
"table:%s, failed to insert record:%s, already exist"
,
pTable
->
tableName
,
sdbGetKeyStrFromObj
(
pTable
,
pOper
->
pObj
));
sdbDecRef
(
pTable
,
pOper
->
pObj
);
return
TSDB_CODE_ALREADY_THERE
;
return
TSDB_CODE_
MND_SDB_OBJ_
ALREADY_THERE
;
}
if
(
pTable
->
keyType
==
SDB_KEY_AUTO
)
{
...
...
src/mnode/src/mnodeShow.c
浏览文件 @
3bb9451c
...
...
@@ -110,12 +110,12 @@ static char *mnodeGetShowType(int32_t showType) {
static
int32_t
mnodeProcessShowMsg
(
SMnodeMsg
*
pMsg
)
{
SCMShowMsg
*
pShowMsg
=
pMsg
->
rpcMsg
.
pCont
;
if
(
pShowMsg
->
type
>=
TSDB_MGMT_TABLE_MAX
)
{
return
TSDB_CODE_INVALID_MSG_TYPE
;
return
TSDB_CODE_
MND_
INVALID_MSG_TYPE
;
}
if
(
!
tsMnodeShowMetaFp
[
pShowMsg
->
type
]
||
!
tsMnodeShowRetrieveFp
[
pShowMsg
->
type
])
{
mError
(
"show type:%s is not support"
,
mnodeGetShowType
(
pShowMsg
->
type
));
return
TSDB_CODE_OPS_NOT_SUPPORT
;
return
TSDB_CODE_
COM_
OPS_NOT_SUPPORT
;
}
int32_t
showObjSize
=
sizeof
(
SShowObj
)
+
htons
(
pShowMsg
->
payloadLen
);
...
...
@@ -127,14 +127,14 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) {
pShow
=
mnodePutShowObj
(
pShow
,
showObjSize
);
if
(
pShow
==
NULL
)
{
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
int32_t
size
=
sizeof
(
SCMShowRsp
)
+
sizeof
(
SSchema
)
*
TSDB_MAX_COLUMNS
+
TSDB_EXTRA_PAYLOAD_SIZE
;
SCMShowRsp
*
pShowRsp
=
rpcMallocCont
(
size
);
if
(
pShowRsp
==
NULL
)
{
mnodeReleaseShowObj
(
pShow
,
true
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
pShowRsp
->
qhandle
=
htobe64
((
uint64_t
)
pShow
);
...
...
@@ -169,7 +169,7 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) {
*/
if
(
!
mnodeAccquireShowObj
(
pShow
))
{
mError
(
"%p, show is invalid"
,
pShow
);
return
TSDB_CODE_
INVALID_QHANDLE
;
return
TSDB_CODE_
MND_INVALID_SHOWOBJ
;
}
if
(
mnodeCheckShowFinished
(
pShow
))
{
...
...
@@ -202,7 +202,7 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) {
rpcFreeCont
(
pRsp
);
mnodeReleaseShowObj
(
pShow
,
false
);
assert
(
false
);
return
TSDB_CODE_ACTION_IN_PROGRESS
;
return
TSDB_CODE_
MND_
ACTION_IN_PROGRESS
;
}
pRsp
->
numOfRows
=
htonl
(
rowsRead
);
...
...
@@ -224,7 +224,7 @@ static int32_t mnodeProcessRetrieveMsg(SMnodeMsg *pMsg) {
static
int32_t
mnodeProcessHeartBeatMsg
(
SMnodeMsg
*
pMsg
)
{
SCMHeartBeatRsp
*
pHBRsp
=
(
SCMHeartBeatRsp
*
)
rpcMallocCont
(
sizeof
(
SCMHeartBeatRsp
));
if
(
pHBRsp
==
NULL
)
{
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
SCMHeartBeatMsg
*
pHBMsg
=
pMsg
->
rpcMsg
.
pCont
;
...
...
@@ -278,7 +278,7 @@ static int32_t mnodeProcessConnectMsg(SMnodeMsg *pMsg) {
SRpcConnInfo
connInfo
;
if
(
rpcGetConnInfo
(
pMsg
->
rpcMsg
.
handle
,
&
connInfo
)
!=
0
)
{
mError
(
"thandle:%p is already released while process connect msg"
,
pMsg
->
rpcMsg
.
handle
);
code
=
TSDB_CODE_
INVALID_MSG_CONTENT
;
code
=
TSDB_CODE_
MND_INVALID_CONNECTION
;
goto
connect_over
;
}
...
...
@@ -295,7 +295,7 @@ static int32_t mnodeProcessConnectMsg(SMnodeMsg *pMsg) {
sprintf
(
dbName
,
"%x%s%s"
,
pAcct
->
acctId
,
TS_PATH_DELIMITER
,
pConnectMsg
->
db
);
SDbObj
*
pDb
=
mnodeGetDb
(
dbName
);
if
(
pDb
==
NULL
)
{
code
=
TSDB_CODE_INVALID_DB
;
code
=
TSDB_CODE_
MND_
INVALID_DB
;
goto
connect_over
;
}
mnodeDecDbRef
(
pDb
);
...
...
@@ -303,7 +303,7 @@ static int32_t mnodeProcessConnectMsg(SMnodeMsg *pMsg) {
SCMConnectRsp
*
pConnectRsp
=
rpcMallocCont
(
sizeof
(
SCMConnectRsp
));
if
(
pConnectRsp
==
NULL
)
{
code
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
code
=
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
goto
connect_over
;
}
...
...
@@ -340,7 +340,7 @@ static int32_t mnodeProcessUseMsg(SMnodeMsg *pMsg) {
int32_t
code
=
TSDB_CODE_SUCCESS
;
if
(
pMsg
->
pDb
==
NULL
)
pMsg
->
pDb
=
mnodeGetDb
(
pUseDbMsg
->
db
);
if
(
pMsg
->
pDb
==
NULL
)
{
code
=
TSDB_CODE_INVALID_DB
;
code
=
TSDB_CODE_
MND_
INVALID_DB
;
}
return
code
;
...
...
src/mnode/src/mnodeTable.c
浏览文件 @
3bb9451c
...
...
@@ -107,21 +107,21 @@ static int32_t mnodeChildTableActionInsert(SSdbOper *pOper) {
SVgObj
*
pVgroup
=
mnodeGetVgroup
(
pTable
->
vgId
);
if
(
pVgroup
==
NULL
)
{
mError
(
"ctable:%s, not in vgId:%d"
,
pTable
->
info
.
tableId
,
pTable
->
vgId
);
return
TSDB_CODE_
INVALID_VGROUP_ID
;
return
TSDB_CODE_
MND_VGROUP_NOT_EXIST
;
}
mnodeDecVgroupRef
(
pVgroup
);
SDbObj
*
pDb
=
mnodeGetDb
(
pVgroup
->
dbName
);
if
(
pDb
==
NULL
)
{
mError
(
"ctable:%s, vgId:%d not in db:%s"
,
pTable
->
info
.
tableId
,
pVgroup
->
vgId
,
pVgroup
->
dbName
);
return
TSDB_CODE_INVALID_DB
;
return
TSDB_CODE_
MND_
INVALID_DB
;
}
mnodeDecDbRef
(
pDb
);
SAcctObj
*
pAcct
=
mnodeGetAcct
(
pDb
->
acct
);
if
(
pAcct
==
NULL
)
{
mError
(
"ctable:%s, acct:%s not exists"
,
pTable
->
info
.
tableId
,
pDb
->
acct
);
return
TSDB_CODE_INVALID_ACCT
;
return
TSDB_CODE_
MND_
INVALID_ACCT
;
}
mnodeDecAcctRef
(
pAcct
);
...
...
@@ -145,7 +145,7 @@ static int32_t mnodeChildTableActionInsert(SSdbOper *pOper) {
static
int32_t
mnodeChildTableActionDelete
(
SSdbOper
*
pOper
)
{
SChildTableObj
*
pTable
=
pOper
->
pObj
;
if
(
pTable
->
vgId
==
0
)
{
return
TSDB_CODE_
INVALID_VGROUP_ID
;
return
TSDB_CODE_
MND_VGROUP_NOT_EXIST
;
}
SVgObj
*
pVgroup
=
NULL
;
...
...
@@ -201,7 +201,7 @@ static int32_t mnodeChildTableActionEncode(SSdbOper *pOper) {
assert
(
pTable
!=
NULL
&&
pOper
->
rowData
!=
NULL
);
int32_t
len
=
strlen
(
pTable
->
info
.
tableId
);
if
(
len
>
TSDB_TABLE_ID_LEN
)
return
TSDB_CODE_INVALID_TABLE_ID
;
if
(
len
>
TSDB_TABLE_ID_LEN
)
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
memcpy
(
pOper
->
rowData
,
pTable
->
info
.
tableId
,
len
);
memset
(
pOper
->
rowData
+
len
,
0
,
1
);
...
...
@@ -229,12 +229,12 @@ static int32_t mnodeChildTableActionEncode(SSdbOper *pOper) {
static
int32_t
mnodeChildTableActionDecode
(
SSdbOper
*
pOper
)
{
assert
(
pOper
->
rowData
!=
NULL
);
SChildTableObj
*
pTable
=
calloc
(
1
,
sizeof
(
SChildTableObj
));
if
(
pTable
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
pTable
==
NULL
)
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
int32_t
len
=
strlen
(
pOper
->
rowData
);
if
(
len
>
TSDB_TABLE_ID_LEN
)
{
free
(
pTable
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
}
pTable
->
info
.
tableId
=
strdup
(
pOper
->
rowData
);
len
++
;
...
...
@@ -247,7 +247,7 @@ static int32_t mnodeChildTableActionDecode(SSdbOper *pOper) {
pTable
->
schema
=
(
SSchema
*
)
malloc
(
schemaSize
);
if
(
pTable
->
schema
==
NULL
)
{
mnodeDestroyChildTable
(
pTable
);
return
TSDB_CODE_INVALID_TABLE_TYPE
;
return
TSDB_CODE_
MND_
INVALID_TABLE_TYPE
;
}
memcpy
(
pTable
->
schema
,
pOper
->
rowData
+
len
,
schemaSize
);
len
+=
schemaSize
;
...
...
@@ -256,7 +256,7 @@ static int32_t mnodeChildTableActionDecode(SSdbOper *pOper) {
pTable
->
sql
=
malloc
(
pTable
->
sqlLen
);
if
(
pTable
->
sql
==
NULL
)
{
mnodeDestroyChildTable
(
pTable
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
memcpy
(
pTable
->
sql
,
pOper
->
rowData
+
len
,
pTable
->
sqlLen
);
}
...
...
@@ -453,7 +453,7 @@ static int32_t mnodeSuperTableActionEncode(SSdbOper *pOper) {
assert
(
pOper
->
pObj
!=
NULL
&&
pOper
->
rowData
!=
NULL
);
int32_t
len
=
strlen
(
pStable
->
info
.
tableId
);
if
(
len
>
TSDB_TABLE_ID_LEN
)
len
=
TSDB_CODE_INVALID_TABLE_ID
;
if
(
len
>
TSDB_TABLE_ID_LEN
)
len
=
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
memcpy
(
pOper
->
rowData
,
pStable
->
info
.
tableId
,
len
);
memset
(
pOper
->
rowData
+
len
,
0
,
1
);
...
...
@@ -474,12 +474,12 @@ static int32_t mnodeSuperTableActionEncode(SSdbOper *pOper) {
static
int32_t
mnodeSuperTableActionDecode
(
SSdbOper
*
pOper
)
{
assert
(
pOper
->
rowData
!=
NULL
);
SSuperTableObj
*
pStable
=
(
SSuperTableObj
*
)
calloc
(
1
,
sizeof
(
SSuperTableObj
));
if
(
pStable
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
pStable
==
NULL
)
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
int32_t
len
=
strlen
(
pOper
->
rowData
);
if
(
len
>
TSDB_TABLE_ID_LEN
){
free
(
pStable
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
}
pStable
->
info
.
tableId
=
strdup
(
pOper
->
rowData
);
len
++
;
...
...
@@ -491,7 +491,7 @@ static int32_t mnodeSuperTableActionDecode(SSdbOper *pOper) {
pStable
->
schema
=
malloc
(
schemaSize
);
if
(
pStable
->
schema
==
NULL
)
{
mnodeDestroySuperTable
(
pStable
);
return
TSDB_CODE_NOT_SUPER_TABLE
;
return
TSDB_CODE_
MND_
NOT_SUPER_TABLE
;
}
memcpy
(
pStable
->
schema
,
pOper
->
rowData
+
len
,
schemaSize
);
...
...
@@ -668,7 +668,7 @@ static int32_t mnodeProcessCreateTableMsg(SMnodeMsg *pMsg) {
if
(
pMsg
->
pDb
==
NULL
)
pMsg
->
pDb
=
mnodeGetDb
(
pCreate
->
db
);
if
(
pMsg
->
pDb
==
NULL
||
pMsg
->
pDb
->
status
!=
TSDB_DB_STATUS_READY
)
{
mError
(
"table:%s, failed to create, db not selected"
,
pCreate
->
tableId
);
return
TSDB_CODE_DB_NOT_SELECTED
;
return
TSDB_CODE_
MND_
DB_NOT_SELECTED
;
}
if
(
pMsg
->
pTable
==
NULL
)
pMsg
->
pTable
=
mnodeGetTable
(
pCreate
->
tableId
);
...
...
@@ -681,7 +681,7 @@ static int32_t mnodeProcessCreateTableMsg(SMnodeMsg *pMsg) {
return
TSDB_CODE_SUCCESS
;
}
else
{
mError
(
"table:%s, failed to create, table already exist"
,
pCreate
->
tableId
);
return
TSDB_CODE_TABLE_ALREADY_EXIST
;
return
TSDB_CODE_
MND_
TABLE_ALREADY_EXIST
;
}
}
...
...
@@ -699,12 +699,12 @@ static int32_t mnodeProcessDropTableMsg(SMnodeMsg *pMsg) {
if
(
pMsg
->
pDb
==
NULL
)
pMsg
->
pDb
=
mnodeGetDbByTableId
(
pDrop
->
tableId
);
if
(
pMsg
->
pDb
==
NULL
||
pMsg
->
pDb
->
status
!=
TSDB_DB_STATUS_READY
)
{
mError
(
"table:%s, failed to drop table, db not selected"
,
pDrop
->
tableId
);
return
TSDB_CODE_DB_NOT_SELECTED
;
return
TSDB_CODE_
MND_
DB_NOT_SELECTED
;
}
if
(
mnodeCheckIsMonitorDB
(
pMsg
->
pDb
->
name
,
tsMonitorDbName
))
{
mError
(
"table:%s, failed to drop table, in monitor database"
,
pDrop
->
tableId
);
return
TSDB_CODE_MONITOR_DB_FORBIDDEN
;
return
TSDB_CODE_M
ND_M
ONITOR_DB_FORBIDDEN
;
}
if
(
pMsg
->
pTable
==
NULL
)
pMsg
->
pTable
=
mnodeGetTable
(
pDrop
->
tableId
);
...
...
@@ -714,7 +714,7 @@ static int32_t mnodeProcessDropTableMsg(SMnodeMsg *pMsg) {
return
TSDB_CODE_SUCCESS
;
}
else
{
mError
(
"table:%s, failed to drop table, table not exist"
,
pDrop
->
tableId
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
}
}
...
...
@@ -735,14 +735,14 @@ static int32_t mnodeProcessTableMetaMsg(SMnodeMsg *pMsg) {
if
(
pMsg
->
pDb
==
NULL
)
pMsg
->
pDb
=
mnodeGetDbByTableId
(
pInfo
->
tableId
);
if
(
pMsg
->
pDb
==
NULL
||
pMsg
->
pDb
->
status
!=
TSDB_DB_STATUS_READY
)
{
mError
(
"table:%s, failed to get table meta, db not selected"
,
pInfo
->
tableId
);
return
TSDB_CODE_DB_NOT_SELECTED
;
return
TSDB_CODE_
MND_
DB_NOT_SELECTED
;
}
if
(
pMsg
->
pTable
==
NULL
)
pMsg
->
pTable
=
mnodeGetTable
(
pInfo
->
tableId
);
if
(
pMsg
->
pTable
==
NULL
)
{
if
(
!
pInfo
->
createFlag
)
{
mError
(
"table:%s, failed to get table meta, table not exist"
,
pInfo
->
tableId
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
}
else
{
mTrace
(
"table:%s, failed to get table meta, start auto create table "
,
pInfo
->
tableId
);
return
mnodeAutoCreateChildTable
(
pMsg
);
...
...
@@ -761,7 +761,7 @@ static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) {
SSuperTableObj
*
pStable
=
calloc
(
1
,
sizeof
(
SSuperTableObj
));
if
(
pStable
==
NULL
)
{
mError
(
"table:%s, failed to create, no enough memory"
,
pCreate
->
tableId
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
pStable
->
info
.
tableId
=
strdup
(
pCreate
->
tableId
);
...
...
@@ -779,7 +779,7 @@ static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) {
if
(
pStable
->
schema
==
NULL
)
{
free
(
pStable
);
mError
(
"table:%s, failed to create, no schema input"
,
pCreate
->
tableId
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
}
memcpy
(
pStable
->
schema
,
pCreate
->
schema
,
numOfCols
*
sizeof
(
SSchema
));
...
...
@@ -804,7 +804,7 @@ static int32_t mnodeProcessCreateSuperTableMsg(SMnodeMsg *pMsg) {
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
mnodeDestroySuperTable
(
pStable
);
mError
(
"table:%s, failed to create, sdb error"
,
pCreate
->
tableId
);
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
else
{
mLPrint
(
"table:%s, is created, tags:%d fields:%d"
,
pStable
->
info
.
tableId
,
pStable
->
numOfTags
,
pStable
->
numOfColumns
);
return
TSDB_CODE_SUCCESS
;
...
...
@@ -862,18 +862,18 @@ static int32_t mnodeFindSuperTableTagIndex(SSuperTableObj *pStable, const char *
static
int32_t
mnodeAddSuperTableTag
(
SSuperTableObj
*
pStable
,
SSchema
schema
[],
int32_t
ntags
)
{
if
(
pStable
->
numOfTags
+
ntags
>
TSDB_MAX_TAGS
)
{
mError
(
"stable:%s, add tag, too many tags"
,
pStable
->
info
.
tableId
);
return
TSDB_CODE_TOO_MANY_TAGS
;
return
TSDB_CODE_
MND_
TOO_MANY_TAGS
;
}
for
(
int32_t
i
=
0
;
i
<
ntags
;
i
++
)
{
if
(
mnodeFindSuperTableColumnIndex
(
pStable
,
schema
[
i
].
name
)
>
0
)
{
mError
(
"stable:%s, add tag, column:%s already exist"
,
pStable
->
info
.
tableId
,
schema
[
i
].
name
);
return
TSDB_CODE_TAG_ALREAY_EXIST
;
return
TSDB_CODE_
MND_
TAG_ALREAY_EXIST
;
}
if
(
mnodeFindSuperTableTagIndex
(
pStable
,
schema
[
i
].
name
)
>
0
)
{
mError
(
"stable:%s, add tag, tag:%s already exist"
,
pStable
->
info
.
tableId
,
schema
[
i
].
name
);
return
TSDB_CODE_FIELD_ALREAY_EXIST
;
return
TSDB_CODE_
MND_
FIELD_ALREAY_EXIST
;
}
}
...
...
@@ -898,7 +898,7 @@ static int32_t mnodeAddSuperTableTag(SSuperTableObj *pStable, SSchema schema[],
int32_t
code
=
sdbUpdateRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
mPrint
(
"stable %s, succeed to add tag %s"
,
pStable
->
info
.
tableId
,
schema
[
0
].
name
);
...
...
@@ -909,7 +909,7 @@ static int32_t mnodeDropSuperTableTag(SSuperTableObj *pStable, char *tagName) {
int32_t
col
=
mnodeFindSuperTableTagIndex
(
pStable
,
tagName
);
if
(
col
<
0
)
{
mError
(
"stable:%s, drop tag, tag:%s not exist"
,
pStable
->
info
.
tableId
,
tagName
);
return
TSDB_CODE_TAG_NOT_EXIST
;
return
TSDB_CODE_
MND_
TAG_NOT_EXIST
;
}
memmove
(
pStable
->
schema
+
pStable
->
numOfColumns
+
col
,
pStable
->
schema
+
pStable
->
numOfColumns
+
col
+
1
,
...
...
@@ -925,7 +925,7 @@ static int32_t mnodeDropSuperTableTag(SSuperTableObj *pStable, char *tagName) {
int32_t
code
=
sdbUpdateRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
mPrint
(
"stable %s, succeed to drop tag %s"
,
pStable
->
info
.
tableId
,
tagName
);
...
...
@@ -936,17 +936,17 @@ static int32_t mnodeModifySuperTableTagName(SSuperTableObj *pStable, char *oldTa
int32_t
col
=
mnodeFindSuperTableTagIndex
(
pStable
,
oldTagName
);
if
(
col
<
0
)
{
mError
(
"stable:%s, failed to modify table tag, oldName: %s, newName: %s"
,
pStable
->
info
.
tableId
,
oldTagName
,
newTagName
);
return
TSDB_CODE_TAG_NOT_EXIST
;
return
TSDB_CODE_
MND_
TAG_NOT_EXIST
;
}
// int32_t rowSize = 0;
uint32_t
len
=
strlen
(
newTagName
);
if
(
len
>=
TSDB_COL_NAME_LEN
)
{
return
TSDB_CODE_COL_NAME_TOO_LONG
;
return
TSDB_CODE_
MND_
COL_NAME_TOO_LONG
;
}
if
(
mnodeFindSuperTableTagIndex
(
pStable
,
newTagName
)
>=
0
)
{
return
TSDB_CODE_TAG_ALREAY_EXIST
;
return
TSDB_CODE_
MND_
TAG_ALREAY_EXIST
;
}
// update
...
...
@@ -961,7 +961,7 @@ static int32_t mnodeModifySuperTableTagName(SSuperTableObj *pStable, char *oldTa
int32_t
code
=
sdbUpdateRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
mPrint
(
"stable %s, succeed to modify tag %s to %s"
,
pStable
->
info
.
tableId
,
oldTagName
,
newTagName
);
...
...
@@ -982,18 +982,18 @@ static int32_t mnodeFindSuperTableColumnIndex(SSuperTableObj *pStable, char *col
static
int32_t
mnodeAddSuperTableColumn
(
SDbObj
*
pDb
,
SSuperTableObj
*
pStable
,
SSchema
schema
[],
int32_t
ncols
)
{
if
(
ncols
<=
0
)
{
mError
(
"stable:%s, add column, ncols:%d <= 0"
,
pStable
->
info
.
tableId
);
return
TSDB_CODE_APP_ERROR
;
return
TSDB_CODE_
MND_
APP_ERROR
;
}
for
(
int32_t
i
=
0
;
i
<
ncols
;
i
++
)
{
if
(
mnodeFindSuperTableColumnIndex
(
pStable
,
schema
[
i
].
name
)
>
0
)
{
mError
(
"stable:%s, add column, column:%s already exist"
,
pStable
->
info
.
tableId
,
schema
[
i
].
name
);
return
TSDB_CODE_FIELD_ALREAY_EXIST
;
return
TSDB_CODE_
MND_
FIELD_ALREAY_EXIST
;
}
if
(
mnodeFindSuperTableTagIndex
(
pStable
,
schema
[
i
].
name
)
>
0
)
{
mError
(
"stable:%s, add column, tag:%s already exist"
,
pStable
->
info
.
tableId
,
schema
[
i
].
name
);
return
TSDB_CODE_TAG_ALREAY_EXIST
;
return
TSDB_CODE_
MND_
TAG_ALREAY_EXIST
;
}
}
...
...
@@ -1026,7 +1026,7 @@ static int32_t mnodeAddSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, SS
int32_t
code
=
sdbUpdateRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
mPrint
(
"stable %s, succeed to add column"
,
pStable
->
info
.
tableId
);
...
...
@@ -1037,7 +1037,7 @@ static int32_t mnodeDropSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, c
int32_t
col
=
mnodeFindSuperTableColumnIndex
(
pStable
,
colName
);
if
(
col
<=
0
)
{
mError
(
"stable:%s, drop column, column:%s not exist"
,
pStable
->
info
.
tableId
,
colName
);
return
TSDB_CODE_FIELD_NOT_EXIST
;
return
TSDB_CODE_
MND_
FIELD_NOT_EXIST
;
}
memmove
(
pStable
->
schema
+
col
,
pStable
->
schema
+
col
+
1
,
...
...
@@ -1063,7 +1063,7 @@ static int32_t mnodeDropSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, c
int32_t
code
=
sdbUpdateRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
mPrint
(
"stable %s, succeed to delete column"
,
pStable
->
info
.
tableId
);
...
...
@@ -1073,7 +1073,7 @@ static int32_t mnodeDropSuperTableColumn(SDbObj *pDb, SSuperTableObj *pStable, c
// show super tables
static
int32_t
mnodeGetShowSuperTableMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SDbObj
*
pDb
=
mnodeGetDb
(
pShow
->
db
);
if
(
pDb
==
NULL
)
return
TSDB_CODE_DB_NOT_SELECTED
;
if
(
pDb
==
NULL
)
return
TSDB_CODE_
MND_
DB_NOT_SELECTED
;
int32_t
cols
=
0
;
SSchema
*
pSchema
=
pMeta
->
schema
;
...
...
@@ -1277,7 +1277,7 @@ static int32_t mnodeProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) {
SCMSTableVgroupRspMsg
*
pRsp
=
rpcMallocCont
(
contLen
);
if
(
pRsp
==
NULL
)
{
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
pRsp
->
numOfTables
=
0
;
...
...
@@ -1340,7 +1340,7 @@ static int32_t mnodeProcessSuperTableVgroupMsg(SMnodeMsg *pMsg) {
if
(
pRsp
->
numOfTables
!=
numOfTable
)
{
rpcFreeCont
(
pRsp
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
}
else
{
pRsp
->
numOfTables
=
htonl
(
pRsp
->
numOfTables
);
pMsg
->
rpcRsp
.
rsp
=
pRsp
;
...
...
@@ -1374,7 +1374,7 @@ static void *mnodeBuildCreateChildTableMsg(SCMCreateTableMsg *pMsg, SChildTableO
SMDCreateTableMsg
*
pCreate
=
rpcMallocCont
(
contLen
);
if
(
pCreate
==
NULL
)
{
terrno
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
return
NULL
;
}
...
...
@@ -1431,7 +1431,7 @@ static SChildTableObj* mnodeDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgOb
SChildTableObj
*
pTable
=
calloc
(
1
,
sizeof
(
SChildTableObj
));
if
(
pTable
==
NULL
)
{
mError
(
"table:%s, failed to alloc memory"
,
pCreate
->
tableId
);
terrno
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
return
NULL
;
}
...
...
@@ -1452,7 +1452,7 @@ static SChildTableObj* mnodeDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgOb
if
(
pSuperTable
==
NULL
)
{
mError
(
"table:%s, corresponding super table:%s does not exist"
,
pCreate
->
tableId
,
pTagData
->
name
);
mnodeDestroyChildTable
(
pTable
);
terrno
=
TSDB_CODE_INVALID_TABLE_ID
;
terrno
=
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
return
NULL
;
}
mnodeDecTableRef
(
pSuperTable
);
...
...
@@ -1472,7 +1472,7 @@ static SChildTableObj* mnodeDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgOb
pTable
->
schema
=
(
SSchema
*
)
calloc
(
1
,
schemaSize
);
if
(
pTable
->
schema
==
NULL
)
{
free
(
pTable
);
terrno
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
return
NULL
;
}
memcpy
(
pTable
->
schema
,
pCreate
->
schema
,
numOfCols
*
sizeof
(
SSchema
));
...
...
@@ -1489,7 +1489,7 @@ static SChildTableObj* mnodeDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgOb
pTable
->
sql
=
calloc
(
1
,
pTable
->
sqlLen
);
if
(
pTable
->
sql
==
NULL
)
{
free
(
pTable
);
terrno
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
return
NULL
;
}
memcpy
(
pTable
->
sql
,
(
char
*
)
(
pCreate
->
schema
)
+
numOfCols
*
sizeof
(
SSchema
),
pTable
->
sqlLen
);
...
...
@@ -1506,7 +1506,7 @@ static SChildTableObj* mnodeDoCreateChildTable(SCMCreateTableMsg *pCreate, SVgOb
if
(
sdbInsertRow
(
&
desc
)
!=
TSDB_CODE_SUCCESS
)
{
free
(
pTable
);
mError
(
"table:%s, update sdb error"
,
pCreate
->
tableId
);
terrno
=
TSDB_CODE_SDB_ERROR
;
terrno
=
TSDB_CODE_
MND_
SDB_ERROR
;
return
NULL
;
}
...
...
@@ -1567,7 +1567,7 @@ static int32_t mnodeProcessCreateChildTableMsg(SMnodeMsg *pMsg) {
dnodeSendMsgToDnode
(
&
ipSet
,
&
rpcMsg
);
return
TSDB_CODE_ACTION_IN_PROGRESS
;
return
TSDB_CODE_
MND_
ACTION_IN_PROGRESS
;
}
static
int32_t
mnodeProcessDropChildTableMsg
(
SMnodeMsg
*
pMsg
)
{
...
...
@@ -1575,13 +1575,13 @@ static int32_t mnodeProcessDropChildTableMsg(SMnodeMsg *pMsg) {
if
(
pMsg
->
pVgroup
==
NULL
)
pMsg
->
pVgroup
=
mnodeGetVgroup
(
pTable
->
vgId
);
if
(
pMsg
->
pVgroup
==
NULL
)
{
mError
(
"table:%s, failed to drop ctable, vgroup not exist"
,
pTable
->
info
.
tableId
);
return
TSDB_CODE_
OTHERS
;
return
TSDB_CODE_
MND_APP_ERROR
;
}
SMDDropTableMsg
*
pDrop
=
rpcMallocCont
(
sizeof
(
SMDDropTableMsg
));
if
(
pDrop
==
NULL
)
{
mError
(
"table:%s, failed to drop ctable, no enough memory"
,
pTable
->
info
.
tableId
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
strcpy
(
pDrop
->
tableId
,
pTable
->
info
.
tableId
);
...
...
@@ -1603,11 +1603,11 @@ static int32_t mnodeProcessDropChildTableMsg(SMnodeMsg *pMsg) {
dnodeSendMsgToDnode
(
&
ipSet
,
&
rpcMsg
);
return
TSDB_CODE_ACTION_IN_PROGRESS
;
return
TSDB_CODE_
MND_
ACTION_IN_PROGRESS
;
}
static
int32_t
mnodeModifyChildTableTagValue
(
SChildTableObj
*
pTable
,
char
*
tagName
,
char
*
nContent
)
{
return
TSDB_CODE_OPS_NOT_SUPPORT
;
return
TSDB_CODE_
COM_
OPS_NOT_SUPPORT
;
}
static
int32_t
mnodeFindNormalTableColumnIndex
(
SChildTableObj
*
pTable
,
char
*
colName
)
{
...
...
@@ -1624,13 +1624,13 @@ static int32_t mnodeFindNormalTableColumnIndex(SChildTableObj *pTable, char *col
static
int32_t
mnodeAddNormalTableColumn
(
SDbObj
*
pDb
,
SChildTableObj
*
pTable
,
SSchema
schema
[],
int32_t
ncols
)
{
if
(
ncols
<=
0
)
{
mError
(
"table:%s, add column, ncols:%d <= 0"
,
pTable
->
info
.
tableId
);
return
TSDB_CODE_APP_ERROR
;
return
TSDB_CODE_
MND_
APP_ERROR
;
}
for
(
int32_t
i
=
0
;
i
<
ncols
;
i
++
)
{
if
(
mnodeFindNormalTableColumnIndex
(
pTable
,
schema
[
i
].
name
)
>
0
)
{
mError
(
"table:%s, add column, column:%s already exist"
,
pTable
->
info
.
tableId
,
schema
[
i
].
name
);
return
TSDB_CODE_FIELD_ALREAY_EXIST
;
return
TSDB_CODE_
MND_
FIELD_ALREAY_EXIST
;
}
}
...
...
@@ -1661,7 +1661,7 @@ static int32_t mnodeAddNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, SS
int32_t
code
=
sdbUpdateRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
mPrint
(
"table %s, succeed to add column"
,
pTable
->
info
.
tableId
);
...
...
@@ -1672,7 +1672,7 @@ static int32_t mnodeDropNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, c
int32_t
col
=
mnodeFindNormalTableColumnIndex
(
pTable
,
colName
);
if
(
col
<=
0
)
{
mError
(
"table:%s, drop column, column:%s not exist"
,
pTable
->
info
.
tableId
,
colName
);
return
TSDB_CODE_FIELD_NOT_EXIST
;
return
TSDB_CODE_
MND_
FIELD_NOT_EXIST
;
}
memmove
(
pTable
->
schema
+
col
,
pTable
->
schema
+
col
+
1
,
sizeof
(
SSchema
)
*
(
pTable
->
numOfColumns
-
col
-
1
));
...
...
@@ -1693,7 +1693,7 @@ static int32_t mnodeDropNormalTableColumn(SDbObj *pDb, SChildTableObj *pTable, c
int32_t
code
=
sdbUpdateRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
mPrint
(
"table %s, succeed to drop column %s"
,
pTable
->
info
.
tableId
,
colName
);
...
...
@@ -1739,8 +1739,8 @@ static int32_t mnodeDoGetChildTableMeta(SMnodeMsg *pMsg, STableMetaMsg *pMeta) {
if
(
pMsg
->
pVgroup
==
NULL
)
pMsg
->
pVgroup
=
mnodeGetVgroup
(
pTable
->
vgId
);
if
(
pMsg
->
pVgroup
==
NULL
)
{
mError
(
"table:%s, failed to get table meta,
db not selected
"
,
pTable
->
info
.
tableId
);
return
TSDB_CODE_
INVALID_VGROUP_ID
;
mError
(
"table:%s, failed to get table meta,
vgroup not exist
"
,
pTable
->
info
.
tableId
);
return
TSDB_CODE_
MND_VGROUP_NOT_EXIST
;
}
for
(
int32_t
i
=
0
;
i
<
pMsg
->
pVgroup
->
numOfVnodes
;
++
i
)
{
...
...
@@ -1766,7 +1766,7 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) {
SCMCreateTableMsg
*
pCreateMsg
=
rpcMallocCont
(
contLen
);
if
(
pCreateMsg
==
NULL
)
{
mError
(
"table:%s, failed to create table while get meta info, no enough memory"
,
pInfo
->
tableId
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
strncpy
(
pCreateMsg
->
tableId
,
pInfo
->
tableId
,
tListLen
(
pInfo
->
tableId
));
...
...
@@ -1783,14 +1783,14 @@ static int32_t mnodeAutoCreateChildTable(SMnodeMsg *pMsg) {
pMsg
->
rpcMsg
.
pCont
=
pCreateMsg
;
pMsg
->
rpcMsg
.
contLen
=
contLen
;
return
TSDB_CODE_ACTION_NEED_REPROCESSED
;
return
TSDB_CODE_
MND_
ACTION_NEED_REPROCESSED
;
}
static
int32_t
mnodeGetChildTableMeta
(
SMnodeMsg
*
pMsg
)
{
STableMetaMsg
*
pMeta
=
rpcMallocCont
(
sizeof
(
STableMetaMsg
)
+
sizeof
(
SSchema
)
*
(
TSDB_MAX_TAGS
+
TSDB_MAX_COLUMNS
+
16
));
if
(
pMeta
==
NULL
)
{
mError
(
"table:%s, failed to get table meta, no enough memory"
,
pMsg
->
pTable
->
tableId
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
mnodeDoGetChildTableMeta
(
pMsg
,
pMeta
);
...
...
@@ -1909,7 +1909,7 @@ static int32_t mnodeProcessTableCfgMsg(SMnodeMsg *pMsg) {
SChildTableObj
*
pTable
=
mnodeGetTableByPos
(
pCfg
->
vgId
,
pCfg
->
sid
);
if
(
pTable
==
NULL
)
{
mError
(
"dnode:%d, vgId:%d sid:%d, table not found"
,
pCfg
->
dnodeId
,
pCfg
->
vgId
,
pCfg
->
sid
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
}
SMDCreateTableMsg
*
pCreate
=
NULL
;
...
...
@@ -1943,7 +1943,7 @@ static void mnodeProcessDropChildTableRsp(SRpcMsg *rpcMsg) {
if
(
mnodeMsg
->
pVgroup
==
NULL
)
mnodeMsg
->
pVgroup
=
mnodeGetVgroup
(
pTable
->
vgId
);
if
(
mnodeMsg
->
pVgroup
==
NULL
)
{
mError
(
"table:%s, failed to get vgroup"
,
pTable
->
info
.
tableId
);
dnodeSendRpcMnodeWriteRsp
(
mnodeMsg
,
TSDB_CODE_
INVALID_VGROUP_ID
);
dnodeSendRpcMnodeWriteRsp
(
mnodeMsg
,
TSDB_CODE_
MND_VGROUP_NOT_EXIST
);
return
;
}
...
...
@@ -1956,7 +1956,7 @@ static void mnodeProcessDropChildTableRsp(SRpcMsg *rpcMsg) {
int32_t
code
=
sdbDeleteRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
mError
(
"table:%s, update ctables sdb error"
,
pTable
->
info
.
tableId
);
dnodeSendRpcMnodeWriteRsp
(
mnodeMsg
,
TSDB_CODE_SDB_ERROR
);
dnodeSendRpcMnodeWriteRsp
(
mnodeMsg
,
TSDB_CODE_
MND_
SDB_ERROR
);
return
;
}
...
...
@@ -2025,7 +2025,7 @@ static int32_t mnodeProcessMultiTableMetaMsg(SMnodeMsg *pMsg) {
int32_t
totalMallocLen
=
4
*
1024
*
1024
;
// first malloc 4 MB, subsequent reallocation as twice
SMultiTableMeta
*
pMultiMeta
=
rpcMallocCont
(
totalMallocLen
);
if
(
pMultiMeta
==
NULL
)
{
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
pMultiMeta
->
contLen
=
sizeof
(
SMultiTableMeta
);
...
...
@@ -2048,7 +2048,7 @@ static int32_t mnodeProcessMultiTableMetaMsg(SMnodeMsg *pMsg) {
pMultiMeta
=
rpcReallocCont
(
pMultiMeta
,
totalMallocLen
);
if
(
pMultiMeta
==
NULL
)
{
mnodeDecTableRef
(
pTable
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
}
else
{
t
--
;
mnodeDecTableRef
(
pTable
);
...
...
@@ -2074,7 +2074,7 @@ static int32_t mnodeProcessMultiTableMetaMsg(SMnodeMsg *pMsg) {
static
int32_t
mnodeGetShowTableMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SDbObj
*
pDb
=
mnodeGetDb
(
pShow
->
db
);
if
(
pDb
==
NULL
)
return
TSDB_CODE_DB_NOT_SELECTED
;
if
(
pDb
==
NULL
)
return
TSDB_CODE_
MND_
DB_NOT_SELECTED
;
int32_t
cols
=
0
;
SSchema
*
pSchema
=
pMeta
->
schema
;
...
...
@@ -2201,18 +2201,18 @@ static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) {
if
(
pMsg
->
pDb
==
NULL
)
pMsg
->
pDb
=
mnodeGetDbByTableId
(
pAlter
->
tableId
);
if
(
pMsg
->
pDb
==
NULL
||
pMsg
->
pDb
->
status
!=
TSDB_DB_STATUS_READY
)
{
mError
(
"table:%s, failed to alter table, db not selected"
,
pAlter
->
tableId
);
return
TSDB_CODE_DB_NOT_SELECTED
;
return
TSDB_CODE_
MND_
DB_NOT_SELECTED
;
}
if
(
mnodeCheckIsMonitorDB
(
pMsg
->
pDb
->
name
,
tsMonitorDbName
))
{
mError
(
"table:%s, failed to alter table, its log db"
,
pAlter
->
tableId
);
return
TSDB_CODE_MONITOR_DB_FORBIDDEN
;
return
TSDB_CODE_M
ND_M
ONITOR_DB_FORBIDDEN
;
}
if
(
pMsg
->
pTable
==
NULL
)
pMsg
->
pTable
=
mnodeGetTable
(
pAlter
->
tableId
);
if
(
pMsg
->
pTable
==
NULL
)
{
mError
(
"table:%s, failed to alter table, table not exist"
,
pMsg
->
pTable
->
tableId
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
}
pAlter
->
type
=
htons
(
pAlter
->
type
);
...
...
@@ -2221,14 +2221,14 @@ static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) {
if
(
pAlter
->
numOfCols
>
2
)
{
mError
(
"table:%s, error numOfCols:%d in alter table"
,
pAlter
->
tableId
,
pAlter
->
numOfCols
);
return
TSDB_CODE_APP_ERROR
;
return
TSDB_CODE_
MND_
APP_ERROR
;
}
for
(
int32_t
i
=
0
;
i
<
pAlter
->
numOfCols
;
++
i
)
{
pAlter
->
schema
[
i
].
bytes
=
htons
(
pAlter
->
schema
[
i
].
bytes
);
}
int32_t
code
=
TSDB_CODE_OPS_NOT_SUPPORT
;
int32_t
code
=
TSDB_CODE_
COM_
OPS_NOT_SUPPORT
;
if
(
pMsg
->
pTable
->
type
==
TSDB_SUPER_TABLE
)
{
SSuperTableObj
*
pTable
=
(
SSuperTableObj
*
)
pMsg
->
pTable
;
mTrace
(
"table:%s, start to alter stable"
,
pAlter
->
tableId
);
...
...
@@ -2263,7 +2263,7 @@ static int32_t mnodeProcessAlterTableMsg(SMnodeMsg *pMsg) {
static
int32_t
mnodeGetStreamTableMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SDbObj
*
pDb
=
mnodeGetDb
(
pShow
->
db
);
if
(
pDb
==
NULL
)
return
TSDB_CODE_DB_NOT_SELECTED
;
if
(
pDb
==
NULL
)
return
TSDB_CODE_
MND_
DB_NOT_SELECTED
;
int32_t
cols
=
0
;
SSchema
*
pSchema
=
pMeta
->
schema
;
...
...
src/mnode/src/mnodeUser.c
浏览文件 @
3bb9451c
...
...
@@ -56,7 +56,7 @@ static int32_t mnodeUserActionInsert(SSdbOper *pOper) {
mnodeDecAcctRef
(
pAcct
);
}
else
{
mError
(
"user:%s, acct:%s info not exist in sdb"
,
pUser
->
user
,
pUser
->
acct
);
return
TSDB_CODE_INVALID_ACCT
;
return
TSDB_CODE_
MND_
INVALID_ACCT
;
}
return
TSDB_CODE_SUCCESS
;
...
...
@@ -94,7 +94,7 @@ static int32_t mnodeUserActionEncode(SSdbOper *pOper) {
static
int32_t
mnodeUserActionDecode
(
SSdbOper
*
pOper
)
{
SUserObj
*
pUser
=
(
SUserObj
*
)
calloc
(
1
,
sizeof
(
SUserObj
));
if
(
pUser
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
pUser
==
NULL
)
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
memcpy
(
pUser
,
pOper
->
rowData
,
tsUserUpdateSize
);
pOper
->
pObj
=
pUser
;
...
...
@@ -179,7 +179,7 @@ static int32_t mnodeUpdateUser(SUserObj *pUser) {
int32_t
code
=
sdbUpdateRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
code
=
TSDB_CODE_SDB_ERROR
;
code
=
TSDB_CODE_
MND_
SDB_ERROR
;
}
return
code
;
...
...
@@ -192,18 +192,18 @@ int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass) {
}
if
(
name
[
0
]
==
0
)
{
return
TSDB_CODE_INVALID_USER_FORMAT
;
return
TSDB_CODE_
MND_
INVALID_USER_FORMAT
;
}
if
(
pass
[
0
]
==
0
)
{
return
TSDB_CODE_INVALID_PASS_FORMAT
;
return
TSDB_CODE_
MND_
INVALID_PASS_FORMAT
;
}
SUserObj
*
pUser
=
mnodeGetUser
(
name
);
if
(
pUser
!=
NULL
)
{
mTrace
(
"user:%s, is already there"
,
name
);
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_USER_ALREADY_EXIST
;
return
TSDB_CODE_
MND_
USER_ALREADY_EXIST
;
}
code
=
grantCheck
(
TSDB_GRANT_USER
);
...
...
@@ -232,7 +232,7 @@ int32_t mnodeCreateUser(SAcctObj *pAcct, char *name, char *pass) {
code
=
sdbInsertRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
tfree
(
pUser
);
code
=
TSDB_CODE_SDB_ERROR
;
code
=
TSDB_CODE_
MND_
SDB_ERROR
;
}
return
code
;
...
...
@@ -247,7 +247,7 @@ static int32_t mnodeDropUser(SUserObj *pUser) {
int32_t
code
=
sdbDeleteRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
code
=
TSDB_CODE_SDB_ERROR
;
code
=
TSDB_CODE_
MND_
SDB_ERROR
;
}
return
code
;
...
...
@@ -256,7 +256,7 @@ static int32_t mnodeDropUser(SUserObj *pUser) {
static
int32_t
mnodeGetUserMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SUserObj
*
pUser
=
mnodeGetUserFromConn
(
pConn
);
if
(
pUser
==
NULL
)
{
return
TSDB_CODE_NO_USER_FROM_CONN
;
return
TSDB_CODE_
MND_
NO_USER_FROM_CONN
;
}
int32_t
cols
=
0
;
...
...
@@ -369,7 +369,7 @@ static int32_t mnodeProcessCreateUserMsg(SMnodeMsg *pMsg) {
}
}
else
{
mError
(
"user:%s, no rights to create user"
,
pOperUser
->
user
);
code
=
TSDB_CODE_NO_RIGHTS
;
code
=
TSDB_CODE_
MND_
NO_RIGHTS
;
}
return
code
;
...
...
@@ -382,12 +382,12 @@ static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg) {
SCMAlterUserMsg
*
pAlter
=
pMsg
->
rpcMsg
.
pCont
;
SUserObj
*
pUser
=
mnodeGetUser
(
pAlter
->
user
);
if
(
pUser
==
NULL
)
{
return
TSDB_CODE_INVALID_USER
;
return
TSDB_CODE_
MND_
INVALID_USER
;
}
if
(
strcmp
(
pUser
->
user
,
"monitor"
)
==
0
||
(
strcmp
(
pUser
->
user
+
1
,
pUser
->
acct
)
==
0
&&
pUser
->
user
[
0
]
==
'_'
))
{
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
if
((
pAlter
->
flag
&
TSDB_ALTER_USER_PASSWD
)
!=
0
)
{
...
...
@@ -413,7 +413,7 @@ static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg) {
mLPrint
(
"user:%s, password is altered by %s, result:%s"
,
pUser
->
user
,
pOperUser
->
user
,
tstrerror
(
code
));
}
else
{
mError
(
"user:%s, no rights to alter user"
,
pOperUser
->
user
);
code
=
TSDB_CODE_NO_RIGHTS
;
code
=
TSDB_CODE_
MND_
NO_RIGHTS
;
}
}
else
if
((
pAlter
->
flag
&
TSDB_ALTER_USER_PRIVILEGES
)
!=
0
)
{
bool
hasRight
=
false
;
...
...
@@ -454,11 +454,11 @@ static int32_t mnodeProcessAlterUserMsg(SMnodeMsg *pMsg) {
mLPrint
(
"user:%s, privilege is altered by %s, result:%s"
,
pUser
->
user
,
pOperUser
->
user
,
tstrerror
(
code
));
}
else
{
mError
(
"user:%s, no rights to alter user"
,
pOperUser
->
user
);
code
=
TSDB_CODE_NO_RIGHTS
;
code
=
TSDB_CODE_
MND_
NO_RIGHTS
;
}
}
else
{
mError
(
"user:%s, no rights to alter user"
,
pOperUser
->
user
);
code
=
TSDB_CODE_NO_RIGHTS
;
code
=
TSDB_CODE_
MND_
NO_RIGHTS
;
}
mnodeDecUserRef
(
pUser
);
...
...
@@ -472,13 +472,13 @@ static int32_t mnodeProcessDropUserMsg(SMnodeMsg *pMsg) {
SCMDropUserMsg
*
pDrop
=
pMsg
->
rpcMsg
.
pCont
;
SUserObj
*
pUser
=
mnodeGetUser
(
pDrop
->
user
);
if
(
pUser
==
NULL
)
{
return
TSDB_CODE_INVALID_USER
;
return
TSDB_CODE_
MND_
INVALID_USER
;
}
if
(
strcmp
(
pUser
->
user
,
"monitor"
)
==
0
||
strcmp
(
pUser
->
user
,
pUser
->
acct
)
==
0
||
(
strcmp
(
pUser
->
user
+
1
,
pUser
->
acct
)
==
0
&&
pUser
->
user
[
0
]
==
'_'
))
{
mnodeDecUserRef
(
pUser
);
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
bool
hasRight
=
false
;
...
...
@@ -502,7 +502,7 @@ static int32_t mnodeProcessDropUserMsg(SMnodeMsg *pMsg) {
mLPrint
(
"user:%s, is dropped by %s, result:%s"
,
pUser
->
user
,
pOperUser
->
user
,
tstrerror
(
code
));
}
}
else
{
code
=
TSDB_CODE_NO_RIGHTS
;
code
=
TSDB_CODE_
MND_
NO_RIGHTS
;
}
mnodeDecUserRef
(
pUser
);
...
...
@@ -540,15 +540,15 @@ void mnodeDropAllUsers(SAcctObj *pAcct) {
int32_t
mnodeRetriveAuth
(
char
*
user
,
char
*
spi
,
char
*
encrypt
,
char
*
secret
,
char
*
ckey
)
{
if
(
!
sdbIsMaster
())
{
*
secret
=
0
;
mTrace
(
"user:%s, failed to auth user, reason:%s"
,
user
,
tstrerror
(
TSDB_CODE_NOT_READY
));
return
TSDB_CODE_NOT_READY
;
mTrace
(
"user:%s, failed to auth user, reason:%s"
,
user
,
tstrerror
(
TSDB_CODE_
RPC_
NOT_READY
));
return
TSDB_CODE_
RPC_
NOT_READY
;
}
SUserObj
*
pUser
=
mnodeGetUser
(
user
);
if
(
pUser
==
NULL
)
{
*
secret
=
0
;
mError
(
"user:%s, failed to auth user, reason:%s"
,
user
,
tstrerror
(
TSDB_CODE_INVALID_USER
));
return
TSDB_CODE_INVALID_USER
;
mError
(
"user:%s, failed to auth user, reason:%s"
,
user
,
tstrerror
(
TSDB_CODE_
MND_
INVALID_USER
));
return
TSDB_CODE_
MND_
INVALID_USER
;
}
else
{
*
spi
=
1
;
*
encrypt
=
0
;
...
...
src/mnode/src/mnodeVgroup.c
浏览文件 @
3bb9451c
...
...
@@ -68,7 +68,7 @@ static int32_t mnodeVgroupActionInsert(SSdbOper *pOper) {
// refer to db
SDbObj
*
pDb
=
mnodeGetDb
(
pVgroup
->
dbName
);
if
(
pDb
==
NULL
)
{
return
TSDB_CODE_INVALID_DB
;
return
TSDB_CODE_
MND_
INVALID_DB
;
}
pVgroup
->
pDb
=
pDb
;
...
...
@@ -185,7 +185,7 @@ static int32_t mnodeVgroupActionEncode(SSdbOper *pOper) {
static
int32_t
mnodeVgroupActionDecode
(
SSdbOper
*
pOper
)
{
SVgObj
*
pVgroup
=
(
SVgObj
*
)
calloc
(
1
,
sizeof
(
SVgObj
));
if
(
pVgroup
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
pVgroup
==
NULL
)
return
TSDB_CODE_
MND
_OUT_OF_MEMORY
;
memcpy
(
pVgroup
,
pOper
->
rowData
,
tsVgUpdateSize
);
pOper
->
pObj
=
pVgroup
;
...
...
@@ -307,7 +307,7 @@ int32_t mnodeCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) {
if
(
balanceAllocVnodes
(
pVgroup
)
!=
0
)
{
mError
(
"db:%s, no enough dnode to alloc %d vnodes to vgroup"
,
pDb
->
name
,
pVgroup
->
numOfVnodes
);
free
(
pVgroup
);
return
TSDB_CODE_NO_ENOUGH_DNODES
;
return
TSDB_CODE_
MND_
NO_ENOUGH_DNODES
;
}
SSdbOper
oper
=
{
...
...
@@ -320,7 +320,7 @@ int32_t mnodeCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) {
int32_t
code
=
sdbInsertRow
(
&
oper
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
tfree
(
pVgroup
);
return
TSDB_CODE_SDB_ERROR
;
return
TSDB_CODE_
MND_
SDB_ERROR
;
}
mPrint
(
"vgId:%d, is created in mnode, db:%s replica:%d"
,
pVgroup
->
vgId
,
pDb
->
name
,
pVgroup
->
numOfVnodes
);
...
...
@@ -333,7 +333,7 @@ int32_t mnodeCreateVgroup(SMnodeMsg *pMsg, SDbObj *pDb) {
pMsg
->
expected
=
pVgroup
->
numOfVnodes
;
mnodeSendCreateVgroupMsg
(
pVgroup
,
pMsg
);
return
TSDB_CODE_ACTION_IN_PROGRESS
;
return
TSDB_CODE_
MND_
ACTION_IN_PROGRESS
;
}
void
mnodeDropVgroup
(
SVgObj
*
pVgroup
,
void
*
ahandle
)
{
...
...
@@ -358,7 +358,7 @@ void mnodeCleanupVgroups() {
int32_t
mnodeGetVgroupMeta
(
STableMetaMsg
*
pMeta
,
SShowObj
*
pShow
,
void
*
pConn
)
{
SDbObj
*
pDb
=
mnodeGetDb
(
pShow
->
db
);
if
(
pDb
==
NULL
)
{
return
TSDB_CODE_DB_NOT_SELECTED
;
return
TSDB_CODE_
MND_
DB_NOT_SELECTED
;
}
int32_t
cols
=
0
;
...
...
@@ -383,11 +383,11 @@ int32_t mnodeGetVgroupMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn) {
pTable
=
mnodeGetTable
(
pShow
->
payload
);
if
(
NULL
==
pTable
||
pTable
->
type
==
TSDB_SUPER_TABLE
)
{
mnodeDecTableRef
(
pTable
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
}
mnodeDecTableRef
(
pTable
);
pVgroup
=
mnodeGetVgroup
(((
SChildTableObj
*
)
pTable
)
->
vgId
);
if
(
NULL
==
pVgroup
)
return
TSDB_CODE_INVALID_TABLE_ID
;
if
(
NULL
==
pVgroup
)
return
TSDB_CODE_
MND_
INVALID_TABLE_ID
;
mnodeDecVgroupRef
(
pVgroup
);
maxReplica
=
pVgroup
->
numOfVnodes
>
maxReplica
?
pVgroup
->
numOfVnodes
:
maxReplica
;
}
else
{
...
...
@@ -643,7 +643,7 @@ static void mnodeProcessCreateVnodeRsp(SRpcMsg *rpcMsg) {
};
int32_t
code
=
sdbDeleteRow
(
&
oper
);
if
(
code
!=
0
)
{
code
=
TSDB_CODE_SDB_ERROR
;
code
=
TSDB_CODE_
MND_
SDB_ERROR
;
}
dnodeSendRpcMnodeWriteRsp
(
mnodeMsg
,
code
);
...
...
@@ -704,7 +704,7 @@ static void mnodeProcessDropVnodeRsp(SRpcMsg *rpcMsg) {
};
int32_t
code
=
sdbDeleteRow
(
&
oper
);
if
(
code
!=
0
)
{
code
=
TSDB_CODE_SDB_ERROR
;
code
=
TSDB_CODE_
MND_
SDB_ERROR
;
}
dnodeReprocessMnodeWriteMsg
(
mnodeMsg
);
...
...
@@ -718,14 +718,14 @@ static int32_t mnodeProcessVnodeCfgMsg(SMnodeMsg *pMsg) {
SDnodeObj
*
pDnode
=
mnodeGetDnode
(
pCfg
->
dnodeId
);
if
(
pDnode
==
NULL
)
{
mTrace
(
"dnode:%s, invalid dnode"
,
taosIpStr
(
pCfg
->
dnodeId
),
pCfg
->
vgId
);
return
TSDB_CODE_
INVALID_VGROUP_ID
;
return
TSDB_CODE_
MND_VGROUP_NOT_EXIST
;
}
mnodeDecDnodeRef
(
pDnode
);
SVgObj
*
pVgroup
=
mnodeGetVgroup
(
pCfg
->
vgId
);
if
(
pVgroup
==
NULL
)
{
mTrace
(
"dnode:%s, vgId:%d, no vgroup info"
,
taosIpStr
(
pCfg
->
dnodeId
),
pCfg
->
vgId
);
return
TSDB_CODE_
INVALID_VGROUP_ID
;
return
TSDB_CODE_
MND_VGROUP_NOT_EXIST
;
}
mnodeDecVgroupRef
(
pVgroup
);
...
...
src/mnode/src/mnodeWrite.c
浏览文件 @
3bb9451c
...
...
@@ -44,7 +44,7 @@ void mnodeAddWriteMsgHandle(uint8_t msgType, int32_t (*fp)(SMnodeMsg *mnodeMsg))
int32_t
mnodeProcessWrite
(
SMnodeMsg
*
pMsg
)
{
if
(
pMsg
->
rpcMsg
.
pCont
==
NULL
)
{
mError
(
"%p, msg:%s in mwrite queue, content is null"
,
pMsg
->
rpcMsg
.
ahandle
,
taosMsg
[
pMsg
->
rpcMsg
.
msgType
]);
return
TSDB_CODE_INVALID_MSG_LEN
;
return
TSDB_CODE_
MND_
INVALID_MSG_LEN
;
}
if
(
!
sdbIsMaster
())
{
...
...
@@ -59,12 +59,12 @@ int32_t mnodeProcessWrite(SMnodeMsg *pMsg) {
mTrace
(
"mnode index:%d ip:%s:%d"
,
i
,
ipSet
->
fqdn
[
i
],
htons
(
ipSet
->
port
[
i
]));
}
return
TSDB_CODE_REDIRECT
;
return
TSDB_CODE_R
PC_R
EDIRECT
;
}
if
(
tsMnodeProcessWriteMsgFp
[
pMsg
->
rpcMsg
.
msgType
]
==
NULL
)
{
mError
(
"%p, msg:%s in mwrite queue, not processed"
,
pMsg
->
rpcMsg
.
ahandle
,
taosMsg
[
pMsg
->
rpcMsg
.
msgType
]);
return
TSDB_CODE_MSG_NOT_PROCESSED
;
return
TSDB_CODE_M
ND_M
SG_NOT_PROCESSED
;
}
int32_t
code
=
mnodeInitMsg
(
pMsg
);
...
...
@@ -75,7 +75,7 @@ int32_t mnodeProcessWrite(SMnodeMsg *pMsg) {
if
(
!
pMsg
->
pUser
->
writeAuth
)
{
mError
(
"%p, msg:%s in mwrite queue, not processed, no write auth"
,
pMsg
->
rpcMsg
.
ahandle
,
taosMsg
[
pMsg
->
rpcMsg
.
msgType
]);
return
TSDB_CODE_NO_RIGHTS
;
return
TSDB_CODE_
MND_
NO_RIGHTS
;
}
return
(
*
tsMnodeProcessWriteMsgFp
[
pMsg
->
rpcMsg
.
msgType
])(
pMsg
);
...
...
src/plugins/http/src/httpJson.c
浏览文件 @
3bb9451c
...
...
@@ -443,9 +443,9 @@ void httpJsonPairStatus(JsonBuf* buf, int code) {
httpJsonPairIntVal
(
buf
,
"code"
,
4
,
code
);
if
(
code
>=
0
)
{
httpJsonItemToken
(
buf
);
if
(
code
==
TSDB_CODE_DB_NOT_SELECTED
)
{
if
(
code
==
TSDB_CODE_
MND_
DB_NOT_SELECTED
)
{
httpJsonPair
(
buf
,
"desc"
,
4
,
"failed to create database"
,
23
);
}
else
if
(
code
==
TSDB_CODE_INVALID_TABLE_ID
)
{
}
else
if
(
code
==
TSDB_CODE_
MND_
INVALID_TABLE_ID
)
{
httpJsonPair
(
buf
,
"desc"
,
4
,
"failed to create table"
,
22
);
}
else
httpJsonPair
(
buf
,
"desc"
,
4
,
(
char
*
)
tstrerror
(
code
),
(
int
)
strlen
(
tstrerror
(
code
)));
...
...
src/plugins/http/src/httpSql.c
浏览文件 @
3bb9451c
...
...
@@ -80,7 +80,7 @@ void httpProcessMultiSqlCallBack(void *param, TAOS_RES *result, int code) {
HttpSqlCmd
*
singleCmd
=
multiCmds
->
cmds
+
multiCmds
->
pos
;
char
*
sql
=
httpGetCmdsString
(
pContext
,
singleCmd
->
sql
);
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
{
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
{
httpWarn
(
"context:%p, fd:%d, ip:%s, user:%s, process pos:%d, code:%s:inprogress, sql:%s"
,
pContext
,
pContext
->
fd
,
pContext
->
ipstr
,
pContext
->
user
,
multiCmds
->
pos
,
tstrerror
(
code
),
sql
);
return
;
...
...
@@ -234,7 +234,7 @@ void httpProcessSingleSqlCallBack(void *param, TAOS_RES *result, int code) {
HttpEncodeMethod
*
encode
=
pContext
->
encodeMethod
;
if
(
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
{
if
(
code
==
TSDB_CODE_
TSC_
ACTION_IN_PROGRESS
)
{
httpError
(
"context:%p, fd:%d, ip:%s, user:%s, query error, taos:%p, code:%s:inprogress, sqlObj:%p"
,
pContext
,
pContext
->
fd
,
pContext
->
ipstr
,
pContext
->
user
,
pContext
->
session
->
taos
,
tstrerror
(
code
),
(
SSqlObj
*
)
result
);
return
;
...
...
@@ -242,7 +242,7 @@ void httpProcessSingleSqlCallBack(void *param, TAOS_RES *result, int code) {
if
(
code
<
0
)
{
SSqlObj
*
pObj
=
(
SSqlObj
*
)
result
;
if
(
code
==
TSDB_CODE_INVALID_SQL
)
{
if
(
code
==
TSDB_CODE_
TSC_
INVALID_SQL
)
{
httpError
(
"context:%p, fd:%d, ip:%s, user:%s, query error, taos:%p, code:%s, sqlObj:%p, error:%s"
,
pContext
,
pContext
->
fd
,
pContext
->
ipstr
,
pContext
->
user
,
pContext
->
session
->
taos
,
tstrerror
(
code
),
pObj
,
pObj
->
cmd
.
payload
);
httpSendTaosdInvalidSqlErrorResp
(
pContext
,
pObj
->
cmd
.
payload
);
...
...
src/plugins/http/src/tgJson.c
浏览文件 @
3bb9451c
...
...
@@ -103,7 +103,7 @@ bool tgCheckFinished(struct HttpContext *pContext, HttpSqlCmd *cmd, int code) {
if
(
cmd
->
cmdType
==
HTTP_CMD_TYPE_INSERT
)
{
if
(
cmd
->
cmdState
==
HTTP_CMD_STATE_NOT_RUN_YET
)
{
if
(
code
==
TSDB_CODE_
DB_NOT_SELECTED
||
code
==
TSDB_CODE
_INVALID_DB
)
{
if
(
code
==
TSDB_CODE_
MND_DB_NOT_SELECTED
||
code
==
TSDB_CODE_MND
_INVALID_DB
)
{
cmd
->
cmdState
=
HTTP_CMD_STATE_RUN_FINISHED
;
if
(
multiCmds
->
cmds
[
0
].
cmdState
==
HTTP_CMD_STATE_NOT_RUN_YET
)
{
multiCmds
->
pos
=
(
int16_t
)
-
1
;
...
...
@@ -111,7 +111,7 @@ bool tgCheckFinished(struct HttpContext *pContext, HttpSqlCmd *cmd, int code) {
pContext
->
ipstr
);
return
false
;
}
}
else
if
(
code
==
TSDB_CODE_INVALID_TABLE_ID
)
{
}
else
if
(
code
==
TSDB_CODE_
MND_
INVALID_TABLE_ID
)
{
cmd
->
cmdState
=
HTTP_CMD_STATE_RUN_FINISHED
;
if
(
multiCmds
->
cmds
[
multiCmds
->
pos
-
1
].
cmdState
==
HTTP_CMD_STATE_NOT_RUN_YET
)
{
multiCmds
->
pos
=
(
int16_t
)(
multiCmds
->
pos
-
2
);
...
...
src/plugins/monitor/src/monitorMain.c
浏览文件 @
3bb9451c
...
...
@@ -207,7 +207,7 @@ static void monitorInitDatabase() {
}
static
void
monitorInitDatabaseCb
(
void
*
param
,
TAOS_RES
*
result
,
int32_t
code
)
{
if
(
-
code
==
TSDB_CODE_
TABLE_ALREADY_EXIST
||
-
code
==
TSDB_CODE
_DB_ALREADY_EXIST
||
code
>=
0
)
{
if
(
-
code
==
TSDB_CODE_
MND_TABLE_ALREADY_EXIST
||
-
code
==
TSDB_CODE_MND
_DB_ALREADY_EXIST
||
code
>=
0
)
{
monitorTrace
(
"monitor:%p, sql success, reason:%d, %s"
,
tsMonitorConn
.
conn
,
tstrerror
(
code
),
tsMonitorConn
.
sql
);
if
(
tsMonitorConn
.
cmdIndex
==
MONITOR_CMD_CREATE_TB_LOG
)
{
monitorPrint
(
"dnode:%s is started"
,
tsLocalEp
);
...
...
src/query/src/qExecutor.c
浏览文件 @
3bb9451c
...
...
@@ -789,11 +789,10 @@ static char *getDataBlock(SQueryRuntimeEnv *pRuntimeEnv, SArithmeticSupport *sas
sas
->
data
=
calloc
(
pQuery
->
numOfCols
,
POINTER_BYTES
);
// here the pQuery->colList and sas->colList are identical
int32_t
numOfCols
=
taosArrayGetSize
(
pDataBlock
);
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfCols
;
++
i
)
{
SColumnInfo
*
pColMsg
=
&
pQuery
->
colList
[
i
];
int32_t
numOfCols
=
taosArrayGetSize
(
pDataBlock
);
dataBlock
=
NULL
;
for
(
int32_t
k
=
0
;
k
<
numOfCols
;
++
k
)
{
//todo refactor
SColumnInfoData
*
p
=
taosArrayGet
(
pDataBlock
,
k
);
...
...
@@ -1437,7 +1436,7 @@ _clean:
tfree
(
pRuntimeEnv
->
resultInfo
);
tfree
(
pRuntimeEnv
->
pCtx
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
QRY
_OUT_OF_MEMORY
;
}
static
void
teardownQueryRuntimeEnv
(
SQueryRuntimeEnv
*
pRuntimeEnv
)
{
...
...
@@ -1478,7 +1477,7 @@ static void teardownQueryRuntimeEnv(SQueryRuntimeEnv *pRuntimeEnv) {
}
static
bool
isQueryKilled
(
SQInfo
*
pQInfo
)
{
return
(
pQInfo
->
code
==
TSDB_CODE_QUERY_CANCELLED
);
return
(
pQInfo
->
code
==
TSDB_CODE_
TSC_
QUERY_CANCELLED
);
#if 0
/*
* check if the queried meter is going to be deleted.
...
...
@@ -1494,7 +1493,7 @@ static bool isQueryKilled(SQInfo *pQInfo) {
#endif
}
static
void
setQueryKilled
(
SQInfo
*
pQInfo
)
{
pQInfo
->
code
=
TSDB_CODE_QUERY_CANCELLED
;
}
static
void
setQueryKilled
(
SQInfo
*
pQInfo
)
{
pQInfo
->
code
=
TSDB_CODE_
TSC_
QUERY_CANCELLED
;
}
static
bool
isFixedOutputQuery
(
SQuery
*
pQuery
)
{
if
(
pQuery
->
intervalTime
!=
0
)
{
...
...
@@ -1590,8 +1589,11 @@ static bool needReverseScan(SQuery *pQuery) {
static
bool
onlyQueryTags
(
SQuery
*
pQuery
)
{
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
int32_t
functionId
=
pQuery
->
pSelectExpr
[
i
].
base
.
functionId
;
if
(
functionId
!=
TSDB_FUNC_TAGPRJ
&&
functionId
!=
TSDB_FUNC_TID_TAG
)
{
SExprInfo
*
pExprInfo
=
&
pQuery
->
pSelectExpr
[
i
];
int32_t
functionId
=
pExprInfo
->
base
.
functionId
;
if
(
functionId
!=
TSDB_FUNC_TAGPRJ
&&
functionId
!=
TSDB_FUNC_TID_TAG
&&
(
!
(
functionId
==
TSDB_FUNC_COUNT
&&
pExprInfo
->
base
.
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
)))
{
return
false
;
}
}
...
...
@@ -2099,7 +2101,8 @@ static void ensureOutputBuffer(SQueryRuntimeEnv* pRuntimeEnv, SDataBlockInfo* pB
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutput
;
++
i
)
{
int32_t
bytes
=
pQuery
->
pSelectExpr
[
i
].
bytes
;
assert
(
bytes
>
0
&&
newSize
>
0
);
char
*
tmp
=
realloc
(
pQuery
->
sdata
[
i
],
bytes
*
newSize
+
sizeof
(
tFilePage
));
if
(
tmp
==
NULL
)
{
// todo handle the oom
assert
(
0
);
...
...
@@ -4885,6 +4888,10 @@ static int32_t getColumnIndexInSource(SQueryTableMsg *pQueryMsg, SSqlFuncMsg *pE
int32_t
j
=
0
;
if
(
TSDB_COL_IS_TAG
(
pExprMsg
->
colInfo
.
flag
))
{
if
(
pExprMsg
->
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
)
{
return
-
1
;
}
while
(
j
<
pQueryMsg
->
numOfTags
)
{
if
(
pExprMsg
->
colInfo
.
colId
==
pTagCols
[
j
].
colId
)
{
return
j
;
...
...
@@ -4942,8 +4949,11 @@ static bool validateQuerySourceCols(SQueryTableMsg *pQueryMsg, SSqlFuncMsg** pEx
return
false
;
}
else
if
(
numOfTotal
==
0
)
{
for
(
int32_t
i
=
0
;
i
<
pQueryMsg
->
numOfOutput
;
++
i
)
{
if
((
pExprMsg
[
i
]
->
functionId
==
TSDB_FUNC_TAGPRJ
)
||
(
pExprMsg
[
i
]
->
functionId
==
TSDB_FUNC_TID_TAG
&&
pExprMsg
[
i
]
->
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
))
{
SSqlFuncMsg
*
pFuncMsg
=
pExprMsg
[
i
];
if
((
pFuncMsg
->
functionId
==
TSDB_FUNC_TAGPRJ
)
||
(
pFuncMsg
->
functionId
==
TSDB_FUNC_TID_TAG
&&
pFuncMsg
->
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
)
||
(
pFuncMsg
->
functionId
==
TSDB_FUNC_COUNT
&&
pFuncMsg
->
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
))
{
continue
;
}
...
...
@@ -5009,7 +5019,7 @@ static int32_t convertQueryMsg(SQueryTableMsg *pQueryMsg, SArray **pTableIdList,
// query msg safety check
if
(
!
validateQueryMsg
(
pQueryMsg
))
{
return
TSDB_CODE_
INVALID_QUERY
_MSG
;
return
TSDB_CODE_
QRY_INVALID
_MSG
;
}
char
*
pMsg
=
(
char
*
)(
pQueryMsg
->
colList
)
+
sizeof
(
SColumnInfo
)
*
pQueryMsg
->
numOfCols
;
...
...
@@ -5079,14 +5089,14 @@ static int32_t convertQueryMsg(SQueryTableMsg *pQueryMsg, SArray **pTableIdList,
}
}
i
f
(
pExprMsg
->
functionId
==
TSDB_FUNC_TAG
||
pExprMsg
->
functionId
==
TSDB_FUNC_TAGPRJ
||
pExprMsg
->
functionId
==
TSDB_FUNC_TAG_DUMMY
)
{
i
nt16_t
functionId
=
pExprMsg
->
functionId
;
if
(
functionId
==
TSDB_FUNC_TAG
||
functionId
==
TSDB_FUNC_TAGPRJ
||
functionId
==
TSDB_FUNC_TAG_DUMMY
)
{
if
(
pExprMsg
->
colInfo
.
flag
!=
TSDB_COL_TAG
)
{
// ignore the column index check for arithmetic expression.
return
TSDB_CODE_
INVALID_QUERY
_MSG
;
return
TSDB_CODE_
QRY_INVALID
_MSG
;
}
}
else
{
// if (!validateExprColumnInfo(pQueryMsg, pExprMsg)) {
// return TSDB_CODE_
INVALID_QUERY
_MSG;
// return TSDB_CODE_
QRY_INVALID
_MSG;
// }
}
...
...
@@ -5096,7 +5106,7 @@ static int32_t convertQueryMsg(SQueryTableMsg *pQueryMsg, SArray **pTableIdList,
if
(
!
validateQuerySourceCols
(
pQueryMsg
,
*
pExpr
))
{
tfree
(
*
pExpr
);
return
TSDB_CODE_
INVALID_QUERY
_MSG
;
return
TSDB_CODE_
QRY_INVALID
_MSG
;
}
pMsg
=
createTableIdList
(
pQueryMsg
,
pMsg
,
pTableIdList
);
...
...
@@ -5185,21 +5195,21 @@ static int32_t buildAirthmeticExprFromMsg(SExprInfo *pArithExprInfo, SQueryTable
if
(
pExprNode
==
NULL
)
{
qError
(
"qmsg:%p failed to create arithmetic expression string from:%s"
,
pQueryMsg
,
pArithExprInfo
->
base
.
arg
[
0
].
argValue
.
pz
);
return
TSDB_CODE_APP_ERROR
;
return
TSDB_CODE_
QRY_
APP_ERROR
;
}
pArithExprInfo
->
pExpr
=
pExprNode
;
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
create
Sql
FunctionExprFromMsg
(
SQueryTableMsg
*
pQueryMsg
,
SExprInfo
**
pExprInfo
,
SSqlFuncMsg
**
pExprMsg
,
static
int32_t
create
Q
FunctionExprFromMsg
(
SQueryTableMsg
*
pQueryMsg
,
SExprInfo
**
pExprInfo
,
SSqlFuncMsg
**
pExprMsg
,
SColumnInfo
*
pTagCols
)
{
*
pExprInfo
=
NULL
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
SExprInfo
*
pExprs
=
(
SExprInfo
*
)
calloc
(
1
,
sizeof
(
SExprInfo
)
*
pQueryMsg
->
numOfOutput
);
SExprInfo
*
pExprs
=
(
SExprInfo
*
)
calloc
(
pQueryMsg
->
numOfOutput
,
sizeof
(
SExprInfo
)
);
if
(
pExprs
==
NULL
)
{
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
QRY
_OUT_OF_MEMORY
;
}
bool
isSuperTable
=
QUERY_IS_STABLE_QUERY
(
pQueryMsg
->
queryType
);
...
...
@@ -5223,23 +5233,29 @@ static int32_t createSqlFunctionExprFromMsg(SQueryTableMsg *pQueryMsg, SExprInfo
type
=
TSDB_DATA_TYPE_DOUBLE
;
bytes
=
tDataTypeDesc
[
type
].
nSize
;
}
else
if
(
pExprs
[
i
].
base
.
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
)
{
// parse the normal column
}
else
if
(
pExprs
[
i
].
base
.
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
&&
pExprs
[
i
].
base
.
functionId
==
TSDB_FUNC_TAGPRJ
)
{
// parse the normal column
type
=
TSDB_DATA_TYPE_BINARY
;
bytes
=
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
;
}
else
{
}
else
{
int32_t
j
=
getColumnIndexInSource
(
pQueryMsg
,
&
pExprs
[
i
].
base
,
pTagCols
);
assert
(
j
<
pQueryMsg
->
numOfCols
||
j
<
pQueryMsg
->
numOfTags
);
assert
(
j
<
pQueryMsg
->
numOfCols
||
j
<
pQueryMsg
->
numOfTags
||
j
==
TSDB_TBNAME_COLUMN_INDEX
);
if
(
pExprs
[
i
].
base
.
colInfo
.
colId
!=
TSDB_TBNAME_COLUMN_INDEX
)
{
SColumnInfo
*
pCol
=
(
TSDB_COL_IS_TAG
(
pExprs
[
i
].
base
.
colInfo
.
flag
))
?
&
pTagCols
[
j
]
:&
pQueryMsg
->
colList
[
j
];
type
=
pCol
->
type
;
bytes
=
pCol
->
bytes
;
}
else
{
type
=
TSDB_DATA_TYPE_BINARY
;
bytes
=
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
;
}
SColumnInfo
*
pCol
=
(
TSDB_COL_IS_TAG
(
pExprs
[
i
].
base
.
colInfo
.
flag
))
?
&
pTagCols
[
j
]
:&
pQueryMsg
->
colList
[
j
];
type
=
pCol
->
type
;
bytes
=
pCol
->
bytes
;
}
int32_t
param
=
pExprs
[
i
].
base
.
arg
[
0
].
argValue
.
i64
;
if
(
getResultDataInfo
(
type
,
bytes
,
pExprs
[
i
].
base
.
functionId
,
param
,
&
pExprs
[
i
].
type
,
&
pExprs
[
i
].
bytes
,
&
pExprs
[
i
].
interBytes
,
0
,
isSuperTable
)
!=
TSDB_CODE_SUCCESS
)
{
tfree
(
pExprs
);
return
TSDB_CODE_
INVALID_QUERY
_MSG
;
return
TSDB_CODE_
QRY_INVALID
_MSG
;
}
if
(
pExprs
[
i
].
base
.
functionId
==
TSDB_FUNC_TAG_DUMMY
||
pExprs
[
i
].
base
.
functionId
==
TSDB_FUNC_TS_DUMMY
)
{
...
...
@@ -5280,7 +5296,7 @@ static SSqlGroupbyExpr *createGroupbyExprFromMsg(SQueryTableMsg *pQueryMsg, SCol
// using group by tag columns
SSqlGroupbyExpr
*
pGroupbyExpr
=
(
SSqlGroupbyExpr
*
)
calloc
(
1
,
sizeof
(
SSqlGroupbyExpr
));
if
(
pGroupbyExpr
==
NULL
)
{
*
code
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
*
code
=
TSDB_CODE_
QRY
_OUT_OF_MEMORY
;
return
NULL
;
}
...
...
@@ -5328,7 +5344,7 @@ static int32_t createFilterInfo(void *pQInfo, SQuery *pQuery) {
if
(
lower
==
TSDB_RELATION_INVALID
&&
upper
==
TSDB_RELATION_INVALID
)
{
qError
(
"QInfo:%p invalid filter info"
,
pQInfo
);
return
TSDB_CODE_
INVALID_QUERY
_MSG
;
return
TSDB_CODE_
QRY_INVALID
_MSG
;
}
int16_t
type
=
pQuery
->
colList
[
i
].
type
;
...
...
@@ -5340,7 +5356,7 @@ static int32_t createFilterInfo(void *pQInfo, SQuery *pQuery) {
if
(
rangeFilterArray
==
NULL
&&
filterArray
==
NULL
)
{
qError
(
"QInfo:%p failed to get filter function, invalid data type:%d"
,
pQInfo
,
type
);
return
TSDB_CODE_
INVALID_QUERY
_MSG
;
return
TSDB_CODE_
QRY_INVALID
_MSG
;
}
if
((
lower
==
TSDB_RELATION_GREATER_EQUAL
||
lower
==
TSDB_RELATION_GREATER
)
&&
...
...
@@ -5364,7 +5380,7 @@ static int32_t createFilterInfo(void *pQInfo, SQuery *pQuery) {
if
(
upper
!=
TSDB_RELATION_INVALID
)
{
qError
(
"pQInfo:%p failed to get filter function, invalid filter condition"
,
pQInfo
,
type
);
return
TSDB_CODE_
INVALID_QUERY
_MSG
;
return
TSDB_CODE_
QRY_INVALID
_MSG
;
}
}
else
{
pSingleColFilter
->
fp
=
filterArray
[
upper
];
...
...
@@ -5813,18 +5829,18 @@ int32_t qCreateQueryInfo(void *tsdb, int32_t vgId, SQueryTableMsg *pQueryMsg, qi
if
(
pQueryMsg
->
numOfTables
<=
0
)
{
qError
(
"Invalid number of tables to query, numOfTables:%d"
,
pQueryMsg
->
numOfTables
);
code
=
TSDB_CODE_
INVALID_QUERY
_MSG
;
code
=
TSDB_CODE_
QRY_INVALID
_MSG
;
goto
_over
;
}
if
(
pTableIdList
==
NULL
||
taosArrayGetSize
(
pTableIdList
)
==
0
)
{
qError
(
"qmsg:%p, SQueryTableMsg wrong format"
,
pQueryMsg
);
code
=
TSDB_CODE_
INVALID_QUERY
_MSG
;
code
=
TSDB_CODE_
QRY_INVALID
_MSG
;
goto
_over
;
}
SExprInfo
*
pExprs
=
NULL
;
if
((
code
=
create
Sql
FunctionExprFromMsg
(
pQueryMsg
,
&
pExprs
,
pExprMsg
,
pTagColumnInfo
))
!=
TSDB_CODE_SUCCESS
)
{
if
((
code
=
create
Q
FunctionExprFromMsg
(
pQueryMsg
,
&
pExprs
,
pExprMsg
,
pTagColumnInfo
))
!=
TSDB_CODE_SUCCESS
)
{
goto
_over
;
}
...
...
@@ -5882,7 +5898,7 @@ int32_t qCreateQueryInfo(void *tsdb, int32_t vgId, SQueryTableMsg *pQueryMsg, qi
(
*
pQInfo
)
=
createQInfoImpl
(
pQueryMsg
,
pTableIdList
,
pGroupbyExpr
,
pExprs
,
&
groupInfo
,
pTagColumnInfo
);
if
((
*
pQInfo
)
==
NULL
)
{
code
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
code
=
TSDB_CODE_
QRY
_OUT_OF_MEMORY
;
goto
_over
;
}
...
...
@@ -5926,6 +5942,7 @@ void qTableQuery(qinfo_t qinfo) {
qTrace
(
"QInfo:%p query task is launched"
,
pQInfo
);
if
(
onlyQueryTags
(
pQInfo
->
runtimeEnv
.
pQuery
))
{
assert
(
pQInfo
->
runtimeEnv
.
pQueryHandle
==
NULL
);
buildTagQueryResult
(
pQInfo
);
// todo support the limit/offset
}
else
if
(
pQInfo
->
runtimeEnv
.
stableQuery
)
{
stableQueryImpl
(
pQInfo
);
...
...
@@ -5941,7 +5958,7 @@ int32_t qRetrieveQueryResultInfo(qinfo_t qinfo) {
SQInfo
*
pQInfo
=
(
SQInfo
*
)
qinfo
;
if
(
pQInfo
==
NULL
||
!
isValidQInfo
(
pQInfo
))
{
return
TSDB_CODE_INVALID_QHANDLE
;
return
TSDB_CODE_
QRY_
INVALID_QHANDLE
;
}
SQuery
*
pQuery
=
pQInfo
->
runtimeEnv
.
pQuery
;
...
...
@@ -5980,7 +5997,7 @@ int32_t qDumpRetrieveResult(qinfo_t qinfo, SRetrieveTableRsp **pRsp, int32_t *co
SQInfo
*
pQInfo
=
(
SQInfo
*
)
qinfo
;
if
(
pQInfo
==
NULL
||
!
isValidQInfo
(
pQInfo
))
{
return
TSDB_CODE_INVALID_QHANDLE
;
return
TSDB_CODE_
QRY_
INVALID_QHANDLE
;
}
SQueryRuntimeEnv
*
pRuntimeEnv
=
&
pQInfo
->
runtimeEnv
;
...
...
@@ -6016,36 +6033,35 @@ int32_t qDumpRetrieveResult(qinfo_t qinfo, SRetrieveTableRsp **pRsp, int32_t *co
}
return
code
;
// if (numOfRows == 0 && (pRetrieve->qhandle == (uint64_t)pObj->qhandle) && (code != TSDB_CODE_ACTION_IN_PROGRESS)) {
// qTrace("QInfo:%p %s free qhandle code:%d", pObj->qhandle, __FUNCTION__, code);
// vnodeDecRefCount(pObj->qhandle);
// pObj->qhandle = NULL;
// }
}
static
void
buildTagQueryResult
(
SQInfo
*
pQInfo
)
{
SQueryRuntimeEnv
*
pRuntimeEnv
=
&
pQInfo
->
runtimeEnv
;
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
size_t
num
=
taosArrayGetSize
(
pQInfo
->
groupInfo
.
pGroupList
);
assert
(
num
==
0
||
num
==
1
);
if
(
num
==
0
)
{
size_t
numOfGroup
=
taosArrayGetSize
(
pQInfo
->
groupInfo
.
pGroupList
);
assert
(
numOfGroup
==
0
||
numOfGroup
==
1
);
if
(
numOfGroup
==
0
)
{
return
;
}
SArray
*
pa
=
taosArrayGetP
(
pQInfo
->
groupInfo
.
pGroupList
,
0
);
num
=
taosArrayGetSize
(
pa
);
size_t
num
=
taosArrayGetSize
(
pa
);
assert
(
num
==
pQInfo
->
groupInfo
.
numOfTables
);
int32_t
count
=
0
;
int32_t
functionId
=
pQuery
->
pSelectExpr
[
0
].
base
.
functionId
;
if
(
functionId
==
TSDB_FUNC_TID_TAG
)
{
// return the tags & table Id
assert
(
pQuery
->
numOfOutput
==
1
);
SExprInfo
*
pExprInfo
=
&
pQuery
->
pSelectExpr
[
0
];
int32_t
rsize
=
pExprInfo
->
bytes
;
for
(
int32_t
i
=
0
;
i
<
num
;
++
i
)
{
count
=
0
;
while
(
pQInfo
->
tableIndex
<
num
&&
count
<
pQuery
->
rec
.
capacity
)
{
int32_t
i
=
pQInfo
->
tableIndex
++
;
SGroupItem
*
item
=
taosArrayGet
(
pa
,
i
);
char
*
output
=
pQuery
->
sdata
[
0
]
->
data
+
i
*
rsize
;
...
...
@@ -6085,30 +6101,38 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
}
}
}
count
+=
1
;
}
pQInfo
->
tableIndex
=
pQInfo
->
groupInfo
.
numOfTables
;
qTrace
(
"QInfo:%p create (tableId, tag) info completed, rows:%d"
,
pQInfo
,
num
);
qTrace
(
"QInfo:%p create (tableId, tag) info completed, rows:%d"
,
pQInfo
,
count
);
}
else
if
(
functionId
==
TSDB_FUNC_COUNT
)
{
// handle the "count(tbname)" query
*
(
int64_t
*
)
pQuery
->
sdata
[
0
]
->
data
=
num
;
count
=
1
;
pQInfo
->
tableIndex
=
num
;
//set query completed
qTrace
(
"QInfo:%p create count(tbname) query, res:%d rows:1"
,
pQInfo
,
count
);
}
else
{
// return only the tags|table name etc.
for
(
int32_t
i
=
0
;
i
<
num
;
++
i
)
{
count
=
0
;
while
(
pQInfo
->
tableIndex
<
num
&&
count
<
pQuery
->
rec
.
capacity
)
{
int32_t
i
=
pQInfo
->
tableIndex
++
;
SExprInfo
*
pExprInfo
=
pQuery
->
pSelectExpr
;
SGroupItem
*
item
=
taosArrayGet
(
pa
,
i
);
for
(
int32_t
j
=
0
;
j
<
pQuery
->
numOfOutput
;
++
j
)
{
// todo check the return value, refactor codes
if
(
pExprInfo
[
j
].
base
.
colInfo
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
)
{
char
*
data
=
tsdbGetTableName
(
pQInfo
->
tsdb
,
&
item
->
id
);
char
*
dst
=
pQuery
->
sdata
[
j
]
->
data
+
i
*
(
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
);
char
*
dst
=
pQuery
->
sdata
[
j
]
->
data
+
count
*
(
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
);
memcpy
(
dst
,
data
,
varDataTLen
(
data
));
}
else
{
// todo refactor
int16_t
type
=
pExprInfo
[
j
].
type
;
int16_t
bytes
=
pExprInfo
[
j
].
bytes
;
char
*
data
=
tsdbGetTableTagVal
(
pQInfo
->
tsdb
,
&
item
->
id
,
pExprInfo
[
j
].
base
.
colInfo
.
colId
,
type
,
bytes
);
char
*
dst
=
pQuery
->
sdata
[
j
]
->
data
+
count
*
pExprInfo
[
j
].
bytes
;
char
*
dst
=
pQuery
->
sdata
[
j
]
->
data
+
i
*
pExprInfo
[
j
].
bytes
;
if
(
type
==
TSDB_DATA_TYPE_BINARY
||
type
==
TSDB_DATA_TYPE_NCHAR
)
{
if
(
data
==
NULL
)
{
setVardataNull
(
dst
,
type
);
...
...
@@ -6124,13 +6148,13 @@ static void buildTagQueryResult(SQInfo* pQInfo) {
}
}
}
count
+=
1
;
}
pQInfo
->
tableIndex
=
pQInfo
->
groupInfo
.
numOfTables
;
qTrace
(
"QInfo:%p create tag values results completed, rows:%d"
,
pQInfo
,
num
);
qTrace
(
"QInfo:%p create tag values results completed, rows:%d"
,
pQInfo
,
count
);
}
pQuery
->
rec
.
rows
=
num
;
pQuery
->
rec
.
rows
=
count
;
setQueryStatus
(
pQuery
,
QUERY_COMPLETED
);
}
src/query/src/qast.c
浏览文件 @
3bb9451c
...
...
@@ -1035,7 +1035,7 @@ void exprTreeToBinary(SBufferWriter* bw, tExprNode* expr) {
static
void
*
exception_calloc
(
size_t
nmemb
,
size_t
size
)
{
void
*
p
=
calloc
(
nmemb
,
size
);
if
(
p
==
NULL
)
{
THROW
(
TSDB_CODE_
SERV
_OUT_OF_MEMORY
);
THROW
(
TSDB_CODE_
QRY
_OUT_OF_MEMORY
);
}
return
p
;
}
...
...
@@ -1043,7 +1043,7 @@ static void* exception_calloc(size_t nmemb, size_t size) {
static
void
*
exception_malloc
(
size_t
size
)
{
void
*
p
=
malloc
(
size
);
if
(
p
==
NULL
)
{
THROW
(
TSDB_CODE_
SERV
_OUT_OF_MEMORY
);
THROW
(
TSDB_CODE_
QRY
_OUT_OF_MEMORY
);
}
return
p
;
}
...
...
@@ -1051,7 +1051,7 @@ static void* exception_malloc(size_t size) {
static
UNUSED_FUNC
char
*
exception_strdup
(
const
char
*
str
)
{
char
*
p
=
strdup
(
str
);
if
(
p
==
NULL
)
{
THROW
(
TSDB_CODE_
SERV
_OUT_OF_MEMORY
);
THROW
(
TSDB_CODE_
QRY
_OUT_OF_MEMORY
);
}
return
p
;
}
...
...
src/query/src/qresultBuf.c
浏览文件 @
3bb9451c
...
...
@@ -28,19 +28,19 @@ int32_t createDiskbasedResultBuffer(SDiskbasedResultBuf** pResultBuf, int32_t si
if
(
!
FD_VALID
(
pResBuf
->
fd
))
{
qError
(
"failed to create tmp file: %s on disk. %s"
,
pResBuf
->
path
,
strerror
(
errno
));
return
TSDB_CODE_
CLI
_NO_DISKSPACE
;
return
TSDB_CODE_
QRY
_NO_DISKSPACE
;
}
int32_t
ret
=
ftruncate
(
pResBuf
->
fd
,
pResBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_PAGE_SIZE
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
qError
(
"failed to create tmp file: %s on disk. %s"
,
pResBuf
->
path
,
strerror
(
errno
));
return
TSDB_CODE_
CLI
_NO_DISKSPACE
;
return
TSDB_CODE_
QRY
_NO_DISKSPACE
;
}
pResBuf
->
pBuf
=
mmap
(
NULL
,
pResBuf
->
totalBufSize
,
PROT_READ
|
PROT_WRITE
,
MAP_SHARED
,
pResBuf
->
fd
,
0
);
if
(
pResBuf
->
pBuf
==
MAP_FAILED
)
{
qError
(
"QInfo:%p failed to map temp file: %s. %s"
,
handle
,
pResBuf
->
path
,
strerror
(
errno
));
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
// todo change error code
return
TSDB_CODE_
QRY
_OUT_OF_MEMORY
;
// todo change error code
}
qTrace
(
"QInfo:%p create tmp file for output result, %s, %"
PRId64
"bytes"
,
handle
,
pResBuf
->
path
,
...
...
@@ -68,7 +68,7 @@ static int32_t extendDiskFileSize(SDiskbasedResultBuf* pResultBuf, int32_t numOf
if
(
ret
!=
0
)
{
// dError("QInfo:%p failed to create intermediate result output file:%s. %s", pQInfo, pSupporter->extBufFile,
// strerror(errno));
return
-
TSDB_CODE_
SERV
_NO_DISKSPACE
;
return
-
TSDB_CODE_
QRY
_NO_DISKSPACE
;
}
pResultBuf
->
totalBufSize
=
pResultBuf
->
numOfPages
*
DEFAULT_INTERN_BUF_PAGE_SIZE
;
...
...
@@ -76,7 +76,7 @@ static int32_t extendDiskFileSize(SDiskbasedResultBuf* pResultBuf, int32_t numOf
if
(
pResultBuf
->
pBuf
==
MAP_FAILED
)
{
// dError("QInfo:%p failed to map temp file: %s. %s", pQInfo, pSupporter->extBufFile, strerror(errno));
return
-
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
-
TSDB_CODE_
QRY
_OUT_OF_MEMORY
;
}
return
TSDB_CODE_SUCCESS
;
...
...
src/query/src/qsyntaxtreefunction.c
浏览文件 @
3bb9451c
...
...
@@ -311,7 +311,7 @@ void calc_fn_i32_i32_sub(void *left, void *right, int32_t numLeft, int32_t numRi
if
(
numLeft
==
numRight
)
{
for
(;
i
>=
0
&&
i
<
numRight
;
i
+=
step
,
pOutput
+=
1
)
{
if
(
isNull
((
char
*
)
&
(
pLeft
[
i
]),
TSDB_DATA_TYPE_INT
)
||
isNull
((
char
*
)
&
(
pRight
[
i
]),
TSDB_DATA_TYPE_INT
))
{
setNull
((
char
*
)
&
(
pOutput
[
i
]
),
TSDB_DATA_TYPE_DOUBLE
,
tDataTypeDesc
[
TSDB_DATA_TYPE_DOUBLE
].
nSize
);
setNull
((
char
*
)
(
pOutput
),
TSDB_DATA_TYPE_DOUBLE
,
tDataTypeDesc
[
TSDB_DATA_TYPE_DOUBLE
].
nSize
);
continue
;
}
*
pOutput
=
(
double
)
pLeft
[
i
]
-
pRight
[
i
];
...
...
src/query/src/tlosertree.c
浏览文件 @
3bb9451c
...
...
@@ -46,7 +46,7 @@ uint32_t tLoserTreeCreate(SLoserTreeInfo** pTree, int32_t numOfEntries, void* pa
*
pTree
=
(
SLoserTreeInfo
*
)
calloc
(
1
,
sizeof
(
SLoserTreeInfo
)
+
sizeof
(
SLoserTreeNode
)
*
totalEntries
);
if
((
*
pTree
)
==
NULL
)
{
qError
(
"allocate memory for loser-tree failed. reason:%s"
,
strerror
(
errno
));
return
TSDB_CODE_
CLI
_OUT_OF_MEMORY
;
return
TSDB_CODE_
QRY
_OUT_OF_MEMORY
;
}
(
*
pTree
)
->
pNode
=
(
SLoserTreeNode
*
)(((
char
*
)(
*
pTree
))
+
sizeof
(
SLoserTreeInfo
));
...
...
src/query/tests/unitTest.cpp
浏览文件 @
3bb9451c
...
...
@@ -99,47 +99,47 @@ TEST(testCase, db_table_name) {
EXPECT_EQ
(
testValidateName
(
t4
),
TSDB_CODE_SUCCESS
);
char
t5
[]
=
"table.'def'"
;
EXPECT_EQ
(
testValidateName
(
t5
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t5
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t6
[]
=
"'table'.'def'"
;
EXPECT_EQ
(
testValidateName
(
t6
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t6
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t7
[]
=
"'_ab1234'.'def'"
;
EXPECT_EQ
(
testValidateName
(
t7
),
TSDB_CODE_SUCCESS
);
printf
(
"%s
\n
"
,
t7
);
char
t8
[]
=
"'_ab&^%1234'.'def'"
;
EXPECT_EQ
(
testValidateName
(
t8
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t8
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t9
[]
=
"'_123'.'gtest中文'"
;
EXPECT_EQ
(
testValidateName
(
t9
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t9
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t10
[]
=
"abc.'gtest中文'"
;
EXPECT_EQ
(
testValidateName
(
t10
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t10
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t10_1
[]
=
"abc.'中文gtest'"
;
EXPECT_EQ
(
testValidateName
(
t10_1
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t10_1
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t11
[]
=
"'192.168.0.1'.abc"
;
EXPECT_EQ
(
testValidateName
(
t11
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t11
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t12
[]
=
"192.168.0.1.abc"
;
EXPECT_EQ
(
testValidateName
(
t12
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t12
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t13
[]
=
"abc."
;
EXPECT_EQ
(
testValidateName
(
t13
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t13
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t14
[]
=
".abc"
;
EXPECT_EQ
(
testValidateName
(
t14
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t14
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t15
[]
=
".'abc'"
;
EXPECT_EQ
(
testValidateName
(
t15
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t15
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t16
[]
=
".abc'"
;
EXPECT_EQ
(
testValidateName
(
t16
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t16
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t17
[]
=
"123a.
\"
abc
\"
"
;
EXPECT_EQ
(
testValidateName
(
t17
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t17
),
TSDB_CODE_
TSC_
INVALID_SQL
);
printf
(
"%s
\n
"
,
t17
);
char
t18
[]
=
"a.
\"
abc
\"
"
;
...
...
@@ -147,13 +147,13 @@ TEST(testCase, db_table_name) {
printf
(
"%s
\n
"
,
t18
);
char
t19
[]
=
"'_ab1234'.'def'.'ab123'"
;
EXPECT_EQ
(
testValidateName
(
t19
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t19
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t20
[]
=
"'_ab1234*&^'"
;
EXPECT_EQ
(
testValidateName
(
t20
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t20
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t21
[]
=
"'1234_abc'"
;
EXPECT_EQ
(
testValidateName
(
t21
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t21
),
TSDB_CODE_
TSC_
INVALID_SQL
);
// =======Containing capital letters=================
...
...
@@ -167,10 +167,10 @@ TEST(testCase, db_table_name) {
EXPECT_EQ
(
testValidateName
(
t32
),
TSDB_CODE_SUCCESS
);
char
t33
[]
=
"'ABC.def"
;
EXPECT_EQ
(
testValidateName
(
t33
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t33
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t33_0
[]
=
"abc.DEF'"
;
EXPECT_EQ
(
testValidateName
(
t33_0
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t33_0
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t34
[]
=
"'ABC.def'"
;
//int32_t tmp0 = testValidateName(t34);
...
...
@@ -193,38 +193,38 @@ TEST(testCase, db_table_name) {
// do not use key words
char
t39
[]
=
"table.'DEF'"
;
EXPECT_EQ
(
testValidateName
(
t39
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t39
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t40
[]
=
"'table'.'DEF'"
;
EXPECT_EQ
(
testValidateName
(
t40
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t40
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t41
[]
=
"'_abXYZ1234'.'deFF'"
;
EXPECT_EQ
(
testValidateName
(
t41
),
TSDB_CODE_SUCCESS
);
char
t42
[]
=
"'_abDEF&^%1234'.'DIef'"
;
EXPECT_EQ
(
testValidateName
(
t42
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t42
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t43
[]
=
"'_123'.'Gtest中文'"
;
EXPECT_EQ
(
testValidateName
(
t43
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t43
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t44
[]
=
"'aABC'.'Gtest中文'"
;
EXPECT_EQ
(
testValidateName
(
t44
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t44
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t45
[]
=
"'ABC'."
;
EXPECT_EQ
(
testValidateName
(
t45
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t45
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t46
[]
=
".'ABC'"
;
EXPECT_EQ
(
testValidateName
(
t46
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t46
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t47
[]
=
"a.
\"
aTWc
\"
"
;
EXPECT_EQ
(
testValidateName
(
t47
),
TSDB_CODE_SUCCESS
);
// ================has space =================
char
t60
[]
=
" ABC "
;
EXPECT_EQ
(
testValidateName
(
t60
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t60
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t60_1
[]
=
" ABC "
;
EXPECT_EQ
(
testValidateName
(
t60_1
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t60_1
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t61
[]
=
"' ABC '"
;
EXPECT_EQ
(
testValidateName
(
t61
),
TSDB_CODE_SUCCESS
);
...
...
@@ -233,96 +233,96 @@ TEST(testCase, db_table_name) {
EXPECT_EQ
(
testValidateName
(
t61_1
),
TSDB_CODE_SUCCESS
);
char
t62
[]
=
" ABC . def "
;
EXPECT_EQ
(
testValidateName
(
t62
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t62
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t63
[]
=
"' ABC . def "
;
EXPECT_EQ
(
testValidateName
(
t63
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t63
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t63_0
[]
=
" abc . DEF ' "
;
EXPECT_EQ
(
testValidateName
(
t63_0
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t63_0
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t64
[]
=
" ' ABC . def ' "
;
//int32_t tmp1 = testValidateName(t64);
EXPECT_EQ
(
testValidateName
(
t64
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t64
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t65
[]
=
" ' ABC '. def "
;
EXPECT_EQ
(
testValidateName
(
t65
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t65
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t66
[]
=
"' ABC '.' DEF '"
;
EXPECT_EQ
(
testValidateName
(
t66
),
TSDB_CODE_SUCCESS
);
char
t67
[]
=
"abc . ' DEF '"
;
EXPECT_EQ
(
testValidateName
(
t67
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t67
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t68
[]
=
"' abc '.' DEF '"
;
EXPECT_EQ
(
testValidateName
(
t68
),
TSDB_CODE_SUCCESS
);
// do not use key words
char
t69
[]
=
"table.'DEF'"
;
EXPECT_EQ
(
testValidateName
(
t69
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t69
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t70
[]
=
"'table'.'DEF'"
;
EXPECT_EQ
(
testValidateName
(
t70
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t70
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t71
[]
=
"'_abXYZ1234 '.' deFF '"
;
EXPECT_EQ
(
testValidateName
(
t71
),
TSDB_CODE_SUCCESS
);
char
t72
[]
=
"'_abDEF&^%1234'.' DIef'"
;
EXPECT_EQ
(
testValidateName
(
t72
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t72
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t73
[]
=
"'_123'.' Gtest中文'"
;
EXPECT_EQ
(
testValidateName
(
t73
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t73
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t74
[]
=
"' aABC'.'Gtest中文'"
;
EXPECT_EQ
(
testValidateName
(
t74
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t74
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t75
[]
=
"' ABC '."
;
EXPECT_EQ
(
testValidateName
(
t75
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t75
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t76
[]
=
".' ABC'"
;
EXPECT_EQ
(
testValidateName
(
t76
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t76
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t77
[]
=
" a .
\"
aTWc
\"
"
;
EXPECT_EQ
(
testValidateName
(
t77
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t77
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t78
[]
=
" a.
\"
aTWc
\"
"
;
EXPECT_EQ
(
testValidateName
(
t78
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t78
),
TSDB_CODE_
TSC_
INVALID_SQL
);
// ===============muti string by space ===================
// There's no such case.
//char t160[] = "A BC";
//EXPECT_EQ(testValidateName(t160), TSDB_CODE_INVALID_SQL);
//EXPECT_EQ(testValidateName(t160), TSDB_CODE_
TSC_
INVALID_SQL);
//printf("end:%s\n", t160);
// There's no such case.
//char t161[] = "' A BC '";
//EXPECT_EQ(testValidateName(t161), TSDB_CODE_INVALID_SQL);
//EXPECT_EQ(testValidateName(t161), TSDB_CODE_
TSC_
INVALID_SQL);
char
t162
[]
=
" AB C . de f "
;
EXPECT_EQ
(
testValidateName
(
t162
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t162
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t163
[]
=
"' AB C . de f "
;
EXPECT_EQ
(
testValidateName
(
t163
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t163
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t163_0
[]
=
" ab c . DE F ' "
;
EXPECT_EQ
(
testValidateName
(
t163_0
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t163_0
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t164
[]
=
" ' AB C . de f ' "
;
//int32_t tmp2 = testValidateName(t164);
EXPECT_EQ
(
testValidateName
(
t164
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t164
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t165
[]
=
" ' A BC '. de f "
;
EXPECT_EQ
(
testValidateName
(
t165
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t165
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t166
[]
=
"' AB C '.' DE F '"
;
EXPECT_EQ
(
testValidateName
(
t166
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t166
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t167
[]
=
"ab c . ' D EF '"
;
EXPECT_EQ
(
testValidateName
(
t167
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t167
),
TSDB_CODE_
TSC_
INVALID_SQL
);
char
t168
[]
=
"' a bc '.' DE F '"
;
EXPECT_EQ
(
testValidateName
(
t168
),
TSDB_CODE_INVALID_SQL
);
EXPECT_EQ
(
testValidateName
(
t168
),
TSDB_CODE_
TSC_
INVALID_SQL
);
}
...
...
src/rpc/src/rpcMain.c
浏览文件 @
3bb9451c
...
...
@@ -58,6 +58,7 @@ typedef struct {
void
(
*
cfp
)(
SRpcMsg
*
,
SRpcIpSet
*
);
int
(
*
afp
)(
char
*
user
,
char
*
spi
,
char
*
encrypt
,
char
*
secret
,
char
*
ckey
);
int
refCount
;
void
*
idPool
;
// handle to ID pool
void
*
tmrCtrl
;
// handle to timer
SHashObj
*
hash
;
// handle returned by hash utility
...
...
@@ -199,6 +200,8 @@ static int rpcAddAuthPart(SRpcConn *pConn, char *msg, int msgLen);
static
int
rpcCheckAuthentication
(
SRpcConn
*
pConn
,
char
*
msg
,
int
msgLen
);
static
void
rpcLockConn
(
SRpcConn
*
pConn
);
static
void
rpcUnlockConn
(
SRpcConn
*
pConn
);
static
void
rpcAddRef
(
SRpcInfo
*
pRpc
);
static
void
rpcDecRef
(
SRpcInfo
*
pRpc
);
void
*
rpcOpen
(
const
SRpcInit
*
pInit
)
{
SRpcInfo
*
pRpc
;
...
...
@@ -224,6 +227,7 @@ void *rpcOpen(const SRpcInit *pInit) {
pRpc
->
spi
=
pInit
->
spi
;
pRpc
->
cfp
=
pInit
->
cfp
;
pRpc
->
afp
=
pInit
->
afp
;
pRpc
->
refCount
=
1
;
size_t
size
=
sizeof
(
SRpcConn
)
*
pRpc
->
sessions
;
pRpc
->
connList
=
(
SRpcConn
*
)
calloc
(
1
,
size
);
...
...
@@ -293,15 +297,8 @@ void rpcClose(void *param) {
(
*
taosCleanUpConn
[
pRpc
->
connType
|
RPC_CONN_TCP
])(
pRpc
->
tcphandle
);
(
*
taosCleanUpConn
[
pRpc
->
connType
])(
pRpc
->
udphandle
);
taosHashCleanup
(
pRpc
->
hash
);
taosTmrCleanUp
(
pRpc
->
tmrCtrl
);
taosIdPoolCleanUp
(
pRpc
->
idPool
);
rpcCloseConnCache
(
pRpc
->
pCache
);
tfree
(
pRpc
->
connList
);
pthread_mutex_destroy
(
&
pRpc
->
mutex
);
tTrace
(
"%s rpc is closed"
,
pRpc
->
label
);
tfree
(
pRpc
);
rpcDecRef
(
pRpc
);
}
void
*
rpcMallocCont
(
int
contLen
)
{
...
...
@@ -378,6 +375,7 @@ void rpcSendResponse(const SRpcMsg *pRsp) {
SRpcConn
*
pConn
=
(
SRpcConn
*
)
pRsp
->
handle
;
SRpcMsg
rpcMsg
=
*
pRsp
;
SRpcMsg
*
pMsg
=
&
rpcMsg
;
SRpcInfo
*
pRpc
=
pConn
->
pRpc
;
if
(
pMsg
->
pCont
==
NULL
)
{
pMsg
->
pCont
=
rpcMallocCont
(
0
);
...
...
@@ -395,6 +393,7 @@ void rpcSendResponse(const SRpcMsg *pRsp) {
if
(
pConn
->
inType
==
0
||
pConn
->
user
[
0
]
==
0
)
{
tTrace
(
"%s, connection is already released, rsp wont be sent"
,
pConn
->
info
);
rpcUnlockConn
(
pConn
);
rpcDecRef
(
pRpc
);
return
;
}
...
...
@@ -418,9 +417,8 @@ void rpcSendResponse(const SRpcMsg *pRsp) {
rpcFreeMsg
(
pConn
->
pRspMsg
);
pConn
->
pRspMsg
=
msg
;
pConn
->
rspMsgLen
=
msgLen
;
if
(
pMsg
->
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
pConn
->
inTranId
--
;
if
(
pMsg
->
code
==
TSDB_CODE_
RPC_
ACTION_IN_PROGRESS
)
pConn
->
inTranId
--
;
SRpcInfo
*
pRpc
=
pConn
->
pRpc
;
taosTmrStopA
(
&
pConn
->
pTimer
);
// set the idle timer to monitor the activity
...
...
@@ -429,6 +427,7 @@ void rpcSendResponse(const SRpcMsg *pRsp) {
pConn
->
secured
=
1
;
// connection shall be secured
rpcUnlockConn
(
pConn
);
rpcDecRef
(
pRpc
);
// decrease the referene count
return
;
}
...
...
@@ -443,7 +442,7 @@ void rpcSendRedirectRsp(void *thandle, const SRpcIpSet *pIpSet) {
memcpy
(
rpcMsg
.
pCont
,
pIpSet
,
sizeof
(
SRpcIpSet
));
rpcMsg
.
code
=
TSDB_CODE_REDIRECT
;
rpcMsg
.
code
=
TSDB_CODE_R
PC_R
EDIRECT
;
rpcMsg
.
handle
=
thandle
;
rpcSendResponse
(
&
rpcMsg
);
...
...
@@ -496,7 +495,7 @@ static SRpcConn *rpcOpenConn(SRpcInfo *pRpc, char *peerFqdn, uint16_t peerPort,
uint32_t
peerIp
=
taosGetIpFromFqdn
(
peerFqdn
);
if
(
peerIp
==
-
1
)
{
tError
(
"%s, failed to resolve FQDN:%s"
,
pRpc
->
label
,
peerFqdn
);
terrno
=
TSDB_CODE_APP_ERROR
;
terrno
=
TSDB_CODE_
RPC_
APP_ERROR
;
return
NULL
;
}
...
...
@@ -513,7 +512,7 @@ static SRpcConn *rpcOpenConn(SRpcInfo *pRpc, char *peerFqdn, uint16_t peerPort,
void
*
shandle
=
(
connType
&
RPC_CONN_TCP
)
?
pRpc
->
tcphandle
:
pRpc
->
udphandle
;
pConn
->
chandle
=
(
*
taosOpenConn
[
connType
])(
shandle
,
pConn
,
pConn
->
peerIp
,
pConn
->
peerPort
);
if
(
pConn
->
chandle
==
NULL
)
{
terrno
=
TSDB_CODE_NETWORK_UNAVAIL
;
terrno
=
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
;
rpcCloseConn
(
pConn
);
pConn
=
NULL
;
}
...
...
@@ -570,7 +569,7 @@ static SRpcConn *rpcAllocateClientConn(SRpcInfo *pRpc) {
int
sid
=
taosAllocateId
(
pRpc
->
idPool
);
if
(
sid
<=
0
)
{
tError
(
"%s maximum number of sessions:%d is reached"
,
pRpc
->
label
,
pRpc
->
sessions
);
terrno
=
TSDB_CODE_MAX_SESSIONS
;
terrno
=
TSDB_CODE_
RPC_
MAX_SESSIONS
;
}
else
{
pConn
=
pRpc
->
connList
+
sid
;
memset
(
pConn
,
0
,
sizeof
(
SRpcConn
));
...
...
@@ -606,7 +605,7 @@ static SRpcConn *rpcAllocateServerConn(SRpcInfo *pRpc, SRecvInfo *pRecv) {
int
sid
=
taosAllocateId
(
pRpc
->
idPool
);
if
(
sid
<=
0
)
{
tError
(
"%s maximum number of sessions:%d is reached"
,
pRpc
->
label
,
pRpc
->
sessions
);
terrno
=
TSDB_CODE_MAX_SESSIONS
;
terrno
=
TSDB_CODE_
RPC_
MAX_SESSIONS
;
}
else
{
pConn
=
pRpc
->
connList
+
sid
;
memset
(
pConn
,
0
,
sizeof
(
SRpcConn
));
...
...
@@ -618,7 +617,7 @@ static SRpcConn *rpcAllocateServerConn(SRpcInfo *pRpc, SRecvInfo *pRecv) {
pConn
->
linkUid
=
pHead
->
linkUid
;
if
(
pRpc
->
afp
)
{
if
(
pConn
->
user
[
0
]
==
0
)
{
terrno
=
TSDB_CODE_AUTH_REQUIRED
;
terrno
=
TSDB_CODE_
RPC_
AUTH_REQUIRED
;
}
else
{
terrno
=
(
*
pRpc
->
afp
)(
pConn
->
user
,
&
pConn
->
spi
,
&
pConn
->
encrypt
,
pConn
->
secret
,
pConn
->
ckey
);
}
...
...
@@ -656,13 +655,13 @@ static SRpcConn *rpcGetConnObj(SRpcInfo *pRpc, int sid, SRecvInfo *pRecv) {
if
(
pRpc
->
connType
==
TAOS_CONN_SERVER
)
{
pConn
=
rpcAllocateServerConn
(
pRpc
,
pRecv
);
}
else
{
terrno
=
TSDB_CODE_UNEXPECTED_RESPONSE
;
terrno
=
TSDB_CODE_
RPC_
UNEXPECTED_RESPONSE
;
}
}
if
(
pConn
)
{
if
(
pConn
->
linkUid
!=
pHead
->
linkUid
)
{
terrno
=
TSDB_CODE_
MISMATCHED_METER
_ID
;
terrno
=
TSDB_CODE_
RPC_MISMATCHED_LINK
_ID
;
pConn
=
NULL
;
}
}
...
...
@@ -700,7 +699,7 @@ static int rpcProcessReqHead(SRpcConn *pConn, SRpcHead *pHead) {
if
(
pConn
->
peerId
!=
pHead
->
sourceId
)
{
tTrace
(
"%s, source Id is changed, old:0x%08x new:0x%08x"
,
pConn
->
info
,
pConn
->
peerId
,
pHead
->
sourceId
);
return
TSDB_CODE_INVALID_VALUE
;
return
TSDB_CODE_
RPC_
INVALID_VALUE
;
}
}
...
...
@@ -708,7 +707,7 @@ static int rpcProcessReqHead(SRpcConn *pConn, SRpcHead *pHead) {
if
(
pConn
->
inType
==
pHead
->
msgType
)
{
if
(
pHead
->
code
==
0
)
{
tTrace
(
"%s, %s is retransmitted"
,
pConn
->
info
,
taosMsg
[
pHead
->
msgType
]);
rpcSendQuickRsp
(
pConn
,
TSDB_CODE_ACTION_IN_PROGRESS
);
rpcSendQuickRsp
(
pConn
,
TSDB_CODE_
RPC_
ACTION_IN_PROGRESS
);
}
else
{
// do nothing, it is heart beat from client
}
...
...
@@ -720,13 +719,13 @@ static int rpcProcessReqHead(SRpcConn *pConn, SRpcHead *pHead) {
}
// do not reply any message
return
TSDB_CODE_ALREADY_PROCESSED
;
return
TSDB_CODE_
RPC_
ALREADY_PROCESSED
;
}
if
(
pConn
->
inType
!=
0
)
{
tTrace
(
"%s, last session is not finished, inTranId:%d tranId:%d"
,
pConn
->
info
,
pConn
->
inTranId
,
pHead
->
tranId
);
return
TSDB_CODE_LAST_SESSION_NOT_FINISHED
;
return
TSDB_CODE_
RPC_
LAST_SESSION_NOT_FINISHED
;
}
pConn
->
inTranId
=
pHead
->
tranId
;
...
...
@@ -740,39 +739,39 @@ static int rpcProcessRspHead(SRpcConn *pConn, SRpcHead *pHead) {
pConn
->
peerId
=
pHead
->
sourceId
;
if
(
pConn
->
outType
==
0
||
pConn
->
pContext
==
NULL
)
{
return
TSDB_CODE_UNEXPECTED_RESPONSE
;
return
TSDB_CODE_
RPC_
UNEXPECTED_RESPONSE
;
}
if
(
pHead
->
tranId
!=
pConn
->
outTranId
)
{
return
TSDB_CODE_INVALID_TRAN_ID
;
return
TSDB_CODE_
RPC_
INVALID_TRAN_ID
;
}
if
(
pHead
->
msgType
!=
pConn
->
outType
+
1
)
{
return
TSDB_CODE_INVALID_RESPONSE_TYPE
;
return
TSDB_CODE_
RPC_
INVALID_RESPONSE_TYPE
;
}
taosTmrStopA
(
&
pConn
->
pTimer
);
pConn
->
retry
=
0
;
if
(
pHead
->
code
==
TSDB_CODE_AUTH_REQUIRED
&&
pRpc
->
spi
)
{
if
(
pHead
->
code
==
TSDB_CODE_
RPC_
AUTH_REQUIRED
&&
pRpc
->
spi
)
{
tTrace
(
"%s, authentication shall be restarted"
,
pConn
->
info
);
pConn
->
secured
=
0
;
rpcSendMsgToPeer
(
pConn
,
pConn
->
pReqMsg
,
pConn
->
reqMsgLen
);
pConn
->
pTimer
=
taosTmrStart
(
rpcProcessRetryTimer
,
tsRpcTimer
,
pConn
,
pRpc
->
tmrCtrl
);
return
TSDB_CODE_ALREADY_PROCESSED
;
return
TSDB_CODE_
RPC_
ALREADY_PROCESSED
;
}
if
(
pHead
->
code
==
TSDB_CODE_ACTION_IN_PROGRESS
)
{
if
(
pHead
->
code
==
TSDB_CODE_
RPC_
ACTION_IN_PROGRESS
)
{
if
(
pConn
->
tretry
<=
tsRpcMaxRetry
)
{
tTrace
(
"%s, peer is still processing the transaction, retry:%d"
,
pConn
->
info
,
pConn
->
tretry
);
pConn
->
tretry
++
;
rpcSendReqHead
(
pConn
);
pConn
->
pTimer
=
taosTmrStart
(
rpcProcessRetryTimer
,
tsRpcTimer
,
pConn
,
pRpc
->
tmrCtrl
);
return
TSDB_CODE_ALREADY_PROCESSED
;
return
TSDB_CODE_
RPC_
ALREADY_PROCESSED
;
}
else
{
// peer still in processing, give up
tTrace
(
"%s, server processing takes too long time, give up"
,
pConn
->
info
);
pHead
->
code
=
TSDB_CODE_TOO_SLOW
;
pHead
->
code
=
TSDB_CODE_
RPC_
TOO_SLOW
;
}
}
...
...
@@ -793,13 +792,13 @@ static SRpcConn *rpcProcessMsgHead(SRpcInfo *pRpc, SRecvInfo *pRecv) {
if
(
pHead
->
msgType
>=
TSDB_MSG_TYPE_MAX
||
pHead
->
msgType
<=
0
)
{
tTrace
(
"%s sid:%d, invalid message type:%d"
,
pRpc
->
label
,
sid
,
pHead
->
msgType
);
terrno
=
TSDB_CODE_INVALID_MSG_TYPE
;
return
NULL
;
terrno
=
TSDB_CODE_
RPC_
INVALID_MSG_TYPE
;
return
NULL
;
}
if
(
sid
<
0
||
sid
>=
pRpc
->
sessions
)
{
tTrace
(
"%s sid:%d, sid is out of range, max sid:%d, %s discarded"
,
pRpc
->
label
,
sid
,
pRpc
->
sessions
,
taosMsg
[
pHead
->
msgType
]);
terrno
=
TSDB_CODE_INVALID_SESSION_ID
;
return
NULL
;
terrno
=
TSDB_CODE_
RPC_
INVALID_SESSION_ID
;
return
NULL
;
}
pConn
=
rpcGetConnObj
(
pRpc
,
sid
,
pRecv
);
...
...
@@ -855,7 +854,7 @@ static void rpcProcessBrokenLink(SRpcConn *pConn) {
if
(
pConn
->
outType
)
{
SRpcReqContext
*
pContext
=
pConn
->
pContext
;
pContext
->
code
=
TSDB_CODE_NETWORK_UNAVAIL
;
pContext
->
code
=
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
;
taosTmrStart
(
rpcProcessConnError
,
0
,
pContext
,
pRpc
->
tmrCtrl
);
}
...
...
@@ -868,7 +867,7 @@ static void rpcProcessBrokenLink(SRpcConn *pConn) {
rpcMsg.contLen = 0;
rpcMsg.handle = pConn;
rpcMsg.msgType = pConn->inType;
rpcMsg.code = TSDB_CODE_NETWORK_UNAVAIL;
rpcMsg.code = TSDB_CODE_
RPC_
NETWORK_UNAVAIL;
(*(pRpc->cfp))(&rpcMsg);
*/
}
...
...
@@ -901,7 +900,7 @@ static void *rpcProcessMsgFromPeer(SRecvInfo *pRecv) {
}
int32_t
code
=
terrno
;
if
(
code
!=
TSDB_CODE_ALREADY_PROCESSED
)
{
if
(
code
!=
TSDB_CODE_
RPC_
ALREADY_PROCESSED
)
{
if
(
code
!=
0
)
{
// parsing error
if
(
rpcIsReq
(
pHead
->
msgType
))
{
rpcSendErrorMsgToPeer
(
pRecv
,
code
);
...
...
@@ -951,6 +950,7 @@ static void rpcProcessIncomingMsg(SRpcConn *pConn, SRpcHead *pHead) {
if
(
rpcIsReq
(
pHead
->
msgType
)
)
{
rpcMsg
.
handle
=
pConn
;
rpcAddRef
(
pRpc
);
// add the refCount for requests
pConn
->
pTimer
=
taosTmrStart
(
rpcProcessProgressTimer
,
tsProgressTimer
,
pConn
,
pRpc
->
tmrCtrl
);
(
*
(
pRpc
->
cfp
))(
&
rpcMsg
,
NULL
);
}
else
{
...
...
@@ -960,28 +960,28 @@ static void rpcProcessIncomingMsg(SRpcConn *pConn, SRpcHead *pHead) {
pConn
->
pContext
=
NULL
;
// for UDP, port may be changed by server, the port in ipSet shall be used for cache
if
(
pHead
->
code
!=
TSDB_CODE_TOO_SLOW
)
{
if
(
pHead
->
code
!=
TSDB_CODE_
RPC_
TOO_SLOW
)
{
rpcAddConnIntoCache
(
pRpc
->
pCache
,
pConn
,
pConn
->
peerFqdn
,
pContext
->
ipSet
.
port
[
pContext
->
ipSet
.
inUse
],
pConn
->
connType
);
}
else
{
rpcCloseConn
(
pConn
);
}
if
(
pHead
->
code
==
TSDB_CODE_REDIRECT
)
{
if
(
pHead
->
code
==
TSDB_CODE_R
PC_R
EDIRECT
)
{
pContext
->
redirect
++
;
if
(
pContext
->
redirect
>
TSDB_MAX_REPLICA
)
{
pHead
->
code
=
TSDB_CODE_NETWORK_UNAVAIL
;
pHead
->
code
=
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
;
tWarn
(
"%s, too many redirects, quit"
,
pConn
->
info
);
}
}
if
(
pHead
->
code
==
TSDB_CODE_REDIRECT
)
{
if
(
pHead
->
code
==
TSDB_CODE_R
PC_R
EDIRECT
)
{
pContext
->
numOfTry
=
0
;
memcpy
(
&
pContext
->
ipSet
,
pHead
->
content
,
sizeof
(
pContext
->
ipSet
));
tTrace
(
"%s, redirect is received, numOfIps:%d"
,
pConn
->
info
,
pContext
->
ipSet
.
numOfIps
);
for
(
int
i
=
0
;
i
<
pContext
->
ipSet
.
numOfIps
;
++
i
)
pContext
->
ipSet
.
port
[
i
]
=
htons
(
pContext
->
ipSet
.
port
[
i
]);
rpcSendReqToServer
(
pRpc
,
pContext
);
}
else
if
(
pHead
->
code
==
TSDB_CODE_NOT_READY
)
{
}
else
if
(
pHead
->
code
==
TSDB_CODE_
RPC_
NOT_READY
)
{
pContext
->
code
=
pHead
->
code
;
rpcProcessConnError
(
pContext
,
NULL
);
}
else
{
...
...
@@ -1058,7 +1058,7 @@ static void rpcSendErrorMsgToPeer(SRecvInfo *pRecv, int32_t code) {
pReplyHead
->
code
=
htonl
(
code
);
msgLen
=
sizeof
(
SRpcHead
);
if
(
code
==
TSDB_CODE_INVALID_TIME_STAMP
)
{
if
(
code
==
TSDB_CODE_
RPC_
INVALID_TIME_STAMP
)
{
// include a time stamp if client's time is not synchronized well
uint8_t
*
pContent
=
pReplyHead
->
content
;
timeStamp
=
htonl
(
taosGetTimestampSec
());
...
...
@@ -1200,7 +1200,7 @@ static void rpcProcessRetryTimer(void *param, void *tmrId) {
rpcUnlockConn
(
pConn
);
if
(
reportDisc
&&
pConn
->
pContext
)
{
pConn
->
pContext
->
code
=
TSDB_CODE_NETWORK_UNAVAIL
;
pConn
->
pContext
->
code
=
TSDB_CODE_
RPC_
NETWORK_UNAVAIL
;
rpcProcessConnError
(
pConn
->
pContext
,
NULL
);
rpcCloseConn
(
pConn
);
}
...
...
@@ -1221,7 +1221,7 @@ static void rpcProcessIdleTimer(void *param, void *tmrId) {
rpcMsg.contLen = 0;
rpcMsg.handle = pConn;
rpcMsg.msgType = pConn->inType;
rpcMsg.code = TSDB_CODE_NETWORK_UNAVAIL;
rpcMsg.code = TSDB_CODE_
RPC_
NETWORK_UNAVAIL;
(*(pRpc->cfp))(&rpcMsg);
*/
}
...
...
@@ -1239,7 +1239,7 @@ static void rpcProcessProgressTimer(void *param, void *tmrId) {
if
(
pConn
->
inType
&&
pConn
->
user
[
0
])
{
tTrace
(
"%s, progress timer expired, send progress"
,
pConn
->
info
);
rpcSendQuickRsp
(
pConn
,
TSDB_CODE_ACTION_IN_PROGRESS
);
rpcSendQuickRsp
(
pConn
,
TSDB_CODE_
RPC_
ACTION_IN_PROGRESS
);
pConn
->
pTimer
=
taosTmrStart
(
rpcProcessProgressTimer
,
tsProgressTimer
,
pConn
,
pRpc
->
tmrCtrl
);
}
else
{
tTrace
(
"%s, progress timer:%p not processed"
,
pConn
->
info
,
tmrId
);
...
...
@@ -1379,12 +1379,12 @@ static int rpcCheckAuthentication(SRpcConn *pConn, char *msg, int msgLen) {
if
(
!
rpcIsReq
(
pHead
->
msgType
)
)
{
// for response, if code is auth failure, it shall bypass the auth process
code
=
htonl
(
pHead
->
code
);
if
(
code
==
TSDB_CODE_INVALID_TIME_STAMP
||
code
==
TSDB_CODE_AUTH_FAILURE
||
code
==
TSDB_CODE_AUTH_REQUIRED
||
code
==
TSDB_CODE_INVALID_USER
||
code
==
TSDB_CODE
_NOT_READY
)
{
if
(
code
==
TSDB_CODE_RPC_INVALID_TIME_STAMP
||
code
==
TSDB_CODE_RPC_AUTH_FAILURE
||
code
==
TSDB_CODE_RPC_AUTH_REQUIRED
||
code
==
TSDB_CODE_MND_INVALID_USER
||
code
==
TSDB_CODE_RPC
_NOT_READY
)
{
pHead
->
msgLen
=
(
int32_t
)
htonl
((
uint32_t
)
pHead
->
msgLen
);
// tTrace("%s, dont check authentication since code is:0x%x", pConn->info, code);
return
0
;
}
}
}
code
=
0
;
...
...
@@ -1397,11 +1397,11 @@ static int rpcCheckAuthentication(SRpcConn *pConn, char *msg, int msgLen) {
delta
-=
(
int32_t
)
taosGetTimestampSec
();
if
(
abs
(
delta
)
>
900
)
{
tWarn
(
"%s, time diff:%d is too big, msg discarded"
,
pConn
->
info
,
delta
);
code
=
TSDB_CODE_INVALID_TIME_STAMP
;
code
=
TSDB_CODE_
RPC_
INVALID_TIME_STAMP
;
}
else
{
if
(
rpcAuthenticateMsg
(
pHead
,
msgLen
-
TSDB_AUTH_LEN
,
pDigest
->
auth
,
pConn
->
secret
)
<
0
)
{
tTrace
(
"%s, authentication failed, msg discarded"
,
pConn
->
info
);
code
=
TSDB_CODE_AUTH_FAILURE
;
code
=
TSDB_CODE_
RPC_
AUTH_FAILURE
;
}
else
{
pHead
->
msgLen
=
(
int32_t
)
htonl
((
uint32_t
)
pHead
->
msgLen
)
-
sizeof
(
SRpcDigest
);
if
(
!
rpcIsReq
(
pHead
->
msgType
)
)
pConn
->
secured
=
1
;
// link is secured for client
...
...
@@ -1410,7 +1410,7 @@ static int rpcCheckAuthentication(SRpcConn *pConn, char *msg, int msgLen) {
}
}
else
{
tTrace
(
"%s, auth spi:%d not matched with received:%d"
,
pConn
->
info
,
pConn
->
spi
,
pHead
->
spi
);
code
=
pHead
->
spi
?
TSDB_CODE_
AUTH_FAILURE
:
TSDB_CODE
_AUTH_REQUIRED
;
code
=
pHead
->
spi
?
TSDB_CODE_
RPC_AUTH_FAILURE
:
TSDB_CODE_RPC
_AUTH_REQUIRED
;
}
return
code
;
...
...
@@ -1433,3 +1433,23 @@ static void rpcUnlockConn(SRpcConn *pConn) {
}
}
static
void
rpcAddRef
(
SRpcInfo
*
pRpc
)
{
atomic_add_fetch_8
(
&
pRpc
->
refCount
,
1
);
}
static
void
rpcDecRef
(
SRpcInfo
*
pRpc
)
{
if
(
atomic_sub_fetch_8
(
&
pRpc
->
refCount
,
1
)
==
0
)
{
taosHashCleanup
(
pRpc
->
hash
);
taosTmrCleanUp
(
pRpc
->
tmrCtrl
);
taosIdPoolCleanUp
(
pRpc
->
idPool
);
rpcCloseConnCache
(
pRpc
->
pCache
);
tfree
(
pRpc
->
connList
);
pthread_mutex_destroy
(
&
pRpc
->
mutex
);
tTrace
(
"%s rpc resources are released"
,
pRpc
->
label
);
tfree
(
pRpc
);
}
}
src/tsdb/src/tsdbMain.c
浏览文件 @
3bb9451c
...
...
@@ -92,16 +92,15 @@ STsdbCfg *tsdbGetCfg(const TsdbRepoT *repo) {
* @return a TSDB repository handle on success, NULL for failure
*/
int32_t
tsdbCreateRepo
(
char
*
rootDir
,
STsdbCfg
*
pCfg
,
void
*
limiter
/* TODO */
)
{
if
(
mkdir
(
rootDir
,
0755
)
!=
0
)
{
tsdbError
(
"vgId:%d, failed to create rootDir! rootDir:%s, reason:%s"
,
pCfg
->
tsdbId
,
rootDir
,
strerror
(
errno
));
if
(
errno
==
EACCES
)
{
return
TSDB_CODE_NO_DISK_PERMISSIONS
;
return
TSDB_CODE_
TDB_
NO_DISK_PERMISSIONS
;
}
else
if
(
errno
==
ENOSPC
)
{
return
TSDB_CODE_
SERV
_NO_DISKSPACE
;
return
TSDB_CODE_
TDB
_NO_DISKSPACE
;
}
else
if
(
errno
==
EEXIST
)
{
}
else
{
return
TSDB_CODE_
VG
_INIT_FAILED
;
return
TSDB_CODE_
TDB
_INIT_FAILED
;
}
}
...
...
@@ -315,7 +314,7 @@ int32_t tsdbConfigRepo(TsdbRepoT *repo, STsdbCfg *pCfg) {
STsdbRepo
*
pRepo
=
(
STsdbRepo
*
)
repo
;
STsdbCfg
*
pRCfg
=
&
pRepo
->
config
;
if
(
tsdbCheckAndSetDefaultCfg
(
pCfg
)
<
0
)
return
TSDB_CODE_INVALID_CONFIG
;
if
(
tsdbCheckAndSetDefaultCfg
(
pCfg
)
<
0
)
return
TSDB_CODE_
TDB_
INVALID_CONFIG
;
ASSERT
(
pRCfg
->
tsdbId
==
pCfg
->
tsdbId
);
ASSERT
(
pRCfg
->
cacheBlockSize
==
pCfg
->
cacheBlockSize
);
...
...
@@ -416,13 +415,13 @@ int tsdbUpdateTagValue(TsdbRepoT *repo, SUpdateTableTagValMsg *pMsg) {
int16_t
tversion
=
htons
(
pMsg
->
tversion
);
STable
*
pTable
=
tsdbGetTableByUid
(
pMeta
,
htobe64
(
pMsg
->
uid
));
if
(
pTable
==
NULL
)
return
TSDB_CODE_INVALID_TABLE_ID
;
if
(
pTable
->
tableId
.
tid
!=
htonl
(
pMsg
->
tid
))
return
TSDB_CODE_INVALID_TABLE_ID
;
if
(
pTable
==
NULL
)
return
TSDB_CODE_
TDB_
INVALID_TABLE_ID
;
if
(
pTable
->
tableId
.
tid
!=
htonl
(
pMsg
->
tid
))
return
TSDB_CODE_
TDB_
INVALID_TABLE_ID
;
if
(
pTable
->
type
!=
TSDB_CHILD_TABLE
)
{
tsdbError
(
"vgId:%d failed to update tag value of table %s since its type is %d"
,
pRepo
->
config
.
tsdbId
,
varDataVal
(
pTable
->
name
),
pTable
->
type
);
return
TSDB_CODE_INVALID_TABLE_TYPE
;
return
TSDB_CODE_
TDB_
INVALID_TABLE_TYPE
;
}
if
(
schemaVersion
(
tsdbGetTableTagSchema
(
pMeta
,
pTable
))
<
tversion
)
{
...
...
@@ -452,7 +451,7 @@ int tsdbUpdateTagValue(TsdbRepoT *repo, SUpdateTableTagValMsg *pMsg) {
"vgId:%d failed to update tag value of table %s since version out of date, client tag version:%d server tag "
"version:%d"
,
pRepo
->
config
.
tsdbId
,
varDataVal
(
pTable
->
name
),
tversion
,
schemaVersion
(
pTable
->
tagSchema
));
return
TSDB_CODE_TAG_VER_OUT_OF_DATE
;
return
TSDB_CODE_T
DB_T
AG_VER_OUT_OF_DATE
;
}
if
(
schemaColAt
(
pTagSchema
,
DEFAULT_TAG_INDEX_COLUMN
)
->
colId
==
htons
(
pMsg
->
colId
))
{
tsdbRemoveTableFromIndex
(
pMeta
,
pTable
);
...
...
@@ -948,7 +947,7 @@ static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock, TSKEY
if
(
pTable
==
NULL
)
{
tsdbError
(
"vgId:%d, failed to get table for insert, uid:"
PRIu64
", tid:%d"
,
pRepo
->
config
.
tsdbId
,
pBlock
->
uid
,
pBlock
->
tid
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
TDB_
INVALID_TABLE_ID
;
}
// Check schema version
...
...
@@ -980,7 +979,7 @@ static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock, TSKEY
if
(
tsdbGetTableSchemaByVersion
(
pMeta
,
pTable
,
tversion
)
==
NULL
)
{
tsdbError
(
"vgId:%d table:%s tid:%d invalid schema version %d from client"
,
pRepo
->
config
.
tsdbId
,
varDataVal
(
pTable
->
name
),
pTable
->
tableId
.
tid
,
tversion
);
return
TSDB_CODE_TABLE_SCHEMA_VERSION
;
return
TSDB_CODE_T
DB_T
ABLE_SCHEMA_VERSION
;
}
}
...
...
@@ -996,7 +995,7 @@ static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock, TSKEY
tsdbError
(
"vgId:%d, table:%s, tid:%d, talbe uid:%ld timestamp is out of range. now:"
PRId64
", maxKey:"
PRId64
", minKey:"
PRId64
,
pRepo
->
config
.
tsdbId
,
varDataVal
(
pTable
->
name
),
pTable
->
tableId
.
tid
,
pTable
->
tableId
.
uid
,
now
,
minKey
,
maxKey
);
return
TSDB_CODE_TIMESTAMP_OUT_OF_RANGE
;
return
TSDB_CODE_T
DB_T
IMESTAMP_OUT_OF_RANGE
;
}
if
(
tdInsertRowToTable
(
pRepo
,
row
,
pTable
)
<
0
)
{
...
...
src/tsdb/src/tsdbMeta.c
浏览文件 @
3bb9451c
...
...
@@ -323,7 +323,7 @@ static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) {
pTable
=
(
STable
*
)
calloc
(
1
,
sizeof
(
STable
));
if
(
pTable
==
NULL
)
{
terrno
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
TDB
_OUT_OF_MEMORY
;
goto
_err
;
}
...
...
@@ -343,7 +343,7 @@ static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) {
tsize
=
strnlen
(
pCfg
->
sname
,
TSDB_TABLE_NAME_LEN
);
pTable
->
name
=
calloc
(
1
,
tsize
+
VARSTR_HEADER_SIZE
+
1
);
if
(
pTable
->
name
==
NULL
)
{
terrno
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
TDB
_OUT_OF_MEMORY
;
goto
_err
;
}
STR_WITH_SIZE_TO_VARSTR
(
pTable
->
name
,
pCfg
->
sname
,
tsize
);
...
...
@@ -352,7 +352,7 @@ static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) {
pTable
->
pIndex
=
tSkipListCreate
(
TSDB_SUPER_TABLE_SL_LEVEL
,
pColSchema
->
type
,
pColSchema
->
bytes
,
1
,
0
,
0
,
getTagIndexKey
);
// Allow duplicate key, no lock
if
(
pTable
->
pIndex
==
NULL
)
{
terrno
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
TDB
_OUT_OF_MEMORY
;
goto
_err
;
}
}
else
{
...
...
@@ -364,7 +364,7 @@ static STable *tsdbNewTable(STableCfg *pCfg, bool isSuper) {
tsize
=
strnlen
(
pCfg
->
name
,
TSDB_TABLE_NAME_LEN
);
pTable
->
name
=
calloc
(
1
,
tsize
+
VARSTR_HEADER_SIZE
+
1
);
if
(
pTable
->
name
==
NULL
)
{
terrno
=
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
terrno
=
TSDB_CODE_
TDB
_OUT_OF_MEMORY
;
goto
_err
;
}
STR_WITH_SIZE_TO_VARSTR
(
pTable
->
name
,
pCfg
->
name
,
tsize
);
...
...
@@ -399,7 +399,7 @@ static int tsdbUpdateTableTagSchema(STable *pTable, STSchema *newSchema) {
ASSERT
(
schemaVersion
(
pTable
->
tagSchema
)
<
schemaVersion
(
newSchema
));
STSchema
*
pOldSchema
=
pTable
->
tagSchema
;
STSchema
*
pNewSchema
=
tdDupSchema
(
newSchema
);
if
(
pNewSchema
==
NULL
)
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
if
(
pNewSchema
==
NULL
)
return
TSDB_CODE_
TDB
_OUT_OF_MEMORY
;
pTable
->
tagSchema
=
pNewSchema
;
tdFreeSchema
(
pOldSchema
);
...
...
@@ -454,7 +454,7 @@ int tsdbCreateTable(TsdbRepoT *repo, STableCfg *pCfg) {
if
(
pTable
!=
NULL
)
{
tsdbError
(
"vgId:%d table %s already exists, tid %d uid %"
PRId64
,
pRepo
->
config
.
tsdbId
,
varDataVal
(
pTable
->
name
),
pTable
->
tableId
.
tid
,
pTable
->
tableId
.
uid
);
return
TSDB_CODE_TABLE_ALREADY_EXIST
;
return
TSDB_CODE_T
DB_T
ABLE_ALREADY_EXIST
;
}
STable
*
super
=
NULL
;
...
...
src/tsdb/src/tsdbRead.c
浏览文件 @
3bb9451c
...
...
@@ -1216,7 +1216,7 @@ static int32_t dataBlockOrderCompar(const void* pLeft, const void* pRight, void*
static
int32_t
createDataBlocksInfo
(
STsdbQueryHandle
*
pQueryHandle
,
int32_t
numOfBlocks
,
int32_t
*
numOfAllocBlocks
)
{
char
*
tmp
=
realloc
(
pQueryHandle
->
pDataBlockInfo
,
sizeof
(
STableBlockInfo
)
*
numOfBlocks
);
if
(
tmp
==
NULL
)
{
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TDB
_OUT_OF_MEMORY
;
}
pQueryHandle
->
pDataBlockInfo
=
(
STableBlockInfo
*
)
tmp
;
...
...
@@ -1233,7 +1233,7 @@ static int32_t createDataBlocksInfo(STsdbQueryHandle* pQueryHandle, int32_t numO
if
(
sup
.
numOfBlocksPerTable
==
NULL
||
sup
.
blockIndexArray
==
NULL
||
sup
.
pDataBlockInfo
==
NULL
)
{
cleanBlockOrderSupporter
(
&
sup
,
0
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TDB
_OUT_OF_MEMORY
;
}
int32_t
cnt
=
0
;
...
...
@@ -1251,7 +1251,7 @@ static int32_t createDataBlocksInfo(STsdbQueryHandle* pQueryHandle, int32_t numO
char
*
buf
=
calloc
(
1
,
sizeof
(
STableBlockInfo
)
*
pTableCheck
->
numOfBlocks
);
if
(
buf
==
NULL
)
{
cleanBlockOrderSupporter
(
&
sup
,
numOfQualTables
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TDB
_OUT_OF_MEMORY
;
}
sup
.
pDataBlockInfo
[
numOfQualTables
]
=
(
STableBlockInfo
*
)
buf
;
...
...
@@ -1289,7 +1289,7 @@ static int32_t createDataBlocksInfo(STsdbQueryHandle* pQueryHandle, int32_t numO
uint8_t
ret
=
tLoserTreeCreate
(
&
pTree
,
sup
.
numOfTables
,
&
sup
,
dataBlockOrderCompar
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
cleanBlockOrderSupporter
(
&
sup
,
numOfTables
);
return
TSDB_CODE_
SERV
_OUT_OF_MEMORY
;
return
TSDB_CODE_
TDB
_OUT_OF_MEMORY
;
}
int32_t
numOfTotal
=
0
;
...
...
@@ -2177,14 +2177,14 @@ int32_t tsdbQuerySTableByTagCond(TsdbRepoT* tsdb, uint64_t uid, const char* pTag
STable
*
pTable
=
tsdbGetTableByUid
(
tsdbGetMeta
(
tsdb
),
uid
);
if
(
pTable
==
NULL
)
{
tsdbError
(
"%p failed to get stable, uid:%"
PRIu64
,
tsdb
,
uid
);
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
TDB_
INVALID_TABLE_ID
;
}
if
(
pTable
->
type
!=
TSDB_SUPER_TABLE
)
{
tsdbError
(
"%p query normal tag not allowed, uid:%"
PRIu64
", tid:%d, name:%s"
,
tsdb
,
uid
,
pTable
->
tableId
.
tid
,
pTable
->
name
);
return
TSDB_CODE_OPS_NOT_SUPPORT
;
//basically, this error is caused by invalid sql issued by client
return
TSDB_CODE_
COM_
OPS_NOT_SUPPORT
;
//basically, this error is caused by invalid sql issued by client
}
SArray
*
res
=
taosArrayInit
(
8
,
sizeof
(
STableId
));
...
...
@@ -2221,7 +2221,7 @@ int32_t tsdbQuerySTableByTagCond(TsdbRepoT* tsdb, uint64_t uid, const char* pTag
tExprNode
*
tbnameExpr
=
expr
;
expr
=
calloc
(
1
,
sizeof
(
tExprNode
));
if
(
expr
==
NULL
)
{
THROW
(
TSDB_CODE_
SERV
_OUT_OF_MEMORY
);
THROW
(
TSDB_CODE_
TDB
_OUT_OF_MEMORY
);
}
expr
->
nodeType
=
TSQL_NODE_EXPR
;
expr
->
_node
.
optr
=
tagNameRelType
;
...
...
@@ -2248,7 +2248,7 @@ int32_t tsdbQuerySTableByTagCond(TsdbRepoT* tsdb, uint64_t uid, const char* pTag
int32_t
tsdbGetOneTableGroup
(
TsdbRepoT
*
tsdb
,
uint64_t
uid
,
STableGroupInfo
*
pGroupInfo
)
{
STable
*
pTable
=
tsdbGetTableByUid
(
tsdbGetMeta
(
tsdb
),
uid
);
if
(
pTable
==
NULL
)
{
return
TSDB_CODE_INVALID_TABLE_ID
;
return
TSDB_CODE_
TDB_
INVALID_TABLE_ID
;
}
//todo assert table type, add the table ref count
...
...
src/util/src/tbuffer.c
浏览文件 @
3bb9451c
...
...
@@ -26,7 +26,7 @@
size_t
tbufSkip
(
SBufferReader
*
buf
,
size_t
size
)
{
if
(
(
buf
->
pos
+
size
)
>
buf
->
size
)
{
THROW
(
TSDB_CODE_MEMORY_CORRUPTED
);
THROW
(
TSDB_CODE_
COM_
MEMORY_CORRUPTED
);
}
size_t
old
=
buf
->
pos
;
buf
->
pos
+=
size
;
...
...
@@ -58,7 +58,7 @@ const char* tbufReadString( SBufferReader* buf, size_t* len ) {
const
char
*
ret
=
buf
->
data
+
buf
->
pos
;
tbufSkip
(
buf
,
l
+
1
);
if
(
ret
[
l
]
!=
0
)
{
THROW
(
TSDB_CODE_MEMORY_CORRUPTED
);
THROW
(
TSDB_CODE_
COM_
MEMORY_CORRUPTED
);
}
if
(
len
!=
NULL
)
{
*
len
=
l
;
...
...
@@ -204,7 +204,7 @@ void tbufEnsureCapacity( SBufferWriter* buf, size_t size ) {
char
*
data
=
(
*
buf
->
allocator
)(
buf
->
data
,
nsize
);
// TODO: the exception should be thrown by the allocator function
if
(
data
==
NULL
)
{
THROW
(
TSDB_CODE_
SERV
_OUT_OF_MEMORY
);
THROW
(
TSDB_CODE_
COM
_OUT_OF_MEMORY
);
}
buf
->
data
=
data
;
buf
->
size
=
nsize
;
...
...
src/util/src/tqueue.c
浏览文件 @
3bb9451c
...
...
@@ -55,7 +55,7 @@ taos_queue taosOpenQueue() {
STaosQueue
*
queue
=
(
STaosQueue
*
)
calloc
(
sizeof
(
STaosQueue
),
1
);
if
(
queue
==
NULL
)
{
terrno
=
TSDB_CODE_
NO_RESOURCE
;
terrno
=
TSDB_CODE_
COM_OUT_OF_MEMORY
;
return
NULL
;
}
...
...
@@ -216,7 +216,7 @@ taos_qset taosOpenQset() {
STaosQset
*
qset
=
(
STaosQset
*
)
calloc
(
sizeof
(
STaosQset
),
1
);
if
(
qset
==
NULL
)
{
terrno
=
TSDB_CODE_
NO_RESOURCE
;
terrno
=
TSDB_CODE_
COM_OUT_OF_MEMORY
;
return
NULL
;
}
...
...
src/util/src/tutil.c
浏览文件 @
3bb9451c
...
...
@@ -592,18 +592,18 @@ int taosCheckVersion(char *input_client_version, char *input_server_version, int
if
(
!
taosGetVersionNumber
(
client_version
,
clientVersionNumber
))
{
uError
(
"invalid client version:%s"
,
client_version
);
return
TSDB_CODE_
INVALID_CLIENT
_VERSION
;
return
TSDB_CODE_
TSC_INVALID
_VERSION
;
}
if
(
!
taosGetVersionNumber
(
server_version
,
serverVersionNumber
))
{
uError
(
"invalid server version:%s"
,
server_version
);
return
TSDB_CODE_
INVALID_CLIENT
_VERSION
;
return
TSDB_CODE_
TSC_INVALID
_VERSION
;
}
for
(
int32_t
i
=
0
;
i
<
comparedSegments
;
++
i
)
{
if
(
clientVersionNumber
[
i
]
!=
serverVersionNumber
[
i
])
{
uError
(
"the %d-th number of server version:%s not matched with client version:%s"
,
i
,
server_version
,
version
);
return
TSDB_CODE_
INVALID_CLIENT
_VERSION
;
return
TSDB_CODE_
TSC_INVALID
_VERSION
;
}
}
...
...
src/vnode/src/vnodeMain.c
浏览文件 @
3bb9451c
...
...
@@ -82,14 +82,14 @@ int32_t vnodeCreate(SMDCreateVnodeMsg *pVnodeCfg) {
if
(
mkdir
(
rootDir
,
0755
)
!=
0
)
{
vPrint
(
"vgId:%d, failed to create vnode, reason:%s dir:%s"
,
pVnodeCfg
->
cfg
.
vgId
,
strerror
(
errno
),
rootDir
);
if
(
errno
==
EACCES
)
{
return
TSDB_CODE_NO_DISK_PERMISSIONS
;
return
TSDB_CODE_
VND_
NO_DISK_PERMISSIONS
;
}
else
if
(
errno
==
ENOSPC
)
{
return
TSDB_CODE_
SERV
_NO_DISKSPACE
;
return
TSDB_CODE_
VND
_NO_DISKSPACE
;
}
else
if
(
errno
==
ENOENT
)
{
return
TSDB_CODE_
NOT
_SUCH_FILE_OR_DIR
;
return
TSDB_CODE_
VND_NO
_SUCH_FILE_OR_DIR
;
}
else
if
(
errno
==
EEXIST
)
{
}
else
{
return
TSDB_CODE_V
G
_INIT_FAILED
;
return
TSDB_CODE_V
ND
_INIT_FAILED
;
}
}
...
...
@@ -116,7 +116,7 @@ int32_t vnodeCreate(SMDCreateVnodeMsg *pVnodeCfg) {
code
=
tsdbCreateRepo
(
tsdbDir
,
&
tsdbCfg
,
NULL
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
vError
(
"vgId:%d, failed to create tsdb in vnode, reason:%s"
,
pVnodeCfg
->
cfg
.
vgId
,
tstrerror
(
code
));
return
TSDB_CODE_V
G
_INIT_FAILED
;
return
TSDB_CODE_V
ND
_INIT_FAILED
;
}
vPrint
(
"vgId:%d, vnode is created, clog:%d"
,
pVnodeCfg
->
cfg
.
vgId
,
pVnodeCfg
->
cfg
.
walLevel
);
...
...
@@ -128,13 +128,13 @@ int32_t vnodeCreate(SMDCreateVnodeMsg *pVnodeCfg) {
int32_t
vnodeDrop
(
int32_t
vgId
)
{
if
(
tsDnodeVnodesHash
==
NULL
)
{
vTrace
(
"vgId:%d, failed to drop, vgId not exist"
,
vgId
);
return
TSDB_CODE_INVALID_VGROUP_ID
;
return
TSDB_CODE_
VND_
INVALID_VGROUP_ID
;
}
SVnodeObj
**
ppVnode
=
(
SVnodeObj
**
)
taosHashGet
(
tsDnodeVnodesHash
,
(
const
char
*
)
&
vgId
,
sizeof
(
int32_t
));
if
(
ppVnode
==
NULL
||
*
ppVnode
==
NULL
)
{
vTrace
(
"vgId:%d, failed to drop, vgId not find"
,
vgId
);
return
TSDB_CODE_INVALID_VGROUP_ID
;
return
TSDB_CODE_
VND_
INVALID_VGROUP_ID
;
}
SVnodeObj
*
pVnode
=
*
ppVnode
;
...
...
@@ -326,7 +326,7 @@ void *vnodeGetVnode(int32_t vgId) {
SVnodeObj
**
ppVnode
=
(
SVnodeObj
**
)
taosHashGet
(
tsDnodeVnodesHash
,
(
const
char
*
)
&
vgId
,
sizeof
(
int32_t
));
if
(
ppVnode
==
NULL
||
*
ppVnode
==
NULL
)
{
terrno
=
TSDB_CODE_INVALID_VGROUP_ID
;
terrno
=
TSDB_CODE_
VND_
INVALID_VGROUP_ID
;
vPrint
(
"vgId:%d, not exist"
,
vgId
);
return
NULL
;
}
...
...
@@ -494,7 +494,7 @@ static int32_t vnodeSaveCfg(SMDCreateVnodeMsg *pVnodeCfg) {
char
*
content
=
calloc
(
1
,
maxLen
+
1
);
if
(
content
==
NULL
)
{
fclose
(
fp
);
return
TSDB_CODE_
NO_RESOURCE
;
return
TSDB_CODE_
VND_OUT_OF_MEMORY
;
}
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"{
\n
"
);
...
...
@@ -545,7 +545,7 @@ static int32_t vnodeReadCfg(SVnodeObj *pVnode) {
char
cfgFile
[
TSDB_FILENAME_LEN
+
30
]
=
{
0
};
int
maxLen
=
1000
;
terrno
=
TSDB_CODE_
OTHERS
;
terrno
=
TSDB_CODE_
VND_APP_ERROR
;
sprintf
(
cfgFile
,
"%s/vnode%d/config.json"
,
tsVnodeDir
,
pVnode
->
vgId
);
FILE
*
fp
=
fopen
(
cfgFile
,
"r"
);
if
(
!
fp
)
{
...
...
@@ -777,7 +777,7 @@ static int32_t vnodeReadVersion(SVnodeObj *pVnode) {
cJSON
*
root
=
NULL
;
int
maxLen
=
100
;
terrno
=
TSDB_CODE_
OTHERS
;
terrno
=
TSDB_CODE_
VND_APP_ERROR
;
sprintf
(
versionFile
,
"%s/vnode%d/version.json"
,
tsVnodeDir
,
pVnode
->
vgId
);
FILE
*
fp
=
fopen
(
versionFile
,
"r"
);
if
(
!
fp
)
{
...
...
src/vnode/src/vnodeRead.c
浏览文件 @
3bb9451c
...
...
@@ -40,10 +40,14 @@ int32_t vnodeProcessRead(void *param, int msgType, void *pCont, int32_t contLen,
SVnodeObj
*
pVnode
=
(
SVnodeObj
*
)
param
;
if
(
vnodeProcessReadMsgFp
[
msgType
]
==
NULL
)
return
TSDB_CODE_MSG_NOT_PROCESSED
;
return
TSDB_CODE_
VND_
MSG_NOT_PROCESSED
;
if
(
pVnode
->
status
==
TAOS_VN_STATUS_DELETING
||
pVnode
->
status
==
TAOS_VN_STATUS_CLOSING
)
return
TSDB_CODE_INVALID_VGROUP_ID
;
return
TSDB_CODE_VND_INVALID_VGROUP_ID
;
// TODO: Later, let slave to support query
if
(
pVnode
->
syncCfg
.
replica
>
1
&&
pVnode
->
role
!=
TAOS_SYNC_ROLE_MASTER
)
return
TSDB_CODE_RPC_NOT_READY
;
return
(
*
vnodeProcessReadMsgFp
[
msgType
])(
pVnode
,
pCont
,
contLen
,
ret
);
}
...
...
@@ -69,7 +73,7 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, void *pCont, int32_t cont
}
else
{
assert
(
pCont
!=
NULL
);
pQInfo
=
pCont
;
code
=
TSDB_CODE_ACTION_IN_PROGRESS
;
code
=
TSDB_CODE_
VND_
ACTION_IN_PROGRESS
;
}
if
(
pQInfo
!=
NULL
)
{
...
...
@@ -99,7 +103,7 @@ static int32_t vnodeProcessFetchMsg(SVnodeObj *pVnode, void *pCont, int32_t cont
if
(
qHasMoreResultsToRetrieve
(
pQInfo
))
{
pRet
->
qhandle
=
pQInfo
;
code
=
TSDB_CODE_ACTION_NEED_REPROCESSED
;
code
=
TSDB_CODE_
VND_
ACTION_NEED_REPROCESSED
;
}
else
{
// no further execution invoked, release the ref to vnode
qDestroyQueryInfo
(
pQInfo
);
...
...
src/vnode/src/vnodeWrite.c
浏览文件 @
3bb9451c
...
...
@@ -51,14 +51,14 @@ int32_t vnodeProcessWrite(void *param1, int qtype, void *param2, void *item) {
SWalHead
*
pHead
=
param2
;
if
(
vnodeProcessWriteMsgFp
[
pHead
->
msgType
]
==
NULL
)
return
TSDB_CODE_MSG_NOT_PROCESSED
;
return
TSDB_CODE_
VND_
MSG_NOT_PROCESSED
;
if
(
pHead
->
version
==
0
)
{
// from client or CQ
if
(
pVnode
->
status
!=
TAOS_VN_STATUS_READY
)
return
TSDB_CODE_INVALID_VGROUP_ID
;
// it may be in deleting or closing state
return
TSDB_CODE_
VND_
INVALID_VGROUP_ID
;
// it may be in deleting or closing state
if
(
pVnode
->
syncCfg
.
replica
>
1
&&
pVnode
->
role
!=
TAOS_SYNC_ROLE_MASTER
)
return
TSDB_CODE_NOT_READY
;
return
TSDB_CODE_
RPC_
NOT_READY
;
// assign version
pVnode
->
version
++
;
...
...
src/wal/src/walMain.c
浏览文件 @
3bb9451c
...
...
@@ -240,7 +240,7 @@ int walRestore(void *handle, void *pVnode, int (*writeFp)(void *, void *, int))
if
(
count
!=
(
maxId
-
minId
+
1
)
)
{
wError
(
"wal:%s, messed up, count:%d max:%d min:%d"
,
opath
,
count
,
maxId
,
minId
);
terrno
=
T
AOS_SYSTEM_ERROR
(
TSDB_CODE_APP_ERROR
)
;
terrno
=
T
SDB_CODE_WAL_APP_ERROR
;
}
else
{
wTrace
(
"wal:%s, %d files will be restored"
,
opath
,
count
);
...
...
tests/examples/C#/TDengineDriver.cs
浏览文件 @
3bb9451c
...
...
@@ -79,8 +79,6 @@ namespace TDengineDriver
class
TDengine
{
public
const
int
TSDB_CODE_SUCCESS
=
0
;
public
const
int
TSDB_CODE_DB_ALREADY_EXIST
=
33
;
public
const
int
TSDB_CODE_TABLE_ALREADY_EXIST
=
34
;
[
DllImport
(
"taos.dll"
,
EntryPoint
=
"taos_init"
,
CallingConvention
=
CallingConvention
.
StdCall
)]
static
extern
public
void
Init
();
...
...
tests/pytest/random-test/random-test-multi-threading-3.py
浏览文件 @
3bb9451c
...
...
@@ -13,7 +13,7 @@
import
sys
import
random
import
threading
from
threading
import
Thread
,
Event
from
util.log
import
*
from
util.cases
import
*
...
...
@@ -23,15 +23,15 @@ from util.dnodes import *
last_tb
=
""
last_stb
=
""
written
=
0
last_timestamp
=
0
class
Test
(
threading
.
Thread
):
def
__init__
(
self
,
threadId
,
name
):
threading
.
Thread
.
__init__
(
self
)
class
Test
(
Thread
):
def
__init__
(
self
,
threadId
,
name
,
events
):
Thread
.
__init__
(
self
)
self
.
threadId
=
threadId
self
.
name
=
name
self
.
threadLock
=
threading
.
Lock
()
self
.
dataEvent
,
self
.
dbEvent
,
self
.
queryEvent
=
events
def
create_table
(
self
):
tdLog
.
info
(
"create_table"
)
...
...
@@ -47,7 +47,7 @@ class Test (threading.Thread):
try
:
tdSql
.
execute
(
'create table %s (ts timestamp, speed int)'
%
'create table %s (ts timestamp, speed int
, c2 nchar(10)
)'
%
current_tb
)
last_tb
=
current_tb
written
=
0
...
...
@@ -58,21 +58,28 @@ class Test (threading.Thread):
tdLog
.
info
(
"insert_data"
)
global
last_tb
global
written
global
last_timestamp
if
(
last_tb
==
""
):
tdLog
.
info
(
"no table, create first"
)
self
.
create_table
()
start_time
=
1500000000000
tdLog
.
info
(
"will insert data to table"
)
for
i
in
range
(
0
,
10
):
insertRows
=
1000
tdLog
.
info
(
"insert %d rows to %s"
%
(
insertRows
,
last_tb
))
for
j
in
range
(
0
,
insertRows
):
ret
=
tdSql
.
execute
(
'insert into %s values (now + %dm, %d)'
%
(
last_tb
,
j
,
j
))
if
(
last_tb
==
""
):
tdLog
.
info
(
"no table, return"
)
return
tdSql
.
execute
(
'insert into %s values (%d + %da, %d, "test")'
%
(
last_tb
,
start_time
,
last_timestamp
,
last_timestamp
))
written
=
written
+
1
last_timestamp
=
last_timestamp
+
1
def
query_data
(
self
):
tdLog
.
info
(
"query_data"
)
...
...
@@ -89,6 +96,7 @@ class Test (threading.Thread):
global
last_tb
global
last_stb
global
written
global
last_timestamp
current_stb
=
"stb%d"
%
int
(
round
(
time
.
time
()
*
1000
))
...
...
@@ -106,10 +114,15 @@ class Test (threading.Thread):
"create table %s using %s tags (1, '表1')"
%
(
current_tb
,
last_stb
))
last_tb
=
current_tb
written
=
0
start_time
=
1500000000000
tdSql
.
execute
(
"insert into %s values (
now
, 27, '我是nchar字符串')"
%
last_tb
)
"insert into %s values (
%d+%da
, 27, '我是nchar字符串')"
%
(
last_tb
,
start_time
,
last_timestamp
)
)
written
=
written
+
1
last_timestamp
=
last_timestamp
+
1
def
drop_stable
(
self
):
tdLog
.
info
(
"drop_stable"
)
...
...
@@ -179,15 +192,16 @@ class Test (threading.Thread):
tdDnodes
.
forcestop
(
1
)
tdDnodes
.
deploy
(
1
)
tdDnodes
.
start
(
1
)
tdSql
.
prepare
()
last_tb
=
""
last_stb
=
""
written
=
0
tdDnodes
.
start
(
1
)
tdSql
.
prepare
()
def
delete_datafiles
(
self
):
tdLog
.
info
(
"delete_data_files"
)
global
last_tb
global
last_stb
global
written
dnodesDir
=
tdDnodes
.
getDnodesRootDir
()
...
...
@@ -195,16 +209,15 @@ class Test (threading.Thread):
deleteCmd
=
'rm -rf %s'
%
dataDir
os
.
system
(
deleteCmd
)
last_tb
=
""
written
=
0
tdDnodes
.
start
(
1
)
tdSql
.
prepare
()
last_tb
=
""
last_stb
=
""
written
=
0
def
run
(
self
):
dataOp
=
{
1
:
self
.
insert_data
,
2
:
self
.
query_data
,
3
:
self
.
query_data_from_stable
,
}
dbOp
=
{
...
...
@@ -226,26 +239,33 @@ class Test (threading.Thread):
if
(
self
.
threadId
==
1
):
while
True
:
self
.
threadLock
.
acquire
()
self
.
dataEvent
.
wait
()
tdLog
.
notice
(
"first thread"
)
randDataOp
=
random
.
randint
(
1
,
3
)
randDataOp
=
random
.
randint
(
1
,
1
)
dataOp
.
get
(
randDataOp
,
lambda
:
"ERROR"
)()
self
.
threadLock
.
release
()
self
.
dataEvent
.
clear
()
self
.
queryEvent
.
clear
()
self
.
dbEvent
.
set
()
elif
(
self
.
threadId
==
2
):
while
True
:
self
.
dbEvent
.
wait
()
tdLog
.
notice
(
"second thread"
)
self
.
threadLock
.
acquire
()
randDbOp
=
random
.
randint
(
1
,
9
)
dbOp
.
get
(
randDbOp
,
lambda
:
"ERROR"
)()
self
.
threadLock
.
release
()
self
.
dbEvent
.
clear
()
self
.
dataEvent
.
clear
()
self
.
queryEvent
.
set
()
elif
(
self
.
threadId
==
3
):
while
True
:
self
.
queryEvent
.
wait
()
tdLog
.
notice
(
"third thread"
)
self
.
threadLock
.
acquire
()
randQueryOp
=
random
.
randint
(
1
,
9
)
queryOp
.
get
(
randQueryOp
,
lambda
:
"ERROR"
)()
self
.
threadLock
.
release
()
self
.
queryEvent
.
clear
()
self
.
dbEvent
.
clear
()
self
.
dataEvent
.
set
()
class
TDTestCase
:
...
...
@@ -256,13 +276,19 @@ class TDTestCase:
def
run
(
self
):
tdSql
.
prepare
()
test1
=
Test
(
1
,
"data operation"
)
test2
=
Test
(
2
,
"db operation"
)
test2
=
Test
(
3
,
"query operation"
)
events
=
[
Event
()
for
_
in
range
(
3
)]
events
[
0
].
set
()
events
[
1
].
clear
()
events
[
1
].
clear
()
test1
=
Test
(
1
,
"data operation"
,
events
)
test2
=
Test
(
2
,
"db operation"
,
events
)
test3
=
Test
(
3
,
"query operation"
,
events
)
test1
.
start
()
test2
.
start
()
test3
.
start
()
test1
.
join
()
test2
.
join
()
test3
.
join
()
...
...
tests/pytest/random-test/random-test-multi-threading.py
浏览文件 @
3bb9451c
...
...
@@ -23,6 +23,7 @@ from util.dnodes import *
last_tb
=
""
last_stb
=
""
written
=
0
last_timestamp
=
0
class
Test
(
threading
.
Thread
):
...
...
@@ -47,7 +48,7 @@ class Test (threading.Thread):
try
:
tdSql
.
execute
(
'create table %s (ts timestamp, speed int)'
%
'create table %s (ts timestamp, speed int
, c1 nchar(10)
)'
%
current_tb
)
last_tb
=
current_tb
written
=
0
...
...
@@ -58,21 +59,28 @@ class Test (threading.Thread):
tdLog
.
info
(
"insert_data"
)
global
last_tb
global
written
global
last_timestamp
if
(
last_tb
==
""
):
tdLog
.
info
(
"no table, create first"
)
self
.
create_table
()
start_time
=
1500000000000
tdLog
.
info
(
"will insert data to table"
)
for
i
in
range
(
0
,
10
):
insertRows
=
1000
tdLog
.
info
(
"insert %d rows to %s"
%
(
insertRows
,
last_tb
))
for
j
in
range
(
0
,
insertRows
):
ret
=
tdSql
.
execute
(
'insert into %s values (now + %dm, %d)'
%
(
last_tb
,
j
,
j
))
if
(
last_tb
==
""
):
tdLog
.
info
(
"no table, return"
)
return
tdSql
.
execute
(
'insert into %s values (%d + %da, %d, "test")'
%
(
last_tb
,
start_time
,
last_timestamp
,
last_timestamp
))
written
=
written
+
1
last_timestamp
=
last_timestamp
+
1
def
query_data
(
self
):
tdLog
.
info
(
"query_data"
)
...
...
@@ -89,6 +97,7 @@ class Test (threading.Thread):
global
last_tb
global
last_stb
global
written
global
last_timestamp
current_stb
=
"stb%d"
%
int
(
round
(
time
.
time
()
*
1000
))
...
...
@@ -106,10 +115,15 @@ class Test (threading.Thread):
"create table %s using %s tags (1, '表1')"
%
(
current_tb
,
last_stb
))
last_tb
=
current_tb
written
=
0
start_time
=
1500000000000
tdSql
.
execute
(
"insert into %s values (
now
, 27, '我是nchar字符串')"
%
last_tb
)
"insert into %s values (
%d+%da
, 27, '我是nchar字符串')"
%
(
last_tb
,
start_time
,
last_timestamp
)
)
written
=
written
+
1
last_timestamp
=
last_timestamp
+
1
def
drop_stable
(
self
):
tdLog
.
info
(
"drop_stable"
)
...
...
@@ -130,7 +144,7 @@ class Test (threading.Thread):
tdDnodes
.
stop
(
1
)
tdDnodes
.
start
(
1
)
tdLog
.
sleep
(
5
)
#
tdLog.sleep(5)
def
force_restart_database
(
self
):
tdLog
.
info
(
"force_restart_database"
)
...
...
@@ -139,7 +153,7 @@ class Test (threading.Thread):
tdDnodes
.
forcestop
(
1
)
tdDnodes
.
start
(
1
)
tdLog
.
sleep
(
10
)
#
tdLog.sleep(10)
def
drop_table
(
self
):
tdLog
.
info
(
"drop_table"
)
...
...
@@ -171,7 +185,7 @@ class Test (threading.Thread):
tdLog
.
info
(
"reset query cache"
)
tdSql
.
execute
(
"reset query cache"
)
tdLog
.
sleep
(
1
)
#
tdLog.sleep(1)
def
reset_database
(
self
):
tdLog
.
info
(
"reset_database"
)
...
...
@@ -181,15 +195,16 @@ class Test (threading.Thread):
tdDnodes
.
forcestop
(
1
)
tdDnodes
.
deploy
(
1
)
tdDnodes
.
start
(
1
)
tdSql
.
prepare
()
last_tb
=
""
last_stb
=
""
written
=
0
tdDnodes
.
start
(
1
)
tdSql
.
prepare
()
def
delete_datafiles
(
self
):
tdLog
.
info
(
"delete_data_files"
)
global
last_tb
global
last_stb
global
written
dnodesDir
=
tdDnodes
.
getDnodesRootDir
()
...
...
@@ -197,11 +212,12 @@ class Test (threading.Thread):
deleteCmd
=
'rm -rf %s'
%
dataDir
os
.
system
(
deleteCmd
)
last_tb
=
""
written
=
0
tdDnodes
.
start
(
1
)
tdLog
.
sleep
(
10
)
#
tdLog.sleep(10)
tdSql
.
prepare
()
last_tb
=
""
last_stb
=
""
written
=
0
def
run
(
self
):
dataOp
=
{
...
...
tests/pytest/util/dnodes.py
浏览文件 @
3bb9451c
...
...
@@ -160,7 +160,7 @@ class TDDnode:
self
.
cfg
(
"logDir"
,
self
.
logDir
)
self
.
cfg
(
"numOfLogLines"
,
"100000000"
)
self
.
cfg
(
"mnodeEqualVnodeNum"
,
"0"
)
self
.
cfg
(
"
clog
"
,
"1"
)
self
.
cfg
(
"
walLevel
"
,
"1"
)
self
.
cfg
(
"statusInterval"
,
"1"
)
self
.
cfg
(
"numOfTotalVnodes"
,
"64"
)
self
.
cfg
(
"numOfMnodes"
,
"3"
)
...
...
tests/script/unique/arbitrator/dn3_mn1_vnode_nomaster.sim
0 → 100644
浏览文件 @
3bb9451c
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/deploy.sh -n dnode2 -i 2
system sh/deploy.sh -n dnode3 -i 3
system sh/deploy.sh -n dnode4 -i 4
system sh/cfg.sh -n dnode1 -c numOfMnodes -v 1
system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1
system sh/cfg.sh -n dnode1 -c walLevel -v 2
system sh/cfg.sh -n dnode2 -c walLevel -v 2
system sh/cfg.sh -n dnode3 -c walLevel -v 2
system sh/cfg.sh -n dnode4 -c walLevel -v 2
system sh/cfg.sh -n dnode1 -c balanceInterval -v 10
system sh/cfg.sh -n dnode2 -c balanceInterval -v 10
system sh/cfg.sh -n dnode3 -c balanceInterval -v 10
system sh/cfg.sh -n dnode4 -c balanceInterval -v 10
system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4
system sh/cfg.sh -n dnode1 -c alternativeRole -v 1
system sh/cfg.sh -n dnode2 -c alternativeRole -v 2
system sh/cfg.sh -n dnode3 -c alternativeRole -v 2
system sh/cfg.sh -n dnode4 -c alternativeRole -v 2
system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode3 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode4 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode5 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode1 -c arbitrator -v $arbitrator
system sh/cfg.sh -n dnode2 -c arbitrator -v $arbitrator
system sh/cfg.sh -n dnode3 -c arbitrator -v $arbitrator
print ============== step0: start tarbitrator
system sh/exec_tarbitrator.sh -s start
print ============== step1: start dnode1, only deploy mnode
system sh/exec.sh -n dnode1 -s start
sleep 3000
sql connect
print ============== step2: start dnode2/dnode3/dnode4 and add into cluster , then create database with replica 3, and create table, insert data
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode4 -s start
sql create dnode $hostname2
sql create dnode $hostname3
sql create dnode $hostname4
sleep 3000
$totalTableNum = 100
$sleepTimer = 3000
$db = db
sql create database $db replica 3 maxTables $totalTableNum
sql use $db
# create table , insert data
$stb = stb
sql create table $stb (ts timestamp, c1 int) tags(t1 int)
$rowNum = 100
$tblNum = $totalTableNum
$totalRows = 0
$tsStart = 1420041600000
$i = 0
while $i < $tblNum
$tb = tb . $i
sql create table $tb using $stb tags( $i )
$x = 0
while $x < $rowNum
$ts = $tsStart + $x
sql insert into $tb values ( $ts + 0a , $x ) ( $ts + 1a , $x ) ( $ts + 2a , $x ) ( $ts + 3a , $x ) ( $ts + 4a , $x ) ( $ts + 5a , $x ) ( $ts + 6a , $x ) ( $ts + 7a , $x ) ( $ts + 8a , $x ) ( $ts + 9a , $x ) ( $ts + 10a , $x ) ( $ts + 11a , $x ) ( $ts + 12a , $x ) ( $ts + 13a , $x ) ( $ts + 14a , $x ) ( $ts + 15a , $x ) ( $ts + 16a , $x ) ( $ts + 17a , $x ) ( $ts + 18a , $x ) ( $ts + 19a , $x ) ( $ts + 20a , $x ) ( $ts + 21a , $x ) ( $ts + 22a , $x ) ( $ts + 23a , $x ) ( $ts + 24a , $x ) ( $ts + 25a , $x ) ( $ts + 26a , $x ) ( $ts + 27a , $x ) ( $ts + 28a , $x ) ( $ts + 29a , $x ) ( $ts + 30a , $x ) ( $ts + 31a , $x ) ( $ts + 32a , $x ) ( $ts + 33a , $x ) ( $ts + 34a , $x ) ( $ts + 25a , $x ) ( $ts + 26a , $x ) ( $ts + 27a , $x ) ( $ts + 28a , $x ) ( $ts + 29a , $x ) ( $ts + 30a , $x ) ( $ts + 31a , $x ) ( $ts + 32a , $x ) ( $ts + 33a , $x ) ( $ts + 34a , $x ) ( $ts + 35a , $x ) ( $ts + 36a , $x ) ( $ts + 37a , $x ) ( $ts + 38a , $x ) ( $ts + 39a , $x ) ( $ts + 40a , $x ) ( $ts + 41a , $x ) ( $ts + 42a , $x ) ( $ts + 43a , $x ) ( $ts + 44a , $x ) ( $ts + 45a , $x ) ( $ts + 46a , $x ) ( $ts + 47a , $x ) ( $ts + 48a , $x ) ( $ts + 49a , $x ) ( $ts + 50a , $x ) ( $ts + 51a , $x ) ( $ts + 52a , $x ) ( $ts + 53a , $x ) ( $ts + 54a , $x ) ( $ts + 55a , $x ) ( $ts + 56a , $x ) ( $ts + 57a , $x ) ( $ts + 58a , $x ) ( $ts + 59a , $x )
$x = $x + 60
endw
$totalRows = $totalRows + $x
print info: inserted $x rows into $tb and totalRows: $totalRows
$i = $i + 1
endw
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
return -1
endi
print ============== step3: stop dnode4/dnode2
system sh/exec.sh -n dnode4 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep $sleepTimer
wait_dnode4_offline_0:
sql show dnodes
if $rows != 4 then
sleep 2000
goto wait_dnode4_offline_0
endi
print $data0_1 $data1_1 $data2_1 $data3_1 $data4_1
print $data0_2 $data1_2 $data2_2 $data3_2 $data4_2
print $data0_3 $data1_3 $data2_3 $data3_3 $data4_3
#print $data0_4 $data1_4 $data2_4 $data3_4 $data4_4
#print $data0_5 $data1_5 $data2_5 $data3_5 $data4_5
#print $data0_6 $data1_6 $data2_6 $data3_6 $data4_6
#$dnode1Status = $data4_1
$dnode2Status = $data4_2
$dnode3Status = $data4_3
$dnode4Status = $data4_4
#$dnode5Status = $data4_5
if $dnode4Status != offline then
sleep 2000
goto wait_dnode4_offline_0
endi
if $dnode2Status != offline then
sleep 2000
goto wait_dnode4_offline_0
endi
wait_dnode4_vgroup_offline:
sql show vgroups
if $rows != 1 then
sleep 2000
goto wait_dnode4_vgroup_offline
endi
print show vgroups:
print $data0_1 $data1_1 $data2_1 $data3_1 $data4_1 $data5_1 $data6_1 $data7_1 $data8_1 $data9_1
print $data0_2 $data1_2 $data2_2 $data3_2 $data4_2 $data5_2 $data6_2 $data7_2 $data8_2 $data9_2
print $data0_3 $data1_3 $data2_3 $data3_3 $data4_3 $data5_3 $data6_3 $data7_3 $data8_3 $data9_3
$dnode4Vtatus = $data4_2
$dnode3Vtatus = $data7_2
if $dnode4Vtatus != offline then
sleep 2000
goto wait_dnode4_vgroup_offline
endi
if $dnode3Vtatus != unsynced then
sleep 2000
goto wait_dnode4_vgroup_offline
endi
sql_error select count(*) from $stb
sql_error insert into $tb values (now, 9988)
print ============== step4: restart dnode2, then create database with replica 2, and create table, insert data
system sh/exec.sh -n dnode2 -s start
sleep 3000
$totalTableNum = 100
$sleepTimer = 3000
$db = db1
sql create database $db replica 2 maxTables $totalTableNum
sql use $db
# create table , insert data
$stb = stb
sql create table $stb (ts timestamp, c1 int) tags(t1 int)
$rowNum = 100
$tblNum = $totalTableNum
$totalRows = 0
$tsStart = 1420041600000
$i = 0
while $i < $tblNum
$tb = tb . $i
sql create table $tb using $stb tags( $i )
$x = 0
while $x < $rowNum
$ts = $tsStart + $x
sql insert into $tb values ( $ts + 0a , $x ) ( $ts + 1a , $x ) ( $ts + 2a , $x ) ( $ts + 3a , $x ) ( $ts + 4a , $x ) ( $ts + 5a , $x ) ( $ts + 6a , $x ) ( $ts + 7a , $x ) ( $ts + 8a , $x ) ( $ts + 9a , $x ) ( $ts + 10a , $x ) ( $ts + 11a , $x ) ( $ts + 12a , $x ) ( $ts + 13a , $x ) ( $ts + 14a , $x ) ( $ts + 15a , $x ) ( $ts + 16a , $x ) ( $ts + 17a , $x ) ( $ts + 18a , $x ) ( $ts + 19a , $x ) ( $ts + 20a , $x ) ( $ts + 21a , $x ) ( $ts + 22a , $x ) ( $ts + 23a , $x ) ( $ts + 24a , $x ) ( $ts + 25a , $x ) ( $ts + 26a , $x ) ( $ts + 27a , $x ) ( $ts + 28a , $x ) ( $ts + 29a , $x ) ( $ts + 30a , $x ) ( $ts + 31a , $x ) ( $ts + 32a , $x ) ( $ts + 33a , $x ) ( $ts + 34a , $x ) ( $ts + 25a , $x ) ( $ts + 26a , $x ) ( $ts + 27a , $x ) ( $ts + 28a , $x ) ( $ts + 29a , $x ) ( $ts + 30a , $x ) ( $ts + 31a , $x ) ( $ts + 32a , $x ) ( $ts + 33a , $x ) ( $ts + 34a , $x ) ( $ts + 35a , $x ) ( $ts + 36a , $x ) ( $ts + 37a , $x ) ( $ts + 38a , $x ) ( $ts + 39a , $x ) ( $ts + 40a , $x ) ( $ts + 41a , $x ) ( $ts + 42a , $x ) ( $ts + 43a , $x ) ( $ts + 44a , $x ) ( $ts + 45a , $x ) ( $ts + 46a , $x ) ( $ts + 47a , $x ) ( $ts + 48a , $x ) ( $ts + 49a , $x ) ( $ts + 50a , $x ) ( $ts + 51a , $x ) ( $ts + 52a , $x ) ( $ts + 53a , $x ) ( $ts + 54a , $x ) ( $ts + 55a , $x ) ( $ts + 56a , $x ) ( $ts + 57a , $x ) ( $ts + 58a , $x ) ( $ts + 59a , $x )
$x = $x + 60
endw
$totalRows = $totalRows + $x
print info: inserted $x rows into $tb and totalRows: $totalRows
$i = $i + 1
endw
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
return -1
endi
print ============== step5: stop dnode3
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep $sleepTimer
wait_dnode3_offline_0:
sql show dnodes
if $rows != 4 then
sleep 2000
goto wait_dnode3_offline_0
endi
print $data0_1 $data1_1 $data2_1 $data3_1 $data4_1
print $data0_2 $data1_2 $data2_2 $data3_2 $data4_2
print $data0_3 $data1_3 $data2_3 $data3_3 $data4_3
print $data0_4 $data1_4 $data2_4 $data3_4 $data4_4
$dnode1Status = $data4_1
$dnode2Status = $data4_2
$dnode3Status = $data4_3
$dnode4Status = $data4_4
print dnode1Status $dnode1Status
print dnode2Status $dnode2Status
print dnode3Status $dnode3Status
print dnode4Status $dnode4Status
if $dnode3Status != offline then
sleep 2000
goto wait_dnode3_offline_0
endi
if $dnode2Status != ready then
sleep 2000
goto wait_dnode3_offline_0
endi
wait_dnode2_vgroup_master:
sql show vgroups
if $rows != 1 then
sleep 2000
goto wait_dnode2_vgroup_master
endi
print show vgroups:
print $data0_1 $data1_1 $data2_1 $data3_1 $data4_1 $data5_1 $data6_1 $data7_1 $data8_1 $data9_1
print $data0_2 $data1_2 $data2_2 $data3_2 $data4_2 $data5_2 $data6_2 $data7_2 $data8_2 $data9_2
print $data0_3 $data1_3 $data2_3 $data3_3 $data4_3 $data5_3 $data6_3 $data7_3 $data8_3 $data9_3
$dnode3Vtatus = $data4_3
$dnode2Vtatus = $data7_3
if $dnode3Vtatus != offline then
sleep 2000
goto wait_dnode2_vgroup_master
endi
if $dnode2Vtatus != master then
sleep 2000
goto wait_dnode2_vgroup_master
endi
sql insert into tb98 values (now, 9000) (now + 1s, 9001) (now + 2s, 9002) tb99 values (now, 9000) (now + 1s, 9001) (now + 2s, 9002)
$totalRows = $totalRows + 6
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
return -1
endi
tests/tsim/src/simExe.c
浏览文件 @
3bb9451c
...
...
@@ -538,7 +538,7 @@ int simExecuteRestFulCommand(SScript *script, char *command) {
FILE
*
fp
=
popen
(
buf
,
"r"
);
if
(
fp
==
NULL
)
{
simError
(
"failed to execute %s"
,
buf
);
return
TSDB_CODE_OTHERS
;
return
-
1
;
}
int
mallocSize
=
2000
;
...
...
@@ -642,7 +642,7 @@ bool simExecuteNativeSqlCommand(SScript *script, char *rest, bool isSlow) {
pSql
=
taos_query
(
script
->
taos
,
rest
);
ret
=
taos_errno
(
pSql
);
if
(
ret
==
TSDB_CODE_
TABLE_ALREADY_EXIST
||
ret
==
TSDB_CODE
_DB_ALREADY_EXIST
)
{
if
(
ret
==
TSDB_CODE_
MND_TABLE_ALREADY_EXIST
||
ret
==
TSDB_CODE_MND
_DB_ALREADY_EXIST
)
{
simTrace
(
"script:%s, taos:%p, %s success, ret:%d:%s"
,
script
->
fileName
,
script
->
taos
,
rest
,
ret
,
tstrerror
(
ret
));
ret
=
0
;
break
;
...
...
@@ -791,8 +791,8 @@ bool simExecuteRestFulSqlCommand(SScript *script, char *rest) {
int
ret
=
-
1
;
for
(
int
attempt
=
0
;
attempt
<
10
;
++
attempt
)
{
ret
=
simExecuteRestFulCommand
(
script
,
command
);
if
(
ret
==
TSDB_CODE_TABLE_ALREADY_EXIST
||
ret
==
TSDB_CODE_DB_ALREADY_EXIST
)
{
if
(
ret
==
TSDB_CODE_
MND_
TABLE_ALREADY_EXIST
||
ret
==
TSDB_CODE_
MND_
DB_ALREADY_EXIST
)
{
simTrace
(
"script:%s, taos:%p, %s success, ret:%d:%s"
,
script
->
fileName
,
script
->
taos
,
rest
,
ret
,
tstrerror
(
ret
));
ret
=
0
;
break
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录