From 4be4a0462127c0c79de41f1566d51b5a3170f33f Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao> Date: Thu, 16 May 2024 09:53:53 +0800 Subject: [PATCH] fix(meta scan):check system table scan result --- source/libs/executor/src/sysscanoperator.c | 86 +++++----- tests/script/tsim/query/sys_tbname.sim | 173 +++++++++++++++++++++ 2 files changed, 219 insertions(+), 40 deletions(-) diff --git a/source/libs/executor/src/sysscanoperator.c b/source/libs/executor/src/sysscanoperator.c index db83c46155..10d38b3d95 100644 --- a/source/libs/executor/src/sysscanoperator.c +++ b/source/libs/executor/src/sysscanoperator.c @@ -1651,50 +1651,56 @@ static SSDataBlock* doSysTableScan(SOperatorInfo* pOperator) { SSysTableScanInfo* pInfo = pOperator->info; char dbName[TSDB_DB_NAME_LEN] = {0}; - if (isTaskKilled(pOperator->pTaskInfo)) { - setOperatorCompleted(pOperator); - return NULL; - } + while (1) { - blockDataCleanup(pInfo->pRes); - - const char* name = tNameGetTableName(&pInfo->name); - if (pInfo->showRewrite) { - getDBNameFromCondition(pInfo->pCondition, dbName); - if (strncasecmp(name, TSDB_INS_TABLE_COMPACTS, TSDB_TABLE_FNAME_LEN) != 0 && - strncasecmp(name, TSDB_INS_TABLE_COMPACT_DETAILS, TSDB_TABLE_FNAME_LEN) != 0) { - sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); - } - } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0) { - getDBNameFromCondition(pInfo->pCondition, dbName); - if (dbName[0]) sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); - sysTableIsCondOnOneTable(pInfo->pCondition, pInfo->req.filterTb); - } - - SSDataBlock* pBlock = NULL; - if (strncasecmp(name, TSDB_INS_TABLE_TABLES, TSDB_TABLE_FNAME_LEN) == 0) { - pBlock = sysTableScanUserTables(pOperator); - } else if (strncasecmp(name, TSDB_INS_TABLE_TAGS, TSDB_TABLE_FNAME_LEN) == 0) { - pBlock = sysTableScanUserTags(pOperator); - } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->readHandle.mnd == NULL) { - pBlock = sysTableScanUserCols(pOperator); - } else if (strncasecmp(name, TSDB_INS_TABLE_STABLES, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->showRewrite && - IS_SYS_DBNAME(dbName)) { - pBlock = sysTableScanUserSTables(pOperator); - } else { // load the meta from mnode of the given epset - pBlock = sysTableScanFromMNode(pOperator, pInfo, name, pTaskInfo); - } - - sysTableScanFillTbName(pOperator, pInfo, name, pBlock); - if (pBlock != NULL) { - bool limitReached = applyLimitOffset(&pInfo->limitInfo, pBlock, pTaskInfo); - if (limitReached) { + if (isTaskKilled(pOperator->pTaskInfo)) { setOperatorCompleted(pOperator); + return NULL; } - return pBlock->info.rows > 0 ? pBlock : NULL; - } else { - return NULL; + blockDataCleanup(pInfo->pRes); + + const char* name = tNameGetTableName(&pInfo->name); + if (pInfo->showRewrite) { + getDBNameFromCondition(pInfo->pCondition, dbName); + if (strncasecmp(name, TSDB_INS_TABLE_COMPACTS, TSDB_TABLE_FNAME_LEN) != 0 && + strncasecmp(name, TSDB_INS_TABLE_COMPACT_DETAILS, TSDB_TABLE_FNAME_LEN) != 0) { + sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); + } + } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0) { + getDBNameFromCondition(pInfo->pCondition, dbName); + if (dbName[0]) sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); + sysTableIsCondOnOneTable(pInfo->pCondition, pInfo->req.filterTb); + } + + SSDataBlock* pBlock = NULL; + if (strncasecmp(name, TSDB_INS_TABLE_TABLES, TSDB_TABLE_FNAME_LEN) == 0) { + pBlock = sysTableScanUserTables(pOperator); + } else if (strncasecmp(name, TSDB_INS_TABLE_TAGS, TSDB_TABLE_FNAME_LEN) == 0) { + pBlock = sysTableScanUserTags(pOperator); + } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->readHandle.mnd == NULL) { + pBlock = sysTableScanUserCols(pOperator); + } else if (strncasecmp(name, TSDB_INS_TABLE_STABLES, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->showRewrite && + IS_SYS_DBNAME(dbName)) { + pBlock = sysTableScanUserSTables(pOperator); + } else { // load the meta from mnode of the given epset + pBlock = sysTableScanFromMNode(pOperator, pInfo, name, pTaskInfo); + } + + sysTableScanFillTbName(pOperator, pInfo, name, pBlock); + if (pBlock != NULL) { + bool limitReached = applyLimitOffset(&pInfo->limitInfo, pBlock, pTaskInfo); + if (limitReached) { + setOperatorCompleted(pOperator); + } + + if (pBlock->info.rows == 0) { + continue; + } + return pBlock; + } else { + return NULL; + } } } diff --git a/tests/script/tsim/query/sys_tbname.sim b/tests/script/tsim/query/sys_tbname.sim index 716937f073..7739ea5373 100644 --- a/tests/script/tsim/query/sys_tbname.sim +++ b/tests/script/tsim/query/sys_tbname.sim @@ -135,4 +135,177 @@ endi print =========================== td-24781 sql select DISTINCT (`precision`) from `information_schema`.`ins_databases` PARTITION BY `precision` +print =========================ins_stables + +print create database test vgroups 4; +sql create database test vgroups 4; +sql use test; +sql create stable st1(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st2(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st3(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st4(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st5(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st6(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st7(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st8(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st9(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st10(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st11(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st12(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st13(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st14(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st15(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st16(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st17(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st18(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st19(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st20(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st21(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st22(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st23(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st24(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st25(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st26(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st27(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st28(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st29(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st30(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st31(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st32(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st33(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st34(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st35(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st36(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st37(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st38(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st39(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st40(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st41(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st42(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st43(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st44(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st45(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st46(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st47(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st48(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st49(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st50(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st51(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st52(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st53(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st54(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st55(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st56(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st57(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st58(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st59(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st60(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st61(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st62(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st63(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st64(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st65(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st66(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st67(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st68(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st69(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st70(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); + +print create database test1 vgroups 4; +sql create database test1 vgroups 4; +sql use test1; + +sql create stable st1(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st2(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st3(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st4(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st5(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st6(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st7(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st8(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st9(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st10(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st11(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st12(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st13(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st14(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st15(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st16(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st17(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st18(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st19(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st20(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st21(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st22(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st23(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st24(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st25(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st26(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st27(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st28(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st29(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st30(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st31(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st32(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st33(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st34(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st35(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st36(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st37(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st38(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st39(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st40(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st41(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st42(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st43(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st44(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st45(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st46(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st47(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st48(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st49(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st50(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st51(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st52(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st53(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st54(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st55(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st56(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st57(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st58(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st59(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st60(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st61(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st62(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st63(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st64(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st65(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st66(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st67(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st68(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st69(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st70(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); + +sleep 1000 + +sql select * from information_schema.ins_stables where db_name = "test" limit 68,32; + +print $data00 $data01 $data02 $data03 +print $data10 $data11 $data12 $data13 +print $data20 $data21 $data22 $data23 + +if $rows != 2 then + return -1 +endi + +sql select * from information_schema.ins_stables where db_name = "test1" limit 68,32; + +print $data00 $data01 $data02 $data03 +print $data10 $data11 $data12 $data13 +print $data20 $data21 $data22 $data23 + +if $rows != 2 then + return -1 +endi + #system sh/exec.sh -n dnode1 -s stop -x SIGINT