From c13cea4f444d538267259d1eb411667784175082 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Mon, 27 Feb 2023 14:34:38 +0800 Subject: [PATCH 1/2] fix: avoid filter slow when filter not exist value --- source/dnode/vnode/src/meta/metaQuery.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/dnode/vnode/src/meta/metaQuery.c b/source/dnode/vnode/src/meta/metaQuery.c index 4b1163bb11..d338237314 100644 --- a/source/dnode/vnode/src/meta/metaQuery.c +++ b/source/dnode/vnode/src/meta/metaQuery.c @@ -1301,6 +1301,7 @@ int32_t metaFilterTableIds(SMeta *pMeta, SMetaFltParam *param, SArray *pUids) { /// src: [[suid, cid1, type1]....[suid, cid2, type2]....[suid, cid3, type3]...] /// target: [suid, cid2, type2] + int diffCidCount = 0; do { void *entryKey = NULL, *entryVal = NULL; int32_t nEntryKey, nEntryVal; @@ -1317,7 +1318,9 @@ int32_t metaFilterTableIds(SMeta *pMeta, SMetaFltParam *param, SArray *pUids) { if (p == NULL) break; if (p->type != pCursor->type || p->suid != pCursor->suid || p->cid != pCursor->cid) { - if (found == true) break; + if (found == true) break; // + if (diffCidCount > TRY_ERROR_LIMIT) break; + diffCidCount++; count++; valid = param->reverse ? tdbTbcMoveToPrev(pCursor->pCur) : tdbTbcMoveToNext(pCursor->pCur); if (valid < 0) { From d9f8a84a55d8ddbbcba4077bc080c07de5b2a11b Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Mon, 27 Feb 2023 16:03:49 +0800 Subject: [PATCH 2/2] fix: avoid filter slow when filter not exist value --- tests/script/tsim/tagindex/add_index.sim | 55 ++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/tests/script/tsim/tagindex/add_index.sim b/tests/script/tsim/tagindex/add_index.sim index 4e883ef150..cfbec90542 100644 --- a/tests/script/tsim/tagindex/add_index.sim +++ b/tests/script/tsim/tagindex/add_index.sim @@ -7,7 +7,7 @@ print ======== step0 $dbPrefix = ta_3_db $tbPrefix = ta_3_tb $mtPrefix = ta_3_mt -$tbNum = 100 +$tbNum = 500 $rowNum = 20 $totalNum = 200 @@ -26,9 +26,10 @@ endi print =============== create child table $i = 0 +$val = 1 while $i < $tbNum $tb = $tbPrefix . $i - sql create table $tb using $mtPrefix tags( $i , $i , $i , $i , $i ); + sql create table $tb using $mtPrefix tags( $i , $i , $i , $i , $val ); $i = $i + 1 endw @@ -49,6 +50,7 @@ endw sql create index ti2 on $mtPrefix (t2) +sql create index ti5 on $mtPrefix (t5) print ==== test name conflict # @@ -120,6 +122,53 @@ while $i < $tbNum $i = $i + 1 endw + + +# test special boundary condtion +print ===== test operator low on ti5 +# great equal than +sql select * from $mtPrefix where t5 < 0 ; +if $rows != 0 then + return -1 +endi + +print ===== test operator lower equal on ti5 +# great equal than +sql select * from $mtPrefix where t5 <= $val ; +if $rows != $tbNum then + return -1 +endi + +print ===== test operator equal on ti5 +# great equal than +sql select * from $mtPrefix where t5 = $val ; +if $rows != $tbNum then + return -1 +endi + +print ===== test operator great equal on ti5 +# great equal than +sql select * from $mtPrefix where t5 >= $val ; +if $rows != $tbNum then + return -1 +endi + +print ===== test operator great than on ti5 +# great equal than +sql select * from $mtPrefix where t5 > $val ; +if $rows != 0 then + return -1 +endi + +print ===== test operator great on ti5 +# great equal than +sql select * from $mtPrefix where t5 > $val + 1 ; +if $rows != 0 then + return -1 +endi + +sql drop index ti5 + print ===== add table after index created $interval = $tbNum + $tbNum $i = $interval @@ -130,8 +179,6 @@ while $i < $limit $i = $i + 1 endw - - print ===== add table after index created (opeator great equal than) # great equal than $i = $interval