Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
ded484b5
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
ded484b5
编写于
2月 10, 2020
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
差异文件
Merge branch '2.0' of
https://github.com/taosdata/TDengine
into 2.0
上级
aefd622e
47141019
变更
100
展开全部
隐藏空白更改
内联
并排
Showing
100 changed file
with
920 addition
and
859 deletion
+920
-859
README.md
README.md
+4
-2
packaging/deb/makedeb.sh
packaging/deb/makedeb.sh
+1
-1
packaging/rpm/makerpm.sh
packaging/rpm/makerpm.sh
+1
-1
packaging/tools/makeclient.sh
packaging/tools/makeclient.sh
+1
-1
packaging/tools/makepkg.sh
packaging/tools/makepkg.sh
+2
-2
src/client/inc/tscUtil.h
src/client/inc/tscUtil.h
+2
-2
src/client/inc/tsclient.h
src/client/inc/tsclient.h
+4
-4
src/client/src/taos.def
src/client/src/taos.def
+0
-2
src/client/src/tscFunctionImpl.c
src/client/src/tscFunctionImpl.c
+1
-1
src/client/src/tscLocal.c
src/client/src/tscLocal.c
+2
-2
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+3
-3
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+6
-6
src/client/src/tscServer.c
src/client/src/tscServer.c
+14
-14
src/client/src/tscSql.c
src/client/src/tscSql.c
+1
-1
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+2
-2
src/dnode/src/dnodeMgmt.c
src/dnode/src/dnodeMgmt.c
+2
-2
src/inc/mnode.h
src/inc/mnode.h
+12
-25
src/inc/taosmsg.h
src/inc/taosmsg.h
+23
-20
src/inc/tsdb.h
src/inc/tsdb.h
+1
-1
src/mnode/CMakeLists.txt
src/mnode/CMakeLists.txt
+9
-11
src/mnode/inc/mgmtAcct.h
src/mnode/inc/mgmtAcct.h
+1
-1
src/mnode/inc/mgmtBalance.h
src/mnode/inc/mgmtBalance.h
+14
-42
src/mnode/inc/mgmtProfile.h
src/mnode/inc/mgmtProfile.h
+1
-1
src/mnode/inc/mgmtSupertableQuery.h
src/mnode/inc/mgmtSupertableQuery.h
+29
-0
src/mnode/inc/mgmtTable.h
src/mnode/inc/mgmtTable.h
+26
-0
src/mnode/inc/mgmtUtil.h
src/mnode/inc/mgmtUtil.h
+15
-25
src/mnode/src/mgmtAcct.c
src/mnode/src/mgmtAcct.c
+1
-1
src/mnode/src/mgmtBalance.c
src/mnode/src/mgmtBalance.c
+22
-10
src/mnode/src/mgmtConn.c
src/mnode/src/mgmtConn.c
+2
-4
src/mnode/src/mgmtDb.c
src/mnode/src/mgmtDb.c
+2
-2
src/mnode/src/mgmtDnode.c
src/mnode/src/mgmtDnode.c
+1
-1
src/mnode/src/mgmtDnode.spec.c
src/mnode/src/mgmtDnode.spec.c
+1
-1
src/mnode/src/mgmtDnodeInt.c
src/mnode/src/mgmtDnodeInt.c
+29
-29
src/mnode/src/mgmtDnodeInt.spec.c
src/mnode/src/mgmtDnodeInt.spec.c
+1
-1
src/mnode/src/mgmtGrant.c
src/mnode/src/mgmtGrant.c
+1
-1
src/mnode/src/mgmtMnode.spec.c
src/mnode/src/mgmtMnode.spec.c
+1
-1
src/mnode/src/mgmtProfile.c
src/mnode/src/mgmtProfile.c
+2
-2
src/mnode/src/mgmtShell.c
src/mnode/src/mgmtShell.c
+30
-30
src/mnode/src/mgmtShell.spec.c
src/mnode/src/mgmtShell.spec.c
+1
-1
src/mnode/src/mgmtSupertableQuery.c
src/mnode/src/mgmtSupertableQuery.c
+56
-49
src/mnode/src/mgmtSystem.c
src/mnode/src/mgmtSystem.c
+1
-1
src/mnode/src/mgmtSystem.spec.c
src/mnode/src/mgmtSystem.spec.c
+1
-1
src/mnode/src/mgmtTable.c
src/mnode/src/mgmtTable.c
+389
-389
src/mnode/src/mgmtUser.c
src/mnode/src/mgmtUser.c
+1
-1
src/mnode/src/mgmtUtil.c
src/mnode/src/mgmtUtil.c
+21
-38
src/mnode/src/mgmtVgroup.c
src/mnode/src/mgmtVgroup.c
+9
-9
src/modules/monitor/src/monitorSystem.c
src/modules/monitor/src/monitorSystem.c
+1
-1
src/rpc/src/trpc.c
src/rpc/src/trpc.c
+1
-1
src/sdb/src/hashstr.c
src/sdb/src/hashstr.c
+1
-1
src/util/CMakeLists.txt
src/util/CMakeLists.txt
+4
-1
src/util/inc/buildInfo.h
src/util/inc/buildInfo.h
+0
-0
src/util/inc/hash.h
src/util/inc/hash.h
+0
-0
src/util/inc/hashutil.h
src/util/inc/hashutil.h
+0
-0
src/util/inc/ihash.h
src/util/inc/ihash.h
+0
-0
src/util/inc/lz4.h
src/util/inc/lz4.h
+0
-0
src/util/inc/shash.h
src/util/inc/shash.h
+0
-0
src/util/inc/tast.h
src/util/inc/tast.h
+0
-0
src/util/inc/tcache.h
src/util/inc/tcache.h
+0
-0
src/util/inc/tchecksum.h
src/util/inc/tchecksum.h
+0
-0
src/util/inc/tcrc32c.h
src/util/inc/tcrc32c.h
+0
-0
src/util/inc/textbuffer.h
src/util/inc/textbuffer.h
+0
-0
src/util/inc/tglobalcfg.h
src/util/inc/tglobalcfg.h
+0
-0
src/util/inc/thash.h
src/util/inc/thash.h
+0
-0
src/util/inc/thistogram.h
src/util/inc/thistogram.h
+0
-0
src/util/inc/tidpool.h
src/util/inc/tidpool.h
+0
-0
src/util/inc/tinterpolation.h
src/util/inc/tinterpolation.h
+0
-0
src/util/inc/tkey.h
src/util/inc/tkey.h
+0
-0
src/util/inc/tlog.h
src/util/inc/tlog.h
+0
-0
src/util/inc/tlosertree.h
src/util/inc/tlosertree.h
+0
-0
src/util/inc/tmd5.h
src/util/inc/tmd5.h
+0
-0
src/util/inc/tmempool.h
src/util/inc/tmempool.h
+0
-0
src/util/inc/tmodule.h
src/util/inc/tmodule.h
+0
-0
src/util/inc/tnote.h
src/util/inc/tnote.h
+0
-0
src/util/inc/tsched.h
src/util/inc/tsched.h
+0
-0
src/util/inc/tschemautil.h
src/util/inc/tschemautil.h
+0
-0
src/util/inc/tscompression.h
src/util/inc/tscompression.h
+0
-0
src/util/inc/tskiplist.h
src/util/inc/tskiplist.h
+0
-0
src/util/inc/tsocket.h
src/util/inc/tsocket.h
+0
-0
src/util/inc/tsqldef.h
src/util/inc/tsqldef.h
+0
-0
src/util/inc/tsqlfunction.h
src/util/inc/tsqlfunction.h
+0
-0
src/util/inc/tstatus.h
src/util/inc/tstatus.h
+4
-2
src/util/inc/tstoken.h
src/util/inc/tstoken.h
+0
-0
src/util/inc/tstrbuild.h
src/util/inc/tstrbuild.h
+0
-0
src/util/inc/tsystem.h
src/util/inc/tsystem.h
+0
-0
src/util/inc/ttime.h
src/util/inc/ttime.h
+0
-0
src/util/inc/ttimer.h
src/util/inc/ttimer.h
+0
-0
src/util/inc/ttypes.h
src/util/inc/ttypes.h
+0
-0
src/util/inc/tutil.h
src/util/inc/tutil.h
+0
-0
src/util/src/tglobalcfg.c
src/util/src/tglobalcfg.c
+5
-0
src/util/src/tstatus.c
src/util/src/tstatus.c
+1
-2
src/util/src/ttime.c
src/util/src/ttime.c
+38
-1
src/util/src/ttypes.c
src/util/src/ttypes.c
+10
-0
src/util/src/version.c
src/util/src/version.c
+5
-5
src/vnode/detail/inc/vnode.h
src/vnode/detail/inc/vnode.h
+1
-1
src/vnode/detail/inc/vnodeRead.h
src/vnode/detail/inc/vnodeRead.h
+1
-1
src/vnode/detail/src/vnodeFile.c
src/vnode/detail/src/vnodeFile.c
+62
-62
src/vnode/detail/src/vnodeImport.c
src/vnode/detail/src/vnodeImport.c
+3
-3
src/vnode/detail/src/vnodeQueryImpl.c
src/vnode/detail/src/vnodeQueryImpl.c
+9
-9
src/vnode/detail/src/vnodeStream.c
src/vnode/detail/src/vnodeStream.c
+7
-7
src/vnode/detail/src/vnodeUtil.c
src/vnode/detail/src/vnodeUtil.c
+18
-18
未找到文件。
README.md
浏览文件 @
ded484b5
...
...
@@ -45,13 +45,15 @@ mkdir build && cd build
cmake .. && cmake --build .
```
if compiling on an ARM processor(aarch64 or aarch32), you need add one parameter
:
To compile on an ARM processor (aarch64 or aarch32), please add option CPUTYPE as below
:
```
cmd
aarch64:
```
cmd
cmake .. -DCPUTYPE=aarch64 && cmake --build .
```
aarch32:
```
cmd
cmake .. -DCPUTYPE=aarch32 && cmake --build .
```
...
...
packaging/deb/makedeb.sh
浏览文件 @
ded484b5
...
...
@@ -73,7 +73,7 @@ sed -i "2c$debver" ${pkg_dir}/DEBIAN/control
if
[
"
$verMode
"
==
"cluster"
]
;
then
debname
=
"TDengine-server-"
${
tdengine_ver
}
-
${
osType
}
-
${
cpuType
}
elif
[
"
$verMode
"
==
"lite"
]
;
then
debname
=
"TDengine-server
-edge
"
-
${
tdengine_ver
}
-
${
osType
}
-
${
cpuType
}
debname
=
"TDengine-server"
-
${
tdengine_ver
}
-
${
osType
}
-
${
cpuType
}
else
echo
"unknow verMode, nor cluster or lite"
exit
1
...
...
packaging/rpm/makerpm.sh
浏览文件 @
ded484b5
...
...
@@ -66,7 +66,7 @@ cp_rpm_package ${pkg_dir}/RPMS
if
[
"
$verMode
"
==
"cluster"
]
;
then
rpmname
=
"TDengine-server-"
${
tdengine_ver
}
-
${
osType
}
-
${
cpuType
}
elif
[
"
$verMode
"
==
"lite"
]
;
then
rpmname
=
"TDengine-server
-edge
"
-
${
tdengine_ver
}
-
${
osType
}
-
${
cpuType
}
rpmname
=
"TDengine-server"
-
${
tdengine_ver
}
-
${
osType
}
-
${
cpuType
}
else
echo
"unknow verMode, nor cluster or lite"
exit
1
...
...
packaging/tools/makeclient.sh
浏览文件 @
ded484b5
...
...
@@ -111,7 +111,7 @@ cd ${release_dir}
if
[
"
$verMode
"
==
"cluster"
]
;
then
pkg_name
=
${
install_dir
}
-
${
version
}
-
${
osType
}
-
${
cpuType
}
elif
[
"
$verMode
"
==
"lite"
]
;
then
pkg_name
=
${
install_dir
}
-
edge-
${
version
}
-
${
osType
}
-
${
cpuType
}
pkg_name
=
${
install_dir
}
-
${
version
}
-
${
osType
}
-
${
cpuType
}
else
echo
"unknow verMode, nor cluster or lite"
exit
1
...
...
packaging/tools/makepkg.sh
浏览文件 @
ded484b5
...
...
@@ -111,7 +111,7 @@ cd ${release_dir}
if
[
"
$verMode
"
==
"cluster"
]
;
then
pkg_name
=
${
install_dir
}
-
${
version
}
-
${
osType
}
-
${
cpuType
}
elif
[
"
$verMode
"
==
"lite"
]
;
then
pkg_name
=
${
install_dir
}
-
edge-
${
version
}
-
${
osType
}
-
${
cpuType
}
pkg_name
=
${
install_dir
}
-
${
version
}
-
${
osType
}
-
${
cpuType
}
else
echo
"unknow verMode, nor cluster or lite"
exit
1
...
...
@@ -128,4 +128,4 @@ fi
tar
-zcv
-f
"
$(
basename
${
pkg_name
}
)
.tar.gz"
$(
basename
${
install_dir
}
)
--remove-files
||
:
cd
${
curr_dir
}
\ No newline at end of file
cd
${
curr_dir
}
src/client/inc/tscUtil.h
浏览文件 @
ded484b5
...
...
@@ -30,10 +30,10 @@ extern "C" {
#include "tsdb.h"
#define UTIL_METER_IS_SUPERTABLE(metaInfo) \
(((metaInfo)->pMeterMeta != NULL) && ((metaInfo)->pMeterMeta->
meterType == TSDB_METER_METRIC
))
(((metaInfo)->pMeterMeta != NULL) && ((metaInfo)->pMeterMeta->
tableType == TSDB_TABLE_TYPE_SUPER_TABLE
))
#define UTIL_METER_IS_NOMRAL_METER(metaInfo) (!(UTIL_METER_IS_SUPERTABLE(metaInfo)))
#define UTIL_METER_IS_CREATE_FROM_METRIC(metaInfo) \
(((metaInfo)->pMeterMeta != NULL) && ((metaInfo)->pMeterMeta->
meterType == TSDB_METER_M
TABLE))
(((metaInfo)->pMeterMeta != NULL) && ((metaInfo)->pMeterMeta->
tableType == TSDB_TABLE_TYPE_CREATE_FROM_S
TABLE))
#define TSDB_COL_IS_TAG(f) (((f)&TSDB_COL_TAG) != 0)
...
...
src/client/inc/tsclient.h
浏览文件 @
ded484b5
...
...
@@ -54,7 +54,7 @@ typedef struct SMeterMetaInfo {
* 2. keep the vnode index for multi-vnode insertion
*/
int32_t
vnodeIndex
;
char
name
[
TSDB_
METER
_ID_LEN
+
1
];
// table(super table) name
char
name
[
TSDB_
TABLE
_ID_LEN
+
1
];
// table(super table) name
int16_t
numOfTags
;
// total required tags in query, including groupby tags
int16_t
tagColumnIndex
[
TSDB_MAX_TAGS
];
// clause + tag projection
}
SMeterMetaInfo
;
...
...
@@ -119,7 +119,7 @@ typedef struct SCond {
}
SCond
;
typedef
struct
SJoinNode
{
char
meterId
[
TSDB_
METER
_ID_LEN
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
uint64_t
uid
;
int16_t
tagCol
;
}
SJoinNode
;
...
...
@@ -154,7 +154,7 @@ typedef struct SParamInfo {
}
SParamInfo
;
typedef
struct
STableDataBlocks
{
char
meterId
[
TSDB_
METER
_ID_LEN
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
int8_t
tsSource
;
// where does the UNIX timestamp come from, server or client
bool
ordered
;
// if current rows are ordered or not
int64_t
vgid
;
// virtual group id
...
...
@@ -302,7 +302,7 @@ typedef struct _tsc_obj {
char
user
[
TSDB_USER_LEN
];
char
pass
[
TSDB_KEY_LEN
];
char
acctId
[
TSDB_DB_NAME_LEN
];
char
db
[
TSDB_
METER
_ID_LEN
];
char
db
[
TSDB_
TABLE
_ID_LEN
];
char
sversion
[
TSDB_VERSION_LEN
];
char
writeAuth
:
1
;
char
superAuth
:
1
;
...
...
src/client/src/taos.def
浏览文件 @
ded484b5
...
...
@@ -24,8 +24,6 @@ taos_fetch_row_a
taos_subscribe
taos_consume
taos_unsubscribe
taos_subfields_count
taos_fetch_subfields
taos_open_stream
taos_close_stream
taos_fetch_block
...
...
src/client/src/tscFunctionImpl.c
浏览文件 @
ded484b5
...
...
@@ -3194,7 +3194,7 @@ static void diff_function(SQLFunctionCtx *pCtx) {
GET_RES_INFO
(
pCtx
)
->
numOfRes
+=
forwardStep
;
pCtx
->
aOutputBuf
+=
forwardStep
*
pCtx
->
outputBytes
;
pCtx
->
ptsOutputBuf
+=
forwardStep
*
TSDB_KEYSIZE
;
pCtx
->
ptsOutputBuf
=
(
char
*
)
pCtx
->
ptsOutputBuf
+
forwardStep
*
TSDB_KEYSIZE
;
}
}
...
...
src/client/src/tscLocal.c
浏览文件 @
ded484b5
...
...
@@ -79,8 +79,8 @@ static int32_t getToStringLength(const char *pData, int32_t length, int32_t type
static
int32_t
tscMaxLengthOfTagsFields
(
SSqlObj
*
pSql
)
{
SMeterMeta
*
pMeta
=
tscGetMeterMetaInfo
(
&
pSql
->
cmd
,
0
,
0
)
->
pMeterMeta
;
if
(
pMeta
->
meterType
==
TSDB_METER_METRIC
||
pMeta
->
meterType
==
TSDB_METER_O
TABLE
||
pMeta
->
meterType
==
TSDB_METER_S
TABLE
)
{
if
(
pMeta
->
tableType
==
TSDB_TABLE_TYPE_SUPER_TABLE
||
pMeta
->
tableType
==
TSDB_TABLE_TYPE_NORMAL_
TABLE
||
pMeta
->
tableType
==
TSDB_TABLE_TYPE_STREAM_
TABLE
)
{
return
0
;
}
...
...
src/client/src/tscParseInsert.c
浏览文件 @
ded484b5
...
...
@@ -776,7 +776,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) {
SMeterMetaInfo
*
pSTableMeterMetaInfo
=
tscGetMeterMetaInfoFromQueryInfo
(
pQueryInfo
,
STABLE_INDEX
);
setMeterID
(
pSTableMeterMetaInfo
,
&
sToken
,
pSql
);
strncpy
(
pTag
->
name
,
pSTableMeterMetaInfo
->
name
,
TSDB_
METER
_ID_LEN
);
strncpy
(
pTag
->
name
,
pSTableMeterMetaInfo
->
name
,
TSDB_
TABLE
_ID_LEN
);
code
=
tscGetMeterMeta
(
pSql
,
pSTableMeterMetaInfo
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
...
...
@@ -950,7 +950,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql) {
}
int
validateTableName
(
char
*
tblName
,
int
len
)
{
char
buf
[
TSDB_
METER
_ID_LEN
]
=
{
0
};
char
buf
[
TSDB_
TABLE
_ID_LEN
]
=
{
0
};
strncpy
(
buf
,
tblName
,
len
);
SSQLToken
token
=
{.
n
=
len
,
.
type
=
TK_ID
,
.
z
=
buf
};
...
...
@@ -1544,7 +1544,7 @@ void tscProcessMultiVnodesInsertFromFile(SSqlObj *pSql) {
continue
;
}
strncpy
(
pMeterMetaInfo
->
name
,
pDataBlock
->
meterId
,
TSDB_
METER
_ID_LEN
);
strncpy
(
pMeterMetaInfo
->
name
,
pDataBlock
->
meterId
,
TSDB_
TABLE
_ID_LEN
);
memset
(
pDataBlock
->
pData
,
0
,
pDataBlock
->
nAllocSize
);
int32_t
ret
=
tscGetMeterMeta
(
pSql
,
pMeterMetaInfo
);
...
...
src/client/src/tscSQLParser.c
浏览文件 @
ded484b5
...
...
@@ -1072,11 +1072,11 @@ int32_t setObjFullName(char* fullName, const char* account, SSQLToken* pDB, SSQL
*
xlen
=
totalLen
;
}
if
(
totalLen
<
TSDB_
METER
_ID_LEN
)
{
if
(
totalLen
<
TSDB_
TABLE
_ID_LEN
)
{
fullName
[
totalLen
]
=
0
;
}
return
(
totalLen
<=
TSDB_
METER
_ID_LEN
)
?
TSDB_CODE_SUCCESS
:
TSDB_CODE_INVALID_SQL
;
return
(
totalLen
<=
TSDB_
TABLE
_ID_LEN
)
?
TSDB_CODE_SUCCESS
:
TSDB_CODE_INVALID_SQL
;
}
static
void
extractColumnNameFromString
(
tSQLExprItem
*
pItem
)
{
...
...
@@ -1901,7 +1901,7 @@ int32_t getMeterIndex(SSQLToken* pTableToken, SQueryInfo* pQueryInfo, SColumnInd
}
pIndex
->
tableIndex
=
COLUMN_INDEX_INITIAL_VAL
;
char
tableName
[
TSDB_
METER
_ID_LEN
+
1
]
=
{
0
};
char
tableName
[
TSDB_
TABLE
_ID_LEN
+
1
]
=
{
0
};
for
(
int32_t
i
=
0
;
i
<
pQueryInfo
->
numOfTables
;
++
i
)
{
SMeterMetaInfo
*
pMeterMetaInfo
=
tscGetMeterMetaInfoFromQueryInfo
(
pQueryInfo
,
i
);
...
...
@@ -3365,7 +3365,7 @@ static int32_t setTableCondForMetricQuery(SQueryInfo* pQueryInfo, const char* ac
SStringBuilder
sb1
=
{
0
};
taosStringBuilderAppendStringLen
(
&
sb1
,
QUERY_COND_REL_PREFIX_IN
,
QUERY_COND_REL_PREFIX_IN_LEN
);
char
db
[
TSDB_
METER
_ID_LEN
]
=
{
0
};
char
db
[
TSDB_
TABLE
_ID_LEN
]
=
{
0
};
// remove the duplicated input table names
int32_t
num
=
0
;
...
...
@@ -3389,7 +3389,7 @@ static int32_t setTableCondForMetricQuery(SQueryInfo* pQueryInfo, const char* ac
taosStringBuilderAppendStringLen
(
&
sb1
,
TBNAME_LIST_SEP
,
1
);
}
char
idBuf
[
TSDB_
METER
_ID_LEN
+
1
]
=
{
0
};
char
idBuf
[
TSDB_
TABLE
_ID_LEN
+
1
]
=
{
0
};
int32_t
xlen
=
strlen
(
segments
[
i
]);
SSQLToken
t
=
{.
z
=
segments
[
i
],
.
n
=
xlen
,
.
type
=
TK_STRING
};
...
...
@@ -5300,7 +5300,7 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
}
// get meter meta from mnode
strncpy
(
pCreateTable
->
usingInfo
.
tagdata
.
name
,
pStableMeterMetaInfo
->
name
,
TSDB_
METER
_ID_LEN
);
strncpy
(
pCreateTable
->
usingInfo
.
tagdata
.
name
,
pStableMeterMetaInfo
->
name
,
TSDB_
TABLE
_ID_LEN
);
tVariantList
*
pList
=
pInfo
->
pCreateTableInfo
->
usingInfo
.
pTagVals
;
int32_t
code
=
tscGetMeterMeta
(
pSql
,
pStableMeterMetaInfo
);
...
...
src/client/src/tscServer.c
浏览文件 @
ded484b5
...
...
@@ -2685,7 +2685,7 @@ int tscBuildMultiMeterMetaMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
// fill head info
SMgmtHead
*
pMgmt
=
(
SMgmtHead
*
)(
pCmd
->
payload
+
tsRpcHeadSize
);
memset
(
pMgmt
->
db
,
0
,
TSDB_
METER
_ID_LEN
);
// server don't need the db
memset
(
pMgmt
->
db
,
0
,
TSDB_
TABLE
_ID_LEN
);
// server don't need the db
SMultiMeterInfoMsg
*
pInfoMsg
=
(
SMultiMeterInfoMsg
*
)(
pCmd
->
payload
+
tsRpcHeadSize
+
sizeof
(
SMgmtHead
));
pInfoMsg
->
numOfMeters
=
htonl
((
int32_t
)
pCmd
->
count
);
...
...
@@ -2709,7 +2709,7 @@ int tscBuildMultiMeterMetaMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
static
int32_t
tscEstimateMetricMetaMsgSize
(
SSqlCmd
*
pCmd
)
{
const
int32_t
defaultSize
=
minMsgSize
()
+
sizeof
(
S
Metric
MetaMsg
)
+
sizeof
(
SMgmtHead
)
+
sizeof
(
int16_t
)
*
TSDB_MAX_TAGS
;
minMsgSize
()
+
sizeof
(
S
SuperTable
MetaMsg
)
+
sizeof
(
SMgmtHead
)
+
sizeof
(
int16_t
)
*
TSDB_MAX_TAGS
;
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
0
);
int32_t
n
=
0
;
...
...
@@ -2722,7 +2722,7 @@ static int32_t tscEstimateMetricMetaMsgSize(SSqlCmd *pCmd) {
tagLen
+=
strlen
(
pQueryInfo
->
tagCond
.
tbnameCond
.
cond
)
*
TSDB_NCHAR_SIZE
;
}
int32_t
joinCondLen
=
(
TSDB_
METER
_ID_LEN
+
sizeof
(
int16_t
))
*
2
;
int32_t
joinCondLen
=
(
TSDB_
TABLE
_ID_LEN
+
sizeof
(
int16_t
))
*
2
;
int32_t
elemSize
=
sizeof
(
SMetricMetaElemMsg
)
*
pQueryInfo
->
numOfTables
;
int32_t
len
=
tagLen
+
joinCondLen
+
elemSize
+
defaultSize
;
...
...
@@ -2731,7 +2731,7 @@ static int32_t tscEstimateMetricMetaMsgSize(SSqlCmd *pCmd) {
}
int
tscBuildMetricMetaMsg
(
SSqlObj
*
pSql
,
SSqlInfo
*
pInfo
)
{
S
Metric
MetaMsg
*
pMetaMsg
;
S
SuperTable
MetaMsg
*
pMetaMsg
;
char
*
pMsg
,
*
pStart
;
int
msgLen
=
0
;
int
tableIndex
=
0
;
...
...
@@ -2757,25 +2757,25 @@ int tscBuildMetricMetaMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
pMsg
+=
sizeof
(
SMgmtHead
);
pMetaMsg
=
(
S
Metric
MetaMsg
*
)
pMsg
;
pMetaMsg
=
(
S
SuperTable
MetaMsg
*
)
pMsg
;
pMetaMsg
->
numOfMeters
=
htonl
(
pQueryInfo
->
numOfTables
);
pMsg
+=
sizeof
(
S
Metric
MetaMsg
);
pMsg
+=
sizeof
(
S
SuperTable
MetaMsg
);
int32_t
offset
=
pMsg
-
(
char
*
)
pMetaMsg
;
pMetaMsg
->
join
=
htonl
(
offset
);
// todo refactor
pMetaMsg
->
joinCondLen
=
htonl
((
TSDB_
METER
_ID_LEN
+
sizeof
(
int16_t
))
*
2
);
pMetaMsg
->
joinCondLen
=
htonl
((
TSDB_
TABLE
_ID_LEN
+
sizeof
(
int16_t
))
*
2
);
memcpy
(
pMsg
,
pTagCond
->
joinInfo
.
left
.
meterId
,
TSDB_
METER
_ID_LEN
);
pMsg
+=
TSDB_
METER
_ID_LEN
;
memcpy
(
pMsg
,
pTagCond
->
joinInfo
.
left
.
meterId
,
TSDB_
TABLE
_ID_LEN
);
pMsg
+=
TSDB_
TABLE
_ID_LEN
;
*
(
int16_t
*
)
pMsg
=
pTagCond
->
joinInfo
.
left
.
tagCol
;
pMsg
+=
sizeof
(
int16_t
);
memcpy
(
pMsg
,
pTagCond
->
joinInfo
.
right
.
meterId
,
TSDB_
METER
_ID_LEN
);
pMsg
+=
TSDB_
METER
_ID_LEN
;
memcpy
(
pMsg
,
pTagCond
->
joinInfo
.
right
.
meterId
,
TSDB_
TABLE
_ID_LEN
);
pMsg
+=
TSDB_
TABLE
_ID_LEN
;
*
(
int16_t
*
)
pMsg
=
pTagCond
->
joinInfo
.
right
.
tagCol
;
pMsg
+=
sizeof
(
int16_t
);
...
...
@@ -2991,7 +2991,7 @@ int tscProcessMeterMetaRsp(SSqlObj *pSql) {
int32_t
tagLen
=
0
;
SSchema
*
pTagsSchema
=
tsGetTagSchema
(
pMeta
);
if
(
pMeta
->
meterType
==
TSDB_METER_M
TABLE
)
{
if
(
pMeta
->
tableType
==
TSDB_TABLE_TYPE_CREATE_FROM_S
TABLE
)
{
for
(
int32_t
i
=
0
;
i
<
pMeta
->
numOfTags
;
++
i
)
{
tagLen
+=
pTagsSchema
[
i
].
bytes
;
}
...
...
@@ -3106,7 +3106,7 @@ int tscProcessMultiMeterMetaRsp(SSqlObj *pSql) {
int32_t
tagLen
=
0
;
SSchema
*
pTagsSchema
=
tsGetTagSchema
(
pMeta
);
if
(
pMeta
->
meterType
==
TSDB_METER_M
TABLE
)
{
if
(
pMeta
->
tableType
==
TSDB_TABLE_TYPE_CREATE_FROM_S
TABLE
)
{
for
(
int32_t
j
=
0
;
j
<
pMeta
->
numOfTags
;
++
j
)
{
tagLen
+=
pTagsSchema
[
j
].
bytes
;
}
...
...
@@ -3304,7 +3304,7 @@ int tscProcessShowRsp(SSqlObj *pSql) {
}
int
tscProcessConnectRsp
(
SSqlObj
*
pSql
)
{
char
temp
[
TSDB_
METER
_ID_LEN
*
2
];
char
temp
[
TSDB_
TABLE
_ID_LEN
*
2
];
SConnectRsp
*
pConnect
;
STscObj
*
pObj
=
pSql
->
pTscObj
;
...
...
src/client/src/tscSql.c
浏览文件 @
ded484b5
...
...
@@ -1047,7 +1047,7 @@ static int tscParseTblNameList(SSqlObj *pSql, const char *tblNameList, int32_t t
}
char
*
nextStr
;
char
tblName
[
TSDB_
METER
_ID_LEN
];
char
tblName
[
TSDB_
TABLE
_ID_LEN
];
int
payloadLen
=
0
;
char
*
pMsg
=
pCmd
->
payload
;
while
(
1
)
{
...
...
src/client/src/tscUtil.c
浏览文件 @
ded484b5
...
...
@@ -657,7 +657,7 @@ int32_t tscCreateDataBlock(size_t initialSize, int32_t rowSize, int32_t startOff
dataBuf
->
size
=
startOffset
;
dataBuf
->
tsSource
=
-
1
;
strncpy
(
dataBuf
->
meterId
,
name
,
TSDB_
METER
_ID_LEN
);
strncpy
(
dataBuf
->
meterId
,
name
,
TSDB_
TABLE
_ID_LEN
);
/*
* The metermeta may be released since the metermeta cache are completed clean by other thread
...
...
@@ -1810,7 +1810,7 @@ SMeterMetaInfo* tscAddMeterMetaInfo(SQueryInfo* pQueryInfo, const char* name, SM
assert
(
pMeterMetaInfo
!=
NULL
);
if
(
name
!=
NULL
)
{
assert
(
strlen
(
name
)
<=
TSDB_
METER
_ID_LEN
);
assert
(
strlen
(
name
)
<=
TSDB_
TABLE
_ID_LEN
);
strcpy
(
pMeterMetaInfo
->
name
,
name
);
}
...
...
src/dnode/src/dnodeMgmt.c
浏览文件 @
ded484b5
...
...
@@ -312,7 +312,7 @@ int vnodeProcessCreateMeterMsg(char *pMsg, int msgLen) {
pObj
->
vnode
=
pCreate
->
vnode
;
pObj
->
sid
=
pCreate
->
sid
;
pObj
->
uid
=
pCreate
->
uid
;
memcpy
(
pObj
->
meterId
,
pCreate
->
meterId
,
TSDB_
METER
_ID_LEN
);
memcpy
(
pObj
->
meterId
,
pCreate
->
meterId
,
TSDB_
TABLE
_ID_LEN
);
pObj
->
numOfColumns
=
pCreate
->
numOfColumns
;
pObj
->
timeStamp
=
pCreate
->
timeStamp
;
pObj
->
sversion
=
htonl
(
pCreate
->
sversion
);
...
...
@@ -377,7 +377,7 @@ int vnodeProcessRemoveMeterRequest(char *pMsg, int msgLen, SMgmtObj *pMgmtObj) {
pObj
=
vnodeList
[
pRemove
->
vnode
].
meterList
[
pRemove
->
sid
];
if
(
pObj
==
NULL
)
goto
_remove_over
;
if
(
memcmp
(
pObj
->
meterId
,
pRemove
->
meterId
,
TSDB_
METER
_ID_LEN
)
!=
0
)
{
if
(
memcmp
(
pObj
->
meterId
,
pRemove
->
meterId
,
TSDB_
TABLE
_ID_LEN
)
!=
0
)
{
dWarn
(
"vid:%d sid:%d id:%s, remove ID:%s, meter ID not matched"
,
pObj
->
vnode
,
pObj
->
sid
,
pObj
->
meterId
,
pRemove
->
meterId
);
goto
_remove_over
;
...
...
src/inc/m
gmt
.h
→
src/inc/m
node
.h
浏览文件 @
ded484b5
...
...
@@ -95,7 +95,7 @@ typedef struct {
}
SMeterGid
;
typedef
struct
_tab_obj
{
char
meterId
[
TSDB_
METER
_ID_LEN
+
1
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
+
1
];
uint64_t
uid
;
SMeterGid
gid
;
...
...
@@ -106,7 +106,7 @@ typedef struct _tab_obj {
int32_t
numOfColumns
;
int32_t
schemaSize
;
short
nextColId
;
char
meter
Type
:
4
;
char
table
Type
:
4
;
char
status
:
3
;
char
isDirty
:
1
;
// if the table change tag column 1 value
char
reserved
[
15
];
...
...
@@ -116,7 +116,7 @@ typedef struct _tab_obj {
tSkipList
*
pSkipList
;
struct
_tab_obj
*
pHead
;
// for metric, a link list for all meters created
// according to this metric
char
*
pTagData
;
// TSDB_
METER
_ID_LEN(metric_name)+
char
*
pTagData
;
// TSDB_
TABLE
_ID_LEN(metric_name)+
// tags_value1/tags_value2/tags_value3
struct
_tab_obj
*
prev
,
*
next
;
char
*
pSql
;
// pointer to SQL, for SC, null-terminated string
...
...
@@ -262,8 +262,8 @@ extern SDnodeObj dnodeObj;
// dnodeInt API
int
mgmtInitDnodeInt
();
void
mgmtCleanUpDnodeInt
();
int
mgmtSendCreateMsgToVgroup
(
STabObj
*
p
Meter
,
SVgObj
*
pVgroup
);
int
mgmtSendRemoveMeterMsgToDnode
(
STabObj
*
p
Meter
,
SVgObj
*
pVgroup
);
int
mgmtSendCreateMsgToVgroup
(
STabObj
*
p
Table
,
SVgObj
*
pVgroup
);
int
mgmtSendRemoveMeterMsgToDnode
(
STabObj
*
p
Table
,
SVgObj
*
pVgroup
);
int
mgmtSendVPeersMsg
(
SVgObj
*
pVgroup
);
int
mgmtSendFreeVnodeMsg
(
SVgObj
*
pVgroup
);
int
mgmtSendOneFreeVnodeMsg
(
SVnodeGid
*
pVnodeGid
);
...
...
@@ -284,8 +284,8 @@ int mgmtRetrieveUsers(SShowObj *pShow, char *data, int rows, SConnObj *pConn);
void
mgmtCleanUpUsers
();
// metric API
int
mgmtAddMeterIntoMetric
(
STabObj
*
pMetric
,
STabObj
*
p
Meter
);
int
mgmtRemoveMeterFromMetric
(
STabObj
*
pMetric
,
STabObj
*
p
Meter
);
int
mgmtAddMeterIntoMetric
(
STabObj
*
pMetric
,
STabObj
*
p
Table
);
int
mgmtRemoveMeterFromMetric
(
STabObj
*
pMetric
,
STabObj
*
p
Table
);
int
mgmtGetMetricMeta
(
SMeterMeta
*
pMeta
,
SShowObj
*
pShow
,
SConnObj
*
pConn
);
int
mgmtRetrieveMetrics
(
SShowObj
*
pShow
,
char
*
data
,
int
rows
,
SConnObj
*
pConn
);
...
...
@@ -324,20 +324,17 @@ void mgmtCleanUpVgroups();
// meter API
int
mgmtInitMeters
();
STabObj
*
mgmtGet
Meter
(
char
*
meterId
);
STabObj
*
mgmtGet
Meter
Info
(
char
*
src
,
char
*
tags
[]);
int
mgmtRetrieveMetricMeta
(
SConnObj
*
pConn
,
char
**
pStart
,
S
Metric
MetaMsg
*
pInfo
);
STabObj
*
mgmtGet
Table
(
char
*
meterId
);
STabObj
*
mgmtGet
Table
Info
(
char
*
src
,
char
*
tags
[]);
int
mgmtRetrieveMetricMeta
(
SConnObj
*
pConn
,
char
**
pStart
,
S
SuperTable
MetaMsg
*
pInfo
);
int
mgmtCreateMeter
(
SDbObj
*
pDb
,
SCreateTableMsg
*
pCreate
);
int
mgmtDropMeter
(
SDbObj
*
pDb
,
char
*
meterId
,
int
ignore
);
int
mgmtAlterMeter
(
SDbObj
*
pDb
,
SAlterTableMsg
*
pAlter
);
int
mgmtGet
Meter
Meta
(
SMeterMeta
*
pMeta
,
SShowObj
*
pShow
,
SConnObj
*
pConn
);
int
mgmtGet
Table
Meta
(
SMeterMeta
*
pMeta
,
SShowObj
*
pShow
,
SConnObj
*
pConn
);
int
mgmtRetrieveMeters
(
SShowObj
*
pShow
,
char
*
data
,
int
rows
,
SConnObj
*
pConn
);
void
mgmtCleanUpMeters
();
SSchema
*
mgmtGet
MeterSchema
(
STabObj
*
pMeter
);
// get schema for a meter
SSchema
*
mgmtGet
TableSchema
(
STabObj
*
pTable
);
// get schema for a meter
bool
mgmtMeterCreateFromMetric
(
STabObj
*
pMeterObj
);
bool
mgmtIsMetric
(
STabObj
*
pMeterObj
);
bool
mgmtIsNormalMeter
(
STabObj
*
pMeterObj
);
// dnode API
int
mgmtInitDnodes
();
...
...
@@ -376,16 +373,6 @@ int grantRetrieveGrants(SShowObj *pShow, char *data, int rows, SConnObj *pConn);
int
mgmtGetVnodeMeta
(
SMeterMeta
*
pMeta
,
SShowObj
*
pShow
,
SConnObj
*
pConn
);
int
mgmtRetrieveVnodes
(
SShowObj
*
pShow
,
char
*
data
,
int
rows
,
SConnObj
*
pConn
);
// dnode balance api
int
mgmtInitBalance
();
void
mgmtCleanupBalance
();
int
mgmtAllocVnodes
(
SVgObj
*
pVgroup
);
int
mgmtSetDnodeShellRemoving
(
SDnodeObj
*
pDnode
);
void
mgmtSetDnodeUnRemove
(
SDnodeObj
*
pDnode
);
void
mgmtStartBalanceTimer
(
int64_t
mseconds
);
void
mgmtSetDnodeOfflineOnSdbChanged
();
void
mgmtUpdateVgroupState
(
SVgObj
*
pVgroup
,
int
lbStatus
,
int
srcIp
);
bool
mgmtAddVnode
(
SVgObj
*
pVgroup
,
SDnodeObj
*
pSrcDnode
,
SDnodeObj
*
pDestDnode
);
void
mgmtSetModuleInDnode
(
SDnodeObj
*
pDnode
,
int
moduleType
);
int
mgmtUnSetModuleInDnode
(
SDnodeObj
*
pDnode
,
int
moduleType
);
...
...
src/inc/taosmsg.h
浏览文件 @
ded484b5
...
...
@@ -181,11 +181,14 @@ enum _mgmt_table {
#define TSDB_KILL_MSG_LEN 30
#define TSDB_METER_METRIC 0 // metric
#define TSDB_METER_MTABLE 1 // table created from metric
#define TSDB_METER_OTABLE 2 // ordinary table
#define TSDB_METER_STABLE 3 // table created from stream computing
#define TSDB_MAX_METER_TYPES 4
enum
{
TSDB_TABLE_TYPE_SUPER_TABLE
=
0
,
// super table
TSDB_TABLE_TYPE_CREATE_FROM_STABLE
=
1
,
// table created from super table
TSDB_TABLE_TYPE_NORMAL_TABLE
=
2
,
// ordinary table
TSDB_TABLE_TYPE_STREAM_TABLE
=
3
,
// table created from stream computing
TSDB_TABLE_TYPE_MAX
=
4
}
ETableType
;
#define TSDB_VN_READ_ACCCESS ((char)0x1)
#define TSDB_VN_WRITE_ACCCESS ((char)0x2)
...
...
@@ -298,7 +301,7 @@ typedef struct {
uint64_t
uid
;
char
spi
;
char
encrypt
;
char
meterId
[
TSDB_
METER
_ID_LEN
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
char
secret
[
TSDB_KEY_LEN
];
char
cipheringKey
[
TSDB_KEY_LEN
];
uint64_t
timeStamp
;
...
...
@@ -311,7 +314,7 @@ typedef struct {
}
SCreateMsg
;
typedef
struct
{
char
db
[
TSDB_
METER
_ID_LEN
];
char
db
[
TSDB_
TABLE
_ID_LEN
];
uint8_t
ignoreNotExists
;
}
SDropDbMsg
,
SUseDbMsg
;
...
...
@@ -324,7 +327,7 @@ typedef struct {
}
SShowTableMsg
;
typedef
struct
{
char
meterId
[
TSDB_
METER
_ID_LEN
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
char
igExists
;
short
numOfTags
;
...
...
@@ -338,12 +341,12 @@ typedef struct {
}
SCreateTableMsg
;
typedef
struct
{
char
meterId
[
TSDB_
METER
_ID_LEN
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
char
igNotExists
;
}
SDropTableMsg
;
typedef
struct
{
char
meterId
[
TSDB_
METER
_ID_LEN
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
short
type
;
/* operation type */
char
tagVal
[
TSDB_MAX_BYTES_PER_ROW
];
short
numOfCols
;
/* number of schema */
...
...
@@ -352,7 +355,7 @@ typedef struct {
typedef
struct
{
char
clientVersion
[
TSDB_VERSION_LEN
];
char
db
[
TSDB_
METER
_ID_LEN
];
char
db
[
TSDB_
TABLE
_ID_LEN
];
}
SConnectMsg
;
typedef
struct
{
...
...
@@ -383,7 +386,7 @@ typedef struct {
}
SCreateUserMsg
,
SAlterUserMsg
;
typedef
struct
{
char
db
[
TSDB_
METER
_ID_LEN
];
char
db
[
TSDB_
TABLE
_ID_LEN
];
}
SMgmtHead
;
typedef
struct
{
...
...
@@ -397,7 +400,7 @@ typedef struct {
short
vnode
;
int32_t
sid
;
uint64_t
uid
;
char
meterId
[
TSDB_
METER
_ID_LEN
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
}
SRemoveMeterMsg
;
typedef
struct
{
...
...
@@ -601,7 +604,7 @@ typedef struct {
* the message is too large, so it may will overwrite the cfg information in meterobj.v*
* recover to origin codes
*/
//char db[TSDB_
METER
_ID_LEN+2]; // 8bytes align
//char db[TSDB_
TABLE
_ID_LEN+2]; // 8bytes align
char
db
[
TSDB_DB_NAME_LEN
];
uint32_t
vgId
;
int32_t
maxSessions
;
...
...
@@ -692,7 +695,7 @@ typedef struct {
}
SVPeersMsg
;
typedef
struct
{
char
meterId
[
TSDB_
METER
_ID_LEN
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
short
createFlag
;
char
tags
[];
}
SMeterInfoMsg
;
...
...
@@ -705,7 +708,7 @@ typedef struct {
typedef
struct
{
int16_t
elemLen
;
char
meterId
[
TSDB_
METER
_ID_LEN
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
int16_t
orderIndex
;
int16_t
orderType
;
// used in group by xx order by xxx
...
...
@@ -729,7 +732,7 @@ typedef struct {
int32_t
join
;
int32_t
joinCondLen
;
// for join condition
int32_t
metaElem
[
TSDB_MAX_JOIN_TABLE_NUM
];
}
S
Metric
MetaMsg
;
}
S
SuperTable
MetaMsg
;
typedef
struct
{
SVPeerDesc
vpeerDesc
[
TSDB_VNODES_SUPPORT
];
...
...
@@ -748,7 +751,7 @@ typedef struct {
typedef
struct
SMeterMeta
{
uint8_t
numOfTags
:
6
;
uint8_t
precision
:
2
;
uint8_t
meter
Type
:
4
;
uint8_t
table
Type
:
4
;
uint8_t
index
:
4
;
// used locally
int16_t
numOfColumns
;
...
...
@@ -764,12 +767,12 @@ typedef struct SMeterMeta {
}
SMeterMeta
;
typedef
struct
SMultiMeterMeta
{
char
meterId
[
TSDB_
METER
_ID_LEN
];
// note: This field must be at the front
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
// note: This field must be at the front
SMeterMeta
meta
;
}
SMultiMeterMeta
;
typedef
struct
{
char
name
[
TSDB_
METER
_ID_LEN
];
char
name
[
TSDB_
TABLE
_ID_LEN
];
char
data
[
TSDB_MAX_TAGS_LEN
];
}
STagData
;
...
...
src/inc/tsdb.h
浏览文件 @
ded484b5
...
...
@@ -86,7 +86,7 @@ extern "C" {
#define TS_PATH_DELIMITER_LEN 1
#define TSDB_METER_ID_LEN_MARGIN 10
#define TSDB_
METER
_ID_LEN (TSDB_DB_NAME_LEN+TSDB_METER_NAME_LEN+2*TS_PATH_DELIMITER_LEN+TSDB_USERID_LEN+TSDB_METER_ID_LEN_MARGIN) //TSDB_DB_NAME_LEN+TSDB_METER_NAME_LEN+2*strlen(TS_PATH_DELIMITER)+strlen(USERID)
#define TSDB_
TABLE
_ID_LEN (TSDB_DB_NAME_LEN+TSDB_METER_NAME_LEN+2*TS_PATH_DELIMITER_LEN+TSDB_USERID_LEN+TSDB_METER_ID_LEN_MARGIN) //TSDB_DB_NAME_LEN+TSDB_METER_NAME_LEN+2*strlen(TS_PATH_DELIMITER)+strlen(USERID)
#define TSDB_UNI_LEN 24
#define TSDB_USER_LEN TSDB_UNI_LEN
#define TSDB_ACCT_LEN TSDB_UNI_LEN
...
...
src/mnode/CMakeLists.txt
浏览文件 @
ded484b5
...
...
@@ -2,22 +2,20 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT
(
TDengine
)
IF
((
TD_LINUX_64
)
OR
(
TD_LINUX_32 AND TD_ARM
))
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/dnode/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/mnode/detail/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/vnode/detail/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/client/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/inc
)
INCLUDE_DIRECTORIES
(
${
TD_OS_DIR
}
/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/util/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/dnode/inc
)
INCLUDE_DIRECTORIES
(
inc
)
AUX_SOURCE_DIRECTORY
(
src SRC
)
ADD_LIBRARY
(
mnode
${
SRC
}
)
TARGET_LINK_LIBRARIES
(
mnode trpc tutil sdb pthread
)
#
TARGET_LINK_LIBRARIES(mnode trpc tutil sdb pthread)
IF
(
TD_CLUSTER
)
TARGET_LINK_LIBRARIES
(
mnode mcluster
)
ELSEIF
(
TD_LITE
)
TARGET_LINK_LIBRARIES
(
mnode mlite
)
ENDIF
()
#IF (TD_CLUSTER)
# TARGET_LINK_LIBRARIES(mnode mcluster)
#ENDIF ()
ENDIF
()
src/mnode/inc/mgmtAcct.h
浏览文件 @
ded484b5
...
...
@@ -20,7 +20,7 @@
extern
"C"
{
#endif
#include "m
gmt
.h"
#include "m
node
.h"
int32_t
mgmtCreateAcct
(
char
*
name
,
char
*
pass
,
SAcctCfg
*
pCfg
);
int32_t
mgmtUpdateAcct
(
SAcctObj
*
pAcct
);
...
...
src/mnode/inc/mgmtBalance.h
浏览文件 @
ded484b5
...
...
@@ -13,60 +13,32 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef TDENGINE_MGMTBALANCE_H
#define TDENGINE_MGMTBALANCE_H
#ifndef TDENGINE_MGMT
_
BALANCE_H
#define TDENGINE_MGMT
_
BALANCE_H
#ifdef __cplusplus
extern
"C"
{
#endif
#include "os.h"
#include "dnodeSystem.h"
#include "mgmt.h"
#include "mnode.h"
#include "tglobalcfg.h"
#include "vnodeStatus.h"
#include "ttime.h"
void
mgmtCreateDnodeOrderList
();
void
mgmtReleaseDnodeOrderList
();
void
mgmtMakeDnodeOrderList
();
void
mgmtCalcSystemScore
();
float
mgmtTryCalcDnodeScore
(
SDnodeObj
*
pDnode
,
int
extraVnode
);
bool
mgmtCheckDnodeInOfflineState
(
SDnodeObj
*
pDnode
);
bool
mgmtCheckDnodeInRemoveState
(
SDnodeObj
*
pDnode
);
bool
mgmtCheckModuleInDnode
(
SDnodeObj
*
pDnode
,
int
moduleType
);
void
mgmtMonitorDnodeModule
();
void
mgmtSetModuleInDnode
(
SDnodeObj
*
pDnode
,
int
moduleType
);
int
mgmtUnSetModuleInDnode
(
SDnodeObj
*
pDnode
,
int
moduleType
);
void
mgmtMonitorVgroups
();
void
mgmtMonitorDnodes
();
void
mgmtCalcNumOfFreeVnodes
(
SDnodeObj
*
pDnode
);
extern
void
*
dnodeSdb
;
extern
void
*
vgSdb
;
extern
void
*
balanceTimer
;
extern
int
mgmtOrderedDnodesSize
;
extern
int
mgmtOrderedDnodesMallocSize
;
extern
SDnodeObj
**
mgmtOrderedDnodes
;
extern
uint32_t
mgmtAccessSquence
;
extern
SMgmtIpList
mgmtIpList
;
extern
void
(
*
mgmtStartBalanceTimer
)(
int64_t
mseconds
);
extern
int32_t
(
*
mgmtInitBalance
)();
extern
void
(
*
mgmtCleanupBalance
)();
extern
int32_t
(
*
mgmtAllocVnodes
)(
SVgObj
*
pVgroup
);
extern
bool
(
*
mgmtCheckModuleInDnode
)(
SDnodeObj
*
pDnode
,
int
moduleType
);
extern
char
*
(
*
mgmtGetVnodeStatus
)(
SVgObj
*
pVgroup
,
SVnodeGid
*
pVnode
);
extern
bool
(
*
mgmtCheckVnodeReady
)(
SDnodeObj
*
pDnode
,
SVgObj
*
pVgroup
,
SVnodeGid
*
pVnode
);
extern
void
(
*
mgmtUpdateDnodeState
)(
SDnodeObj
*
pDnode
,
int
lbStatus
);
extern
void
(
*
mgmtUpdateVgroupState
)(
SVgObj
*
pVgroup
,
int
lbStatus
,
int
srcIp
);
extern
bool
(
*
mgmtAddVnode
)(
SVgObj
*
pVgroup
,
SDnodeObj
*
pSrcDnode
,
SDnodeObj
*
pDestDnode
);
#ifdef __cplusplus
}
#endif
#endif
// TDENGINE_MGMTBALANCE_H
#endif
src/mnode/inc/mgmtProfile.h
浏览文件 @
ded484b5
...
...
@@ -20,7 +20,7 @@
extern
"C"
{
#endif
#include "m
gmt
.h"
#include "m
node
.h"
int
mgmtGetQueryMeta
(
SMeterMeta
*
pMeta
,
SShowObj
*
pShow
,
SConnObj
*
pConn
);
...
...
src/mnode/inc/mgmtSupertableQuery.h
0 → 100644
浏览文件 @
ded484b5
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef TBASE_MNODE_SUPER_TABLE_QUERY_H
#define TBASE_MNODE_SUPER_TABLE_QUERY_H
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "mnode.h"
int32_t
mgmtRetrieveMetersFromSuperTable
(
SSuperTableMetaMsg
*
pInfo
,
int32_t
tableIndex
,
tQueryResultset
*
pRes
);
int32_t
mgmtDoJoin
(
SSuperTableMetaMsg
*
pSuperTableMetaMsg
,
tQueryResultset
*
pRes
);
void
mgmtReorganizeMetersInMetricMeta
(
SSuperTableMetaMsg
*
pInfo
,
int32_t
index
,
tQueryResultset
*
pRes
);
#endif
src/mnode/inc/mgmtTable.h
0 → 100644
浏览文件 @
ded484b5
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef TBASE_MNODE_TABLE_H
#define TBASE_MNODE_TABLE_H
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "mnode.h"
int32_t
mgmtFindTagCol
(
STabObj
*
pTable
,
const
char
*
tagName
);
#endif
src/mnode/inc/mgmtUtil.h
浏览文件 @
ded484b5
...
...
@@ -11,32 +11,22 @@
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "tast.h"
#ifndef TBASE_MGMTUTIL_H
#define TBASE_MGMTUTIL_H
typedef
struct
SSyntaxTreeFilterSupporter
{
SSchema
*
pTagSchema
;
int32_t
numOfTags
;
int32_t
optr
;
}
SSyntaxTreeFilterSupporter
;
*/
char
*
mgmtMeterGetTag
(
STabObj
*
pMeter
,
int32_t
col
,
SSchema
*
pTagColSchema
);
int32_t
mgmtFindTagCol
(
STabObj
*
pMetric
,
const
char
*
tagName
);
#ifndef TBASE_MNODE_UTIL_H
#define TBASE_MNODE_UTIL_H
int32_t
mgmtGetTagsLength
(
STabObj
*
pMetric
,
int32_t
col
);
bool
mgmtCheckIsMonitorDB
(
char
*
db
,
char
*
monitordb
);
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "mnode.h"
bool
mgmtTableCreateFromSuperTable
(
STabObj
*
pTableObj
);
bool
mgmtIsSuperTable
(
STabObj
*
pTableObj
);
bool
mgmtIsNormalTable
(
STabObj
*
pTableObj
);
char
*
mgmtTableGetTag
(
STabObj
*
pTable
,
int32_t
col
,
SSchema
*
pTagColSchema
);
int32_t
mgmtGetTagsLength
(
STabObj
*
pSuperTable
,
int32_t
col
);
bool
mgmtCheckIsMonitorDB
(
char
*
db
,
char
*
monitordb
);
int32_t
mgmtCheckDBParams
(
SCreateDbMsg
*
pCreate
);
int32_t
mgmtRetrieveMetersFromMetric
(
SMetricMetaMsg
*
pInfo
,
int32_t
tableIndex
,
tQueryResultset
*
pRes
);
int32_t
mgmtDoJoin
(
SMetricMetaMsg
*
pMetricMetaMsg
,
tQueryResultset
*
pRes
);
void
mgmtReorganizeMetersInMetricMeta
(
SMetricMetaMsg
*
pInfo
,
int32_t
index
,
tQueryResultset
*
pRes
);
bool
tSkipListNodeFilterCallback
(
const
void
*
pNode
,
void
*
param
);
#endif //TBASE_MGMTUTIL_H
#endif
src/mnode/src/mgmtAcct.c
浏览文件 @
ded484b5
...
...
@@ -15,7 +15,7 @@
#define _DEFAULT_SOURCE
#include "os.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "mgmtAcct.h"
#include "tschemautil.h"
...
...
src/mnode/src/mgmtBalance.
spec.
c
→
src/mnode/src/mgmtBalance.c
浏览文件 @
ded484b5
...
...
@@ -18,13 +18,16 @@
#include "vnodeStatus.h"
#include "dnodeModule.h"
void
mgmtStartBalanceTimer
(
int64_t
mseconds
)
{}
void
mgmtStartBalanceTimerImp
(
int64_t
mseconds
)
{}
void
(
*
mgmtStartBalanceTimer
)(
int64_t
mseconds
)
=
mgmtStartBalanceTimerImp
;
int
mgmtInitBalance
()
{
return
0
;
}
int32_t
mgmtInitBalanceImp
()
{
return
0
;
}
int32_t
(
*
mgmtInitBalance
)()
=
mgmtInitBalanceImp
;
void
mgmtCleanupBalance
()
{}
void
mgmtCleanupBalanceImp
()
{}
void
(
*
mgmtCleanupBalance
)()
=
mgmtCleanupBalanceImp
;
int
mgmtAllocVnodes
(
SVgObj
*
pVgroup
)
{
int
32_t
mgmtAllocVnodesImp
(
SVgObj
*
pVgroup
)
{
int
selectedVnode
=
-
1
;
SDnodeObj
*
pDnode
=
&
dnodeObj
;
int
lastAllocVode
=
pDnode
->
lastAllocVnode
;
...
...
@@ -48,17 +51,26 @@ int mgmtAllocVnodes(SVgObj *pVgroup) {
return
0
;
}
}
int32_t
(
*
mgmtAllocVnodes
)(
SVgObj
*
pVgroup
)
=
mgmtAllocVnodesImp
;
bool
mgmtCheckModuleInDnode
(
SDnodeObj
*
pDnode
,
int
moduleType
)
{
bool
mgmtCheckModuleInDnode
Imp
(
SDnodeObj
*
pDnode
,
int
moduleType
)
{
return
tsModule
[
moduleType
].
num
!=
0
;
}
bool
(
*
mgmtCheckModuleInDnode
)(
SDnodeObj
*
pDnode
,
int
moduleType
)
=
mgmtCheckModuleInDnodeImp
;
char
*
mgmtGetVnodeStatus
(
SVgObj
*
pVgroup
,
SVnodeGid
*
pVnode
)
{
return
"master"
;
}
char
*
mgmtGetVnodeStatusImp
(
SVgObj
*
pVgroup
,
SVnodeGid
*
pVnode
)
{
return
"master"
;
}
char
*
(
*
mgmtGetVnodeStatus
)(
SVgObj
*
pVgroup
,
SVnodeGid
*
pVnode
)
=
mgmtGetVnodeStatusImp
;
bool
mgmtCheckVnodeReady
(
SDnodeObj
*
pDnode
,
SVgObj
*
pVgroup
,
SVnodeGid
*
pVnode
)
{
return
true
;
}
bool
mgmtCheckVnodeReadyImp
(
SDnodeObj
*
pDnode
,
SVgObj
*
pVgroup
,
SVnodeGid
*
pVnode
)
{
return
true
;
}
bool
(
*
mgmtCheckVnodeReady
)(
SDnodeObj
*
pDnode
,
SVgObj
*
pVgroup
,
SVnodeGid
*
pVnode
)
=
mgmtCheckVnodeReadyImp
;
void
mgmtUpdateDnodeState
(
SDnodeObj
*
pDnode
,
int
lbStatus
)
{}
void
mgmtUpdateVgroupState
(
SVgObj
*
pVgroup
,
int
lbStatus
,
int
srcIp
)
{}
void
mgmtUpdateDnodeStateImp
(
SDnodeObj
*
pDnode
,
int
lbStatus
)
{}
void
(
*
mgmtUpdateDnodeState
)(
SDnodeObj
*
pDnode
,
int
lbStatus
)
=
mgmtUpdateDnodeStateImp
;
void
mgmtUpdateVgroupStateImp
(
SVgObj
*
pVgroup
,
int
lbStatus
,
int
srcIp
)
{}
void
(
*
mgmtUpdateVgroupState
)(
SVgObj
*
pVgroup
,
int
lbStatus
,
int
srcIp
)
=
mgmtUpdateVgroupStateImp
;
bool
mgmtAddVnodeImp
(
SVgObj
*
pVgroup
,
SDnodeObj
*
pSrcDnode
,
SDnodeObj
*
pDestDnode
)
{
return
false
;
}
bool
(
*
mgmtAddVnode
)(
SVgObj
*
pVgroup
,
SDnodeObj
*
pSrcDnode
,
SDnodeObj
*
pDestDnode
)
=
mgmtAddVnodeImp
;
bool
mgmtAddVnode
(
SVgObj
*
pVgroup
,
SDnodeObj
*
pSrcDnode
,
SDnodeObj
*
pDestDnode
)
{
return
false
;
}
\ No newline at end of file
src/mnode/src/mgmtConn.c
浏览文件 @
ded484b5
...
...
@@ -14,15 +14,13 @@
*/
#define _DEFAULT_SOURCE
#include "os.h"
#include "mgmt.h"
#include "mnode.h"
#include "taosmsg.h"
#include "tschemautil.h"
typedef
struct
{
char
user
[
TSDB_
METER
_ID_LEN
];
char
user
[
TSDB_
TABLE
_ID_LEN
];
uint64_t
stime
;
uint32_t
ip
;
uint16_t
port
;
...
...
src/mnode/src/mgmtDb.c
浏览文件 @
ded484b5
...
...
@@ -16,7 +16,7 @@
#define _DEFAULT_SOURCE
#include "os.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "mgmtGrant.h"
#include "mgmtBalance.h"
#include "mgmtUtil.h"
...
...
@@ -116,7 +116,7 @@ int mgmtInitDbs() {
SDbObj
*
mgmtGetDb
(
char
*
db
)
{
return
(
SDbObj
*
)
sdbGetRow
(
dbSdb
,
db
);
}
SDbObj
*
mgmtGetDbByMeterId
(
char
*
meterId
)
{
char
db
[
TSDB_
METER
_ID_LEN
],
*
pos
;
char
db
[
TSDB_
TABLE
_ID_LEN
],
*
pos
;
pos
=
strstr
(
meterId
,
TS_PATH_DELIMITER
);
pos
=
strstr
(
pos
+
1
,
TS_PATH_DELIMITER
);
...
...
src/mnode/src/mgmtDnode.c
浏览文件 @
ded484b5
...
...
@@ -18,7 +18,7 @@
#include "os.h"
#include "dnodeSystem.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "tschemautil.h"
#include "vnodeStatus.h"
#include "dnodeModule.h"
...
...
src/mnode/src/mgmtDnode.spec.c
浏览文件 @
ded484b5
...
...
@@ -14,7 +14,7 @@
*/
#define _DEFAULT_SOURCE
#include "m
gmt
.h"
#include "m
node
.h"
#include "vnodeStatus.h"
#include "dnodeModule.h"
...
...
src/mnode/src/mgmtDnodeInt.c
浏览文件 @
ded484b5
...
...
@@ -17,14 +17,14 @@
#include "os.h"
#include "dnodeSystem.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "mgmtBalance.h"
#include "tutil.h"
void
mgmtProcessMsgFromDnode
(
char
*
content
,
int
msgLen
,
int
msgType
,
SDnodeObj
*
pObj
);
int
mgmtSendVPeersMsg
(
SVgObj
*
pVgroup
);
char
*
mgmtBuildVpeersIe
(
char
*
pMsg
,
SVgObj
*
pVgroup
,
int
vnode
);
char
*
mgmtBuildCreateMeterIe
(
STabObj
*
p
Meter
,
char
*
pMsg
,
int
vnode
);
char
*
mgmtBuildCreateMeterIe
(
STabObj
*
p
Table
,
char
*
pMsg
,
int
vnode
);
/*
* functions for communicate between dnode and mnode
...
...
@@ -39,7 +39,7 @@ int taosSendMsgToDnode(SDnodeObj *pObj, char *msg, int msgLen);
int
mgmtProcessMeterCfgMsg
(
char
*
cont
,
int
contLen
,
SDnodeObj
*
pObj
)
{
char
*
pMsg
,
*
pStart
;
int
msgLen
=
0
;
STabObj
*
p
Meter
=
NULL
;
STabObj
*
p
Table
=
NULL
;
SMeterCfgMsg
*
pCfg
=
(
SMeterCfgMsg
*
)
cont
;
SVgObj
*
pVgroup
;
...
...
@@ -63,13 +63,13 @@ int mgmtProcessMeterCfgMsg(char *cont, int contLen, SDnodeObj *pObj) {
int
vgId
=
pObj
->
vload
[
vnode
].
vgId
;
pVgroup
=
mgmtGetVgroup
(
vgId
);
if
(
pVgroup
)
p
Meter
=
pVgroup
->
meterList
[
sid
];
if
(
pVgroup
)
p
Table
=
pVgroup
->
meterList
[
sid
];
}
if
(
p
Meter
)
{
if
(
p
Table
)
{
*
pMsg
=
0
;
// code
pMsg
++
;
pMsg
=
mgmtBuildCreateMeterIe
(
p
Meter
,
pMsg
,
vnode
);
pMsg
=
mgmtBuildCreateMeterIe
(
p
Table
,
pMsg
,
vnode
);
}
else
{
mTrace
(
"dnode:%s, vnode:%d sid:%d, meter not there"
,
taosIpStr
(
pObj
->
privateIp
),
vnode
,
sid
);
*
pMsg
=
TSDB_CODE_INVALID_METER_ID
;
...
...
@@ -187,48 +187,48 @@ void mgmtProcessMsgFromDnode(char *content, int msgLen, int msgType, SDnodeObj *
}
}
char
*
mgmtBuildCreateMeterIe
(
STabObj
*
p
Meter
,
char
*
pMsg
,
int
vnode
)
{
char
*
mgmtBuildCreateMeterIe
(
STabObj
*
p
Table
,
char
*
pMsg
,
int
vnode
)
{
SCreateMsg
*
pCreateMeter
;
pCreateMeter
=
(
SCreateMsg
*
)
pMsg
;
pCreateMeter
->
vnode
=
htons
(
vnode
);
pCreateMeter
->
sid
=
htonl
(
p
Meter
->
gid
.
sid
);
pCreateMeter
->
uid
=
p
Meter
->
uid
;
memcpy
(
pCreateMeter
->
meterId
,
p
Meter
->
meterId
,
TSDB_METER
_ID_LEN
);
pCreateMeter
->
sid
=
htonl
(
p
Table
->
gid
.
sid
);
pCreateMeter
->
uid
=
p
Table
->
uid
;
memcpy
(
pCreateMeter
->
meterId
,
p
Table
->
meterId
,
TSDB_TABLE
_ID_LEN
);
// pCreateMeter->lastCreate = htobe64(pVgroup->lastCreate);
pCreateMeter
->
timeStamp
=
htobe64
(
p
Meter
->
createdTime
);
pCreateMeter
->
timeStamp
=
htobe64
(
p
Table
->
createdTime
);
/*
pCreateMeter->spi = pSec->spi;
pCreateMeter->encrypt = pSec->encrypt;
memcpy(pCreateMeter->cipheringKey, pSec->cipheringKey, TSDB_KEY_LEN);
memcpy(pCreateMeter->secret, pSec->secret, TSDB_KEY_LEN);
*/
pCreateMeter
->
sversion
=
htonl
(
p
Meter
->
sversion
);
pCreateMeter
->
numOfColumns
=
htons
(
p
Meter
->
numOfColumns
);
SSchema
*
pSchema
=
mgmtGet
MeterSchema
(
pMeter
);
pCreateMeter
->
sversion
=
htonl
(
p
Table
->
sversion
);
pCreateMeter
->
numOfColumns
=
htons
(
p
Table
->
numOfColumns
);
SSchema
*
pSchema
=
mgmtGet
TableSchema
(
pTable
);
for
(
int
i
=
0
;
i
<
p
Meter
->
numOfColumns
;
++
i
)
{
for
(
int
i
=
0
;
i
<
p
Table
->
numOfColumns
;
++
i
)
{
pCreateMeter
->
schema
[
i
].
type
=
pSchema
[
i
].
type
;
/* strcpy(pCreateMeter->schema[i].name, pSchema[i].name); */
pCreateMeter
->
schema
[
i
].
bytes
=
htons
(
pSchema
[
i
].
bytes
);
pCreateMeter
->
schema
[
i
].
colId
=
htons
(
pSchema
[
i
].
colId
);
}
pMsg
=
((
char
*
)(
pCreateMeter
->
schema
))
+
p
Meter
->
numOfColumns
*
sizeof
(
SMColumn
);
pMsg
=
((
char
*
)(
pCreateMeter
->
schema
))
+
p
Table
->
numOfColumns
*
sizeof
(
SMColumn
);
pCreateMeter
->
sqlLen
=
0
;
if
(
p
Meter
->
pSql
)
{
int
len
=
strlen
(
p
Meter
->
pSql
)
+
1
;
if
(
p
Table
->
pSql
)
{
int
len
=
strlen
(
p
Table
->
pSql
)
+
1
;
pCreateMeter
->
sqlLen
=
htons
(
len
);
strcpy
(
pMsg
,
p
Meter
->
pSql
);
strcpy
(
pMsg
,
p
Table
->
pSql
);
pMsg
+=
len
;
}
return
pMsg
;
}
int
mgmtSendCreateMsgToVgroup
(
STabObj
*
p
Meter
,
SVgObj
*
pVgroup
)
{
int
mgmtSendCreateMsgToVgroup
(
STabObj
*
p
Table
,
SVgObj
*
pVgroup
)
{
char
*
pMsg
,
*
pStart
;
int
i
,
msgLen
=
0
;
SDnodeObj
*
pObj
;
...
...
@@ -244,7 +244,7 @@ int mgmtSendCreateMsgToVgroup(STabObj *pMeter, SVgObj *pVgroup) {
pStart
=
taosBuildReqMsgToDnodeWithSize
(
pObj
,
TSDB_MSG_TYPE_CREATE
,
64000
);
if
(
pStart
==
NULL
)
continue
;
pMsg
=
mgmtBuildCreateMeterIe
(
p
Meter
,
pStart
,
pVgroup
->
vnodeGid
[
i
].
vnode
);
pMsg
=
mgmtBuildCreateMeterIe
(
p
Table
,
pStart
,
pVgroup
->
vnodeGid
[
i
].
vnode
);
msgLen
=
pMsg
-
pStart
;
taosSendMsgToDnode
(
pObj
,
pStart
,
msgLen
);
...
...
@@ -255,7 +255,7 @@ int mgmtSendCreateMsgToVgroup(STabObj *pMeter, SVgObj *pVgroup) {
return
0
;
}
int
mgmtSendRemoveMeterMsgToDnode
(
STabObj
*
p
Meter
,
SVgObj
*
pVgroup
)
{
int
mgmtSendRemoveMeterMsgToDnode
(
STabObj
*
p
Table
,
SVgObj
*
pVgroup
)
{
SRemoveMeterMsg
*
pRemove
;
char
*
pMsg
,
*
pStart
;
int
i
,
msgLen
=
0
;
...
...
@@ -277,8 +277,8 @@ int mgmtSendRemoveMeterMsgToDnode(STabObj *pMeter, SVgObj *pVgroup) {
pRemove
=
(
SRemoveMeterMsg
*
)
pMsg
;
pRemove
->
vnode
=
htons
(
pVgroup
->
vnodeGid
[
i
].
vnode
);
pRemove
->
sid
=
htonl
(
p
Meter
->
gid
.
sid
);
memcpy
(
pRemove
->
meterId
,
p
Meter
->
meterId
,
TSDB_METER
_ID_LEN
);
pRemove
->
sid
=
htonl
(
p
Table
->
gid
.
sid
);
memcpy
(
pRemove
->
meterId
,
p
Table
->
meterId
,
TSDB_TABLE
_ID_LEN
);
pMsg
+=
sizeof
(
SRemoveMeterMsg
);
msgLen
=
pMsg
-
pStart
;
...
...
@@ -287,7 +287,7 @@ int mgmtSendRemoveMeterMsgToDnode(STabObj *pMeter, SVgObj *pVgroup) {
tinet_ntoa
(
ipstr
,
pVgroup
->
vnodeGid
[
i
].
ip
);
mTrace
(
"dnode:%s vid:%d, send remove meter msg, sid:%d status:%d"
,
ipstr
,
pVgroup
->
vnodeGid
[
i
].
vnode
,
p
Meter
->
gid
.
sid
,
pObj
->
status
);
p
Table
->
gid
.
sid
,
pObj
->
status
);
}
pVgroup
->
lastRemove
=
timeStamp
;
...
...
@@ -295,7 +295,7 @@ int mgmtSendRemoveMeterMsgToDnode(STabObj *pMeter, SVgObj *pVgroup) {
return
0
;
}
int
mgmtSendAlterStreamMsgToDnode
(
STabObj
*
p
Meter
,
SVgObj
*
pVgroup
)
{
int
mgmtSendAlterStreamMsgToDnode
(
STabObj
*
p
Table
,
SVgObj
*
pVgroup
)
{
SAlterStreamMsg
*
pAlter
;
char
*
pMsg
,
*
pStart
;
int
i
,
msgLen
=
0
;
...
...
@@ -313,9 +313,9 @@ int mgmtSendAlterStreamMsgToDnode(STabObj *pMeter, SVgObj *pVgroup) {
pAlter
=
(
SAlterStreamMsg
*
)
pMsg
;
pAlter
->
vnode
=
htons
(
pVgroup
->
vnodeGid
[
i
].
vnode
);
pAlter
->
sid
=
htonl
(
p
Meter
->
gid
.
sid
);
pAlter
->
uid
=
p
Meter
->
uid
;
pAlter
->
status
=
p
Meter
->
status
;
pAlter
->
sid
=
htonl
(
p
Table
->
gid
.
sid
);
pAlter
->
uid
=
p
Table
->
uid
;
pAlter
->
status
=
p
Table
->
status
;
pMsg
+=
sizeof
(
SAlterStreamMsg
);
msgLen
=
pMsg
-
pStart
;
...
...
src/mnode/src/mgmtDnodeInt.spec.c
浏览文件 @
ded484b5
...
...
@@ -18,7 +18,7 @@
#include <endian.h>
#include "dnodeSystem.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "tsched.h"
#include "tutil.h"
#include "vnode.h"
...
...
src/mnode/src/mgmtGrant.c
浏览文件 @
ded484b5
...
...
@@ -15,7 +15,7 @@
#define _DEFAULT_SOURCE
#include "os.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "mgmtAcct.h"
#include "mgmtGrant.h"
...
...
src/mnode/src/mgmtMnode.spec.c
浏览文件 @
ded484b5
...
...
@@ -14,7 +14,7 @@
*/
#define _DEFAULT_SOURCE
#include "m
gmt
.h"
#include "m
node
.h"
int
mgmtGetMnodeMeta
(
SMeterMeta
*
pMeta
,
SShowObj
*
pShow
,
SConnObj
*
pConn
)
{
return
TSDB_CODE_OPS_NOT_SUPPORT
;
}
...
...
src/mnode/src/mgmtProfile.c
浏览文件 @
ded484b5
...
...
@@ -16,7 +16,7 @@
#define _DEFAULT_SOURCE
#include "os.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "mgmtProfile.h"
#include "taosmsg.h"
#include "tschemautil.h"
...
...
@@ -24,7 +24,7 @@
typedef
struct
{
uint32_t
ip
;
uint16_t
port
;
char
user
[
TSDB_
METER
_ID_LEN
];
char
user
[
TSDB_
TABLE
_ID_LEN
];
}
SCDesc
;
typedef
struct
{
...
...
src/mnode/src/mgmtShell.c
浏览文件 @
ded484b5
...
...
@@ -17,7 +17,7 @@
#include "os.h"
#include "dnodeSystem.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "mgmtGrant.h"
#include "mgmtProfile.h"
#include "taosmsg.h"
...
...
@@ -118,7 +118,7 @@ static void mgmtSetSchemaFromMeters(SSchema *pSchema, STabObj *pMeterObj, uint32
static
uint32_t
mgmtSetMeterTagValue
(
char
*
pTags
,
STabObj
*
pMetric
,
STabObj
*
pMeterObj
)
{
SSchema
*
pTagSchema
=
(
SSchema
*
)(
pMetric
->
schema
+
pMetric
->
numOfColumns
*
sizeof
(
SSchema
));
char
*
tagVal
=
pMeterObj
->
pTagData
+
TSDB_
METER
_ID_LEN
;
// tag start position
char
*
tagVal
=
pMeterObj
->
pTagData
+
TSDB_
TABLE
_ID_LEN
;
// tag start position
uint32_t
tagsLen
=
0
;
for
(
int32_t
i
=
0
;
i
<
pMetric
->
numOfTags
;
++
i
)
{
...
...
@@ -157,7 +157,7 @@ bool mgmtCheckMeterMetaMsgType(char *pMsg) {
SMeterInfoMsg
*
pInfo
=
(
SMeterInfoMsg
*
)
pMsg
;
int16_t
autoCreate
=
htons
(
pInfo
->
createFlag
);
STabObj
*
pMeterObj
=
mgmtGet
Meter
(
pInfo
->
meterId
);
STabObj
*
pMeterObj
=
mgmtGet
Table
(
pInfo
->
meterId
);
// If table does not exists and autoCreate flag is set, we add the handler into another task queue, namely tranQueue
bool
addIntoTranQueue
=
(
pMeterObj
==
NULL
&&
autoCreate
==
1
);
...
...
@@ -199,7 +199,7 @@ int mgmtProcessMeterMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) {
goto
_exit_code
;
}
pMeterObj
=
mgmtGet
Meter
(
pInfo
->
meterId
);
pMeterObj
=
mgmtGet
Table
(
pInfo
->
meterId
);
// on demand create table from super table if meter does not exists
if
(
pMeterObj
==
NULL
&&
pInfo
->
createFlag
==
1
)
{
...
...
@@ -224,8 +224,8 @@ int mgmtProcessMeterMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) {
int32_t
code
=
mgmtCreateMeter
(
pDb
,
pCreateMsg
);
char
stableName
[
TSDB_
METER
_ID_LEN
]
=
{
0
};
strncpy
(
stableName
,
pInfo
->
tags
,
TSDB_
METER
_ID_LEN
);
char
stableName
[
TSDB_
TABLE
_ID_LEN
]
=
{
0
};
strncpy
(
stableName
,
pInfo
->
tags
,
TSDB_
TABLE
_ID_LEN
);
mTrace
(
"meter:%s is automatically created by %s from %s, code:%d"
,
pCreateMsg
->
meterId
,
pConn
->
pUser
->
user
,
stableName
,
code
);
...
...
@@ -243,7 +243,7 @@ int mgmtProcessMeterMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) {
goto
_exit_code
;
}
pMeterObj
=
mgmtGet
Meter
(
pInfo
->
meterId
);
pMeterObj
=
mgmtGet
Table
(
pInfo
->
meterId
);
}
if
((
pStart
=
mgmtAllocMsg
(
pConn
,
size
,
&
pMsg
,
&
pRsp
))
==
NULL
)
{
...
...
@@ -274,15 +274,15 @@ int mgmtProcessMeterMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) {
pMeta
->
numOfTags
=
pMeterObj
->
numOfTags
;
pMeta
->
numOfColumns
=
htons
(
pMeterObj
->
numOfColumns
);
pMeta
->
meterType
=
pMeterObj
->
meter
Type
;
pMeta
->
tableType
=
pMeterObj
->
table
Type
;
pMsg
+=
sizeof
(
SMeterMeta
);
pSchema
=
(
SSchema
*
)
pMsg
;
// schema locates at the end of SMeterMeta struct
if
(
mgmt
MeterCreateFromMetric
(
pMeterObj
))
{
if
(
mgmt
TableCreateFromSuperTable
(
pMeterObj
))
{
assert
(
pMeterObj
->
numOfTags
==
0
);
STabObj
*
pMetric
=
mgmtGet
Meter
(
pMeterObj
->
pTagData
);
STabObj
*
pMetric
=
mgmtGet
Table
(
pMeterObj
->
pTagData
);
uint32_t
numOfTotalCols
=
(
uint32_t
)
pMetric
->
numOfTags
+
pMetric
->
numOfColumns
;
pMeta
->
numOfTags
=
pMetric
->
numOfTags
;
// update the numOfTags info
...
...
@@ -302,7 +302,7 @@ int mgmtProcessMeterMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) {
pMsg
+=
numOfTotalCols
*
sizeof
(
SSchema
);
}
if
(
mgmtIsNormal
Meter
(
pMeterObj
))
{
if
(
mgmtIsNormal
Table
(
pMeterObj
))
{
pVgroup
=
mgmtGetVgroup
(
pMeterObj
->
gid
.
vgId
);
if
(
pVgroup
==
NULL
)
{
pRsp
->
code
=
TSDB_CODE_INVALID_TABLE
;
...
...
@@ -361,7 +361,7 @@ int mgmtProcessMultiMeterMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) {
}
int32_t
totalNum
=
0
;
char
tblName
[
TSDB_
METER
_ID_LEN
];
char
tblName
[
TSDB_
TABLE
_ID_LEN
];
char
*
nextStr
;
char
*
pCurMeter
=
pStart
+
sizeof
(
STaosRsp
)
+
sizeof
(
SMultiMeterInfoMsg
)
+
1
;
// 1: ie type byte
...
...
@@ -397,7 +397,7 @@ int mgmtProcessMultiMeterMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) {
}
// get meter schema, and fill into resp payload
pMeterObj
=
mgmtGet
Meter
(
tblName
);
pMeterObj
=
mgmtGet
Table
(
tblName
);
pDbObj
=
mgmtGetDbByMeterId
(
tblName
);
if
(
pMeterObj
==
NULL
||
(
pDbObj
==
NULL
))
{
...
...
@@ -414,15 +414,15 @@ int mgmtProcessMultiMeterMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) {
pMeta
->
meta
.
precision
=
pDbObj
->
cfg
.
precision
;
pMeta
->
meta
.
numOfTags
=
pMeterObj
->
numOfTags
;
pMeta
->
meta
.
numOfColumns
=
htons
(
pMeterObj
->
numOfColumns
);
pMeta
->
meta
.
meterType
=
pMeterObj
->
meter
Type
;
pMeta
->
meta
.
tableType
=
pMeterObj
->
table
Type
;
pCurMeter
+=
sizeof
(
SMultiMeterMeta
);
pSchema
=
(
SSchema
*
)
pCurMeter
;
// schema locates at the end of SMeterMeta struct
if
(
mgmt
MeterCreateFromMetric
(
pMeterObj
))
{
if
(
mgmt
TableCreateFromSuperTable
(
pMeterObj
))
{
assert
(
pMeterObj
->
numOfTags
==
0
);
STabObj
*
pMetric
=
mgmtGet
Meter
(
pMeterObj
->
pTagData
);
STabObj
*
pMetric
=
mgmtGet
Table
(
pMeterObj
->
pTagData
);
uint32_t
numOfTotalCols
=
(
uint32_t
)
pMetric
->
numOfTags
+
pMetric
->
numOfColumns
;
pMeta
->
meta
.
numOfTags
=
pMetric
->
numOfTags
;
// update the numOfTags info
...
...
@@ -442,7 +442,7 @@ int mgmtProcessMultiMeterMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) {
pCurMeter
+=
numOfTotalCols
*
sizeof
(
SSchema
);
}
if
(
mgmtIsNormal
Meter
(
pMeterObj
))
{
if
(
mgmtIsNormal
Table
(
pMeterObj
))
{
pVgroup
=
mgmtGetVgroup
(
pMeterObj
->
gid
.
vgId
);
if
(
pVgroup
==
NULL
)
{
pRsp
->
code
=
TSDB_CODE_INVALID_TABLE
;
...
...
@@ -494,22 +494,22 @@ _exit_code:
}
int
mgmtProcessMetricMetaMsg
(
char
*
pMsg
,
int
msgLen
,
SConnObj
*
pConn
)
{
S
MetricMetaMsg
*
pMetricMetaMsg
=
(
SMetric
MetaMsg
*
)
pMsg
;
S
SuperTableMetaMsg
*
pSuperTableMetaMsg
=
(
SSuperTable
MetaMsg
*
)
pMsg
;
STabObj
*
pMetric
;
STaosRsp
*
pRsp
;
char
*
pStart
;
p
MetricMetaMsg
->
numOfMeters
=
htonl
(
pMetric
MetaMsg
->
numOfMeters
);
p
SuperTableMetaMsg
->
numOfMeters
=
htonl
(
pSuperTable
MetaMsg
->
numOfMeters
);
p
MetricMetaMsg
->
join
=
htonl
(
pMetric
MetaMsg
->
join
);
p
MetricMetaMsg
->
joinCondLen
=
htonl
(
pMetric
MetaMsg
->
joinCondLen
);
p
SuperTableMetaMsg
->
join
=
htonl
(
pSuperTable
MetaMsg
->
join
);
p
SuperTableMetaMsg
->
joinCondLen
=
htonl
(
pSuperTable
MetaMsg
->
joinCondLen
);
for
(
int32_t
i
=
0
;
i
<
p
Metric
MetaMsg
->
numOfMeters
;
++
i
)
{
p
MetricMetaMsg
->
metaElem
[
i
]
=
htonl
(
pMetric
MetaMsg
->
metaElem
[
i
]);
for
(
int32_t
i
=
0
;
i
<
p
SuperTable
MetaMsg
->
numOfMeters
;
++
i
)
{
p
SuperTableMetaMsg
->
metaElem
[
i
]
=
htonl
(
pSuperTable
MetaMsg
->
metaElem
[
i
]);
}
SMetricMetaElemMsg
*
pElem
=
(
SMetricMetaElemMsg
*
)(((
char
*
)
p
MetricMetaMsg
)
+
pMetric
MetaMsg
->
metaElem
[
0
]);
pMetric
=
mgmtGet
Meter
(
pElem
->
meterId
);
SMetricMetaElemMsg
*
pElem
=
(
SMetricMetaElemMsg
*
)(((
char
*
)
p
SuperTableMetaMsg
)
+
pSuperTable
MetaMsg
->
metaElem
[
0
]);
pMetric
=
mgmtGet
Table
(
pElem
->
meterId
);
SDbObj
*
pDb
=
NULL
;
if
(
pConn
->
pDb
!=
NULL
)
pDb
=
mgmtGetDb
(
pConn
->
pDb
->
name
);
...
...
@@ -531,7 +531,7 @@ int mgmtProcessMetricMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) {
msgLen
=
pMsg
-
pStart
;
}
else
{
msgLen
=
mgmtRetrieveMetricMeta
(
pConn
,
&
pStart
,
p
Metric
MetaMsg
);
msgLen
=
mgmtRetrieveMetricMeta
(
pConn
,
&
pStart
,
p
SuperTable
MetaMsg
);
if
(
msgLen
<=
0
)
{
taosSendSimpleRsp
(
pConn
->
thandle
,
TSDB_MSG_TYPE_METRIC_META_RSP
,
TSDB_CODE_SERV_OUT_OF_MEMORY
);
return
0
;
...
...
@@ -880,7 +880,7 @@ int mgmtProcessUseDbMsg(char *pMsg, int msgLen, SConnObj *pConn) {
}
int
(
*
mgmtGetMetaFp
[])(
SMeterMeta
*
pMeta
,
SShowObj
*
pShow
,
SConnObj
*
pConn
)
=
{
mgmtGetAcctMeta
,
mgmtGetUserMeta
,
mgmtGetDbMeta
,
mgmtGet
Meter
Meta
,
mgmtGetDnodeMeta
,
mgmtGetAcctMeta
,
mgmtGetUserMeta
,
mgmtGetDbMeta
,
mgmtGet
Table
Meta
,
mgmtGetDnodeMeta
,
mgmtGetMnodeMeta
,
mgmtGetVgroupMeta
,
mgmtGetMetricMeta
,
mgmtGetModuleMeta
,
mgmtGetQueryMeta
,
mgmtGetStreamMeta
,
mgmtGetConfigMeta
,
mgmtGetConnsMeta
,
mgmtGetScoresMeta
,
grantGetGrantsMeta
,
mgmtGetVnodeMeta
,
...
...
@@ -1076,11 +1076,11 @@ int mgmtProcessCreateTableMsg(char *pMsg, int msgLen, SConnObj *pConn) {
}
else
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
==
TSDB_CODE_TABLE_ALREADY_EXIST
)
{
// table already created when the second attempt to create table
STabObj
*
p
Meter
=
mgmtGetMeter
(
pCreate
->
meterId
);
assert
(
p
Meter
!=
NULL
);
STabObj
*
p
Table
=
mgmtGetTable
(
pCreate
->
meterId
);
assert
(
p
Table
!=
NULL
);
mWarn
(
"table:%s, table already created, failed to create table, ts:%"
PRId64
", code:%d"
,
pCreate
->
meterId
,
p
Meter
->
createdTime
,
code
);
p
Table
->
createdTime
,
code
);
}
else
{
// other errors
mError
(
"table:%s, failed to create table, code:%d"
,
pCreate
->
meterId
,
code
);
}
...
...
src/mnode/src/mgmtShell.spec.c
浏览文件 @
ded484b5
...
...
@@ -15,7 +15,7 @@
#define _DEFAULT_SOURCE
#include <arpa/inet.h>
#include "m
gmt
.h"
#include "m
node
.h"
int
mgmtCheckRedirectMsg
(
SConnObj
*
pConn
,
int
msgType
)
{
return
0
;
}
...
...
src/mnode/src/mgmtSupertableQuery.c
浏览文件 @
ded484b5
...
...
@@ -16,13 +16,19 @@
#define _DEFAULT_SOURCE
#include "os.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "mgmtUtil.h"
#include "textbuffer.h"
#include "tschemautil.h"
#include "tsqlfunction.h"
#include "vnodeTagMgmt.h"
typedef
struct
SSyntaxTreeFilterSupporter
{
SSchema
*
pTagSchema
;
int32_t
numOfTags
;
int32_t
optr
;
}
SSyntaxTreeFilterSupporter
;
typedef
struct
SJoinSupporter
{
void
**
val
;
void
**
pTabObjs
;
...
...
@@ -41,6 +47,7 @@ typedef struct SMeterNameFilterSupporter {
}
SMeterNameFilterSupporter
;
static
void
tansformQueryResult
(
tQueryResultset
*
pRes
);
static
bool
tSkipListNodeFilterCallback
(
const
void
*
pNode
,
void
*
param
);
static
int32_t
tabObjVGIDComparator
(
const
void
*
pLeft
,
const
void
*
pRight
)
{
STabObj
*
p1
=
*
(
STabObj
**
)
pLeft
;
...
...
@@ -82,10 +89,10 @@ static int32_t tabObjResultComparator(const void* p1, const void* p2, void* para
f1
=
pNode1
->
meterId
;
f2
=
pNode2
->
meterId
;
schema
.
type
=
TSDB_DATA_TYPE_BINARY
;
schema
.
bytes
=
TSDB_
METER
_ID_LEN
;
schema
.
bytes
=
TSDB_
TABLE
_ID_LEN
;
}
else
{
f1
=
mgmt
Meter
GetTag
(
pNode1
,
colIdx
,
NULL
);
f2
=
mgmt
Meter
GetTag
(
pNode2
,
colIdx
,
&
schema
);
f1
=
mgmt
Table
GetTag
(
pNode1
,
colIdx
,
NULL
);
f2
=
mgmt
Table
GetTag
(
pNode2
,
colIdx
,
&
schema
);
assert
(
schema
.
type
==
pOrderDesc
->
pTagSchema
->
pSchema
[
colIdx
].
type
);
}
...
...
@@ -104,15 +111,15 @@ static int32_t tabObjResultComparator(const void* p1, const void* p2, void* para
* update the tag order index according to the tags column index. The tags column index needs to be checked one-by-one,
* since the normal columns may be passed to server for handling the group by on status column.
*
* @param p
Metric
MetaMsg
* @param p
SuperTable
MetaMsg
* @param tableIndex
* @param pOrderIndexInfo
* @param numOfTags
*/
static
void
mgmtUpdateOrderTagColIndex
(
S
MetricMetaMsg
*
pMetric
MetaMsg
,
int32_t
tableIndex
,
tOrderIdx
*
pOrderIndexInfo
,
static
void
mgmtUpdateOrderTagColIndex
(
S
SuperTableMetaMsg
*
pSuperTable
MetaMsg
,
int32_t
tableIndex
,
tOrderIdx
*
pOrderIndexInfo
,
int32_t
numOfTags
)
{
SMetricMetaElemMsg
*
pElem
=
(
SMetricMetaElemMsg
*
)((
char
*
)
p
MetricMetaMsg
+
pMetric
MetaMsg
->
metaElem
[
tableIndex
]);
SColIndexEx
*
groupColumnList
=
(
SColIndexEx
*
)((
char
*
)
p
Metric
MetaMsg
+
pElem
->
groupbyTagColumnList
);
SMetricMetaElemMsg
*
pElem
=
(
SMetricMetaElemMsg
*
)((
char
*
)
p
SuperTableMetaMsg
+
pSuperTable
MetaMsg
->
metaElem
[
tableIndex
]);
SColIndexEx
*
groupColumnList
=
(
SColIndexEx
*
)((
char
*
)
p
SuperTable
MetaMsg
+
pElem
->
groupbyTagColumnList
);
int32_t
numOfGroupbyTags
=
0
;
for
(
int32_t
i
=
0
;
i
<
pElem
->
numOfGroupCols
;
++
i
)
{
...
...
@@ -127,14 +134,14 @@ static void mgmtUpdateOrderTagColIndex(SMetricMetaMsg* pMetricMetaMsg, int32_t t
}
// todo merge sort function with losertree used
void
mgmtReorganizeMetersInMetricMeta
(
S
MetricMetaMsg
*
pMetric
MetaMsg
,
int32_t
tableIndex
,
tQueryResultset
*
pRes
)
{
void
mgmtReorganizeMetersInMetricMeta
(
S
SuperTableMetaMsg
*
pSuperTable
MetaMsg
,
int32_t
tableIndex
,
tQueryResultset
*
pRes
)
{
if
(
pRes
->
num
<=
0
)
{
// no result, no need to pagination
return
;
}
SMetricMetaElemMsg
*
pElem
=
(
SMetricMetaElemMsg
*
)((
char
*
)
p
MetricMetaMsg
+
pMetric
MetaMsg
->
metaElem
[
tableIndex
]);
SMetricMetaElemMsg
*
pElem
=
(
SMetricMetaElemMsg
*
)((
char
*
)
p
SuperTableMetaMsg
+
pSuperTable
MetaMsg
->
metaElem
[
tableIndex
]);
STabObj
*
pMetric
=
mgmtGet
Meter
(
pElem
->
meterId
);
STabObj
*
pMetric
=
mgmtGet
Table
(
pElem
->
meterId
);
SSchema
*
pTagSchema
=
(
SSchema
*
)(
pMetric
->
schema
+
pMetric
->
numOfColumns
*
sizeof
(
SSchema
));
/*
...
...
@@ -149,7 +156,7 @@ void mgmtReorganizeMetersInMetricMeta(SMetricMetaMsg* pMetricMetaMsg, int32_t ta
int32_t
*
startPos
=
NULL
;
int32_t
numOfSubset
=
1
;
mgmtUpdateOrderTagColIndex
(
p
Metric
MetaMsg
,
tableIndex
,
&
descriptor
->
orderIdx
,
pMetric
->
numOfTags
);
mgmtUpdateOrderTagColIndex
(
p
SuperTable
MetaMsg
,
tableIndex
,
&
descriptor
->
orderIdx
,
pMetric
->
numOfTags
);
if
(
descriptor
->
orderIdx
.
numOfOrderedCols
>
0
)
{
tQSortEx
(
pRes
->
pRes
,
POINTER_BYTES
,
0
,
pRes
->
num
-
1
,
descriptor
,
tabObjResultComparator
);
startPos
=
calculateSubGroup
(
pRes
->
pRes
,
pRes
->
num
,
&
numOfSubset
,
descriptor
,
tabObjResultComparator
);
...
...
@@ -181,7 +188,7 @@ static void mgmtRetrieveByMeterName(tQueryResultset* pRes, char* str, STabObj* p
pRes
->
num
=
0
;
for
(
pToken
=
strsep
(
&
str
,
sep
);
pToken
!=
NULL
;
pToken
=
strsep
(
&
str
,
sep
))
{
STabObj
*
pMeterObj
=
mgmtGet
Meter
(
pToken
);
STabObj
*
pMeterObj
=
mgmtGet
Table
(
pToken
);
if
(
pMeterObj
==
NULL
)
{
mWarn
(
"metric:%s error in metric query expression, invalid meter id:%s"
,
pMetric
->
meterId
,
pToken
);
continue
;
...
...
@@ -193,7 +200,7 @@ static void mgmtRetrieveByMeterName(tQueryResultset* pRes, char* str, STabObj* p
}
/* not a table created from metric, ignore */
if
(
pMeterObj
->
meterType
!=
TSDB_METER_M
TABLE
)
{
if
(
pMeterObj
->
tableType
!=
TSDB_TABLE_TYPE_CREATE_FROM_S
TABLE
)
{
continue
;
}
...
...
@@ -201,8 +208,8 @@ static void mgmtRetrieveByMeterName(tQueryResultset* pRes, char* str, STabObj* p
* queried meter not belongs to this metric, ignore, metric does not have
* uid, so compare according to meterid
*/
STabObj
*
parentMetric
=
mgmtGet
Meter
(
pMeterObj
->
pTagData
);
if
(
strncasecmp
(
parentMetric
->
meterId
,
pMetric
->
meterId
,
TSDB_
METER
_ID_LEN
)
!=
0
||
STabObj
*
parentMetric
=
mgmtGet
Table
(
pMeterObj
->
pTagData
);
if
(
strncasecmp
(
parentMetric
->
meterId
,
pMetric
->
meterId
,
TSDB_
TABLE
_ID_LEN
)
!=
0
||
(
parentMetric
->
uid
!=
pMetric
->
uid
))
{
continue
;
}
...
...
@@ -214,13 +221,13 @@ static void mgmtRetrieveByMeterName(tQueryResultset* pRes, char* str, STabObj* p
static
bool
mgmtTablenameFilterCallback
(
tSkipListNode
*
pNode
,
void
*
param
)
{
SMeterNameFilterSupporter
*
pSupporter
=
(
SMeterNameFilterSupporter
*
)
param
;
char
name
[
TSDB_
METER
_ID_LEN
]
=
{
0
};
char
name
[
TSDB_
TABLE
_ID_LEN
]
=
{
0
};
// pattern compare for meter name
STabObj
*
pMeterObj
=
(
STabObj
*
)
pNode
->
pData
;
extractTableName
(
pMeterObj
->
meterId
,
name
);
return
patternMatch
(
pSupporter
->
pattern
,
name
,
TSDB_
METER
_ID_LEN
,
&
pSupporter
->
info
)
==
TSDB_PATTERN_MATCH
;
return
patternMatch
(
pSupporter
->
pattern
,
name
,
TSDB_
TABLE
_ID_LEN
,
&
pSupporter
->
info
)
==
TSDB_PATTERN_MATCH
;
}
static
void
mgmtRetrieveFromLikeOptr
(
tQueryResultset
*
pRes
,
const
char
*
str
,
STabObj
*
pMetric
)
{
...
...
@@ -256,7 +263,7 @@ UNUSED_FUNC static bool mgmtJoinFilterCallback(tSkipListNode* pNode, void* param
SJoinSupporter
*
pSupporter
=
(
SJoinSupporter
*
)
param
;
SSchema
s
=
{
0
};
char
*
v
=
mgmt
Meter
GetTag
((
STabObj
*
)
pNode
->
pData
,
pSupporter
->
colIndex
,
&
s
);
char
*
v
=
mgmt
Table
GetTag
((
STabObj
*
)
pNode
->
pData
,
pSupporter
->
colIndex
,
&
s
);
for
(
int32_t
i
=
0
;
i
<
pSupporter
->
size
;
++
i
)
{
int32_t
ret
=
doCompare
(
v
,
pSupporter
->
val
[
i
],
pSupporter
->
type
,
s
.
bytes
);
...
...
@@ -282,13 +289,13 @@ UNUSED_FUNC static bool mgmtJoinFilterCallback(tSkipListNode* pNode, void* param
return
false
;
}
static
void
orderResult
(
S
MetricMetaMsg
*
pMetric
MetaMsg
,
tQueryResultset
*
pRes
,
int16_t
colIndex
,
int32_t
tableIndex
)
{
SMetricMetaElemMsg
*
pElem
=
(
SMetricMetaElemMsg
*
)((
char
*
)
p
MetricMetaMsg
+
pMetric
MetaMsg
->
metaElem
[
tableIndex
]);
static
void
orderResult
(
S
SuperTableMetaMsg
*
pSuperTable
MetaMsg
,
tQueryResultset
*
pRes
,
int16_t
colIndex
,
int32_t
tableIndex
)
{
SMetricMetaElemMsg
*
pElem
=
(
SMetricMetaElemMsg
*
)((
char
*
)
p
SuperTableMetaMsg
+
pSuperTable
MetaMsg
->
metaElem
[
tableIndex
]);
tOrderDescriptor
*
descriptor
=
(
tOrderDescriptor
*
)
calloc
(
1
,
sizeof
(
tOrderDescriptor
)
+
sizeof
(
int32_t
)
*
1
);
// only one column for join
STabObj
*
pMetric
=
mgmtGet
Meter
(
pElem
->
meterId
);
STabObj
*
pMetric
=
mgmtGet
Table
(
pElem
->
meterId
);
SSchema
*
pTagSchema
=
(
SSchema
*
)(
pMetric
->
schema
+
pMetric
->
numOfColumns
*
sizeof
(
SSchema
));
descriptor
->
pTagSchema
=
tCreateTagSchema
(
pTagSchema
,
pMetric
->
numOfTags
);
...
...
@@ -311,8 +318,8 @@ static int32_t mgmtCheckForDuplicateTagValue(tQueryResultset* pRes, int32_t inde
STabObj
*
pObj1
=
pRes
[
index
].
pRes
[
k
-
1
];
STabObj
*
pObj2
=
pRes
[
index
].
pRes
[
k
];
char
*
val1
=
mgmt
Meter
GetTag
(
pObj1
,
tagCol
,
&
s
);
char
*
val2
=
mgmt
Meter
GetTag
(
pObj2
,
tagCol
,
NULL
);
char
*
val1
=
mgmt
Table
GetTag
(
pObj1
,
tagCol
,
&
s
);
char
*
val2
=
mgmt
Table
GetTag
(
pObj2
,
tagCol
,
NULL
);
if
(
doCompare
(
val1
,
val2
,
s
.
type
,
s
.
bytes
)
==
0
)
{
return
TSDB_CODE_DUPLICATE_TAGS
;
...
...
@@ -322,13 +329,13 @@ static int32_t mgmtCheckForDuplicateTagValue(tQueryResultset* pRes, int32_t inde
return
TSDB_CODE_SUCCESS
;
}
int32_t
mgmtDoJoin
(
S
MetricMetaMsg
*
pMetric
MetaMsg
,
tQueryResultset
*
pRes
)
{
if
(
p
Metric
MetaMsg
->
numOfMeters
==
1
)
{
int32_t
mgmtDoJoin
(
S
SuperTableMetaMsg
*
pSuperTable
MetaMsg
,
tQueryResultset
*
pRes
)
{
if
(
p
SuperTable
MetaMsg
->
numOfMeters
==
1
)
{
return
TSDB_CODE_SUCCESS
;
}
bool
allEmpty
=
false
;
for
(
int32_t
i
=
0
;
i
<
p
Metric
MetaMsg
->
numOfMeters
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
p
SuperTable
MetaMsg
->
numOfMeters
;
++
i
)
{
if
(
pRes
[
i
].
num
==
0
)
{
// all results are empty if one of them is empty
allEmpty
=
true
;
break
;
...
...
@@ -336,7 +343,7 @@ int32_t mgmtDoJoin(SMetricMetaMsg* pMetricMetaMsg, tQueryResultset* pRes) {
}
if
(
allEmpty
)
{
for
(
int32_t
i
=
0
;
i
<
p
Metric
MetaMsg
->
numOfMeters
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
p
SuperTable
MetaMsg
->
numOfMeters
;
++
i
)
{
pRes
[
i
].
num
=
0
;
tfree
(
pRes
[
i
].
pRes
);
}
...
...
@@ -344,26 +351,26 @@ int32_t mgmtDoJoin(SMetricMetaMsg* pMetricMetaMsg, tQueryResultset* pRes) {
return
TSDB_CODE_SUCCESS
;
}
char
*
cond
=
(
char
*
)
p
MetricMetaMsg
+
pMetric
MetaMsg
->
join
;
char
*
cond
=
(
char
*
)
p
SuperTableMetaMsg
+
pSuperTable
MetaMsg
->
join
;
char
left
[
TSDB_
METER
_ID_LEN
+
1
]
=
{
0
};
char
left
[
TSDB_
TABLE
_ID_LEN
+
1
]
=
{
0
};
strcpy
(
left
,
cond
);
int16_t
leftTagColIndex
=
*
(
int16_t
*
)(
cond
+
TSDB_
METER
_ID_LEN
);
int16_t
leftTagColIndex
=
*
(
int16_t
*
)(
cond
+
TSDB_
TABLE
_ID_LEN
);
char
right
[
TSDB_
METER
_ID_LEN
+
1
]
=
{
0
};
strcpy
(
right
,
cond
+
TSDB_
METER
_ID_LEN
+
sizeof
(
int16_t
));
int16_t
rightTagColIndex
=
*
(
int16_t
*
)(
cond
+
TSDB_
METER
_ID_LEN
*
2
+
sizeof
(
int16_t
));
char
right
[
TSDB_
TABLE
_ID_LEN
+
1
]
=
{
0
};
strcpy
(
right
,
cond
+
TSDB_
TABLE
_ID_LEN
+
sizeof
(
int16_t
));
int16_t
rightTagColIndex
=
*
(
int16_t
*
)(
cond
+
TSDB_
TABLE
_ID_LEN
*
2
+
sizeof
(
int16_t
));
STabObj
*
pLeftMetric
=
mgmtGet
Meter
(
left
);
STabObj
*
pRightMetric
=
mgmtGet
Meter
(
right
);
STabObj
*
pLeftMetric
=
mgmtGet
Table
(
left
);
STabObj
*
pRightMetric
=
mgmtGet
Table
(
right
);
// decide the pRes belongs to
int32_t
leftIndex
=
0
;
int32_t
rightIndex
=
0
;
for
(
int32_t
i
=
0
;
i
<
p
Metric
MetaMsg
->
numOfMeters
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
p
SuperTable
MetaMsg
->
numOfMeters
;
++
i
)
{
STabObj
*
pObj
=
(
STabObj
*
)
pRes
[
i
].
pRes
[
0
];
STabObj
*
pMetric1
=
mgmtGet
Meter
(
pObj
->
pTagData
);
STabObj
*
pMetric1
=
mgmtGet
Table
(
pObj
->
pTagData
);
if
(
pMetric1
==
pLeftMetric
)
{
leftIndex
=
i
;
}
else
if
(
pMetric1
==
pRightMetric
)
{
...
...
@@ -371,8 +378,8 @@ int32_t mgmtDoJoin(SMetricMetaMsg* pMetricMetaMsg, tQueryResultset* pRes) {
}
}
orderResult
(
p
Metric
MetaMsg
,
&
pRes
[
leftIndex
],
leftTagColIndex
,
leftIndex
);
orderResult
(
p
Metric
MetaMsg
,
&
pRes
[
rightIndex
],
rightTagColIndex
,
rightIndex
);
orderResult
(
p
SuperTable
MetaMsg
,
&
pRes
[
leftIndex
],
leftTagColIndex
,
leftIndex
);
orderResult
(
p
SuperTable
MetaMsg
,
&
pRes
[
rightIndex
],
rightTagColIndex
,
rightIndex
);
int32_t
i
=
0
;
int32_t
j
=
0
;
...
...
@@ -391,8 +398,8 @@ int32_t mgmtDoJoin(SMetricMetaMsg* pMetricMetaMsg, tQueryResultset* pRes) {
STabObj
*
pLeftObj
=
pRes
[
leftIndex
].
pRes
[
i
];
STabObj
*
pRightObj
=
pRes
[
rightIndex
].
pRes
[
j
];
char
*
v1
=
mgmt
Meter
GetTag
(
pLeftObj
,
leftTagColIndex
,
&
s
);
char
*
v2
=
mgmt
Meter
GetTag
(
pRightObj
,
rightTagColIndex
,
NULL
);
char
*
v1
=
mgmt
Table
GetTag
(
pLeftObj
,
leftTagColIndex
,
&
s
);
char
*
v2
=
mgmt
Table
GetTag
(
pRightObj
,
rightTagColIndex
,
NULL
);
int32_t
ret
=
doCompare
(
v1
,
v2
,
s
.
type
,
s
.
bytes
);
if
(
ret
==
0
)
{
// qualified
...
...
@@ -727,9 +734,9 @@ static int32_t mgmtFilterMeterByIndex(STabObj* pMetric, tQueryResultset* pRes, c
return
TSDB_CODE_SUCCESS
;
}
int
mgmtRetrieveMetersFromMetric
(
SMetric
MetaMsg
*
pMsg
,
int32_t
tableIndex
,
tQueryResultset
*
pRes
)
{
int
32_t
mgmtRetrieveMetersFromSuperTable
(
SSuperTable
MetaMsg
*
pMsg
,
int32_t
tableIndex
,
tQueryResultset
*
pRes
)
{
SMetricMetaElemMsg
*
pElem
=
(
SMetricMetaElemMsg
*
)((
char
*
)
pMsg
+
pMsg
->
metaElem
[
tableIndex
]);
STabObj
*
pMetric
=
mgmtGet
Meter
(
pElem
->
meterId
);
STabObj
*
pMetric
=
mgmtGet
Table
(
pElem
->
meterId
);
char
*
pCond
=
NULL
;
char
*
tmpTableNameCond
=
NULL
;
...
...
@@ -806,11 +813,11 @@ int mgmtRetrieveMetersFromMetric(SMetricMetaMsg* pMsg, int32_t tableIndex, tQuer
}
// todo refactor!!!!!
static
char
*
getTagValueFromMeter
(
STabObj
*
p
Meter
,
int32_t
offset
,
int32_t
len
,
char
*
param
)
{
static
char
*
getTagValueFromMeter
(
STabObj
*
p
Table
,
int32_t
offset
,
int32_t
len
,
char
*
param
)
{
if
(
offset
==
TSDB_TBNAME_COLUMN_INDEX
)
{
extractTableName
(
p
Meter
->
meterId
,
param
);
extractTableName
(
p
Table
->
meterId
,
param
);
}
else
{
char
*
tags
=
p
Meter
->
pTagData
+
offset
+
TSDB_METER
_ID_LEN
;
// tag start position
char
*
tags
=
p
Table
->
pTagData
+
offset
+
TSDB_TABLE
_ID_LEN
;
// tag start position
memcpy
(
param
,
tags
,
len
);
// make sure the value is null-terminated string
}
...
...
@@ -820,11 +827,11 @@ static char* getTagValueFromMeter(STabObj* pMeter, int32_t offset, int32_t len,
bool
tSkipListNodeFilterCallback
(
const
void
*
pNode
,
void
*
param
)
{
tQueryInfo
*
pInfo
=
(
tQueryInfo
*
)
param
;
STabObj
*
p
Meter
=
(
STabObj
*
)(((
tSkipListNode
*
)
pNode
)
->
pData
);
STabObj
*
p
Table
=
(
STabObj
*
)(((
tSkipListNode
*
)
pNode
)
->
pData
);
char
buf
[
TSDB_MAX_TAGS_LEN
]
=
{
0
};
char
*
val
=
getTagValueFromMeter
(
p
Meter
,
pInfo
->
offset
,
pInfo
->
sch
.
bytes
,
buf
);
char
*
val
=
getTagValueFromMeter
(
p
Table
,
pInfo
->
offset
,
pInfo
->
sch
.
bytes
,
buf
);
int8_t
type
=
pInfo
->
sch
.
type
;
int32_t
ret
=
0
;
...
...
src/mnode/src/mgmtSystem.c
浏览文件 @
ded484b5
...
...
@@ -17,7 +17,7 @@
#include "os.h"
#include "dnodeSystem.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "tsdb.h"
#include "mgmtSystem.h"
#include "dnodeModule.h"
...
...
src/mnode/src/mgmtSystem.spec.c
浏览文件 @
ded484b5
...
...
@@ -17,7 +17,7 @@
#include <arpa/inet.h>
#include "dnodeSystem.h"
#include "m
gmt
.h"
#include "m
node
.h"
extern
void
*
mgmtTmr
;
extern
void
*
mgmtStatusTimer
;
...
...
src/mnode/src/mgmt
Meter
.c
→
src/mnode/src/mgmt
Table
.c
浏览文件 @
ded484b5
此差异已折叠。
点击以展开。
src/mnode/src/mgmtUser.c
浏览文件 @
ded484b5
...
...
@@ -16,7 +16,7 @@
#define _DEFAULT_SOURCE
#include "os.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "mgmtGrant.h"
#include "mgmtAcct.h"
#include "tschemautil.h"
...
...
src/mnode/src/mgmtUtil.c
浏览文件 @
ded484b5
...
...
@@ -15,71 +15,54 @@
#define _DEFAULT_SOURCE
#include "os.h"
#include "mgmt.h"
#include "mnode.h"
#include "mgmtUtil.h"
#include "textbuffer.h"
#include "tschemautil.h"
#include "tsqlfunction.h"
#include "vnodeTagMgmt.h"
extern
int
cksumsize
;
uint64_t
mgmtGetCheckSum
(
FILE
*
fp
,
int
offset
)
{
uint64_t
checksum
=
0
;
uint64_t
data
;
int
bytes
;
while
(
1
)
{
data
=
0
;
bytes
=
fread
(
&
data
,
sizeof
(
data
),
1
,
fp
);
if
(
bytes
!=
sizeof
(
data
))
break
;
checksum
+=
data
;
}
return
checksum
;
bool
mgmtTableCreateFromSuperTable
(
STabObj
*
pTableObj
)
{
return
pTableObj
->
tableType
==
TSDB_TABLE_TYPE_CREATE_FROM_STABLE
;
}
bool
mgmt
MeterCreateFromMetric
(
STabObj
*
pMeterObj
)
{
return
pMeterObj
->
meterType
==
TSDB_METER_MTABLE
;
}
bool
mgmtIsMetric
(
STabObj
*
pMeterObj
)
{
return
pMeterObj
->
meterType
==
TSDB_METER_METRIC
;
}
bool
mgmt
IsSuperTable
(
STabObj
*
pTableObj
)
{
return
pTableObj
->
tableType
==
TSDB_TABLE_TYPE_SUPER_TABLE
;
}
bool
mgmtIsNormalMeter
(
STabObj
*
pMeterObj
)
{
return
!
mgmtIsMetric
(
pMeterObj
);
}
bool
mgmtIsNormalTable
(
STabObj
*
pTableObj
)
{
return
!
mgmtIsSuperTable
(
pTableObj
);
}
/**
* TODO: the tag offset value should be kept in memory to avoid dynamically calculating the value
*
* @param p
Meter
* @param p
Table
* @param col
* @param pTagColSchema
* @return
*/
char
*
mgmt
MeterGetTag
(
STabObj
*
pMeter
,
int32_t
col
,
SSchema
*
pTagColSchema
)
{
if
(
!
mgmt
MeterCreateFromMetric
(
pMeter
))
{
char
*
mgmt
TableGetTag
(
STabObj
*
pTable
,
int32_t
col
,
SSchema
*
pTagColSchema
)
{
if
(
!
mgmt
TableCreateFromSuperTable
(
pTable
))
{
return
NULL
;
}
STabObj
*
p
Metric
=
mgmtGetMeter
(
pMeter
->
pTagData
);
int32_t
offset
=
mgmtGetTagsLength
(
p
Metric
,
col
)
+
TSDB_METER
_ID_LEN
;
STabObj
*
p
SuperTable
=
mgmtGetTable
(
pTable
->
pTagData
);
int32_t
offset
=
mgmtGetTagsLength
(
p
SuperTable
,
col
)
+
TSDB_TABLE
_ID_LEN
;
assert
(
offset
>
0
);
if
(
pTagColSchema
!=
NULL
)
{
*
pTagColSchema
=
((
SSchema
*
)
p
Metric
->
schema
)[
pMetric
->
numOfColumns
+
col
];
*
pTagColSchema
=
((
SSchema
*
)
p
SuperTable
->
schema
)[
pSuperTable
->
numOfColumns
+
col
];
}
return
(
p
Meter
->
pTagData
+
offset
);
return
(
p
Table
->
pTagData
+
offset
);
}
int32_t
mgmtGetTagsLength
(
STabObj
*
p
Metric
,
int32_t
col
)
{
// length before column col
assert
(
mgmtIs
Metric
(
pMetric
)
&&
col
>=
0
);
int32_t
mgmtGetTagsLength
(
STabObj
*
p
SuperTable
,
int32_t
col
)
{
// length before column col
assert
(
mgmtIs
SuperTable
(
pSuperTable
)
&&
col
>=
0
);
int32_t
len
=
0
;
int32_t
tagColumnIndexOffset
=
p
Metric
->
numOfColumns
;
int32_t
tagColumnIndexOffset
=
p
SuperTable
->
numOfColumns
;
for
(
int32_t
i
=
0
;
i
<
p
Metric
->
numOfTags
&&
i
<
col
;
++
i
)
{
len
+=
((
SSchema
*
)
p
Metric
->
schema
)[
tagColumnIndexOffset
+
i
].
bytes
;
for
(
int32_t
i
=
0
;
i
<
p
SuperTable
->
numOfTags
&&
i
<
col
;
++
i
)
{
len
+=
((
SSchema
*
)
p
SuperTable
->
schema
)[
tagColumnIndexOffset
+
i
].
bytes
;
}
return
len
;
...
...
src/mnode/src/mgmtVgroup.c
浏览文件 @
ded484b5
...
...
@@ -16,7 +16,7 @@
#define _DEFAULT_SOURCE
#include "os.h"
#include "m
gmt
.h"
#include "m
node
.h"
#include "tschemautil.h"
#include "tlog.h"
#include "vnodeStatus.h"
...
...
@@ -168,13 +168,13 @@ SVgObj *mgmtCreateVgroup(SDbObj *pDb) {
}
int
mgmtDropVgroup
(
SDbObj
*
pDb
,
SVgObj
*
pVgroup
)
{
STabObj
*
p
Meter
;
STabObj
*
p
Table
;
if
(
pVgroup
->
numOfMeters
>
0
)
{
for
(
int
i
=
0
;
i
<
pDb
->
cfg
.
maxSessions
;
++
i
)
{
if
(
pVgroup
->
meterList
!=
NULL
)
{
p
Meter
=
pVgroup
->
meterList
[
i
];
if
(
p
Meter
)
mgmtDropMeter
(
pDb
,
pMeter
->
meterId
,
0
);
p
Table
=
pVgroup
->
meterList
[
i
];
if
(
p
Table
)
mgmtDropMeter
(
pDb
,
pTable
->
meterId
,
0
);
}
}
}
...
...
@@ -239,14 +239,14 @@ int mgmtGetVgroupMeta(SMeterMeta *pMeta, SShowObj *pShow, SConnObj *pConn) {
int
maxReplica
=
0
;
SVgObj
*
pVgroup
=
NULL
;
STabObj
*
p
Meter
=
NULL
;
STabObj
*
p
Table
=
NULL
;
if
(
pShow
->
payloadLen
>
0
)
{
p
Meter
=
mgmtGetMeter
(
pShow
->
payload
);
if
(
NULL
==
p
Meter
)
{
p
Table
=
mgmtGetTable
(
pShow
->
payload
);
if
(
NULL
==
p
Table
)
{
return
TSDB_CODE_INVALID_METER_ID
;
}
pVgroup
=
mgmtGetVgroup
(
p
Meter
->
gid
.
vgId
);
pVgroup
=
mgmtGetVgroup
(
p
Table
->
gid
.
vgId
);
if
(
NULL
==
pVgroup
)
return
TSDB_CODE_INVALID_METER_ID
;
maxReplica
=
pVgroup
->
numOfVnodes
>
maxReplica
?
pVgroup
->
numOfVnodes
:
maxReplica
;
...
...
@@ -292,7 +292,7 @@ int mgmtGetVgroupMeta(SMeterMeta *pMeta, SShowObj *pShow, SConnObj *pConn) {
pShow
->
rowSize
=
pShow
->
offset
[
cols
-
1
]
+
pShow
->
bytes
[
cols
-
1
];
if
(
NULL
==
p
Meter
)
{
if
(
NULL
==
p
Table
)
{
pShow
->
numOfRows
=
pDb
->
numOfVgroups
;
pShow
->
pNode
=
pDb
->
pHead
;
}
else
{
...
...
src/modules/monitor/src/monitorSystem.c
浏览文件 @
ded484b5
...
...
@@ -188,7 +188,7 @@ void dnodeBuildMonitorSql(char *sql, int cmd) {
snprintf
(
sql
,
SQL_LENGTH
,
"create table if not exists %s.slowquery(ts timestamp, username "
"binary(%d), created_time timestamp, time bigint, sql binary(%d))"
,
tsMonitorDbName
,
TSDB_
METER
_ID_LEN
,
TSDB_SHOW_SQL_LEN
);
tsMonitorDbName
,
TSDB_
TABLE
_ID_LEN
,
TSDB_SHOW_SQL_LEN
);
}
else
if
(
cmd
==
MONITOR_CMD_CREATE_TB_LOG
)
{
snprintf
(
sql
,
SQL_LENGTH
,
"create table if not exists %s.log(ts timestamp, level tinyint, "
...
...
src/rpc/src/trpc.c
浏览文件 @
ded484b5
...
...
@@ -722,7 +722,7 @@ int taosSetSecurityInfo(int chann, int sid, char *id, int spi, int encrypt, char
pConn->encrypt = encrypt;
memcpy(pConn->secret, pConn->secret, TSDB_KEY_LEN);
memcpy(pConn->cipheringKey, ckey, TSDB_KEY_LEN);
memcpy(pConn->meterId, id, TSDB_
METER
_ID_LEN);
memcpy(pConn->meterId, id, TSDB_
TABLE
_ID_LEN);
*/
return
-
1
;
}
...
...
src/sdb/src/hashstr.c
浏览文件 @
ded484b5
...
...
@@ -19,7 +19,7 @@
#define MAX_STR_LEN 40
typedef
struct
_str_node_t
{
char
string
[
TSDB_
METER
_ID_LEN
];
char
string
[
TSDB_
TABLE
_ID_LEN
];
int
hash
;
struct
_str_node_t
*
prev
;
struct
_str_node_t
*
next
;
...
...
src/util/CMakeLists.txt
浏览文件 @
ded484b5
CMAKE_MINIMUM_REQUIRED
(
VERSION 2.8
)
PROJECT
(
TDengine
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/inc
)
INCLUDE_DIRECTORIES
(
${
TD_OS_DIR
}
/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/util/inc
)
IF
((
TD_LINUX_64
)
OR
(
TD_LINUX_32 AND TD_ARM
))
AUX_SOURCE_DIRECTORY
(
src SRC
)
...
...
@@ -34,6 +35,7 @@ ELSEIF (TD_WINDOWS_64)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/deps/iconv
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/deps/regex
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/inc
)
LIST
(
APPEND SRC ./src/hash.c
)
LIST
(
APPEND SRC ./src/ihash.c
)
LIST
(
APPEND SRC ./src/lz4.c
)
LIST
(
APPEND SRC ./src/shash.c
)
...
...
@@ -68,6 +70,7 @@ ELSEIF (TD_WINDOWS_64)
TARGET_LINK_LIBRARIES
(
tutil iconv regex pthread os winmm IPHLPAPI ws2_32
)
ELSEIF
(
TD_DARWIN_64
)
ADD_DEFINITIONS
(
-DUSE_LIBICONV
)
LIST
(
APPEND SRC ./src/hash.c
)
LIST
(
APPEND SRC ./src/ihash.c
)
LIST
(
APPEND SRC ./src/lz4.c
)
LIST
(
APPEND SRC ./src/shash.c
)
...
...
src/inc/buildInfo.h
→
src/
util/
inc/buildInfo.h
浏览文件 @
ded484b5
文件已移动
src/inc/hash.h
→
src/
util/
inc/hash.h
浏览文件 @
ded484b5
文件已移动
src/inc/hashutil.h
→
src/
util/
inc/hashutil.h
浏览文件 @
ded484b5
文件已移动
src/inc/ihash.h
→
src/
util/
inc/ihash.h
浏览文件 @
ded484b5
文件已移动
src/inc/lz4.h
→
src/
util/
inc/lz4.h
浏览文件 @
ded484b5
文件已移动
src/inc/shash.h
→
src/
util/
inc/shash.h
浏览文件 @
ded484b5
文件已移动
src/inc/tast.h
→
src/
util/
inc/tast.h
浏览文件 @
ded484b5
文件已移动
src/inc/tcache.h
→
src/
util/
inc/tcache.h
浏览文件 @
ded484b5
文件已移动
src/inc/tchecksum.h
→
src/
util/
inc/tchecksum.h
浏览文件 @
ded484b5
文件已移动
src/inc/tcrc32c.h
→
src/
util/
inc/tcrc32c.h
浏览文件 @
ded484b5
文件已移动
src/inc/textbuffer.h
→
src/
util/
inc/textbuffer.h
浏览文件 @
ded484b5
文件已移动
src/inc/tglobalcfg.h
→
src/
util/
inc/tglobalcfg.h
浏览文件 @
ded484b5
文件已移动
src/inc/thash.h
→
src/
util/
inc/thash.h
浏览文件 @
ded484b5
文件已移动
src/inc/thistogram.h
→
src/
util/
inc/thistogram.h
浏览文件 @
ded484b5
文件已移动
src/inc/tidpool.h
→
src/
util/
inc/tidpool.h
浏览文件 @
ded484b5
文件已移动
src/inc/tinterpolation.h
→
src/
util/
inc/tinterpolation.h
浏览文件 @
ded484b5
文件已移动
src/inc/tkey.h
→
src/
util/
inc/tkey.h
浏览文件 @
ded484b5
文件已移动
src/inc/tlog.h
→
src/
util/
inc/tlog.h
浏览文件 @
ded484b5
文件已移动
src/inc/tlosertree.h
→
src/
util/
inc/tlosertree.h
浏览文件 @
ded484b5
文件已移动
src/inc/tmd5.h
→
src/
util/
inc/tmd5.h
浏览文件 @
ded484b5
文件已移动
src/inc/tmempool.h
→
src/
util/
inc/tmempool.h
浏览文件 @
ded484b5
文件已移动
src/inc/tmodule.h
→
src/
util/
inc/tmodule.h
浏览文件 @
ded484b5
文件已移动
src/inc/tnote.h
→
src/
util/
inc/tnote.h
浏览文件 @
ded484b5
文件已移动
src/inc/tsched.h
→
src/
util/
inc/tsched.h
浏览文件 @
ded484b5
文件已移动
src/inc/tschemautil.h
→
src/
util/
inc/tschemautil.h
浏览文件 @
ded484b5
文件已移动
src/inc/tscompression.h
→
src/
util/
inc/tscompression.h
浏览文件 @
ded484b5
文件已移动
src/inc/tskiplist.h
→
src/
util/
inc/tskiplist.h
浏览文件 @
ded484b5
文件已移动
src/inc/tsocket.h
→
src/
util/
inc/tsocket.h
浏览文件 @
ded484b5
文件已移动
src/inc/tsqldef.h
→
src/
util/
inc/tsqldef.h
浏览文件 @
ded484b5
文件已移动
src/inc/tsqlfunction.h
→
src/
util/
inc/tsqlfunction.h
浏览文件 @
ded484b5
文件已移动
src/
vnode/detail/inc/vnodeS
tatus.h
→
src/
util/inc/ts
tatus.h
浏览文件 @
ded484b5
...
...
@@ -16,11 +16,13 @@
#ifndef TDENGINE_TSTATUS_H
#define TDENGINE_TSTATUS_H
#include "taoserror.h"
#ifdef __cplusplus
extern
"C"
{
#endif
#include <stdint.h>
#include <stdbool.h>
#include "taoserror.h"
enum
_TSDB_VG_STATUS
{
TSDB_VG_STATUS_READY
=
TSDB_CODE_SUCCESS
,
...
...
src/inc/tstoken.h
→
src/
util/
inc/tstoken.h
浏览文件 @
ded484b5
文件已移动
src/inc/tstrbuild.h
→
src/
util/
inc/tstrbuild.h
浏览文件 @
ded484b5
文件已移动
src/inc/tsystem.h
→
src/
util/
inc/tsystem.h
浏览文件 @
ded484b5
文件已移动
src/inc/ttime.h
→
src/
util/
inc/ttime.h
浏览文件 @
ded484b5
文件已移动
src/inc/ttimer.h
→
src/
util/
inc/ttimer.h
浏览文件 @
ded484b5
文件已移动
src/inc/ttypes.h
→
src/
util/
inc/ttypes.h
浏览文件 @
ded484b5
文件已移动
src/inc/tutil.h
→
src/
util/
inc/tutil.h
浏览文件 @
ded484b5
文件已移动
src/util/src/tglobalcfg.c
浏览文件 @
ded484b5
...
...
@@ -80,7 +80,12 @@ short tsNumOfVnodesPerCore = 8;
short
tsNumOfTotalVnodes
=
0
;
short
tsCheckHeaderFile
=
0
;
#ifdef _TD_ARM_32_
int
tsSessionsPerVnode
=
100
;
#else
int
tsSessionsPerVnode
=
1000
;
#endif
int
tsCacheBlockSize
=
16384
;
// 256 columns
int
tsAverageCacheBlocks
=
TSDB_DEFAULT_AVG_BLOCKS
;
/**
...
...
src/
vnode/detail/src/vnodeS
tatus.c
→
src/
util/src/ts
tatus.c
浏览文件 @
ded484b5
...
...
@@ -14,8 +14,7 @@
*/
#include "taosmsg.h"
#include "tsdb.h"
#include "vnodeStatus.h"
#include "tstatus.h"
const
char
*
taosGetVgroupStatusStr
(
int32_t
vgroupStatus
)
{
switch
(
vgroupStatus
)
{
...
...
src/util/src/ttime.c
浏览文件 @
ded484b5
...
...
@@ -24,7 +24,43 @@
#include "ttime.h"
#include "tutil.h"
/*
* mktime64 - Converts date to seconds.
* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
* Assumes input in normal date format, i.e. 1980-12-31 23:59:59
* => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
*
* [For the Julian calendar (which was used in Russia before 1917,
* Britain & colonies before 1752, anywhere else before 1582,
* and is still in use by some communities) leave out the
* -year/100+year/400 terms, and add 10.]
*
* This algorithm was first published by Gauss (I think).
*
* A leap second can be indicated by calling this function with sec as
* 60 (allowable under ISO 8601). The leap second is treated the same
* as the following second since they don't exist in UNIX time.
*
* An encoding of midnight at the end of the day as 24:00:00 - ie. midnight
* tomorrow - (allowable under ISO 8601) is supported.
*/
int64_t
user_mktime64
(
const
unsigned
int
year0
,
const
unsigned
int
mon0
,
const
unsigned
int
day
,
const
unsigned
int
hour
,
const
unsigned
int
min
,
const
unsigned
int
sec
)
{
unsigned
int
mon
=
mon0
,
year
=
year0
;
/* 1..12 -> 11,12,1..10 */
if
(
0
>=
(
int
)
(
mon
-=
2
))
{
mon
+=
12
;
/* Puts Feb last since it has leap day */
year
-=
1
;
}
int64_t
res
=
(((((
int64_t
)
(
year
/
4
-
year
/
100
+
year
/
400
+
367
*
mon
/
12
+
day
)
+
year
*
365
-
719499
)
*
24
+
hour
)
*
60
+
min
)
*
60
+
sec
);
return
(
res
+
timezone
);
}
// ==== mktime() kernel code =================//
static
int64_t
m_deltaUtc
=
0
;
void
deltaToUtcInitOnce
()
{
...
...
@@ -293,7 +329,8 @@ int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec) {
/* mktime will be affected by TZ, set by using taos_options */
//int64_t seconds = mktime(&tm);
int64_t
seconds
=
(
int64_t
)
user_mktime
(
&
tm
);
//int64_t seconds = (int64_t)user_mktime(&tm);
int64_t
seconds
=
user_mktime64
(
tm
.
tm_year
+
1900
,
tm
.
tm_mon
+
1
,
tm
.
tm_mday
,
tm
.
tm_hour
,
tm
.
tm_min
,
tm
.
tm_sec
);
int64_t
fraction
=
0
;
...
...
src/util/src/ttypes.c
浏览文件 @
ded484b5
...
...
@@ -976,11 +976,21 @@ void assignVal(char *val, const char *src, int32_t len, int32_t type) {
break
;
}
case
TSDB_DATA_TYPE_FLOAT
:
{
#ifdef _TD_ARM_32_
float
fv
=
GET_FLOAT_VAL
(
src
);
SET_FLOAT_VAL_ALIGN
(
val
,
&
fv
);
#else
*
((
float
*
)
val
)
=
GET_FLOAT_VAL
(
src
);
#endif
break
;
};
case
TSDB_DATA_TYPE_DOUBLE
:
{
#ifdef _TD_ARM_32_
double
dv
=
GET_DOUBLE_VAL
(
src
);
SET_DOUBLE_VAL_ALIGN
(
val
,
&
dv
);
#else
*
((
double
*
)
val
)
=
GET_DOUBLE_VAL
(
src
);
#endif
break
;
};
case
TSDB_DATA_TYPE_TIMESTAMP
:
...
...
src/util/src/version.c
浏览文件 @
ded484b5
char
version
[
64
]
=
"1.6.5.
3
"
;
char
version
[
64
]
=
"1.6.5.
4
"
;
char
compatible_version
[
64
]
=
"1.6.1.0"
;
char
gitinfo
[
128
]
=
"
700305490a82228ec1b0244afb838bdbb9de9793
"
;
char
gitinfoOfInternal
[
128
]
=
""
;
char
buildinfo
[
512
]
=
"Built by
at 2020-01-17 13:22
"
;
char
gitinfo
[
128
]
=
"
3264067e97300c84caa61ac909d548c9ca56de6b
"
;
char
gitinfoOfInternal
[
128
]
=
"
da88f4a2474737d1f9c76adcf0ff7fd0975e7342
"
;
char
buildinfo
[
512
]
=
"Built by
root at 2020-02-05 14:38
"
;
void
libtaos_
edge_1_6_5_1
_Linux_x64
()
{};
void
libtaos_
1_6_5_4
_Linux_x64
()
{};
src/vnode/detail/inc/vnode.h
浏览文件 @
ded484b5
...
...
@@ -158,7 +158,7 @@ typedef struct SColumn {
typedef
struct
_meter_obj
{
uint64_t
uid
;
char
meterId
[
TSDB_
METER
_ID_LEN
];
char
meterId
[
TSDB_
TABLE
_ID_LEN
];
int
sid
;
short
vnode
;
short
numOfColumns
;
...
...
src/vnode/detail/inc/vnodeRead.h
浏览文件 @
ded484b5
...
...
@@ -253,7 +253,7 @@ typedef struct SMeterQuerySupportObj {
typedef
struct
_qinfo
{
uint64_t
signature
;
int32_t
refCount
;
// QInfo reference count, when the value is 0, it can be released safely
char
user
[
TSDB_
METER
_ID_LEN
+
1
];
char
user
[
TSDB_
TABLE
_ID_LEN
+
1
];
char
sql
[
TSDB_SHOW_SQL_LEN
];
uint8_t
stream
;
uint16_t
port
;
...
...
src/vnode/detail/src/vnodeFile.c
浏览文件 @
ded484b5
...
...
@@ -492,7 +492,7 @@ void *vnodeCommitMultiToFile(SVnodeObj *pVnode, int ssid, int esid) {
SMeterObj
*
pObj
=
NULL
;
SCompInfo
compInfo
=
{
0
};
SCompHeader
*
pHeader
;
SMeterInfo
*
meterInfo
=
NULL
,
*
p
Meter
=
NULL
;
SMeterInfo
*
meterInfo
=
NULL
,
*
p
Table
=
NULL
;
SQuery
query
;
SColumnInfoEx
colList
[
TSDB_MAX_COLUMNS
]
=
{
0
};
SSqlFunctionExpr
pExprs
[
TSDB_MAX_COLUMNS
]
=
{
0
};
...
...
@@ -617,7 +617,7 @@ _again:
continue
;
}
p
Meter
=
meterInfo
+
sid
;
p
Table
=
meterInfo
+
sid
;
pHeader
=
((
SCompHeader
*
)
tmem
)
+
sid
;
if
(
pVnode
->
hfd
>
0
)
{
...
...
@@ -633,18 +633,18 @@ _again:
goto
_over
;
}
else
{
if
(
pObj
->
uid
==
compInfo
.
uid
)
{
p
Meter
->
oldNumOfBlocks
=
compInfo
.
numOfBlocks
;
p
Meter
->
oldCompBlockOffset
=
pHeader
->
compInfoOffset
+
sizeof
(
SCompInfo
);
p
Meter
->
last
=
compInfo
.
last
;
p
Table
->
oldNumOfBlocks
=
compInfo
.
numOfBlocks
;
p
Table
->
oldCompBlockOffset
=
pHeader
->
compInfoOffset
+
sizeof
(
SCompInfo
);
p
Table
->
last
=
compInfo
.
last
;
if
(
compInfo
.
numOfBlocks
>
maxOldBlocks
)
maxOldBlocks
=
compInfo
.
numOfBlocks
;
if
(
p
Meter
->
last
)
{
if
(
p
Table
->
last
)
{
lseek
(
pVnode
->
hfd
,
sizeof
(
SCompBlock
)
*
(
compInfo
.
numOfBlocks
-
1
),
SEEK_CUR
);
read
(
pVnode
->
hfd
,
&
p
Meter
->
lastBlock
,
sizeof
(
SCompBlock
));
read
(
pVnode
->
hfd
,
&
p
Table
->
lastBlock
,
sizeof
(
SCompBlock
));
}
}
else
{
dTrace
(
"vid:%d sid:%d id:%s, uid:%"
PRIu64
" is not matched with old:%"
PRIu64
", old data will be thrown away"
,
vnode
,
sid
,
pObj
->
meterId
,
pObj
->
uid
,
compInfo
.
uid
);
p
Meter
->
oldNumOfBlocks
=
0
;
p
Table
->
oldNumOfBlocks
=
0
;
}
}
}
else
{
...
...
@@ -669,8 +669,8 @@ _again:
pObj
->
pointsPerFileBlock
*
pObj
->
schema
[
col
-
1
].
bytes
+
EXTRA_BYTES
+
sizeof
(
TSCKSUM
));
}
p
Meter
=
meterInfo
+
sid
;
p
Meter
->
tempHeadOffset
=
headLen
;
p
Table
=
meterInfo
+
sid
;
p
Table
->
tempHeadOffset
=
headLen
;
memset
(
&
query
,
0
,
sizeof
(
query
));
query
.
colList
=
colList
;
...
...
@@ -690,27 +690,27 @@ _again:
pointsReadLast
=
0
;
// last block is at last file
if
(
p
Meter
->
last
)
{
if
((
p
Meter
->
lastBlock
.
sversion
!=
pObj
->
sversion
)
||
(
query
.
over
))
{
if
(
p
Table
->
last
)
{
if
((
p
Table
->
lastBlock
.
sversion
!=
pObj
->
sversion
)
||
(
query
.
over
))
{
// TODO : Check the correctness of this code. write the last block to
// .data file
pCompBlock
=
(
SCompBlock
*
)(
hmem
+
headLen
);
assert
(
dmem
-
(
char
*
)
pCompBlock
>=
sizeof
(
SCompBlock
));
*
pCompBlock
=
p
Meter
->
lastBlock
;
if
(
p
Meter
->
lastBlock
.
sversion
!=
pObj
->
sversion
)
{
*
pCompBlock
=
p
Table
->
lastBlock
;
if
(
p
Table
->
lastBlock
.
sversion
!=
pObj
->
sversion
)
{
pCompBlock
->
last
=
0
;
pCompBlock
->
offset
=
lseek
(
pVnode
->
dfd
,
0
,
SEEK_END
);
p
Meter
->
last
=
0
;
lseek
(
pVnode
->
lfd
,
p
Meter
->
lastBlock
.
offset
,
SEEK_SET
);
tsendfile
(
pVnode
->
dfd
,
pVnode
->
lfd
,
NULL
,
p
Meter
->
lastBlock
.
len
);
pVnode
->
dfSize
=
pCompBlock
->
offset
+
p
Meter
->
lastBlock
.
len
;
p
Table
->
last
=
0
;
lseek
(
pVnode
->
lfd
,
p
Table
->
lastBlock
.
offset
,
SEEK_SET
);
tsendfile
(
pVnode
->
dfd
,
pVnode
->
lfd
,
NULL
,
p
Table
->
lastBlock
.
len
);
pVnode
->
dfSize
=
pCompBlock
->
offset
+
p
Table
->
lastBlock
.
len
;
}
else
{
if
(
ssid
==
0
)
{
assert
(
pCompBlock
->
last
&&
pVnode
->
tfd
!=
-
1
);
pCompBlock
->
offset
=
lseek
(
pVnode
->
tfd
,
0
,
SEEK_END
);
lseek
(
pVnode
->
lfd
,
p
Meter
->
lastBlock
.
offset
,
SEEK_SET
);
tsendfile
(
pVnode
->
tfd
,
pVnode
->
lfd
,
NULL
,
p
Meter
->
lastBlock
.
len
);
pVnode
->
lfSize
=
pCompBlock
->
offset
+
p
Meter
->
lastBlock
.
len
;
lseek
(
pVnode
->
lfd
,
p
Table
->
lastBlock
.
offset
,
SEEK_SET
);
tsendfile
(
pVnode
->
tfd
,
pVnode
->
lfd
,
NULL
,
p
Table
->
lastBlock
.
len
);
pVnode
->
lfSize
=
pCompBlock
->
offset
+
p
Table
->
lastBlock
.
len
;
}
else
{
assert
(
pVnode
->
tfd
==
-
1
);
}
...
...
@@ -718,12 +718,12 @@ _again:
}
headLen
+=
sizeof
(
SCompBlock
);
p
Meter
->
newNumOfBlocks
++
;
p
Table
->
newNumOfBlocks
++
;
}
else
{
// read last block into memory
if
(
vnodeReadLastBlockToMem
(
pObj
,
&
p
Meter
->
lastBlock
,
data
)
<
0
)
goto
_over
;
p
Meter
->
last
=
0
;
pointsReadLast
=
p
Meter
->
lastBlock
.
numOfPoints
;
if
(
vnodeReadLastBlockToMem
(
pObj
,
&
p
Table
->
lastBlock
,
data
)
<
0
)
goto
_over
;
p
Table
->
last
=
0
;
pointsReadLast
=
p
Table
->
lastBlock
.
numOfPoints
;
query
.
over
=
0
;
headInfo
.
totalStorage
-=
(
pointsReadLast
*
pObj
->
bytesPerPoint
);
...
...
@@ -731,8 +731,8 @@ _again:
pObj
->
vnode
,
pObj
->
sid
,
pObj
->
meterId
,
pointsReadLast
);
}
p
Meter
->
changed
=
1
;
p
Meter
->
oldNumOfBlocks
--
;
p
Table
->
changed
=
1
;
p
Table
->
oldNumOfBlocks
--
;
}
while
(
query
.
over
==
0
)
{
...
...
@@ -753,17 +753,17 @@ _again:
pCompBlock
->
last
=
1
;
if
(
vnodeWriteBlockToFile
(
pObj
,
pCompBlock
,
data
,
cdata
,
pointsRead
)
<
0
)
goto
_over
;
if
(
pCompBlock
->
keyLast
>
pObj
->
lastKeyOnFile
)
pObj
->
lastKeyOnFile
=
pCompBlock
->
keyLast
;
p
Meter
->
last
=
pCompBlock
->
last
;
p
Table
->
last
=
pCompBlock
->
last
;
// write block info into header buffer
headLen
+=
sizeof
(
SCompBlock
);
p
Meter
->
newNumOfBlocks
++
;
p
Meter
->
committedPoints
+=
(
pointsRead
-
pointsReadLast
);
p
Table
->
newNumOfBlocks
++
;
p
Table
->
committedPoints
+=
(
pointsRead
-
pointsReadLast
);
dTrace
(
"vid:%d sid:%d id:%s, pointsRead:%d, pointsReadLast:%d lastKey:%"
PRId64
", "
"slot:%d pos:%d newNumOfBlocks:%d headLen:%d"
,
pObj
->
vnode
,
pObj
->
sid
,
pObj
->
meterId
,
pointsRead
,
pointsReadLast
,
pObj
->
lastKeyOnFile
,
query
.
slot
,
query
.
pos
,
p
Meter
->
newNumOfBlocks
,
headLen
);
p
Table
->
newNumOfBlocks
,
headLen
);
if
(
pointsRead
<
pObj
->
pointsPerFileBlock
||
query
.
keyIsMet
)
break
;
...
...
@@ -772,12 +772,12 @@ _again:
}
dTrace
(
"vid:%d sid:%d id:%s, %d points are committed, lastKey:%"
PRId64
" slot:%d pos:%d newNumOfBlocks:%d"
,
pObj
->
vnode
,
pObj
->
sid
,
pObj
->
meterId
,
p
Meter
->
committedPoints
,
pObj
->
lastKeyOnFile
,
query
.
slot
,
query
.
pos
,
p
Meter
->
newNumOfBlocks
);
pObj
->
vnode
,
pObj
->
sid
,
pObj
->
meterId
,
p
Table
->
committedPoints
,
pObj
->
lastKeyOnFile
,
query
.
slot
,
query
.
pos
,
p
Table
->
newNumOfBlocks
);
if
(
p
Meter
->
committedPoints
>
0
)
{
p
Meter
->
commitSlot
=
query
.
slot
;
p
Meter
->
commitPos
=
query
.
pos
;
if
(
p
Table
->
committedPoints
>
0
)
{
p
Table
->
commitSlot
=
query
.
slot
;
p
Table
->
commitPos
=
query
.
pos
;
}
TSKEY
nextKey
=
0
;
...
...
@@ -805,19 +805,19 @@ _again:
continue
;
}
p
Meter
=
meterInfo
+
sid
;
p
Meter
->
compInfoOffset
=
compInfoOffset
;
p
Meter
->
finalNumOfBlocks
=
pMeter
->
oldNumOfBlocks
+
pMeter
->
newNumOfBlocks
;
p
Table
=
meterInfo
+
sid
;
p
Table
->
compInfoOffset
=
compInfoOffset
;
p
Table
->
finalNumOfBlocks
=
pTable
->
oldNumOfBlocks
+
pTable
->
newNumOfBlocks
;
if
(
p
Meter
->
finalNumOfBlocks
>
0
)
{
pHeader
->
compInfoOffset
=
p
Meter
->
compInfoOffset
;
compInfoOffset
+=
sizeof
(
SCompInfo
)
+
p
Meter
->
finalNumOfBlocks
*
sizeof
(
SCompBlock
)
+
sizeof
(
TSCKSUM
);
if
(
p
Table
->
finalNumOfBlocks
>
0
)
{
pHeader
->
compInfoOffset
=
p
Table
->
compInfoOffset
;
compInfoOffset
+=
sizeof
(
SCompInfo
)
+
p
Table
->
finalNumOfBlocks
*
sizeof
(
SCompBlock
)
+
sizeof
(
TSCKSUM
);
}
else
{
pHeader
->
compInfoOffset
=
0
;
}
dTrace
(
"vid:%d sid:%d id:%s, oldBlocks:%d numOfBlocks:%d compInfoOffset:%d"
,
pObj
->
vnode
,
pObj
->
sid
,
pObj
->
meterId
,
p
Meter
->
oldNumOfBlocks
,
pMeter
->
finalNumOfBlocks
,
compInfoOffset
);
p
Table
->
oldNumOfBlocks
,
pTable
->
finalNumOfBlocks
,
compInfoOffset
);
}
// write the comp header into new file
...
...
@@ -838,16 +838,16 @@ _again:
pObj
=
(
SMeterObj
*
)(
pVnode
->
meterList
[
sid
]);
if
(
pObj
==
NULL
)
continue
;
p
Meter
=
meterInfo
+
sid
;
if
(
p
Meter
->
finalNumOfBlocks
<=
0
)
continue
;
p
Table
=
meterInfo
+
sid
;
if
(
p
Table
->
finalNumOfBlocks
<=
0
)
continue
;
compInfo
.
last
=
p
Meter
->
last
;
compInfo
.
last
=
p
Table
->
last
;
compInfo
.
uid
=
pObj
->
uid
;
compInfo
.
numOfBlocks
=
p
Meter
->
finalNumOfBlocks
;
/* compInfo.compBlockLen = p
Meter
->finalCompBlockLen; */
compInfo
.
numOfBlocks
=
p
Table
->
finalNumOfBlocks
;
/* compInfo.compBlockLen = p
Table
->finalCompBlockLen; */
compInfo
.
delimiter
=
TSDB_VNODE_DELIMITER
;
taosCalcChecksumAppend
(
0
,
(
uint8_t
*
)(
&
compInfo
),
sizeof
(
SCompInfo
));
lseek
(
pVnode
->
nfd
,
p
Meter
->
compInfoOffset
,
SEEK_SET
);
lseek
(
pVnode
->
nfd
,
p
Table
->
compInfoOffset
,
SEEK_SET
);
if
(
twrite
(
pVnode
->
nfd
,
&
compInfo
,
sizeof
(
compInfo
))
<=
0
)
{
dError
(
"vid:%d sid:%d id:%s, failed to write:%s, reason:%s"
,
vnode
,
sid
,
pObj
->
meterId
,
pVnode
->
nfn
,
strerror
(
errno
));
...
...
@@ -857,23 +857,23 @@ _again:
// write the old comp blocks
chksum
=
0
;
if
(
pVnode
->
hfd
&&
p
Meter
->
oldNumOfBlocks
)
{
lseek
(
pVnode
->
hfd
,
p
Meter
->
oldCompBlockOffset
,
SEEK_SET
);
if
(
p
Meter
->
changed
)
{
int
compBlockLen
=
p
Meter
->
oldNumOfBlocks
*
sizeof
(
SCompBlock
);
if
(
pVnode
->
hfd
&&
p
Table
->
oldNumOfBlocks
)
{
lseek
(
pVnode
->
hfd
,
p
Table
->
oldCompBlockOffset
,
SEEK_SET
);
if
(
p
Table
->
changed
)
{
int
compBlockLen
=
p
Table
->
oldNumOfBlocks
*
sizeof
(
SCompBlock
);
read
(
pVnode
->
hfd
,
pOldCompBlocks
,
compBlockLen
);
twrite
(
pVnode
->
nfd
,
pOldCompBlocks
,
compBlockLen
);
chksum
=
taosCalcChecksum
(
0
,
pOldCompBlocks
,
compBlockLen
);
}
else
{
tsendfile
(
pVnode
->
nfd
,
pVnode
->
hfd
,
NULL
,
p
Meter
->
oldNumOfBlocks
*
sizeof
(
SCompBlock
));
tsendfile
(
pVnode
->
nfd
,
pVnode
->
hfd
,
NULL
,
p
Table
->
oldNumOfBlocks
*
sizeof
(
SCompBlock
));
read
(
pVnode
->
hfd
,
&
chksum
,
sizeof
(
TSCKSUM
));
}
}
if
(
p
Meter
->
newNumOfBlocks
)
{
chksum
=
taosCalcChecksum
(
chksum
,
(
uint8_t
*
)(
hmem
+
p
Meter
->
tempHeadOffset
),
p
Meter
->
newNumOfBlocks
*
sizeof
(
SCompBlock
));
if
(
twrite
(
pVnode
->
nfd
,
hmem
+
p
Meter
->
tempHeadOffset
,
pMeter
->
newNumOfBlocks
*
sizeof
(
SCompBlock
))
<=
0
)
{
if
(
p
Table
->
newNumOfBlocks
)
{
chksum
=
taosCalcChecksum
(
chksum
,
(
uint8_t
*
)(
hmem
+
p
Table
->
tempHeadOffset
),
p
Table
->
newNumOfBlocks
*
sizeof
(
SCompBlock
));
if
(
twrite
(
pVnode
->
nfd
,
hmem
+
p
Table
->
tempHeadOffset
,
pTable
->
newNumOfBlocks
*
sizeof
(
SCompBlock
))
<=
0
)
{
dError
(
"vid:%d sid:%d id:%s, failed to write:%s, reason:%s"
,
vnode
,
sid
,
pObj
->
meterId
,
pVnode
->
nfn
,
strerror
(
errno
));
vnodeRecoverFromPeer
(
pVnode
,
pVnode
->
commitFileId
);
...
...
@@ -891,11 +891,11 @@ _again:
pObj
=
(
SMeterObj
*
)(
pVnode
->
meterList
[
sid
]);
if
(
pObj
==
NULL
)
continue
;
p
Meter
=
meterInfo
+
sid
;
if
(
p
Meter
->
finalNumOfBlocks
<=
0
)
continue
;
p
Table
=
meterInfo
+
sid
;
if
(
p
Table
->
finalNumOfBlocks
<=
0
)
continue
;
if
(
p
Meter
->
committedPoints
>
0
)
{
vnodeUpdateCommitInfo
(
pObj
,
p
Meter
->
commitSlot
,
pMeter
->
commitPos
,
pMeter
->
commitCount
);
if
(
p
Table
->
committedPoints
>
0
)
{
vnodeUpdateCommitInfo
(
pObj
,
p
Table
->
commitSlot
,
pTable
->
commitPos
,
pTable
->
commitCount
);
}
}
...
...
src/vnode/detail/src/vnodeImport.c
浏览文件 @
ded484b5
...
...
@@ -1236,12 +1236,12 @@ _error_merge:
} \
}
int
isCacheEnd
(
SBlockIter
iter
,
SMeterObj
*
p
Meter
)
{
SCacheInfo
*
pInfo
=
(
SCacheInfo
*
)(
p
Meter
->
pCache
);
int
isCacheEnd
(
SBlockIter
iter
,
SMeterObj
*
p
Table
)
{
SCacheInfo
*
pInfo
=
(
SCacheInfo
*
)(
p
Table
->
pCache
);
int
slot
=
0
;
int
pos
=
0
;
if
(
pInfo
->
cacheBlocks
[
pInfo
->
currentSlot
]
->
numOfPoints
==
p
Meter
->
pointsPerBlock
)
{
if
(
pInfo
->
cacheBlocks
[
pInfo
->
currentSlot
]
->
numOfPoints
==
p
Table
->
pointsPerBlock
)
{
slot
=
(
pInfo
->
currentSlot
+
1
)
%
(
pInfo
->
maxBlocks
);
pos
=
0
;
}
else
{
...
...
src/vnode/detail/src/vnodeQueryImpl.c
浏览文件 @
ded484b5
...
...
@@ -4506,7 +4506,7 @@ int32_t vnodeMultiMeterQueryPrepare(SQInfo *pQInfo, SQuery *pQuery, void *param)
}
// get one queried meter
SMeterObj
*
p
Meter
=
getMeterObj
(
pSupporter
->
pMetersHashTable
,
pSupporter
->
pSidSet
->
pSids
[
0
]
->
sid
);
SMeterObj
*
p
Table
=
getMeterObj
(
pSupporter
->
pMetersHashTable
,
pSupporter
->
pSidSet
->
pSids
[
0
]
->
sid
);
pRuntimeEnv
->
pTSBuf
=
param
;
pRuntimeEnv
->
cur
.
vnodeIndex
=
-
1
;
...
...
@@ -4517,18 +4517,18 @@ int32_t vnodeMultiMeterQueryPrepare(SQInfo *pQInfo, SQuery *pQuery, void *param)
tsBufSetTraverseOrder
(
pRuntimeEnv
->
pTSBuf
,
order
);
}
int32_t
ret
=
setupQueryRuntimeEnv
(
p
Meter
,
pQuery
,
&
pSupporter
->
runtimeEnv
,
pTagSchema
,
TSQL_SO_ASC
,
true
);
int32_t
ret
=
setupQueryRuntimeEnv
(
p
Table
,
pQuery
,
&
pSupporter
->
runtimeEnv
,
pTagSchema
,
TSQL_SO_ASC
,
true
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
ret
=
allocateRuntimeEnvBuf
(
pRuntimeEnv
,
p
Meter
);
ret
=
allocateRuntimeEnvBuf
(
pRuntimeEnv
,
p
Table
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
tSidSetSort
(
pSupporter
->
pSidSet
);
vnodeRecordAllFiles
(
pQInfo
,
p
Meter
->
vnode
);
vnodeRecordAllFiles
(
pQInfo
,
p
Table
->
vnode
);
if
((
ret
=
allocateOutputBufForGroup
(
pSupporter
,
pQuery
,
true
))
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
...
...
@@ -4595,12 +4595,12 @@ void vnodeDecMeterRefcnt(SQInfo *pQInfo) {
}
else
{
int32_t
num
=
0
;
for
(
int32_t
i
=
0
;
i
<
pSupporter
->
numOfMeters
;
++
i
)
{
SMeterObj
*
p
Meter
=
getMeterObj
(
pSupporter
->
pMetersHashTable
,
pSupporter
->
pSidSet
->
pSids
[
i
]
->
sid
);
atomic_fetch_sub_32
(
&
(
p
Meter
->
numOfQueries
),
1
);
SMeterObj
*
p
Table
=
getMeterObj
(
pSupporter
->
pMetersHashTable
,
pSupporter
->
pSidSet
->
pSids
[
i
]
->
sid
);
atomic_fetch_sub_32
(
&
(
p
Table
->
numOfQueries
),
1
);
if
(
p
Meter
->
numOfQueries
>
0
)
{
dTrace
(
"QInfo:%p vid:%d sid:%d meterId:%s, query is over, numOfQueries:%d"
,
pQInfo
,
p
Meter
->
vnode
,
pMeter
->
sid
,
p
Meter
->
meterId
,
pMeter
->
numOfQueries
);
if
(
p
Table
->
numOfQueries
>
0
)
{
dTrace
(
"QInfo:%p vid:%d sid:%d meterId:%s, query is over, numOfQueries:%d"
,
pQInfo
,
p
Table
->
vnode
,
pTable
->
sid
,
p
Table
->
meterId
,
pTable
->
numOfQueries
);
num
++
;
}
}
...
...
src/vnode/detail/src/vnodeStream.c
浏览文件 @
ded484b5
...
...
@@ -186,15 +186,15 @@ void vnodeUpdateStreamRole(SVnodeObj *pVnode) {
// Callback function called from client
void
vnodeCloseStreamCallback
(
void
*
param
)
{
SMeterObj
*
p
Meter
=
(
SMeterObj
*
)
param
;
SMeterObj
*
p
Table
=
(
SMeterObj
*
)
param
;
SVnodeObj
*
pVnode
=
NULL
;
if
(
p
Meter
==
NULL
||
pMeter
->
sqlLen
==
0
)
return
;
pVnode
=
vnodeList
+
p
Meter
->
vnode
;
if
(
p
Table
==
NULL
||
pTable
->
sqlLen
==
0
)
return
;
pVnode
=
vnodeList
+
p
Table
->
vnode
;
p
Meter
->
sqlLen
=
0
;
p
Meter
->
pSql
=
NULL
;
p
Meter
->
pStream
=
NULL
;
p
Table
->
sqlLen
=
0
;
p
Table
->
pSql
=
NULL
;
p
Table
->
pStream
=
NULL
;
pVnode
->
numOfStreams
--
;
...
...
@@ -203,5 +203,5 @@ void vnodeCloseStreamCallback(void *param) {
pVnode
->
dbConn
=
NULL
;
}
vnodeSaveMeterObjToFile
(
p
Meter
);
vnodeSaveMeterObjToFile
(
p
Table
);
}
\ No newline at end of file
src/vnode/detail/src/vnodeUtil.c
浏览文件 @
ded484b5
...
...
@@ -527,7 +527,7 @@ bool vnodeIsProjectionQuery(SSqlFunctionExpr* pExpr, int32_t numOfOutput) {
}
/*
* the p
Meter
->state may be changed by vnodeIsSafeToDeleteMeter and import/update processor, the check of
* the p
Table
->state may be changed by vnodeIsSafeToDeleteMeter and import/update processor, the check of
* the state will not always be correct.
*
* The import/update/deleting is actually blocked by current query processing if the check of meter state is
...
...
@@ -548,30 +548,30 @@ int32_t vnodeIncQueryRefCount(SQueryMeterMsg* pQueryMsg, SMeterSidExtInfo** pSid
int32_t
code
=
TSDB_CODE_SUCCESS
;
for
(
int32_t
i
=
0
;
i
<
pQueryMsg
->
numOfSids
;
++
i
)
{
SMeterObj
*
p
Meter
=
pVnode
->
meterList
[
pSids
[
i
]
->
sid
];
SMeterObj
*
p
Table
=
pVnode
->
meterList
[
pSids
[
i
]
->
sid
];
/*
* If table is missing or is in dropping status, config it from management node, and ignore it
* during query processing. The error code of TSDB_CODE_NOT_ACTIVE_TABLE will never return to client.
* The missing table needs to be removed from pSids list
*/
if
(
p
Meter
==
NULL
||
vnodeIsMeterState
(
pMeter
,
TSDB_METER_STATE_DROPPING
))
{
if
(
p
Table
==
NULL
||
vnodeIsMeterState
(
pTable
,
TSDB_METER_STATE_DROPPING
))
{
dWarn
(
"qmsg:%p, vid:%d sid:%d, not there or will be dropped, ignore this table in query"
,
pQueryMsg
,
pQueryMsg
->
vnode
,
pSids
[
i
]
->
sid
);
vnodeSendMeterCfgMsg
(
pQueryMsg
->
vnode
,
pSids
[
i
]
->
sid
);
continue
;
}
else
if
(
p
Meter
->
uid
!=
pSids
[
i
]
->
uid
||
pMeter
->
sid
!=
pSids
[
i
]
->
sid
)
{
}
else
if
(
p
Table
->
uid
!=
pSids
[
i
]
->
uid
||
pTable
->
sid
!=
pSids
[
i
]
->
sid
)
{
code
=
TSDB_CODE_TABLE_ID_MISMATCH
;
dError
(
"qmsg:%p, vid:%d sid:%d id:%s uid:%"
PRIu64
", id mismatch. sid:%d uid:%"
PRId64
" in msg"
,
pQueryMsg
,
pQueryMsg
->
vnode
,
p
Meter
->
sid
,
pMeter
->
meterId
,
pMeter
->
uid
,
pSids
[
i
]
->
sid
,
pSids
[
i
]
->
uid
);
pQueryMsg
->
vnode
,
p
Table
->
sid
,
pTable
->
meterId
,
pTable
->
uid
,
pSids
[
i
]
->
sid
,
pSids
[
i
]
->
uid
);
vnodeSendMeterCfgMsg
(
pQueryMsg
->
vnode
,
pSids
[
i
]
->
sid
);
continue
;
}
else
if
(
p
Meter
->
state
>
TSDB_METER_STATE_INSERTING
)
{
//update or import
}
else
if
(
p
Table
->
state
>
TSDB_METER_STATE_INSERTING
)
{
//update or import
code
=
TSDB_CODE_ACTION_IN_PROGRESS
;
dTrace
(
"qmsg:%p, vid:%d sid:%d id:%s, it is in state:%s, wait!"
,
pQueryMsg
,
pQueryMsg
->
vnode
,
pSids
[
i
]
->
sid
,
p
Meter
->
meterId
,
taosGetTableStatusStr
(
pMeter
->
state
));
p
Table
->
meterId
,
taosGetTableStatusStr
(
pTable
->
state
));
continue
;
}
...
...
@@ -579,15 +579,15 @@ int32_t vnodeIncQueryRefCount(SQueryMeterMsg* pQueryMsg, SMeterSidExtInfo** pSid
* vnodeIsSafeToDeleteMeter will wait for this function complete, and then it can
* check if the numOfQueries is 0 or not.
*/
pMeterObjList
[(
*
numOfIncTables
)
++
]
=
p
Meter
;
atomic_fetch_add_32
(
&
p
Meter
->
numOfQueries
,
1
);
pMeterObjList
[(
*
numOfIncTables
)
++
]
=
p
Table
;
atomic_fetch_add_32
(
&
p
Table
->
numOfQueries
,
1
);
pSids
[
index
++
]
=
pSids
[
i
];
// output for meter more than one query executed
if
(
p
Meter
->
numOfQueries
>
1
)
{
dTrace
(
"qmsg:%p, vid:%d sid:%d id:%s, inc query ref, numOfQueries:%d"
,
pQueryMsg
,
p
Meter
->
vnode
,
pMeter
->
sid
,
p
Meter
->
meterId
,
pMeter
->
numOfQueries
);
if
(
p
Table
->
numOfQueries
>
1
)
{
dTrace
(
"qmsg:%p, vid:%d sid:%d id:%s, inc query ref, numOfQueries:%d"
,
pQueryMsg
,
p
Table
->
vnode
,
pTable
->
sid
,
p
Table
->
meterId
,
pTable
->
numOfQueries
);
num
++
;
}
}
...
...
@@ -605,14 +605,14 @@ void vnodeDecQueryRefCount(SQueryMeterMsg* pQueryMsg, SMeterObj** pMeterObjList,
int32_t
num
=
0
;
for
(
int32_t
i
=
0
;
i
<
numOfIncTables
;
++
i
)
{
SMeterObj
*
p
Meter
=
pMeterObjList
[
i
];
SMeterObj
*
p
Table
=
pMeterObjList
[
i
];
if
(
p
Meter
!=
NULL
)
{
// here, do not need to lock to perform operations
atomic_fetch_sub_32
(
&
p
Meter
->
numOfQueries
,
1
);
if
(
p
Table
!=
NULL
)
{
// here, do not need to lock to perform operations
atomic_fetch_sub_32
(
&
p
Table
->
numOfQueries
,
1
);
if
(
p
Meter
->
numOfQueries
>
0
)
{
dTrace
(
"qmsg:%p, vid:%d sid:%d id:%s dec query ref, numOfQueries:%d"
,
pQueryMsg
,
p
Meter
->
vnode
,
pMeter
->
sid
,
p
Meter
->
meterId
,
pMeter
->
numOfQueries
);
if
(
p
Table
->
numOfQueries
>
0
)
{
dTrace
(
"qmsg:%p, vid:%d sid:%d id:%s dec query ref, numOfQueries:%d"
,
pQueryMsg
,
p
Table
->
vnode
,
pTable
->
sid
,
p
Table
->
meterId
,
pTable
->
numOfQueries
);
num
++
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录