From 5934a137ddfea12ba52e633fed7dfcb385aed615 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Tue, 2 Apr 2024 16:09:32 +0800 Subject: [PATCH] fix: group cache fetch issue --- source/libs/executor/src/groupcacheoperator.c | 2 +- source/libs/parser/src/parTranslater.c | 4 ++-- source/libs/planner/src/planOptimizer.c | 11 ++++++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/source/libs/executor/src/groupcacheoperator.c b/source/libs/executor/src/groupcacheoperator.c index 52d759d4aa..28bccaedff 100755 --- a/source/libs/executor/src/groupcacheoperator.c +++ b/source/libs/executor/src/groupcacheoperator.c @@ -1146,7 +1146,7 @@ static int32_t initGroupCacheSession(struct SOperatorInfo* pOperator, SOperatorP SHashObj* pGrpHash = pGCache->globalGrp ? pGCache->pGrpHash : pCtx->pGrpHash; SGroupCacheData* pGroup = taosHashGet(pGrpHash, &pGcParam->tbUid, sizeof(pGcParam->tbUid)); - if (NULL == pGroup && NULL != pParam->pChildren && !pCtx->fetchDone) { + if (NULL == pGroup && (NULL != pParam->pChildren || !pCtx->fetchDone)) { code = addNewGroupData(pOperator, pParam, &pGroup, pGCache->batchFetch ? GROUP_CACHE_DEFAULT_VGID : pGcParam->vgId, pGcParam->tbUid); if (TSDB_CODE_SUCCESS != code) { return code; diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 3ea35b32df..731dfbe1c3 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -1038,8 +1038,8 @@ static void setColumnInfoByExpr(STempTableNode* pTable, SExprNode* pExpr, SColum pCol->colId = pCol->isPrimTs ? PRIMARYKEY_TIMESTAMP_COL_ID : 0; if (QUERY_NODE_COLUMN == nodeType(pExpr)) { pCol->colType = ((SColumnNode*)pExpr)->colType; - strcpy(pCol->dbName, ((SColumnNode*)pExpr)->dbName); - strcpy(pCol->tableName, ((SColumnNode*)pExpr)->tableName); + //strcpy(pCol->dbName, ((SColumnNode*)pExpr)->dbName); + //strcpy(pCol->tableName, ((SColumnNode*)pExpr)->tableName); } strcpy(pCol->colName, pExpr->aliasName); if ('\0' == pCol->node.aliasName[0]) { diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index 1aa7e9e410..48310a37c1 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -1354,6 +1354,13 @@ static int32_t pdcJoinGetOpTableCondTypes(SNode* pCond, SSHashObj* pLeftTables, if (cxt.havaLeftCol) { if (cxt.haveRightCol) { + if (cxt.condIsNull) { + tableCondTypes[1] = true; + tableCondTypes[3] = true; + } else { + tableCondTypes[0] = true; + tableCondTypes[2] = true; + } return TSDB_CODE_SUCCESS; } @@ -4587,8 +4594,10 @@ int32_t stbJoinOptRewriteToTagScan(SLogicNode* pJoin, SNode* pNode) { bool found = false; WHERE_EACH(pTarget, pScan->node.pTargets) { found = false; + SColumnNode* pTargetCol = (SColumnNode*)pTarget; FOREACH(pTag, pTags) { - if (nodesEqualNode(pTarget, pTag)) { + SColumnNode* pTagCol = (SColumnNode*)pTag; + if (0 == strcasecmp(pTargetCol->node.aliasName, pTagCol->colName) && 0 == strcasecmp(pTargetCol->tableAlias, pTagCol->tableAlias)) { found = true; break; }