提交 383c828c 编写于 作者: S slzhou

fix: before review

上级 2e4c14c1
...@@ -3472,7 +3472,7 @@ int32_t fltSclCompareWithFloat64(SFltSclDatum *val1, SFltSclDatum *val2) { ...@@ -3472,7 +3472,7 @@ int32_t fltSclCompareWithFloat64(SFltSclDatum *val1, SFltSclDatum *val2) {
} }
// TODO: varchar, nchar // TODO: varchar, nchar
default: default:
qError("not support comparsion. %d, %d", val1->kind, val2->kind); qError("not supported comparsion. kind1 %d, kind2 %d", val1->kind, val2->kind);
return (val1->kind - val2->kind); return (val1->kind - val2->kind);
} }
} }
...@@ -3489,7 +3489,7 @@ int32_t fltSclCompareWithInt64(SFltSclDatum *val1, SFltSclDatum *val2) { ...@@ -3489,7 +3489,7 @@ int32_t fltSclCompareWithInt64(SFltSclDatum *val1, SFltSclDatum *val2) {
} }
// TODO: varchar, nchar // TODO: varchar, nchar
default: default:
qError("not support comparsion. %d, %d", val1->kind, val2->kind); qError("not supported comparsion. kind1 %d, kind2 %d", val1->kind, val2->kind);
return (val1->kind - val2->kind); return (val1->kind - val2->kind);
} }
} }
...@@ -3506,7 +3506,7 @@ int32_t fltSclCompareWithUInt64(SFltSclDatum *val1, SFltSclDatum *val2) { ...@@ -3506,7 +3506,7 @@ int32_t fltSclCompareWithUInt64(SFltSclDatum *val1, SFltSclDatum *val2) {
} }
// TODO: varchar, nchar // TODO: varchar, nchar
default: default:
qError("not support comparsion. %d, %d", val1->kind, val2->kind); qError("not supported comparsion. kind1 %d, kind2 %d", val1->kind, val2->kind);
return (val1->kind - val2->kind); return (val1->kind - val2->kind);
} }
} }
...@@ -3514,7 +3514,7 @@ int32_t fltSclCompareWithUInt64(SFltSclDatum *val1, SFltSclDatum *val2) { ...@@ -3514,7 +3514,7 @@ int32_t fltSclCompareWithUInt64(SFltSclDatum *val1, SFltSclDatum *val2) {
int32_t fltSclCompareDatum(SFltSclDatum *val1, SFltSclDatum *val2) { int32_t fltSclCompareDatum(SFltSclDatum *val1, SFltSclDatum *val2) {
if (val2->kind == FLT_SCL_DATUM_KIND_NULL || val2->kind == FLT_SCL_DATUM_KIND_MIN || if (val2->kind == FLT_SCL_DATUM_KIND_NULL || val2->kind == FLT_SCL_DATUM_KIND_MIN ||
val2->kind == FLT_SCL_DATUM_KIND_MAX) { val2->kind == FLT_SCL_DATUM_KIND_MAX) {
return (val1->kind < val2->kind) ? -1 : ((val1->kind > val2->kind) ? 1 : 0); return (val1->kind < val2->kind) ? -1 : ((val1->kind > val2->kind) ? 1 : 0);
} }
switch (val2->kind) { switch (val2->kind) {
...@@ -3529,7 +3529,7 @@ int32_t fltSclCompareDatum(SFltSclDatum *val1, SFltSclDatum *val2) { ...@@ -3529,7 +3529,7 @@ int32_t fltSclCompareDatum(SFltSclDatum *val1, SFltSclDatum *val2) {
} }
// TODO: varchar/nchar // TODO: varchar/nchar
default: default:
fltError("not supported kind. just return 0"); qError("not supported kind when compare datum. kind2 : %d", val2->kind);
return 0; return 0;
break; break;
} }
...@@ -3585,7 +3585,6 @@ int32_t fltSclMergeSort(SArray *pts1, SArray *pts2, SArray *result) { ...@@ -3585,7 +3585,6 @@ int32_t fltSclMergeSort(SArray *pts1, SArray *pts2, SArray *result) {
return 0; return 0;
} }
// pts1 and pts2 must be ordered and de-duplicated and each range can not be a range of another range
int32_t fltSclMerge(SArray *pts1, SArray *pts2, bool isUnion, SArray *merged) { int32_t fltSclMerge(SArray *pts1, SArray *pts2, bool isUnion, SArray *merged) {
size_t len1 = taosArrayGetSize(pts1); size_t len1 = taosArrayGetSize(pts1);
size_t len2 = taosArrayGetSize(pts2); size_t len2 = taosArrayGetSize(pts2);
...@@ -3616,7 +3615,6 @@ int32_t fltSclIntersect(SArray *pts1, SArray *pts2, SArray *merged) { return flt ...@@ -3616,7 +3615,6 @@ int32_t fltSclIntersect(SArray *pts1, SArray *pts2, SArray *merged) { return flt
int32_t fltSclUnion(SArray *pts1, SArray *pts2, SArray *merged) { return fltSclMerge(pts1, pts2, true, merged); } int32_t fltSclUnion(SArray *pts1, SArray *pts2, SArray *merged) { return fltSclMerge(pts1, pts2, true, merged); }
// TODO: column, constant
typedef struct { typedef struct {
SColumnNode *colNode; SColumnNode *colNode;
SValueNode *valNode; SValueNode *valNode;
...@@ -3675,9 +3673,9 @@ int32_t fltSclBuildDatumFromValueNode(SFltSclDatum *datum, SValueNode *valNode) ...@@ -3675,9 +3673,9 @@ int32_t fltSclBuildDatumFromValueNode(SFltSclDatum *datum, SValueNode *valNode)
datum->d = valNode->datum.d; datum->d = valNode->datum.d;
break; break;
} }
// TODO:varchar/nchar/json // TODO:varchar/nchar/json
default: { default: {
qError("not supported"); qError("not supported type %d when build datum from value node", valNode->node.resType.type);
break; break;
} }
} }
...@@ -3687,11 +3685,11 @@ int32_t fltSclBuildDatumFromValueNode(SFltSclDatum *datum, SValueNode *valNode) ...@@ -3687,11 +3685,11 @@ int32_t fltSclBuildDatumFromValueNode(SFltSclDatum *datum, SValueNode *valNode)
int32_t fltSclBuildDatumFromBlockSmaValue(SFltSclDatum *datum, uint8_t type, int64_t val) { int32_t fltSclBuildDatumFromBlockSmaValue(SFltSclDatum *datum, uint8_t type, int64_t val) {
switch (type) { switch (type) {
case TSDB_DATA_TYPE_BOOL: case TSDB_DATA_TYPE_BOOL:
case TSDB_DATA_TYPE_TINYINT: case TSDB_DATA_TYPE_TINYINT:
case TSDB_DATA_TYPE_SMALLINT: case TSDB_DATA_TYPE_SMALLINT:
case TSDB_DATA_TYPE_INT: case TSDB_DATA_TYPE_INT:
case TSDB_DATA_TYPE_BIGINT: case TSDB_DATA_TYPE_BIGINT:
case TSDB_DATA_TYPE_TIMESTAMP: { case TSDB_DATA_TYPE_TIMESTAMP: {
datum->kind = FLT_SCL_DATUM_KIND_INT64; datum->kind = FLT_SCL_DATUM_KIND_INT64;
datum->i = val; datum->i = val;
...@@ -3711,10 +3709,10 @@ int32_t fltSclBuildDatumFromBlockSmaValue(SFltSclDatum *datum, uint8_t type, int ...@@ -3711,10 +3709,10 @@ int32_t fltSclBuildDatumFromBlockSmaValue(SFltSclDatum *datum, uint8_t type, int
datum->d = *(double *)&val; datum->d = *(double *)&val;
break; break;
} }
// TODO:varchar/nchar/json // TODO:varchar/nchar/json
default: { default: {
datum->kind = FLT_SCL_DATUM_KIND_NULL; datum->kind = FLT_SCL_DATUM_KIND_NULL;
qError("not supported type when build datum from block sma value"); qError("not supported type %d when build datum from block sma value", type);
break; break;
} }
} }
...@@ -3732,6 +3730,13 @@ int32_t fltSclBuildRangeFromBlockSma(SFltSclColumnRange *colRange, SColumnDataAg ...@@ -3732,6 +3730,13 @@ int32_t fltSclBuildRangeFromBlockSma(SFltSclColumnRange *colRange, SColumnDataAg
taosArrayPush(points, &endPt); taosArrayPush(points, &endPt);
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
if (pAgg->numOfNull > 0) {
SFltSclDatum nullDatum = {.kind = FLT_SCL_DATUM_KIND_NULL};
SFltSclPoint startPt = {.start = true, .excl = false, .val = nullDatum};
SFltSclPoint endPt = {.start = false, .excl = false, .val = nullDatum};
taosArrayPush(points, &startPt);
taosArrayPush(points, &endPt);
}
SFltSclDatum min; SFltSclDatum min;
fltSclBuildDatumFromBlockSmaValue(&min, colRange->colNode->node.resType.type, pAgg->min); fltSclBuildDatumFromBlockSmaValue(&min, colRange->colNode->node.resType.type, pAgg->min);
SFltSclPoint minPt = {.excl = false, .start = true, .val = min}; SFltSclPoint minPt = {.excl = false, .start = true, .val = min};
...@@ -4357,8 +4362,25 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) { ...@@ -4357,8 +4362,25 @@ int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) {
} }
break; break;
} }
case OP_TYPE_IS_NULL: {
SFltSclDatum nullDatum = {.kind = FLT_SCL_DATUM_KIND_NULL};
SFltSclPoint startPt = {.start = true, .excl = false, .val = nullDatum};
SFltSclPoint endPt = {.start = false, .excl = false, .val = nullDatum};
taosArrayPush(points, &startPt);
taosArrayPush(points, &endPt);
break;
}
case OP_TYPE_IS_NOT_NULL: {
SFltSclDatum minDatum = {.kind = FLT_SCL_DATUM_KIND_MIN, .type = oper->colNode->node.resType};
SFltSclPoint startPt = {.start = true, .excl = false, .val = minDatum};
SFltSclDatum maxDatum = {.kind = FLT_SCL_DATUM_KIND_MAX, .type = oper->colNode->node.resType};
SFltSclPoint endPt = {.start = false, .excl = false, .val = maxDatum};
taosArrayPush(points, &startPt);
taosArrayPush(points, &endPt);
break;
}
default: { default: {
qError("not supported op"); qError("not supported operator type : %d when build range points", oper->type);
break; break;
} }
} }
...@@ -4391,26 +4413,30 @@ static int32_t fltSclCollectOperatorFromNode(SNode *pNode, SArray *sclOpList) { ...@@ -4391,26 +4413,30 @@ static int32_t fltSclCollectOperatorFromNode(SNode *pNode, SArray *sclOpList) {
if (nodeType(pNode) != QUERY_NODE_OPERATOR) { if (nodeType(pNode) != QUERY_NODE_OPERATOR) {
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
SOperatorNode *pOper = (SOperatorNode *)pNode; SOperatorNode *pOper = (SOperatorNode *)pNode;
// TODO: left value node, right column node
// TODO: datatype
// TODO: operator
if (pOper->pLeft == NULL || pOper->pRight == NULL) { if (pOper->pLeft == NULL || pOper->pRight == NULL) {
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
if (nodeType(pOper->pLeft) == QUERY_NODE_COLUMN && nodeType(pOper->pRight) == QUERY_NODE_VALUE &&
(pOper->opType == OP_TYPE_GREATER_THAN || pOper->opType == OP_TYPE_GREATER_EQUAL || if (!(pOper->opType == OP_TYPE_GREATER_THAN || pOper->opType == OP_TYPE_GREATER_EQUAL ||
pOper->opType == OP_TYPE_LOWER_THAN || pOper->opType == OP_TYPE_LOWER_EQUAL || pOper->opType == OP_TYPE_LOWER_THAN || pOper->opType == OP_TYPE_LOWER_EQUAL ||
pOper->opType == OP_TYPE_NOT_EQUAL || pOper->opType == OP_TYPE_EQUAL)) { pOper->opType == OP_TYPE_NOT_EQUAL || pOper->opType == OP_TYPE_EQUAL)) {
SValueNode *valNode = (SValueNode *)pOper->pRight; return TSDB_CODE_SUCCESS;
if (IS_NUMERIC_TYPE(valNode->node.resType.type) || valNode->node.resType.type == TSDB_DATA_TYPE_TIMESTAMP) {
SFltSclOperator sclOp = {
.colNode = (SColumnNode*)nodesCloneNode(pOper->pLeft),
.valNode = (SValueNode*)nodesCloneNode(pOper->pRight),
.type = pOper->opType};
taosArrayPush(sclOpList, &sclOp);
}
} }
if (!(nodeType(pOper->pLeft) == QUERY_NODE_COLUMN && nodeType(pOper->pRight) == QUERY_NODE_VALUE)) {
return TSDB_CODE_SUCCESS;
}
SValueNode *valNode = (SValueNode *)pOper->pRight;
if (IS_NUMERIC_TYPE(valNode->node.resType.type) || valNode->node.resType.type == TSDB_DATA_TYPE_TIMESTAMP) {
SFltSclOperator sclOp = {.colNode = (SColumnNode *)nodesCloneNode(pOper->pLeft),
.valNode = (SValueNode *)nodesCloneNode(pOper->pRight),
.type = pOper->opType};
taosArrayPush(sclOpList, &sclOp);
}
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
...@@ -4446,8 +4472,8 @@ int32_t fltOptimizeNodes(SFilterInfo *pInfo, SNode **pNode, SFltTreeStat *pStat) ...@@ -4446,8 +4472,8 @@ int32_t fltOptimizeNodes(SFilterInfo *pInfo, SNode **pNode, SFltTreeStat *pStat)
for (int32_t i = 0; i < taosArrayGetSize(sclOpList); ++i) { for (int32_t i = 0; i < taosArrayGetSize(sclOpList); ++i) {
SFltSclOperator *sclOp = taosArrayGet(sclOpList, i); SFltSclOperator *sclOp = taosArrayGet(sclOpList, i);
nodesDestroyNode((SNode*)sclOp->colNode); nodesDestroyNode((SNode *)sclOp->colNode);
nodesDestroyNode((SNode*)sclOp->valNode); nodesDestroyNode((SNode *)sclOp->valNode);
} }
taosArrayDestroy(sclOpList); taosArrayDestroy(sclOpList);
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册