avoid filter invalid table

This commit is contained in:
yihaoDeng 2022-08-17 15:28:49 +08:00
parent 4f16771de4
commit a036d64ae0
1 changed files with 72 additions and 69 deletions

View File

@ -53,7 +53,7 @@ _err:
return -1; return -1;
} }
//int metaGetTableEntryByUidTest(void* meta, SArray *uidList) { // int metaGetTableEntryByUidTest(void* meta, SArray *uidList) {
// //
// SArray* readerList = taosArrayInit(taosArrayGetSize(uidList), sizeof(SMetaReader)); // SArray* readerList = taosArrayInit(taosArrayGetSize(uidList), sizeof(SMetaReader));
// SArray* uidVersion = taosArrayInit(taosArrayGetSize(uidList), sizeof(STbDbKey)); // SArray* uidVersion = taosArrayInit(taosArrayGetSize(uidList), sizeof(STbDbKey));
@ -125,7 +125,7 @@ _err:
// int64_t stt5 = taosGetTimestampUs(); // int64_t stt5 = taosGetTimestampUs();
// qDebug("metaGetTableEntryByUidTest4 rows:%d, cost:%ld us", taosArrayGetSize(readerList), stt5-stt4); // qDebug("metaGetTableEntryByUidTest4 rows:%d, cost:%ld us", taosArrayGetSize(readerList), stt5-stt4);
// return 0; // return 0;
//} // }
int metaGetTableEntryByUid(SMetaReader *pReader, tb_uid_t uid) { int metaGetTableEntryByUid(SMetaReader *pReader, tb_uid_t uid) {
SMeta *pMeta = pReader->pMeta; SMeta *pMeta = pReader->pMeta;
@ -824,7 +824,7 @@ SArray *metaGetSmaTbUids(SMeta *pMeta) {
#endif #endif
const void *metaGetTableTagVal(void *pTag, int16_t type, STagVal *val) { const void *metaGetTableTagVal(void *pTag, int16_t type, STagVal *val) {
STag *tag = (STag*) pTag; STag *tag = (STag *)pTag;
if (type == TSDB_DATA_TYPE_JSON) { if (type == TSDB_DATA_TYPE_JSON) {
return tag; return tag;
} }
@ -926,6 +926,9 @@ int32_t metaFilterTableIds(SMeta *pMeta, SMetaFltParam *param, SArray *pUids) {
break; break;
} }
} }
if (p->suid != pKey->suid) {
break;
}
first = false; first = false;
if (p != NULL) { if (p != NULL) {
int32_t cmp = (*param->filterFunc)(p->data, pKey->data, pKey->type); int32_t cmp = (*param->filterFunc)(p->data, pKey->data, pKey->type);
@ -967,9 +970,9 @@ int32_t metaGetTableTags(SMeta *pMeta, uint64_t suid, SArray *uidList, SHashObj
SHashObj *uHash = NULL; SHashObj *uHash = NULL;
size_t len = taosArrayGetSize(uidList); // len > 0 means there already have uids size_t len = taosArrayGetSize(uidList); // len > 0 means there already have uids
if(len > 0){ if (len > 0) {
uHash = taosHashInit(32, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_NO_LOCK); uHash = taosHashInit(32, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_NO_LOCK);
for(int i = 0; i < len; i++){ for (int i = 0; i < len; i++) {
int64_t *uid = taosArrayGet(uidList, i); int64_t *uid = taosArrayGet(uidList, i);
taosHashPut(uHash, uid, sizeof(int64_t), &i, sizeof(i)); taosHashPut(uHash, uid, sizeof(int64_t), &i, sizeof(i));
} }
@ -982,7 +985,7 @@ int32_t metaGetTableTags(SMeta *pMeta, uint64_t suid, SArray *uidList, SHashObj
if (len > 0 && taosHashGet(uHash, &id, sizeof(int64_t)) == NULL) { if (len > 0 && taosHashGet(uHash, &id, sizeof(int64_t)) == NULL) {
continue; continue;
}else if (len == 0) { } else if (len == 0) {
taosArrayPush(uidList, &id); taosArrayPush(uidList, &id);
} }