fix: group cache fetch issue

This commit is contained in:
dapan1121 2024-04-02 16:09:32 +08:00
parent 0fb672d8a6
commit 5934a137dd
3 changed files with 13 additions and 4 deletions

View File

@ -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;

View File

@ -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]) {

View File

@ -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;
}