[td-14393] fix bug.
This commit is contained in:
parent
803e1ab162
commit
751cad9c2a
|
@ -393,6 +393,7 @@ typedef struct STableScanInfo {
|
||||||
int32_t times; // repeat counts
|
int32_t times; // repeat counts
|
||||||
int32_t current;
|
int32_t current;
|
||||||
int32_t reverseTimes; // 0 by default
|
int32_t reverseTimes; // 0 by default
|
||||||
|
SNode* pFilterNode; // filter operator info
|
||||||
SqlFunctionCtx* pCtx; // next operator query context
|
SqlFunctionCtx* pCtx; // next operator query context
|
||||||
SResultRowInfo* pResultRowInfo;
|
SResultRowInfo* pResultRowInfo;
|
||||||
int32_t* rowCellInfoOffset;
|
int32_t* rowCellInfoOffset;
|
||||||
|
@ -628,7 +629,7 @@ typedef struct SDistinctOperatorInfo {
|
||||||
|
|
||||||
SOperatorInfo* createExchangeOperatorInfo(const SNodeList* pSources, SSDataBlock* pBlock, SExecTaskInfo* pTaskInfo);
|
SOperatorInfo* createExchangeOperatorInfo(const SNodeList* pSources, SSDataBlock* pBlock, SExecTaskInfo* pTaskInfo);
|
||||||
SOperatorInfo* createTableScanOperatorInfo(void* pTsdbReadHandle, int32_t order, int32_t numOfCols, int32_t repeatTime,
|
SOperatorInfo* createTableScanOperatorInfo(void* pTsdbReadHandle, int32_t order, int32_t numOfCols, int32_t repeatTime,
|
||||||
int32_t reverseTime, SArray* pColMatchInfo, SExecTaskInfo* pTaskInfo);
|
int32_t reverseTime, SArray* pColMatchInfo, SNode* pCondition, SExecTaskInfo* pTaskInfo);
|
||||||
SOperatorInfo* createAggregateOperatorInfo(SOperatorInfo* downstream, SExprInfo* pExprInfo, int32_t numOfCols, SSDataBlock* pResultBlock,
|
SOperatorInfo* createAggregateOperatorInfo(SOperatorInfo* downstream, SExprInfo* pExprInfo, int32_t numOfCols, SSDataBlock* pResultBlock,
|
||||||
SExecTaskInfo* pTaskInfo, const STableGroupInfo* pTableGroupInfo);
|
SExecTaskInfo* pTaskInfo, const STableGroupInfo* pTableGroupInfo);
|
||||||
SOperatorInfo* createMultiTableAggOperatorInfo(SOperatorInfo* downstream, SExprInfo* pExprInfo, int32_t numOfCols, SSDataBlock* pResBlock, SExecTaskInfo* pTaskInfo, const STableGroupInfo* pTableGroupInfo);
|
SOperatorInfo* createMultiTableAggOperatorInfo(SOperatorInfo* downstream, SExprInfo* pExprInfo, int32_t numOfCols, SSDataBlock* pResBlock, SExecTaskInfo* pTaskInfo, const STableGroupInfo* pTableGroupInfo);
|
||||||
|
|
|
@ -3016,6 +3016,23 @@ int32_t loadDataBlock(SExecTaskInfo* pTaskInfo, STableScanInfo* pTableScanInfo,
|
||||||
taosArraySet(pBlock->pDataBlock, pColMatchInfo->targetSlotId, p);
|
taosArraySet(pBlock->pDataBlock, pColMatchInfo->targetSlotId, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pTableScanInfo->pFilterNode != NULL) {
|
||||||
|
SFilterInfo* filter = NULL;
|
||||||
|
int32_t code = filterInitFromNode((SNode*)pTableScanInfo->pFilterNode, &filter, 0);
|
||||||
|
|
||||||
|
SFilterColumnParam param1 = {.numOfCols = pBlock->info.numOfCols, .pDataBlock = pBlock->pDataBlock};
|
||||||
|
code = filterSetDataFromSlotId(filter, ¶m1);
|
||||||
|
|
||||||
|
int8_t* rowRes = NULL;
|
||||||
|
bool keep = filterExecute(filter, pBlock, &rowRes, NULL, param1.numOfCols);
|
||||||
|
|
||||||
|
// filterSetColFieldData(pQueryAttr->pFilters, pBlock->info.numOfCols, pBlock->pDataBlock);
|
||||||
|
|
||||||
|
// if (pQueryAttr->pFilters != NULL) {
|
||||||
|
// filterColRowsInDataBlock(pRuntimeEnv, pBlock, ascQuery);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4655,7 +4672,6 @@ static SSDataBlock* doTableScanImpl(SOperatorInfo* pOperator, bool* newgroup) {
|
||||||
// break;
|
// break;
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// pRuntimeEnv->current = *pTableQueryInfo;
|
|
||||||
// doTableQueryInfoTimeWindowCheck(pTaskInfo, *pTableQueryInfo, pTableScanInfo->order);
|
// doTableQueryInfoTimeWindowCheck(pTaskInfo, *pTableQueryInfo, pTableScanInfo->order);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
@ -5413,7 +5429,7 @@ SSDataBlock* createResultDataBlock(const SArray* pExprInfo) {
|
||||||
|
|
||||||
SOperatorInfo* createTableScanOperatorInfo(void* pTsdbReadHandle, int32_t order, int32_t numOfOutput,
|
SOperatorInfo* createTableScanOperatorInfo(void* pTsdbReadHandle, int32_t order, int32_t numOfOutput,
|
||||||
int32_t repeatTime, int32_t reverseTime, SArray* pColMatchInfo,
|
int32_t repeatTime, int32_t reverseTime, SArray* pColMatchInfo,
|
||||||
SExecTaskInfo* pTaskInfo) {
|
SNode* pCondition, SExecTaskInfo* pTaskInfo) {
|
||||||
assert(repeatTime > 0);
|
assert(repeatTime > 0);
|
||||||
|
|
||||||
STableScanInfo* pInfo = taosMemoryCalloc(1, sizeof(STableScanInfo));
|
STableScanInfo* pInfo = taosMemoryCalloc(1, sizeof(STableScanInfo));
|
||||||
|
@ -5432,6 +5448,7 @@ SOperatorInfo* createTableScanOperatorInfo(void* pTsdbReadHandle, int32_t order,
|
||||||
taosArrayPush(pInfo->block.pDataBlock, &idata);
|
taosArrayPush(pInfo->block.pDataBlock, &idata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pInfo->pFilterNode = pCondition;
|
||||||
pInfo->pTsdbReadHandle = pTsdbReadHandle;
|
pInfo->pTsdbReadHandle = pTsdbReadHandle;
|
||||||
pInfo->times = repeatTime;
|
pInfo->times = repeatTime;
|
||||||
pInfo->reverseTimes = reverseTime;
|
pInfo->reverseTimes = reverseTime;
|
||||||
|
@ -5703,7 +5720,7 @@ static SSDataBlock* doSysTableScan(SOperatorInfo* pOperator, bool* newgroup) {
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(pInfo->pRes->pDataBlock, i);
|
SColumnInfoData* pColInfoData = taosArrayGet(pInfo->pRes->pDataBlock, i);
|
||||||
int64_t tmp = 0;
|
int64_t tmp = 0;
|
||||||
char t[10] = {0};
|
char t[10] = {0};
|
||||||
STR_TO_VARSTR(t, "_");
|
STR_TO_VARSTR(t, "_"); //TODO
|
||||||
if (IS_VAR_DATA_TYPE(pColInfoData->info.type)) {
|
if (IS_VAR_DATA_TYPE(pColInfoData->info.type)) {
|
||||||
colDataAppend(pColInfoData, numOfRows, t, false);
|
colDataAppend(pColInfoData, numOfRows, t, false);
|
||||||
} else {
|
} else {
|
||||||
|
@ -8618,7 +8635,7 @@ SOperatorInfo* createOperatorTree(SPhysiNode* pPhyNode, SExecTaskInfo* pTaskInfo
|
||||||
SArray* pColList = extractColMatchInfo(pScanPhyNode->pScanCols, pScanPhyNode->node.pOutputDataBlockDesc, &numOfCols);
|
SArray* pColList = extractColMatchInfo(pScanPhyNode->pScanCols, pScanPhyNode->node.pOutputDataBlockDesc, &numOfCols);
|
||||||
|
|
||||||
return createTableScanOperatorInfo(pDataReader, pScanPhyNode->order, numOfCols, pScanPhyNode->count,
|
return createTableScanOperatorInfo(pDataReader, pScanPhyNode->order, numOfCols, pScanPhyNode->count,
|
||||||
pScanPhyNode->reverse, pColList, pTaskInfo);
|
pScanPhyNode->reverse, pColList, pScanPhyNode->node.pConditions, pTaskInfo);
|
||||||
} else if (QUERY_NODE_PHYSICAL_PLAN_EXCHANGE == nodeType(pPhyNode)) {
|
} else if (QUERY_NODE_PHYSICAL_PLAN_EXCHANGE == nodeType(pPhyNode)) {
|
||||||
SExchangePhysiNode* pExchange = (SExchangePhysiNode*)pPhyNode;
|
SExchangePhysiNode* pExchange = (SExchangePhysiNode*)pPhyNode;
|
||||||
SSDataBlock* pResBlock = createOutputBuf_rv1(pExchange->node.pOutputDataBlockDesc);
|
SSDataBlock* pResBlock = createOutputBuf_rv1(pExchange->node.pOutputDataBlockDesc);
|
||||||
|
|
|
@ -3668,7 +3668,6 @@ bool filterExecute(SFilterInfo *info, SSDataBlock *pSrc, int8_t** p, SColumnData
|
||||||
taosArrayPush(pList, &pSrc);
|
taosArrayPush(pList, &pSrc);
|
||||||
|
|
||||||
FLT_ERR_RET(scalarCalculate(info->sclCtx.node, pList, &output));
|
FLT_ERR_RET(scalarCalculate(info->sclCtx.node, pList, &output));
|
||||||
|
|
||||||
taosArrayDestroy(pList);
|
taosArrayDestroy(pList);
|
||||||
// TODO Fix it
|
// TODO Fix it
|
||||||
// *p = output.orig.data;
|
// *p = output.orig.data;
|
||||||
|
|
|
@ -275,7 +275,6 @@ TEST(timerangeTest, greater_and_lower) {
|
||||||
nodesDestroyNode(logicNode);
|
nodesDestroyNode(logicNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(columnTest, smallint_column_greater_double_value) {
|
TEST(columnTest, smallint_column_greater_double_value) {
|
||||||
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
||||||
int16_t leftv[5]= {1, 2, 3, 4, 5};
|
int16_t leftv[5]= {1, 2, 3, 4, 5};
|
||||||
|
@ -386,7 +385,6 @@ TEST(columnTest, int_column_greater_smallint_value) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(columnTest, int_column_in_double_list) {
|
TEST(columnTest, int_column_in_double_list) {
|
||||||
SNode *pLeft = NULL, *pRight = NULL, *listNode = NULL, *opNode = NULL;
|
SNode *pLeft = NULL, *pRight = NULL, *listNode = NULL, *opNode = NULL;
|
||||||
int32_t leftv[5] = {1, 2, 3, 4, 5};
|
int32_t leftv[5] = {1, 2, 3, 4, 5};
|
||||||
|
@ -432,8 +430,6 @@ TEST(columnTest, int_column_in_double_list) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TEST(columnTest, binary_column_in_binary_list) {
|
TEST(columnTest, binary_column_in_binary_list) {
|
||||||
SNode *pLeft = NULL, *pRight = NULL, *listNode = NULL, *opNode = NULL;
|
SNode *pLeft = NULL, *pRight = NULL, *listNode = NULL, *opNode = NULL;
|
||||||
bool eRes[5] = {true, true, false, false, false};
|
bool eRes[5] = {true, true, false, false, false};
|
||||||
|
@ -497,7 +493,6 @@ TEST(columnTest, binary_column_in_binary_list) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(columnTest, binary_column_like_binary) {
|
TEST(columnTest, binary_column_like_binary) {
|
||||||
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
||||||
char rightv[64] = {0};
|
char rightv[64] = {0};
|
||||||
|
@ -546,7 +541,6 @@ TEST(columnTest, binary_column_like_binary) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(columnTest, binary_column_is_null) {
|
TEST(columnTest, binary_column_is_null) {
|
||||||
SNode *pLeft = NULL, *opNode = NULL;
|
SNode *pLeft = NULL, *opNode = NULL;
|
||||||
char leftv[5][5]= {0};
|
char leftv[5][5]= {0};
|
||||||
|
@ -641,8 +635,6 @@ TEST(columnTest, binary_column_is_not_null) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TEST(opTest, smallint_column_greater_int_column) {
|
TEST(opTest, smallint_column_greater_int_column) {
|
||||||
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
||||||
int16_t leftv[5] = {1, -6, -2, 11, 101};
|
int16_t leftv[5] = {1, -6, -2, 11, 101};
|
||||||
|
@ -680,7 +672,6 @@ TEST(opTest, smallint_column_greater_int_column) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(opTest, smallint_value_add_int_column) {
|
TEST(opTest, smallint_value_add_int_column) {
|
||||||
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
||||||
int32_t leftv = 1;
|
int32_t leftv = 1;
|
||||||
|
@ -719,8 +710,6 @@ TEST(opTest, smallint_value_add_int_column) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TEST(opTest, bigint_column_multi_binary_column) {
|
TEST(opTest, bigint_column_multi_binary_column) {
|
||||||
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
||||||
int64_t leftv[5]= {1, 2, 3, 4, 5};
|
int64_t leftv[5]= {1, 2, 3, 4, 5};
|
||||||
|
@ -845,8 +834,6 @@ TEST(opTest, smallint_column_or_float_column) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TEST(opTest, smallint_column_or_double_value) {
|
TEST(opTest, smallint_column_or_double_value) {
|
||||||
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
SNode *pLeft = NULL, *pRight = NULL, *opNode = NULL;
|
||||||
int16_t leftv[5]= {0, 2, 3, 0, -1};
|
int16_t leftv[5]= {0, 2, 3, 0, -1};
|
||||||
|
@ -885,7 +872,6 @@ TEST(opTest, smallint_column_or_double_value) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(opTest, binary_column_is_true) {
|
TEST(opTest, binary_column_is_true) {
|
||||||
SNode *pLeft = NULL, *opNode = NULL;
|
SNode *pLeft = NULL, *opNode = NULL;
|
||||||
char leftv[5][5]= {0};
|
char leftv[5][5]= {0};
|
||||||
|
@ -930,7 +916,6 @@ TEST(opTest, binary_column_is_true) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(filterModelogicTest, diff_columns_and_or_and) {
|
TEST(filterModelogicTest, diff_columns_and_or_and) {
|
||||||
flttInitLogFile();
|
flttInitLogFile();
|
||||||
|
|
||||||
|
@ -1071,7 +1056,6 @@ TEST(filterModelogicTest, same_column_and_or_and) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(filterModelogicTest, diff_columns_or_and_or) {
|
TEST(filterModelogicTest, diff_columns_or_and_or) {
|
||||||
SNode *pLeft1 = NULL, *pRight1 = NULL, *pLeft2 = NULL, *pRight2 = NULL, *opNode1 = NULL, *opNode2 = NULL;
|
SNode *pLeft1 = NULL, *pRight1 = NULL, *pLeft2 = NULL, *pRight2 = NULL, *opNode1 = NULL, *opNode2 = NULL;
|
||||||
SNode *logicNode1 = NULL, *logicNode2 = NULL;
|
SNode *logicNode1 = NULL, *logicNode2 = NULL;
|
||||||
|
@ -1210,8 +1194,6 @@ TEST(filterModelogicTest, same_column_or_and_or) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TEST(scalarModelogicTest, diff_columns_or_and_or) {
|
TEST(scalarModelogicTest, diff_columns_or_and_or) {
|
||||||
flttInitLogFile();
|
flttInitLogFile();
|
||||||
|
|
||||||
|
@ -1283,8 +1265,6 @@ TEST(scalarModelogicTest, diff_columns_or_and_or) {
|
||||||
blockDataDestroy(src);
|
blockDataDestroy(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
taosSeedRand(taosGetTimestampSec());
|
taosSeedRand(taosGetTimestampSec());
|
||||||
testing::InitGoogleTest(&argc, argv);
|
testing::InitGoogleTest(&argc, argv);
|
||||||
|
|
Loading…
Reference in New Issue