fix: remove uid from scan list
This commit is contained in:
parent
143c657571
commit
73d7caa63a
|
@ -264,7 +264,7 @@ static int32_t buildBatchExchangeOperatorParam(SOperatorParam** ppRes, int32_t d
|
|||
|
||||
int32_t iter = 0;
|
||||
void* p = NULL;
|
||||
while (p = tSimpleHashIterate(pVg, p, &iter)) {
|
||||
while (NULL != (p = tSimpleHashIterate(pVg, p, &iter))) {
|
||||
int32_t* pVgId = tSimpleHashGetKey(p, NULL);
|
||||
SArray* pUidList = *(SArray**)p;
|
||||
basic.vgId = *pVgId;
|
||||
|
@ -349,7 +349,7 @@ static int32_t buildBatchTableScanOperatorParam(SOperatorParam** ppRes, int32_t
|
|||
|
||||
int32_t iter = 0;
|
||||
void* p = NULL;
|
||||
while (p = tSimpleHashIterate(pVg, p, &iter)) {
|
||||
while (NULL != (p = tSimpleHashIterate(pVg, p, &iter))) {
|
||||
int32_t* pVgId = tSimpleHashGetKey(p, NULL);
|
||||
SArray* pUidList = *(SArray**)p;
|
||||
|
||||
|
@ -692,7 +692,7 @@ static void postProcessStbJoinTableHash(SOperatorInfo* pOperator) {
|
|||
|
||||
uint64_t* pUid = NULL;
|
||||
int32_t iter = 0;
|
||||
while (pUid = tSimpleHashIterate(pStbJoin->ctx.prev.onceTable, pUid, &iter)) {
|
||||
while (NULL != (pUid = tSimpleHashIterate(pStbJoin->ctx.prev.onceTable, pUid, &iter))) {
|
||||
tSimpleHashRemove(pStbJoin->ctx.prev.leftCache, pUid, sizeof(*pUid));
|
||||
}
|
||||
|
||||
|
@ -702,7 +702,7 @@ static void postProcessStbJoinTableHash(SOperatorInfo* pOperator) {
|
|||
// debug only
|
||||
iter = 0;
|
||||
uint32_t* num = NULL;
|
||||
while (num = tSimpleHashIterate(pStbJoin->ctx.prev.leftCache, num, &iter)) {
|
||||
while (NULL != (num = tSimpleHashIterate(pStbJoin->ctx.prev.leftCache, num, &iter))) {
|
||||
ASSERT(*num > 1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -809,7 +809,7 @@ int32_t addDynamicExchangeSource(SOperatorInfo* pOperator) {
|
|||
if (pParam->multiParams) {
|
||||
SExchangeOperatorBatchParam* pBatch = (SExchangeOperatorBatchParam*)pOperator->pOperatorGetParam->value;
|
||||
int32_t iter = 0;
|
||||
while (pBasicParam = tSimpleHashIterate(pBatch->pBatchs, pBasicParam, &iter)) {
|
||||
while (NULL != (pBasicParam = tSimpleHashIterate(pBatch->pBatchs, pBasicParam, &iter))) {
|
||||
code = addSingleExchangeSource(pOperator, pBasicParam);
|
||||
if (code) {
|
||||
return code;
|
||||
|
|
|
@ -2903,17 +2903,23 @@ static void tagScanFilterByTagCond(SArray* aUidTags, SNode* pTagCond, SArray* aF
|
|||
|
||||
}
|
||||
|
||||
static void tagScanFillOneCellWithTag(const STUidTagInfo* pUidTagInfo, SExprInfo* pExprInfo, SColumnInfoData* pColInfo, int rowIndex, const SStorageAPI* pAPI, void* pVnode) {
|
||||
if (fmIsScanPseudoColumnFunc(pExprInfo->pExpr->_function.functionId)) { // tbname
|
||||
static void tagScanFillOneCellWithTag(SOperatorInfo* pOperator, const STUidTagInfo* pUidTagInfo, SExprInfo* pExprInfo, SColumnInfoData* pColInfo, int rowIndex, const SStorageAPI* pAPI, void* pVnode) {
|
||||
if (QUERY_NODE_FUNCTION == pExprInfo->pExpr->nodeType) {
|
||||
if (FUNCTION_TYPE_TBNAME == pExprInfo->pExpr->_function.functionType) { // tbname
|
||||
char str[TSDB_TABLE_FNAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||
// if (pUidTagInfo->name != NULL) {
|
||||
// STR_TO_VARSTR(str, pUidTagInfo->name);
|
||||
// } else { // name is not retrieved during filter
|
||||
// pAPI->metaFn.getTableNameByUid(pVnode, pUidTagInfo->uid, str);
|
||||
// }
|
||||
// if (pUidTagInfo->name != NULL) {
|
||||
// STR_TO_VARSTR(str, pUidTagInfo->name);
|
||||
// } else { // name is not retrieved during filter
|
||||
// pAPI->metaFn.getTableNameByUid(pVnode, pUidTagInfo->uid, str);
|
||||
// }
|
||||
STR_TO_VARSTR(str, "ctbidx");
|
||||
|
||||
colDataSetVal(pColInfo, rowIndex, str, false);
|
||||
} else if (FUNCTION_TYPE_TBUID == pExprInfo->pExpr->_function.functionType) {
|
||||
colDataSetVal(pColInfo, rowIndex, (char*)&pUidTagInfo->uid, false);
|
||||
} else if (FUNCTION_TYPE_VGID == pExprInfo->pExpr->_function.functionType) {
|
||||
colDataSetVal(pColInfo, rowIndex, (char*)&pOperator->pTaskInfo->id.vgId, false);
|
||||
}
|
||||
} else {
|
||||
STagVal tagVal = {0};
|
||||
tagVal.cid = pExprInfo->base.pParam[0].pCol->colId;
|
||||
|
@ -2950,7 +2956,7 @@ static int32_t tagScanFillResultBlock(SOperatorInfo* pOperator, SSDataBlock* pRe
|
|||
STUidTagInfo* pUidTagInfo = taosArrayGet(aUidTags, idx);
|
||||
for (int32_t j = 0; j < pOperator->exprSupp.numOfExprs; ++j) {
|
||||
SColumnInfoData* pDst = taosArrayGet(pRes->pDataBlock, pExprInfo[j].base.resSchema.slotId);
|
||||
tagScanFillOneCellWithTag(pUidTagInfo, &pExprInfo[j], pDst, i, pAPI, pInfo->readHandle.vnode);
|
||||
tagScanFillOneCellWithTag(pOperator, pUidTagInfo, &pExprInfo[j], pDst, i, pAPI, pInfo->readHandle.vnode);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -2959,7 +2965,7 @@ static int32_t tagScanFillResultBlock(SOperatorInfo* pOperator, SSDataBlock* pRe
|
|||
STUidTagInfo* pUidTagInfo = taosArrayGet(aUidTags, i);
|
||||
for (int32_t j = 0; j < pOperator->exprSupp.numOfExprs; ++j) {
|
||||
SColumnInfoData* pDst = taosArrayGet(pRes->pDataBlock, pExprInfo[j].base.resSchema.slotId);
|
||||
tagScanFillOneCellWithTag(pUidTagInfo, &pExprInfo[j], pDst, i, pAPI, pInfo->readHandle.vnode);
|
||||
tagScanFillOneCellWithTag(pOperator, pUidTagInfo, &pExprInfo[j], pDst, i, pAPI, pInfo->readHandle.vnode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2978,7 +2984,7 @@ static SSDataBlock* doTagScanFromCtbIdx(SOperatorInfo* pOperator) {
|
|||
blockDataCleanup(pRes);
|
||||
|
||||
if (pInfo->pCtbCursor == NULL) {
|
||||
pInfo->pCtbCursor = pAPI->metaFn.openCtbCursor(pInfo->readHandle.vnode, pInfo->suid, 1);
|
||||
pInfo->pCtbCursor = pAPI->metaFn.openCtbCursor(pInfo->readHandle.vnode, pInfo->suid, 0);
|
||||
}
|
||||
|
||||
SArray* aUidTags = pInfo->aUidTags;
|
||||
|
@ -3087,7 +3093,7 @@ static SSDataBlock* doTagScanFromMetaEntry(SOperatorInfo* pOperator) {
|
|||
static void destroyTagScanOperatorInfo(void* param) {
|
||||
STagScanInfo* pInfo = (STagScanInfo*)param;
|
||||
if (pInfo->pCtbCursor != NULL) {
|
||||
pInfo->pStorageAPI->metaFn.closeCtbCursor(pInfo->pCtbCursor, 1);
|
||||
pInfo->pStorageAPI->metaFn.closeCtbCursor(pInfo->pCtbCursor, 0);
|
||||
}
|
||||
taosHashCleanup(pInfo->filterCtx.colHash);
|
||||
taosArrayDestroy(pInfo->filterCtx.cInfoList);
|
||||
|
|
|
@ -419,6 +419,7 @@ static int32_t logicScanCopy(const SScanLogicNode* pSrc, SScanLogicNode* pDst) {
|
|||
CLONE_NODE_FIELD(pSubtable);
|
||||
COPY_SCALAR_FIELD(igLastNull);
|
||||
COPY_SCALAR_FIELD(groupOrderScan);
|
||||
COPY_SCALAR_FIELD(onlyMetaCtbIdx);
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -3206,6 +3206,7 @@ int32_t stbJoinOptRewriteToTagScan(SLogicNode* pJoin, SNode* pNode) {
|
|||
NODES_DESTORY_NODE(pScan->node.pConditions);
|
||||
pScan->node.requireDataOrder = DATA_ORDER_LEVEL_NONE;
|
||||
pScan->node.resultDataOrder = DATA_ORDER_LEVEL_NONE;
|
||||
pScan->onlyMetaCtbIdx = true;
|
||||
|
||||
SNodeList* pTags = nodesMakeList();
|
||||
int32_t code = nodesCollectColumnsFromNode(pJoinNode->pTagEqCond, NULL, COLLECT_COL_TYPE_TAG, &pTags);
|
||||
|
@ -3328,10 +3329,10 @@ static int32_t stbJoinOptCreateTableScanNodes(SLogicNode* pJoin, SNodeList** ppL
|
|||
SNode* pNode = NULL;
|
||||
FOREACH(pNode, pList) {
|
||||
SScanLogicNode* pScan = (SScanLogicNode*)pNode;
|
||||
code = stbJoinOptAddFuncToScanNode("_tbuid", pScan);
|
||||
if (code) {
|
||||
break;
|
||||
}
|
||||
//code = stbJoinOptAddFuncToScanNode("_tbuid", pScan);
|
||||
//if (code) {
|
||||
// break;
|
||||
//}
|
||||
|
||||
pScan->node.dynamicOp = true;
|
||||
*(srcScan + i++) = pScan->pVgroupList->numOfVgroups <= 1;
|
||||
|
|
Loading…
Reference in New Issue