Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e9c56255
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
e9c56255
编写于
11月 11, 2019
作者:
L
lihui
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' into feature/lihui
上级
27a508b7
b68d5e88
变更
33
隐藏空白更改
内联
并排
Showing
33 changed file
with
168 addition
and
203 deletion
+168
-203
src/client/src/TSDBJNIConnector.c
src/client/src/TSDBJNIConnector.c
+0
-2
src/client/src/tscAst.c
src/client/src/tscAst.c
+0
-6
src/client/src/tscAsync.c
src/client/src/tscAsync.c
+1
-2
src/client/src/tscCache.c
src/client/src/tscCache.c
+1
-8
src/client/src/tscFunctionImpl.c
src/client/src/tscFunctionImpl.c
+0
-10
src/client/src/tscJoinProcess.c
src/client/src/tscJoinProcess.c
+0
-7
src/client/src/tscLocal.c
src/client/src/tscLocal.c
+1
-3
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+1
-15
src/client/src/tscPrepare.c
src/client/src/tscPrepare.c
+0
-3
src/client/src/tscProfile.c
src/client/src/tscProfile.c
+34
-14
src/client/src/tscSQLParserImpl.c
src/client/src/tscSQLParserImpl.c
+0
-7
src/client/src/tscSchemaUtil.c
src/client/src/tscSchemaUtil.c
+0
-4
src/client/src/tscSecondaryMerge.c
src/client/src/tscSecondaryMerge.c
+1
-6
src/client/src/tscServer.c
src/client/src/tscServer.c
+3
-9
src/client/src/tscSql.c
src/client/src/tscSql.c
+0
-3
src/client/src/tscSub.c
src/client/src/tscSub.c
+1
-1
src/client/src/tscSyntaxtreefunction.c
src/client/src/tscSyntaxtreefunction.c
+1
-4
src/client/src/tscSystem.c
src/client/src/tscSystem.c
+0
-9
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+0
-4
src/connector/go/src/taosSql/taosSqlCgo.go
src/connector/go/src/taosSql/taosSqlCgo.go
+29
-28
src/inc/tglobalcfg.h
src/inc/tglobalcfg.h
+2
-0
src/inc/ttimer.h
src/inc/ttimer.h
+1
-1
src/inc/tutil.h
src/inc/tutil.h
+0
-2
src/os/linux/inc/os.h
src/os/linux/inc/os.h
+21
-20
src/system/detail/inc/mgmtUtil.h
src/system/detail/inc/mgmtUtil.h
+1
-0
src/system/detail/src/mgmtDb.c
src/system/detail/src/mgmtDb.c
+7
-3
src/system/detail/src/mgmtMeter.c
src/system/detail/src/mgmtMeter.c
+7
-4
src/system/detail/src/mgmtUtil.c
src/system/detail/src/mgmtUtil.c
+7
-0
src/system/detail/src/vnodeQueryImpl.c
src/system/detail/src/vnodeQueryImpl.c
+9
-0
src/system/detail/src/vnodeShell.c
src/system/detail/src/vnodeShell.c
+1
-1
src/util/src/tglobalcfg.c
src/util/src/tglobalcfg.c
+5
-0
src/util/src/ttimer.c
src/util/src/ttimer.c
+34
-20
src/util/src/tutil.c
src/util/src/tutil.c
+0
-7
未找到文件。
src/client/src/TSDBJNIConnector.c
浏览文件 @
e9c56255
...
...
@@ -13,8 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdbool.h>
#include "os.h"
#include "com_taosdata_jdbc_TSDBJNIConnector.h"
#include "taos.h"
...
...
src/client/src/tscAst.c
浏览文件 @
e9c56255
...
...
@@ -13,12 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <assert.h>
#include <float.h>
#include <math.h>
#include <stdbool.h>
#include <stdlib.h>
#include "os.h"
#include "taosmsg.h"
#include "tast.h"
...
...
src/client/src/tscAsync.c
浏览文件 @
e9c56255
...
...
@@ -13,8 +13,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include "os.h"
#include "tlog.h"
#include "trpc.h"
...
...
src/client/src/tscCache.c
浏览文件 @
e9c56255
...
...
@@ -13,14 +13,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <assert.h>
#include <pthread.h>
#include <semaphore.h>
#include <signal.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "os.h"
#include "tglobalcfg.h"
#include "tlog.h"
...
...
src/client/src/tscFunctionImpl.c
浏览文件 @
e9c56255
...
...
@@ -15,16 +15,6 @@
#pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
#include <assert.h>
#include <ctype.h>
#include <fcntl.h>
#include <float.h>
#include <math.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <wctype.h>
#include "os.h"
#include "taosmsg.h"
#include "tast.h"
...
...
src/client/src/tscJoinProcess.c
浏览文件 @
e9c56255
...
...
@@ -13,13 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <fcntl.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <tsclient.h>
#include <sys/stat.h>
#include "os.h"
#include "tcache.h"
#include "tscJoinProcess.h"
...
...
src/client/src/tscLocal.c
浏览文件 @
e9c56255
...
...
@@ -13,9 +13,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include "os.h"
#include "taosmsg.h"
#include "tcache.h"
...
...
src/client/src/tscParseInsert.c
浏览文件 @
e9c56255
...
...
@@ -21,22 +21,8 @@
#pragma GCC diagnostic ignored "-Woverflow"
#pragma GCC diagnostic ignored "-Wunused-variable"
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <sys/types.h>
#include <assert.h>
#include <float.h>
#include <math.h>
#include <string.h>
#include <time.h>
#include <wchar.h>
#include "ihash.h"
#include "os.h"
#include "ihash.h"
#include "tscSecondaryMerge.h"
#include "tscUtil.h"
#include "tschemautil.h"
...
...
src/client/src/tscPrepare.c
浏览文件 @
e9c56255
...
...
@@ -13,9 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include "taos.h"
#include "tsclient.h"
#include "tsql.h"
...
...
src/client/src/tscProfile.c
浏览文件 @
e9c56255
...
...
@@ -13,9 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include "os.h"
#include "tlog.h"
#include "tsclient.h"
...
...
@@ -23,6 +20,27 @@
#include "ttimer.h"
#include "tutil.h"
void
tscSaveSlowQueryFp
(
void
*
handle
,
void
*
tmrId
);
void
*
tscSlowQueryConn
=
NULL
;
bool
tscSlowQueryConnInitialized
=
false
;
TAOS
*
taos_connect_a
(
char
*
ip
,
char
*
user
,
char
*
pass
,
char
*
db
,
int
port
,
void
(
*
fp
)(
void
*
,
TAOS_RES
*
,
int
),
void
*
param
,
void
**
taos
);
void
tscInitConnCb
(
void
*
param
,
TAOS_RES
*
result
,
int
code
)
{
char
*
sql
=
param
;
if
(
code
<
0
)
{
tscError
(
"taos:%p, slow query connect failed, code:%d"
,
tscSlowQueryConn
,
code
);
taos_close
(
tscSlowQueryConn
);
tscSlowQueryConn
=
NULL
;
tscSlowQueryConnInitialized
=
false
;
free
(
sql
);
}
else
{
tscTrace
(
"taos:%p, slow query connect success, code:%d"
,
tscSlowQueryConn
,
code
);
tscSlowQueryConnInitialized
=
true
;
tscSaveSlowQueryFp
(
sql
,
NULL
);
}
}
void
tscAddIntoSqlList
(
SSqlObj
*
pSql
)
{
static
uint32_t
queryId
=
1
;
...
...
@@ -47,26 +65,28 @@ void tscAddIntoSqlList(SSqlObj *pSql) {
void
tscSaveSlowQueryFpCb
(
void
*
param
,
TAOS_RES
*
result
,
int
code
)
{
if
(
code
<
0
)
{
tscError
(
"failed to save slowquery, code:%d"
,
code
);
tscError
(
"failed to save slow query, code:%d"
,
code
);
}
else
{
tscTrace
(
"success to save slow query, code:%d"
,
code
);
}
}
void
tscSaveSlowQueryFp
(
void
*
handle
,
void
*
tmrId
)
{
char
*
sql
=
handle
;
static
void
*
taos
=
NULL
;
if
(
taos
==
NULL
)
{
taos
=
taos_connect
(
NULL
,
"monitor"
,
tsInternalPass
,
NULL
,
0
);
if
(
taos
==
NULL
)
{
tscError
(
"failed to save slow query, can't connect to server"
);
if
(
!
tscSlowQueryConnInitialized
)
{
if
(
tscSlowQueryConn
==
NULL
)
{
tscTrace
(
"start to init slow query connect"
);
taos_connect_a
(
NULL
,
"monitor"
,
tsInternalPass
,
""
,
0
,
tscInitConnCb
,
sql
,
&
tscSlowQueryConn
);
}
else
{
tscError
(
"taos:%p, slow query connect is already initialized"
,
tscSlowQueryConn
);
free
(
sql
);
return
;
}
}
else
{
tscTrace
(
"taos:%p, save slow query:%s"
,
tscSlowQueryConn
,
sql
);
taos_query_a
(
tscSlowQueryConn
,
sql
,
tscSaveSlowQueryFpCb
,
NULL
);
free
(
sql
);
}
tscTrace
(
"save slow query:sql"
,
sql
);
taos_query_a
(
taos
,
sql
,
tscSaveSlowQueryFpCb
,
NULL
);
free
(
sql
);
}
void
tscSaveSlowQuery
(
SSqlObj
*
pSql
)
{
...
...
src/client/src/tscSQLParserImpl.c
浏览文件 @
e9c56255
...
...
@@ -13,13 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#include <stdarg.h>
#include "os.h"
#include "tglobalcfg.h"
#include "tsql.h"
...
...
src/client/src/tscSchemaUtil.c
浏览文件 @
e9c56255
...
...
@@ -13,10 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#include "os.h"
#include "taosmsg.h"
#include "tschemautil.h"
...
...
src/client/src/tscSecondaryMerge.c
浏览文件 @
e9c56255
...
...
@@ -13,13 +13,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <assert.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include <tsclient.h>
#include "
tlosertree
.h"
#include "
os
.h"
#include "tlosertree.h"
#include "tscSecondaryMerge.h"
#include "tscUtil.h"
...
...
src/client/src/tscServer.c
浏览文件 @
e9c56255
...
...
@@ -13,12 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <assert.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include "os.h"
#include "tcache.h"
#include "trpc.h"
...
...
@@ -2848,7 +2842,7 @@ int tscBuildMetricMetaMsg(SSqlObj *pSql) {
return
msgLen
;
}
int
tscEstimate
Build
HeartBeatMsgLength
(
SSqlObj
*
pSql
)
{
int
tscEstimateHeartBeatMsgLength
(
SSqlObj
*
pSql
)
{
int
size
=
0
;
STscObj
*
pObj
=
pSql
->
pTscObj
;
...
...
@@ -2881,7 +2875,7 @@ int tscBuildHeartBeatMsg(SSqlObj *pSql) {
pthread_mutex_lock
(
&
pObj
->
mutex
);
size
=
tscEstimate
Build
HeartBeatMsgLength
(
pSql
);
size
=
tscEstimateHeartBeatMsgLength
(
pSql
);
if
(
TSDB_CODE_SUCCESS
!=
tscAllocPayload
(
pCmd
,
size
))
{
tscError
(
"%p failed to malloc for heartbeat msg"
,
pSql
);
return
-
1
;
...
...
@@ -3613,7 +3607,7 @@ int tscRenewMeterMeta(SSqlObj *pSql, char *meterId) {
code
=
tscDoGetMeterMeta
(
pSql
,
meterId
,
0
);
// todo ??
}
else
{
tscTrace
(
"%p metric query not update metric meta, numOfTags:%d, numOfCols:%d, uid:%d, addr:%p"
,
pSql
,
tscTrace
(
"%p metric query not update metric meta, numOfTags:%d, numOfCols:%d, uid:%
ll
d, addr:%p"
,
pSql
,
pMeterMetaInfo
->
pMeterMeta
->
numOfTags
,
pCmd
->
numOfCols
,
pMeterMetaInfo
->
pMeterMeta
->
uid
,
pMeterMetaInfo
->
pMeterMeta
);
}
...
...
src/client/src/tscSql.c
浏览文件 @
e9c56255
...
...
@@ -13,9 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include "os.h"
#include "tcache.h"
#include "tlog.h"
...
...
src/client/src/tscSub.c
浏览文件 @
e9c56255
...
...
@@ -13,7 +13,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include
<signal.h>
#include
"os.h"
#include "shash.h"
#include "taos.h"
...
...
src/client/src/tscSyntaxtreefunction.c
浏览文件 @
e9c56255
...
...
@@ -13,10 +13,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <assert.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include "os.h"
#include "tscSyntaxtreefunction.h"
#include "tsql.h"
...
...
src/client/src/tscSystem.c
浏览文件 @
e9c56255
...
...
@@ -13,15 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <locale.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
#include "os.h"
#include "taosmsg.h"
#include "tcache.h"
...
...
src/client/src/tscUtil.c
浏览文件 @
e9c56255
...
...
@@ -13,10 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <assert.h>
#include <math.h>
#include <time.h>
#include "os.h"
#include "ihash.h"
#include "taosmsg.h"
...
...
src/connector/go/src/taosSql/taosSqlCgo.go
浏览文件 @
e9c56255
...
...
@@ -29,46 +29,47 @@ import (
"unsafe"
)
func
(
mc
*
taosConn
)
taosConnect
(
ip
,
user
,
pass
,
db
string
,
port
int
)
(
taos
unsafe
.
Pointer
,
err
error
){
func
(
mc
*
taosConn
)
taosConnect
(
ip
,
user
,
pass
,
db
string
,
port
int
)
(
taos
unsafe
.
Pointer
,
err
error
)
{
cuser
:=
C
.
CString
(
user
)
cpass
:=
C
.
CString
(
pass
)
cip
:=
C
.
CString
(
ip
)
cdb
:=
C
.
CString
(
db
)
cip
:=
C
.
CString
(
ip
)
cdb
:=
C
.
CString
(
db
)
defer
C
.
free
(
unsafe
.
Pointer
(
cip
))
defer
C
.
free
(
unsafe
.
Pointer
(
cuser
))
defer
C
.
free
(
unsafe
.
Pointer
(
cpass
))
defer
C
.
free
(
unsafe
.
Pointer
(
cdb
))
taosObj
:=
C
.
taos_connect
(
cip
,
cuser
,
cpass
,
cdb
,
(
C
.
int
)(
port
))
if
taosObj
==
nil
{
return
nil
,
errors
.
New
(
"taos_connect() fail!"
)
}
if
taosObj
==
nil
{
return
nil
,
errors
.
New
(
"taos_connect() fail!"
)
}
return
(
unsafe
.
Pointer
)(
taosObj
),
nil
}
return
(
unsafe
.
Pointer
)(
taosObj
),
nil
}
func
(
mc
*
taosConn
)
taosQuery
(
sqlstr
string
)
(
int
,
error
)
{
taosLog
.
Printf
(
"taosQuery() input sql:%s
\n
"
,
sqlstr
)
//
taosLog.Printf("taosQuery() input sql:%s\n", sqlstr)
csqlstr
:=
C
.
CString
(
sqlstr
)
csqlstr
:=
C
.
CString
(
sqlstr
)
defer
C
.
free
(
unsafe
.
Pointer
(
csqlstr
))
code
:=
int
(
C
.
taos_query
(
mc
.
taos
,
csqlstr
))
code
:=
int
(
C
.
taos_query
(
mc
.
taos
,
csqlstr
))
if
0
!=
code
{
mc
.
taos_error
()
errStr
:=
C
.
GoString
(
C
.
taos_errstr
(
mc
.
taos
))
taosLog
.
Println
(
"taos_query() failed:"
,
errStr
)
return
0
,
errors
.
New
(
errStr
)
}
if
0
!=
code
{
mc
.
taos_error
()
errStr
:=
C
.
GoString
(
C
.
taos_errstr
(
mc
.
taos
))
taosLog
.
Println
(
"taos_query() failed:"
,
errStr
)
taosLog
.
Printf
(
"taosQuery() input sql:%s
\n
"
,
sqlstr
)
return
0
,
errors
.
New
(
errStr
)
}
// read result and save into mc struct
num_fields
:=
int
(
C
.
taos_field_count
(
mc
.
taos
))
if
0
==
num_fields
{
// there are no select and show kinds of commands
mc
.
affectedRows
=
int
(
C
.
taos_affected_rows
(
mc
.
taos
))
mc
.
insertId
=
0
}
// read result and save into mc struct
num_fields
:=
int
(
C
.
taos_field_count
(
mc
.
taos
))
if
0
==
num_fields
{
// there are no select and show kinds of commands
mc
.
affectedRows
=
int
(
C
.
taos_affected_rows
(
mc
.
taos
))
mc
.
insertId
=
0
}
return
num_fields
,
nil
return
num_fields
,
nil
}
func
(
mc
*
taosConn
)
taos_close
()
{
...
...
@@ -76,8 +77,8 @@ func (mc *taosConn) taos_close() {
}
func
(
mc
*
taosConn
)
taos_error
()
{
// free local resouce: allocated memory/metric-meta refcnt
//var pRes unsafe.Pointer
pRes
:=
C
.
taos_use_result
(
mc
.
taos
)
C
.
taos_free_result
(
pRes
)
// free local resouce: allocated memory/metric-meta refcnt
//var pRes unsafe.Pointer
pRes
:=
C
.
taos_use_result
(
mc
.
taos
)
C
.
taos_free_result
(
pRes
)
}
src/inc/tglobalcfg.h
浏览文件 @
e9c56255
...
...
@@ -169,6 +169,8 @@ extern uint32_t debugFlag;
extern
uint32_t
odbcdebugFlag
;
extern
uint32_t
qdebugFlag
;
extern
uint32_t
taosMaxTmrCtrl
;
extern
int
tsRpcTimer
;
extern
int
tsRpcMaxTime
;
extern
int
tsUdpDelay
;
...
...
src/inc/ttimer.h
浏览文件 @
e9c56255
...
...
@@ -25,6 +25,7 @@ typedef void (*TAOS_TMR_CALLBACK)(void *, void *);
extern
uint32_t
tmrDebugFlag
;
extern
int
taosTmrThreads
;
extern
uint32_t
taosMaxTmrCtrl
;
#define tmrError(...) \
do { if (tmrDebugFlag & DEBUG_ERROR) { \
...
...
@@ -41,7 +42,6 @@ extern int taosTmrThreads;
tprintf("TMR ", tmrDebugFlag, __VA_ARGS__); \
} } while(0)
#define MAX_NUM_OF_TMRCTL 32
#define MSECONDS_PER_TICK 5
void
*
taosTmrInit
(
int
maxTmr
,
int
resoultion
,
int
longest
,
const
char
*
label
);
...
...
src/inc/tutil.h
浏览文件 @
e9c56255
...
...
@@ -169,8 +169,6 @@ int32_t taosInitTimer(void (*callback)(int), int32_t ms);
*/
uint32_t
MurmurHash3_32
(
const
void
*
key
,
int32_t
len
);
bool
taosCheckDbName
(
char
*
db
,
char
*
monitordb
);
bool
taosMbsToUcs4
(
char
*
mbs
,
int32_t
mbs_len
,
char
*
ucs4
,
int32_t
ucs4_max_len
);
bool
taosUcs4ToMbs
(
void
*
ucs4
,
int32_t
ucs4_max_len
,
char
*
mbs
);
...
...
src/os/linux/inc/os.h
浏览文件 @
e9c56255
/*
* 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/>.
*/
* 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 TDENGINE_PLATFORM_LINUX_H
#define TDENGINE_PLATFORM_LINUX_H
...
...
@@ -25,10 +25,12 @@ extern "C" {
#include <arpa/inet.h>
#include <assert.h>
#include <dirent.h>
#include <endian.h>
#include <float.h>
#include <ifaddrs.h>
#include <limits.h>
#include <locale.h>
#include <math.h>
#include <netdb.h>
#include <netinet/in.h>
...
...
@@ -37,7 +39,8 @@ extern "C" {
#include <netinet/udp.h>
#include <pthread.h>
#include <pwd.h>
#include <stdbool.h>
#include <semaphore.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
...
...
@@ -45,21 +48,19 @@ extern "C" {
#include <sys/epoll.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/sendfile.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/syscall.h>
#include <sys/time.h>
#include <sys/uio.h>
#include <sys/mman.h>
#include <sys/un.h>
#include <syslog.h>
#include <termios.h>
#include <unistd.h>
#include <wchar.h>
#include <wordexp.h>
#include <locale.h>
#include <dirent.h>
#define taosCloseSocket(x) \
{ \
...
...
@@ -110,7 +111,7 @@ extern "C" {
#define __sync_sub_and_fetch_ptr __sync_sub_and_fetch
int32_t
__sync_val_load_32
(
int32_t
*
ptr
);
void
__sync_val_restore_32
(
int32_t
*
ptr
,
int32_t
newval
);
void
__sync_val_restore_32
(
int32_t
*
ptr
,
int32_t
newval
);
#define SWAP(a, b, c) \
do { \
...
...
@@ -168,9 +169,9 @@ bool taosSkipSocketCheck();
int64_t
str2int64
(
char
*
str
);
#define BUILDIN_CLZL(val) __builtin_clzl(val)
#define BUILDIN_CLZ(val)
__builtin_clz(val)
#define BUILDIN_CLZ(val) __builtin_clz(val)
#define BUILDIN_CTZL(val) __builtin_ctzl(val)
#define BUILDIN_CTZ(val)
__builtin_ctz(val)
#define BUILDIN_CTZ(val) __builtin_ctz(val)
#ifdef __cplusplus
}
...
...
src/system/detail/inc/mgmtUtil.h
浏览文件 @
e9c56255
...
...
@@ -30,6 +30,7 @@ char* mgmtMeterGetTag(STabObj* pMeter, int32_t col, SSchema* pTagColSchema);
int32_t
mgmtFindTagCol
(
STabObj
*
pMetric
,
const
char
*
tagName
);
int32_t
mgmtGetTagsLength
(
STabObj
*
pMetric
,
int32_t
col
);
bool
mgmtCheckIsMonitorDB
(
char
*
db
,
char
*
monitordb
);
int32_t
mgmtRetrieveMetersFromMetric
(
SMetricMetaMsg
*
pInfo
,
int32_t
tableIndex
,
tQueryResultset
*
pRes
);
int32_t
mgmtDoJoin
(
SMetricMetaMsg
*
pMetricMetaMsg
,
tQueryResultset
*
pRes
);
...
...
src/system/detail/src/mgmtDb.c
浏览文件 @
e9c56255
...
...
@@ -14,9 +14,11 @@
*/
#define _DEFAULT_SOURCE
#include "os.h"
#include "mgmt.h"
#include <arpa/inet.h>
#include "mgmtBalance.h"
#include "mgmtUtil.h"
#include "tschemautil.h"
void
*
dbSdb
=
NULL
;
...
...
@@ -373,10 +375,12 @@ int mgmtDropDbByName(SAcctObj *pAcct, char *name) {
if
(
pDb
==
NULL
)
{
mWarn
(
"db:%s is not there"
,
name
);
// return TSDB_CODE_INVALID_DB;
return
0
;
return
TSDB_CODE_SUCCESS
;
}
if
(
taosCheckDbName
(
pDb
->
name
,
tsMonitorDbName
))
return
TSDB_CODE_MONITOR_DB_FORBEIDDEN
;
if
(
mgmtCheckIsMonitorDB
(
pDb
->
name
,
tsMonitorDbName
))
{
return
TSDB_CODE_MONITOR_DB_FORBEIDDEN
;
}
return
mgmtDropDb
(
pDb
);
}
...
...
src/system/detail/src/mgmtMeter.c
浏览文件 @
e9c56255
...
...
@@ -688,8 +688,10 @@ int mgmtDropMeter(SDbObj *pDb, char *meterId, int ignore) {
pAcct
=
mgmtGetAcct
(
pDb
->
cfg
.
acct
);
// 0.sys
if
(
taosCheckDbName
(
pDb
->
name
,
tsMonitorDbName
))
return
TSDB_CODE_MONITOR_DB_FORBEIDDEN
;
// 0.log
if
(
mgmtCheckIsMonitorDB
(
pDb
->
name
,
tsMonitorDbName
))
{
return
TSDB_CODE_MONITOR_DB_FORBEIDDEN
;
}
if
(
mgmtIsNormalMeter
(
pMeter
))
{
return
dropMeterImp
(
pDb
,
pMeter
,
pAcct
);
...
...
@@ -719,8 +721,8 @@ int mgmtAlterMeter(SDbObj *pDb, SAlterTableMsg *pAlter) {
return
TSDB_CODE_INVALID_TABLE
;
}
// 0.
sys
if
(
taosCheckDbName
(
pDb
->
name
,
tsMonitorDbName
))
return
TSDB_CODE_MONITOR_DB_FORBEIDDEN
;
// 0.
log
if
(
mgmtCheckIsMonitorDB
(
pDb
->
name
,
tsMonitorDbName
))
return
TSDB_CODE_MONITOR_DB_FORBEIDDEN
;
if
(
pAlter
->
type
==
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
)
{
if
(
!
mgmtIsNormalMeter
(
pMeter
)
||
!
mgmtMeterCreateFromMetric
(
pMeter
))
{
...
...
@@ -833,6 +835,7 @@ static void removeMeterFromMetricIndex(STabObj *pMetric, STabObj *pMeter) {
}
}
tSkipListDestroyKey
(
&
key
);
if
(
num
!=
0
)
{
free
(
pRes
);
}
...
...
src/system/detail/src/mgmtUtil.c
浏览文件 @
e9c56255
...
...
@@ -87,3 +87,10 @@ int32_t mgmtGetTagsLength(STabObj* pMetric, int32_t col) { // length before col
return
len
;
}
bool
mgmtCheckIsMonitorDB
(
char
*
db
,
char
*
monitordb
)
{
char
dbName
[
TSDB_DB_NAME_LEN
+
1
]
=
{
0
};
extractDBName
(
db
,
dbName
);
return
(
strncasecmp
(
dbName
,
monitordb
,
strlen
(
dbName
))
==
0
);
}
src/system/detail/src/vnodeQueryImpl.c
浏览文件 @
e9c56255
...
...
@@ -3436,9 +3436,18 @@ void pointInterpSupporterSetData(SQInfo *pQInfo, SPointInterpoSupporter *pPointI
if
(
pQuery
->
interpoType
==
TSDB_INTERPO_SET_VALUE
)
{
for
(
int32_t
i
=
0
;
i
<
pQuery
->
numOfOutputCols
;
++
i
)
{
SQLFunctionCtx
*
pCtx
=
&
pRuntimeEnv
->
pCtx
[
i
];
// only the function of interp needs the corresponding information
if
(
pCtx
->
functionId
!=
TSDB_FUNC_INTERP
)
{
continue
;
}
pCtx
->
numOfParams
=
4
;
SInterpInfo
*
pInterpInfo
=
(
SInterpInfo
*
)
pRuntimeEnv
->
pCtx
[
i
].
aOutputBuf
;
pInterpInfo
->
pInterpDetail
=
calloc
(
1
,
sizeof
(
SInterpInfoDetail
));
SInterpInfoDetail
*
pInterpDetail
=
pInterpInfo
->
pInterpDetail
;
// for primary timestamp column, set the flag
...
...
src/system/detail/src/vnodeShell.c
浏览文件 @
e9c56255
...
...
@@ -419,7 +419,7 @@ void vnodeExecuteRetrieveReq(SSchedMsg *pSched) {
if
(
code
==
TSDB_CODE_SUCCESS
)
{
pRsp
->
offset
=
htobe64
(
vnodeGetOffsetVal
(
pRetrieve
->
qhandle
));
pRsp
->
useconds
=
((
SQInfo
*
)(
pRetrieve
->
qhandle
))
->
useconds
;
pRsp
->
useconds
=
htobe64
(((
SQInfo
*
)(
pRetrieve
->
qhandle
))
->
useconds
)
;
}
else
{
pRsp
->
offset
=
0
;
pRsp
->
useconds
=
0
;
...
...
src/util/src/tglobalcfg.c
浏览文件 @
e9c56255
...
...
@@ -536,6 +536,11 @@ void tsInitGlobalConfig() {
0
,
2
,
0
,
TSDB_CFG_UTYPE_NONE
);
// 0-any, 1-mgmt, 2-dnode
// timer
tsInitConfigOption
(
cfg
++
,
"maxTmrCtrl"
,
&
taosMaxTmrCtrl
,
TSDB_CFG_VTYPE_INT
,
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_SHOW
|
TSDB_CFG_CTYPE_B_CLUSTER
,
8
,
2048
,
0
,
TSDB_CFG_UTYPE_NONE
);
// time
tsInitConfigOption
(
cfg
++
,
"monitorInterval"
,
&
tsMonitorInterval
,
TSDB_CFG_VTYPE_INT
,
TSDB_CFG_CTYPE_B_CONFIG
,
...
...
src/util/src/ttimer.c
浏览文件 @
e9c56255
...
...
@@ -82,13 +82,16 @@ typedef struct time_wheel_t {
}
time_wheel_t
;
uint32_t
tmrDebugFlag
=
DEBUG_ERROR
|
DEBUG_WARN
|
DEBUG_FILE
;
uint32_t
taosMaxTmrCtrl
=
512
;
static
pthread_once_t
tmrModuleInit
=
PTHREAD_ONCE_INIT
;
static
pthread_mutex_t
tmrCtrlMutex
;
static
tmr_ctrl_t
tmrCtrls
[
MAX_NUM_OF_TMRCTL
]
;
static
tmr_ctrl_t
*
tmrCtrls
;
static
tmr_ctrl_t
*
unusedTmrCtrl
=
NULL
;
void
*
tmrQhandle
;
int
taosTmrThreads
=
1
;
static
void
*
tmrQhandle
;
static
int
numOfTmrCtrl
=
0
;
int
taosTmrThreads
=
1
;
static
uintptr_t
nextTimerId
=
0
;
...
...
@@ -129,7 +132,7 @@ static void unlockTimerList(timer_list_t* list) {
int64_t
tid
=
taosGetPthreadId
();
if
(
__sync_val_compare_and_swap_64
(
&
(
list
->
lockedBy
),
tid
,
0
)
!=
tid
)
{
assert
(
false
);
tmrError
(
"
trying to unlock a timer list not locked by current thread."
);
tmrError
(
"
%d trying to unlock a timer list not locked by current thread."
,
tid
);
}
}
...
...
@@ -256,13 +259,13 @@ static void processExpiredTimer(void* handle, void* arg) {
timer
->
executedBy
=
taosGetPthreadId
();
uint8_t
state
=
__sync_val_compare_and_swap_8
(
&
timer
->
state
,
TIMER_STATE_WAITING
,
TIMER_STATE_EXPIRED
);
if
(
state
==
TIMER_STATE_WAITING
)
{
const
char
*
fmt
=
"
timer[label=%s,
id=%lld, fp=%p, param=%p] execution start."
;
const
char
*
fmt
=
"
%s timer[
id=%lld, fp=%p, param=%p] execution start."
;
tmrTrace
(
fmt
,
timer
->
ctrl
->
label
,
timer
->
id
,
timer
->
fp
,
timer
->
param
);
(
*
timer
->
fp
)(
timer
->
param
,
(
tmr_h
)
timer
->
id
);
atomic_store_8
(
&
timer
->
state
,
TIMER_STATE_STOPPED
);
fmt
=
"
timer[label=%s,
id=%lld, fp=%p, param=%p] execution end."
;
fmt
=
"
%s timer[
id=%lld, fp=%p, param=%p] execution end."
;
tmrTrace
(
fmt
,
timer
->
ctrl
->
label
,
timer
->
id
,
timer
->
fp
,
timer
->
param
);
}
removeTimer
(
timer
->
id
);
...
...
@@ -270,18 +273,21 @@ static void processExpiredTimer(void* handle, void* arg) {
}
static
void
addToExpired
(
tmr_obj_t
*
head
)
{
const
char
*
fmt
=
"
timer[label=%s, id=%lld, fp=%p, param=%p] expired
"
;
const
char
*
fmt
=
"
%s adding expired timer[id=%lld, fp=%p, param=%p] to queue.
"
;
while
(
head
!=
NULL
)
{
tmrTrace
(
fmt
,
head
->
ctrl
->
label
,
head
->
id
,
head
->
fp
,
head
->
param
);
uintptr_t
id
=
head
->
id
;
tmr_obj_t
*
next
=
head
->
next
;
tmrTrace
(
fmt
,
head
->
ctrl
->
label
,
id
,
head
->
fp
,
head
->
param
);
SSchedMsg
schedMsg
;
schedMsg
.
fp
=
NULL
;
schedMsg
.
tfp
=
processExpiredTimer
;
schedMsg
.
ahandle
=
head
;
schedMsg
.
thandle
=
NULL
;
taosScheduleTask
(
tmrQhandle
,
&
schedMsg
);
tmrTrace
(
"timer[id=%lld] has been added to queue."
,
id
);
head
=
next
;
}
}
...
...
@@ -295,7 +301,7 @@ static uintptr_t doStartTimer(tmr_obj_t* timer, TAOS_TMR_CALLBACK fp, int msecon
timer
->
ctrl
=
ctrl
;
addTimer
(
timer
);
const
char
*
fmt
=
"
timer[label=%s,
id=%lld, fp=%p, param=%p] started"
;
const
char
*
fmt
=
"
%s timer[
id=%lld, fp=%p, param=%p] started"
;
tmrTrace
(
fmt
,
ctrl
->
label
,
timer
->
id
,
timer
->
fp
,
timer
->
param
);
if
(
mseconds
==
0
)
{
...
...
@@ -318,7 +324,7 @@ tmr_h taosTmrStart(TAOS_TMR_CALLBACK fp, int mseconds, void* param, void* handle
tmr_obj_t
*
timer
=
(
tmr_obj_t
*
)
calloc
(
1
,
sizeof
(
tmr_obj_t
));
if
(
timer
==
NULL
)
{
tmrError
(
"
failed to allocated memory for new timer object."
);
tmrError
(
"
%s failed to allocated memory for new timer object."
,
ctrl
->
label
);
return
NULL
;
}
...
...
@@ -389,7 +395,7 @@ static bool doStopTimer(tmr_obj_t* timer, uint8_t state) {
// we cannot guarantee the thread safety of the timr in all other cases.
reusable
=
true
;
}
const
char
*
fmt
=
"
timer[label=%s,
id=%lld, fp=%p, param=%p] is cancelled."
;
const
char
*
fmt
=
"
%s timer[
id=%lld, fp=%p, param=%p] is cancelled."
;
tmrTrace
(
fmt
,
timer
->
ctrl
->
label
,
timer
->
id
,
timer
->
fp
,
timer
->
param
);
}
else
if
(
state
!=
TIMER_STATE_EXPIRED
)
{
// timer already stopped or cancelled, has nothing to do in this case
...
...
@@ -400,7 +406,7 @@ static bool doStopTimer(tmr_obj_t* timer, uint8_t state) {
}
else
{
assert
(
timer
->
executedBy
!=
taosGetPthreadId
());
const
char
*
fmt
=
"
timer[label=%s,
id=%lld, fp=%p, param=%p] fired, waiting..."
;
const
char
*
fmt
=
"
%s timer[
id=%lld, fp=%p, param=%p] fired, waiting..."
;
tmrTrace
(
fmt
,
timer
->
ctrl
->
label
,
timer
->
id
,
timer
->
fp
,
timer
->
param
);
for
(
int
i
=
1
;
atomic_load_8
(
&
timer
->
state
)
!=
TIMER_STATE_STOPPED
;
i
++
)
{
...
...
@@ -409,7 +415,7 @@ static bool doStopTimer(tmr_obj_t* timer, uint8_t state) {
}
}
fmt
=
"
timer[label=%s,
id=%lld, fp=%p, param=%p] stopped."
;
fmt
=
"
%s timer[
id=%lld, fp=%p, param=%p] stopped."
;
tmrTrace
(
fmt
,
timer
->
ctrl
->
label
,
timer
->
id
,
timer
->
fp
,
timer
->
param
);
}
...
...
@@ -448,7 +454,7 @@ bool taosTmrReset(TAOS_TMR_CALLBACK fp, int mseconds, void* param, void* handle,
bool
stopped
=
false
;
tmr_obj_t
*
timer
=
findTimer
(
id
);
if
(
timer
==
NULL
)
{
tmrTrace
(
"
timer[id=%lld] does not exist"
,
id
);
tmrTrace
(
"
%s timer[id=%lld] does not exist"
,
ctrl
->
label
,
id
);
}
else
{
uint8_t
state
=
__sync_val_compare_and_swap_8
(
&
timer
->
state
,
TIMER_STATE_WAITING
,
TIMER_STATE_CANCELED
);
if
(
!
doStopTimer
(
timer
,
state
))
{
...
...
@@ -463,7 +469,7 @@ bool taosTmrReset(TAOS_TMR_CALLBACK fp, int mseconds, void* param, void* handle,
return
stopped
;
}
tmrTrace
(
"
timer[id=%lld] is reused"
,
timer
->
id
);
tmrTrace
(
"
%s timer[id=%lld] is reused"
,
ctrl
->
label
,
timer
->
id
);
// wait until there's no other reference to this timer,
// so that we can reuse this timer safely.
...
...
@@ -481,7 +487,13 @@ bool taosTmrReset(TAOS_TMR_CALLBACK fp, int mseconds, void* param, void* handle,
}
static
void
taosTmrModuleInit
(
void
)
{
for
(
int
i
=
0
;
i
<
tListLen
(
tmrCtrls
)
-
1
;
++
i
)
{
tmrCtrls
=
malloc
(
sizeof
(
tmr_ctrl_t
)
*
taosMaxTmrCtrl
);
if
(
tmrCtrls
==
NULL
)
{
tmrError
(
"failed to allocate memory for timer controllers."
);
return
;
}
for
(
int
i
=
0
;
i
<
taosMaxTmrCtrl
-
1
;
++
i
)
{
tmr_ctrl_t
*
ctrl
=
tmrCtrls
+
i
;
ctrl
->
next
=
ctrl
+
1
;
}
...
...
@@ -526,17 +538,18 @@ void* taosTmrInit(int maxNumOfTmrs, int resolution, int longest, const char* lab
tmr_ctrl_t
*
ctrl
=
unusedTmrCtrl
;
if
(
ctrl
!=
NULL
)
{
unusedTmrCtrl
=
ctrl
->
next
;
numOfTmrCtrl
++
;
}
pthread_mutex_unlock
(
&
tmrCtrlMutex
);
if
(
ctrl
==
NULL
)
{
tmrError
(
"
too many timer controllers, failed to create timer controller[label=%s]
."
,
label
);
tmrError
(
"
%s too many timer controllers, failed to create timer controller
."
,
label
);
return
NULL
;
}
strncpy
(
ctrl
->
label
,
label
,
sizeof
(
ctrl
->
label
));
ctrl
->
label
[
sizeof
(
ctrl
->
label
)
-
1
]
=
0
;
tmrTrace
(
"
timer controller[label=%s] is initialized."
,
labe
l
);
tmrTrace
(
"
%s timer controller is initialized, number of timer controllers: %d."
,
label
,
numOfTmrCtr
l
);
return
ctrl
;
}
...
...
@@ -544,11 +557,12 @@ void taosTmrCleanUp(void* handle) {
tmr_ctrl_t
*
ctrl
=
(
tmr_ctrl_t
*
)
handle
;
assert
(
ctrl
!=
NULL
&&
ctrl
->
label
[
0
]
!=
0
);
tmrTrace
(
"
timer controller[label=%s]
is cleaned up."
,
ctrl
->
label
);
tmrTrace
(
"
%s timer controller
is cleaned up."
,
ctrl
->
label
);
ctrl
->
label
[
0
]
=
0
;
pthread_mutex_lock
(
&
tmrCtrlMutex
);
ctrl
->
next
=
unusedTmrCtrl
;
numOfTmrCtrl
--
;
unusedTmrCtrl
=
ctrl
;
pthread_mutex_unlock
(
&
tmrCtrlMutex
);
}
src/util/src/tutil.c
浏览文件 @
e9c56255
...
...
@@ -406,13 +406,6 @@ int32_t taosFileRename(char *fullPath, char *suffix, char delimiter, char **dstP
return
rename
(
fullPath
,
*
dstPath
);
}
bool
taosCheckDbName
(
char
*
db
,
char
*
monitordb
)
{
char
*
pos
=
strchr
(
db
,
'.'
);
if
(
pos
==
NULL
)
return
false
;
return
strncasecmp
(
pos
+
1
,
monitordb
,
strlen
(
monitordb
))
==
0
;
}
bool
taosUcs4ToMbs
(
void
*
ucs4
,
int32_t
ucs4_max_len
,
char
*
mbs
)
{
#ifdef USE_LIBICONV
iconv_t
cd
=
iconv_open
(
tsCharset
,
DEFAULT_UNICODE_ENCODEC
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录