Merge pull request #17262 from taosdata/fix/TD-19416
fix(query): new META_READER_NOLOCK flag for metaReaderInit
This commit is contained in:
commit
f9df999a05
|
@ -91,6 +91,8 @@ typedef struct SMeta SMeta; // todo: remove
|
||||||
typedef struct SMetaReader SMetaReader;
|
typedef struct SMetaReader SMetaReader;
|
||||||
typedef struct SMetaEntry SMetaEntry;
|
typedef struct SMetaEntry SMetaEntry;
|
||||||
|
|
||||||
|
#define META_READER_NOLOCK 0x1
|
||||||
|
|
||||||
void metaReaderInit(SMetaReader *pReader, SMeta *pMeta, int32_t flags);
|
void metaReaderInit(SMetaReader *pReader, SMeta *pMeta, int32_t flags);
|
||||||
void metaReaderClear(SMetaReader *pReader);
|
void metaReaderClear(SMetaReader *pReader);
|
||||||
int32_t metaGetTableEntryByUid(SMetaReader *pReader, tb_uid_t uid);
|
int32_t metaGetTableEntryByUid(SMetaReader *pReader, tb_uid_t uid);
|
||||||
|
|
|
@ -19,11 +19,13 @@ void metaReaderInit(SMetaReader *pReader, SMeta *pMeta, int32_t flags) {
|
||||||
memset(pReader, 0, sizeof(*pReader));
|
memset(pReader, 0, sizeof(*pReader));
|
||||||
pReader->flags = flags;
|
pReader->flags = flags;
|
||||||
pReader->pMeta = pMeta;
|
pReader->pMeta = pMeta;
|
||||||
metaRLock(pMeta);
|
if (!(flags & META_READER_NOLOCK)) {
|
||||||
|
metaRLock(pMeta);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void metaReaderClear(SMetaReader *pReader) {
|
void metaReaderClear(SMetaReader *pReader) {
|
||||||
if (pReader->pMeta) {
|
if (pReader->pMeta && !(pReader->flags & META_READER_NOLOCK)) {
|
||||||
metaULock(pReader->pMeta);
|
metaULock(pReader->pMeta);
|
||||||
}
|
}
|
||||||
tDecoderClear(&pReader->coder);
|
tDecoderClear(&pReader->coder);
|
||||||
|
|
|
@ -2757,7 +2757,7 @@ static SSDataBlock* sysTableScanUserTables(SOperatorInfo* pOperator) {
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&ts, false);
|
colDataAppend(pColInfoData, numOfRows, (char*)&ts, false);
|
||||||
|
|
||||||
SMetaReader mr = {0};
|
SMetaReader mr = {0};
|
||||||
metaReaderInit(&mr, pInfo->readHandle.meta, 0);
|
metaReaderInit(&mr, pInfo->readHandle.meta, META_READER_NOLOCK);
|
||||||
|
|
||||||
uint64_t suid = pInfo->pCur->mr.me.ctbEntry.suid;
|
uint64_t suid = pInfo->pCur->mr.me.ctbEntry.suid;
|
||||||
int32_t code = metaGetTableEntryByUid(&mr, suid);
|
int32_t code = metaGetTableEntryByUid(&mr, suid);
|
||||||
|
|
Loading…
Reference in New Issue