From 00cd24711a4726122a024abad19de0bb3dda094e Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Wed, 10 Aug 2022 19:17:19 +0800 Subject: [PATCH] fix(query): subscribe remove block check block window --- src/query/src/qExecutor.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/query/src/qExecutor.c b/src/query/src/qExecutor.c index 1be4334d19..3edd19e016 100644 --- a/src/query/src/qExecutor.c +++ b/src/query/src/qExecutor.c @@ -5433,21 +5433,25 @@ static SSDataBlock* doTableScanImpl(void* param, bool* newgroup) { } // check windows condition - int64_t skey = (*pTableQueryInfo)->win.skey; - if (QUERY_IS_ASC_QUERY(pQueryAttr)) { - // ASC - if ( skey > pBlock->info.window.ekey ) { - qWarn(" pTableQueryInfo skey(%" PRId64 ") > pBlock ekey(%" PRId64 "), so remove this block. pBlock skey=%" PRId64 " tid=%d", - skey, pBlock->info.window.ekey, pBlock->info.window.skey, pBlock->info.tid); - continue; - } - } else { - // DESC - if ( skey < pBlock->info.window.skey ) { - qWarn(" pTableQueryInfo skey(%" PRId64 ") < pBlock skey(%" PRId64 "), so remove this block. pBlock ekey=%" PRId64 "tid=%d", - skey, pBlock->info.window.skey, pBlock->info.window.ekey, pBlock->info.tid); - continue; - } + if (pBlock->info.window.skey != INT64_MIN && pBlock->info.window.skey != INT64_MAX && + pBlock->info.window.ekey != INT64_MIN && pBlock->info.window.ekey != INT64_MAX) { + // normal block not specail block like last_row + int64_t skey = (*pTableQueryInfo)->win.skey; + if (QUERY_IS_ASC_QUERY(pQueryAttr)) { + // ASC + if ( skey > pBlock->info.window.ekey ) { + qWarn(" pTableQueryInfo skey(%" PRId64 ") > pBlock ekey(%" PRId64 "), so remove this block. pBlock skey=%" PRId64 " tid=%d", + skey, pBlock->info.window.ekey, pBlock->info.window.skey, pBlock->info.tid); + continue; + } + } else { + // DESC + if ( skey < pBlock->info.window.skey ) { + qWarn(" pTableQueryInfo skey(%" PRId64 ") < pBlock skey(%" PRId64 "), so remove this block. pBlock ekey=%" PRId64 "tid=%d", + skey, pBlock->info.window.skey, pBlock->info.window.ekey, pBlock->info.tid); + continue; + } + } } pRuntimeEnv->current = *pTableQueryInfo; -- GitLab