mirror of
https://github.com/taosdata/TDengine
synced 2026-05-24 10:09:01 +00:00
* opt stream build twa result * opt force window close memory * feat(stream):optimize new interval and scan operator * adj log * opt code * opt code * fill history * fix issue for fill history * add ci * feat(stream): add new stream nonblock interval operator * adjust code * use new scan operator * use new scan operator * add log * fix issue * recover stream scan next function * fix issue * fix issue * fix issue * ignore disorder data * fix issue * fix issue for interval sliding * fix issue * fix ci issue * fix ci issue * fix ci issue * add semi && final nonblock interval operator * fix issue * fix issue * fix issue * fix issue * fix issue * fix issue * fix issue * fix issue * refactor(stream): track the msgId for each upstream tasks. * fix(stream): fix race condition. * fix(stream): update the task last msgId when putting into input queue succ. * fix issue * fix issue * put recalculate data to rocksdb * fix issue * fix issue * enh(query)[TD-33071]: add support for saving and restoring tsdbReader scan progress - Implement functionality to save scan progress during tsdbReader operations - Enable resuming scans from the last saved position * fix issue * fix issue * fix issue * fix issue * fix issue * add rec interval check * enh(stream):add recalculate tasks. * enh(stream): support the re-calculate the tasks. * fix issue && do refactor * do refactor * fix issue * fix issue * update backend opt * add new interface * add new session operator * support blob * add new session operator * fix issue * add rec state for rec task * fix invalid read * add new session window * enh(stream): update the stream tasks backend. * new session operator * add pull data * fix(stream): fix error in expand stream backend. * fix issue * fix issue * fix issue * merge code * fix issue * fix(stream): check for null ptr. * fix(stream): add more check. * fix issue * fix issue * fix issue * add debug code * fix issue * fix issue * fix issue * set rec end flag * fix(stream): opt re-calculate stream tasks. * fix issue * fix issue * add new operator * enh(stream): dispatch recalculate block to agg tasks. * fix issue * fix issue * fix(stream): adjust filter. * fix issue * refactor * refactor(stream): adjust the recalculate end block. * fix issue * fix(stream): set correct create trigger block. * fix issue * fix(stream): fix error in build recalculate end block. * fix(stream): check null ptr. * add stream client && fix issue * fix mem leak * fix(stream): free msg. * add stream client * fix(stream): fix error. * add stream client && fix issue * add stream client * refactor(stream): set the recalculate task complete. * add wend and group_id for session window dest table * feat(stream): refactor and set the recalcul agg task complete. * add cfg for adapter * fix issue * add state && event operator * feat(stream): support fill-history task. * add new fill operator * fix(stream): set correct backend when updating fill-history task to recalculate task. * add new fill operator * fix(stream): s2025-03-06 11:10:31.272 et ops always open in scan tsdb * fix(stream):set the correct taskType for sink task. * new fill operator * adj stream fill operator * fix issue * fix issue * fix issue * fix issue * fix issue * fix issue * fix issue * fix issue * adj test * fix issue * fix(stream): fix issue * fix(steam): fix issue * fix(steam): fix issue * fix(steam): fix issue * fix(steam): fix issue * fix(stream): fix issue * fix(stream): fix issue * fix(stream): fix issue * fix: ut com error * fix(stream): fix mem leak and adjust operator type check rule * fix(stream): fix mem leak and adjust test case * refactor code * fix(stream): free items. * fix(stream): free fix memory leak. * fix(stream): fix syntax error. * fix: ignore unexpect block * fix: adjust op type --------- Co-authored-by: Haojun Liao <hjliao@taosdata.com> Co-authored-by: Jinqing Kuang <kuangjinqingcn@gmail.com> Co-authored-by: yihaoDeng <luomoxyz@126.com>
154 lines
5.3 KiB
C
154 lines
5.3 KiB
C
/*
|
|
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
*
|
|
* This program is free software: you can use, redistribute, and/or modify
|
|
* it under the terms of the GNU Affero General Public License, version 3
|
|
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef TDENGINE_TFILL_H
|
|
#define TDENGINE_TFILL_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "executil.h"
|
|
#include "os.h"
|
|
#include "taosdef.h"
|
|
#include "tcommon.h"
|
|
#include "tsimplehash.h"
|
|
|
|
#define GET_DEST_SLOT_ID(_p) ((_p)->pExpr->base.resSchema.slotId)
|
|
|
|
struct SSDataBlock;
|
|
|
|
typedef struct SFillColInfo {
|
|
int32_t numOfFillExpr;
|
|
SExprInfo* pExpr;
|
|
bool notFillCol; // denote if this column needs fill operation
|
|
SVariant fillVal;
|
|
bool fillNull;
|
|
} SFillColInfo;
|
|
|
|
typedef struct SFillLinearInfo {
|
|
SPoint start;
|
|
SPoint end;
|
|
bool isStartSet;
|
|
bool isEndSet;
|
|
int16_t type;
|
|
int32_t bytes;
|
|
} SFillLinearInfo;
|
|
|
|
typedef struct {
|
|
SSchema col;
|
|
char* tagVal;
|
|
} SFillTagColInfo;
|
|
|
|
typedef struct {
|
|
int64_t key;
|
|
SArray* pRowVal;
|
|
} SRowVal;
|
|
|
|
typedef struct SFillInfo {
|
|
TSKEY start; // start timestamp
|
|
TSKEY end; // endKey for fill
|
|
TSKEY currentKey; // current active timestamp, the value may be changed during the fill procedure.
|
|
int32_t tsSlotId; // primary time stamp slot id
|
|
int32_t srcTsSlotId; // timestamp column id in the source data block.
|
|
int32_t order; // order [TSDB_ORDER_ASC|TSDB_ORDER_DESC]
|
|
int32_t type; // fill type
|
|
int32_t numOfRows; // number of rows in the input data block
|
|
int32_t index; // active row index
|
|
int32_t numOfTotal; // number of filled rows in one round
|
|
int32_t numOfCurrent; // number of filled rows in current results
|
|
int32_t numOfCols; // number of columns, including the tags columns
|
|
SInterval interval;
|
|
SRowVal prev;
|
|
SRowVal next;
|
|
SSDataBlock* pSrcBlock;
|
|
int32_t alloc; // data buffer size in rows
|
|
|
|
SFillColInfo* pFillCol; // column info for fill operations
|
|
SFillTagColInfo* pTags; // tags value for filling gap
|
|
const char* id;
|
|
SExecTaskInfo* pTaskInfo;
|
|
int8_t isFilled;
|
|
} SFillInfo;
|
|
|
|
typedef struct SResultCellData {
|
|
bool isNull;
|
|
int8_t type;
|
|
int32_t bytes;
|
|
char pData[];
|
|
} SResultCellData;
|
|
|
|
typedef struct SResultRowData {
|
|
TSKEY key;
|
|
SResultCellData* pRowVal;
|
|
} SResultRowData;
|
|
|
|
typedef struct SStreamFillLinearInfo {
|
|
TSKEY nextEnd;
|
|
SArray* pEndPoints;
|
|
SArray* pNextEndPoints;
|
|
int64_t winIndex;
|
|
bool hasNext;
|
|
} SStreamFillLinearInfo;
|
|
|
|
typedef struct SStreamFillInfo {
|
|
TSKEY start; // startKey for fill
|
|
TSKEY end; // endKey for fill
|
|
TSKEY current; // current Key for fill
|
|
TSKEY preRowKey;
|
|
TSKEY prePointKey;
|
|
TSKEY nextRowKey;
|
|
TSKEY nextPointKey;
|
|
SResultRowData* pResRow;
|
|
SStreamFillLinearInfo* pLinearInfo;
|
|
bool needFill;
|
|
int32_t type; // fill type
|
|
int32_t pos;
|
|
SArray* delRanges;
|
|
int32_t delIndex;
|
|
uint64_t curGroupId;
|
|
bool hasNext;
|
|
SResultRowData* pNonFillRow;
|
|
void* pTempBuff;
|
|
} SStreamFillInfo;
|
|
|
|
int64_t getNumOfResultsAfterFillGap(SFillInfo* pFillInfo, int64_t ekey, int32_t maxNumOfRows);
|
|
|
|
void taosFillSetStartInfo(struct SFillInfo* pFillInfo, int32_t numOfRows, TSKEY endKey);
|
|
void taosResetFillInfo(struct SFillInfo* pFillInfo, TSKEY startTimestamp);
|
|
void taosFillSetInputDataBlock(struct SFillInfo* pFillInfo, const struct SSDataBlock* pInput);
|
|
void taosFillUpdateStartTimestampInfo(SFillInfo* pFillInfo, int64_t ts);
|
|
bool taosFillNotStarted(const SFillInfo* pFillInfo);
|
|
SFillColInfo* createFillColInfo(SExprInfo* pExpr, int32_t numOfFillExpr, SExprInfo* pNotFillExpr,
|
|
int32_t numOfNotFillCols, SExprInfo* pFillNullExpr, int32_t numOfFillNullExprs,
|
|
const struct SNodeListNode* val);
|
|
bool taosFillHasMoreResults(struct SFillInfo* pFillInfo);
|
|
|
|
int32_t taosCreateFillInfo(TSKEY skey, int32_t numOfFillCols, int32_t numOfNotFillCols, int32_t fillNullCols,
|
|
int32_t capacity, SInterval* pInterval, int32_t fillType, struct SFillColInfo* pCol,
|
|
int32_t slotId, int32_t order, const char* id, SExecTaskInfo* pTaskInfo,
|
|
SFillInfo** ppFillInfo);
|
|
|
|
void* taosDestroyFillInfo(struct SFillInfo* pFillInfo);
|
|
int32_t taosFillResultDataBlock(struct SFillInfo* pFillInfo, SSDataBlock* p, int32_t capacity);
|
|
int64_t getFillInfoStart(struct SFillInfo* pFillInfo);
|
|
|
|
bool fillIfWindowPseudoColumn(SFillInfo* pFillInfo, SFillColInfo* pCol, SColumnInfoData* pDstColInfoData,
|
|
int32_t rowIndex);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // TDENGINE_TFILL_H
|