diff --git a/src/query/src/qExecutor.c b/src/query/src/qExecutor.c index 1be4334d19e0fbffc079f53eadd8aae71c2f777e..3edd19e016cd08e2ef1e8f7f3a5dfbc7c3252e79 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;