fix: fix bugs of wrongly use sfltscloperator
This commit is contained in:
parent
77a1de444c
commit
c9140e547e
|
@ -3431,7 +3431,6 @@ _return:
|
|||
return code;
|
||||
}
|
||||
|
||||
|
||||
// compare ranges, null < min < val < max. null=null, min=min, max=max
|
||||
typedef enum {
|
||||
FLT_SCL_DATUM_KIND_NULL,
|
||||
|
@ -3627,7 +3626,6 @@ typedef struct {
|
|||
EOperatorType type;
|
||||
} SFltSclOperator;
|
||||
|
||||
|
||||
SFltSclColumnRange *fltSclGetOrCreateColumnRange(SColumnNode *colNode, SArray *colRangeList) {
|
||||
for (int32_t i = 0; i < taosArrayGetSize(colRangeList); ++i) {
|
||||
SFltSclColumnRange *colRange = taosArrayGet(colRangeList, i);
|
||||
|
@ -3718,11 +3716,11 @@ int32_t fltSclBuildDatumFromBlockSmaValue(SFltSclDatum* datum, uint8_t type, int
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t fltSclBuildRangeFromBlockSma(SFltSclColumnRange* colRange, SColumnDataAgg* pAgg, int32_t numOfRows, SArray* points) {
|
||||
int32_t fltSclBuildRangeFromBlockSma(SFltSclColumnRange *colRange, SColumnDataAgg *pAgg, int32_t numOfRows,
|
||||
SArray *points) {
|
||||
if (pAgg->numOfNull == numOfRows) {
|
||||
SFltSclDatum datum = {.kind = FLT_SCL_DATUM_KIND_NULL};
|
||||
SFltSclPoint startPt = {.start = true, .excl = false, .val = datum};
|
||||
|
@ -4381,7 +4379,6 @@ int32_t fltSclProcessCNF(SArray *sclOpListCNF, SArray *colRangeList) {
|
|||
taosArrayDestroy(colRange->points);
|
||||
colRange->points = points;
|
||||
}
|
||||
|
||||
}
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
@ -4403,8 +4400,9 @@ static int32_t fltSclCollectOperatorFromNode(SNode* pNode, SArray* sclOpList) {
|
|||
pOper->opType == OP_TYPE_NOT_EQUAL || pOper->opType == OP_TYPE_EQUAL)) {
|
||||
SValueNode *valNode = (SValueNode *)pOper->pRight;
|
||||
if (IS_NUMERIC_TYPE(valNode->node.resType.type) || valNode->node.resType.type == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||
SNode *p = nodesCloneNode(pNode);
|
||||
taosArrayPush(sclOpList, &p);
|
||||
SFltSclOperator sclOp = {
|
||||
.colNode = nodesCloneNode(pOper->pLeft), .valNode = nodesCloneNode(pOper->pRight), .type = pOper->opType};
|
||||
taosArrayPush(sclOpList, &sclOp);
|
||||
}
|
||||
}
|
||||
return TSDB_CODE_SUCCESS;
|
||||
|
@ -4420,8 +4418,7 @@ static int32_t fltSclCollectOperatorsFromLogicCond(SNode* pNode, SArray* sclOpLi
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
SNode *pExpr = NULL;
|
||||
FOREACH(pExpr, pLogicCond->pParameterList) { fltSclCollectOperatorFromNode(pExpr, sclOpList);
|
||||
}
|
||||
FOREACH(pExpr, pLogicCond->pParameterList) { fltSclCollectOperatorFromNode(pExpr, sclOpList); }
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -4442,8 +4439,9 @@ int32_t fltOptimizeNodes(SFilterInfo *pInfo, SNode **pNode, SFltTreeStat *pStat)
|
|||
pInfo->sclCtx.fltSclRange = colRangeList;
|
||||
|
||||
for (int32_t i = 0; i < taosArrayGetSize(sclOpList); ++i) {
|
||||
SNode* p = taosArrayGetP(sclOpList, i);
|
||||
nodesDestroyNode(p);
|
||||
SFltSclOperator *sclOp = taosArrayGet(sclOpList, i);
|
||||
nodesDestroyNode(sclOp->colNode);
|
||||
nodesDestroyNode(sclOp->valNode);
|
||||
}
|
||||
taosArrayDestroy(sclOpList);
|
||||
return TSDB_CODE_SUCCESS;
|
||||
|
|
Loading…
Reference in New Issue