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