Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
b09091ce
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
提交
b09091ce
编写于
4月 22, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more refact
上级
57d642b9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
61 addition
and
105 deletion
+61
-105
source/dnode/vnode/src/vnd/vnodeQuery.c
source/dnode/vnode/src/vnd/vnodeQuery.c
+61
-105
未找到文件。
source/dnode/vnode/src/vnd/vnodeQuery.c
浏览文件 @
b09091ce
...
...
@@ -23,8 +23,14 @@ void vnodeQueryClose(SVnode *pVnode) { qWorkerDestroy((void **)&pVnode->pQuery);
int
vnodeGetTableMeta
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
)
{
STableInfoReq
infoReq
=
{
0
};
SMetaEntryReader
meReader
=
{
0
};
STableMetaRsp
metaRsp
=
{
0
};
SMetaEntryReader
meReader1
=
{
0
};
SMetaEntryReader
meReader2
=
{
0
};
char
tableFName
[
TSDB_TABLE_FNAME_LEN
];
SRpcMsg
rpcMsg
;
int32_t
code
=
0
;
int32_t
rspLen
=
0
;
void
*
pRsp
=
NULL
;
// decode req
if
(
tDeserializeSTableInfoReq
(
pMsg
->
pCont
,
pMsg
->
contLen
,
&
infoReq
)
!=
0
)
{
...
...
@@ -32,106 +38,67 @@ int vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg) {
goto
_exit
;
}
// query meta
metaEntryReaderInit
(
&
meReader
);
if
(
metaGetTableEntryByName
(
pVnode
->
pMeta
,
&
meReader
,
NULL
)
<
0
)
{
goto
_exit
;
}
// fill response
_exit:
return
0
;
#if 0
STbCfg *pTbCfg = NULL;
STbCfg *pStbCfg = NULL;
tb_uid_t uid;
int32_t nCols;
int32_t nTagCols;
SSchemaWrapper *pSW = NULL;
STableMetaRsp *pTbMetaMsg = NULL;
STableMetaRsp metaRsp = {0};
SSchema *pTagSchema;
SRpcMsg rpcMsg;
int msgLen = 0;
int32_t code = 0;
char tableFName[TSDB_TABLE_FNAME_LEN];
int32_t rspLen = 0;
void *pRsp = NULL;
STableInfoReq infoReq = {0};
if (tDeserializeSTableInfoReq(pMsg->pCont, pMsg->contLen, &infoReq) != 0) {
code = TSDB_CODE_INVALID_MSG;
goto _exit;
}
metaRsp.dbId = pVnode->config.dbId;
memcpy(metaRsp.dbFName, infoReq.dbFName, sizeof(metaRsp.dbFName));
strcpy
(
metaRsp
.
tbName
,
infoReq
.
tbName
);
memcpy
(
metaRsp
.
dbFName
,
infoReq
.
dbFName
,
sizeof
(
metaRsp
.
dbFName
));
metaRsp
.
dbId
=
pVnode
->
config
.
dbId
;
sprintf
(
tableFName
,
"%s.%s"
,
infoReq
.
dbFName
,
infoReq
.
tbName
);
code
=
vnodeValidateTableHash
(
&
pVnode
->
config
,
tableFName
);
if
(
code
)
{
goto
_exit
;
}
pTbCfg = metaGetTbInfoByName(pVnode->pMeta, infoReq.tbName, &uid);
if (pTbCfg == NULL) {
code = TSDB_CODE_VND_TB_NOT_EXIST;
goto _exit;
}
if (pTbCfg->type == META_CHILD_TABLE) {
pStbCfg = metaGetTbInfoByUid(pVnode->pMeta, pTbCfg->ctbCfg.suid);
if (pStbCfg == NULL) {
code = TSDB_CODE_VND_TB_NOT_EXIST;
goto _exit;
}
pSW = metaGetTableSchema(pVnode->pMeta, pTbCfg->ctbCfg.suid, 0, true);
} else {
pSW = metaGetTableSchema(pVnode->pMeta, uid, 0, true);
}
nCols = pSW->nCols;
if (pTbCfg->type == META_SUPER_TABLE) {
// nTagCols = pTbCfg->stbCfg.nTagCols;
// pTagSchema = pTbCfg->stbCfg.pTagSchema;
} else if (pTbCfg->type == META_CHILD_TABLE) {
// nTagCols = pStbCfg->stbCfg.nTagCols;
// pTagSchema = pStbCfg->stbCfg.pTagSchema;
} else {
nTagCols = 0;
pTagSchema = NULL;
}
// query meta
metaEntryReaderInit
(
&
meReader1
);
metaRsp.pSchemas = taosMemoryCalloc(nCols + nTagCols, sizeof(SSchema));
if (metaRsp.pSchemas == NULL) {
code = TSDB_CODE_VND_OUT_OF_MEMORY;
if
(
metaGetTableEntryByName
(
pVnode
->
pMeta
,
&
meReader1
,
infoReq
.
tbName
)
<
0
)
{
goto
_exit
;
}
if (pTbCfg->type == META_CHILD_TABLE) {
strcpy(metaRsp.stbName, pStbCfg->name);
metaRsp.suid = pTbCfg->ctbCfg.suid;
} else if (pTbCfg->type == META_SUPER_TABLE) {
strcpy(metaRsp.stbName, pTbCfg->name);
metaRsp.suid = uid;
if
(
meReader1
.
me
.
type
==
TSDB_CHILD_TABLE
)
{
metaEntryReaderInit
(
&
meReader2
);
if
(
metaGetTableEntryByUid
(
pVnode
->
pMeta
,
&
meReader2
,
meReader1
.
me
.
ctbEntry
.
suid
)
<
0
)
goto
_exit
;
}
metaRsp.numOfTags = nTagCols;
metaRsp.numOfColumns = nCols;
metaRsp.tableType = pTbCfg->type;
metaRsp.tuid = uid;
metaRsp.vgId = TD_VID(pVnode);
memcpy(metaRsp.pSchemas, pSW->pSchema, sizeof(SSchema) * pSW->nCols);
if (nTagCols) {
memcpy(POINTER_SHIFT(metaRsp.pSchemas, sizeof(SSchema) * pSW->nCols), pTagSchema, sizeof(SSchema) * nTagCols);
// fill response
metaRsp
.
tableType
=
meReader1
.
me
.
type
;
metaRsp
.
vgId
=
TD_VID
(
pVnode
);
metaRsp
.
tuid
=
meReader1
.
me
.
uid
;
if
(
meReader1
.
me
.
type
==
TSDB_SUPER_TABLE
)
{
strcpy
(
metaRsp
.
stbName
,
meReader1
.
me
.
name
);
metaRsp
.
numOfTags
=
meReader1
.
me
.
stbEntry
.
nTags
;
metaRsp
.
numOfColumns
=
meReader1
.
me
.
stbEntry
.
nCols
;
metaRsp
.
suid
=
meReader1
.
me
.
uid
;
metaRsp
.
pSchemas
=
taosMemoryMalloc
((
metaRsp
.
numOfTags
+
metaRsp
.
numOfColumns
)
*
sizeof
(
SSchema
));
if
(
metaRsp
.
pSchemas
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_exit
;
}
memcpy
(
metaRsp
.
pSchemas
,
meReader1
.
me
.
stbEntry
.
pSchema
,
sizeof
(
SSchema
)
*
metaRsp
.
numOfColumns
);
memcpy
(
metaRsp
.
pSchemas
+
metaRsp
.
numOfColumns
,
meReader1
.
me
.
stbEntry
.
pSchemaTg
,
sizeof
(
SSchema
)
*
metaRsp
.
numOfTags
);
}
else
if
(
meReader1
.
me
.
type
==
TSDB_CHILD_TABLE
)
{
strcpy
(
metaRsp
.
stbName
,
meReader2
.
me
.
name
);
metaRsp
.
numOfTags
=
meReader2
.
me
.
stbEntry
.
nTags
;
metaRsp
.
numOfColumns
=
meReader2
.
me
.
stbEntry
.
nCols
;
metaRsp
.
suid
=
meReader2
.
me
.
uid
;
metaRsp
.
pSchemas
=
taosMemoryMalloc
((
metaRsp
.
numOfTags
+
metaRsp
.
numOfColumns
)
*
sizeof
(
SSchema
));
if
(
metaRsp
.
pSchemas
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_exit
;
}
memcpy
(
metaRsp
.
pSchemas
,
meReader2
.
me
.
stbEntry
.
pSchema
,
sizeof
(
SSchema
)
*
metaRsp
.
numOfColumns
);
memcpy
(
metaRsp
.
pSchemas
+
metaRsp
.
numOfColumns
,
meReader2
.
me
.
stbEntry
.
pSchemaTg
,
sizeof
(
SSchema
)
*
metaRsp
.
numOfTags
);
}
else
if
(
meReader1
.
me
.
type
==
TSDB_NORMAL_TABLE
)
{
metaRsp
.
numOfTags
=
0
;
metaRsp
.
numOfColumns
=
meReader1
.
me
.
ntbEntry
.
nCols
;
metaRsp
.
suid
=
0
;
metaRsp
.
pSchemas
=
meReader1
.
me
.
ntbEntry
.
pSchema
;
}
else
{
ASSERT
(
0
);
}
_exit:
// encode and send response
rspLen
=
tSerializeSTableMetaRsp
(
NULL
,
0
,
&
metaRsp
);
if
(
rspLen
<
0
)
{
code
=
TSDB_CODE_INVALID_MSG
;
...
...
@@ -145,23 +112,6 @@ _exit:
}
tSerializeSTableMetaRsp
(
pRsp
,
rspLen
,
&
metaRsp
);
tFreeSTableMetaRsp(&metaRsp);
if (pSW != NULL) {
taosMemoryFreeClear(pSW->pSchema);
taosMemoryFreeClear(pSW);
}
if (pTbCfg) {
taosMemoryFreeClear(pTbCfg->name);
if (pTbCfg->type == META_SUPER_TABLE) {
// taosMemoryFree(pTbCfg->stbCfg.pTagSchema);
} else if (pTbCfg->type == META_SUPER_TABLE) {
kvRowFree(pTbCfg->ctbCfg.pTag);
}
taosMemoryFreeClear(pTbCfg);
}
rpcMsg
.
handle
=
pMsg
->
handle
;
rpcMsg
.
ahandle
=
pMsg
->
ahandle
;
rpcMsg
.
pCont
=
pRsp
;
...
...
@@ -169,8 +119,14 @@ _exit:
rpcMsg
.
code
=
code
;
tmsgSendRsp
(
&
rpcMsg
);
#endif
return
TSDB_CODE_SUCCESS
;
_exit:
if
(
meReader1
.
me
.
type
==
TSDB_SUPER_TABLE
||
meReader1
.
me
.
type
==
TSDB_CHILD_TABLE
)
{
taosMemoryFree
(
metaRsp
.
pSchemas
);
}
metaEntryReaderClear
(
&
meReader2
);
metaEntryReaderClear
(
&
meReader1
);
return
code
;
}
int32_t
vnodeGetLoad
(
SVnode
*
pVnode
,
SVnodeLoad
*
pLoad
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录