opt sys query
This commit is contained in:
parent
54c7d6cbb9
commit
f612eafee8
|
@ -1106,8 +1106,41 @@ int32_t metaFilterTableName(SMeta *pMeta, SMetaFltParam *param, SArray *pUids) {
|
||||||
pCursor->cid = param->cid;
|
pCursor->cid = param->cid;
|
||||||
pCursor->type = param->type;
|
pCursor->type = param->type;
|
||||||
|
|
||||||
|
char *pName = param->val;
|
||||||
|
|
||||||
metaRLock(pMeta);
|
metaRLock(pMeta);
|
||||||
ret = tdbTbcOpen(pMeta->pNameIdx, &pCursor->pCur, NULL);
|
ret = tdbTbcOpen(pMeta->pNameIdx, &pCursor->pCur, NULL);
|
||||||
|
if (ret != 0) {
|
||||||
|
goto END;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cmp = 0;
|
||||||
|
if (tdbTbcMoveTo(pCursor->pCur, pName, strlen(pName) + 1, &cmp) < 0) {
|
||||||
|
goto END;
|
||||||
|
}
|
||||||
|
bool first = true;
|
||||||
|
int32_t valid = 0;
|
||||||
|
while (1) {
|
||||||
|
void *pEntryKey = NULL, *pEntryVal = NULL;
|
||||||
|
int32_t nEntryKey = -1, nEntryVal = 0;
|
||||||
|
valid = tdbTbcGet(pCursor->pCur, (const void **)pEntryKey, &nEntryKey, (const void **)&pEntryVal, &nEntryVal);
|
||||||
|
if (valid < 0) break;
|
||||||
|
|
||||||
|
char *pTableKey = (char *)pEntryKey;
|
||||||
|
int32_t cmp = (*param->filterFunc)(pTableKey, pName, pCursor->type);
|
||||||
|
if (cmp == 0) {
|
||||||
|
tb_uid_t tuid = *(tb_uid_t *)pEntryVal;
|
||||||
|
taosArrayPush(pUids, &tuid);
|
||||||
|
} else if (cmp == 1) {
|
||||||
|
// next
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
valid = param->reverse ? tdbTbcMoveToPrev(pCursor->pCur) : tdbTbcMoveToNext(pCursor->pCur);
|
||||||
|
if (valid < 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
END:
|
END:
|
||||||
if (pCursor->pMeta) metaULock(pCursor->pMeta);
|
if (pCursor->pMeta) metaULock(pCursor->pMeta);
|
||||||
|
@ -1215,6 +1248,7 @@ int32_t metaFilterTableIds(SMeta *pMeta, SMetaFltParam *param, SArray *pUids) {
|
||||||
|
|
||||||
valid = tdbTbcGet(pCursor->pCur, (const void **)&entryKey, &nEntryKey, (const void **)&entryVal, &nEntryVal);
|
valid = tdbTbcGet(pCursor->pCur, (const void **)&entryKey, &nEntryKey, (const void **)&entryVal, &nEntryVal);
|
||||||
if (valid < 0) {
|
if (valid < 0) {
|
||||||
|
tdbFree(entryVal);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
STagIdxKey *p = entryKey;
|
STagIdxKey *p = entryKey;
|
||||||
|
|
|
@ -3213,11 +3213,187 @@ static int32_t optSysTabFilte(void* arg, SNode* cond, SArray* result) {
|
||||||
return hasIdx == true ? 0 : -1;
|
return hasIdx == true ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SSDataBlock* sysTableBuildUserTables(SOperatorInfo* pOperator) {
|
||||||
|
SExecTaskInfo* pTaskInfo = pOperator->pTaskInfo;
|
||||||
|
SSysTableScanInfo* pInfo = pOperator->info;
|
||||||
|
if (pInfo->pCur == NULL) {
|
||||||
|
pInfo->pCur = metaOpenTbCursor(pInfo->readHandle.meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
blockDataCleanup(pInfo->pRes);
|
||||||
|
int32_t numOfRows = 0;
|
||||||
|
|
||||||
|
const char* db = NULL;
|
||||||
|
int32_t vgId = 0;
|
||||||
|
vnodeGetInfo(pInfo->readHandle.vnode, &db, &vgId);
|
||||||
|
|
||||||
|
SName sn = {0};
|
||||||
|
char dbname[TSDB_DB_FNAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
tNameFromString(&sn, db, T_NAME_ACCT | T_NAME_DB);
|
||||||
|
|
||||||
|
tNameGetDbName(&sn, varDataVal(dbname));
|
||||||
|
varDataSetLen(dbname, strlen(varDataVal(dbname)));
|
||||||
|
|
||||||
|
SSDataBlock* p = buildInfoSchemaTableMetaBlock(TSDB_INS_TABLE_TABLES);
|
||||||
|
blockDataEnsureCapacity(p, pOperator->resultInfo.capacity);
|
||||||
|
|
||||||
|
char n[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
|
||||||
|
int32_t ret = 0;
|
||||||
|
while ((ret = metaTbCursorNext(pInfo->pCur)) == 0) {
|
||||||
|
STR_TO_VARSTR(n, pInfo->pCur->mr.me.name);
|
||||||
|
|
||||||
|
// table name
|
||||||
|
SColumnInfoData* pColInfoData = taosArrayGet(p->pDataBlock, 0);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, n, false);
|
||||||
|
|
||||||
|
// database name
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 1);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, dbname, false);
|
||||||
|
|
||||||
|
// vgId
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 6);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, (char*)&vgId, false);
|
||||||
|
|
||||||
|
int32_t tableType = pInfo->pCur->mr.me.type;
|
||||||
|
if (tableType == TSDB_CHILD_TABLE) {
|
||||||
|
// create time
|
||||||
|
int64_t ts = pInfo->pCur->mr.me.ctbEntry.ctime;
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, (char*)&ts, false);
|
||||||
|
|
||||||
|
SMetaReader mr = {0};
|
||||||
|
metaReaderInit(&mr, pInfo->readHandle.meta, META_READER_NOLOCK);
|
||||||
|
|
||||||
|
uint64_t suid = pInfo->pCur->mr.me.ctbEntry.suid;
|
||||||
|
int32_t code = metaGetTableEntryByUid(&mr, suid);
|
||||||
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
|
qError("failed to get super table meta, cname:%s, suid:0x%" PRIx64 ", code:%s, %s", pInfo->pCur->mr.me.name,
|
||||||
|
suid, tstrerror(terrno), GET_TASKID(pTaskInfo));
|
||||||
|
metaReaderClear(&mr);
|
||||||
|
metaCloseTbCursor(pInfo->pCur);
|
||||||
|
pInfo->pCur = NULL;
|
||||||
|
T_LONG_JMP(pTaskInfo->env, terrno);
|
||||||
|
}
|
||||||
|
|
||||||
|
// number of columns
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, (char*)&mr.me.stbEntry.schemaRow.nCols, false);
|
||||||
|
|
||||||
|
// super table name
|
||||||
|
STR_TO_VARSTR(n, mr.me.name);
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, n, false);
|
||||||
|
metaReaderClear(&mr);
|
||||||
|
|
||||||
|
// table comment
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 8);
|
||||||
|
if (pInfo->pCur->mr.me.ctbEntry.commentLen > 0) {
|
||||||
|
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
STR_TO_VARSTR(comment, pInfo->pCur->mr.me.ctbEntry.comment);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, comment, false);
|
||||||
|
} else if (pInfo->pCur->mr.me.ctbEntry.commentLen == 0) {
|
||||||
|
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
STR_TO_VARSTR(comment, "");
|
||||||
|
colDataAppend(pColInfoData, numOfRows, comment, false);
|
||||||
|
} else {
|
||||||
|
colDataAppendNULL(pColInfoData, numOfRows);
|
||||||
|
}
|
||||||
|
|
||||||
|
// uid
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.uid, false);
|
||||||
|
|
||||||
|
// ttl
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ctbEntry.ttlDays, false);
|
||||||
|
|
||||||
|
STR_TO_VARSTR(n, "CHILD_TABLE");
|
||||||
|
} else if (tableType == TSDB_NORMAL_TABLE) {
|
||||||
|
// create time
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.ctime, false);
|
||||||
|
|
||||||
|
// number of columns
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.schemaRow.nCols, false);
|
||||||
|
|
||||||
|
// super table name
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
||||||
|
colDataAppendNULL(pColInfoData, numOfRows);
|
||||||
|
|
||||||
|
// table comment
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 8);
|
||||||
|
if (pInfo->pCur->mr.me.ntbEntry.commentLen > 0) {
|
||||||
|
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
STR_TO_VARSTR(comment, pInfo->pCur->mr.me.ntbEntry.comment);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, comment, false);
|
||||||
|
} else if (pInfo->pCur->mr.me.ntbEntry.commentLen == 0) {
|
||||||
|
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
STR_TO_VARSTR(comment, "");
|
||||||
|
colDataAppend(pColInfoData, numOfRows, comment, false);
|
||||||
|
} else {
|
||||||
|
colDataAppendNULL(pColInfoData, numOfRows);
|
||||||
|
}
|
||||||
|
|
||||||
|
// uid
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.uid, false);
|
||||||
|
|
||||||
|
// ttl
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.ttlDays, false);
|
||||||
|
|
||||||
|
STR_TO_VARSTR(n, "NORMAL_TABLE");
|
||||||
|
}
|
||||||
|
|
||||||
|
pColInfoData = taosArrayGet(p->pDataBlock, 9);
|
||||||
|
colDataAppend(pColInfoData, numOfRows, n, false);
|
||||||
|
|
||||||
|
if (++numOfRows >= pOperator->resultInfo.capacity) {
|
||||||
|
p->info.rows = numOfRows;
|
||||||
|
pInfo->pRes->info.rows = numOfRows;
|
||||||
|
|
||||||
|
relocateColumnData(pInfo->pRes, pInfo->scanCols, p->pDataBlock, false);
|
||||||
|
doFilterResult(pInfo);
|
||||||
|
|
||||||
|
blockDataCleanup(p);
|
||||||
|
numOfRows = 0;
|
||||||
|
|
||||||
|
if (pInfo->pRes->info.rows > 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numOfRows > 0) {
|
||||||
|
p->info.rows = numOfRows;
|
||||||
|
pInfo->pRes->info.rows = numOfRows;
|
||||||
|
|
||||||
|
relocateColumnData(pInfo->pRes, pInfo->scanCols, p->pDataBlock, false);
|
||||||
|
doFilterResult(pInfo);
|
||||||
|
|
||||||
|
blockDataCleanup(p);
|
||||||
|
numOfRows = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockDataDestroy(p);
|
||||||
|
|
||||||
|
// todo temporarily free the cursor here, the true reason why the free is not valid needs to be found
|
||||||
|
if (ret != 0) {
|
||||||
|
metaCloseTbCursor(pInfo->pCur);
|
||||||
|
pInfo->pCur = NULL;
|
||||||
|
doSetOperatorCompleted(pOperator);
|
||||||
|
}
|
||||||
|
|
||||||
|
pInfo->loadInfo.totalRows += pInfo->pRes->info.rows;
|
||||||
|
return (pInfo->pRes->info.rows == 0) ? NULL : pInfo->pRes;
|
||||||
|
}
|
||||||
static SSDataBlock* sysTableScanUserTables(SOperatorInfo* pOperator) {
|
static SSDataBlock* sysTableScanUserTables(SOperatorInfo* pOperator) {
|
||||||
SExecTaskInfo* pTaskInfo = pOperator->pTaskInfo;
|
SExecTaskInfo* pTaskInfo = pOperator->pTaskInfo;
|
||||||
SSysTableScanInfo* pInfo = pOperator->info;
|
SSysTableScanInfo* pInfo = pOperator->info;
|
||||||
|
|
||||||
SNode* pCondtion = pInfo->pCondition;
|
SNode* pCondition = pInfo->pCondition;
|
||||||
if (pOperator->status == OP_EXEC_DONE) {
|
if (pOperator->status == OP_EXEC_DONE) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -3232,179 +3408,13 @@ static SSDataBlock* sysTableScanUserTables(SOperatorInfo* pOperator) {
|
||||||
doSetOperatorCompleted(pOperator);
|
doSetOperatorCompleted(pOperator);
|
||||||
return (pInfo->pRes->info.rows == 0) ? NULL : pInfo->pRes;
|
return (pInfo->pRes->info.rows == 0) ? NULL : pInfo->pRes;
|
||||||
} else {
|
} else {
|
||||||
if (pInfo->pCur == NULL) {
|
if (pCondition != NULL) {
|
||||||
pInfo->pCur = metaOpenTbCursor(pInfo->readHandle.meta);
|
return NULL;
|
||||||
|
} else {
|
||||||
|
return sysTableBuildUserTables(pOperator);
|
||||||
}
|
}
|
||||||
|
|
||||||
blockDataCleanup(pInfo->pRes);
|
|
||||||
int32_t numOfRows = 0;
|
|
||||||
|
|
||||||
const char* db = NULL;
|
|
||||||
int32_t vgId = 0;
|
|
||||||
vnodeGetInfo(pInfo->readHandle.vnode, &db, &vgId);
|
|
||||||
|
|
||||||
SName sn = {0};
|
|
||||||
char dbname[TSDB_DB_FNAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
|
||||||
tNameFromString(&sn, db, T_NAME_ACCT | T_NAME_DB);
|
|
||||||
|
|
||||||
tNameGetDbName(&sn, varDataVal(dbname));
|
|
||||||
varDataSetLen(dbname, strlen(varDataVal(dbname)));
|
|
||||||
|
|
||||||
SSDataBlock* p = buildInfoSchemaTableMetaBlock(TSDB_INS_TABLE_TABLES);
|
|
||||||
blockDataEnsureCapacity(p, pOperator->resultInfo.capacity);
|
|
||||||
|
|
||||||
char n[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
|
||||||
|
|
||||||
int32_t ret = 0;
|
|
||||||
while ((ret = metaTbCursorNext(pInfo->pCur)) == 0) {
|
|
||||||
STR_TO_VARSTR(n, pInfo->pCur->mr.me.name);
|
|
||||||
|
|
||||||
// table name
|
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(p->pDataBlock, 0);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
|
||||||
|
|
||||||
// database name
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 1);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, dbname, false);
|
|
||||||
|
|
||||||
// vgId
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 6);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&vgId, false);
|
|
||||||
|
|
||||||
int32_t tableType = pInfo->pCur->mr.me.type;
|
|
||||||
if (tableType == TSDB_CHILD_TABLE) {
|
|
||||||
// create time
|
|
||||||
int64_t ts = pInfo->pCur->mr.me.ctbEntry.ctime;
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&ts, false);
|
|
||||||
|
|
||||||
SMetaReader mr = {0};
|
|
||||||
metaReaderInit(&mr, pInfo->readHandle.meta, META_READER_NOLOCK);
|
|
||||||
|
|
||||||
uint64_t suid = pInfo->pCur->mr.me.ctbEntry.suid;
|
|
||||||
int32_t code = metaGetTableEntryByUid(&mr, suid);
|
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
|
||||||
qError("failed to get super table meta, cname:%s, suid:0x%" PRIx64 ", code:%s, %s", pInfo->pCur->mr.me.name,
|
|
||||||
suid, tstrerror(terrno), GET_TASKID(pTaskInfo));
|
|
||||||
metaReaderClear(&mr);
|
|
||||||
metaCloseTbCursor(pInfo->pCur);
|
|
||||||
pInfo->pCur = NULL;
|
|
||||||
T_LONG_JMP(pTaskInfo->env, terrno);
|
|
||||||
}
|
|
||||||
|
|
||||||
// number of columns
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&mr.me.stbEntry.schemaRow.nCols, false);
|
|
||||||
|
|
||||||
// super table name
|
|
||||||
STR_TO_VARSTR(n, mr.me.name);
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
|
||||||
metaReaderClear(&mr);
|
|
||||||
|
|
||||||
// table comment
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 8);
|
|
||||||
if (pInfo->pCur->mr.me.ctbEntry.commentLen > 0) {
|
|
||||||
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
|
||||||
STR_TO_VARSTR(comment, pInfo->pCur->mr.me.ctbEntry.comment);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
|
||||||
} else if (pInfo->pCur->mr.me.ctbEntry.commentLen == 0) {
|
|
||||||
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
|
||||||
STR_TO_VARSTR(comment, "");
|
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
|
||||||
} else {
|
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
|
||||||
}
|
|
||||||
|
|
||||||
// uid
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.uid, false);
|
|
||||||
|
|
||||||
// ttl
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ctbEntry.ttlDays, false);
|
|
||||||
|
|
||||||
STR_TO_VARSTR(n, "CHILD_TABLE");
|
|
||||||
} else if (tableType == TSDB_NORMAL_TABLE) {
|
|
||||||
// create time
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.ctime, false);
|
|
||||||
|
|
||||||
// number of columns
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.schemaRow.nCols, false);
|
|
||||||
|
|
||||||
// super table name
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
|
||||||
|
|
||||||
// table comment
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 8);
|
|
||||||
if (pInfo->pCur->mr.me.ntbEntry.commentLen > 0) {
|
|
||||||
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
|
||||||
STR_TO_VARSTR(comment, pInfo->pCur->mr.me.ntbEntry.comment);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
|
||||||
} else if (pInfo->pCur->mr.me.ntbEntry.commentLen == 0) {
|
|
||||||
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
|
||||||
STR_TO_VARSTR(comment, "");
|
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
|
||||||
} else {
|
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
|
||||||
}
|
|
||||||
|
|
||||||
// uid
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.uid, false);
|
|
||||||
|
|
||||||
// ttl
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.ttlDays, false);
|
|
||||||
|
|
||||||
STR_TO_VARSTR(n, "NORMAL_TABLE");
|
|
||||||
}
|
|
||||||
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 9);
|
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
|
||||||
|
|
||||||
if (++numOfRows >= pOperator->resultInfo.capacity) {
|
|
||||||
p->info.rows = numOfRows;
|
|
||||||
pInfo->pRes->info.rows = numOfRows;
|
|
||||||
|
|
||||||
relocateColumnData(pInfo->pRes, pInfo->scanCols, p->pDataBlock, false);
|
|
||||||
doFilterResult(pInfo);
|
|
||||||
|
|
||||||
blockDataCleanup(p);
|
|
||||||
numOfRows = 0;
|
|
||||||
|
|
||||||
if (pInfo->pRes->info.rows > 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (numOfRows > 0) {
|
|
||||||
p->info.rows = numOfRows;
|
|
||||||
pInfo->pRes->info.rows = numOfRows;
|
|
||||||
|
|
||||||
relocateColumnData(pInfo->pRes, pInfo->scanCols, p->pDataBlock, false);
|
|
||||||
doFilterResult(pInfo);
|
|
||||||
|
|
||||||
blockDataCleanup(p);
|
|
||||||
numOfRows = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockDataDestroy(p);
|
|
||||||
|
|
||||||
// todo temporarily free the cursor here, the true reason why the free is not valid needs to be found
|
|
||||||
if (ret != 0) {
|
|
||||||
metaCloseTbCursor(pInfo->pCur);
|
|
||||||
pInfo->pCur = NULL;
|
|
||||||
doSetOperatorCompleted(pOperator);
|
|
||||||
}
|
|
||||||
|
|
||||||
pInfo->loadInfo.totalRows += pInfo->pRes->info.rows;
|
|
||||||
return (pInfo->pRes->info.rows == 0) ? NULL : pInfo->pRes;
|
|
||||||
}
|
}
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static SSDataBlock* sysTableScanUserSTables(SOperatorInfo* pOperator) {
|
static SSDataBlock* sysTableScanUserSTables(SOperatorInfo* pOperator) {
|
||||||
|
|
Loading…
Reference in New Issue