Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
c3d7f888
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
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看板
提交
c3d7f888
编写于
3月 26, 2023
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add backend
上级
b9531fc9
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
183 addition
and
93 deletion
+183
-93
contrib/test/rocksdb/main.c
contrib/test/rocksdb/main.c
+54
-21
source/libs/stream/src/streamState.c
source/libs/stream/src/streamState.c
+2
-1
source/libs/stream/src/streamStateRocksdb.c
source/libs/stream/src/streamStateRocksdb.c
+127
-71
未找到文件。
contrib/test/rocksdb/main.c
浏览文件 @
c3d7f888
...
@@ -159,30 +159,63 @@ int main(int argc, char const *argv[]) {
...
@@ -159,30 +159,63 @@ int main(int argc, char const *argv[]) {
rocksdb_write
(
db
,
wOpt
,
wBatch
,
&
err
);
rocksdb_write
(
db
,
wOpt
,
wBatch
,
&
err
);
}
}
{
{
char
buf
[
128
]
=
{
0
};
{
KV
kv
=
{.
k1
=
0
,
.
k2
=
0
};
char
buf
[
128
]
=
{
0
};
kvSerial
(
&
kv
,
buf
);
KV
kv
=
{.
k1
=
0
,
.
k2
=
0
};
char
*
v
=
rocksdb_get_cf
(
db
,
rOpt
,
cfHandle
[
1
],
buf
,
sizeof
(
kv
),
&
vlen
,
&
err
);
kvSerial
(
&
kv
,
buf
);
printf
(
"Get value %s, and len = %d, xxxx
\n
"
,
v
,
(
int
)
vlen
);
char
*
v
=
rocksdb_get_cf
(
db
,
rOpt
,
cfHandle
[
1
],
buf
,
sizeof
(
kv
),
&
vlen
,
&
err
);
rocksdb_iterator_t
*
iter
=
rocksdb_create_iterator_cf
(
db
,
rOpt
,
cfHandle
[
1
]);
printf
(
"Get value %s, and len = %d, xxxx
\n
"
,
v
,
(
int
)
vlen
);
rocksdb_iter_seek_to_first
(
iter
);
rocksdb_iterator_t
*
iter
=
rocksdb_create_iterator_cf
(
db
,
rOpt
,
cfHandle
[
1
]);
int
i
=
0
;
rocksdb_iter_seek_to_first
(
iter
);
while
(
rocksdb_iter_valid
(
iter
))
{
int
i
=
0
;
size_t
klen
,
vlen
;
while
(
rocksdb_iter_valid
(
iter
))
{
const
char
*
key
=
rocksdb_iter_key
(
iter
,
&
klen
);
size_t
klen
,
vlen
;
const
char
*
value
=
rocksdb_iter_value
(
iter
,
&
vlen
);
const
char
*
key
=
rocksdb_iter_key
(
iter
,
&
klen
);
KV
kv
;
const
char
*
value
=
rocksdb_iter_value
(
iter
,
&
vlen
);
kvDeserial
(
&
kv
,
(
char
*
)
key
);
KV
kv
;
printf
(
"kv1: %d
\t
kv2: %d, len:%d, value = %s
\n
"
,
(
int
)(
kv
.
k1
),
(
int
)(
kv
.
k2
),
(
int
)(
klen
),
value
);
kvDeserial
(
&
kv
,
(
char
*
)
key
);
i
++
;
printf
(
"kv1: %d
\t
kv2: %d, len:%d, value = %s
\n
"
,
(
int
)(
kv
.
k1
),
(
int
)(
kv
.
k2
),
(
int
)(
klen
),
value
);
rocksdb_iter_next
(
iter
);
i
++
;
rocksdb_iter_next
(
iter
);
}
rocksdb_iter_destroy
(
iter
);
}
{
char
buf
[
128
]
=
{
0
};
KV
kv
=
{.
k1
=
0
,
.
k2
=
0
};
int
len
=
kvSerial
(
&
kv
,
buf
);
rocksdb_iterator_t
*
iter
=
rocksdb_create_iterator_cf
(
db
,
rOpt
,
cfHandle
[
1
]);
rocksdb_iter_seek
(
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
iter
))
{
printf
(
"invalid iter"
);
}
{
char
buf
[
128
]
=
{
0
};
KV
kv
=
{.
k1
=
100
,
.
k2
=
0
};
int
len
=
kvSerial
(
&
kv
,
buf
);
rocksdb_iterator_t
*
iter
=
rocksdb_create_iterator_cf
(
db
,
rOpt
,
cfHandle
[
1
]);
rocksdb_iter_seek
(
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
iter
))
{
printf
(
"invalid iter
\n
"
);
rocksdb_iter_seek_for_prev
(
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
iter
))
{
printf
(
"stay invalid iter
\n
"
);
}
else
{
size_t
klen
=
0
,
vlen
=
0
;
const
char
*
key
=
rocksdb_iter_key
(
iter
,
&
klen
);
const
char
*
value
=
rocksdb_iter_value
(
iter
,
&
vlen
);
KV
kv
;
kvDeserial
(
&
kv
,
(
char
*
)
key
);
printf
(
"kv1: %d
\t
kv2: %d, len:%d, value = %s
\n
"
,
(
int
)(
kv
.
k1
),
(
int
)(
kv
.
k2
),
(
int
)(
klen
),
value
);
}
}
}
}
}
rocksdb_iter_destroy
(
iter
);
printf
(
"iterator count %d
\n
"
,
i
);
}
}
char
*
v
=
rocksdb_get_cf
(
db
,
rOpt
,
cfHandle
[
0
],
"key"
,
strlen
(
"key"
),
&
vlen
,
&
err
);
//
char *v = rocksdb_get_cf(db, rOpt, cfHandle[0], "key", strlen("key"), &vlen, &err);
printf
(
"Get value %s, and len = %d
\n
"
,
v
,
(
int
)
vlen
);
//
printf("Get value %s, and len = %d\n", v, (int)vlen);
rocksdb_column_family_handle_destroy
(
cfHandle
[
0
]);
rocksdb_column_family_handle_destroy
(
cfHandle
[
0
]);
rocksdb_column_family_handle_destroy
(
cfHandle
[
1
]);
rocksdb_column_family_handle_destroy
(
cfHandle
[
1
]);
...
...
source/libs/stream/src/streamState.c
浏览文件 @
c3d7f888
...
@@ -398,7 +398,7 @@ int32_t streamStateAddIfNotExist(SStreamState* pState, const SWinKey* key, void*
...
@@ -398,7 +398,7 @@ int32_t streamStateAddIfNotExist(SStreamState* pState, const SWinKey* key, void*
int32_t
streamStateReleaseBuf
(
SStreamState
*
pState
,
const
SWinKey
*
key
,
void
*
pVal
)
{
int32_t
streamStateReleaseBuf
(
SStreamState
*
pState
,
const
SWinKey
*
key
,
void
*
pVal
)
{
// todo refactor
// todo refactor
q
Warn
(
"streamStateReleaseBuf"
);
q
Debug
(
"streamStateReleaseBuf"
);
if
(
!
pVal
)
{
if
(
!
pVal
)
{
return
0
;
return
0
;
}
}
...
@@ -667,6 +667,7 @@ void streamStateFreeCur(SStreamStateCur* pCur) {
...
@@ -667,6 +667,7 @@ void streamStateFreeCur(SStreamStateCur* pCur) {
if
(
!
pCur
)
{
if
(
!
pCur
)
{
return
;
return
;
}
}
qDebug
(
"streamStateFreeCur"
);
rocksdb_iter_destroy
(
pCur
->
iter
);
rocksdb_iter_destroy
(
pCur
->
iter
);
tdbTbcClose
(
pCur
->
pCur
);
tdbTbcClose
(
pCur
->
pCur
);
taosMemoryFree
(
pCur
);
taosMemoryFree
(
pCur
);
...
...
source/libs/stream/src/streamStateRocksdb.c
浏览文件 @
c3d7f888
...
@@ -375,7 +375,7 @@ int streamGetInit(const char* funcName) {
...
@@ -375,7 +375,7 @@ int streamGetInit(const char* funcName) {
qWarn("streamState str: %s failed to write to %s, err: %s", toString, funcname, err); \
qWarn("streamState str: %s failed to write to %s, err: %s", toString, funcname, err); \
code = -1; \
code = -1; \
} else { \
} else { \
q
Warn("streamState str:%s succ to write to %s", toString, funcname);
\
q
Debug("streamState str:%s succ to write to %s", toString, funcname);
\
} \
} \
} while (0);
} while (0);
...
@@ -409,7 +409,7 @@ int streamGetInit(const char* funcName) {
...
@@ -409,7 +409,7 @@ int streamGetInit(const char* funcName) {
qWarn("streamState str: %s failed to read from %s, err: %s", toString, funcname, err); \
qWarn("streamState str: %s failed to read from %s, err: %s", toString, funcname, err); \
code = -1; \
code = -1; \
} else { \
} else { \
if (code == 0) q
Warn("streamState str: %s succ to read from %s", toString, funcname);
\
if (code == 0) q
Debug("streamState str: %s succ to read from %s", toString, funcname);
\
} \
} \
} while (0);
} while (0);
...
@@ -435,7 +435,7 @@ int streamGetInit(const char* funcName) {
...
@@ -435,7 +435,7 @@ int streamGetInit(const char* funcName) {
taosMemoryFree(err); \
taosMemoryFree(err); \
code = -1; \
code = -1; \
} else { \
} else { \
q
Warn("streamState str: %s succ to del from %s", toString, funcname);
\
q
Debug("streamState str: %s succ to del from %s", toString, funcname);
\
} \
} \
} while (0);
} while (0);
...
@@ -498,7 +498,7 @@ int32_t streamStateFillDel_rocksdb(SStreamState* pState, const SWinKey* key) {
...
@@ -498,7 +498,7 @@ int32_t streamStateFillDel_rocksdb(SStreamState* pState, const SWinKey* key) {
// todo refactor
// todo refactor
int32_t
streamStateClear_rocksdb
(
SStreamState
*
pState
)
{
int32_t
streamStateClear_rocksdb
(
SStreamState
*
pState
)
{
q
Warn
(
"streamStateClear_rocksdb"
);
q
Debug
(
"streamStateClear_rocksdb"
);
SWinKey
key
=
{.
ts
=
0
,
.
groupId
=
0
};
SWinKey
key
=
{.
ts
=
0
,
.
groupId
=
0
};
// batch clear later
// batch clear later
streamStatePut_rocksdb
(
pState
,
&
key
,
NULL
,
0
);
streamStatePut_rocksdb
(
pState
,
&
key
,
NULL
,
0
);
...
@@ -525,7 +525,7 @@ int32_t streamStateSessionPut_rocksdb(SStreamState* pState, const SSessionKey* k
...
@@ -525,7 +525,7 @@ int32_t streamStateSessionPut_rocksdb(SStreamState* pState, const SSessionKey* k
return
code
;
return
code
;
}
}
SStreamStateCur
*
streamStateSessionSeekKeyCurrentPrev_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
)
{
SStreamStateCur
*
streamStateSessionSeekKeyCurrentPrev_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
)
{
q
Warn
(
"streamStateSessionSeekKeyCurrentPrev_rocksdb"
);
q
Debug
(
"streamStateSessionSeekKeyCurrentPrev_rocksdb"
);
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
if
(
pCur
==
NULL
)
{
if
(
pCur
==
NULL
)
{
return
NULL
;
return
NULL
;
...
@@ -534,12 +534,23 @@ SStreamStateCur* streamStateSessionSeekKeyCurrentPrev_rocksdb(SStreamState* pSta
...
@@ -534,12 +534,23 @@ SStreamStateCur* streamStateSessionSeekKeyCurrentPrev_rocksdb(SStreamState* pSta
pCur
->
iter
=
pCur
->
iter
=
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
2
]);
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
2
]);
char
buf
[
128
]
=
{
0
};
SStateSessionKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
int
len
=
stateSessionKeyEncode
(
&
sKey
,
buf
);
char
toString
[
128
]
=
{
0
};
stateSessionKeyToString
(
&
sKey
,
toString
);
// qWarn("streamState seek key %s", toString);
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
rocksdb_iter_seek_for_prev
(
pCur
->
iter
,
buf
,
len
);
return
NULL
;
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
return
NULL
;
}
}
}
SStateSessionKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
int32_t
c
=
0
;
int32_t
c
=
0
;
size_t
klen
;
size_t
klen
;
const
char
*
iKey
=
rocksdb_iter_key
(
pCur
->
iter
,
&
klen
);
const
char
*
iKey
=
rocksdb_iter_key
(
pCur
->
iter
,
&
klen
);
...
@@ -548,10 +559,15 @@ SStreamStateCur* streamStateSessionSeekKeyCurrentPrev_rocksdb(SStreamState* pSta
...
@@ -548,10 +559,15 @@ SStreamStateCur* streamStateSessionSeekKeyCurrentPrev_rocksdb(SStreamState* pSta
if
(
stateSessionKeyCmpr
(
&
sKey
,
sizeof
(
sKey
),
&
curKey
,
sizeof
(
curKey
))
>=
0
)
return
pCur
;
if
(
stateSessionKeyCmpr
(
&
sKey
,
sizeof
(
sKey
),
&
curKey
,
sizeof
(
curKey
))
>=
0
)
return
pCur
;
rocksdb_iter_prev
(
pCur
->
iter
);
rocksdb_iter_prev
(
pCur
->
iter
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
qWarn
(
"streamState failed to seek key prev %s"
,
toString
);
streamStateFreeCur
(
pCur
);
return
NULL
;
}
return
pCur
;
return
pCur
;
}
}
SStreamStateCur
*
streamStateSessionSeekKeyCurrentNext_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
)
{
SStreamStateCur
*
streamStateSessionSeekKeyCurrentNext_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
)
{
q
Warn
(
"streamStateSessionSeekKeyCurrentNext_rocksdb"
);
q
Debug
(
"streamStateSessionSeekKeyCurrentNext_rocksdb"
);
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
if
(
pCur
==
NULL
)
{
if
(
pCur
==
NULL
)
{
return
NULL
;
return
NULL
;
...
@@ -563,12 +579,15 @@ SStreamStateCur* streamStateSessionSeekKeyCurrentNext_rocksdb(SStreamState* pSta
...
@@ -563,12 +579,15 @@ SStreamStateCur* streamStateSessionSeekKeyCurrentNext_rocksdb(SStreamState* pSta
char
buf
[
128
]
=
{
0
};
char
buf
[
128
]
=
{
0
};
SStateSessionKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
SStateSessionKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
stateSessionKeyEncode
(
&
sKey
,
buf
);
int
len
=
stateSessionKeyEncode
(
&
sKey
,
buf
);
rocksdb_iter_seek
(
pCur
->
iter
,
(
const
char
*
)
buf
,
sizeof
(
sKey
)
);
rocksdb_iter_seek
(
pCur
->
iter
,
(
const
char
*
)
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
rocksdb_iter_seek_for_prev
(
pCur
->
iter
,
buf
,
len
);
return
NULL
;
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
return
NULL
;
}
}
}
size_t
klen
;
size_t
klen
;
const
char
*
iKey
=
rocksdb_iter_key
(
pCur
->
iter
,
&
klen
);
const
char
*
iKey
=
rocksdb_iter_key
(
pCur
->
iter
,
&
klen
);
...
@@ -577,11 +596,15 @@ SStreamStateCur* streamStateSessionSeekKeyCurrentNext_rocksdb(SStreamState* pSta
...
@@ -577,11 +596,15 @@ SStreamStateCur* streamStateSessionSeekKeyCurrentNext_rocksdb(SStreamState* pSta
if
(
stateSessionKeyCmpr
(
&
sKey
,
sizeof
(
sKey
),
&
curKey
,
sizeof
(
curKey
))
<=
0
)
return
pCur
;
if
(
stateSessionKeyCmpr
(
&
sKey
,
sizeof
(
sKey
),
&
curKey
,
sizeof
(
curKey
))
<=
0
)
return
pCur
;
rocksdb_iter_next
(
pCur
->
iter
);
rocksdb_iter_next
(
pCur
->
iter
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
return
NULL
;
}
return
pCur
;
return
pCur
;
}
}
SStreamStateCur
*
streamStateSessionSeekKeyNext_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
)
{
SStreamStateCur
*
streamStateSessionSeekKeyNext_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
)
{
q
Warn
(
"streamStateSessionSeekKeyNext_rocksdb"
);
q
Debug
(
"streamStateSessionSeekKeyNext_rocksdb"
);
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
if
(
pCur
==
NULL
)
{
if
(
pCur
==
NULL
)
{
return
NULL
;
return
NULL
;
...
@@ -590,12 +613,16 @@ SStreamStateCur* streamStateSessionSeekKeyNext_rocksdb(SStreamState* pState, con
...
@@ -590,12 +613,16 @@ SStreamStateCur* streamStateSessionSeekKeyNext_rocksdb(SStreamState* pState, con
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
2
]);
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
2
]);
pCur
->
number
=
pState
->
number
;
pCur
->
number
=
pState
->
number
;
SStateSessionKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
SStateSessionKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
char
buf
[
128
]
=
{
0
};
stateSessionKeyEncode
(
&
sKey
,
buf
);
char
buf
[
128
]
=
{
0
};
rocksdb_iter_seek
(
pCur
->
iter
,
(
const
char
*
)
buf
,
sizeof
(
sKey
));
int
len
=
stateSessionKeyEncode
(
&
sKey
,
buf
);
rocksdb_iter_seek
(
pCur
->
iter
,
(
const
char
*
)
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
rocksdb_iter_seek_for_prev
(
pCur
->
iter
,
buf
,
len
);
return
NULL
;
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
return
NULL
;
}
}
}
size_t
klen
;
size_t
klen
;
const
char
*
iKey
=
rocksdb_iter_key
(
pCur
->
iter
,
&
klen
);
const
char
*
iKey
=
rocksdb_iter_key
(
pCur
->
iter
,
&
klen
);
...
@@ -604,11 +631,15 @@ SStreamStateCur* streamStateSessionSeekKeyNext_rocksdb(SStreamState* pState, con
...
@@ -604,11 +631,15 @@ SStreamStateCur* streamStateSessionSeekKeyNext_rocksdb(SStreamState* pState, con
if
(
stateSessionKeyCmpr
(
&
sKey
,
sizeof
(
sKey
),
&
curKey
,
sizeof
(
curKey
))
<
0
)
return
pCur
;
if
(
stateSessionKeyCmpr
(
&
sKey
,
sizeof
(
sKey
),
&
curKey
,
sizeof
(
curKey
))
<
0
)
return
pCur
;
rocksdb_iter_next
(
pCur
->
iter
);
rocksdb_iter_next
(
pCur
->
iter
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
return
NULL
;
}
return
pCur
;
return
pCur
;
}
}
int32_t
streamStateAddIfNotExist_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
,
void
**
pVal
,
int32_t
*
pVLen
)
{
int32_t
streamStateAddIfNotExist_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
,
void
**
pVal
,
int32_t
*
pVLen
)
{
q
Warn
(
"streamStateAddIfNotExist_rocksdb"
);
q
Debug
(
"streamStateAddIfNotExist_rocksdb"
);
int32_t
size
=
*
pVLen
;
int32_t
size
=
*
pVLen
;
if
(
streamStateGet_rocksdb
(
pState
,
key
,
pVal
,
pVLen
)
==
0
)
{
if
(
streamStateGet_rocksdb
(
pState
,
key
,
pVal
,
pVLen
)
==
0
)
{
return
0
;
return
0
;
...
@@ -618,43 +649,39 @@ int32_t streamStateAddIfNotExist_rocksdb(SStreamState* pState, const SWinKey* ke
...
@@ -618,43 +649,39 @@ int32_t streamStateAddIfNotExist_rocksdb(SStreamState* pState, const SWinKey* ke
return
0
;
return
0
;
}
}
SStreamStateCur
*
streamStateGetCur_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
)
{
SStreamStateCur
*
streamStateGetCur_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
)
{
q
Warn
(
"streamStateGetCur_rocksdb"
);
q
Debug
(
"streamStateGetCur_rocksdb"
);
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
if
(
pCur
==
NULL
)
return
NULL
;
if
(
pCur
==
NULL
)
return
NULL
;
qWarn
(
"streamStateGetCur_rocksdb-->1"
);
pCur
->
iter
=
pCur
->
iter
=
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
0
]);
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
0
]);
SStateKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
SStateKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
char
buf
[
128
]
=
{
0
};
char
buf
[
128
]
=
{
0
};
stateKeyEncode
((
void
*
)
&
sKey
,
buf
);
int
len
=
stateKeyEncode
((
void
*
)
&
sKey
,
buf
);
char
sKeyStr
[
128
]
=
{
0
};
char
sKeyStr
[
128
]
=
{
0
};
stateKeyToString
(
&
sKey
,
sKeyStr
);
stateKeyToString
(
&
sKey
,
sKeyStr
);
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
sizeof
(
sKey
)
);
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
len
);
if
(
rocksdb_iter_valid
(
pCur
->
iter
))
{
if
(
rocksdb_iter_valid
(
pCur
->
iter
))
{
qWarn
(
"streamStateGetCur_rocksdb-->2"
);
SStateKey
curKey
;
SStateKey
curKey
;
size_t
kLen
=
0
;
size_t
kLen
=
0
;
char
*
keyStr
=
(
char
*
)
rocksdb_iter_key
(
pCur
->
iter
,
&
kLen
);
char
*
keyStr
=
(
char
*
)
rocksdb_iter_key
(
pCur
->
iter
,
&
kLen
);
stateKeyDecode
((
void
*
)
&
curKey
,
keyStr
);
stateKeyDecode
((
void
*
)
&
curKey
,
keyStr
);
char
tKeyStr
[
128
]
=
{
0
};
stateKeyToString
(
&
curKey
,
tKeyStr
);
qWarn
(
"streamStateGetCur_rocksdb-->src:%s, dst:%s"
,
sKeyStr
,
tKeyStr
);
// char tKeyStr[128] = {0};
// stateKeyToString(&curKey, tKeyStr);
// qWarn("streamStateGetCur_rocksdb-->src:%s, dst:%s", sKeyStr, tKeyStr);
if
(
stateKeyCmpr
(
&
sKey
,
sizeof
(
sKey
),
&
curKey
,
sizeof
(
curKey
))
==
0
)
{
if
(
stateKeyCmpr
(
&
sKey
,
sizeof
(
sKey
),
&
curKey
,
sizeof
(
curKey
))
==
0
)
{
pCur
->
number
=
pState
->
number
;
pCur
->
number
=
pState
->
number
;
return
pCur
;
return
pCur
;
}
}
qWarn
(
"streamStateGetCur_rocksdb-->3"
);
}
}
qWarn
(
"streamStateGetCur_rocksdb-->4"
);
streamStateFreeCur
(
pCur
);
streamStateFreeCur
(
pCur
);
return
NULL
;
return
NULL
;
}
}
SStreamStateCur
*
streamStateFillGetCur_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
)
{
SStreamStateCur
*
streamStateFillGetCur_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
)
{
q
Warn
(
"streamStateFillGetCur_rocksdb"
);
q
Debug
(
"streamStateFillGetCur_rocksdb"
);
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
if
(
pCur
==
NULL
)
return
NULL
;
if
(
pCur
==
NULL
)
return
NULL
;
...
@@ -662,8 +689,15 @@ SStreamStateCur* streamStateFillGetCur_rocksdb(SStreamState* pState, const SWinK
...
@@ -662,8 +689,15 @@ SStreamStateCur* streamStateFillGetCur_rocksdb(SStreamState* pState, const SWinK
pCur
->
iter
=
pCur
->
iter
=
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
1
]);
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
1
]);
char
buf
[
128
]
=
{
0
};
char
buf
[
128
]
=
{
0
};
winKeyDecode
((
void
*
)
key
,
buf
);
int
len
=
winKeyDecode
((
void
*
)
key
,
buf
);
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
sizeof
(
*
key
));
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
rocksdb_iter_seek_for_prev
(
pCur
->
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
return
NULL
;
}
}
if
(
rocksdb_iter_valid
(
pCur
->
iter
))
{
if
(
rocksdb_iter_valid
(
pCur
->
iter
))
{
size_t
kLen
;
size_t
kLen
;
SWinKey
curKey
;
SWinKey
curKey
;
...
@@ -678,7 +712,7 @@ SStreamStateCur* streamStateFillGetCur_rocksdb(SStreamState* pState, const SWinK
...
@@ -678,7 +712,7 @@ SStreamStateCur* streamStateFillGetCur_rocksdb(SStreamState* pState, const SWinK
return
NULL
;
return
NULL
;
}
}
SStreamStateCur
*
streamStateGetAndCheckCur_rocksdb
(
SStreamState
*
pState
,
SWinKey
*
key
)
{
SStreamStateCur
*
streamStateGetAndCheckCur_rocksdb
(
SStreamState
*
pState
,
SWinKey
*
key
)
{
q
Warn
(
"streamStateGetAndCheckCur_rocksdb"
);
q
Debug
(
"streamStateGetAndCheckCur_rocksdb"
);
SStreamStateCur
*
pCur
=
streamStateFillGetCur_rocksdb
(
pState
,
key
);
SStreamStateCur
*
pCur
=
streamStateFillGetCur_rocksdb
(
pState
,
key
);
if
(
pCur
)
{
if
(
pCur
)
{
int32_t
code
=
streamStateGetGroupKVByCur_rocksdb
(
pCur
,
key
,
NULL
,
0
);
int32_t
code
=
streamStateGetGroupKVByCur_rocksdb
(
pCur
,
key
,
NULL
,
0
);
...
@@ -688,29 +722,25 @@ SStreamStateCur* streamStateGetAndCheckCur_rocksdb(SStreamState* pState, SWinKey
...
@@ -688,29 +722,25 @@ SStreamStateCur* streamStateGetAndCheckCur_rocksdb(SStreamState* pState, SWinKey
return
NULL
;
return
NULL
;
}
}
int32_t
streamStateGetKVByCur_rocksdb
(
SStreamStateCur
*
pCur
,
SWinKey
*
pKey
,
const
void
**
pVal
,
int32_t
*
pVLen
)
{
int32_t
streamStateGetKVByCur_rocksdb
(
SStreamStateCur
*
pCur
,
SWinKey
*
pKey
,
const
void
**
pVal
,
int32_t
*
pVLen
)
{
q
Warn
(
"streamStateGetKVByCur_rocksdb"
);
q
Debug
(
"streamStateGetKVByCur_rocksdb"
);
if
(
!
pCur
)
return
-
1
;
if
(
!
pCur
)
return
-
1
;
SStateKey
tkey
;
SStateKey
tkey
;
SStateKey
*
pKtmp
=
&
tkey
;
SStateKey
*
pKtmp
=
&
tkey
;
if
(
rocksdb_iter_valid
(
pCur
->
iter
))
{
if
(
rocksdb_iter_valid
(
pCur
->
iter
))
{
qWarn
(
"streamStateGetKVByCur_rocksdb-2"
);
size_t
tlen
;
size_t
tlen
;
char
*
keyStr
=
(
char
*
)
rocksdb_iter_key
(
pCur
->
iter
,
&
tlen
);
char
*
keyStr
=
(
char
*
)
rocksdb_iter_key
(
pCur
->
iter
,
&
tlen
);
stateKeyDecode
((
void
*
)
pKtmp
,
keyStr
);
stateKeyDecode
((
void
*
)
pKtmp
,
keyStr
);
if
(
pKtmp
->
opNum
!=
pCur
->
number
)
{
if
(
pKtmp
->
opNum
!=
pCur
->
number
)
{
qWarn
(
"streamStateGetKVByCur_rocksdb-3"
);
return
-
1
;
return
-
1
;
}
}
qWarn
(
"streamStateGetKVByCur_rocksdb-4"
);
*
pKey
=
pKtmp
->
key
;
*
pKey
=
pKtmp
->
key
;
return
0
;
return
0
;
}
}
qWarn
(
"streamStateGetKVByCur_rocksdb-5"
);
return
-
1
;
return
-
1
;
}
}
int32_t
streamStateFillGetKVByCur_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
)
{
q
Warn
(
"streamStateFillGetKVByCur_rocksdb"
);
q
Debug
(
"streamStateFillGetKVByCur_rocksdb"
);
if
(
!
pCur
)
{
if
(
!
pCur
)
{
return
-
1
;
return
-
1
;
}
}
...
@@ -727,7 +757,7 @@ int32_t streamStateFillGetKVByCur_rocksdb(SStreamStateCur* pCur, SWinKey* pKey,
...
@@ -727,7 +757,7 @@ int32_t streamStateFillGetKVByCur_rocksdb(SStreamStateCur* pCur, SWinKey* pKey,
return
0
;
return
0
;
}
}
int32_t
streamStateGetGroupKVByCur_rocksdb
(
SStreamStateCur
*
pCur
,
SWinKey
*
pKey
,
const
void
**
pVal
,
int32_t
*
pVLen
)
{
int32_t
streamStateGetGroupKVByCur_rocksdb
(
SStreamStateCur
*
pCur
,
SWinKey
*
pKey
,
const
void
**
pVal
,
int32_t
*
pVLen
)
{
q
Warn
(
"streamStateGetGroupKVByCur_rocksdb"
);
q
Debug
(
"streamStateGetGroupKVByCur_rocksdb"
);
if
(
!
pCur
)
{
if
(
!
pCur
)
{
return
-
1
;
return
-
1
;
}
}
...
@@ -742,7 +772,7 @@ int32_t streamStateGetGroupKVByCur_rocksdb(SStreamStateCur* pCur, SWinKey* pKey,
...
@@ -742,7 +772,7 @@ int32_t streamStateGetGroupKVByCur_rocksdb(SStreamStateCur* pCur, SWinKey* pKey,
return
-
1
;
return
-
1
;
}
}
int32_t
streamStateGetFirst_rocksdb
(
SStreamState
*
pState
,
SWinKey
*
key
)
{
int32_t
streamStateGetFirst_rocksdb
(
SStreamState
*
pState
,
SWinKey
*
key
)
{
q
Warn
(
"streamStateGetFirst_rocksdb"
);
q
Debug
(
"streamStateGetFirst_rocksdb"
);
SWinKey
tmp
=
{.
ts
=
0
,
.
groupId
=
0
};
SWinKey
tmp
=
{.
ts
=
0
,
.
groupId
=
0
};
streamStatePut_rocksdb
(
pState
,
&
tmp
,
NULL
,
0
);
streamStatePut_rocksdb
(
pState
,
&
tmp
,
NULL
,
0
);
SStreamStateCur
*
pCur
=
streamStateSeekKeyNext_rocksdb
(
pState
,
&
tmp
);
SStreamStateCur
*
pCur
=
streamStateSeekKeyNext_rocksdb
(
pState
,
&
tmp
);
...
@@ -752,7 +782,7 @@ int32_t streamStateGetFirst_rocksdb(SStreamState* pState, SWinKey* key) {
...
@@ -752,7 +782,7 @@ int32_t streamStateGetFirst_rocksdb(SStreamState* pState, SWinKey* key) {
return
code
;
return
code
;
}
}
int32_t
streamStateSessionGetKVByCur_rocksdb
(
SStreamStateCur
*
pCur
,
SSessionKey
*
pKey
,
void
**
pVal
,
int32_t
*
pVLen
)
{
int32_t
streamStateSessionGetKVByCur_rocksdb
(
SStreamStateCur
*
pCur
,
SSessionKey
*
pKey
,
void
**
pVal
,
int32_t
*
pVLen
)
{
q
Warn
(
"streamStateSessionGetKVByCur_rocksdb"
);
q
Debug
(
"streamStateSessionGetKVByCur_rocksdb"
);
if
(
!
pCur
)
{
if
(
!
pCur
)
{
return
-
1
;
return
-
1
;
}
}
...
@@ -767,7 +797,9 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey*
...
@@ -767,7 +797,9 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey*
SStateSessionKey
*
pKTmp
=
&
ktmp
;
SStateSessionKey
*
pKTmp
=
&
ktmp
;
const
char
*
val
=
rocksdb_iter_value
(
pCur
->
iter
,
(
size_t
*
)
&
vLen
);
const
char
*
val
=
rocksdb_iter_value
(
pCur
->
iter
,
(
size_t
*
)
&
vLen
);
if
(
pVal
!=
NULL
)
*
pVal
=
(
char
*
)
val
;
if
(
pVal
!=
NULL
)
{
*
pVal
=
(
char
*
)
val
;
}
if
(
pVLen
!=
NULL
)
*
pVLen
=
vLen
;
if
(
pVLen
!=
NULL
)
*
pVLen
=
vLen
;
if
(
pKTmp
->
opNum
!=
pCur
->
number
)
{
if
(
pKTmp
->
opNum
!=
pCur
->
number
)
{
...
@@ -781,7 +813,7 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey*
...
@@ -781,7 +813,7 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey*
}
}
SStreamStateCur
*
streamStateSeekKeyNext_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
)
{
SStreamStateCur
*
streamStateSeekKeyNext_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
)
{
q
Warn
(
"streamStateSeekKeyNext_rocksdb"
);
q
Debug
(
"streamStateSeekKeyNext_rocksdb"
);
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
if
(
pCur
==
NULL
)
{
if
(
pCur
==
NULL
)
{
return
NULL
;
return
NULL
;
...
@@ -792,8 +824,16 @@ SStreamStateCur* streamStateSeekKeyNext_rocksdb(SStreamState* pState, const SWin
...
@@ -792,8 +824,16 @@ SStreamStateCur* streamStateSeekKeyNext_rocksdb(SStreamState* pState, const SWin
SStateKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
SStateKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
char
buf
[
128
]
=
{
0
};
char
buf
[
128
]
=
{
0
};
stateKeyEncode
((
void
*
)
&
sKey
,
buf
);
int
len
=
stateKeyEncode
((
void
*
)
&
sKey
,
buf
);
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
sizeof
(
sKey
));
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
rocksdb_iter_seek_for_prev
(
pCur
->
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
return
NULL
;
}
}
if
(
rocksdb_iter_valid
(
pCur
->
iter
))
{
if
(
rocksdb_iter_valid
(
pCur
->
iter
))
{
SStateKey
curKey
;
SStateKey
curKey
;
size_t
kLen
;
size_t
kLen
;
...
@@ -809,7 +849,7 @@ SStreamStateCur* streamStateSeekKeyNext_rocksdb(SStreamState* pState, const SWin
...
@@ -809,7 +849,7 @@ SStreamStateCur* streamStateSeekKeyNext_rocksdb(SStreamState* pState, const SWin
return
NULL
;
return
NULL
;
}
}
SStreamStateCur
*
streamStateFillSeekKeyNext_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
)
{
SStreamStateCur
*
streamStateFillSeekKeyNext_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
)
{
q
Warn
(
"streamStateFillSeekKeyNext_rocksdb"
);
q
Debug
(
"streamStateFillSeekKeyNext_rocksdb"
);
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
if
(
!
pCur
)
{
if
(
!
pCur
)
{
return
NULL
;
return
NULL
;
...
@@ -818,11 +858,14 @@ SStreamStateCur* streamStateFillSeekKeyNext_rocksdb(SStreamState* pState, const
...
@@ -818,11 +858,14 @@ SStreamStateCur* streamStateFillSeekKeyNext_rocksdb(SStreamState* pState, const
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
1
]);
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
1
]);
char
buf
[
128
]
=
{
0
};
char
buf
[
128
]
=
{
0
};
winKeyEncode
((
void
*
)
key
,
buf
);
int
len
=
winKeyEncode
((
void
*
)
key
,
buf
);
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
sizeof
(
*
key
)
);
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
rocksdb_iter_seek_for_prev
(
pCur
->
iter
,
buf
,
len
);
return
NULL
;
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
return
NULL
;
}
}
}
{
{
SWinKey
curKey
;
SWinKey
curKey
;
...
@@ -839,7 +882,7 @@ SStreamStateCur* streamStateFillSeekKeyNext_rocksdb(SStreamState* pState, const
...
@@ -839,7 +882,7 @@ SStreamStateCur* streamStateFillSeekKeyNext_rocksdb(SStreamState* pState, const
return
NULL
;
return
NULL
;
}
}
SStreamStateCur
*
streamStateFillSeekKeyPrev_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
)
{
SStreamStateCur
*
streamStateFillSeekKeyPrev_rocksdb
(
SStreamState
*
pState
,
const
SWinKey
*
key
)
{
q
Warn
(
"streamStateFillSeekKeyPrev_rocksdb"
);
q
Debug
(
"streamStateFillSeekKeyPrev_rocksdb"
);
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
if
(
pCur
==
NULL
)
{
if
(
pCur
==
NULL
)
{
return
NULL
;
return
NULL
;
...
@@ -848,11 +891,15 @@ SStreamStateCur* streamStateFillSeekKeyPrev_rocksdb(SStreamState* pState, const
...
@@ -848,11 +891,15 @@ SStreamStateCur* streamStateFillSeekKeyPrev_rocksdb(SStreamState* pState, const
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
1
]);
rocksdb_create_iterator_cf
(
pState
->
pTdbState
->
rocksdb
,
pState
->
pTdbState
->
ropts
,
pState
->
pTdbState
->
pHandle
[
1
]);
char
buf
[
128
]
=
{
0
};
char
buf
[
128
]
=
{
0
};
winKeyEncode
((
void
*
)
key
,
buf
);
int
len
=
winKeyEncode
((
void
*
)
key
,
buf
);
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
sizeof
(
*
key
));
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
rocksdb_iter_seek_for_prev
(
pCur
->
iter
,
buf
,
len
);
return
NULL
;
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
return
NULL
;
}
}
}
{
{
...
@@ -870,7 +917,7 @@ SStreamStateCur* streamStateFillSeekKeyPrev_rocksdb(SStreamState* pState, const
...
@@ -870,7 +917,7 @@ SStreamStateCur* streamStateFillSeekKeyPrev_rocksdb(SStreamState* pState, const
return
NULL
;
return
NULL
;
}
}
int32_t
streamStateCurPrev_rocksdb
(
SStreamState
*
pState
,
SStreamStateCur
*
pCur
)
{
int32_t
streamStateCurPrev_rocksdb
(
SStreamState
*
pState
,
SStreamStateCur
*
pCur
)
{
q
Warn
(
"streamStateCurPrev_rocksdb"
);
q
Debug
(
"streamStateCurPrev_rocksdb"
);
if
(
!
pCur
)
return
-
1
;
if
(
!
pCur
)
return
-
1
;
rocksdb_iter_prev
(
pCur
->
iter
);
rocksdb_iter_prev
(
pCur
->
iter
);
...
@@ -884,7 +931,7 @@ int32_t streamStateCurNext_rocksdb(SStreamState* pState, SStreamStateCur* pCur)
...
@@ -884,7 +931,7 @@ int32_t streamStateCurNext_rocksdb(SStreamState* pState, SStreamStateCur* pCur)
return
0
;
return
0
;
}
}
int32_t
streamStateSessionGetKeyByRange_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
,
SSessionKey
*
curKey
)
{
int32_t
streamStateSessionGetKeyByRange_rocksdb
(
SStreamState
*
pState
,
const
SSessionKey
*
key
,
SSessionKey
*
curKey
)
{
q
Warn
(
"streamStateSessionGetKeyByRange_rocksdb"
);
q
Debug
(
"streamStateSessionGetKeyByRange_rocksdb"
);
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
SStreamStateCur
*
pCur
=
taosMemoryCalloc
(
1
,
sizeof
(
SStreamStateCur
));
if
(
pCur
==
NULL
)
{
if
(
pCur
==
NULL
)
{
return
-
1
;
return
-
1
;
...
@@ -896,11 +943,14 @@ int32_t streamStateSessionGetKeyByRange_rocksdb(SStreamState* pState, const SSes
...
@@ -896,11 +943,14 @@ int32_t streamStateSessionGetKeyByRange_rocksdb(SStreamState* pState, const SSes
SStateSessionKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
SStateSessionKey
sKey
=
{.
key
=
*
key
,
.
opNum
=
pState
->
number
};
int32_t
c
=
0
;
int32_t
c
=
0
;
char
buf
[
128
]
=
{
0
};
char
buf
[
128
]
=
{
0
};
stateSessionKeyEncode
(
&
sKey
,
buf
);
int
len
=
stateSessionKeyEncode
(
&
sKey
,
buf
);
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
sizeof
(
sKey
)
);
rocksdb_iter_seek
(
pCur
->
iter
,
buf
,
len
);
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
rocksdb_iter_seek_for_prev
(
pCur
->
iter
,
buf
,
len
);
return
-
1
;
if
(
!
rocksdb_iter_valid
(
pCur
->
iter
))
{
streamStateFreeCur
(
pCur
);
return
-
1
;
}
}
}
int32_t
kLen
;
int32_t
kLen
;
...
@@ -941,18 +991,21 @@ int32_t streamStateSessionGetKeyByRange_rocksdb(SStreamState* pState, const SSes
...
@@ -941,18 +991,21 @@ int32_t streamStateSessionGetKeyByRange_rocksdb(SStreamState* pState, const SSes
}
}
int32_t
streamStateSessionGet_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
,
void
**
pVal
,
int32_t
*
pVLen
)
{
int32_t
streamStateSessionGet_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
,
void
**
pVal
,
int32_t
*
pVLen
)
{
q
Warn
(
"streamStateSessionGet_rocksdb"
);
q
Debug
(
"streamStateSessionGet_rocksdb"
);
int
code
=
0
;
int
code
=
0
;
SStreamStateCur
*
pCur
=
streamStateSessionSeekKeyCurrentNext_rocksdb
(
pState
,
key
);
SStreamStateCur
*
pCur
=
streamStateSessionSeekKeyCurrentNext_rocksdb
(
pState
,
key
);
SSessionKey
resKey
=
*
key
;
SSessionKey
resKey
=
*
key
;
void
*
tmp
=
NULL
;
void
*
tmp
=
NULL
;
code
=
streamStateSessionGetKVByCur_rocksdb
(
pCur
,
&
resKey
,
&
tmp
,
pVLen
);
int32_t
vLen
=
0
;
code
=
streamStateSessionGetKVByCur_rocksdb
(
pCur
,
&
resKey
,
&
tmp
,
&
vLen
);
if
(
code
==
0
)
{
if
(
code
==
0
)
{
if
(
pVLen
!=
NULL
)
*
pVLen
=
vLen
;
if
(
key
->
win
.
skey
!=
resKey
.
win
.
skey
)
{
if
(
key
->
win
.
skey
!=
resKey
.
win
.
skey
)
{
code
=
-
1
;
code
=
-
1
;
}
else
{
}
else
{
*
key
=
resKey
;
*
key
=
resKey
;
*
pVal
=
taosMemory
Malloc
(
*
pVLen
);
*
pVal
=
taosMemory
Calloc
(
1
,
*
pVLen
);
memcpy
(
*
pVal
,
tmp
,
*
pVLen
);
memcpy
(
*
pVal
,
tmp
,
*
pVLen
);
}
}
}
}
...
@@ -969,7 +1022,7 @@ int32_t streamStateSessionDel_rocksdb(SStreamState* pState, const SSessionKey* k
...
@@ -969,7 +1022,7 @@ int32_t streamStateSessionDel_rocksdb(SStreamState* pState, const SSessionKey* k
}
}
int32_t
streamStateSessionAddIfNotExist_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
,
TSKEY
gap
,
void
**
pVal
,
int32_t
streamStateSessionAddIfNotExist_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
,
TSKEY
gap
,
void
**
pVal
,
int32_t
*
pVLen
)
{
int32_t
*
pVLen
)
{
q
Warn
(
"streamStateSessionAddIfNotExist_rocksdb"
);
q
Debug
(
"streamStateSessionAddIfNotExist_rocksdb"
);
// todo refactor
// todo refactor
int32_t
res
=
0
;
int32_t
res
=
0
;
SSessionKey
originKey
=
*
key
;
SSessionKey
originKey
=
*
key
;
...
@@ -981,7 +1034,10 @@ int32_t streamStateSessionAddIfNotExist_rocksdb(SStreamState* pState, SSessionKe
...
@@ -981,7 +1034,10 @@ int32_t streamStateSessionAddIfNotExist_rocksdb(SStreamState* pState, SSessionKe
void
*
tmp
=
taosMemoryMalloc
(
valSize
);
void
*
tmp
=
taosMemoryMalloc
(
valSize
);
SStreamStateCur
*
pCur
=
streamStateSessionSeekKeyCurrentPrev_rocksdb
(
pState
,
key
);
SStreamStateCur
*
pCur
=
streamStateSessionSeekKeyCurrentPrev_rocksdb
(
pState
,
key
);
int32_t
code
=
streamStateSessionGetKVByCur_rocksdb
(
pCur
,
key
,
pVal
,
pVLen
);
if
(
pCur
==
NULL
)
{
}
int32_t
code
=
streamStateSessionGetKVByCur_rocksdb
(
pCur
,
key
,
pVal
,
pVLen
);
if
(
code
==
0
)
{
if
(
code
==
0
)
{
if
(
sessionRangeKeyCmpr
(
&
searchKey
,
key
)
==
0
)
{
if
(
sessionRangeKeyCmpr
(
&
searchKey
,
key
)
==
0
)
{
memcpy
(
tmp
,
*
pVal
,
valSize
);
memcpy
(
tmp
,
*
pVal
,
valSize
);
...
@@ -1016,7 +1072,7 @@ _end:
...
@@ -1016,7 +1072,7 @@ _end:
}
}
int32_t
streamStateStateAddIfNotExist_rocksdb
(
SStreamState
*
pState
,
SSessionKey
*
key
,
char
*
pKeyData
,
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
keyDataLen
,
state_key_cmpr_fn
fn
,
void
**
pVal
,
int32_t
*
pVLen
)
{
q
Warn
(
"streamStateStateAddIfNotExist_rocksdb"
);
q
Debug
(
"streamStateStateAddIfNotExist_rocksdb"
);
// todo refactor
// todo refactor
int32_t
res
=
0
;
int32_t
res
=
0
;
SSessionKey
tmpKey
=
*
key
;
SSessionKey
tmpKey
=
*
key
;
...
@@ -1072,7 +1128,7 @@ _end:
...
@@ -1072,7 +1128,7 @@ _end:
}
}
int32_t
streamStateSessionClear_rocksdb
(
SStreamState
*
pState
)
{
int32_t
streamStateSessionClear_rocksdb
(
SStreamState
*
pState
)
{
q
Warn
(
"streamStateSessionClear_rocksdb"
);
q
Debug
(
"streamStateSessionClear_rocksdb"
);
SSessionKey
key
=
{.
win
.
skey
=
0
,
.
win
.
ekey
=
0
,
.
groupId
=
0
};
SSessionKey
key
=
{.
win
.
skey
=
0
,
.
win
.
ekey
=
0
,
.
groupId
=
0
};
SStreamStateCur
*
pCur
=
streamStateSessionSeekKeyCurrentNext_rocksdb
(
pState
,
&
key
);
SStreamStateCur
*
pCur
=
streamStateSessionSeekKeyCurrentNext_rocksdb
(
pState
,
&
key
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录