Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
68072018
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看板
未验证
提交
68072018
编写于
12月 10, 2019
作者:
S
slguan
提交者:
GitHub
12月 10, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #892 from taosdata/feature/liaohj
Feature/liaohj
上级
a510bfbf
20d2e54a
变更
29
隐藏空白更改
内联
并排
Showing
29 changed file
with
169 addition
and
134 deletion
+169
-134
src/client/inc/tscUtil.h
src/client/inc/tscUtil.h
+2
-4
src/client/inc/tsclient.h
src/client/inc/tsclient.h
+18
-13
src/client/src/tscAst.c
src/client/src/tscAst.c
+3
-4
src/client/src/tscFunctionImpl.c
src/client/src/tscFunctionImpl.c
+1
-1
src/client/src/tscJoinProcess.c
src/client/src/tscJoinProcess.c
+6
-6
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/tscProfile.c
src/client/src/tscProfile.c
+2
-2
src/client/src/tscServer.c
src/client/src/tscServer.c
+8
-5
src/client/src/tscSql.c
src/client/src/tscSql.c
+3
-3
src/client/src/tscStream.c
src/client/src/tscStream.c
+19
-16
src/client/src/tscSub.c
src/client/src/tscSub.c
+3
-3
src/client/src/tscSystem.c
src/client/src/tscSystem.c
+19
-6
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+56
-27
src/inc/taosmsg.h
src/inc/taosmsg.h
+2
-2
src/inc/tutil.h
src/inc/tutil.h
+1
-1
src/os/linux/inc/os.h
src/os/linux/inc/os.h
+1
-0
src/system/detail/inc/mgmtUtil.h
src/system/detail/inc/mgmtUtil.h
+1
-1
src/system/detail/src/mgmtSupertableQuery.c
src/system/detail/src/mgmtSupertableQuery.c
+7
-12
src/system/detail/src/vnodeQueryProcess.c
src/system/detail/src/vnodeQueryProcess.c
+5
-5
src/system/detail/src/vnodeShell.c
src/system/detail/src/vnodeShell.c
+1
-3
src/util/src/textbuffer.c
src/util/src/textbuffer.c
+0
-1
src/util/src/thistogram.c
src/util/src/thistogram.c
+0
-1
src/util/src/tskiplist.c
src/util/src/tskiplist.c
+1
-5
src/util/src/tstrbuild.c
src/util/src/tstrbuild.c
+0
-1
src/util/src/ttimer.c
src/util/src/ttimer.c
+0
-1
src/util/src/ttokenizer.c
src/util/src/ttokenizer.c
+4
-4
src/util/src/ttypes.c
src/util/src/ttypes.c
+0
-1
src/util/src/tutil.c
src/util/src/tutil.c
+1
-1
未找到文件。
src/client/inc/tscUtil.h
浏览文件 @
68072018
...
...
@@ -67,7 +67,7 @@ typedef struct SJoinSubquerySupporter {
}
SJoinSubquerySupporter
;
void
tscDestroyDataBlock
(
STableDataBlocks
*
pDataBlock
);
STableDataBlocks
*
tscCreateDataBlock
(
int32_t
siz
e
);
STableDataBlocks
*
tscCreateDataBlock
(
size_t
initialBufSize
,
int32_t
rowSize
,
int32_t
startOffset
,
const
char
*
nam
e
);
void
tscAppendDataBlock
(
SDataBlockList
*
pList
,
STableDataBlocks
*
pBlocks
);
SParamInfo
*
tscAddParamToDataBlock
(
STableDataBlocks
*
pDataBlock
,
char
type
,
uint8_t
timePrec
,
short
bytes
,
uint32_t
offset
);
...
...
@@ -78,9 +78,7 @@ int32_t tscCopyDataBlockToPayload(SSqlObj* pSql, STableDataBlocks* pDa
void
tscFreeUnusedDataBlocks
(
SDataBlockList
*
pList
);
int32_t
tscMergeTableDataBlocks
(
SSqlObj
*
pSql
,
SDataBlockList
*
pDataList
);
STableDataBlocks
*
tscGetDataBlockFromList
(
void
*
pHashList
,
SDataBlockList
*
pDataBlockList
,
int64_t
id
,
int32_t
size
,
int32_t
startOffset
,
int32_t
rowSize
,
char
*
tableId
);
STableDataBlocks
*
tscCreateDataBlockEx
(
size_t
size
,
int32_t
rowSize
,
int32_t
startOffset
,
char
*
name
);
int32_t
startOffset
,
int32_t
rowSize
,
const
char
*
tableId
);
SVnodeSidList
*
tscGetVnodeSidList
(
SMetricMeta
*
pMetricmeta
,
int32_t
vnodeIdx
);
SMeterSidExtInfo
*
tscGetMeterSidInfo
(
SVnodeSidList
*
pSidList
,
int32_t
idx
);
...
...
src/client/inc/tsclient.h
浏览文件 @
68072018
...
...
@@ -231,17 +231,22 @@ typedef struct SParamInfo {
typedef
struct
STableDataBlocks
{
char
meterId
[
TSDB_METER_ID_LEN
];
int8_t
tsSource
;
bool
ordered
;
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
int64_t
prevTS
;
// previous timestamp, recorded to decide if the records array is ts ascending
int32_t
numOfMeters
;
// number of tables in current submit block
int64_t
vgid
;
int64_t
prevTS
;
int32_t
numOfMeters
;
int32_t
rowSize
;
int32_t
rowSize
;
// row size for current table
uint32_t
nAllocSize
;
uint32_t
size
;
/*
* the metermeta for current table, the metermeta will be used during submit stage, keep a ref
* to avoid it to be removed from cache
*/
SMeterMeta
*
pMeterMeta
;
union
{
char
*
filename
;
char
*
pData
;
...
...
@@ -255,8 +260,8 @@ typedef struct STableDataBlocks {
typedef
struct
SDataBlockList
{
int32_t
idx
;
int32_t
nSize
;
int32_t
nAlloc
;
uint32_t
nSize
;
uint32_t
nAlloc
;
char
*
userParam
;
/* user assigned parameters for async query */
void
*
udfp
;
/* user defined function pointer, used in async model */
STableDataBlocks
**
pData
;
...
...
@@ -274,7 +279,7 @@ typedef struct {
int8_t
isInsertFromFile
;
// load data from file or not
bool
import
;
// import/insert type
char
msgType
;
uint8_t
msgType
;
uint16_t
type
;
// query type
char
intervalTimeUnit
;
int64_t
etime
,
stime
;
...
...
@@ -378,14 +383,14 @@ typedef struct _sql_obj {
char
*
sqlstr
;
char
retry
;
char
maxRetry
;
char
index
;
uint8_t
index
;
char
freed
:
4
;
char
listed
:
4
;
tsem_t
rspSem
;
tsem_t
emptyRspSem
;
SSqlCmd
cmd
;
SSqlRes
res
;
char
numOfSubs
;
uint8_t
numOfSubs
;
struct
_sql_obj
**
pSubs
;
struct
_sql_obj
*
prev
,
*
next
;
}
SSqlObj
;
...
...
src/client/src/tscAst.c
浏览文件 @
68072018
...
...
@@ -643,13 +643,12 @@ int32_t intersect(tQueryResultset *pLeft, tQueryResultset *pRight, tQueryResults
}
/*
*
*
traverse the result and apply the function to each item to check if the item is qualified or not
*/
void
tSQLListTraverseOnResult
(
struct
tSQLBinaryExpr
*
pExpr
,
bool
(
*
fp
)(
tSkipListNode
*
,
void
*
),
tQueryResultset
*
pResult
)
{
static
void
tSQLListTraverseOnResult
(
struct
tSQLBinaryExpr
*
pExpr
,
__result_filter_fn_t
fp
,
tQueryResultset
*
pResult
)
{
assert
(
pExpr
->
pLeft
->
nodeType
==
TSQL_NODE_COL
&&
pExpr
->
pRight
->
nodeType
==
TSQL_NODE_VALUE
);
// brutal force s
earch
// brutal force s
can the result list and check for each item in the list
int64_t
num
=
pResult
->
num
;
for
(
int32_t
i
=
0
,
j
=
0
;
i
<
pResult
->
num
;
++
i
)
{
if
(
fp
==
NULL
||
(
fp
(
pResult
->
pRes
[
i
],
pExpr
->
info
)
==
true
))
{
...
...
src/client/src/tscFunctionImpl.c
浏览文件 @
68072018
...
...
@@ -1666,7 +1666,7 @@ static void last_data_assign_impl(SQLFunctionCtx *pCtx, char *pData, int32_t ind
if
(
pInfo
->
hasResult
!=
DATA_SET_FLAG
||
pInfo
->
ts
<
timestamp
[
index
])
{
#if defined(_DEBUG_VIEW)
pTrace
(
"assign index:%d, ts:%
lld
, val:%d, "
,
index
,
timestamp
[
index
],
*
(
int32_t
*
)
pData
);
pTrace
(
"assign index:%d, ts:%
"
PRId64
"
, val:%d, "
,
index
,
timestamp
[
index
],
*
(
int32_t
*
)
pData
);
#endif
memcpy
(
pCtx
->
aOutputBuf
,
pData
,
pCtx
->
inputBytes
);
...
...
src/client/src/tscJoinProcess.c
浏览文件 @
68072018
...
...
@@ -13,8 +13,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "tscJoinProcess.h"
#include "os.h"
#include "tscJoinProcess.h"
#include "tcache.h"
#include "tscUtil.h"
#include "tsclient.h"
...
...
@@ -88,7 +88,7 @@ static int64_t doTSBlockIntersect(SSqlObj* pSql, SJoinSubquerySupporter* pSuppor
#ifdef _DEBUG_VIEW
// for debug purpose
tscPrint
(
"%
lld, tags:%d
\t
%lld
, tags:%d"
,
elem1
.
ts
,
elem1
.
tag
,
elem2
.
ts
,
elem2
.
tag
);
tscPrint
(
"%
"
PRId64
", tags:%d
\t
%"
PRId64
"
, tags:%d"
,
elem1
.
ts
,
elem1
.
tag
,
elem2
.
ts
,
elem2
.
tag
);
#endif
if
(
elem1
.
tag
<
elem2
.
tag
||
(
elem1
.
tag
==
elem2
.
tag
&&
doCompare
(
order
,
elem1
.
ts
,
elem2
.
ts
)))
{
...
...
@@ -150,7 +150,7 @@ static int64_t doTSBlockIntersect(SSqlObj* pSql, SJoinSubquerySupporter* pSuppor
tsBufDestory
(
pSupporter1
->
pTSBuf
);
tsBufDestory
(
pSupporter2
->
pTSBuf
);
tscTrace
(
"%p input1:%
lld, input2:%lld, final:%lld
for secondary query after ts blocks intersecting"
,
pSql
,
tscTrace
(
"%p input1:%
"
PRId64
", input2:%"
PRId64
", final:%"
PRId64
"
for secondary query after ts blocks intersecting"
,
pSql
,
numOfInput1
,
numOfInput2
,
output1
->
numOfTotal
);
return
output1
->
numOfTotal
;
...
...
@@ -528,8 +528,8 @@ void tscFetchDatablockFromSubquery(SSqlObj* pSql) {
numOfFetch
++
;
}
}
else
{
if
((
pRes
->
row
>=
pRes
->
numOfRows
&&
(
!
tscHasReachLimitation
(
pSql
->
pSubs
[
i
]))
&&
tscProjectionQueryOnTable
(
pSql
))
||
(
pRes
->
numOfRows
==
0
))
{
if
((
pRes
->
row
>=
pRes
->
numOfRows
&&
(
!
tscHasReachLimitation
(
pSql
->
pSubs
[
i
]))
&&
tscProjectionQueryOnTable
(
&
pSql
->
cmd
))
||
(
pRes
->
numOfRows
==
0
))
{
numOfFetch
++
;
}
}
...
...
@@ -1619,7 +1619,7 @@ void tsBufDisplay(STSBuf* pTSBuf) {
while
(
tsBufNextPos
(
pTSBuf
))
{
STSElem
elem
=
tsBufGetElem
(
pTSBuf
);
printf
(
"%d-%
lld-%lld
\n
"
,
elem
.
vnode
,
elem
.
tag
,
elem
.
ts
);
printf
(
"%d-%
"
PRId64
"-%"
PRId64
"
\n
"
,
elem
.
vnode
,
*
(
int64_t
*
)
elem
.
tag
,
elem
.
ts
);
}
pTSBuf
->
cur
.
order
=
old
;
...
...
src/client/src/tscLocal.c
浏览文件 @
68072018
...
...
@@ -64,7 +64,7 @@ static int32_t getToStringLength(const char *pData, int32_t length, int32_t type
}
break
;
case
TSDB_DATA_TYPE_TIMESTAMP
:
case
TSDB_DATA_TYPE_BIGINT
:
len
=
sprintf
(
buf
,
"%
lld
"
,
*
(
int64_t
*
)
pData
);
len
=
sprintf
(
buf
,
"%
"
PRId64
"
"
,
*
(
int64_t
*
)
pData
);
break
;
case
TSDB_DATA_TYPE_BOOL
:
len
=
MAX_BOOL_TYPE_LENGTH
;
...
...
@@ -228,7 +228,7 @@ static int32_t tscSetValueToResObj(SSqlObj *pSql, int32_t rowLen) {
sprintf
(
target
,
"%d"
,
*
(
int32_t
*
)
pTagValue
);
break
;
case
TSDB_DATA_TYPE_BIGINT
:
sprintf
(
target
,
"%
lld
"
,
*
(
int64_t
*
)
pTagValue
);
sprintf
(
target
,
"%
"
PRId64
"
"
,
*
(
int64_t
*
)
pTagValue
);
break
;
case
TSDB_DATA_TYPE_BOOL
:
{
char
*
val
=
(
*
((
int8_t
*
)
pTagValue
)
==
0
)
?
"false"
:
"true"
;
...
...
src/client/src/tscParseInsert.c
浏览文件 @
68072018
...
...
@@ -982,7 +982,7 @@ int doParserInsertSql(SSqlObj *pSql, char *str) {
strcpy
(
fname
,
full_path
.
we_wordv
[
0
]);
wordfree
(
&
full_path
);
STableDataBlocks
*
pDataBlock
=
tscCreateDataBlock
Ex
(
PATH_MAX
,
pMeterMetaInfo
->
pMeterMeta
->
rowSize
,
STableDataBlocks
*
pDataBlock
=
tscCreateDataBlock
(
PATH_MAX
,
pMeterMetaInfo
->
pMeterMeta
->
rowSize
,
sizeof
(
SShellSubmitBlock
),
pMeterMetaInfo
->
name
);
tscAppendDataBlock
(
pCmd
->
pDataBlocks
,
pDataBlock
);
...
...
@@ -1219,8 +1219,8 @@ static int tscInsertDataFromFile(SSqlObj *pSql, FILE *fp, char *tmpTokenBuf) {
int32_t
rowSize
=
pMeterMeta
->
rowSize
;
pCmd
->
pDataBlocks
=
tscCreateBlockArrayList
();
STableDataBlocks
*
pTableDataBlock
=
tscCreateDataBlockEx
(
TSDB_PAYLOAD_SIZE
,
pMeterMeta
->
rowSize
,
sizeof
(
SShellSubmitBlock
),
pMeterMetaInfo
->
name
);
STableDataBlocks
*
pTableDataBlock
=
tscCreateDataBlock
(
TSDB_PAYLOAD_SIZE
,
pMeterMeta
->
rowSize
,
sizeof
(
SShellSubmitBlock
),
pMeterMetaInfo
->
name
);
tscAppendDataBlock
(
pCmd
->
pDataBlocks
,
pTableDataBlock
);
...
...
src/client/src/tscProfile.c
浏览文件 @
68072018
...
...
@@ -93,10 +93,10 @@ void tscSaveSlowQuery(SSqlObj *pSql) {
const
static
int64_t
SLOW_QUERY_INTERVAL
=
3000000L
;
if
(
pSql
->
res
.
useconds
<
SLOW_QUERY_INTERVAL
)
return
;
tscTrace
(
"%p query time:%
lld
sql:%s"
,
pSql
,
pSql
->
res
.
useconds
,
pSql
->
sqlstr
);
tscTrace
(
"%p query time:%
"
PRId64
"
sql:%s"
,
pSql
,
pSql
->
res
.
useconds
,
pSql
->
sqlstr
);
char
*
sql
=
malloc
(
200
);
int
len
=
snprintf
(
sql
,
200
,
"insert into %s.slowquery values(now, '%s', %
lld, %lld
, '"
,
tsMonitorDbName
,
int
len
=
snprintf
(
sql
,
200
,
"insert into %s.slowquery values(now, '%s', %
"
PRId64
", %"
PRId64
"
, '"
,
tsMonitorDbName
,
pSql
->
pTscObj
->
user
,
pSql
->
stime
,
pSql
->
res
.
useconds
);
int
sqlLen
=
snprintf
(
sql
+
len
,
TSDB_SHOW_SQL_LEN
,
"%s"
,
pSql
->
sqlstr
);
if
(
sqlLen
>
TSDB_SHOW_SQL_LEN
-
1
)
{
...
...
src/client/src/tscServer.c
浏览文件 @
68072018
...
...
@@ -3351,7 +3351,7 @@ int tscProcessShowRsp(SSqlObj *pSql) {
}
int
tscProcessConnectRsp
(
SSqlObj
*
pSql
)
{
char
temp
[
TSDB_METER_ID_LEN
];
char
temp
[
TSDB_METER_ID_LEN
*
2
];
SConnectRsp
*
pConnect
;
STscObj
*
pObj
=
pSql
->
pTscObj
;
...
...
@@ -3359,8 +3359,11 @@ int tscProcessConnectRsp(SSqlObj *pSql) {
pConnect
=
(
SConnectRsp
*
)
pRes
->
pRsp
;
strcpy
(
pObj
->
acctId
,
pConnect
->
acctId
);
// copy acctId from response
sprintf
(
temp
,
"%s%s%s"
,
pObj
->
acctId
,
TS_PATH_DELIMITER
,
pObj
->
db
);
strcpy
(
pObj
->
db
,
temp
);
int32_t
len
=
sprintf
(
temp
,
"%s%s%s"
,
pObj
->
acctId
,
TS_PATH_DELIMITER
,
pObj
->
db
);
assert
(
len
<=
tListLen
(
pObj
->
db
));
strncpy
(
pObj
->
db
,
temp
,
tListLen
(
pObj
->
db
));
#ifdef CLUSTER
SIpList
*
pIpList
;
char
*
rsp
=
pRes
->
pRsp
+
sizeof
(
SConnectRsp
);
...
...
@@ -3635,7 +3638,7 @@ int tscRenewMeterMeta(SSqlObj *pSql, char *meterId) {
*/
if
(
pMeterMetaInfo
->
pMeterMeta
==
NULL
||
!
tscQueryOnMetric
(
pCmd
))
{
if
(
pMeterMetaInfo
->
pMeterMeta
)
{
tscTrace
(
"%p update meter meta, old: numOfTags:%d, numOfCols:%d, uid:%
lld
, addr:%p"
,
pSql
,
tscTrace
(
"%p update meter meta, old: numOfTags:%d, numOfCols:%d, uid:%
"
PRId64
"
, addr:%p"
,
pSql
,
pMeterMetaInfo
->
numOfTags
,
pCmd
->
numOfCols
,
pMeterMetaInfo
->
pMeterMeta
->
uid
,
pMeterMetaInfo
->
pMeterMeta
);
}
tscWaitingForCreateTable
(
&
pSql
->
cmd
);
...
...
@@ -3643,7 +3646,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:%
lld
, addr:%p"
,
pSql
,
tscTrace
(
"%p metric query not update metric meta, numOfTags:%d, numOfCols:%d, uid:%
"
PRId64
"
, addr:%p"
,
pSql
,
pMeterMetaInfo
->
pMeterMeta
->
numOfTags
,
pCmd
->
numOfCols
,
pMeterMetaInfo
->
pMeterMeta
->
uid
,
pMeterMetaInfo
->
pMeterMeta
);
}
...
...
src/client/src/tscSql.c
浏览文件 @
68072018
...
...
@@ -532,7 +532,7 @@ static void **tscJoinResultsetFromBuf(SSqlObj *pSql) {
doSetResultRowData
(
pSql
->
pSubs
[
1
]);
// TSKEY key1 = *(TSKEY *)pRes1->tsrow[0];
// TSKEY key2 = *(TSKEY *)pRes2->tsrow[0];
// printf("first:%
lld, second:%lld
\n", key1, key2);
// printf("first:%
" PRId64 ", second:%" PRId64 "
\n", key1, key2);
success
=
true
;
pRes1
->
row
++
;
pRes2
->
row
++
;
...
...
@@ -903,7 +903,7 @@ int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields)
break
;
case
TSDB_DATA_TYPE_BIGINT
:
len
+=
sprintf
(
str
+
len
,
"%
lld
"
,
*
((
int64_t
*
)
row
[
i
]));
len
+=
sprintf
(
str
+
len
,
"%
"
PRId64
"
"
,
*
((
int64_t
*
)
row
[
i
]));
break
;
case
TSDB_DATA_TYPE_FLOAT
:
...
...
@@ -928,7 +928,7 @@ int taos_print_row(char *str, TAOS_ROW row, TAOS_FIELD *fields, int num_fields)
}
break
;
case
TSDB_DATA_TYPE_TIMESTAMP
:
len
+=
sprintf
(
str
+
len
,
"%
lld
"
,
*
((
int64_t
*
)
row
[
i
]));
len
+=
sprintf
(
str
+
len
,
"%
"
PRId64
"
"
,
*
((
int64_t
*
)
row
[
i
]));
break
;
case
TSDB_DATA_TYPE_BOOL
:
...
...
src/client/src/tscStream.c
浏览文件 @
68072018
...
...
@@ -85,7 +85,7 @@ static void tscProcessStreamLaunchQuery(SSchedMsg *pMsg) {
// failed to get meter/metric meta, retry in 10sec.
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
int64_t
retryDelayTime
=
tscGetRetryDelayTime
(
pStream
->
slidingTime
,
pStream
->
precision
);
tscError
(
"%p stream:%p,get metermeta failed, retry in %
lld
ms"
,
pStream
->
pSql
,
pStream
,
retryDelayTime
);
tscError
(
"%p stream:%p,get metermeta failed, retry in %
"
PRId64
"
ms"
,
pStream
->
pSql
,
pStream
,
retryDelayTime
);
tscSetRetryTimer
(
pStream
,
pSql
,
retryDelayTime
);
return
;
...
...
@@ -136,7 +136,7 @@ static void tscProcessStreamQueryCallback(void *param, TAOS_RES *tres, int numOf
SSqlStream
*
pStream
=
(
SSqlStream
*
)
param
;
if
(
tres
==
NULL
||
numOfRows
<
0
)
{
int64_t
retryDelay
=
tscGetRetryDelayTime
(
pStream
->
slidingTime
,
pStream
->
precision
);
tscError
(
"%p stream:%p, query data failed, code:%d, retry in %
lld
ms"
,
pStream
->
pSql
,
pStream
,
numOfRows
,
tscError
(
"%p stream:%p, query data failed, code:%d, retry in %
"
PRId64
"
ms"
,
pStream
->
pSql
,
pStream
,
numOfRows
,
retryDelay
);
SMeterMetaInfo
*
pMeterMetaInfo
=
tscGetMeterMetaInfo
(
&
pStream
->
pSql
->
cmd
,
0
);
...
...
@@ -158,7 +158,7 @@ static void tscSetTimestampForRes(SSqlStream *pStream, SSqlObj *pSql) {
if
(
timestamp
!=
actualTimestamp
)
{
// reset the timestamp of each agg point by using start time of each interval
*
((
int64_t
*
)
pRes
->
data
)
=
actualTimestamp
;
tscWarn
(
"%p stream:%p, timestamp of points is:%
lld, reset to %lld
"
,
pSql
,
pStream
,
timestamp
,
actualTimestamp
);
tscWarn
(
"%p stream:%p, timestamp of points is:%
"
PRId64
", reset to %"
PRId64
"
"
,
pSql
,
pStream
,
timestamp
,
actualTimestamp
);
}
}
...
...
@@ -169,7 +169,7 @@ static void tscProcessStreamRetrieveResult(void *param, TAOS_RES *res, int numOf
if
(
pSql
==
NULL
||
numOfRows
<
0
)
{
int64_t
retryDelayTime
=
tscGetRetryDelayTime
(
pStream
->
slidingTime
,
pStream
->
precision
);
tscError
(
"%p stream:%p, retrieve data failed, code:%d, retry in %
lld
ms"
,
pSql
,
pStream
,
numOfRows
,
retryDelayTime
);
tscError
(
"%p stream:%p, retrieve data failed, code:%d, retry in %
"
PRId64
"
ms"
,
pSql
,
pStream
,
numOfRows
,
retryDelayTime
);
tscClearMeterMetaInfo
(
pMeterMetaInfo
,
true
);
tscSetRetryTimer
(
pStream
,
pStream
->
pSql
,
retryDelayTime
);
...
...
@@ -235,7 +235,7 @@ static void tscProcessStreamRetrieveResult(void *param, TAOS_RES *res, int numOf
/* no resuls in the query range, retry */
// todo set retry dynamic time
int32_t
retry
=
tsProjectExecInterval
;
tscError
(
"%p stream:%p, retrieve no data, code:%d, retry in %
lld
ms"
,
pSql
,
pStream
,
numOfRows
,
retry
);
tscError
(
"%p stream:%p, retrieve no data, code:%d, retry in %
"
PRId64
"
ms"
,
pSql
,
pStream
,
numOfRows
,
retry
);
tscClearSqlMetaInfoForce
(
&
(
pStream
->
pSql
->
cmd
));
tscSetRetryTimer
(
pStream
,
pStream
->
pSql
,
retry
);
...
...
@@ -265,7 +265,7 @@ static void tscSetRetryTimer(SSqlStream *pStream, SSqlObj *pSql, int64_t timer)
/*
* current time window will be closed, since it too early to exceed the maxRetentWindow value
*/
tscTrace
(
"%p stream:%p, etime:%
lld is too old, exceeds the max retention time window:%lld
, stop the stream"
,
tscTrace
(
"%p stream:%p, etime:%
"
PRId64
" is too old, exceeds the max retention time window:%"
PRId64
"
, stop the stream"
,
pStream
->
pSql
,
pStream
,
pStream
->
stime
,
pStream
->
etime
);
// TODO : How to terminate stream here
taos_close_stream
(
pStream
);
...
...
@@ -276,10 +276,10 @@ static void tscSetRetryTimer(SSqlStream *pStream, SSqlObj *pSql, int64_t timer)
return
;
}
tscTrace
(
"%p stream:%p, next query start at %
lld, in %lldms. query range %lld-%lld
"
,
pStream
->
pSql
,
pStream
,
tscTrace
(
"%p stream:%p, next query start at %
"
PRId64
", in %"
PRId64
"ms. query range %"
PRId64
"-%"
PRId64
"
"
,
pStream
->
pSql
,
pStream
,
now
+
timer
,
timer
,
pStream
->
stime
,
etime
);
}
else
{
tscTrace
(
"%p stream:%p, next query start at %
lld, in %lldms. query range %lld-%lld
"
,
pStream
->
pSql
,
pStream
,
tscTrace
(
"%p stream:%p, next query start at %
"
PRId64
", in %"
PRId64
"ms. query range %"
PRId64
"-%"
PRId64
"
"
,
pStream
->
pSql
,
pStream
,
pStream
->
stime
,
timer
,
pStream
->
stime
-
pStream
->
interval
,
pStream
->
stime
-
1
);
}
...
...
@@ -299,7 +299,7 @@ static void tscSetNextLaunchTimer(SSqlStream *pStream, SSqlObj *pSql) {
*/
timer
=
pStream
->
slidingTime
;
if
(
pStream
->
stime
>
pStream
->
etime
)
{
tscTrace
(
"%p stream:%p, stime:%
lld is larger than end time: %lld
, stop the stream"
,
pStream
->
pSql
,
pStream
,
tscTrace
(
"%p stream:%p, stime:%
"
PRId64
" is larger than end time: %"
PRId64
"
, stop the stream"
,
pStream
->
pSql
,
pStream
,
pStream
->
stime
,
pStream
->
etime
);
// TODO : How to terminate stream here
taos_close_stream
(
pStream
);
...
...
@@ -353,7 +353,7 @@ static void tscSetSlidingWindowInfo(SSqlObj *pSql, SSqlStream *pStream) {
int64_t
minIntervalTime
=
(
pStream
->
precision
==
TSDB_TIME_PRECISION_MICRO
)
?
tsMinIntervalTime
*
1000L
:
tsMinIntervalTime
;
if
(
pCmd
->
nAggTimeInterval
<
minIntervalTime
)
{
tscWarn
(
"%p stream:%p, original sample interval:%ld too small, reset to:%
lld
"
,
pSql
,
pStream
,
tscWarn
(
"%p stream:%p, original sample interval:%ld too small, reset to:%
"
PRId64
"
"
,
pSql
,
pStream
,
pCmd
->
nAggTimeInterval
,
minIntervalTime
);
pCmd
->
nAggTimeInterval
=
minIntervalTime
;
}
...
...
@@ -368,14 +368,14 @@ static void tscSetSlidingWindowInfo(SSqlObj *pSql, SSqlStream *pStream) {
(
pStream
->
precision
==
TSDB_TIME_PRECISION_MICRO
)
?
tsMinSlidingTime
*
1000L
:
tsMinSlidingTime
;
if
(
pCmd
->
nSlidingTime
<
minSlidingTime
)
{
tscWarn
(
"%p stream:%p, original sliding value:%
lld too small, reset to:%lld
"
,
pSql
,
pStream
,
pCmd
->
nSlidingTime
,
tscWarn
(
"%p stream:%p, original sliding value:%
"
PRId64
" too small, reset to:%"
PRId64
"
"
,
pSql
,
pStream
,
pCmd
->
nSlidingTime
,
minSlidingTime
);
pCmd
->
nSlidingTime
=
minSlidingTime
;
}
if
(
pCmd
->
nSlidingTime
>
pCmd
->
nAggTimeInterval
)
{
tscWarn
(
"%p stream:%p, sliding value:%
lld can not be larger than interval range, reset to:%lld
"
,
pSql
,
pStream
,
tscWarn
(
"%p stream:%p, sliding value:%
"
PRId64
" can not be larger than interval range, reset to:%"
PRId64
"
"
,
pSql
,
pStream
,
pCmd
->
nSlidingTime
,
pCmd
->
nAggTimeInterval
);
pCmd
->
nSlidingTime
=
pCmd
->
nAggTimeInterval
;
...
...
@@ -401,11 +401,11 @@ static int64_t tscGetStreamStartTimestamp(SSqlObj *pSql, SSqlStream *pStream, in
}
else
{
// timewindow based aggregation stream
if
(
stime
==
0
)
{
// no data in meter till now
stime
=
((
int64_t
)
taosGetTimestamp
(
pStream
->
precision
)
/
pStream
->
interval
)
*
pStream
->
interval
;
tscWarn
(
"%p stream:%p, last timestamp:0, reset to:%
lld
"
,
pSql
,
pStream
,
stime
);
tscWarn
(
"%p stream:%p, last timestamp:0, reset to:%
"
PRId64
"
"
,
pSql
,
pStream
,
stime
);
}
else
{
int64_t
newStime
=
(
stime
/
pStream
->
interval
)
*
pStream
->
interval
;
if
(
newStime
!=
stime
)
{
tscWarn
(
"%p stream:%p, last timestamp:%
lld, reset to:%lld
"
,
pSql
,
pStream
,
stime
,
newStime
);
tscWarn
(
"%p stream:%p, last timestamp:%
"
PRId64
", reset to:%"
PRId64
"
"
,
pSql
,
pStream
,
stime
,
newStime
);
stime
=
newStime
;
}
}
...
...
@@ -447,7 +447,10 @@ static void setErrorInfo(STscObj* pObj, int32_t code, char* info) {
SSqlCmd
*
pCmd
=
&
pObj
->
pSql
->
cmd
;
pObj
->
pSql
->
res
.
code
=
code
;
strncpy
(
pCmd
->
payload
,
info
,
pCmd
->
payloadLen
);
if
(
info
!=
NULL
)
{
strncpy
(
pCmd
->
payload
,
info
,
pCmd
->
payloadLen
);
}
}
TAOS_STREAM
*
taos_open_stream
(
TAOS
*
taos
,
const
char
*
sqlstr
,
void
(
*
fp
)(
void
*
param
,
TAOS_RES
*
,
TAOS_ROW
row
),
...
...
@@ -537,7 +540,7 @@ TAOS_STREAM *taos_open_stream(TAOS *taos, const char *sqlstr, void (*fp)(void *p
int64_t
starttime
=
tscGetLaunchTimestamp
(
pStream
);
taosTmrReset
(
tscProcessStreamTimer
,
starttime
,
pStream
,
tscTmr
,
&
pStream
->
pTimer
);
tscTrace
(
"%p stream:%p is opened, query on:%s, interval:%
lld, sliding:%lld, first launched in:%lld
, sql:%s"
,
pSql
,
tscTrace
(
"%p stream:%p is opened, query on:%s, interval:%
"
PRId64
", sliding:%"
PRId64
", first launched in:%"
PRId64
"
, sql:%s"
,
pSql
,
pStream
,
pMeterMetaInfo
->
name
,
pStream
->
interval
,
pStream
->
slidingTime
,
starttime
,
sqlstr
);
return
pStream
;
...
...
src/client/src/tscSub.c
浏览文件 @
68072018
...
...
@@ -56,7 +56,7 @@ TAOS_SUB *taos_subscribe(const char *host, const char *user, const char *pass, c
if
(
pSub
->
taos
==
NULL
)
{
tfree
(
pSub
);
}
else
{
char
qstr
[
128
]
;
char
qstr
[
256
]
=
{
0
}
;
sprintf
(
qstr
,
"use %s"
,
db
);
int
res
=
taos_query
(
pSub
->
taos
,
qstr
);
if
(
res
!=
0
)
{
...
...
@@ -64,7 +64,7 @@ TAOS_SUB *taos_subscribe(const char *host, const char *user, const char *pass, c
taos_close
(
pSub
->
taos
);
tfree
(
pSub
);
}
else
{
s
printf
(
qstr
,
"select * from %s where _c0 > now+1000d"
,
pSub
->
name
);
s
nprintf
(
qstr
,
tListLen
(
qstr
)
,
"select * from %s where _c0 > now+1000d"
,
pSub
->
name
);
if
(
taos_query
(
pSub
->
taos
,
qstr
))
{
tscTrace
(
"failed to select, reason:%s"
,
taos_errstr
(
pSub
->
taos
));
taos_close
(
pSub
->
taos
);
...
...
@@ -106,7 +106,7 @@ TAOS_ROW taos_consume(TAOS_SUB *tsub) {
pSub
->
stime
=
taosGetTimestampMs
();
sprintf
(
qstr
,
"select * from %s where _c0 > %
lld
order by _c0 asc"
,
pSub
->
name
,
pSub
->
lastKey
);
sprintf
(
qstr
,
"select * from %s where _c0 > %
"
PRId64
"
order by _c0 asc"
,
pSub
->
name
,
pSub
->
lastKey
);
if
(
taos_query
(
pSub
->
taos
,
qstr
))
{
tscTrace
(
"failed to select, reason:%s"
,
taos_errstr
(
pSub
->
taos
));
return
NULL
;
...
...
src/client/src/tscSystem.c
浏览文件 @
68072018
...
...
@@ -198,7 +198,9 @@ static int taos_options_imp(TSDB_OPTION option, const char *pStr) {
switch
(
option
)
{
case
TSDB_OPTION_CONFIGDIR
:
cfg
=
tsGetConfigOption
(
"configDir"
);
if
(
cfg
&&
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
assert
(
cfg
!=
NULL
);
if
(
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
strncpy
(
configDir
,
pStr
,
TSDB_FILENAME_LEN
);
cfg
->
cfgStatus
=
TSDB_CFG_CSTATUS_OPTION
;
tscPrint
(
"set config file directory:%s"
,
pStr
);
...
...
@@ -210,7 +212,9 @@ static int taos_options_imp(TSDB_OPTION option, const char *pStr) {
case
TSDB_OPTION_SHELL_ACTIVITY_TIMER
:
cfg
=
tsGetConfigOption
(
"shellActivityTimer"
);
if
(
cfg
&&
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
assert
(
cfg
!=
NULL
);
if
(
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
tsShellActivityTimer
=
atoi
(
pStr
);
if
(
tsShellActivityTimer
<
1
)
tsShellActivityTimer
=
1
;
if
(
tsShellActivityTimer
>
3600
)
tsShellActivityTimer
=
3600
;
...
...
@@ -224,13 +228,15 @@ static int taos_options_imp(TSDB_OPTION option, const char *pStr) {
case
TSDB_OPTION_LOCALE
:
{
// set locale
cfg
=
tsGetConfigOption
(
"locale"
);
assert
(
cfg
!=
NULL
);
size_t
len
=
strlen
(
pStr
);
if
(
len
==
0
||
len
>
TSDB_LOCALE_LEN
)
{
tscPrint
(
"Invalid locale:%s, use default"
,
pStr
);
return
-
1
;
}
if
(
cfg
&&
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
if
(
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
char
sep
=
'.'
;
if
(
strlen
(
tsLocale
)
==
0
)
{
// locale does not set yet
...
...
@@ -285,13 +291,15 @@ static int taos_options_imp(TSDB_OPTION option, const char *pStr) {
case
TSDB_OPTION_CHARSET
:
{
/* set charset will override the value of charset, assigned during system locale changed */
cfg
=
tsGetConfigOption
(
"charset"
);
assert
(
cfg
!=
NULL
);
size_t
len
=
strlen
(
pStr
);
if
(
len
==
0
||
len
>
TSDB_LOCALE_LEN
)
{
tscPrint
(
"failed to set charset:%s"
,
pStr
);
return
-
1
;
}
if
(
cfg
&&
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
if
(
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
if
(
taosValidateEncodec
(
pStr
))
{
if
(
strlen
(
tsCharset
)
==
0
)
{
tscPrint
(
"charset is set:%s"
,
pStr
);
...
...
@@ -314,7 +322,9 @@ static int taos_options_imp(TSDB_OPTION option, const char *pStr) {
case
TSDB_OPTION_TIMEZONE
:
cfg
=
tsGetConfigOption
(
"timezone"
);
if
(
cfg
&&
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
assert
(
cfg
!=
NULL
);
if
(
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
strcpy
(
tsTimezone
,
pStr
);
tsSetTimeZone
();
cfg
->
cfgStatus
=
TSDB_CFG_CSTATUS_OPTION
;
...
...
@@ -327,7 +337,9 @@ static int taos_options_imp(TSDB_OPTION option, const char *pStr) {
case
TSDB_OPTION_SOCKET_TYPE
:
cfg
=
tsGetConfigOption
(
"sockettype"
);
if
(
cfg
&&
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
assert
(
cfg
!=
NULL
);
if
(
cfg
->
cfgStatus
<=
TSDB_CFG_CSTATUS_OPTION
)
{
if
(
strcasecmp
(
pStr
,
TAOS_SOCKET_TYPE_NAME_UDP
)
!=
0
&&
strcasecmp
(
pStr
,
TAOS_SOCKET_TYPE_NAME_TCP
)
!=
0
)
{
tscError
(
"only 'tcp' or 'udp' allowed for configuring the socket type"
);
return
-
1
;
...
...
@@ -340,6 +352,7 @@ static int taos_options_imp(TSDB_OPTION option, const char *pStr) {
break
;
default:
// TODO return the correct error code to client in the format for taos_errstr()
tscError
(
"Invalid option %d"
,
option
);
return
-
1
;
}
...
...
src/client/src/tscUtil.c
浏览文件 @
68072018
...
...
@@ -451,15 +451,6 @@ void tscFreeSqlObj(SSqlObj* pSql) {
free
(
pSql
);
}
STableDataBlocks
*
tscCreateDataBlock
(
int32_t
size
)
{
STableDataBlocks
*
dataBuf
=
(
STableDataBlocks
*
)
calloc
(
1
,
sizeof
(
STableDataBlocks
));
dataBuf
->
nAllocSize
=
(
uint32_t
)
size
;
dataBuf
->
pData
=
calloc
(
1
,
dataBuf
->
nAllocSize
);
dataBuf
->
ordered
=
true
;
dataBuf
->
prevTS
=
INT64_MIN
;
return
dataBuf
;
}
void
tscDestroyDataBlock
(
STableDataBlocks
*
pDataBlock
)
{
if
(
pDataBlock
==
NULL
)
{
return
;
...
...
@@ -467,6 +458,9 @@ void tscDestroyDataBlock(STableDataBlocks* pDataBlock) {
tfree
(
pDataBlock
->
pData
);
tfree
(
pDataBlock
->
params
);
// free the refcount for metermeta
taosRemoveDataFromCache
(
tscCacheHandle
,
(
void
**
)
&
(
pDataBlock
->
pMeterMeta
),
false
);
tfree
(
pDataBlock
);
}
...
...
@@ -513,11 +507,11 @@ SDataBlockList* tscCreateBlockArrayList() {
void
tscAppendDataBlock
(
SDataBlockList
*
pList
,
STableDataBlocks
*
pBlocks
)
{
if
(
pList
->
nSize
>=
pList
->
nAlloc
)
{
pList
->
nAlloc
=
pList
->
nAlloc
<<
1
;
pList
->
pData
=
realloc
(
pList
->
pData
,
sizeof
(
void
*
)
*
(
size_t
)
pList
->
nAlloc
);
pList
->
nAlloc
=
(
pList
->
nAlloc
)
<<
1U
;
pList
->
pData
=
realloc
(
pList
->
pData
,
POINTER_BYTES
*
(
size_t
)
pList
->
nAlloc
);
// reset allocated memory
memset
(
pList
->
pData
+
pList
->
nSize
,
0
,
sizeof
(
void
*
)
*
(
pList
->
nAlloc
-
pList
->
nSize
));
memset
(
pList
->
pData
+
pList
->
nSize
,
0
,
POINTER_BYTES
*
(
pList
->
nAlloc
-
pList
->
nSize
));
}
pList
->
pData
[
pList
->
nSize
++
]
=
pBlocks
;
...
...
@@ -539,29 +533,43 @@ void* tscDestroyBlockArrayList(SDataBlockList* pList) {
}
int32_t
tscCopyDataBlockToPayload
(
SSqlObj
*
pSql
,
STableDataBlocks
*
pDataBlock
)
{
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
assert
(
pDataBlock
->
pMeterMeta
!=
NULL
);
pCmd
->
count
=
pDataBlock
->
numOfMeters
;
SMeterMetaInfo
*
pMeterMetaInfo
=
tscGetMeterMetaInfo
(
pCmd
,
0
);
strcpy
(
pMeterMetaInfo
->
name
,
pDataBlock
->
meterId
);
SMeterMetaInfo
*
pMeterMetaInfo
=
tscGetMeterMetaInfo
(
pCmd
,
0
);
//set the correct metermeta object, the metermeta has been locked in pDataBlocks, so it must be in the cache
if
(
pMeterMetaInfo
->
pMeterMeta
!=
pDataBlock
->
pMeterMeta
)
{
strcpy
(
pMeterMetaInfo
->
name
,
pDataBlock
->
meterId
);
taosRemoveDataFromCache
(
tscCacheHandle
,
(
void
**
)
&
(
pMeterMetaInfo
->
pMeterMeta
),
false
);
pMeterMetaInfo
->
pMeterMeta
=
pDataBlock
->
pMeterMeta
;
pDataBlock
->
pMeterMeta
=
NULL
;
// delegate the ownership of metermeta to pMeterMetaInfo
}
else
{
assert
(
strncmp
(
pMeterMetaInfo
->
name
,
pDataBlock
->
meterId
,
tListLen
(
pDataBlock
->
meterId
))
==
0
);
}
/*
* the submit message consists of : [RPC header|message body|digest]
* the dataBlock only includes the RPC Header buffer and actual submit messsage body, space for digest needs
* additional space.
*/
int
ret
=
tscAllocPayload
(
pCmd
,
pDataBlock
->
nAllocSize
+
sizeof
(
STaosDigest
));
if
(
TSDB_CODE_SUCCESS
!=
ret
)
return
ret
;
if
(
TSDB_CODE_SUCCESS
!=
ret
)
{
return
ret
;
}
memcpy
(
pCmd
->
payload
,
pDataBlock
->
pData
,
pDataBlock
->
nAllocSize
);
/*
* the payloadLen should be actual message body size
* the old value of payloadLen is the allocated payload size
*/
pCmd
->
payloadLen
=
pDataBlock
->
nAllocSize
-
tsRpcHeadSize
;
assert
(
pCmd
->
allocSize
>=
pCmd
->
payloadLen
+
tsRpcHeadSize
+
sizeof
(
STaosDigest
));
return
tscGetMeterMeta
(
pSql
,
pMeterMetaInfo
->
name
,
0
)
;
return
TSDB_CODE_SUCCESS
;
}
void
tscFreeUnusedDataBlocks
(
SDataBlockList
*
pList
)
{
...
...
@@ -573,19 +581,38 @@ void tscFreeUnusedDataBlocks(SDataBlockList* pList) {
}
}
STableDataBlocks
*
tscCreateDataBlockEx
(
size_t
size
,
int32_t
rowSize
,
int32_t
startOffset
,
char
*
name
)
{
STableDataBlocks
*
dataBuf
=
tscCreateDataBlock
(
size
);
/**
* create the in-memory buffer for each table to keep the submitted data block
* @param initialSize
* @param rowSize
* @param startOffset
* @param name
* @param pMeterMeta the ownership of pMeterMeta should be transfer to STableDataBlocks
* @return
*/
STableDataBlocks
*
tscCreateDataBlock
(
size_t
initialSize
,
int32_t
rowSize
,
int32_t
startOffset
,
const
char
*
name
)
{
STableDataBlocks
*
dataBuf
=
(
STableDataBlocks
*
)
calloc
(
1
,
sizeof
(
STableDataBlocks
));
dataBuf
->
nAllocSize
=
(
uint32_t
)
initialSize
;
dataBuf
->
pData
=
calloc
(
1
,
dataBuf
->
nAllocSize
);
dataBuf
->
ordered
=
true
;
dataBuf
->
prevTS
=
INT64_MIN
;
dataBuf
->
rowSize
=
rowSize
;
dataBuf
->
size
=
startOffset
;
dataBuf
->
tsSource
=
-
1
;
strncpy
(
dataBuf
->
meterId
,
name
,
TSDB_METER_ID_LEN
);
// sure that the metermeta must be in the local client cache
dataBuf
->
pMeterMeta
=
taosGetDataFromCache
(
tscCacheHandle
,
dataBuf
->
meterId
);
assert
(
dataBuf
->
pMeterMeta
!=
NULL
&&
initialSize
>
0
);
return
dataBuf
;
}
STableDataBlocks
*
tscGetDataBlockFromList
(
void
*
pHashList
,
SDataBlockList
*
pDataBlockList
,
int64_t
id
,
int32_t
size
,
int32_t
startOffset
,
int32_t
rowSize
,
char
*
tableId
)
{
int32_t
startOffset
,
int32_t
rowSize
,
c
onst
c
har
*
tableId
)
{
STableDataBlocks
*
dataBuf
=
NULL
;
STableDataBlocks
**
t1
=
(
STableDataBlocks
**
)
taosGetIntHashData
(
pHashList
,
id
);
...
...
@@ -594,7 +621,7 @@ STableDataBlocks* tscGetDataBlockFromList(void* pHashList, SDataBlockList* pData
}
if
(
dataBuf
==
NULL
)
{
dataBuf
=
tscCreateDataBlock
Ex
((
size_t
)
size
,
rowSize
,
startOffset
,
tableId
);
dataBuf
=
tscCreateDataBlock
((
size_t
)
size
,
rowSize
,
startOffset
,
tableId
);
dataBuf
=
*
(
STableDataBlocks
**
)
taosAddIntHash
(
pHashList
,
id
,
(
char
*
)
&
dataBuf
);
tscAppendDataBlock
(
pDataBlockList
,
dataBuf
);
}
...
...
@@ -1138,7 +1165,8 @@ void tscColumnFilterInfoCopy(SColumnFilterInfo* dst, const SColumnFilterInfo* sr
*
dst
=
*
src
;
if
(
dst
->
filterOnBinary
)
{
size_t
len
=
(
size_t
)
dst
->
len
+
1
;
dst
->
pz
=
calloc
(
1
,
len
);
char
*
pTmp
=
calloc
(
1
,
len
);
dst
->
pz
=
(
int64_t
)
pTmp
;
memcpy
((
char
*
)
dst
->
pz
,
(
char
*
)
src
->
pz
,
(
size_t
)
len
);
}
}
...
...
@@ -1202,7 +1230,8 @@ void tscColumnBaseInfoDestroy(SColumnBaseInfo* pColumnBaseInfo) {
assert
(
pColBase
->
filterInfo
[
j
].
filterOnBinary
==
0
||
pColBase
->
filterInfo
[
j
].
filterOnBinary
==
1
);
if
(
pColBase
->
filterInfo
[
j
].
filterOnBinary
)
{
tfree
(
pColBase
->
filterInfo
[
j
].
pz
);
free
((
char
*
)
pColBase
->
filterInfo
[
j
].
pz
);
pColBase
->
filterInfo
[
j
].
pz
=
0
;
}
}
}
...
...
src/inc/taosmsg.h
浏览文件 @
68072018
...
...
@@ -279,7 +279,7 @@ typedef struct {
}
SShellSubmitMsg
;
typedef
struct
SSchema
{
char
type
;
uint8_t
type
;
char
name
[
TSDB_COL_NAME_LEN
];
short
colId
;
short
bytes
;
...
...
@@ -622,7 +622,7 @@ typedef struct {
char
repStrategy
;
char
loadLatest
;
// load into mem or not
char
precision
;
// time resolua
tion
uint8_t
precision
;
// time resolu
tion
char
reserved
[
16
];
}
SVnodeCfg
,
SCreateDbMsg
,
SDbCfg
,
SAlterDbMsg
;
...
...
src/inc/tutil.h
浏览文件 @
68072018
...
...
@@ -175,7 +175,7 @@ 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
);
bool
taosValidateEncodec
(
char
*
encodec
);
bool
taosValidateEncodec
(
c
onst
c
har
*
encodec
);
bool
taosGetVersionNumber
(
char
*
versionStr
,
int
*
versionNubmer
);
...
...
src/os/linux/inc/os.h
浏览文件 @
68072018
...
...
@@ -71,6 +71,7 @@ extern "C" {
#include <wchar.h>
#include <wordexp.h>
#include <wctype.h>
#include <inttypes.h>
#define taosCloseSocket(x) \
...
...
src/system/detail/inc/mgmtUtil.h
浏览文件 @
68072018
...
...
@@ -37,6 +37,6 @@ int32_t mgmtRetrieveMetersFromMetric(SMetricMetaMsg* pInfo, int32_t tableIndex,
int32_t
mgmtDoJoin
(
SMetricMetaMsg
*
pMetricMetaMsg
,
tQueryResultset
*
pRes
);
void
mgmtReorganizeMetersInMetricMeta
(
SMetricMetaMsg
*
pInfo
,
int32_t
index
,
tQueryResultset
*
pRes
);
bool
tSkipListNodeFilterCallback
(
struct
tSkipListNode
*
pNode
,
void
*
param
);
bool
tSkipListNodeFilterCallback
(
const
void
*
pNode
,
void
*
param
);
#endif //TBASE_MGMTUTIL_H
src/system/detail/src/mgmtSupertableQuery.c
浏览文件 @
68072018
...
...
@@ -203,7 +203,7 @@ static bool mgmtTablenameFilterCallback(tSkipListNode* pNode, void* param) {
static
void
mgmtRetrieveFromLikeOptr
(
tQueryResultset
*
pRes
,
const
char
*
str
,
STabObj
*
pMetric
)
{
SPatternCompareInfo
info
=
PATTERN_COMPARE_INFO_INITIALIZER
;
SMeterNameFilterSupporter
supporter
=
{
info
,
(
char
*
)
str
};
SMeterNameFilterSupporter
supporter
=
{
info
,
(
char
*
)
str
};
pRes
->
num
=
tSkipListIterateList
(
pMetric
->
pSkipList
,
(
tSkipListNode
***
)
&
pRes
->
pRes
,
mgmtTablenameFilterCallback
,
&
supporter
);
...
...
@@ -230,13 +230,7 @@ static void mgmtFilterByTableNameCond(tQueryResultset* pRes, char* condStr, int3
free
(
str
);
}
/*
*-Wunused-function"
*/
#if 0
static bool mgmtJoinFilterCallback(tSkipListNode* pNode, void* param) {
UNUSED_FUNC
static
bool
mgmtJoinFilterCallback
(
tSkipListNode
*
pNode
,
void
*
param
)
{
SJoinSupporter
*
pSupporter
=
(
SJoinSupporter
*
)
param
;
SSchema
s
=
{
0
};
...
...
@@ -265,7 +259,6 @@ static bool mgmtJoinFilterCallback(tSkipListNode* pNode, void* param) {
return
false
;
}
#endif
static
void
orderResult
(
SMetricMetaMsg
*
pMetricMetaMsg
,
tQueryResultset
*
pRes
,
int16_t
colIndex
,
int32_t
tableIndex
)
{
SMetricMetaElemMsg
*
pElem
=
(
SMetricMetaElemMsg
*
)((
char
*
)
pMetricMetaMsg
+
pMetricMetaMsg
->
metaElem
[
tableIndex
]);
...
...
@@ -646,7 +639,8 @@ static void getTagColumnInfo(SSyntaxTreeFilterSupporter* pSupporter, SSchema* pS
}
}
void
filterPrepare
(
tSQLBinaryExpr
*
pExpr
,
void
*
param
)
{
void
filterPrepare
(
void
*
expr
,
void
*
param
)
{
tSQLBinaryExpr
*
pExpr
=
(
tSQLBinaryExpr
*
)
expr
;
if
(
pExpr
->
info
!=
NULL
)
{
return
;
}
...
...
@@ -800,9 +794,10 @@ static char* getTagValueFromMeter(STabObj* pMeter, int32_t offset, void* param)
}
}
bool
tSkipListNodeFilterCallback
(
tSkipListNode
*
pNode
,
void
*
param
)
{
bool
tSkipListNodeFilterCallback
(
const
void
*
pNode
,
void
*
param
)
{
tQueryInfo
*
pInfo
=
(
tQueryInfo
*
)
param
;
STabObj
*
pMeter
=
(
STabObj
*
)
pNode
->
pData
;
STabObj
*
pMeter
=
(
STabObj
*
)
(((
tSkipListNode
*
)
pNode
)
->
pData
)
;
char
name
[
TSDB_METER_NAME_LEN
+
1
]
=
{
0
};
char
*
val
=
getTagValueFromMeter
(
pMeter
,
pInfo
->
offset
,
name
);
...
...
src/system/detail/src/vnodeQueryProcess.c
浏览文件 @
68072018
...
...
@@ -1213,8 +1213,8 @@ void vnodeSingleMeterQuery(SSchedMsg *pMsg) {
dTrace
(
"QInfo:%p reset signature"
,
pQInfo
);
TSDB_QINFO_RESET_SIG
(
pQInfo
);
sem_post
(
&
pQInfo
->
dataReady
);
TSDB_QINFO_RESET_SIG
(
pQInfo
);
return
;
}
...
...
@@ -1235,8 +1235,8 @@ void vnodeSingleMeterQuery(SSchedMsg *pMsg) {
dTrace
(
"QInfo:%p reset signature"
,
pQInfo
);
TSDB_QINFO_RESET_SIG
(
pQInfo
);
sem_post
(
&
pQInfo
->
dataReady
);
TSDB_QINFO_RESET_SIG
(
pQInfo
);
return
;
}
}
...
...
@@ -1247,8 +1247,8 @@ void vnodeSingleMeterQuery(SSchedMsg *pMsg) {
pMeterObj
->
vnode
,
pMeterObj
->
sid
,
pMeterObj
->
meterId
,
pQInfo
->
pointsRead
);
vnodePrintQueryStatistics
(
pQInfo
->
pMeterQuerySupporter
);
TSDB_QINFO_RESET_SIG
(
pQInfo
);
sem_post
(
&
pQInfo
->
dataReady
);
TSDB_QINFO_RESET_SIG
(
pQInfo
);
return
;
}
...
...
@@ -1284,8 +1284,8 @@ void vnodeSingleMeterQuery(SSchedMsg *pMsg) {
pQInfo
,
pMeterObj
->
vnode
,
pMeterObj
->
sid
,
pMeterObj
->
meterId
,
pQuery
->
pointsRead
);
}
TSDB_QINFO_RESET_SIG
(
pQInfo
);
sem_post
(
&
pQInfo
->
dataReady
);
TSDB_QINFO_RESET_SIG
(
pQInfo
);
}
void
vnodeMultiMeterQuery
(
SSchedMsg
*
pMsg
)
{
...
...
@@ -1335,6 +1335,6 @@ void vnodeMultiMeterQuery(SSchedMsg *pMsg) {
vnodePrintQueryStatistics
(
pSupporter
);
}
TSDB_QINFO_RESET_SIG
(
pQInfo
);
sem_post
(
&
pQInfo
->
dataReady
);
TSDB_QINFO_RESET_SIG
(
pQInfo
);
}
src/system/detail/src/vnodeShell.c
浏览文件 @
68072018
...
...
@@ -472,7 +472,7 @@ void vnodeExecuteRetrieveReq(SSchedMsg *pSched) {
if
(
numOfRows
==
0
&&
(
pRetrieve
->
qhandle
==
(
uint64_t
)
pObj
->
qhandle
)
&&
(
code
!=
TSDB_CODE_ACTION_IN_PROGRESS
))
{
dTrace
(
"QInfo:%p %s free qhandle code:%d"
,
pObj
->
qhandle
,
__FUNCTION__
,
code
);
vnodeFreeQInfo
InQueue
(
pObj
->
qhandl
e
);
vnodeFreeQInfo
(
pObj
->
qhandle
,
tru
e
);
pObj
->
qhandle
=
NULL
;
}
...
...
@@ -480,8 +480,6 @@ void vnodeExecuteRetrieveReq(SSchedMsg *pSched) {
_exit:
free
(
pSched
->
msg
);
return
;
}
int
vnodeProcessRetrieveRequest
(
char
*
pMsg
,
int
msgLen
,
SShellObj
*
pObj
)
{
...
...
src/util/src/textbuffer.c
浏览文件 @
68072018
...
...
@@ -12,7 +12,6 @@
* 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 <inttypes.h>
#include "os.h"
#include "taos.h"
#include "taosmsg.h"
...
...
src/util/src/thistogram.c
浏览文件 @
68072018
...
...
@@ -12,7 +12,6 @@
* 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 <inttypes.h>
#include "os.h"
#include "taosmsg.h"
...
...
src/util/src/tskiplist.c
浏览文件 @
68072018
...
...
@@ -12,11 +12,7 @@
* 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 <inttypes.h>
#include <float.h>
#include <math.h>
#include <stdbool.h>
#include <stdlib.h>
#include "os.h"
#include "tlog.h"
#include "tsdb.h"
...
...
src/util/src/tstrbuild.c
浏览文件 @
68072018
...
...
@@ -12,7 +12,6 @@
* 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 <inttypes.h>
#include "os.h"
#include "tstrbuild.h"
...
...
src/util/src/ttimer.c
浏览文件 @
68072018
...
...
@@ -14,7 +14,6 @@
*/
#include "os.h"
#include <inttypes.h>
#include "tlog.h"
#include "tsched.h"
#include "ttime.h"
...
...
src/util/src/ttokenizer.c
浏览文件 @
68072018
...
...
@@ -510,7 +510,7 @@ uint32_t tSQLGetToken(char* z, uint32_t* tokenType) {
if
((
z
[
i
]
==
'a'
||
z
[
i
]
==
's'
||
z
[
i
]
==
'm'
||
z
[
i
]
==
'h'
||
z
[
i
]
==
'd'
||
z
[
i
]
==
'n'
||
z
[
i
]
==
'y'
||
z
[
i
]
==
'w'
||
z
[
i
]
==
'A'
||
z
[
i
]
==
'S'
||
z
[
i
]
==
'M'
||
z
[
i
]
==
'H'
||
z
[
i
]
==
'D'
||
z
[
i
]
==
'N'
||
z
[
i
]
==
'Y'
||
z
[
i
]
==
'W'
)
&&
(
isIdChar
[(
int
)(
z
[
i
+
1
])
]
==
0
))
{
(
isIdChar
[(
uint8_t
)
z
[
i
+
1
]
]
==
0
))
{
*
tokenType
=
TK_VARIABLE
;
i
+=
1
;
return
i
;
...
...
@@ -551,7 +551,7 @@ uint32_t tSQLGetToken(char* z, uint32_t* tokenType) {
case
't'
:
case
'F'
:
case
'f'
:
{
for
(
i
=
1
;
((
z
[
i
]
&
0x80
)
==
0
)
&&
isIdChar
[(
int
)(
z
[
i
])
];
i
++
)
{
for
(
i
=
1
;
((
z
[
i
]
&
0x80
)
==
0
)
&&
isIdChar
[(
uint8_t
)
z
[
i
]
];
i
++
)
{
}
if
((
i
==
4
&&
strncasecmp
(
z
,
"true"
,
4
)
==
0
)
||
(
i
==
5
&&
strncasecmp
(
z
,
"false"
,
5
)
==
0
))
{
...
...
@@ -560,10 +560,10 @@ uint32_t tSQLGetToken(char* z, uint32_t* tokenType) {
}
}
default:
{
if
(((
*
z
&
0x80
)
!=
0
)
||
!
isIdChar
[(
int
)(
*
z
)
])
{
if
(((
*
z
&
0x80
)
!=
0
)
||
!
isIdChar
[(
uint8_t
)
*
z
])
{
break
;
}
for
(
i
=
1
;
((
z
[
i
]
&
0x80
)
==
0
)
&&
isIdChar
[(
int
)(
z
[
i
])
];
i
++
)
{
for
(
i
=
1
;
((
z
[
i
]
&
0x80
)
==
0
)
&&
isIdChar
[(
uint8_t
)
z
[
i
]
];
i
++
)
{
}
*
tokenType
=
tSQLKeywordCode
(
z
,
i
);
return
i
;
...
...
src/util/src/ttypes.c
浏览文件 @
68072018
...
...
@@ -12,7 +12,6 @@
* 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 <inttypes.h>
#include "os.h"
#include "taos.h"
#include "tsdb.h"
...
...
src/util/src/tutil.c
浏览文件 @
68072018
...
...
@@ -443,7 +443,7 @@ bool taosMbsToUcs4(char *mbs, int32_t mbs_len, char *ucs4, int32_t ucs4_max_len)
#endif
}
bool
taosValidateEncodec
(
char
*
encodec
)
{
bool
taosValidateEncodec
(
c
onst
c
har
*
encodec
)
{
#ifdef USE_LIBICONV
iconv_t
cd
=
iconv_open
(
encodec
,
DEFAULT_UNICODE_ENCODEC
);
if
(
cd
==
(
iconv_t
)(
-
1
))
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录