Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5aab7ab4
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看板
未验证
提交
5aab7ab4
编写于
10月 03, 2022
作者:
S
Shengliang Guan
提交者:
GitHub
10月 03, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #17190 from taosdata/enh/optGetTableMeta
enh(query): opt get table meta
上级
5b7e122a
16c14738
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
46 addition
and
19 deletion
+46
-19
source/dnode/vnode/inc/vnode.h
source/dnode/vnode/inc/vnode.h
+2
-2
source/dnode/vnode/src/meta/metaQuery.c
source/dnode/vnode/src/meta/metaQuery.c
+43
-16
source/libs/executor/src/executil.c
source/libs/executor/src/executil.c
+1
-1
未找到文件。
source/dnode/vnode/inc/vnode.h
浏览文件 @
5aab7ab4
...
...
@@ -96,7 +96,7 @@ void metaReaderClear(SMetaReader *pReader);
int32_t
metaGetTableEntryByUid
(
SMetaReader
*
pReader
,
tb_uid_t
uid
);
int
metaGetTableEntryByName
(
SMetaReader
*
pReader
,
const
char
*
name
);
int32_t
metaGetTableTags
(
SMeta
*
pMeta
,
uint64_t
suid
,
SArray
*
uidList
,
SHashObj
*
tags
);
int32_t
metaGetTableTags
Opt
(
SMeta
*
pMeta
,
uint64_t
suid
,
SArray
*
uidList
,
SHashObj
*
tags
);
int32_t
metaGetTableTags
ByUids
(
SMeta
*
pMeta
,
uint64_t
suid
,
SArray
*
uidList
,
SHashObj
*
tags
);
int32_t
metaReadNext
(
SMetaReader
*
pReader
);
const
void
*
metaGetTableTagVal
(
void
*
tag
,
int16_t
type
,
STagVal
*
tagVal
);
int
metaGetTableNameByUid
(
void
*
meta
,
uint64_t
uid
,
char
*
tbName
);
...
...
@@ -159,7 +159,7 @@ uint64_t getReaderMaxVersion(STsdbReader *pReader);
int32_t
tsdbCacherowsReaderOpen
(
void
*
pVnode
,
int32_t
type
,
SArray
*
pTableIdList
,
int32_t
numOfCols
,
void
**
pReader
);
int32_t
tsdbRetrieveCacheRows
(
void
*
pReader
,
SSDataBlock
*
pResBlock
,
const
int32_t
*
slotIds
,
SArray
*
pTableUids
);
void
*
tsdbCacherowsReaderClose
(
void
*
pReader
);
void
*
tsdbCacherowsReaderClose
(
void
*
pReader
);
int32_t
tsdbGetTableSchema
(
SVnode
*
pVnode
,
int64_t
uid
,
STSchema
**
pSchema
,
int64_t
*
suid
);
void
tsdbCacheSetCapacity
(
SVnode
*
pVnode
,
size_t
capacity
);
...
...
source/dnode/vnode/src/meta/metaQuery.c
浏览文件 @
5aab7ab4
...
...
@@ -207,17 +207,17 @@ int metaGetTableUidByName(void *meta, char *tbName, uint64_t *uid) {
SMetaReader
mr
=
{
0
};
metaReaderInit
(
&
mr
,
(
SMeta
*
)
meta
,
0
);
SMeta
*
pMeta
=
mr
.
pMeta
;
SMetaReader
*
pReader
=
&
mr
;
// query name.idx
if
(
tdbTbGet
(
pMeta
->
pNameIdx
,
tbName
,
strlen
(
tbName
)
+
1
,
&
pReader
->
pBuf
,
&
pReader
->
szBuf
)
<
0
)
{
if
(
tdbTbGet
(
p
Reader
->
p
Meta
->
pNameIdx
,
tbName
,
strlen
(
tbName
)
+
1
,
&
pReader
->
pBuf
,
&
pReader
->
szBuf
)
<
0
)
{
terrno
=
TSDB_CODE_PAR_TABLE_NOT_EXIST
;
metaReaderClear
(
&
mr
);
return
-
1
;
}
*
uid
=
*
(
tb_uid_t
*
)
pReader
->
pBuf
;
metaReaderClear
(
&
mr
);
return
0
;
...
...
@@ -228,11 +228,11 @@ int metaGetTableTypeByName(void *meta, char *tbName, ETableType *tbType) {
SMetaReader
mr
=
{
0
};
metaReaderInit
(
&
mr
,
(
SMeta
*
)
meta
,
0
);
if
(
metaGetTableEntryByName
(
&
mr
,
tbName
)
==
0
)
{
*
tbType
=
mr
.
me
.
type
;
}
code
=
metaGetTableEntryByName
(
&
mr
,
tbName
);
if
(
code
==
0
)
*
tbType
=
mr
.
me
.
type
;
metaReaderClear
(
&
mr
);
return
0
;
return
code
;
}
int
metaReadNext
(
SMetaReader
*
pReader
)
{
...
...
@@ -1134,22 +1134,49 @@ END:
return
ret
;
}
int32_t
metaGetTableTagsOpt
(
SMeta
*
pMeta
,
uint64_t
suid
,
SArray
*
uidList
,
SHashObj
*
tags
)
{
static
int32_t
metaGetTableTagByUid
(
SMeta
*
pMeta
,
uint64_t
suid
,
uint64_t
uid
,
void
**
tag
,
int32_t
*
len
,
bool
lock
)
{
int
ret
=
0
;
if
(
lock
)
{
metaRLock
(
pMeta
);
}
SCtbIdxKey
ctbIdxKey
=
{.
suid
=
suid
,
.
uid
=
uid
};
ret
=
tdbTbGet
(
pMeta
->
pCtbIdx
,
&
ctbIdxKey
,
sizeof
(
SCtbIdxKey
),
tag
,
len
);
if
(
lock
)
{
metaULock
(
pMeta
);
}
return
ret
;
}
int32_t
metaGetTableTagsByUids
(
SMeta
*
pMeta
,
uint64_t
suid
,
SArray
*
uidList
,
SHashObj
*
tags
)
{
const
int32_t
LIMIT
=
128
;
int32_t
isLock
=
false
;
int32_t
sz
=
uidList
?
taosArrayGetSize
(
uidList
)
:
0
;
for
(
int
i
=
0
;
i
<
sz
;
i
++
)
{
tb_uid_t
*
id
=
taosArrayGet
(
uidList
,
i
);
SCtbIdxKey
ctbIdxKey
=
{.
suid
=
suid
,
.
uid
=
*
id
};
void
*
val
=
NULL
;
int32_t
len
=
0
;
if
(
taosHashGet
(
tags
,
id
,
sizeof
(
tb_uid_t
))
==
NULL
&&
0
==
tdbTbGet
(
pMeta
->
pCtbIdx
,
&
ctbIdxKey
,
sizeof
(
SCtbIdxKey
),
&
val
,
&
len
))
{
taosHashPut
(
tags
,
id
,
sizeof
(
tb_uid_t
),
val
,
len
);
tdbFree
(
val
);
tb_uid_t
*
id
=
taosArrayGet
(
uidList
,
i
);
if
(
i
%
LIMIT
==
0
)
{
if
(
isLock
)
metaULock
(
pMeta
);
metaRLock
(
pMeta
);
isLock
=
true
;
}
if
(
taosHashGet
(
tags
,
id
,
sizeof
(
tb_uid_t
))
==
NULL
)
{
void
*
val
=
NULL
;
int32_t
len
=
0
;
if
(
metaGetTableTagByUid
(
pMeta
,
suid
,
*
id
,
&
val
,
&
len
,
false
)
==
0
)
{
taosHashPut
(
tags
,
id
,
sizeof
(
tb_uid_t
),
val
,
len
);
tdbFree
(
val
);
}
}
}
if
(
isLock
)
metaULock
(
pMeta
);
return
0
;
}
int32_t
metaGetTableTags
(
SMeta
*
pMeta
,
uint64_t
suid
,
SArray
*
uidList
,
SHashObj
*
tags
)
{
SMCtbCursor
*
pCur
=
metaOpenCtbCursor
(
pMeta
,
suid
);
...
...
source/libs/executor/src/executil.c
浏览文件 @
5aab7ab4
...
...
@@ -420,7 +420,7 @@ static SColumnInfoData* getColInfoResult(void* metaHandle, uint64_t suid, SArray
goto
end
;
}
}
else
{
metaGetTableTags
Opt
(
metaHandle
,
suid
,
uidList
,
tags
);
metaGetTableTags
ByUids
(
metaHandle
,
suid
,
uidList
,
tags
);
qInfo
(
"succ to get table from meta idx, suid:%"
PRIu64
,
suid
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录