Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
6375ee78
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看板
提交
6375ee78
编写于
6月 17, 2021
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
差异文件
[td-225]merge from master
上级
50626046
3a740a58
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
107 addition
and
77 deletion
+107
-77
src/balance/src/bnMain.c
src/balance/src/bnMain.c
+1
-0
src/client/src/tscPrepare.c
src/client/src/tscPrepare.c
+5
-5
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+56
-56
src/client/src/tscSub.c
src/client/src/tscSub.c
+15
-9
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+4
-4
src/connector/jdbc/CMakeLists.txt
src/connector/jdbc/CMakeLists.txt
+1
-1
src/dnode/inc/dnodeCfg.h
src/dnode/inc/dnodeCfg.h
+1
-0
src/dnode/src/dnodeCfg.c
src/dnode/src/dnodeCfg.c
+22
-0
src/dnode/src/dnodeVnodes.c
src/dnode/src/dnodeVnodes.c
+1
-0
src/query/inc/qTableMeta.h
src/query/inc/qTableMeta.h
+0
-1
src/query/inc/sql.y
src/query/inc/sql.y
+1
-1
未找到文件。
src/balance/src/bnMain.c
浏览文件 @
6375ee78
...
...
@@ -367,6 +367,7 @@ static bool bnMonitorBalance() {
for
(
int32_t
dest
=
0
;
dest
<
src
;
dest
++
)
{
SDnodeObj
*
pDestDnode
=
tsBnDnodes
.
list
[
dest
];
if
(
bnCheckDnodeInVgroup
(
pDestDnode
,
pVgroup
))
continue
;
if
(
taosGetTimestampMs
()
-
pDestDnode
->
createdTime
<
2000
)
continue
;
float
destScore
=
bnTryCalcDnodeScore
(
pDestDnode
,
1
);
if
(
srcScore
+
0
.
0001
<
destScore
)
continue
;
...
...
src/client/src/tscPrepare.c
浏览文件 @
6375ee78
...
...
@@ -906,7 +906,7 @@ static int insertStmtBindParam(STscStmt* stmt, TAOS_BIND* bind) {
int
code
=
doBindParam
(
pBlock
,
data
,
param
,
&
bind
[
param
->
idx
],
1
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
tscDebug
(
"0x%"
PRIx64
" bind column %d: type mismatch or invalid"
,
pStmt
->
pSql
->
self
,
param
->
idx
);
tscDebug
(
"0x%"
PRIx64
" bind column %d: type mismatch or invalid"
,
pStmt
->
pSql
->
self
,
param
->
idx
);
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
&
stmt
->
pSql
->
cmd
),
"bind column type mismatch or invalid"
);
}
}
...
...
@@ -1256,7 +1256,7 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
return
TSDB_CODE_SUCCESS
;
}
if
(
sToken
.
n
<=
0
||
sToken
.
type
!=
TK_USING
)
{
if
(
sToken
.
n
<=
0
||
sToken
.
type
!=
TK_USING
)
{
tscError
(
"keywords USING is expected, sql:%s"
,
pCmd
->
insertParam
.
sql
);
return
tscSQLSyntaxErrMsg
(
pCmd
->
payload
,
"keywords USING is expected"
,
sToken
.
z
?
sToken
.
z
:
pCmd
->
insertParam
.
sql
);
}
...
...
@@ -1403,7 +1403,7 @@ int stmtGenInsertStatement(SSqlObj* pSql, STscStmt* pStmt, const char* name, TAO
}
else
{
tfree
(
pSql
->
sqlstr
);
}
pSql
->
sqlstr
=
str
;
return
TSDB_CODE_SUCCESS
;
...
...
@@ -1415,7 +1415,7 @@ int stmtGenInsertStatement(SSqlObj* pSql, STscStmt* pStmt, const char* name, TAO
TAOS_STMT
*
taos_stmt_init
(
TAOS
*
taos
)
{
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
STscStmt
*
pStmt
=
NULL
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
terrno
=
TSDB_CODE_TSC_DISCONNECTED
;
tscError
(
"connection disconnected"
);
...
...
@@ -1469,7 +1469,7 @@ int taos_stmt_prepare(TAOS_STMT* stmt, const char* sql, unsigned long length) {
tscError
(
"sql is NULL"
);
STMT_RET
(
invalidOperationMsg
(
tscGetErrorMsgPayload
(
&
pStmt
->
pSql
->
cmd
),
"sql is NULL"
));
}
if
(
pStmt
->
last
!=
STMT_INIT
)
{
tscError
(
"prepare status error, last:%d"
,
pStmt
->
last
);
STMT_RET
(
invalidOperationMsg
(
tscGetErrorMsgPayload
(
&
pStmt
->
pSql
->
cmd
),
"prepare status error"
));
...
...
src/client/src/tscSQLParser.c
浏览文件 @
6375ee78
...
...
@@ -147,57 +147,57 @@ int16_t getNewResColId(SSqlCmd* pCmd) {
return
pCmd
->
resColumnId
--
;
}
// serialize expr in exprlist to binary
// serialize expr in exprlist to binary
// formate "type | size | value"
bool
serializeExprListToVariant
(
SArray
*
pList
,
tVariant
**
dst
,
int16_t
colType
)
{
bool
ret
=
false
;
if
(
!
pList
||
pList
->
size
<=
0
||
colType
<
0
)
{
return
ret
;
}
tSqlExprItem
*
item
=
(
tSqlExprItem
*
)
taosArrayGet
(
pList
,
0
);
int32_t
firstTokenType
=
item
->
pNode
->
token
.
type
;
}
tSqlExprItem
*
item
=
(
tSqlExprItem
*
)
taosArrayGet
(
pList
,
0
);
int32_t
firstTokenType
=
item
->
pNode
->
token
.
type
;
int32_t
type
=
firstTokenType
;
//nchar to binary and
toTSDBType
(
type
);
//nchar to binary and
toTSDBType
(
type
);
if
(
type
!=
colType
&&
(
type
!=
TSDB_DATA_TYPE_BINARY
||
colType
!=
TSDB_DATA_TYPE_NCHAR
))
{
return
false
;
}
type
=
colType
;
return
false
;
}
type
=
colType
;
SBufferWriter
bw
=
tbufInitWriter
(
NULL
,
false
);
tbufEnsureCapacity
(
&
bw
,
512
);
int32_t
size
=
(
int32_t
)(
pList
->
size
);
tbufWriteUint32
(
&
bw
,
type
);
tbufWriteUint32
(
&
bw
,
type
);
tbufWriteInt32
(
&
bw
,
size
);
for
(
int32_t
i
=
0
;
i
<
size
;
i
++
)
{
tSqlExpr
*
pSub
=
((
tSqlExprItem
*
)(
taosArrayGet
(
pList
,
i
)))
->
pNode
;
// check all the token type in expr list same or not
if
(
firstTokenType
!=
pSub
->
token
.
type
)
{
break
;
}
}
toTSDBType
(
pSub
->
token
.
type
);
toTSDBType
(
pSub
->
token
.
type
);
tVariant
var
;
tVariantCreate
(
&
var
,
&
pSub
->
token
);
if
(
type
==
TSDB_DATA_TYPE_BOOL
||
type
==
TSDB_DATA_TYPE_TINYINT
||
type
==
TSDB_DATA_TYPE_SMALLINT
tVariant
var
;
tVariantCreate
(
&
var
,
&
pSub
->
token
);
if
(
type
==
TSDB_DATA_TYPE_BOOL
||
type
==
TSDB_DATA_TYPE_TINYINT
||
type
==
TSDB_DATA_TYPE_SMALLINT
||
type
==
TSDB_DATA_TYPE_BIGINT
||
type
==
TSDB_DATA_TYPE_INT
)
{
tbufWriteInt64
(
&
bw
,
var
.
i64
);
tbufWriteInt64
(
&
bw
,
var
.
i64
);
}
else
if
(
type
==
TSDB_DATA_TYPE_DOUBLE
||
type
==
TSDB_DATA_TYPE_FLOAT
)
{
tbufWriteDouble
(
&
bw
,
var
.
dKey
);
}
else
if
(
type
==
TSDB_DATA_TYPE_BINARY
){
tbufWriteBinary
(
&
bw
,
var
.
pz
,
var
.
nLen
);
}
else
if
(
type
==
TSDB_DATA_TYPE_NCHAR
)
{
char
*
buf
=
(
char
*
)
calloc
(
1
,
(
var
.
nLen
+
1
)
*
TSDB_NCHAR_SIZE
);
char
*
buf
=
(
char
*
)
calloc
(
1
,
(
var
.
nLen
+
1
)
*
TSDB_NCHAR_SIZE
);
if
(
tVariantDump
(
&
var
,
buf
,
type
,
false
)
!=
TSDB_CODE_SUCCESS
)
{
free
(
buf
);
tVariantDestroy
(
&
var
);
break
;
break
;
}
tbufWriteBinary
(
&
bw
,
buf
,
twcslen
((
wchar_t
*
)
buf
)
*
TSDB_NCHAR_SIZE
);
free
(
buf
);
...
...
@@ -209,21 +209,21 @@ bool serializeExprListToVariant(SArray* pList, tVariant **dst, int16_t colType)
if
(
ret
==
true
)
{
if
((
*
dst
=
calloc
(
1
,
sizeof
(
tVariant
)))
!=
NULL
)
{
tVariantCreateFromBinary
(
*
dst
,
tbufGetData
(
&
bw
,
false
),
tbufTell
(
&
bw
),
TSDB_DATA_TYPE_BINARY
);
tVariantCreateFromBinary
(
*
dst
,
tbufGetData
(
&
bw
,
false
),
tbufTell
(
&
bw
),
TSDB_DATA_TYPE_BINARY
);
}
else
{
ret
=
false
;
}
}
tbufCloseWriter
(
&
bw
);
tbufCloseWriter
(
&
bw
);
return
ret
;
}
static
int32_t
validateParamOfRelationIn
(
tVariant
*
pVar
,
int32_t
colType
)
{
if
(
pVar
->
nType
!=
TSDB_DATA_TYPE_BINARY
)
{
return
-
1
;
return
-
1
;
}
SBufferReader
br
=
tbufInitReader
(
pVar
->
pz
,
pVar
->
nLen
,
false
);
return
colType
==
TSDB_DATA_TYPE_NCHAR
?
0
:
(
tbufReadUint32
(
&
br
)
==
colType
?
0
:
-
1
);
SBufferReader
br
=
tbufInitReader
(
pVar
->
pz
,
pVar
->
nLen
,
false
);
return
colType
==
TSDB_DATA_TYPE_NCHAR
?
0
:
(
tbufReadUint32
(
&
br
)
==
colType
?
0
:
-
1
);
}
static
uint8_t
convertOptr
(
SStrToken
*
pToken
)
{
...
...
@@ -507,7 +507,7 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
break
;
}
case
TSDB_SQL_CREATE_DNODE
:
{
const
char
*
msg
=
"invalid host name (ip address)"
;
...
...
@@ -803,12 +803,12 @@ int32_t tscValidateSqlInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
break
;
}
case
TSDB_SQL_COMPACT_VNODE
:{
case
TSDB_SQL_COMPACT_VNODE
:{
const
char
*
msg
=
"invalid compact"
;
if
(
setCompactVnodeInfo
(
pSql
,
pInfo
)
!=
TSDB_CODE_SUCCESS
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
);
}
break
;
}
break
;
}
default:
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
"not support sql expression"
);
...
...
@@ -961,15 +961,15 @@ static int32_t validateStateWindowNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SS
SStrToken
*
col
=
&
(
pSqlNode
->
windowstateVal
.
col
)
;
if
(
col
->
z
==
NULL
||
col
->
n
<=
0
)
{
return
TSDB_CODE_SUCCESS
;
}
return
TSDB_CODE_SUCCESS
;
}
if
(
pQueryInfo
->
colList
==
NULL
)
{
pQueryInfo
->
colList
=
taosArrayInit
(
4
,
POINTER_BYTES
);
}
if
(
pQueryInfo
->
groupbyExpr
.
numOfGroupCols
>
0
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg3
);
}
}
pQueryInfo
->
groupbyExpr
.
numOfGroupCols
=
1
;
//TODO(dengyihao): check tag column
...
...
@@ -980,7 +980,7 @@ static int32_t validateStateWindowNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SS
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
if
(
getColumnIndexByName
(
pCmd
,
col
,
pQueryInfo
,
&
index
)
!=
TSDB_CODE_SUCCESS
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
}
}
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
index
.
tableIndex
);
STableMeta
*
pTableMeta
=
pTableMetaInfo
->
pTableMeta
;
...
...
@@ -993,7 +993,7 @@ static int32_t validateStateWindowNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SS
if
(
pGroupExpr
->
columnInfo
==
NULL
)
{
pGroupExpr
->
columnInfo
=
taosArrayInit
(
4
,
sizeof
(
SColIndex
));
}
SSchema
*
pSchema
=
tscGetTableColumnSchema
(
pTableMeta
,
index
.
columnIndex
);
if
(
pSchema
->
type
==
TSDB_DATA_TYPE_TIMESTAMP
||
pSchema
->
type
==
TSDB_DATA_TYPE_FLOAT
||
pSchema
->
type
==
TSDB_DATA_TYPE_DOUBLE
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
...
...
@@ -1045,7 +1045,7 @@ int32_t validateSessionNode(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SSqlNode * pS
}
if
(
index
.
columnIndex
!=
PRIMARYKEY_TIMESTAMP_COL_INDEX
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg3
);
}
}
pQueryInfo
->
sessionWindow
.
primaryColId
=
PRIMARYKEY_TIMESTAMP_COL_INDEX
;
...
...
@@ -2337,7 +2337,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
tickPerSec
/=
1000000
;
}
else
if
(
info
.
precision
==
TSDB_TIME_PRECISION_MICRO
)
{
tickPerSec
/=
1000
;
}
}
if
(
tickPerSec
<=
0
||
tickPerSec
<
TSDB_TICK_PER_SECOND
(
info
.
precision
))
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg10
);
...
...
@@ -2974,7 +2974,7 @@ int32_t setKillInfo(SSqlObj* pSql, struct SSqlInfo* pInfo, int32_t killType) {
static
int32_t
setCompactVnodeInfo
(
SSqlObj
*
pSql
,
struct
SSqlInfo
*
pInfo
)
{
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
pCmd
->
command
=
pInfo
->
type
;
return
TSDB_CODE_SUCCESS
;
}
bool
validateIpAddress
(
const
char
*
ip
,
size_t
size
)
{
...
...
@@ -3094,7 +3094,7 @@ bool hasUnsupportFunctionsForSTableQuery(SSqlCmd* pCmd, SQueryInfo* pQueryInfo)
}
}
else
if
(
tscIsSessionWindowQuery
(
pQueryInfo
))
{
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg3
);
return
true
;
return
true
;
}
return
false
;
...
...
@@ -3336,24 +3336,24 @@ static int32_t doExtractColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo,
// TK_GT,TK_GE,TK_EQ,TK_NE are based on the pColumn->lowerBndd
}
else
if
(
pExpr
->
tokenId
==
TK_IN
)
{
tVariant
*
pVal
;
tVariant
*
pVal
;
if
(
pRight
->
tokenId
!=
TK_SET
||
!
serializeExprListToVariant
(
pRight
->
pParam
,
&
pVal
,
colType
)
||
colType
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
);
}
}
if
(
validateParamOfRelationIn
(
pVal
,
colType
)
!=
TSDB_CODE_SUCCESS
)
{
tVariantDestroy
(
pVal
);
tVariantDestroy
(
pVal
);
free
(
pVal
);
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
);
}
pColumnFilter
->
pz
=
(
int64_t
)
calloc
(
1
,
pVal
->
nLen
+
1
);
pColumnFilter
->
len
=
pVal
->
nLen
;
pColumnFilter
->
filterstr
=
1
;
memcpy
((
char
*
)(
pColumnFilter
->
pz
),
(
char
*
)(
pVal
->
pz
),
pVal
->
nLen
);
memcpy
((
char
*
)(
pColumnFilter
->
pz
),
(
char
*
)(
pVal
->
pz
),
pVal
->
nLen
);
//retVal = tVariantDump(pVal, (char *)(pColumnFilter->pz), TSDB_DATA_TYPE_BINARY, false);
tVariantDestroy
(
pVal
);
tVariantDestroy
(
pVal
);
free
(
pVal
);
}
else
if
(
colType
==
TSDB_DATA_TYPE_BINARY
)
{
pColumnFilter
->
pz
=
(
int64_t
)
calloc
(
1
,
bufLen
*
TSDB_NCHAR_SIZE
);
pColumnFilter
->
len
=
pRight
->
value
.
nLen
;
...
...
@@ -4880,7 +4880,7 @@ int32_t getTimeRange(STimeWindow* win, tSqlExpr* pRight, int32_t optr, int16_t t
if
(
pRight
->
flags
&
(
1
<<
EXPR_FLAG_NS_TIMESTAMP
))
{
pRight
->
value
.
i64
=
convertTimePrecision
(
pRight
->
value
.
i64
,
TSDB_TIME_PRECISION_NANO
,
timePrecision
);
}
tVariantDump
(
&
pRight
->
value
,
(
char
*
)
&
val
,
TSDB_DATA_TYPE_BIGINT
,
true
);
}
...
...
@@ -5538,7 +5538,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if
(
pItem
->
type
!=
TSDB_DATA_TYPE_BINARY
&&
pItem
->
type
!=
TSDB_DATA_TYPE_NCHAR
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg21
);
}
SColumnIndex
columnIndex
=
COLUMN_INDEX_INITIALIZER
;
SStrToken
name
=
{.
type
=
TK_STRING
,
.
z
=
pItem
->
name
,
.
n
=
(
uint32_t
)
strlen
(
pItem
->
name
)};
if
(
getColumnIndexByName
(
pCmd
,
&
name
,
pQueryInfo
,
&
columnIndex
)
!=
TSDB_CODE_SUCCESS
)
{
...
...
@@ -5559,11 +5559,11 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
(
pItem
->
type
==
TSDB_DATA_TYPE_NCHAR
&&
(
pItem
->
bytes
<=
0
||
pItem
->
bytes
>
TSDB_MAX_NCHAR_LEN
)))
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg24
);
}
if
(
pItem
->
bytes
<=
pColSchema
->
bytes
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg22
);
}
TAOS_FIELD
f
=
tscCreateField
(
pColSchema
->
type
,
name
.
z
,
pItem
->
bytes
);
tscFieldInfoAppend
(
&
pQueryInfo
->
fieldsInfo
,
&
f
);
}
else
if
(
pAlterSQL
->
type
==
TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN
)
{
...
...
@@ -5575,7 +5575,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if
(
pItem
->
type
!=
TSDB_DATA_TYPE_BINARY
&&
pItem
->
type
!=
TSDB_DATA_TYPE_NCHAR
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg21
);
}
SColumnIndex
columnIndex
=
COLUMN_INDEX_INITIALIZER
;
SStrToken
name
=
{.
type
=
TK_STRING
,
.
z
=
pItem
->
name
,
.
n
=
(
uint32_t
)
strlen
(
pItem
->
name
)};
if
(
getColumnIndexByName
(
pCmd
,
&
name
,
pQueryInfo
,
&
columnIndex
)
!=
TSDB_CODE_SUCCESS
)
{
...
...
@@ -5600,11 +5600,11 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
(
pItem
->
type
==
TSDB_DATA_TYPE_NCHAR
&&
(
pItem
->
bytes
<=
0
||
pItem
->
bytes
>
TSDB_MAX_NCHAR_LEN
)))
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg24
);
}
if
(
pItem
->
bytes
<=
pColSchema
->
bytes
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg22
);
}
TAOS_FIELD
f
=
tscCreateField
(
pColSchema
->
type
,
name
.
z
,
pItem
->
bytes
);
tscFieldInfoAppend
(
&
pQueryInfo
->
fieldsInfo
,
&
f
);
}
...
...
@@ -5970,7 +5970,7 @@ static int32_t setKeepOption(SSqlCmd* pCmd, SCreateDbMsg* pMsg, SCreateDbInfo* p
tVariantListItem
*
p0
=
taosArrayGet
(
pKeep
,
0
);
tVariantListItem
*
p1
=
(
s
>
1
)
?
taosArrayGet
(
pKeep
,
1
)
:
p0
;
tVariantListItem
*
p2
=
(
s
>
2
)
?
taosArrayGet
(
pKeep
,
2
)
:
p1
;
if
((
int32_t
)
p0
->
pVar
.
i64
<=
0
||
(
int32_t
)
p1
->
pVar
.
i64
<=
0
||
(
int32_t
)
p2
->
pVar
.
i64
<=
0
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
}
...
...
@@ -7064,7 +7064,7 @@ int32_t doCheckForStream(SSqlObj* pSql, SSqlInfo* pInfo) {
}
else
{
if
(
pQueryInfo
->
interval
.
interval
==
0
)
{
return
invalidOperationMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg7
);
}
}
}
// set the created table[stream] name
...
...
@@ -7880,7 +7880,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
// parse the window_state
// parse the window_state
if
(
validateStateWindowNode
(
pCmd
,
pQueryInfo
,
pSqlNode
,
isSTable
)
!=
TSDB_CODE_SUCCESS
)
{
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
...
...
@@ -8095,7 +8095,7 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
SColIndex
*
idx
=
taosArrayGet
(
pCols
,
0
);
SSchema
*
pSchema
=
tscGetTableColumnSchema
(
pTableMeta
,
idx
->
colIndex
);
if
(
pSchema
!=
NULL
)
{
colType
=
pSchema
->
type
;
colType
=
pSchema
->
type
;
}
}
...
...
src/client/src/tscSub.c
浏览文件 @
6375ee78
...
...
@@ -283,6 +283,7 @@ static int tscUpdateSubscription(STscObj* pObj, SSub* pSub) {
SArray
*
tables
=
getTableList
(
pSql
);
if
(
tables
==
NULL
)
{
pSub
->
lastSyncTime
=
0
;
//force to get table list next time
return
0
;
}
size_t
numOfTables
=
taosArrayGetSize
(
tables
);
...
...
@@ -489,7 +490,15 @@ TAOS_RES *taos_consume(TAOS_SUB *tsub) {
SSub
*
pSub
=
(
SSub
*
)
tsub
;
if
(
pSub
==
NULL
)
return
NULL
;
if
(
pSub
->
pSql
->
cmd
.
command
==
TSDB_SQL_RETRIEVE_EMPTY_RESULT
)
{
if
(
pSub
->
pTimer
==
NULL
)
{
int64_t
duration
=
taosGetTimestampMs
()
-
pSub
->
lastConsumeTime
;
if
(
duration
<
(
int64_t
)(
pSub
->
interval
))
{
tscDebug
(
"subscription consume too frequently, blocking..."
);
taosMsleep
(
pSub
->
interval
-
(
int32_t
)
duration
);
}
}
if
(
pSub
->
pSql
->
cmd
.
command
==
TSDB_SQL_RETRIEVE_EMPTY_RESULT
)
{
//may reach here when retireve stable vgroup failed
SSqlObj
*
pSql
=
recreateSqlObj
(
pSub
);
if
(
pSql
==
NULL
)
{
return
NULL
;
...
...
@@ -503,6 +512,11 @@ TAOS_RES *taos_consume(TAOS_SUB *tsub) {
pSub
->
pSql
=
pSql
;
pSql
->
pSubscription
=
pSub
;
// no table list now, force to update it
tscDebug
(
"begin table synchronization"
);
if
(
!
tscUpdateSubscription
(
pSub
->
taos
,
pSub
))
return
NULL
;
tscDebug
(
"table synchronization completed"
);
}
tscSaveSubscriptionProgress
(
pSub
);
...
...
@@ -527,14 +541,6 @@ TAOS_RES *taos_consume(TAOS_SUB *tsub) {
tscDebug
(
"subscribe:%s set next round subscribe skey:%"
PRId64
,
pSub
->
topic
,
pQueryInfo
->
window
.
skey
);
}
if
(
pSub
->
pTimer
==
NULL
)
{
int64_t
duration
=
taosGetTimestampMs
()
-
pSub
->
lastConsumeTime
;
if
(
duration
<
(
int64_t
)(
pSub
->
interval
))
{
tscDebug
(
"subscription consume too frequently, blocking..."
);
taosMsleep
(
pSub
->
interval
-
(
int32_t
)
duration
);
}
}
size_t
size
=
taosArrayGetSize
(
pSub
->
progress
)
*
sizeof
(
STableIdInfo
);
size
+=
sizeof
(
SQueryTableMsg
)
+
4096
;
int
code
=
tscAllocPayload
(
&
pSql
->
cmd
,
(
int
)
size
);
...
...
src/client/src/tscSubquery.c
浏览文件 @
6375ee78
...
...
@@ -109,7 +109,7 @@ bool subAndCheckDone(SSqlObj *pSql, SSqlObj *pParentSql, int idx) {
// pthread_mutex_unlock(&subState->mutex);
// return false;
// }
tscDebug
(
"0x%"
PRIx64
" subquery:0x%"
PRIx64
", index:%d state set to 1"
,
pParentSql
->
self
,
pSql
->
self
,
idx
);
subState
->
states
[
idx
]
=
1
;
...
...
@@ -622,7 +622,7 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) {
int16_t
colId
=
tscGetJoinTagColIdByUid
(
&
pQueryInfo
->
tagCond
,
pTableMetaInfo
->
pTableMeta
->
id
.
uid
);
// set the tag column id for executor to extract correct tag value
#ifndef _TD_NINGSI_60
#ifndef _TD_NINGSI_60
pExpr
->
base
.
param
[
0
]
=
(
tVariant
)
{.
i64
=
colId
,
.
nType
=
TSDB_DATA_TYPE_BIGINT
,
.
nLen
=
sizeof
(
int64_t
)};
#else
pExpr
->
base
.
param
[
0
].
i64
=
colId
;
...
...
@@ -1843,7 +1843,7 @@ int32_t tscCreateJoinSubquery(SSqlObj *pSql, int16_t tableIndex, SJoinSupporter
// refactor as one method
SQueryInfo
*
pNewQueryInfo
=
tscGetQueryInfo
(
&
pNew
->
cmd
);
assert
(
pNewQueryInfo
!=
NULL
);
pSupporter
->
colList
=
pNewQueryInfo
->
colList
;
pNewQueryInfo
->
colList
=
NULL
;
...
...
@@ -3158,7 +3158,7 @@ int32_t tscHandleMultivnodeInsert(SSqlObj *pSql) {
pRes
->
code
=
TSDB_CODE_TSC_APP_ERROR
;
return
pRes
->
code
;
}
for
(
int32_t
i
=
0
;
i
<
pSql
->
subState
.
numOfSub
;
++
i
)
{
SSqlObj
*
pSub
=
pSql
->
pSubs
[
i
];
SInsertSupporter
*
pSup
=
calloc
(
1
,
sizeof
(
SInsertSupporter
));
...
...
src/connector/jdbc/CMakeLists.txt
浏览文件 @
6375ee78
...
...
@@ -12,4 +12,4 @@ IF (TD_MVN_INSTALLED)
COMMAND mvn -Dmaven.test.skip=true clean -f
${
CMAKE_CURRENT_SOURCE_DIR
}
/pom.xml
COMMENT
"build jdbc driver"
)
ADD_CUSTOM_TARGET
(
${
JDBC_TARGET_NAME
}
ALL WORKING_DIRECTORY
${
EXECUTABLE_OUTPUT_PATH
}
DEPENDS
${
JDBC_CMD_NAME
}
)
ENDIF
()
ENDIF
()
\ No newline at end of file
src/dnode/inc/dnodeCfg.h
浏览文件 @
6375ee78
...
...
@@ -27,6 +27,7 @@ void dnodeUpdateCfg(SDnodeCfg *cfg);
int32_t
dnodeGetDnodeId
();
void
dnodeGetClusterId
(
char
*
clusterId
);
void
dnodeGetCfg
(
int32_t
*
dnodeId
,
char
*
clusterId
);
void
dnodeSetDropped
();
#ifdef __cplusplus
}
...
...
src/dnode/src/dnodeCfg.c
浏览文件 @
6375ee78
...
...
@@ -21,6 +21,7 @@
static
SDnodeCfg
tsCfg
=
{
0
};
static
pthread_mutex_t
tsCfgMutex
;
static
int32_t
tsDnodeDropped
;
static
int32_t
dnodeReadCfg
();
static
int32_t
dnodeWriteCfg
();
...
...
@@ -34,6 +35,10 @@ int32_t dnodeInitCfg() {
if
(
ret
==
0
)
{
dInfo
(
"dnode cfg is initialized"
);
}
if
(
tsDnodeDropped
)
{
dInfo
(
"dnode is dropped, exiting"
);
return
-
1
;
}
return
ret
;
}
...
...
@@ -44,6 +49,14 @@ void dnodeUpdateCfg(SDnodeCfg *cfg) {
dnodeResetCfg
(
cfg
);
}
void
dnodeSetDropped
()
{
pthread_mutex_lock
(
&
tsCfgMutex
);
tsDnodeDropped
=
1
;
dnodeWriteCfg
();
pthread_mutex_unlock
(
&
tsCfgMutex
);
}
int32_t
dnodeGetDnodeId
()
{
int32_t
dnodeId
=
0
;
pthread_mutex_lock
(
&
tsCfgMutex
);
...
...
@@ -119,6 +132,14 @@ static int32_t dnodeReadCfg() {
}
cfg
.
dnodeId
=
(
int32_t
)
dnodeId
->
valueint
;
cJSON
*
dnodeDropped
=
cJSON_GetObjectItem
(
root
,
"dnodeDropped"
);
if
(
!
dnodeDropped
||
dnodeDropped
->
type
!=
cJSON_Number
)
{
dError
(
"failed to read %s, dnodeDropped not found"
,
file
);
//goto PARSE_CFG_OVER;
}
else
{
tsDnodeDropped
=
(
int32_t
)
dnodeDropped
->
valueint
;
}
cJSON
*
clusterId
=
cJSON_GetObjectItem
(
root
,
"clusterId"
);
if
(
!
clusterId
||
clusterId
->
type
!=
cJSON_String
)
{
dError
(
"failed to read %s, clusterId not found"
,
file
);
...
...
@@ -154,6 +175,7 @@ static int32_t dnodeWriteCfg() {
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"{
\n
"
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
dnodeId
\"
: %d,
\n
"
,
tsCfg
.
dnodeId
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
dnodeDropped
\"
: %d,
\n
"
,
tsDnodeDropped
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"
\"
clusterId
\"
:
\"
%s
\"\n
"
,
tsCfg
.
clusterId
);
len
+=
snprintf
(
content
+
len
,
maxLen
-
len
,
"}
\n
"
);
...
...
src/dnode/src/dnodeVnodes.c
浏览文件 @
6375ee78
...
...
@@ -202,6 +202,7 @@ static void dnodeProcessStatusRsp(SRpcMsg *pMsg) {
char
clusterId
[
TSDB_CLUSTER_ID_LEN
];
dnodeGetClusterId
(
clusterId
);
if
(
clusterId
[
0
]
!=
'\0'
)
{
dnodeSetDropped
();
dError
(
"exit zombie dropped dnode"
);
exit
(
EXIT_FAILURE
);
}
...
...
src/query/inc/qTableMeta.h
浏览文件 @
6375ee78
...
...
@@ -138,7 +138,6 @@ typedef struct SQueryInfo {
bool
hasFilter
;
bool
onlyTagQuery
;
bool
orderProjectQuery
;
// bool diffQuery;
bool
stateWindow
;
}
SQueryInfo
;
...
...
src/query/inc/sql.y
浏览文件 @
6375ee78
...
...
@@ -176,7 +176,7 @@ cmd ::= ALTER ACCOUNT ids(X) PASS ids(Y) acct_optr(Z). { setCreateAcctSql(p
////////////////////////////// COMPACT STATEMENT //////////////////////////////////////////////
cmd ::= COMPACT VNODES IN LP exprlist(Y) RP. { setCompactVnodeSql(pInfo, TSDB_SQL_COMPACT_VNODE, Y);}
cmd ::= COMPACT VNODES IN LP exprlist(Y) RP. { setCompactVnodeSql(pInfo, TSDB_SQL_COMPACT_VNODE, Y);}
// An IDENTIFIER can be a generic identifier, or one of several keywords.
// Any non-standard keyword can also be an identifier.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录