Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
c83367e4
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
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看板
提交
c83367e4
编写于
5月 06, 2023
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh: add table group cache
上级
13852f56
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
220 addition
and
10 deletion
+220
-10
source/dnode/vnode/src/meta/metaCache.c
source/dnode/vnode/src/meta/metaCache.c
+209
-2
source/dnode/vnode/src/meta/metaTable.c
source/dnode/vnode/src/meta/metaTable.c
+4
-0
source/libs/executor/src/executil.c
source/libs/executor/src/executil.c
+7
-8
未找到文件。
source/dnode/vnode/src/meta/metaCache.c
浏览文件 @
c83367e4
...
@@ -59,6 +59,13 @@ struct SMetaCache {
...
@@ -59,6 +59,13 @@ struct SMetaCache {
SHashObj
*
pTableEntry
;
SHashObj
*
pTableEntry
;
SLRUCache
*
pUidResCache
;
SLRUCache
*
pUidResCache
;
}
sTagFilterResCache
;
}
sTagFilterResCache
;
struct
STbGroupResCache
{
TdThreadMutex
lock
;
uint32_t
accTimes
;
SHashObj
*
pTableEntry
;
SLRUCache
*
pResCache
;
}
STbGroupResCache
;
};
};
static
void
entryCacheClose
(
SMeta
*
pMeta
)
{
static
void
entryCacheClose
(
SMeta
*
pMeta
)
{
...
@@ -144,6 +151,25 @@ int32_t metaCacheOpen(SMeta* pMeta) {
...
@@ -144,6 +151,25 @@ int32_t metaCacheOpen(SMeta* pMeta) {
taosHashSetFreeFp
(
pCache
->
sTagFilterResCache
.
pTableEntry
,
freeCacheEntryFp
);
taosHashSetFreeFp
(
pCache
->
sTagFilterResCache
.
pTableEntry
,
freeCacheEntryFp
);
taosThreadMutexInit
(
&
pCache
->
sTagFilterResCache
.
lock
,
NULL
);
taosThreadMutexInit
(
&
pCache
->
sTagFilterResCache
.
lock
,
NULL
);
pCache
->
STbGroupResCache
.
pResCache
=
taosLRUCacheInit
(
5
*
1024
*
1024
,
-
1
,
0
.
5
);
if
(
pCache
->
STbGroupResCache
.
pResCache
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err2
;
}
pCache
->
STbGroupResCache
.
accTimes
=
0
;
pCache
->
STbGroupResCache
.
pTableEntry
=
taosHashInit
(
1024
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_VARCHAR
),
false
,
HASH_NO_LOCK
);
if
(
pCache
->
STbGroupResCache
.
pTableEntry
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
_err2
;
}
taosHashSetFreeFp
(
pCache
->
STbGroupResCache
.
pTableEntry
,
freeCacheEntryFp
);
taosThreadMutexInit
(
&
pCache
->
STbGroupResCache
.
lock
,
NULL
);
pMeta
->
pCache
=
pCache
;
pMeta
->
pCache
=
pCache
;
return
code
;
return
code
;
...
@@ -165,6 +191,10 @@ void metaCacheClose(SMeta* pMeta) {
...
@@ -165,6 +191,10 @@ void metaCacheClose(SMeta* pMeta) {
taosThreadMutexDestroy
(
&
pMeta
->
pCache
->
sTagFilterResCache
.
lock
);
taosThreadMutexDestroy
(
&
pMeta
->
pCache
->
sTagFilterResCache
.
lock
);
taosHashCleanup
(
pMeta
->
pCache
->
sTagFilterResCache
.
pTableEntry
);
taosHashCleanup
(
pMeta
->
pCache
->
sTagFilterResCache
.
pTableEntry
);
taosLRUCacheCleanup
(
pMeta
->
pCache
->
STbGroupResCache
.
pResCache
);
taosThreadMutexDestroy
(
&
pMeta
->
pCache
->
STbGroupResCache
.
lock
);
taosHashCleanup
(
pMeta
->
pCache
->
STbGroupResCache
.
pTableEntry
);
taosMemoryFree
(
pMeta
->
pCache
);
taosMemoryFree
(
pMeta
->
pCache
);
pMeta
->
pCache
=
NULL
;
pMeta
->
pCache
=
NULL
;
}
}
...
@@ -520,7 +550,7 @@ int32_t metaGetCachedTableUidList(SMeta* pMeta, tb_uid_t suid, const uint8_t* pK
...
@@ -520,7 +550,7 @@ int32_t metaGetCachedTableUidList(SMeta* pMeta, tb_uid_t suid, const uint8_t* pK
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
void
freePayload
(
const
void
*
key
,
size_t
keyLen
,
void
*
value
)
{
static
void
free
UidCache
Payload
(
const
void
*
key
,
size_t
keyLen
,
void
*
value
)
{
if
(
value
==
NULL
)
{
if
(
value
==
NULL
)
{
return
;
return
;
}
}
...
@@ -626,7 +656,7 @@ int32_t metaUidFilterCachePut(SMeta* pMeta, uint64_t suid, const void* pKey, int
...
@@ -626,7 +656,7 @@ int32_t metaUidFilterCachePut(SMeta* pMeta, uint64_t suid, const void* pKey, int
}
}
// add to cache.
// add to cache.
taosLRUCacheInsert
(
pCache
,
key
,
TAG_FILTER_RES_KEY_LEN
,
pPayload
,
payloadLen
,
freePayload
,
NULL
,
taosLRUCacheInsert
(
pCache
,
key
,
TAG_FILTER_RES_KEY_LEN
,
pPayload
,
payloadLen
,
free
UidCache
Payload
,
NULL
,
TAOS_LRU_PRIORITY_LOW
);
TAOS_LRU_PRIORITY_LOW
);
_end:
_end:
taosThreadMutexUnlock
(
pLock
);
taosThreadMutexUnlock
(
pLock
);
...
@@ -671,3 +701,180 @@ int32_t metaUidCacheClear(SMeta* pMeta, uint64_t suid) {
...
@@ -671,3 +701,180 @@ int32_t metaUidCacheClear(SMeta* pMeta, uint64_t suid) {
metaDebug
(
"vgId:%d suid:%"
PRId64
" cached related tag filter uid list cleared"
,
vgId
,
suid
);
metaDebug
(
"vgId:%d suid:%"
PRId64
" cached related tag filter uid list cleared"
,
vgId
,
suid
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
int32_t
metaGetCachedTbGroup
(
SMeta
*
pMeta
,
tb_uid_t
suid
,
const
uint8_t
*
pKey
,
int32_t
keyLen
,
SArray
**
pList
)
{
int32_t
vgId
=
TD_VID
(
pMeta
->
pVnode
);
// generate the composed key for LRU cache
SLRUCache
*
pCache
=
pMeta
->
pCache
->
STbGroupResCache
.
pResCache
;
SHashObj
*
pTableMap
=
pMeta
->
pCache
->
STbGroupResCache
.
pTableEntry
;
TdThreadMutex
*
pLock
=
&
pMeta
->
pCache
->
STbGroupResCache
.
lock
;
*
pList
=
NULL
;
uint64_t
key
[
4
];
initCacheKey
(
key
,
pTableMap
,
suid
,
(
const
char
*
)
pKey
,
keyLen
);
taosThreadMutexLock
(
pLock
);
pMeta
->
pCache
->
STbGroupResCache
.
accTimes
+=
1
;
LRUHandle
*
pHandle
=
taosLRUCacheLookup
(
pCache
,
key
,
TAG_FILTER_RES_KEY_LEN
);
if
(
pHandle
==
NULL
)
{
taosThreadMutexUnlock
(
pLock
);
return
TSDB_CODE_SUCCESS
;
}
STagFilterResEntry
**
pEntry
=
taosHashGet
(
pTableMap
,
&
suid
,
sizeof
(
uint64_t
));
if
(
NULL
==
pEntry
)
{
metaDebug
(
"suid %"
PRIu64
" not in tb group cache"
,
suid
);
return
TSDB_CODE_FAILED
;
}
*
pList
=
taosLRUCacheValue
(
pCache
,
pHandle
);
(
*
pEntry
)
->
hitTimes
+=
1
;
uint32_t
acc
=
pMeta
->
pCache
->
STbGroupResCache
.
accTimes
;
if
((
*
pEntry
)
->
hitTimes
%
5000
==
0
&&
(
*
pEntry
)
->
hitTimes
>
0
)
{
metaInfo
(
"vgId:%d tb group cache hit:%d, total acc:%d, rate:%.2f"
,
vgId
,
(
*
pEntry
)
->
hitTimes
,
acc
,
((
double
)(
*
pEntry
)
->
hitTimes
)
/
acc
);
}
taosLRUCacheRelease
(
pCache
,
pHandle
,
false
);
// unlock meta
taosThreadMutexUnlock
(
pLock
);
return
TSDB_CODE_SUCCESS
;
}
static
void
freeTbGroupCachePayload
(
const
void
*
key
,
size_t
keyLen
,
void
*
value
)
{
if
(
value
==
NULL
)
{
return
;
}
const
uint64_t
*
p
=
key
;
if
(
keyLen
!=
sizeof
(
int64_t
)
*
4
)
{
metaError
(
"tb group key length is invalid, length:%d, expect:%d"
,
(
int32_t
)
keyLen
,
(
int32_t
)
sizeof
(
uint64_t
)
*
2
);
return
;
}
SHashObj
*
pHashObj
=
(
SHashObj
*
)
p
[
0
];
STagFilterResEntry
**
pEntry
=
taosHashGet
(
pHashObj
,
&
p
[
1
],
sizeof
(
uint64_t
));
if
(
pEntry
!=
NULL
&&
(
*
pEntry
)
!=
NULL
)
{
int64_t
st
=
taosGetTimestampUs
();
SListIter
iter
=
{
0
};
tdListInitIter
((
SList
*
)
&
((
*
pEntry
)
->
list
),
&
iter
,
TD_LIST_FORWARD
);
SListNode
*
pNode
=
NULL
;
while
((
pNode
=
tdListNext
(
&
iter
))
!=
NULL
)
{
uint64_t
*
digest
=
(
uint64_t
*
)
pNode
->
data
;
if
(
digest
[
0
]
==
p
[
2
]
&&
digest
[
1
]
==
p
[
3
])
{
void
*
tmp
=
tdListPopNode
(
&
((
*
pEntry
)
->
list
),
pNode
);
taosMemoryFree
(
tmp
);
double
el
=
(
taosGetTimestampUs
()
-
st
)
/
1000
.
0
;
metaDebug
(
"clear one item in tb group cache, remain cached item:%d, elapsed time:%.2fms"
,
listNEles
(
&
((
*
pEntry
)
->
list
)),
el
);
break
;
}
}
}
taosArrayDestroy
((
SArray
*
)
value
);
}
int32_t
metaPutTbGroupToCache
(
SMeta
*
pMeta
,
uint64_t
suid
,
const
void
*
pKey
,
int32_t
keyLen
,
void
*
pPayload
,
int32_t
payloadLen
)
{
int32_t
code
=
0
;
int32_t
vgId
=
TD_VID
(
pMeta
->
pVnode
);
if
(
payloadLen
>
tsTagFilterResCacheSize
)
{
metaDebug
(
"vgId:%d, suid:%"
PRIu64
" ignore to add to tb group cache, due to payload length %d greater than threshold %d"
,
vgId
,
suid
,
payloadLen
,
tsTagFilterResCacheSize
);
taosArrayDestroy
((
SArray
*
)
pPayload
);
return
TSDB_CODE_SUCCESS
;
}
SLRUCache
*
pCache
=
pMeta
->
pCache
->
STbGroupResCache
.
pResCache
;
SHashObj
*
pTableEntry
=
pMeta
->
pCache
->
STbGroupResCache
.
pTableEntry
;
TdThreadMutex
*
pLock
=
&
pMeta
->
pCache
->
STbGroupResCache
.
lock
;
uint64_t
key
[
4
]
=
{
0
};
initCacheKey
(
key
,
pTableEntry
,
suid
,
pKey
,
keyLen
);
taosThreadMutexLock
(
pLock
);
STagFilterResEntry
**
pEntry
=
taosHashGet
(
pTableEntry
,
&
suid
,
sizeof
(
uint64_t
));
if
(
pEntry
==
NULL
)
{
code
=
addNewEntry
(
pTableEntry
,
pKey
,
keyLen
,
suid
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
goto
_end
;
}
}
else
{
// check if it exists or not
size_t
size
=
listNEles
(
&
(
*
pEntry
)
->
list
);
if
(
size
==
0
)
{
tdListAppend
(
&
(
*
pEntry
)
->
list
,
pKey
);
}
else
{
SListNode
*
pNode
=
listHead
(
&
(
*
pEntry
)
->
list
);
uint64_t
*
p
=
(
uint64_t
*
)
pNode
->
data
;
if
(
p
[
1
]
==
((
uint64_t
*
)
pKey
)[
1
]
&&
p
[
0
]
==
((
uint64_t
*
)
pKey
)[
0
])
{
// we have already found the existed items, no need to added to cache anymore.
taosThreadMutexUnlock
(
pLock
);
return
TSDB_CODE_SUCCESS
;
}
else
{
// not equal, append it
tdListAppend
(
&
(
*
pEntry
)
->
list
,
pKey
);
}
}
}
// add to cache.
taosLRUCacheInsert
(
pCache
,
key
,
TAG_FILTER_RES_KEY_LEN
,
pPayload
,
payloadLen
,
freeTbGroupCachePayload
,
NULL
,
TAOS_LRU_PRIORITY_LOW
);
_end:
taosThreadMutexUnlock
(
pLock
);
metaDebug
(
"vgId:%d, suid:%"
PRIu64
" tb group added into cache, total:%d, tables:%d"
,
vgId
,
suid
,
(
int32_t
)
taosLRUCacheGetUsage
(
pCache
),
taosHashGetSize
(
pTableEntry
));
return
code
;
}
// remove the lru cache that are expired due to the tags value update, or creating, or dropping, of child tables
int32_t
metaTbGroupCacheClear
(
SMeta
*
pMeta
,
uint64_t
suid
)
{
uint64_t
p
[
4
]
=
{
0
};
int32_t
vgId
=
TD_VID
(
pMeta
->
pVnode
);
SHashObj
*
pEntryHashMap
=
pMeta
->
pCache
->
STbGroupResCache
.
pTableEntry
;
uint64_t
dummy
[
2
]
=
{
0
};
initCacheKey
(
p
,
pEntryHashMap
,
suid
,
(
char
*
)
&
dummy
[
0
],
16
);
TdThreadMutex
*
pLock
=
&
pMeta
->
pCache
->
STbGroupResCache
.
lock
;
taosThreadMutexLock
(
pLock
);
STagFilterResEntry
**
pEntry
=
taosHashGet
(
pEntryHashMap
,
&
suid
,
sizeof
(
uint64_t
));
if
(
pEntry
==
NULL
||
listNEles
(
&
(
*
pEntry
)
->
list
)
==
0
)
{
taosThreadMutexUnlock
(
pLock
);
return
TSDB_CODE_SUCCESS
;
}
(
*
pEntry
)
->
hitTimes
=
0
;
SListIter
iter
=
{
0
};
tdListInitIter
(
&
(
*
pEntry
)
->
list
,
&
iter
,
TD_LIST_FORWARD
);
SListNode
*
pNode
=
NULL
;
while
((
pNode
=
tdListNext
(
&
iter
))
!=
NULL
)
{
setMD5DigestInKey
(
p
,
pNode
->
data
,
2
*
sizeof
(
uint64_t
));
taosLRUCacheErase
(
pMeta
->
pCache
->
STbGroupResCache
.
pResCache
,
p
,
TAG_FILTER_RES_KEY_LEN
);
}
tdListEmpty
(
&
(
*
pEntry
)
->
list
);
taosThreadMutexUnlock
(
pLock
);
metaDebug
(
"vgId:%d suid:%"
PRId64
" cached related tb group cleared"
,
vgId
,
suid
);
return
TSDB_CODE_SUCCESS
;
}
source/dnode/vnode/src/meta/metaTable.c
浏览文件 @
c83367e4
...
@@ -767,6 +767,7 @@ int metaCreateTable(SMeta *pMeta, int64_t version, SVCreateTbReq *pReq, STableMe
...
@@ -767,6 +767,7 @@ int metaCreateTable(SMeta *pMeta, int64_t version, SVCreateTbReq *pReq, STableMe
metaWLock
(
pMeta
);
metaWLock
(
pMeta
);
metaUpdateStbStats
(
pMeta
,
me
.
ctbEntry
.
suid
,
1
);
metaUpdateStbStats
(
pMeta
,
me
.
ctbEntry
.
suid
,
1
);
metaUidCacheClear
(
pMeta
,
me
.
ctbEntry
.
suid
);
metaUidCacheClear
(
pMeta
,
me
.
ctbEntry
.
suid
);
metaTbGroupCacheClear
(
pMeta
,
me
.
ctbEntry
.
suid
);
metaULock
(
pMeta
);
metaULock
(
pMeta
);
}
else
{
}
else
{
me
.
ntbEntry
.
ctime
=
pReq
->
ctime
;
me
.
ntbEntry
.
ctime
=
pReq
->
ctime
;
...
@@ -999,6 +1000,7 @@ static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type) {
...
@@ -999,6 +1000,7 @@ static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type) {
metaUpdateStbStats
(
pMeta
,
e
.
ctbEntry
.
suid
,
-
1
);
metaUpdateStbStats
(
pMeta
,
e
.
ctbEntry
.
suid
,
-
1
);
metaUidCacheClear
(
pMeta
,
e
.
ctbEntry
.
suid
);
metaUidCacheClear
(
pMeta
,
e
.
ctbEntry
.
suid
);
metaTbGroupCacheClear
(
pMeta
,
e
.
ctbEntry
.
suid
);
}
else
if
(
e
.
type
==
TSDB_NORMAL_TABLE
)
{
}
else
if
(
e
.
type
==
TSDB_NORMAL_TABLE
)
{
// drop schema.db (todo)
// drop schema.db (todo)
...
@@ -1010,6 +1012,7 @@ static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type) {
...
@@ -1010,6 +1012,7 @@ static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type) {
metaStatsCacheDrop
(
pMeta
,
uid
);
metaStatsCacheDrop
(
pMeta
,
uid
);
metaUidCacheClear
(
pMeta
,
uid
);
metaUidCacheClear
(
pMeta
,
uid
);
metaTbGroupCacheClear
(
pMeta
,
uid
);
--
pMeta
->
pVnode
->
config
.
vndStats
.
numOfSTables
;
--
pMeta
->
pVnode
->
config
.
vndStats
.
numOfSTables
;
}
}
...
@@ -1430,6 +1433,7 @@ static int metaUpdateTableTagVal(SMeta *pMeta, int64_t version, SVAlterTbReq *pA
...
@@ -1430,6 +1433,7 @@ static int metaUpdateTableTagVal(SMeta *pMeta, int64_t version, SVAlterTbReq *pA
((
STag
*
)(
ctbEntry
.
ctbEntry
.
pTags
))
->
len
,
pMeta
->
txn
);
((
STag
*
)(
ctbEntry
.
ctbEntry
.
pTags
))
->
len
,
pMeta
->
txn
);
metaUidCacheClear
(
pMeta
,
ctbEntry
.
ctbEntry
.
suid
);
metaUidCacheClear
(
pMeta
,
ctbEntry
.
ctbEntry
.
suid
);
metaTbGroupCacheClear
(
pMeta
,
ctbEntry
.
ctbEntry
.
suid
);
metaULock
(
pMeta
);
metaULock
(
pMeta
);
...
...
source/libs/executor/src/executil.c
浏览文件 @
c83367e4
...
@@ -454,15 +454,14 @@ static void genTagFilterDigest(const SNode* pTagCond, T_MD5_CTX* pContext) {
...
@@ -454,15 +454,14 @@ static void genTagFilterDigest(const SNode* pTagCond, T_MD5_CTX* pContext) {
}
}
int32_t
getColInfoResultForGroupby
(
void
*
metaHandle
,
uint64_t
suid
,
SNodeList
*
group
,
STableListInfo
*
pTableListInfo
)
{
int32_t
getColInfoResultForGroupby
(
void
*
metaHandle
,
SNodeList
*
group
,
STableListInfo
*
pTableListInfo
)
{
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
SArray
*
pBlockList
=
NULL
;
SArray
*
pBlockList
=
NULL
;
SSDataBlock
*
pResBlock
=
NULL
;
SSDataBlock
*
pResBlock
=
NULL
;
void
*
keyBuf
=
NULL
;
void
*
keyBuf
=
NULL
;
SArray
*
groupData
=
NULL
;
SArray
*
groupData
=
NULL
;
SArray
*
pUidTagList
=
NULL
;
SArray
*
pUidTagList
=
NULL
;
static
T_MD5_CTX
lastMd5
=
{
-
1
};
SArray
*
tableList
=
NULL
;
static
SArray
*
lastTableList
=
NULL
;
static
SHashObj
*
pTableListHash
=
NULL
;
static
SHashObj
*
pTableListHash
=
NULL
;
int32_t
rows
=
taosArrayGetSize
(
pTableListInfo
->
pTableList
);
int32_t
rows
=
taosArrayGetSize
(
pTableListInfo
->
pTableList
);
...
@@ -498,10 +497,10 @@ int32_t getColInfoResultForGroupby(void* metaHandle, uint64_t suid, SNodeList* g
...
@@ -498,10 +497,10 @@ int32_t getColInfoResultForGroupby(void* metaHandle, uint64_t suid, SNodeList* g
SArray
**
pLastTableList
=
(
SArray
**
)
taosHashGet
(
pTableListHash
,
context
.
digest
,
sizeof
(
context
.
digest
));
SArray
**
pLastTableList
=
(
SArray
**
)
taosHashGet
(
pTableListHash
,
context
.
digest
,
sizeof
(
context
.
digest
));
if
(
pLastTableList
&&
*
pLastTableList
)
{
if
(
pLastTableList
&&
*
pLastTableList
)
{
pTableListInfo
->
pTableList
=
taosArrayDup
(
l
astTableList
,
NULL
);
pTableListInfo
->
pTableList
=
taosArrayDup
(
*
pL
astTableList
,
NULL
);
goto
end
;
goto
end
;
}
else
{
}
else
{
qError
(
"group not hit
, last:%p, lastSize:%d, newSize:%d"
,
lastTableList
,
(
int32_t
)
taosArrayGetSize
(
lastTableList
),
(
int32_t
)
taosArrayGetSize
(
pTableListInfo
->
pTableList
)
);
qError
(
"group not hit
"
);
}
}
pUidTagList
=
taosArrayInit
(
8
,
sizeof
(
STUidTagInfo
));
pUidTagList
=
taosArrayInit
(
8
,
sizeof
(
STUidTagInfo
));
...
@@ -637,8 +636,8 @@ int32_t getColInfoResultForGroupby(void* metaHandle, uint64_t suid, SNodeList* g
...
@@ -637,8 +636,8 @@ int32_t getColInfoResultForGroupby(void* metaHandle, uint64_t suid, SNodeList* g
}
}
}
}
lastT
ableList
=
taosArrayDup
(
pTableListInfo
->
pTableList
,
NULL
);
t
ableList
=
taosArrayDup
(
pTableListInfo
->
pTableList
,
NULL
);
taosHashPut
(
pTableListHash
,
context
.
digest
,
sizeof
(
context
.
digest
),
&
lastT
ableList
,
POINTER_BYTES
);
taosHashPut
(
pTableListHash
,
context
.
digest
,
sizeof
(
context
.
digest
),
&
t
ableList
,
POINTER_BYTES
);
// int64_t st2 = taosGetTimestampUs();
// int64_t st2 = taosGetTimestampUs();
// qDebug("calculate tag block rows:%d, cost:%ld us", rows, st2-st1);
// qDebug("calculate tag block rows:%d, cost:%ld us", rows, st2-st1);
...
@@ -2046,7 +2045,7 @@ int32_t buildGroupIdMapForAllTables(STableListInfo* pTableListInfo, SReadHandle*
...
@@ -2046,7 +2045,7 @@ int32_t buildGroupIdMapForAllTables(STableListInfo* pTableListInfo, SReadHandle*
pTableListInfo
->
numOfOuputGroups
=
1
;
pTableListInfo
->
numOfOuputGroups
=
1
;
}
}
}
else
{
}
else
{
code
=
getColInfoResultForGroupby
(
pHandle
->
meta
,
pScanNode
->
suid
,
group
,
pTableListInfo
);
code
=
getColInfoResultForGroupby
(
pHandle
->
meta
,
group
,
pTableListInfo
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
return
code
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录