Merge pull request #16618 from taosdata/fix/TD-18854
fix: rlock for meta uid index querying from query related threads
This commit is contained in:
commit
88bc40527b
|
@ -129,10 +129,16 @@ _err:
|
||||||
|
|
||||||
bool metaIsTableExist(SMeta *pMeta, tb_uid_t uid) {
|
bool metaIsTableExist(SMeta *pMeta, tb_uid_t uid) {
|
||||||
// query uid.idx
|
// query uid.idx
|
||||||
|
metaRLock(pMeta);
|
||||||
|
|
||||||
if (tdbTbGet(pMeta->pUidIdx, &uid, sizeof(uid), NULL, NULL) < 0) {
|
if (tdbTbGet(pMeta->pUidIdx, &uid, sizeof(uid), NULL, NULL) < 0) {
|
||||||
|
metaULock(pMeta);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
metaULock(pMeta);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,9 +188,14 @@ tb_uid_t metaGetTableEntryUidByName(SMeta *pMeta, const char *name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int metaGetTableNameByUid(void *meta, uint64_t uid, char *tbName) {
|
int metaGetTableNameByUid(void *meta, uint64_t uid, char *tbName) {
|
||||||
|
int code = 0;
|
||||||
SMetaReader mr = {0};
|
SMetaReader mr = {0};
|
||||||
metaReaderInit(&mr, (SMeta *)meta, 0);
|
metaReaderInit(&mr, (SMeta *)meta, 0);
|
||||||
metaGetTableEntryByUid(&mr, uid);
|
code = metaGetTableEntryByUid(&mr, uid);
|
||||||
|
if (code < 0) {
|
||||||
|
metaReaderClear(&mr);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
STR_TO_VARSTR(tbName, mr.me.name);
|
STR_TO_VARSTR(tbName, mr.me.name);
|
||||||
metaReaderClear(&mr);
|
metaReaderClear(&mr);
|
||||||
|
|
|
@ -158,6 +158,8 @@ print =============== restart
|
||||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
||||||
system sh/exec.sh -n dnode1 -s start -v
|
system sh/exec.sh -n dnode1 -s start -v
|
||||||
|
|
||||||
|
sleep 1000
|
||||||
|
|
||||||
sql select avg(tbcol) as c from stb
|
sql select avg(tbcol) as c from stb
|
||||||
sql select avg(tbcol) as c from stb where ts <= 1601481840000
|
sql select avg(tbcol) as c from stb where ts <= 1601481840000
|
||||||
sql select avg(tbcol) as c from stb where tgcol < 5 and ts <= 1601481840000
|
sql select avg(tbcol) as c from stb where tgcol < 5 and ts <= 1601481840000
|
||||||
|
|
Loading…
Reference in New Issue