SSHashObj*pResultRowHashTable;// quick locate the window object for each result
char*keyBuf;// window key buffer
SDiskbasedBuf*pResultBuf;// query result buffer based on blocked-wised disk file
int32_tresultRowSize;// the result buffer size for each result row, with the meta data size for each row
int32_tcurrentPageId;// current write page id
int32_tresultRowSize;// the result buffer size for each result row, with the meta data size for each row
int32_tcurrentPageId;// current write page id
}SAggSupporter;
typedefstruct{
// if the upstream is an interval operator, the interval info is also kept here to get the time window to check if current data block needs to be loaded.
SIntervalinterval;
SAggSupporter*pAggSup;
SExprSupp*pExprSup;// expr supporter of aggregate operator
// if the upstream is an interval operator, the interval info is also kept here to get the time window to check if
// current data block needs to be loaded.
SIntervalinterval;
SAggSupporter*pAggSup;
SExprSupp*pExprSup;// expr supporter of aggregate operator
}SAggOptrPushDownInfo;
typedefstructSTableScanInfo{
STsdbReader*dataReader;
SReadHandlereadHandle;
STsdbReader*dataReader;
SReadHandlereadHandle;
SFileBlockLoadRecorderreadRecorder;
SScanInfoscanInfo;
int32_tscanTimes;
SNode*pFilterNode;// filter info, which is push down by optimizer
SScanInfoscanInfo;
int32_tscanTimes;
SNode*pFilterNode;// filter info, which is push down by optimizer
SSDataBlock*pResBlock;
SArray*pColMatchInfo;
SExprSupppseudoSup;
SQueryTableDataCondcond;
int32_tscanFlag;// table scan flag to denote if it is a repeat/reverse/main scan
int32_tdataBlockLoadFlag;
SSampleExecInfosample;// sample execution info
int32_tcurrentGroupId;
int32_tcurrentTable;
int8_tscanMode;
int8_tnoTable;
SSDataBlock*pResBlock;
SArray*pColMatchInfo;
SExprSupppseudoSup;
SQueryTableDataCondcond;
int32_tscanFlag;// table scan flag to denote if it is a repeat/reverse/main scan