fix: save work
This commit is contained in:
parent
3e92ec7a8a
commit
1f6d894dfd
|
@ -4206,12 +4206,26 @@ int32_t fltSclBuildDatumFromValueNode(SFltSclDatum* datum, SValueNode* valNode)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t fltSclBuildRangePoints(SFltSclOperator *oper, SArray *points) {
|
||||
if (IS_UNSIGNED_NUMERIC_TYPE(oper->colNode->node.resType.type) &&
|
||||
((IS_SIGNED_NUMERIC_TYPE(oper->valNode->node.resType.type) && oper->valNode->datum.i < 0) ||
|
||||
(IS_FLOAT_TYPE(oper->valNode->node.resType.type) && oper->valNode->datum.d < 0))) {
|
||||
if (oper->type == OP_TYPE_GREATER_THAN || oper->type == OP_TYPE_GREATER_EQUAL || oper->type == OP_TYPE_NOT_EQUAL) {
|
||||
SFltSclDatum start;
|
||||
fltSclBuildDatumFromValueNode(&start, oper->valNode);
|
||||
start.val = 0;
|
||||
SFltSclPoint startPt = {.start = true, .excl = false, .val = start};
|
||||
SFltSclDatum end = {.kind = FLT_SCL_DATUM_KIND_MAX, .type = oper->colNode->node.resType};
|
||||
SFltSclPoint endPt = {.start = false, .excl = false, .val = end};
|
||||
taosArrayPush(points, &startPt);
|
||||
taosArrayPush(points, &endPt);
|
||||
}
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
switch (oper->type) {
|
||||
case OP_TYPE_GREATER_THAN: {
|
||||
SFltSclDatum start;
|
||||
|
@ -4219,8 +4233,8 @@ int32_t fltSclBuildRangePoints(SFltSclOperator* oper, SArray* points) {
|
|||
SFltSclPoint startPt = {.start = true, .excl = true, .val = start};
|
||||
SFltSclDatum end = {.kind = FLT_SCL_DATUM_KIND_MAX, .type = oper->colNode->node.resType};
|
||||
SFltSclPoint endPt = {.start = false, .excl = false, .val = end};
|
||||
taosArrayPush(points, &start);
|
||||
taosArrayPush(points, &end);
|
||||
taosArrayPush(points, &startPt);
|
||||
taosArrayPush(points, &endPt);
|
||||
break;
|
||||
}
|
||||
case OP_TYPE_GREATER_EQUAL: {
|
||||
|
@ -4229,10 +4243,58 @@ int32_t fltSclBuildRangePoints(SFltSclOperator* oper, SArray* points) {
|
|||
SFltSclPoint startPt = {.start = true, .excl = false, .val = start};
|
||||
SFltSclDatum end = {.kind = FLT_SCL_DATUM_KIND_MAX, .type = oper->colNode->node.resType};
|
||||
SFltSclPoint endPt = {.start = false, .excl = false, .val = end};
|
||||
taosArrayPush(points, &start);
|
||||
taosArrayPush(points, &end);
|
||||
taosArrayPush(points, &startPt);
|
||||
taosArrayPush(points, &endPt);
|
||||
break;
|
||||
}
|
||||
case OP_TYPE_LOWER_THAN: {
|
||||
SFltSclDatum end;
|
||||
fltSclBuildDatumFromValueNode(&end, oper->valNode);
|
||||
SFltSclPoint endPt = {.start = false, .excl = true, .val = end};
|
||||
SFltSclDatum start = {.kind = FLT_SCL_DATUM_KIND_MIN, .type = oper->colNode->node.resType};
|
||||
SFltSclPoint startPt = {.start = true, .excl = false, .val = start};
|
||||
taosArrayPush(points, &startPt);
|
||||
taosArrayPush(points, &endPt);
|
||||
break;
|
||||
}
|
||||
case OP_TYPE_LOWER_EQUAL: {
|
||||
SFltSclDatum end;
|
||||
fltSclBuildDatumFromValueNode(&end, oper->valNode);
|
||||
SFltSclPoint endPt = {.start = false, .excl = false, .val = end};
|
||||
SFltSclDatum start = {.kind = FLT_SCL_DATUM_KIND_MIN, .type = oper->colNode->node.resType};
|
||||
SFltSclPoint startPt = {.start = true, .excl = false, .val = start};
|
||||
taosArrayPush(points, &startPt);
|
||||
taosArrayPush(points, &endPt);
|
||||
break;
|
||||
}
|
||||
case OP_TYPE_EQUAL: {
|
||||
SFltSclDatum valDatum;
|
||||
fltSclBuildDatumFromValueNode(&valDatum, oper->valNode);
|
||||
SFltSclPoint startPt = {.start = true, .excl = false, .val = valDatum};
|
||||
SFltSclPoint endPt = {.start = false, .excl = false, .val = valDatum};
|
||||
taosArrayPush(points, &startPt);
|
||||
taosArrayPush(points, &endPt);
|
||||
break;
|
||||
}
|
||||
case OP_TYPE_NOT_EQUAL: {
|
||||
SFltSclDatum valDatum;
|
||||
fltSclBuildDatumFromValueNode(&valDatum, oper->valNode);
|
||||
{
|
||||
SFltSclDatum start = {.kind = FLT_SCL_DATUM_KIND_MIN, .type = oper->colNode->node.resType};
|
||||
SFltSclPoint startPt = {.start = true, .excl = false, .val = start};
|
||||
SFltSclPoint endPt = {.start = false, .excl = true, .val = valDatum};
|
||||
taosArrayPush(points, &startPt);
|
||||
taosArrayPush(points, &endPt);
|
||||
}
|
||||
{
|
||||
SFltSclPoint startPt = {.start = true, .excl = true, .val = valDatum};
|
||||
SFltSclDatum end = {.kind = FLT_SCL_DATUM_KIND_MAX, .type = oper->colNode->node.resType};
|
||||
SFltSclPoint endPt = {.start = false, .excl = false, .val = end};
|
||||
taosArrayPush(points, &startPt);
|
||||
taosArrayPush(points, &endPt);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case
|
||||
default: {
|
||||
qError("not supported op");
|
||||
break;
|
||||
|
@ -4254,7 +4316,6 @@ int32_t fltSclProcessCNF(SArray* sclOpList, SArray* colRangeList) {
|
|||
taosArrayDestroy(colRange->points);
|
||||
taosArrayDestroy(points);
|
||||
colRange->points = merged;
|
||||
|
||||
}
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue