From 55411d07c6d495b5beac7b3d8e935a55392e2c9a Mon Sep 17 00:00:00 2001 From: Cary Xu Date: Wed, 25 May 2022 15:45:13 +0800 Subject: [PATCH] feat: support delete function --- source/dnode/vnode/src/tsdb/tsdbDelete.c | 61 ++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 source/dnode/vnode/src/tsdb/tsdbDelete.c diff --git a/source/dnode/vnode/src/tsdb/tsdbDelete.c b/source/dnode/vnode/src/tsdb/tsdbDelete.c new file mode 100644 index 0000000000..ef18b8ff66 --- /dev/null +++ b/source/dnode/vnode/src/tsdb/tsdbDelete.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * 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 . + */ + +#include "tsdb.h" + +typedef struct STombStoneItem STombStoneItem; +typedef struct STombStones STombStones; + +struct STombStones { + TdThreadRwlock lock; + SHashObj* pTmStones; // key: uid, value: tombstone items sorted by version + T_REF_DECLARE() +}; + +struct STombStoneItem { + int64_t tbUid; // child/normal table + int64_t version; + int64_t gversion; // global unique version assigned by mnode + SArray* tsFilters; +}; + +// SBlock 中除了原有的 keyFirst/keyLast,应该不再需要记录 versionMin 和 versionMax +// 因为在查询时,新到的 query 的 version,一定大于原有写入的数据 version。 + +// mem [ts1:v200, ts1:v201, ts2:v300,ts2:v310,ts2:320, ts5:400,ts5:v500,ts6:v600, ts7:v700, ts8:v800] + +// imem [ts2:80,ts2:v90,ts2:v100] + +// file [blk1: ts1:v10,ts1:v11,ts2:v20,ts2:v21 + [blk2: ts2:v30,ts2:v31,ts2:v35 + [blk3: ts2:v40,ts2:v45,ts2:v50,ts3:v60,ts4:v70 + +// delete [ctb1, ts2-ts5:v315] +// [ctb1, ts5:v450] +// [ctb1, ts6:v550] +// 根据 delete version, 逆序过滤。 + +// sql: select * from ctb1 where ts < ts8 and ts > ts1; // query version = 460; + +int32_t tsdbLoadBlockDataMV(SFileBlockIter *pBlockIter, SMemIter *pMemIter, SDataCols *pTarget, SArray *pTmStoneArray, int64_t queryVersion){ + + // 首先,query executor 根据 查询的 ts 范围,找到最后一条记录的位置。 + // 1) 有可能只在 mem/imem + // 2) 有可能只在 某一个文件 + // 3) 有可能 mem/imem 和 文件中均包含。 + + + +}