enh:[TD-30998] Handling return value in filterTest.c
This commit is contained in:
parent
a1fb874c22
commit
71e57b1dfc
|
@ -460,11 +460,13 @@ struct SFilterInfo {
|
|||
#define FILTER_UNIT_GET_R(i, idx) ((i)->unitRes[idx])
|
||||
#define FILTER_UNIT_SET_R(i, idx, v) (i)->unitRes[idx] = (v)
|
||||
|
||||
#define FILTER_PUSH_UNIT(colInfo, u) \
|
||||
do { \
|
||||
(colInfo).type = RANGE_TYPE_UNIT; \
|
||||
(colInfo).dataType = FILTER_UNIT_DATA_TYPE(u); \
|
||||
taosArrayPush((SArray *)((colInfo).info), &u); \
|
||||
#define FILTER_PUSH_UNIT(colInfo, u) \
|
||||
do { \
|
||||
(colInfo).type = RANGE_TYPE_UNIT; \
|
||||
(colInfo).dataType = FILTER_UNIT_DATA_TYPE(u); \
|
||||
if (taosArrayPush((SArray *)((colInfo).info), &u) == NULL) { \
|
||||
FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); \
|
||||
} \
|
||||
} while (0)
|
||||
#define FILTER_PUSH_VAR_HASH(colInfo, ha) \
|
||||
do { \
|
||||
|
|
|
@ -1632,7 +1632,7 @@ EDealRes fltTreeToGroup(SNode *pNode, void *pContext) {
|
|||
cell = cell->pNext;
|
||||
}
|
||||
|
||||
taosArrayAddAll(ctx->group, preGroup);
|
||||
(void)taosArrayAddAll(ctx->group, preGroup);
|
||||
|
||||
taosArrayDestroy(preGroup);
|
||||
|
||||
|
@ -1825,12 +1825,12 @@ int32_t filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t optio
|
|||
FLT_ERR_RET(fltConverToStr(str + len, type, data, tlen > 32 ? 32 : tlen, &tlen));
|
||||
}
|
||||
} else {
|
||||
strcat(str, "NULL");
|
||||
(void)strcat(str, "NULL");
|
||||
}
|
||||
strcat(str, "]");
|
||||
(void)strcat(str, "]");
|
||||
|
||||
if (unit->compare.optr2) {
|
||||
strcat(str, " && ");
|
||||
(void)strcat(str, " && ");
|
||||
if (unit->compare.optr2 <= OP_TYPE_JSON_CONTAINS) {
|
||||
sprintf(str + strlen(str), "[%d][%d] %s [", refNode->dataBlockId, refNode->slotId,
|
||||
operatorTypeStr(unit->compare.optr2));
|
||||
|
@ -1845,9 +1845,9 @@ int32_t filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t optio
|
|||
}
|
||||
FLT_ERR_RET(fltConverToStr(str + strlen(str), type, data, tlen > 32 ? 32 : tlen, &tlen));
|
||||
} else {
|
||||
strcat(str, "NULL");
|
||||
(void)strcat(str, "NULL");
|
||||
}
|
||||
strcat(str, "]");
|
||||
(void)strcat(str, "]");
|
||||
}
|
||||
|
||||
qDebug("%s", str); // TODO
|
||||
|
@ -1881,15 +1881,15 @@ int32_t filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t optio
|
|||
while (r) {
|
||||
char str[256] = {0};
|
||||
if (FILTER_GET_FLAG(r->ra.sflag, RANGE_FLG_NULL)) {
|
||||
strcat(str, "(NULL)");
|
||||
(void)strcat(str, "(NULL)");
|
||||
} else {
|
||||
FILTER_GET_FLAG(r->ra.sflag, RANGE_FLG_EXCLUDE) ? strcat(str, "(") : strcat(str, "[");
|
||||
FLT_ERR_RET(fltConverToStr(str + strlen(str), ctx->type, &r->ra.s, tlen > 32 ? 32 : tlen, &tlen));
|
||||
FILTER_GET_FLAG(r->ra.sflag, RANGE_FLG_EXCLUDE) ? strcat(str, ")") : strcat(str, "]");
|
||||
}
|
||||
strcat(str, " - ");
|
||||
(void)strcat(str, " - ");
|
||||
if (FILTER_GET_FLAG(r->ra.eflag, RANGE_FLG_NULL)) {
|
||||
strcat(str, "(NULL)");
|
||||
(void)strcat(str, "(NULL)");
|
||||
} else {
|
||||
FILTER_GET_FLAG(r->ra.eflag, RANGE_FLG_EXCLUDE) ? strcat(str, "(") : strcat(str, "[");
|
||||
FLT_ERR_RET(fltConverToStr(str + strlen(str), ctx->type, &r->ra.e, tlen > 32 ? 32 : tlen, &tlen));
|
||||
|
@ -2692,7 +2692,7 @@ int32_t filterMergeGroups(SFilterInfo *info, SFilterGroupCtx **gRes, int32_t *gR
|
|||
|
||||
if (gRes[n] == NULL) {
|
||||
if (n < ((*gResNum) - 1)) {
|
||||
memmove(&gRes[n], &gRes[n + 1], (*gResNum - n - 1) * POINTER_BYTES);
|
||||
(void)memmove(&gRes[n], &gRes[n + 1], (*gResNum - n - 1) * POINTER_BYTES);
|
||||
}
|
||||
|
||||
--cEnd;
|
||||
|
@ -2713,7 +2713,7 @@ int32_t filterMergeGroups(SFilterInfo *info, SFilterGroupCtx **gRes, int32_t *gR
|
|||
|
||||
if (gRes[n] == NULL) {
|
||||
if (n < ((*gResNum) - 1)) {
|
||||
memmove(&gRes[n], &gRes[n + 1], (*gResNum - n - 1) * POINTER_BYTES);
|
||||
(void)memmove(&gRes[n], &gRes[n + 1], (*gResNum - n - 1) * POINTER_BYTES);
|
||||
}
|
||||
|
||||
--cEnd;
|
||||
|
@ -2917,10 +2917,9 @@ int32_t filterGenerateColRange(SFilterInfo *info, SFilterGroupCtx **gRes, int32_
|
|||
if (all) {
|
||||
(void)filterFreeRangeCtx(info->colRange[m]); // No need to handle the return value.
|
||||
info->colRange[m] = NULL;
|
||||
|
||||
if (m < (info->colRangeNum - 1)) {
|
||||
memmove(&info->colRange[m], &info->colRange[m + 1], (info->colRangeNum - m - 1) * POINTER_BYTES);
|
||||
memmove(&idxs[m], &idxs[m + 1], (info->colRangeNum - m - 1) * sizeof(*idxs));
|
||||
(void)memmove(&info->colRange[m], &info->colRange[m + 1], (info->colRangeNum - m - 1) * POINTER_BYTES);
|
||||
(void)memmove(&idxs[m], &idxs[m + 1], (info->colRangeNum - m - 1) * sizeof(*idxs));
|
||||
}
|
||||
|
||||
--info->colRangeNum;
|
||||
|
|
|
@ -627,7 +627,7 @@ int32_t sclWalkCaseWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell
|
|||
if (*equal) {
|
||||
bool isNull = colDataIsNull_s(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
||||
char *pData = isNull ? NULL : colDataGetData(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
||||
colDataSetVal(output->columnData, rowIdx, pData, isNull);
|
||||
SCL_ERR_JRET(colDataSetVal(output->columnData, rowIdx, pData, isNull));
|
||||
|
||||
if (0 == rowIdx && 1 == pCase->numOfRows && 1 == pWhen->numOfRows && 1 == pThen->numOfRows && totalRows > 1) {
|
||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||
|
@ -641,7 +641,7 @@ int32_t sclWalkCaseWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell
|
|||
if (pElse) {
|
||||
bool isNull = colDataIsNull_s(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
||||
char *pData = isNull ? NULL : colDataGetData(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
||||
colDataSetVal(output->columnData, rowIdx, pData, isNull);
|
||||
SCL_ERR_JRET(colDataSetVal(output->columnData, rowIdx, pData, isNull));
|
||||
|
||||
if (0 == rowIdx && 1 == pCase->numOfRows && 1 == pElse->numOfRows && totalRows > 1) {
|
||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||
|
@ -651,7 +651,7 @@ int32_t sclWalkCaseWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell
|
|||
goto _return;
|
||||
}
|
||||
|
||||
colDataSetVal(output->columnData, rowIdx, NULL, true);
|
||||
SCL_ERR_JRET(colDataSetVal(output->columnData, rowIdx, NULL, true));
|
||||
|
||||
if (0 == rowIdx && 1 == pCase->numOfRows && totalRows > 1) {
|
||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||
|
@ -690,7 +690,7 @@ int32_t sclWalkWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell *pCe
|
|||
if (*whenValue) {
|
||||
bool isNull = colDataIsNull_s(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
||||
char *pData = isNull ? NULL : colDataGetData(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
||||
colDataSetVal(output->columnData, rowIdx, pData, isNull);
|
||||
SCL_ERR_JRET(colDataSetVal(output->columnData, rowIdx, pData, isNull));
|
||||
|
||||
if (preSingle && 0 == rowIdx && 1 == pWhen->numOfRows && 1 == pThen->numOfRows && totalRows > 1) {
|
||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||
|
@ -709,7 +709,7 @@ int32_t sclWalkWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell *pCe
|
|||
if (pElse) {
|
||||
bool isNull = colDataIsNull_s(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
||||
char *pData = isNull ? NULL : colDataGetData(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
||||
colDataSetVal(output->columnData, rowIdx, pData, isNull);
|
||||
SCL_ERR_JRET(colDataSetVal(output->columnData, rowIdx, pData, isNull));
|
||||
|
||||
if (preSingle && 0 == rowIdx && 1 == pElse->numOfRows && totalRows > 1) {
|
||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||
|
@ -719,7 +719,7 @@ int32_t sclWalkWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell *pCe
|
|||
goto _return;
|
||||
}
|
||||
|
||||
colDataSetVal(output->columnData, rowIdx, NULL, true);
|
||||
SCL_ERR_JRET(colDataSetVal(output->columnData, rowIdx, NULL, true));
|
||||
|
||||
if (preSingle && 0 == rowIdx && totalRows > 1) {
|
||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||
|
|
|
@ -55,21 +55,24 @@ void flttInitLogFile() {
|
|||
|
||||
tsAsyncLog = 0;
|
||||
qDebugFlag = 159;
|
||||
strcpy(tsLogDir, TD_LOG_DIR_PATH);
|
||||
(void)strcpy(tsLogDir, TD_LOG_DIR_PATH);
|
||||
|
||||
if (taosInitLog(defaultLogFileNamePrefix, maxLogFileNum) < 0) {
|
||||
printf("failed to open log file in directory:%s\n", tsLogDir);
|
||||
}
|
||||
}
|
||||
|
||||
void flttMakeValueNode(SNode **pNode, int32_t dataType, void *value) {
|
||||
int32_t flttMakeValueNode(SNode **pNode, int32_t dataType, void *value) {
|
||||
SNode *node = (SNode *)nodesMakeNode(QUERY_NODE_VALUE);
|
||||
SValueNode *vnode = (SValueNode *)node;
|
||||
vnode->node.resType.type = dataType;
|
||||
|
||||
if (IS_VAR_DATA_TYPE(dataType)) {
|
||||
vnode->datum.p = (char *)taosMemoryMalloc(varDataTLen(value));
|
||||
varDataCopy(vnode->datum.p, value);
|
||||
if (NULL == vnode->datum.p) {
|
||||
FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
(void)varDataCopy(vnode->datum.p, value);
|
||||
vnode->node.resType.bytes = varDataLen(value);
|
||||
} else {
|
||||
vnode->node.resType.bytes = tDataTypes[dataType].bytes;
|
||||
|
@ -77,13 +80,17 @@ void flttMakeValueNode(SNode **pNode, int32_t dataType, void *value) {
|
|||
}
|
||||
|
||||
*pNode = (SNode *)vnode;
|
||||
FLT_RET(TSDB_CODE_SUCCESS);
|
||||
}
|
||||
|
||||
void flttMakeColumnNode(SNode **pNode, SSDataBlock **block, int32_t dataType, int32_t dataBytes, int32_t rowNum,
|
||||
int32_t flttMakeColumnNode(SNode **pNode, SSDataBlock **block, int32_t dataType, int32_t dataBytes, int32_t rowNum,
|
||||
void *value) {
|
||||
static uint64_t dbidx = 0;
|
||||
|
||||
SNode *node = (SNode *)nodesMakeNode(QUERY_NODE_COLUMN);
|
||||
if (NULL == node) {
|
||||
FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
SColumnNode *rnode = (SColumnNode *)node;
|
||||
rnode->node.resType.type = dataType;
|
||||
rnode->node.resType.bytes = dataBytes;
|
||||
|
@ -96,23 +103,27 @@ void flttMakeColumnNode(SNode **pNode, SSDataBlock **block, int32_t dataType, in
|
|||
rnode->colId = 3;
|
||||
*pNode = (SNode *)rnode;
|
||||
|
||||
return;
|
||||
FLT_RET(TSDB_CODE_SUCCESS);
|
||||
}
|
||||
|
||||
if (NULL == *block) {
|
||||
SSDataBlock *res = createDataBlock();
|
||||
for (int32_t i = 0; i < 2; ++i) {
|
||||
SColumnInfoData idata = createColumnInfoData(TSDB_DATA_TYPE_NULL, 10, 1 + i);
|
||||
blockDataAppendColInfo(res, &idata);
|
||||
FLT_ERR_RET(blockDataAppendColInfo(res, &idata));
|
||||
}
|
||||
|
||||
SColumnInfoData idata = createColumnInfoData(dataType, dataBytes, 3);
|
||||
blockDataAppendColInfo(res, &idata);
|
||||
blockDataEnsureCapacity(res, rowNum);
|
||||
FLT_ERR_RET(blockDataAppendColInfo(res, &idata));
|
||||
FLT_ERR_RET(blockDataEnsureCapacity(res, rowNum));
|
||||
|
||||
SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock);
|
||||
if (NULL == pColumn) {
|
||||
fltError("fail to get the last task, num:%d", (int32_t)taosArrayGetSize(res->pDataBlock));
|
||||
FLT_ERR_RET(TSDB_CODE_QRY_SYS_ERROR);
|
||||
}
|
||||
for (int32_t i = 0; i < rowNum; ++i) {
|
||||
colDataSetVal(pColumn, i, (const char *)value, false);
|
||||
FLT_ERR_RET(colDataSetVal(pColumn, i, (const char *)value, false));
|
||||
if (IS_VAR_DATA_TYPE(dataType)) {
|
||||
value = (char *)value + varDataTLen(value);
|
||||
} else {
|
||||
|
@ -130,13 +141,16 @@ void flttMakeColumnNode(SNode **pNode, SSDataBlock **block, int32_t dataType, in
|
|||
|
||||
int32_t idx = taosArrayGetSize(res->pDataBlock);
|
||||
SColumnInfoData idata = createColumnInfoData(dataType, dataBytes, 1 + idx);
|
||||
blockDataAppendColInfo(res, &idata);
|
||||
blockDataEnsureCapacity(res, rowNum);
|
||||
FLT_ERR_RET(blockDataAppendColInfo(res, &idata));
|
||||
FLT_ERR_RET(blockDataEnsureCapacity(res, rowNum));
|
||||
|
||||
SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock);
|
||||
|
||||
if (NULL == pColumn) {
|
||||
fltError("fail to get the last task, num:%d", (int32_t)taosArrayGetSize(res->pDataBlock));
|
||||
FLT_ERR_RET(TSDB_CODE_QRY_SYS_ERROR);
|
||||
}
|
||||
for (int32_t i = 0; i < rowNum; ++i) {
|
||||
colDataSetVal(pColumn, i, (const char *)value, false);
|
||||
FLT_ERR_RET(colDataSetVal(pColumn, i, (const char *)value, false));
|
||||
if (IS_VAR_DATA_TYPE(dataType)) {
|
||||
value = (char *)value + varDataTLen(value);
|
||||
} else {
|
||||
|
@ -149,10 +163,14 @@ void flttMakeColumnNode(SNode **pNode, SSDataBlock **block, int32_t dataType, in
|
|||
}
|
||||
|
||||
*pNode = (SNode *)rnode;
|
||||
FLT_RET(TSDB_CODE_SUCCESS);
|
||||
}
|
||||
|
||||
void flttMakeOpNode(SNode **pNode, EOperatorType opType, int32_t resType, SNode *pLeft, SNode *pRight) {
|
||||
int32_t flttMakeOpNode(SNode **pNode, EOperatorType opType, int32_t resType, SNode *pLeft, SNode *pRight) {
|
||||
SNode *node = (SNode *)nodesMakeNode(QUERY_NODE_OPERATOR);
|
||||
if (NULL == node) {
|
||||
FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
SOperatorNode *onode = (SOperatorNode *)node;
|
||||
onode->node.resType.type = resType;
|
||||
onode->node.resType.bytes = tDataTypes[resType].bytes;
|
||||
|
@ -162,10 +180,14 @@ void flttMakeOpNode(SNode **pNode, EOperatorType opType, int32_t resType, SNode
|
|||
onode->pRight = pRight;
|
||||
|
||||
*pNode = (SNode *)onode;
|
||||
FLT_RET(TSDB_CODE_SUCCESS);
|
||||
}
|
||||
|
||||
void flttMakeLogicNode(SNode **pNode, ELogicConditionType opType, SNode **nodeList, int32_t nodeNum) {
|
||||
int32_t flttMakeLogicNode(SNode **pNode, ELogicConditionType opType, SNode **nodeList, int32_t nodeNum) {
|
||||
SNode *node = (SNode *)nodesMakeNode(QUERY_NODE_LOGIC_CONDITION);
|
||||
if (NULL == node) {
|
||||
FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
SLogicConditionNode *onode = (SLogicConditionNode *)node;
|
||||
onode->condType = opType;
|
||||
onode->node.resType.type = TSDB_DATA_TYPE_BOOL;
|
||||
|
@ -173,14 +195,18 @@ void flttMakeLogicNode(SNode **pNode, ELogicConditionType opType, SNode **nodeLi
|
|||
|
||||
onode->pParameterList = nodesMakeList();
|
||||
for (int32_t i = 0; i < nodeNum; ++i) {
|
||||
nodesListAppend(onode->pParameterList, nodeList[i]);
|
||||
FLT_ERR_RET(nodesListAppend(onode->pParameterList, nodeList[i]));
|
||||
}
|
||||
|
||||
*pNode = (SNode *)onode;
|
||||
FLT_RET(TSDB_CODE_SUCCESS);
|
||||
}
|
||||
|
||||
void flttMakeLogicNodeFromList(SNode **pNode, ELogicConditionType opType, SNodeList *nodeList) {
|
||||
int32_t flttMakeLogicNodeFromList(SNode **pNode, ELogicConditionType opType, SNodeList *nodeList) {
|
||||
SNode *node = (SNode *)nodesMakeNode(QUERY_NODE_LOGIC_CONDITION);
|
||||
if (NULL == node) {
|
||||
FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
SLogicConditionNode *onode = (SLogicConditionNode *)node;
|
||||
onode->condType = opType;
|
||||
onode->node.resType.type = TSDB_DATA_TYPE_BOOL;
|
||||
|
@ -189,15 +215,20 @@ void flttMakeLogicNodeFromList(SNode **pNode, ELogicConditionType opType, SNodeL
|
|||
onode->pParameterList = nodeList;
|
||||
|
||||
*pNode = (SNode *)onode;
|
||||
FLT_RET(TSDB_CODE_SUCCESS);
|
||||
}
|
||||
|
||||
void flttMakeListNode(SNode **pNode, SNodeList *list, int32_t resType) {
|
||||
int32_t flttMakeListNode(SNode **pNode, SNodeList *list, int32_t resType) {
|
||||
SNode *node = (SNode *)nodesMakeNode(QUERY_NODE_NODE_LIST);
|
||||
if (NULL == node) {
|
||||
FLT_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
SNodeListNode *lnode = (SNodeListNode *)node;
|
||||
lnode->node.resType.type = resType;
|
||||
lnode->pNodeList = list;
|
||||
|
||||
*pNode = (SNode *)lnode;
|
||||
FLT_RET(TSDB_CODE_SUCCESS);
|
||||
}
|
||||
|
||||
void initScalarParam(SScalarParam *pParam) {
|
||||
|
@ -213,17 +244,21 @@ TEST(timerangeTest, greater) {
|
|||
SScalarParam res;
|
||||
initScalarParam(&res);
|
||||
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
int64_t tsmall = 222, tbig = 333;
|
||||
flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tsmall);
|
||||
flttMakeOpNode(&opNode1, OP_TYPE_GREATER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
code = flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tsmall);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeOpNode(&opNode1, OP_TYPE_GREATER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
ASSERT_EQ(code, 0);
|
||||
|
||||
// SFilterInfo *filter = NULL;
|
||||
// int32_t code = filterInitFromNode(opNode1, &filter, FLT_OPTION_NO_REWRITE|FLT_OPTION_TIMESTAMP);
|
||||
// ASSERT_EQ(code, 0);
|
||||
STimeWindow win = {0};
|
||||
bool isStrict = false;
|
||||
int32_t code = filterGetTimeRange(opNode1, &win, &isStrict);
|
||||
code = filterGetTimeRange(opNode1, &win, &isStrict);
|
||||
ASSERT_EQ(code, 0);
|
||||
ASSERT_EQ(isStrict, true);
|
||||
ASSERT_EQ(win.skey, tsmall + 1);
|
||||
|
@ -237,25 +272,33 @@ TEST(timerangeTest, greater_and_lower) {
|
|||
bool eRes[5] = {false, false, true, true, true};
|
||||
SScalarParam res;
|
||||
initScalarParam(&res);
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
int64_t tsmall = 222, tbig = 333;
|
||||
flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tsmall);
|
||||
flttMakeOpNode(&opNode1, OP_TYPE_GREATER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tbig);
|
||||
flttMakeOpNode(&opNode2, OP_TYPE_LOWER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
code = flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tsmall);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeOpNode(&opNode1, OP_TYPE_GREATER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tbig);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeOpNode(&opNode2, OP_TYPE_LOWER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
ASSERT_EQ(code, 0);
|
||||
SNode *list[2] = {0};
|
||||
list[0] = opNode1;
|
||||
list[1] = opNode2;
|
||||
|
||||
flttMakeLogicNode(&logicNode, LOGIC_COND_TYPE_AND, list, 2);
|
||||
code = flttMakeLogicNode(&logicNode, LOGIC_COND_TYPE_AND, list, 2);
|
||||
ASSERT_EQ(code, 0);
|
||||
|
||||
// SFilterInfo *filter = NULL;
|
||||
// int32_t code = filterInitFromNode(logicNode, &filter, FLT_OPTION_NO_REWRITE|FLT_OPTION_TIMESTAMP);
|
||||
// ASSERT_EQ(code, 0);
|
||||
STimeWindow win = {0};
|
||||
bool isStrict = false;
|
||||
int32_t code = filterGetTimeRange(logicNode, &win, &isStrict);
|
||||
code = filterGetTimeRange(logicNode, &win, &isStrict);
|
||||
ASSERT_EQ(isStrict, true);
|
||||
ASSERT_EQ(code, 0);
|
||||
ASSERT_EQ(win.skey, tsmall + 1);
|
||||
|
@ -269,25 +312,33 @@ TEST(timerangeTest, greater_equal_and_lower_equal) {
|
|||
bool eRes[5] = {false, false, true, true, true};
|
||||
SScalarParam res;
|
||||
initScalarParam(&res);
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
int64_t tsmall = 222, tbig = 333;
|
||||
flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tsmall);
|
||||
flttMakeOpNode(&opNode1, OP_TYPE_GREATER_EQUAL, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tbig);
|
||||
flttMakeOpNode(&opNode2, OP_TYPE_LOWER_EQUAL, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
code = flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tsmall);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeOpNode(&opNode1, OP_TYPE_GREATER_EQUAL, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tbig);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeOpNode(&opNode2, OP_TYPE_LOWER_EQUAL, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
ASSERT_EQ(code, 0);
|
||||
SNode *list[2] = {0};
|
||||
list[0] = opNode1;
|
||||
list[1] = opNode2;
|
||||
|
||||
flttMakeLogicNode(&logicNode, LOGIC_COND_TYPE_AND, list, 2);
|
||||
code = flttMakeLogicNode(&logicNode, LOGIC_COND_TYPE_AND, list, 2);
|
||||
ASSERT_EQ(code, 0);
|
||||
|
||||
// SFilterInfo *filter = NULL;
|
||||
// int32_t code = filterInitFromNode(logicNode, &filter, FLT_OPTION_NO_REWRITE|FLT_OPTION_TIMESTAMP);
|
||||
// ASSERT_EQ(code, 0);
|
||||
STimeWindow win = {0};
|
||||
bool isStrict = false;
|
||||
int32_t code = filterGetTimeRange(logicNode, &win, &isStrict);
|
||||
code = filterGetTimeRange(logicNode, &win, &isStrict);
|
||||
ASSERT_EQ(isStrict, true);
|
||||
ASSERT_EQ(code, 0);
|
||||
ASSERT_EQ(win.skey, tsmall);
|
||||
|
@ -301,42 +352,58 @@ TEST(timerangeTest, greater_and_lower_not_strict) {
|
|||
bool eRes[5] = {false, false, true, true, true};
|
||||
SScalarParam res;
|
||||
initScalarParam(&res);
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
int64_t tsmall1 = 222, tbig1 = 333;
|
||||
int64_t tsmall2 = 444, tbig2 = 555;
|
||||
SNode *list[2] = {0};
|
||||
|
||||
flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tsmall1);
|
||||
flttMakeOpNode(&opNode1, OP_TYPE_GREATER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tbig1);
|
||||
flttMakeOpNode(&opNode2, OP_TYPE_LOWER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
code = flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tsmall1);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeOpNode(&opNode1, OP_TYPE_GREATER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tbig1);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeOpNode(&opNode2, OP_TYPE_LOWER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
ASSERT_EQ(code, 0);
|
||||
list[0] = opNode1;
|
||||
list[1] = opNode2;
|
||||
|
||||
flttMakeLogicNode(&logicNode1, LOGIC_COND_TYPE_AND, list, 2);
|
||||
code = flttMakeLogicNode(&logicNode1, LOGIC_COND_TYPE_AND, list, 2);
|
||||
ASSERT_EQ(code, 0);
|
||||
|
||||
flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tsmall2);
|
||||
flttMakeOpNode(&opNode1, OP_TYPE_GREATER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tbig2);
|
||||
flttMakeOpNode(&opNode2, OP_TYPE_LOWER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
code = flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tsmall2);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeOpNode(&opNode1, OP_TYPE_GREATER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeColumnNode(&pcol, NULL, TSDB_DATA_TYPE_TIMESTAMP, sizeof(int64_t), 0, NULL);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeValueNode(&pval, TSDB_DATA_TYPE_TIMESTAMP, &tbig2);
|
||||
ASSERT_EQ(code, 0);
|
||||
code = flttMakeOpNode(&opNode2, OP_TYPE_LOWER_THAN, TSDB_DATA_TYPE_BOOL, pcol, pval);
|
||||
ASSERT_EQ(code, 0);
|
||||
list[0] = opNode1;
|
||||
list[1] = opNode2;
|
||||
|
||||
flttMakeLogicNode(&logicNode2, LOGIC_COND_TYPE_AND, list, 2);
|
||||
code = flttMakeLogicNode(&logicNode2, LOGIC_COND_TYPE_AND, list, 2);
|
||||
ASSERT_EQ(code, 0);
|
||||
|
||||
list[0] = logicNode1;
|
||||
list[1] = logicNode2;
|
||||
flttMakeLogicNode(&logicNode1, LOGIC_COND_TYPE_OR, list, 2);
|
||||
code = flttMakeLogicNode(&logicNode1, LOGIC_COND_TYPE_OR, list, 2);
|
||||
ASSERT_EQ(code, 0);
|
||||
|
||||
// SFilterInfo *filter = NULL;
|
||||
// int32_t code = filterInitFromNode(logicNode, &filter, FLT_OPTION_NO_REWRITE|FLT_OPTION_TIMESTAMP);
|
||||
// ASSERT_EQ(code, 0);
|
||||
STimeWindow win = {0};
|
||||
bool isStrict = false;
|
||||
int32_t code = filterGetTimeRange(logicNode1, &win, &isStrict);
|
||||
code = filterGetTimeRange(logicNode1, &win, &isStrict);
|
||||
ASSERT_EQ(isStrict, false);
|
||||
ASSERT_EQ(code, 0);
|
||||
ASSERT_EQ(win.skey, tsmall1 + 1);
|
||||
|
|
Loading…
Reference in New Issue