@@ -365,6 +365,24 @@ int32_t retrieveWalData(SSubmitTbData* pSubmitTbData, void* pTableList, SSDataBl
365365 return code ;
366366}
367367
368+ static int32_t buildDeleteData (void * pTableList , bool isVTable , SSDataBlock * pBlock , SDeleteRes * req , int64_t uid , int64_t ver ){
369+ int32_t code = 0 ;
370+ int32_t lino = 0 ;
371+ uint64_t gid = 0 ;
372+ if (isVTable ) {
373+ STREAM_CHECK_CONDITION_GOTO (taosHashGet (pTableList , & uid , sizeof (uid )) == NULL , TDB_CODE_SUCCESS )
374+ } else {
375+ gid = qStreamGetGroupId (pTableList , uid );
376+ STREAM_CHECK_CONDITION_GOTO (gid == -1 , TDB_CODE_SUCCESS );
377+ }
378+ STREAM_CHECK_RET_GOTO (
379+ buildWalMetaBlock (pBlock , WAL_DELETE_DATA , gid , isVTable , uid , req -> skey , req -> ekey , ver , 1 ));
380+ pBlock -> info .rows ++ ;
381+
382+ end :
383+ return code ;
384+ }
385+
368386static int32_t scanDeleteData (void * pTableList , bool isVTable , SSDataBlock * pBlock , void * data , int32_t len ,
369387 int64_t ver ) {
370388 int32_t code = 0 ;
@@ -373,18 +391,14 @@ static int32_t scanDeleteData(void* pTableList, bool isVTable, SSDataBlock* pBlo
373391 SDeleteRes req = {0 };
374392 tDecoderInit (& decoder , data , len );
375393 STREAM_CHECK_RET_GOTO (tDecodeDeleteRes (& decoder , & req ));
376- uint64_t gid = 0 ;
377- if (isVTable ) {
378- STREAM_CHECK_CONDITION_GOTO (taosHashGet (pTableList , & req .suid , sizeof (req .suid )) == NULL , TDB_CODE_SUCCESS )
379- } else {
380- gid = qStreamGetGroupId (pTableList , req .suid );
381- STREAM_CHECK_CONDITION_GOTO (gid == -1 , TDB_CODE_SUCCESS );
394+
395+ for (int32_t i = 0 ; i < taosArrayGetSize (req .uidList ); i ++ ) {
396+ uint64_t * uid = taosArrayGet (req .uidList , i );
397+ STREAM_CHECK_NULL_GOTO (uid , terrno );
398+ STREAM_CHECK_RET_GOTO (buildDeleteData (pTableList , isVTable , pBlock , & req , * uid , ver ));
382399 }
383- STREAM_CHECK_RET_GOTO (
384- buildWalMetaBlock (pBlock , WAL_DELETE_DATA , gid , isVTable , req .suid , req .skey , req .ekey , ver , 1 ));
385- pBlock -> info .rows ++ ;
386- stDebug ("stream reader scan delete data:uid %" PRIu64 ", skey %" PRIu64 ", ekey %" PRIu64 ", gid %" PRIu64 , req .suid ,
387- req .skey , req .ekey , gid );
400+ stDebug ("stream reader scan delete data:uid %" PRIu64 ", skey %" PRIu64 ", ekey %" PRIu64 , req .suid ,
401+ req .skey , req .ekey );
388402
389403end :
390404 tDecoderClear (& decoder );
@@ -455,14 +469,14 @@ static int32_t scanWal(SVnode* pVnode, void* pTableList, bool isVTable, SSDataBl
455469 int32_t code = 0 ;
456470 int32_t lino = 0 ;
457471
458- SWalReader * pWalReader = walOpenReader (pVnode -> pWal , NULL , 0 );
472+ SWalReader * pWalReader = walOpenReader (pVnode -> pWal , 0 );
459473 STREAM_CHECK_NULL_GOTO (pWalReader , terrno );
460474 * retVer = walGetLastVer (pWalReader -> pWal );
461475 STREAM_CHECK_CONDITION_GOTO (walReaderSeekVer (pWalReader , lastVer + 1 ) != 0 , TSDB_CODE_SUCCESS );
462476
463477 while (1 ) {
464478 * retVer = walGetLastVer (pWalReader -> pWal );
465- STREAM_CHECK_CONDITION_GOTO (walNextValidMsg (pWalReader ) < 0 , TSDB_CODE_SUCCESS );
479+ STREAM_CHECK_CONDITION_GOTO (walNextValidMsg (pWalReader , true ) < 0 , TSDB_CODE_SUCCESS );
466480
467481 SWalCont * wCont = & pWalReader -> pHead -> head ;
468482 if (wCont -> ingestTs / 1000 > ctime ) break ;
@@ -498,7 +512,7 @@ int32_t scanWalOneVer(SVnode* pVnode, void* pTableList, SSDataBlock* pBlock, SSD
498512 SSubmitReq2 submit = {0 };
499513 SDecoder decoder = {0 };
500514
501- SWalReader * pWalReader = walOpenReader (pVnode -> pWal , NULL , 0 );
515+ SWalReader * pWalReader = walOpenReader (pVnode -> pWal , 0 );
502516 STREAM_CHECK_NULL_GOTO (pWalReader , terrno );
503517
504518 STREAM_CHECK_RET_GOTO (walFetchHead (pWalReader , ver ));
0 commit comments