@@ -3845,12 +3845,6 @@ static int32_t doTagScanFromMetaEntryNext(SOperatorInfo* pOperator, SSDataBlock*
38453845 return code ;
38463846}
38473847
3848- static SSDataBlock * doTagScanFromMetaEntry (SOperatorInfo * pOperator ) {
3849- SSDataBlock * pRes = NULL ;
3850- int32_t code = doTagScanFromMetaEntryNext (pOperator , & pRes );
3851- return pRes ;
3852- }
3853-
38543848static void destroyTagScanOperatorInfo (void * param ) {
38553849 STagScanInfo * pInfo = (STagScanInfo * )param ;
38563850 if (pInfo -> pCtbCursor != NULL && pInfo -> pStorageAPI != NULL ) {
@@ -3870,6 +3864,24 @@ static void destroyTagScanOperatorInfo(void* param) {
38703864 taosMemoryFreeClear (param );
38713865}
38723866
3867+ static int32_t resetTagScanOperatorState (SOperatorInfo * pOper ) {
3868+ int32_t code = TSDB_CODE_SUCCESS ;
3869+ STagScanInfo * pInfo = pOper -> info ;
3870+
3871+ pOper -> status = OP_NOT_OPENED ;
3872+ STagScanPhysiNode * pTagScanNode = (STagScanPhysiNode * )pOper -> pPhyNode ;
3873+ if (pTagScanNode -> onlyMetaCtbIdx ) {
3874+ SExecTaskInfo * pTaskInfo = pOper -> pTaskInfo ;
3875+ SStorageAPI * pAPI = & pTaskInfo -> storageAPI ;
3876+ pAPI -> metaFn .closeCtbCursor (pInfo -> pCtbCursor );
3877+ pInfo -> pCtbCursor = NULL ;
3878+ } else {
3879+ pInfo -> curPos = 0 ;
3880+ }
3881+
3882+ return code ;
3883+ }
3884+
38733885int32_t createTagScanOperatorInfo (SReadHandle * pReadHandle , STagScanPhysiNode * pTagScanNode ,
38743886 STableListInfo * pTableListInfo , SNode * pTagCond , SNode * pTagIndexCond ,
38753887 SExecTaskInfo * pTaskInfo , SOperatorInfo * * pOptrInfo ) {
@@ -3884,7 +3896,7 @@ int32_t createTagScanOperatorInfo(SReadHandle* pReadHandle, STagScanPhysiNode* p
38843896 code = terrno ;
38853897 goto _error ;
38863898 }
3887-
3899+ pOperator -> pPhyNode = pTagScanNode ;
38883900 SDataBlockDescNode * pDescNode = pPhyNode -> node .pOutputDataBlockDesc ;
38893901
38903902 int32_t numOfExprs = 0 ;
@@ -3940,6 +3952,8 @@ int32_t createTagScanOperatorInfo(SReadHandle* pReadHandle, STagScanPhysiNode* p
39403952 __optr_fn_t tagScanNextFn = (pTagScanNode -> onlyMetaCtbIdx ) ? doTagScanFromCtbIdxNext : doTagScanFromMetaEntryNext ;
39413953 pOperator -> fpSet = createOperatorFpSet (optrDummyOpenFn , tagScanNextFn , NULL , destroyTagScanOperatorInfo ,
39423954 optrDefaultBufFn , NULL , optrDefaultGetNextExtFn , NULL );
3955+ setOperatorResetStateFn (pOperator , resetTagScanOperatorState );
3956+
39433957 * pOptrInfo = pOperator ;
39443958 return code ;
39453959
0 commit comments