Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
b701198d
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b701198d
编写于
3月 22, 2023
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add backend
上级
43e16c86
变更
9
展开全部
隐藏空白更改
内联
并排
Showing
9 changed file
with
675 addition
and
99 deletion
+675
-99
source/libs/executor/src/executorimpl.c
source/libs/executor/src/executorimpl.c
+6
-6
source/libs/executor/src/filloperator.c
source/libs/executor/src/filloperator.c
+21
-17
source/libs/executor/src/groupoperator.c
source/libs/executor/src/groupoperator.c
+2
-2
source/libs/executor/src/scanoperator.c
source/libs/executor/src/scanoperator.c
+4
-3
source/libs/executor/src/timewindowoperator.c
source/libs/executor/src/timewindowoperator.c
+2
-2
source/libs/stream/CMakeLists.txt
source/libs/stream/CMakeLists.txt
+1
-1
source/libs/stream/inc/streamBackendRocksdb.h
source/libs/stream/inc/streamBackendRocksdb.h
+80
-0
source/libs/stream/src/streamState.c
source/libs/stream/src/streamState.c
+226
-41
source/libs/stream/src/streamStateRocksdb.c
source/libs/stream/src/streamStateRocksdb.c
+333
-27
未找到文件。
source/libs/executor/src/executorimpl.c
浏览文件 @
b701198d
...
...
@@ -1199,9 +1199,8 @@ int32_t doCopyToSDataBlock(SExecTaskInfo* pTaskInfo, SSDataBlock* pBlock, SExprS
if
(
pBlock
->
info
.
rows
+
pRow
->
numOfRows
>
pBlock
->
info
.
capacity
)
{
blockDataEnsureCapacity
(
pBlock
,
pBlock
->
info
.
rows
+
pRow
->
numOfRows
);
qDebug
(
"datablock capacity not sufficient, expand to required:%d, current capacity:%d, %s"
,
(
pRow
->
numOfRows
+
pBlock
->
info
.
rows
),
pBlock
->
info
.
capacity
,
GET_TASKID
(
pTaskInfo
));
// todo set the pOperator->resultInfo size
(
pRow
->
numOfRows
+
pBlock
->
info
.
rows
),
pBlock
->
info
.
capacity
,
GET_TASKID
(
pTaskInfo
));
// todo set the pOperator->resultInfo size
}
pGroupResInfo
->
index
+=
1
;
...
...
@@ -1242,7 +1241,7 @@ void doBuildStreamResBlock(SOperatorInfo* pOperator, SOptrBasicInfo* pbInfo, SGr
}
else
{
memcpy
(
pBlock
->
info
.
parTbName
,
tbname
,
TSDB_TABLE_NAME_LEN
);
}
tdbFree
(
tbname
);
streamFreeVal
(
tbname
);
}
void
doBuildResultDatablock
(
SOperatorInfo
*
pOperator
,
SOptrBasicInfo
*
pbInfo
,
SGroupResInfo
*
pGroupResInfo
,
...
...
@@ -2596,6 +2595,7 @@ int32_t releaseOutputBuf(SStreamState* pState, SWinKey* pKey, SResultRow* pResul
}
int32_t
saveOutputBuf
(
SStreamState
*
pState
,
SWinKey
*
pKey
,
SResultRow
*
pResult
,
int32_t
resSize
)
{
qWarn
(
"write to stream state"
);
streamStatePut
(
pState
,
pKey
,
pResult
,
resSize
);
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -2633,7 +2633,7 @@ int32_t buildDataBlockFromGroupRes(SOperatorInfo* pOperator, SStreamState* pStat
}
else
{
memcpy
(
pBlock
->
info
.
parTbName
,
tbname
,
TSDB_TABLE_NAME_LEN
);
}
tdbFree
(
tbname
);
streamFreeVal
(
tbname
);
}
else
{
// current value belongs to different group, it can't be packed into one datablock
if
(
pBlock
->
info
.
id
.
groupId
!=
pKey
->
groupId
)
{
...
...
@@ -2726,7 +2726,7 @@ int32_t buildSessionResultDataBlock(SOperatorInfo* pOperator, SStreamState* pSta
}
else
{
memcpy
(
pBlock
->
info
.
parTbName
,
tbname
,
TSDB_TABLE_NAME_LEN
);
}
tdbFree
(
tbname
);
streamFreeVal
(
tbname
);
}
else
{
// current value belongs to different group, it can't be packed into one datablock
if
(
pBlock
->
info
.
id
.
groupId
!=
pKey
->
groupId
)
{
...
...
source/libs/executor/src/filloperator.c
浏览文件 @
b701198d
...
...
@@ -140,7 +140,8 @@ static SSDataBlock* doFillImpl(SOperatorInfo* pOperator) {
while
(
1
)
{
SSDataBlock
*
pBlock
=
pDownstream
->
fpSet
.
getNextFn
(
pDownstream
);
if
(
pBlock
==
NULL
)
{
if
(
pInfo
->
totalInputRows
==
0
&&
(
pInfo
->
pFillInfo
->
type
!=
TSDB_FILL_NULL_F
&&
pInfo
->
pFillInfo
->
type
!=
TSDB_FILL_SET_VALUE_F
))
{
if
(
pInfo
->
totalInputRows
==
0
&&
(
pInfo
->
pFillInfo
->
type
!=
TSDB_FILL_NULL_F
&&
pInfo
->
pFillInfo
->
type
!=
TSDB_FILL_SET_VALUE_F
))
{
setOperatorCompleted
(
pOperator
);
return
NULL
;
}
...
...
@@ -342,8 +343,8 @@ SOperatorInfo* createFillOperatorInfo(SOperatorInfo* downstream, SFillPhysiNode*
SInterval
*
pInterval
=
QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL
==
downstream
->
operatorType
?
&
((
SMergeAlignedIntervalAggOperatorInfo
*
)
downstream
->
info
)
->
intervalAggOperatorInfo
->
interval
:
&
((
SIntervalAggOperatorInfo
*
)
downstream
->
info
)
->
interval
;
?
&
((
SMergeAlignedIntervalAggOperatorInfo
*
)
downstream
->
info
)
->
intervalAggOperatorInfo
->
interval
:
&
((
SIntervalAggOperatorInfo
*
)
downstream
->
info
)
->
interval
;
int32_t
order
=
(
pPhyFillNode
->
inputTsOrder
==
ORDER_ASC
)
?
TSDB_ORDER_ASC
:
TSDB_ORDER_DESC
;
int32_t
type
=
convertFillType
(
pPhyFillNode
->
mode
);
...
...
@@ -381,12 +382,13 @@ SOperatorInfo* createFillOperatorInfo(SOperatorInfo* downstream, SFillPhysiNode*
setOperatorInfo
(
pOperator
,
"FillOperator"
,
QUERY_NODE_PHYSICAL_PLAN_FILL
,
false
,
OP_NOT_OPENED
,
pInfo
,
pTaskInfo
);
pOperator
->
exprSupp
.
numOfExprs
=
pInfo
->
numOfExpr
;
pOperator
->
fpSet
=
createOperatorFpSet
(
optrDummyOpenFn
,
doFill
,
NULL
,
destroyFillOperatorInfo
,
optrDefaultBufFn
,
NULL
);
pOperator
->
fpSet
=
createOperatorFpSet
(
optrDummyOpenFn
,
doFill
,
NULL
,
destroyFillOperatorInfo
,
optrDefaultBufFn
,
NULL
);
code
=
appendDownstream
(
pOperator
,
&
downstream
,
1
);
return
pOperator
;
_error:
_error:
if
(
pInfo
!=
NULL
)
{
destroyFillOperatorInfo
(
pInfo
);
}
...
...
@@ -843,9 +845,9 @@ static bool buildFillResult(SResultRowData* pResRow, SStreamFillSupporter* pFill
int32_t
slotId
=
GET_DEST_SLOT_ID
(
pFillCol
);
SColumnInfoData
*
pColData
=
taosArrayGet
(
pBlock
->
pDataBlock
,
slotId
);
SFillInfo
tmpInfo
=
{
.
currentKey
=
ts
,
.
order
=
TSDB_ORDER_ASC
,
.
interval
=
pFillSup
->
interval
,
.
currentKey
=
ts
,
.
order
=
TSDB_ORDER_ASC
,
.
interval
=
pFillSup
->
interval
,
};
bool
filled
=
fillIfWindowPseudoColumn
(
&
tmpInfo
,
pFillCol
,
pColData
,
pBlock
->
info
.
rows
);
if
(
!
filled
)
{
...
...
@@ -886,9 +888,9 @@ static void doStreamFillLinear(SStreamFillSupporter* pFillSup, SStreamFillInfo*
for
(
int32_t
i
=
0
;
i
<
pFillSup
->
numOfAllCols
;
++
i
)
{
SFillColInfo
*
pFillCol
=
pFillSup
->
pAllColInfo
+
i
;
SFillInfo
tmp
=
{
.
currentKey
=
pFillInfo
->
current
,
.
order
=
TSDB_ORDER_ASC
,
.
interval
=
pFillSup
->
interval
,
.
currentKey
=
pFillInfo
->
current
,
.
order
=
TSDB_ORDER_ASC
,
.
interval
=
pFillSup
->
interval
,
};
int32_t
slotId
=
GET_DEST_SLOT_ID
(
pFillCol
);
...
...
@@ -1049,7 +1051,7 @@ static void buildDeleteRange(SOperatorInfo* pOp, TSKEY start, TSKEY end, uint64_
char
parTbName
[
VARSTR_HEADER_SIZE
+
TSDB_TABLE_NAME_LEN
];
STR_WITH_MAXSIZE_TO_VARSTR
(
parTbName
,
tbname
,
sizeof
(
parTbName
));
colDataSetVal
(
pTableCol
,
pBlock
->
info
.
rows
,
(
const
char
*
)
parTbName
,
false
);
tdbFree
(
tbname
);
streamFreeVal
(
tbname
);
}
pBlock
->
info
.
rows
++
;
...
...
@@ -1209,7 +1211,8 @@ static SSDataBlock* doStreamFill(SOperatorInfo* pOperator) {
return
NULL
;
}
blockDataCleanup
(
pInfo
->
pRes
);
if
(
hasRemainCalc
(
pInfo
->
pFillInfo
)
||
(
pInfo
->
pFillInfo
->
pos
!=
FILL_POS_INVALID
&&
pInfo
->
pFillInfo
->
needFill
==
true
))
{
if
(
hasRemainCalc
(
pInfo
->
pFillInfo
)
||
(
pInfo
->
pFillInfo
->
pos
!=
FILL_POS_INVALID
&&
pInfo
->
pFillInfo
->
needFill
==
true
))
{
doStreamFillRange
(
pInfo
->
pFillInfo
,
pInfo
->
pFillSup
,
pInfo
->
pRes
);
if
(
pInfo
->
pRes
->
info
.
rows
>
0
)
{
printDataBlock
(
pInfo
->
pRes
,
"stream fill"
);
...
...
@@ -1373,8 +1376,8 @@ SStreamFillInfo* initStreamFillInfo(SStreamFillSupporter* pFillSup, SSDataBlock*
pFillInfo
->
pLinearInfo
->
winIndex
=
0
;
pFillInfo
->
pResRow
=
NULL
;
if
(
pFillSup
->
type
==
TSDB_FILL_SET_VALUE
||
pFillSup
->
type
==
TSDB_FILL_SET_VALUE_F
||
pFillSup
->
type
==
TSDB_FILL_NULL
||
pFillSup
->
type
==
TSDB_FILL_NULL_F
)
{
if
(
pFillSup
->
type
==
TSDB_FILL_SET_VALUE
||
pFillSup
->
type
==
TSDB_FILL_SET_VALUE_F
||
pFillSup
->
type
==
TSDB_FILL_NULL
||
pFillSup
->
type
==
TSDB_FILL_NULL_F
)
{
pFillInfo
->
pResRow
=
taosMemoryCalloc
(
1
,
sizeof
(
SResultRowData
));
pFillInfo
->
pResRow
->
key
=
INT64_MIN
;
pFillInfo
->
pResRow
->
pRowVal
=
taosMemoryCalloc
(
1
,
pFillSup
->
rowSize
);
...
...
@@ -1476,7 +1479,8 @@ SOperatorInfo* createStreamFillOperatorInfo(SOperatorInfo* downstream, SStreamFi
pInfo
->
srcRowIndex
=
0
;
setOperatorInfo
(
pOperator
,
"StreamFillOperator"
,
QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL
,
false
,
OP_NOT_OPENED
,
pInfo
,
pTaskInfo
);
pOperator
->
fpSet
=
createOperatorFpSet
(
optrDummyOpenFn
,
doStreamFill
,
NULL
,
destroyStreamFillOperatorInfo
,
optrDefaultBufFn
,
NULL
);
pOperator
->
fpSet
=
createOperatorFpSet
(
optrDummyOpenFn
,
doStreamFill
,
NULL
,
destroyStreamFillOperatorInfo
,
optrDefaultBufFn
,
NULL
);
code
=
appendDownstream
(
pOperator
,
&
downstream
,
1
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
...
...
@@ -1484,7 +1488,7 @@ SOperatorInfo* createStreamFillOperatorInfo(SOperatorInfo* downstream, SStreamFi
}
return
pOperator
;
_error:
_error:
destroyStreamFillOperatorInfo
(
pInfo
);
taosMemoryFreeClear
(
pOperator
);
pTaskInfo
->
code
=
code
;
...
...
source/libs/executor/src/groupoperator.c
浏览文件 @
b701198d
...
...
@@ -966,7 +966,7 @@ static SSDataBlock* buildStreamPartitionResult(SOperatorInfo* pOperator) {
void
*
tbname
=
NULL
;
if
(
streamStateGetParName
(
pOperator
->
pTaskInfo
->
streamInfo
.
pState
,
pParInfo
->
groupId
,
&
tbname
)
==
0
)
{
memcpy
(
pDest
->
info
.
parTbName
,
tbname
,
TSDB_TABLE_NAME_LEN
);
tdbFree
(
tbname
);
streamFreeVal
(
tbname
);
}
}
taosArrayDestroy
(
pParInfo
->
rowIds
);
...
...
@@ -1118,7 +1118,7 @@ static SSDataBlock* doStreamHashPartition(SOperatorInfo* pOperator) {
// there is an scalar expression that needs to be calculated right before apply the group aggregation.
if
(
pInfo
->
scalarSup
.
pExprInfo
!=
NULL
)
{
projectApplyFunctions
(
pInfo
->
scalarSup
.
pExprInfo
,
pBlock
,
pBlock
,
pInfo
->
scalarSup
.
pCtx
,
pInfo
->
scalarSup
.
numOfExprs
,
NULL
);
pInfo
->
scalarSup
.
numOfExprs
,
NULL
);
}
taosHashClear
(
pInfo
->
pPartitions
);
doStreamHashPartitionImpl
(
pInfo
,
pBlock
);
...
...
source/libs/executor/src/scanoperator.c
浏览文件 @
b701198d
...
...
@@ -1361,7 +1361,7 @@ static int32_t generateDeleteResultBlock(SStreamScanInfo* pInfo, SSDataBlock* pS
memcpy
(
varDataVal
(
tbname
),
parTbname
,
TSDB_TABLE_NAME_LEN
);
varDataSetLen
(
tbname
,
strlen
(
varDataVal
(
tbname
)));
tdbFree
(
parTbname
);
streamFreeVal
(
parTbname
);
}
appendOneRowToStreamSpecialBlock
(
pDestBlock
,
srcStartTsCol
+
i
,
srcEndTsCol
+
i
,
srcUidData
+
i
,
&
groupId
,
tbname
[
0
]
==
0
?
NULL
:
tbname
);
...
...
@@ -1608,8 +1608,9 @@ static SSDataBlock* doQueueScan(SOperatorInfo* pOperator) {
if
(
pTaskInfo
->
streamInfo
.
prepareStatus
.
type
==
TMQ_OFFSET__SNAPSHOT_DATA
)
{
SSDataBlock
*
pResult
=
doTableScan
(
pInfo
->
pTableScanOp
);
if
(
pResult
&&
pResult
->
info
.
rows
>
0
)
{
qDebug
(
"queue scan tsdb return %d rows min:%"
PRId64
" max:%"
PRId64
" wal curVersion:%"
PRId64
,
pResult
->
info
.
rows
,
pResult
->
info
.
window
.
skey
,
pResult
->
info
.
window
.
ekey
,
pInfo
->
tqReader
->
pWalReader
->
curVersion
);
qDebug
(
"queue scan tsdb return %d rows min:%"
PRId64
" max:%"
PRId64
" wal curVersion:%"
PRId64
,
pResult
->
info
.
rows
,
pResult
->
info
.
window
.
skey
,
pResult
->
info
.
window
.
ekey
,
pInfo
->
tqReader
->
pWalReader
->
curVersion
);
pTaskInfo
->
streamInfo
.
returned
=
1
;
return
pResult
;
}
else
{
...
...
source/libs/executor/src/timewindowoperator.c
浏览文件 @
b701198d
...
...
@@ -1552,7 +1552,7 @@ static void doBuildDeleteResult(SStreamIntervalOperatorInfo* pInfo, SArray* pWin
STR_WITH_MAXSIZE_TO_VARSTR
(
parTbName
,
tbname
,
sizeof
(
parTbName
));
appendOneRowToStreamSpecialBlock
(
pBlock
,
&
pWin
->
ts
,
&
pWin
->
ts
,
&
uid
,
&
pWin
->
groupId
,
parTbName
);
}
tdbFree
(
tbname
);
streamFreeVal
(
tbname
);
(
*
index
)
++
;
}
}
...
...
@@ -3266,7 +3266,7 @@ void doBuildDeleteDataBlock(SOperatorInfo* pOp, SSHashObj* pStDeleted, SSDataBlo
char
parTbName
[
VARSTR_HEADER_SIZE
+
TSDB_TABLE_NAME_LEN
];
STR_WITH_MAXSIZE_TO_VARSTR
(
parTbName
,
tbname
,
sizeof
(
parTbName
));
colDataSetVal
(
pTableCol
,
pBlock
->
info
.
rows
,
(
const
char
*
)
parTbName
,
false
);
tdbFree
(
tbname
);
streamFreeVal
(
tbname
);
}
pBlock
->
info
.
rows
+=
1
;
}
...
...
source/libs/stream/CMakeLists.txt
浏览文件 @
b701198d
...
...
@@ -13,7 +13,7 @@ if(${BUILD_WITH_ROCKSDB})
PUBLIC rocksdb tdb
PRIVATE os util transport qcom executor
)
#
add_definitions(-DUSE_ROCKSDB)
add_definitions
(
-DUSE_ROCKSDB
)
endif
(
${
BUILD_WITH_ROCKSDB
}
)
...
...
source/libs/stream/inc/streamBackendRocksdb.h
0 → 100644
浏览文件 @
b701198d
/*
* 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 _STREAM_BACKEDN_ROCKSDB_H_
#define _STREAM_BACKEDN_ROCKSDB_H_
#include <bits/stdint-uintn.h>
#include <string.h>
#include "executor.h"
#include "osMemory.h"
#include "rocksdb/c.h"
#include "streamInc.h"
#include "streamState.h"
#include "tcoding.h"
#include "tcommon.h"
#include "tcompare.h"
#include "ttimer.h"
int
streamInitBackend
(
SStreamState
*
pState
,
char
*
path
);
void
streamCleanBackend
(
SStreamState
*
pState
);
int32_t
streamStateFuncPut_rocksdb
(
SStreamState
*
pState
,
const
STupleKey
*
key
,
const
void
*
value
,
int32_t
vLen
);
int32_t
streamStateFuncGet_rocksdb
(
SStreamState
*
pState
,
const
STupleKey
*
key
,
void
**
pVal
,
int32_t
*
pVLen
);
int32_t
streamStateFuncDel_rocksdb
(
SStreamState
*
pState
,
const
STupleKey
*
key
);
int32_t
streamStatePut_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
,
const
void
*
value
,
int32_t
vLen
);
int32_t
streamStateGet_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
,
void
**
pVal
,
int32_t
*
pVLen
);
int32_t
streamStateDel_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
);
int32_t
streamStateFillPut_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
,
const
void
*
value
,
int32_t
vLen
);
int32_t
streamStateFillGet_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
,
void
**
pVal
,
int32_t
*
pVLen
);
int32_t
streamStateFillDel_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
);
int32_t
streamStateClear_rocksdb
(
SStreamState
*
pState
);
int32_t
streamStateSessionPut_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
,
const
void
*
value
,
int32_t
vLen
);
SStreamStateCur
*
streamStateSessionSeekKeyCurrentPrev_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
);
SStreamStateCur
*
streamStateSessionSeekKeyCurrentNext_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
);
SStreamStateCur
*
streamStateSessionSeekKeyNext_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
);
int32_t
streamStateSessionGetKVByCur_rocksdb
(
SStreamStateCur
*
pCur
,
SSessionKey
*
pKey
,
void
**
pVal
,
int32_t
*
pVLen
);
int32_t
streamStateCurNext_rocksdb
(
SStreamState
*
pState
,
SStreamStateCur
*
pCur
);
int32_t
streamStateSessionGetKeyByRange_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
,
SSessionKey
*
curKey
);
int32_t
streamStateSessionGet_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
,
void
**
pVal
,
int32_t
*
pVLen
);
int32_t
streamStateSessionDel_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
);
int32_t
streamStateSessionAddIfNotExist_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
,
TSKEY
gap
,
void
**
pVal
,
int32_t
*
pVLen
);
int32_t
streamStateStateAddIfNotExist_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
,
char
*
pKeyData
,
int32_t
keyDataLen
,
state_key_cmpr_fn
fn
,
void
**
pVal
,
int32_t
*
pVLen
);
int32_t
streamStateGetFirst_rocksdb
(
SStreamState
*
pState
,
SWinKey
*
key
);
int32_t
streamStateSessionClear_rocksdb
(
SStreamState
*
pState
);
int32_t
streamStateCurPrev_rocksdb
(
SStreamState
*
pState
,
SStreamStateCur
*
pCur
);
int32_t
streamStateGetGroupKVByCur_rocksdb
(
SStreamStateCur
*
pCur
,
SWinKey
*
pKey
,
const
void
**
pVal
,
int32_t
*
pVLen
);
int32_t
streamStateAddIfNotExist_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
,
void
**
pVal
,
int32_t
*
pVLen
);
SStreamStateCur
*
streamStateGetCur_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
);
SStreamStateCur
*
streamStateFillGetCur_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
);
SStreamStateCur
*
streamStateGetAndCheckCur_rocksdb
(
SStreamState
*
pState
,
SWinKey
*
key
);
int32_t
streamStateGetKVByCur_rocksdb
(
SStreamStateCur
*
pCur
,
SWinKey
*
pKey
,
const
void
**
pVal
,
int32_t
*
pVLen
);
int32_t
streamStateFillGetKVByCur_rocksdb
(
SStreamStateCur
*
pCur
,
SWinKey
*
pKey
,
const
void
**
pVal
,
int32_t
*
pVLen
);
SStreamStateCur
*
streamStateSeekKeyNext_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
);
SStreamStateCur
*
streamStateFillSeekKeyPrev_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
);
SStreamStateCur
*
streamStateFillSeekKeyNext_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
);
int32_t
streamStatePutParTag_rocksdb
(
SStreamState
*
pState
,
int64_t
groupId
,
const
void
*
tag
,
int32_t
tagLen
);
int32_t
streamStateGetParTag_rocksdb
(
SStreamState
*
pState
,
int64_t
groupId
,
void
**
tagVal
,
int32_t
*
tagLen
);
int32_t
streamStatePutParName_rocksdb
(
SStreamState
*
pState
,
int64_t
groupId
,
const
char
tbname
[
TSDB_TABLE_NAME_LEN
]);
int32_t
streamStateGetParName_rocksdb
(
SStreamState
*
pState
,
int64_t
groupId
,
void
**
pVal
);
void
streamStateDestroy_rocksdb
(
SStreamState
*
pState
);
#endif
\ No newline at end of file
source/libs/stream/src/streamState.c
浏览文件 @
b701198d
此差异已折叠。
点击以展开。
source/libs/stream/src/streamStateRocksdb.c
浏览文件 @
b701198d
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录