Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
2fddb8a6
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1184
Star
22015
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2fddb8a6
编写于
7月 22, 2022
作者:
L
Liu Jicong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(tmq): check alter
上级
0a47ebc5
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
42 addition
and
27 deletion
+42
-27
source/dnode/mnode/impl/inc/mndDef.h
source/dnode/mnode/impl/inc/mndDef.h
+1
-0
source/dnode/mnode/impl/src/mndTopic.c
source/dnode/mnode/impl/src/mndTopic.c
+31
-24
source/libs/nodes/src/nodesCodeFuncs.c
source/libs/nodes/src/nodesCodeFuncs.c
+7
-0
tests/system-test/7-tmq/schema.py
tests/system-test/7-tmq/schema.py
+3
-3
未找到文件。
source/dnode/mnode/impl/inc/mndDef.h
浏览文件 @
2fddb8a6
...
...
@@ -480,6 +480,7 @@ typedef struct {
// forbid condition
int64_t
ntbUid
;
SArray
*
ntbColIds
;
int64_t
ctbStbUid
;
}
SMqTopicObj
;
typedef
struct
{
...
...
source/dnode/mnode/impl/src/mndTopic.c
浏览文件 @
2fddb8a6
...
...
@@ -75,7 +75,6 @@ const char *mndTopicGetShowName(const char topic[TSDB_TOPIC_FNAME_LEN]) {
int32_t
mndCheckColAndTagModifiable
(
SMnode
*
pMnode
,
int64_t
suid
,
col_id_t
colId
)
{
SSdb
*
pSdb
=
pMnode
->
pSdb
;
void
*
pIter
=
NULL
;
bool
found
=
false
;
while
(
1
)
{
SMqTopicObj
*
pTopic
=
NULL
;
pIter
=
sdbFetch
(
pSdb
,
SDB_TOPIC
,
pIter
,
(
void
**
)
&
pTopic
);
...
...
@@ -96,10 +95,12 @@ int32_t mndCheckColAndTagModifiable(SMnode *pMnode, int64_t suid, col_id_t colId
SNode
*
pNode
=
NULL
;
FOREACH
(
pNode
,
pNodeList
)
{
SColumnNode
*
pCol
=
(
SColumnNode
*
)
pNode
;
if
(
pCol
->
tableId
!=
suid
)
goto
NEXT
;
if
(
pCol
->
tableId
!=
suid
&&
pTopic
->
ctbStbUid
!=
suid
)
goto
NEXT
;
if
(
pCol
->
colId
>
0
&&
pCol
->
colId
==
colId
)
{
found
=
true
;
goto
NEXT
;
sdbRelease
(
pSdb
,
pTopic
);
nodesDestroyNode
(
pAst
);
terrno
=
TSDB_CODE_MND_FIELD_CONFLICT_WITH_TOPIC
;
return
-
1
;
}
mTrace
(
"topic:%s, colId:%d is used"
,
pTopic
->
name
,
pCol
->
colId
);
}
...
...
@@ -107,10 +108,6 @@ int32_t mndCheckColAndTagModifiable(SMnode *pMnode, int64_t suid, col_id_t colId
NEXT:
sdbRelease
(
pSdb
,
pTopic
);
nodesDestroyNode
(
pAst
);
if
(
found
)
{
terrno
=
TSDB_CODE_MND_FIELD_CONFLICT_WITH_TOPIC
;
return
-
1
;
}
}
return
0
;
...
...
@@ -176,6 +173,7 @@ SSdbRaw *mndTopicActionEncode(SMqTopicObj *pTopic) {
SDB_SET_INT16
(
pRaw
,
dataPos
,
colId
,
TOPIC_ENCODE_OVER
);
}
}
SDB_SET_INT64
(
pRaw
,
dataPos
,
pTopic
->
ctbStbUid
,
TOPIC_ENCODE_OVER
);
SDB_SET_RESERVE
(
pRaw
,
dataPos
,
MND_TOPIC_RESERVE_SIZE
,
TOPIC_ENCODE_OVER
);
SDB_SET_DATALEN
(
pRaw
,
dataPos
,
TOPIC_ENCODE_OVER
);
...
...
@@ -284,6 +282,7 @@ SSdbRow *mndTopicActionDecode(SSdbRaw *pRaw) {
SDB_GET_INT16
(
pRaw
,
dataPos
,
&
colId
,
TOPIC_DECODE_OVER
);
taosArrayPush
(
pTopic
->
ntbColIds
,
&
colId
);
}
SDB_GET_INT64
(
pRaw
,
dataPos
,
&
pTopic
->
ctbStbUid
,
TOPIC_DECODE_OVER
);
SDB_GET_RESERVE
(
pRaw
,
dataPos
,
MND_TOPIC_RESERVE_SIZE
,
TOPIC_DECODE_OVER
);
...
...
@@ -371,15 +370,22 @@ static int32_t mndCheckCreateTopicReq(SCMCreateTopicReq *pCreate) {
return
0
;
}
static
int32_t
extractTopicTbInfo
(
SNode
*
pAst
,
int64_t
*
ntbUid
,
SArray
*
colIds
)
{
static
int32_t
extractTopicTbInfo
(
SNode
*
pAst
,
SMqTopicObj
*
pTopic
)
{
SNodeList
*
pNodeList
=
NULL
;
nodesCollectColumns
((
SSelectStmt
*
)
pAst
,
SQL_CLAUSE_FROM
,
NULL
,
COLLECT_COL_TYPE_ALL
,
&
pNodeList
);
SNode
*
pNode
=
NULL
;
FOREACH
(
pNode
,
pNodeList
)
{
SColumnNode
*
pCol
=
(
SColumnNode
*
)
pNode
;
if
(
pCol
->
tableType
!=
TSDB_NORMAL_TABLE
)
return
-
1
;
*
ntbUid
=
pCol
->
tableId
;
taosArrayPush
(
colIds
,
&
pCol
->
colId
);
int64_t
suid
=
((
SRealTableNode
*
)((
SSelectStmt
*
)
pAst
)
->
pFromTable
)
->
pMeta
->
suid
;
int8_t
tableType
=
((
SRealTableNode
*
)((
SSelectStmt
*
)
pAst
)
->
pFromTable
)
->
pMeta
->
tableType
;
if
(
tableType
==
TSDB_CHILD_TABLE
)
{
pTopic
->
ctbStbUid
=
suid
;
}
else
if
(
tableType
==
TSDB_NORMAL_TABLE
)
{
SNode
*
pNode
=
NULL
;
FOREACH
(
pNode
,
pNodeList
)
{
SColumnNode
*
pCol
=
(
SColumnNode
*
)
pNode
;
if
(
pCol
->
tableType
==
TSDB_NORMAL_TABLE
)
{
pTopic
->
ntbUid
=
pCol
->
tableId
;
taosArrayPush
(
pTopic
->
ntbColIds
,
&
pCol
->
colId
);
}
}
}
return
0
;
}
...
...
@@ -425,16 +431,16 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *
}
int64_t
ntbUid
;
SArray
*
c
olIds
=
taosArrayInit
(
0
,
sizeof
(
int16_t
));
if
(
c
olIds
==
NULL
)
{
topicObj
.
ntbC
olIds
=
taosArrayInit
(
0
,
sizeof
(
int16_t
));
if
(
topicObj
.
ntbC
olIds
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
if
(
extractTopicTbInfo
(
pAst
,
&
ntbUid
,
colIds
)
<
0
)
{
taosArrayDestroy
(
colIds
);
}
else
{
t
opicObj
.
ntbUid
=
ntbUid
;
topicObj
.
ntbColIds
=
colIds
;
extractTopicTbInfo
(
pAst
,
&
topicObj
);
if
(
topicObj
.
ntbUid
==
0
)
{
t
aosArrayDestroy
(
topicObj
.
ntbColIds
)
;
topicObj
.
ntbColIds
=
NULL
;
}
if
(
qExtractResultSchema
(
pAst
,
&
topicObj
.
schema
.
nCols
,
&
topicObj
.
schema
.
pSchema
)
!=
0
)
{
...
...
@@ -509,6 +515,7 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *
if
(
code
<
0
)
{
sdbRelease
(
pSdb
,
pVgroup
);
mndTransDrop
(
pTrans
);
ASSERT
(
0
);
return
-
1
;
}
void
*
buf
=
taosMemoryCalloc
(
1
,
sizeof
(
SMsgHead
)
+
len
);
...
...
@@ -521,7 +528,7 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *
return
-
1
;
}
tEncoderClear
(
&
encoder
);
((
SMsgHead
*
)
buf
)
->
vgId
=
pVgroup
->
vgId
;
((
SMsgHead
*
)
buf
)
->
vgId
=
htonl
(
pVgroup
->
vgId
)
;
// add redo action
STransAction
action
=
{
0
};
action
.
epSet
=
mndGetVgroupEpset
(
pMnode
,
pVgroup
);
...
...
@@ -546,7 +553,7 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *
taosMemoryFreeClear
(
topicObj
.
physicalPlan
);
mndTransDrop
(
pTrans
);
return
0
;
return
TSDB_CODE_ACTION_IN_PROGRESS
;
}
static
int32_t
mndProcessCreateTopicReq
(
SRpcMsg
*
pReq
)
{
...
...
source/libs/nodes/src/nodesCodeFuncs.c
浏览文件 @
2fddb8a6
...
...
@@ -2667,6 +2667,7 @@ static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
}
static
const
char
*
jkColumnTableId
=
"TableId"
;
static
const
char
*
jkColumnTableType
=
"TableType"
;
static
const
char
*
jkColumnColId
=
"ColId"
;
static
const
char
*
jkColumnColType
=
"ColType"
;
static
const
char
*
jkColumnDbName
=
"DbName"
;
...
...
@@ -2683,6 +2684,9 @@ static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddIntegerToObject
(
pJson
,
jkColumnTableId
,
pNode
->
tableId
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddIntegerToObject
(
pJson
,
jkColumnTableType
,
pNode
->
tableType
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonAddIntegerToObject
(
pJson
,
jkColumnColId
,
pNode
->
colId
);
}
...
...
@@ -2718,6 +2722,9 @@ static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetUBigIntValue
(
pJson
,
jkColumnTableId
,
&
pNode
->
tableId
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetTinyIntValue
(
pJson
,
jkColumnTableType
,
&
pNode
->
tableType
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
tjsonGetSmallIntValue
(
pJson
,
jkColumnColId
,
&
pNode
->
colId
);
}
...
...
tests/system-test/7-tmq/schema.py
浏览文件 @
2fddb8a6
...
...
@@ -830,9 +830,9 @@ class TDTestCase:
cfgPath
=
buildPath
+
"/../sim/psim/cfg"
tdLog
.
info
(
"cfgPath: %s"
%
cfgPath
)
self
.
tmqCase1
(
cfgPath
,
buildPath
)
self
.
tmqCase2
(
cfgPath
,
buildPath
)
self
.
tmqCase3
(
cfgPath
,
buildPath
)
#
self.tmqCase1(cfgPath, buildPath)
#
self.tmqCase2(cfgPath, buildPath)
#
self.tmqCase3(cfgPath, buildPath)
self
.
tmqCase4
(
cfgPath
,
buildPath
)
self
.
tmqCase5
(
cfgPath
,
buildPath
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录