fix(query): check node type when extract column info.
This commit is contained in:
parent
825858b52e
commit
4af80fa0aa
|
@ -938,15 +938,17 @@ SArray* extractColMatchInfo(SNodeList* pNodeList, SDataBlockDescNode* pOutputNod
|
|||
|
||||
for (int32_t i = 0; i < numOfCols; ++i) {
|
||||
STargetNode* pNode = (STargetNode*)nodesListGetNode(pNodeList, i);
|
||||
SColumnNode* pColNode = (SColumnNode*)pNode->pExpr;
|
||||
if (nodeType(pNode->pExpr) == QUERY_NODE_COLUMN) {
|
||||
SColumnNode* pColNode = (SColumnNode*)pNode->pExpr;
|
||||
|
||||
SColMatchInfo c = {0};
|
||||
c.output = true;
|
||||
c.colId = pColNode->colId;
|
||||
c.srcSlotId = pColNode->slotId;
|
||||
c.matchType = type;
|
||||
c.targetSlotId = pNode->slotId;
|
||||
taosArrayPush(pList, &c);
|
||||
SColMatchInfo c = {0};
|
||||
c.output = true;
|
||||
c.colId = pColNode->colId;
|
||||
c.srcSlotId = pColNode->slotId;
|
||||
c.matchType = type;
|
||||
c.targetSlotId = pNode->slotId;
|
||||
taosArrayPush(pList, &c);
|
||||
}
|
||||
}
|
||||
|
||||
*numOfOutputCols = 0;
|
||||
|
|
|
@ -263,8 +263,6 @@ SResultRow* doSetResultOutBufByKey(SDiskbasedBuf* pResultBuf, SResultRowInfo* pR
|
|||
ASSERT(pSup->resultRowSize > 0);
|
||||
pResult = getNewResultRow(pResultBuf, &pSup->currentPageId, pSup->resultRowSize);
|
||||
|
||||
initResultRow(pResult);
|
||||
|
||||
// add a new result set for a new group
|
||||
SResultRowPosition pos = {.pageId = pResult->pageId, .offset = pResult->offset};
|
||||
tSimpleHashPut(pSup->pResultRowHashTable, pSup->keyBuf, GET_RES_WINDOW_KEY_LEN(bytes), &pos,
|
||||
|
@ -817,13 +815,6 @@ void setBlockSMAInfo(SqlFunctionCtx* pCtx, SExprInfo* pExprInfo, SSDataBlock* pB
|
|||
} else {
|
||||
pInput->colDataAggIsSet = false;
|
||||
}
|
||||
|
||||
// set the statistics data for primary time stamp column
|
||||
// if (pCtx->functionId == FUNCTION_SPREAD && pColumn->colId == PRIMARYKEY_TIMESTAMP_COL_ID) {
|
||||
// pCtx->isAggSet = true;
|
||||
// pCtx->agg.min = pBlock->info.window.skey;
|
||||
// pCtx->agg.max = pBlock->info.window.ekey;
|
||||
// }
|
||||
}
|
||||
|
||||
bool isTaskKilled(SExecTaskInfo* pTaskInfo) {
|
||||
|
@ -860,146 +851,6 @@ STimeWindow getAlignQueryTimeWindow(SInterval* pInterval, int32_t precision, int
|
|||
return win;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static int32_t updateBlockLoadStatus(STaskAttr* pQuery, int32_t status) {
|
||||
|
||||
bool hasFirstLastFunc = false;
|
||||
bool hasOtherFunc = false;
|
||||
|
||||
if (status == BLK_DATA_DATA_LOAD || status == BLK_DATA_FILTEROUT) {
|
||||
return status;
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < pQuery->numOfOutput; ++i) {
|
||||
int32_t functionId = getExprFunctionId(&pQuery->pExpr1[i]);
|
||||
|
||||
if (functionId == FUNCTION_TS || functionId == FUNCTION_TS_DUMMY || functionId == FUNCTION_TAG ||
|
||||
functionId == FUNCTION_TAG_DUMMY) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (functionId == FUNCTION_FIRST_DST || functionId == FUNCTION_LAST_DST) {
|
||||
hasFirstLastFunc = true;
|
||||
} else {
|
||||
hasOtherFunc = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (hasFirstLastFunc && status == BLK_DATA_NOT_LOAD) {
|
||||
if (!hasOtherFunc) {
|
||||
return BLK_DATA_FILTEROUT;
|
||||
} else {
|
||||
return BLK_DATA_DATA_LOAD;
|
||||
}
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// static void updateDataCheckOrder(SQInfo *pQInfo, SQueryTableReq* pQueryMsg, bool stableQuery) {
|
||||
// STaskAttr* pQueryAttr = pQInfo->runtimeEnv.pQueryAttr;
|
||||
//
|
||||
// // in case of point-interpolation query, use asc order scan
|
||||
// char msg[] = "QInfo:0x%"PRIx64" scan order changed for %s query, old:%d, new:%d, qrange exchanged, old qrange:%"
|
||||
// PRId64
|
||||
// "-%" PRId64 ", new qrange:%" PRId64 "-%" PRId64;
|
||||
//
|
||||
// // todo handle the case the the order irrelevant query type mixed up with order critical query type
|
||||
// // descending order query for last_row query
|
||||
// if (isFirstLastRowQuery(pQueryAttr)) {
|
||||
// //qDebug("QInfo:0x%"PRIx64" scan order changed for last_row query, old:%d, new:%d", pQInfo->qId,
|
||||
// pQueryAttr->order.order, TSDB_ORDER_ASC);
|
||||
//
|
||||
// pQueryAttr->order.order = TSDB_ORDER_ASC;
|
||||
// if (pQueryAttr->window.skey > pQueryAttr->window.ekey) {
|
||||
// TSWAP(pQueryAttr->window.skey, pQueryAttr->window.ekey);
|
||||
// }
|
||||
//
|
||||
// pQueryAttr->needReverseScan = false;
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if (pQueryAttr->groupbyColumn && pQueryAttr->order.order == TSDB_ORDER_DESC) {
|
||||
// pQueryAttr->order.order = TSDB_ORDER_ASC;
|
||||
// if (pQueryAttr->window.skey > pQueryAttr->window.ekey) {
|
||||
// TSWAP(pQueryAttr->window.skey, pQueryAttr->window.ekey);
|
||||
// }
|
||||
//
|
||||
// pQueryAttr->needReverseScan = false;
|
||||
// doUpdateLastKey(pQueryAttr);
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if (pQueryAttr->pointInterpQuery && pQueryAttr->interval.interval == 0) {
|
||||
// if (!QUERY_IS_ASC_QUERY(pQueryAttr)) {
|
||||
// //qDebug(msg, pQInfo->qId, "interp", pQueryAttr->order.order, TSDB_ORDER_ASC, pQueryAttr->window.skey,
|
||||
// pQueryAttr->window.ekey, pQueryAttr->window.ekey, pQueryAttr->window.skey); TSWAP(pQueryAttr->window.skey,
|
||||
// pQueryAttr->window.ekey, TSKEY);
|
||||
// }
|
||||
//
|
||||
// pQueryAttr->order.order = TSDB_ORDER_ASC;
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if (pQueryAttr->interval.interval == 0) {
|
||||
// if (onlyFirstQuery(pQueryAttr)) {
|
||||
// if (!QUERY_IS_ASC_QUERY(pQueryAttr)) {
|
||||
// //qDebug(msg, pQInfo->qId, "only-first", pQueryAttr->order.order, TSDB_ORDER_ASC, pQueryAttr->window.skey,
|
||||
//// pQueryAttr->window.ekey, pQueryAttr->window.ekey, pQueryAttr->window.skey);
|
||||
//
|
||||
// TSWAP(pQueryAttr->window.skey, pQueryAttr->window.ekey);
|
||||
// doUpdateLastKey(pQueryAttr);
|
||||
// }
|
||||
//
|
||||
// pQueryAttr->order.order = TSDB_ORDER_ASC;
|
||||
// pQueryAttr->needReverseScan = false;
|
||||
// } else if (onlyLastQuery(pQueryAttr) && notContainSessionOrStateWindow(pQueryAttr)) {
|
||||
// if (QUERY_IS_ASC_QUERY(pQueryAttr)) {
|
||||
// //qDebug(msg, pQInfo->qId, "only-last", pQueryAttr->order.order, TSDB_ORDER_DESC, pQueryAttr->window.skey,
|
||||
//// pQueryAttr->window.ekey, pQueryAttr->window.ekey, pQueryAttr->window.skey);
|
||||
//
|
||||
// TSWAP(pQueryAttr->window.skey, pQueryAttr->window.ekey);
|
||||
// doUpdateLastKey(pQueryAttr);
|
||||
// }
|
||||
//
|
||||
// pQueryAttr->order.order = TSDB_ORDER_DESC;
|
||||
// pQueryAttr->needReverseScan = false;
|
||||
// }
|
||||
//
|
||||
// } else { // interval query
|
||||
// if (stableQuery) {
|
||||
// if (onlyFirstQuery(pQueryAttr)) {
|
||||
// if (!QUERY_IS_ASC_QUERY(pQueryAttr)) {
|
||||
// //qDebug(msg, pQInfo->qId, "only-first stable", pQueryAttr->order.order, TSDB_ORDER_ASC,
|
||||
//// pQueryAttr->window.skey, pQueryAttr->window.ekey, pQueryAttr->window.ekey,
|
||||
/// pQueryAttr->window.skey);
|
||||
//
|
||||
// TSWAP(pQueryAttr->window.skey, pQueryAttr->window.ekey);
|
||||
// doUpdateLastKey(pQueryAttr);
|
||||
// }
|
||||
//
|
||||
// pQueryAttr->order.order = TSDB_ORDER_ASC;
|
||||
// pQueryAttr->needReverseScan = false;
|
||||
// } else if (onlyLastQuery(pQueryAttr)) {
|
||||
// if (QUERY_IS_ASC_QUERY(pQueryAttr)) {
|
||||
// //qDebug(msg, pQInfo->qId, "only-last stable", pQueryAttr->order.order, TSDB_ORDER_DESC,
|
||||
//// pQueryAttr->window.skey, pQueryAttr->window.ekey, pQueryAttr->window.ekey,
|
||||
/// pQueryAttr->window.skey);
|
||||
//
|
||||
// TSWAP(pQueryAttr->window.skey, pQueryAttr->window.ekey);
|
||||
// doUpdateLastKey(pQueryAttr);
|
||||
// }
|
||||
//
|
||||
// pQueryAttr->order.order = TSDB_ORDER_DESC;
|
||||
// pQueryAttr->needReverseScan = false;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
#if 0
|
||||
static bool overlapWithTimeWindow(STaskAttr* pQueryAttr, SDataBlockInfo* pBlockInfo) {
|
||||
STimeWindow w = {0};
|
||||
|
@ -1225,24 +1076,6 @@ static void updateTableQueryInfoForReverseScan(STableQueryInfo* pTableQueryInfo)
|
|||
if (pTableQueryInfo == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
// TSWAP(pTableQueryInfo->win.skey, pTableQueryInfo->win.ekey);
|
||||
// pTableQueryInfo->lastKey = pTableQueryInfo->win.skey;
|
||||
|
||||
// SWITCH_ORDER(pTableQueryInfo->cur.order);
|
||||
// pTableQueryInfo->cur.vgroupIndex = -1;
|
||||
|
||||
// set the index to be the end slot of result rows array
|
||||
// SResultRowInfo* pResultRowInfo = &pTableQueryInfo->resInfo;
|
||||
// if (pResultRowInfo->size > 0) {
|
||||
// pResultRowInfo->curPos = pResultRowInfo->size - 1;
|
||||
// } else {
|
||||
// pResultRowInfo->curPos = -1;
|
||||
// }
|
||||
}
|
||||
|
||||
void initResultRow(SResultRow* pResultRow) {
|
||||
// pResultRow->pEntryInfo = (struct SResultRowEntryInfo*)((char*)pResultRow + sizeof(SResultRow));
|
||||
}
|
||||
|
||||
void setTaskStatus(SExecTaskInfo* pTaskInfo, int8_t status) {
|
||||
|
@ -1255,15 +1088,6 @@ void setTaskStatus(SExecTaskInfo* pTaskInfo, int8_t status) {
|
|||
}
|
||||
}
|
||||
|
||||
void destroyTableQueryInfoImpl(STableQueryInfo* pTableQueryInfo) {
|
||||
if (pTableQueryInfo == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
// taosVariantDestroy(&pTableQueryInfo->tag);
|
||||
// cleanupResultRowInfo(&pTableQueryInfo->resInfo);
|
||||
}
|
||||
|
||||
void setResultRowInitCtx(SResultRow* pResult, SqlFunctionCtx* pCtx, int32_t numOfOutput, int32_t* rowEntryInfoOffset) {
|
||||
bool init = false;
|
||||
for (int32_t i = 0; i < numOfOutput; ++i) {
|
||||
|
@ -3108,7 +2932,6 @@ int32_t aggDecodeResultRow(SOperatorInfo* pOperator, char* result) {
|
|||
resultRow->offset = pOffset;
|
||||
offset += valueLen;
|
||||
|
||||
initResultRow(resultRow);
|
||||
pInfo->resultRowInfo.cur = (SResultRowPosition){.pageId = resultRow->pageId, .offset = resultRow->offset};
|
||||
// releaseBufPage(pSup->pResultBuf, getBufPage(pSup->pResultBuf, pageId));
|
||||
}
|
||||
|
|
|
@ -3817,7 +3817,6 @@ static int32_t setWindowOutputBuf(SResultWindowInfo* pWinInfo, SResultRow** pRes
|
|||
if (*pResult == NULL) {
|
||||
return TSDB_CODE_OUT_OF_MEMORY;
|
||||
}
|
||||
initResultRow(*pResult);
|
||||
|
||||
// add a new result set for a new group
|
||||
pWinInfo->pos.pageId = (*pResult)->pageId;
|
||||
|
|
Loading…
Reference in New Issue