Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
eab330c0
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看板
提交
eab330c0
编写于
6月 09, 2022
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh: refactor index code
上级
d9c83f63
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
83 addition
and
83 deletion
+83
-83
source/libs/index/inc/indexCache.h
source/libs/index/inc/indexCache.h
+11
-11
source/libs/index/inc/indexInt.h
source/libs/index/inc/indexInt.h
+1
-1
source/libs/index/inc/indexTfile.h
source/libs/index/inc/indexTfile.h
+4
-4
source/libs/index/src/index.c
source/libs/index/src/index.c
+15
-15
source/libs/index/src/indexCache.c
source/libs/index/src/indexCache.c
+40
-40
source/libs/index/src/indexTfile.c
source/libs/index/src/indexTfile.c
+7
-7
source/libs/index/test/indexTests.cc
source/libs/index/test/indexTests.cc
+5
-5
未找到文件。
source/libs/index/inc/indexCache.h
浏览文件 @
eab330c0
...
...
@@ -62,25 +62,25 @@ typedef struct CacheTerm {
}
CacheTerm
;
//
IndexCache
*
i
nde
xCacheCreate
(
SIndex
*
idx
,
uint64_t
suid
,
const
char
*
colName
,
int8_t
type
);
IndexCache
*
i
d
xCacheCreate
(
SIndex
*
idx
,
uint64_t
suid
,
const
char
*
colName
,
int8_t
type
);
void
i
nde
xCacheForceToMerge
(
void
*
cache
);
void
i
nde
xCacheDestroy
(
void
*
cache
);
void
i
nde
xCacheBroadcast
(
void
*
cache
);
void
i
nde
xCacheWait
(
void
*
cache
);
void
i
d
xCacheForceToMerge
(
void
*
cache
);
void
i
d
xCacheDestroy
(
void
*
cache
);
void
i
d
xCacheBroadcast
(
void
*
cache
);
void
i
d
xCacheWait
(
void
*
cache
);
Iterate
*
i
nde
xCacheIteratorCreate
(
IndexCache
*
cache
);
Iterate
*
i
d
xCacheIteratorCreate
(
IndexCache
*
cache
);
void
idxCacheIteratorDestroy
(
Iterate
*
iiter
);
int
i
nde
xCachePut
(
void
*
cache
,
SIndexTerm
*
term
,
uint64_t
uid
);
int
i
d
xCachePut
(
void
*
cache
,
SIndexTerm
*
term
,
uint64_t
uid
);
// int indexCacheGet(void *cache, uint64_t *rst);
int
i
nde
xCacheSearch
(
void
*
cache
,
SIndexTermQuery
*
query
,
SIdxTRslt
*
tr
,
STermValueType
*
s
);
int
i
d
xCacheSearch
(
void
*
cache
,
SIndexTermQuery
*
query
,
SIdxTRslt
*
tr
,
STermValueType
*
s
);
void
i
nde
xCacheRef
(
IndexCache
*
cache
);
void
i
nde
xCacheUnRef
(
IndexCache
*
cache
);
void
i
d
xCacheRef
(
IndexCache
*
cache
);
void
i
d
xCacheUnRef
(
IndexCache
*
cache
);
void
i
nde
xCacheDebug
(
IndexCache
*
cache
);
void
i
d
xCacheDebug
(
IndexCache
*
cache
);
void
idxCacheDestroyImm
(
IndexCache
*
cache
);
#ifdef __cplusplus
...
...
source/libs/index/inc/indexInt.h
浏览文件 @
eab330c0
...
...
@@ -138,7 +138,7 @@ int32_t indexRemoveRef(int64_t ref);
void
indexAcquireRef
(
int64_t
ref
);
void
indexReleaseRef
(
int64_t
ref
);
int32_t
i
nde
xSerialCacheKey
(
ICacheKey
*
key
,
char
*
buf
);
int32_t
i
d
xSerialCacheKey
(
ICacheKey
*
key
,
char
*
buf
);
// int32_t indexSerialKey(ICacheKey* key, char* buf);
// int32_t indexSerialTermKey(SIndexTerm* itm, char* buf);
...
...
source/libs/index/inc/indexTfile.h
浏览文件 @
eab330c0
...
...
@@ -117,10 +117,10 @@ int tfileWriterPut(TFileWriter* tw, void* data, bool order);
int
tfileWriterFinish
(
TFileWriter
*
tw
);
//
IndexTFile
*
i
nde
xTFileCreate
(
const
char
*
path
);
void
i
nde
xTFileDestroy
(
IndexTFile
*
tfile
);
int
i
nde
xTFilePut
(
void
*
tfile
,
SIndexTerm
*
term
,
uint64_t
uid
);
int
i
nde
xTFileSearch
(
void
*
tfile
,
SIndexTermQuery
*
query
,
SIdxTRslt
*
tr
);
IndexTFile
*
i
d
xTFileCreate
(
const
char
*
path
);
void
i
d
xTFileDestroy
(
IndexTFile
*
tfile
);
int
i
d
xTFilePut
(
void
*
tfile
,
SIndexTerm
*
term
,
uint64_t
uid
);
int
i
d
xTFileSearch
(
void
*
tfile
,
SIndexTermQuery
*
query
,
SIdxTRslt
*
tr
);
Iterate
*
tfileIteratorCreate
(
TFileReader
*
reader
);
void
tfileIteratorDestroy
(
Iterate
*
iterator
);
...
...
source/libs/index/src/index.c
浏览文件 @
eab330c0
...
...
@@ -106,8 +106,8 @@ int indexOpen(SIndexOpts* opts, const char* path, SIndex** index) {
return
-
1
;
}
// sIdx->cache = (void*)i
nde
xCacheCreate(sIdx);
sIdx
->
tindex
=
i
nde
xTFileCreate
(
path
);
// sIdx->cache = (void*)i
d
xCacheCreate(sIdx);
sIdx
->
tindex
=
i
d
xTFileCreate
(
path
);
if
(
sIdx
->
tindex
==
NULL
)
{
goto
END
;
}
...
...
@@ -136,7 +136,7 @@ void indexDestroy(void* handle) {
SIndex
*
sIdx
=
handle
;
taosThreadMutexDestroy
(
&
sIdx
->
mtx
);
tsem_destroy
(
&
sIdx
->
sem
);
i
nde
xTFileDestroy
(
sIdx
->
tindex
);
i
d
xTFileDestroy
(
sIdx
->
tindex
);
taosMemoryFree
(
sIdx
->
path
);
taosMemoryFree
(
sIdx
);
return
;
...
...
@@ -147,12 +147,12 @@ void indexClose(SIndex* sIdx) {
void
*
iter
=
taosHashIterate
(
sIdx
->
colObj
,
NULL
);
while
(
iter
)
{
IndexCache
**
pCache
=
iter
;
i
nde
xCacheForceToMerge
((
void
*
)(
*
pCache
));
i
d
xCacheForceToMerge
((
void
*
)(
*
pCache
));
indexInfo
(
"%s wait to merge"
,
(
*
pCache
)
->
colName
);
indexWait
((
void
*
)(
sIdx
));
indexInfo
(
"%s finish to wait"
,
(
*
pCache
)
->
colName
);
iter
=
taosHashIterate
(
sIdx
->
colObj
,
iter
);
i
nde
xCacheUnRef
(
*
pCache
);
i
d
xCacheUnRef
(
*
pCache
);
}
taosHashCleanup
(
sIdx
->
colObj
);
sIdx
->
colObj
=
NULL
;
...
...
@@ -186,11 +186,11 @@ int indexPut(SIndex* index, SIndexMultiTerm* fVals, uint64_t uid) {
char
buf
[
128
]
=
{
0
};
ICacheKey
key
=
{.
suid
=
p
->
suid
,
.
colName
=
p
->
colName
,
.
nColName
=
strlen
(
p
->
colName
),
.
colType
=
p
->
colType
};
int32_t
sz
=
i
nde
xSerialCacheKey
(
&
key
,
buf
);
int32_t
sz
=
i
d
xSerialCacheKey
(
&
key
,
buf
);
IndexCache
**
cache
=
taosHashGet
(
index
->
colObj
,
buf
,
sz
);
if
(
cache
==
NULL
)
{
IndexCache
*
pCache
=
i
nde
xCacheCreate
(
index
,
p
->
suid
,
p
->
colName
,
p
->
colType
);
IndexCache
*
pCache
=
i
d
xCacheCreate
(
index
,
p
->
suid
,
p
->
colName
,
p
->
colType
);
taosHashPut
(
index
->
colObj
,
buf
,
sz
,
&
pCache
,
sizeof
(
void
*
));
}
}
...
...
@@ -201,12 +201,12 @@ int indexPut(SIndex* index, SIndexMultiTerm* fVals, uint64_t uid) {
char
buf
[
128
]
=
{
0
};
ICacheKey
key
=
{.
suid
=
p
->
suid
,
.
colName
=
p
->
colName
,
.
nColName
=
strlen
(
p
->
colName
),
.
colType
=
p
->
colType
};
int32_t
sz
=
i
nde
xSerialCacheKey
(
&
key
,
buf
);
int32_t
sz
=
i
d
xSerialCacheKey
(
&
key
,
buf
);
indexDebug
(
"w suid: %"
PRIu64
", colName: %s, colType: %d"
,
key
.
suid
,
key
.
colName
,
key
.
colType
);
IndexCache
**
cache
=
taosHashGet
(
index
->
colObj
,
buf
,
sz
);
assert
(
*
cache
!=
NULL
);
int
ret
=
i
nde
xCachePut
(
*
cache
,
p
,
uid
);
int
ret
=
i
d
xCachePut
(
*
cache
,
p
,
uid
);
if
(
ret
!=
0
)
{
return
ret
;
}
...
...
@@ -331,7 +331,7 @@ static int idxTermSearch(SIndex* sIdx, SIndexTermQuery* query, SArray** result)
ICacheKey
key
=
{
.
suid
=
term
->
suid
,
.
colName
=
term
->
colName
,
.
nColName
=
strlen
(
term
->
colName
),
.
colType
=
term
->
colType
};
indexDebug
(
"r suid: %"
PRIu64
", colName: %s, colType: %d"
,
key
.
suid
,
key
.
colName
,
key
.
colType
);
int32_t
sz
=
i
nde
xSerialCacheKey
(
&
key
,
buf
);
int32_t
sz
=
i
d
xSerialCacheKey
(
&
key
,
buf
);
taosThreadMutexLock
(
&
sIdx
->
mtx
);
IndexCache
**
pCache
=
taosHashGet
(
sIdx
->
colObj
,
buf
,
sz
);
...
...
@@ -345,14 +345,14 @@ static int idxTermSearch(SIndex* sIdx, SIndexTermQuery* query, SArray** result)
int64_t
st
=
taosGetTimestampUs
();
SIdxTRslt
*
tr
=
idxTRsltCreate
();
if
(
0
==
i
nde
xCacheSearch
(
cache
,
query
,
tr
,
&
s
))
{
if
(
0
==
i
d
xCacheSearch
(
cache
,
query
,
tr
,
&
s
))
{
if
(
s
==
kTypeDeletion
)
{
indexInfo
(
"col: %s already drop by"
,
term
->
colName
);
// coloum already drop by other oper, no need to query tindex
return
0
;
}
else
{
st
=
taosGetTimestampUs
();
if
(
0
!=
i
nde
xTFileSearch
(
sIdx
->
tindex
,
query
,
tr
))
{
if
(
0
!=
i
d
xTFileSearch
(
sIdx
->
tindex
,
query
,
tr
))
{
indexError
(
"corrupt at index(TFile) col:%s val: %s"
,
term
->
colName
,
term
->
colVal
);
goto
END
;
}
...
...
@@ -472,7 +472,7 @@ int idxFlushCacheToTFile(SIndex* sIdx, void* cache, bool quit) {
indexWarn
(
"empty tfile reader found"
);
}
// handle flush
Iterate
*
cacheIter
=
i
nde
xCacheIteratorCreate
(
pCache
);
Iterate
*
cacheIter
=
i
d
xCacheIteratorCreate
(
pCache
);
if
(
cacheIter
==
NULL
)
{
indexError
(
"%p immtable is empty, ignore merge opera"
,
pCache
);
idxCacheDestroyImm
(
pCache
);
...
...
@@ -532,7 +532,7 @@ int idxFlushCacheToTFile(SIndex* sIdx, void* cache, bool quit) {
tfileIteratorDestroy
(
tfileIter
);
tfileReaderUnRef
(
pReader
);
i
nde
xCacheUnRef
(
pCache
);
i
d
xCacheUnRef
(
pCache
);
int64_t
cost
=
taosGetTimestampUs
()
-
st
;
if
(
ret
!=
0
)
{
...
...
@@ -620,7 +620,7 @@ END:
return
-
1
;
}
int32_t
i
nde
xSerialCacheKey
(
ICacheKey
*
key
,
char
*
buf
)
{
int32_t
i
d
xSerialCacheKey
(
ICacheKey
*
key
,
char
*
buf
)
{
bool
hasJson
=
INDEX_TYPE_CONTAIN_EXTERN_TYPE
(
key
->
colType
,
TSDB_DATA_TYPE_JSON
);
char
*
p
=
buf
;
...
...
source/libs/index/src/indexCache.c
浏览文件 @
eab330c0
...
...
@@ -68,7 +68,7 @@ static int32_t (*cacheSearch[][QUERY_MAX])(void* cache, SIndexTerm* ct, SIdxTRsl
cacheSearchLessThan_JSON
,
cacheSearchLessEqual_JSON
,
cacheSearchGreaterThan_JSON
,
cacheSearchGreaterEqual_JSON
,
cacheSearchRange_JSON
}};
static
void
d
oMergeWork
(
SSchedMsg
*
msg
);
static
void
idxD
oMergeWork
(
SSchedMsg
*
msg
);
static
bool
idxCacheIteratorNext
(
Iterate
*
itera
);
static
int32_t
cacheSearchTerm
(
void
*
cache
,
SIndexTerm
*
term
,
SIdxTRslt
*
tr
,
STermValueType
*
s
)
{
...
...
@@ -331,9 +331,9 @@ static int32_t cacheSearchRange(void* cache, SIndexTerm* term, SIdxTRslt* tr, ST
// impl later
return
0
;
}
static
IterateValue
*
i
nde
xCacheIteratorGetValue
(
Iterate
*
iter
);
static
IterateValue
*
i
d
xCacheIteratorGetValue
(
Iterate
*
iter
);
IndexCache
*
i
nde
xCacheCreate
(
SIndex
*
idx
,
uint64_t
suid
,
const
char
*
colName
,
int8_t
type
)
{
IndexCache
*
i
d
xCacheCreate
(
SIndex
*
idx
,
uint64_t
suid
,
const
char
*
colName
,
int8_t
type
)
{
IndexCache
*
cache
=
taosMemoryCalloc
(
1
,
sizeof
(
IndexCache
));
if
(
cache
==
NULL
)
{
indexError
(
"failed to create index cache"
);
...
...
@@ -352,13 +352,13 @@ IndexCache* indexCacheCreate(SIndex* idx, uint64_t suid, const char* colName, in
taosThreadMutexInit
(
&
cache
->
mtx
,
NULL
);
taosThreadCondInit
(
&
cache
->
finished
,
NULL
);
i
nde
xCacheRef
(
cache
);
i
d
xCacheRef
(
cache
);
if
(
idx
!=
NULL
)
{
indexAcquireRef
(
idx
->
refId
);
}
return
cache
;
}
void
i
nde
xCacheDebug
(
IndexCache
*
cache
)
{
void
i
d
xCacheDebug
(
IndexCache
*
cache
)
{
MemTable
*
tbl
=
NULL
;
taosThreadMutexLock
(
&
cache
->
mtx
);
...
...
@@ -405,7 +405,7 @@ void indexCacheDebug(IndexCache* cache) {
}
}
void
i
nde
xCacheDestroySkiplist
(
SSkipList
*
slt
)
{
void
i
d
xCacheDestroySkiplist
(
SSkipList
*
slt
)
{
SSkipListIterator
*
iter
=
tSkipListCreateIter
(
slt
);
while
(
iter
!=
NULL
&&
tSkipListIterNext
(
iter
))
{
SSkipListNode
*
node
=
tSkipListIterGet
(
iter
);
...
...
@@ -418,11 +418,11 @@ void indexCacheDestroySkiplist(SSkipList* slt) {
tSkipListDestroyIter
(
iter
);
tSkipListDestroy
(
slt
);
}
void
i
nde
xCacheBroadcast
(
void
*
cache
)
{
void
i
d
xCacheBroadcast
(
void
*
cache
)
{
IndexCache
*
pCache
=
cache
;
taosThreadCondBroadcast
(
&
pCache
->
finished
);
}
void
i
nde
xCacheWait
(
void
*
cache
)
{
void
i
d
xCacheWait
(
void
*
cache
)
{
IndexCache
*
pCache
=
cache
;
taosThreadCondWait
(
&
pCache
->
finished
,
&
pCache
->
mtx
);
}
...
...
@@ -435,14 +435,14 @@ void idxCacheDestroyImm(IndexCache* cache) {
tbl
=
cache
->
imm
;
cache
->
imm
=
NULL
;
// or throw int bg thread
i
nde
xCacheBroadcast
(
cache
);
i
d
xCacheBroadcast
(
cache
);
taosThreadMutexUnlock
(
&
cache
->
mtx
);
idxMemUnRef
(
tbl
);
idxMemUnRef
(
tbl
);
}
void
i
nde
xCacheDestroy
(
void
*
cache
)
{
void
i
d
xCacheDestroy
(
void
*
cache
)
{
IndexCache
*
pCache
=
cache
;
if
(
pCache
==
NULL
)
{
return
;
...
...
@@ -460,7 +460,7 @@ void indexCacheDestroy(void* cache) {
taosMemoryFree
(
pCache
);
}
Iterate
*
i
nde
xCacheIteratorCreate
(
IndexCache
*
cache
)
{
Iterate
*
i
d
xCacheIteratorCreate
(
IndexCache
*
cache
)
{
if
(
cache
->
imm
==
NULL
)
{
return
NULL
;
}
...
...
@@ -477,7 +477,7 @@ Iterate* indexCacheIteratorCreate(IndexCache* cache) {
iiter
->
val
.
colVal
=
NULL
;
iiter
->
iter
=
tbl
!=
NULL
?
tSkipListCreateIter
(
tbl
->
mem
)
:
NULL
;
iiter
->
next
=
idxCacheIteratorNext
;
iiter
->
getValue
=
i
nde
xCacheIteratorGetValue
;
iiter
->
getValue
=
i
d
xCacheIteratorGetValue
;
taosThreadMutexUnlock
(
&
cache
->
mtx
);
...
...
@@ -492,9 +492,9 @@ void idxCacheIteratorDestroy(Iterate* iter) {
taosMemoryFree
(
iter
);
}
int
i
nde
xCacheSchedToMerge
(
IndexCache
*
pCache
,
bool
notify
)
{
int
i
d
xCacheSchedToMerge
(
IndexCache
*
pCache
,
bool
notify
)
{
SSchedMsg
schedMsg
=
{
0
};
schedMsg
.
fp
=
d
oMergeWork
;
schedMsg
.
fp
=
idxD
oMergeWork
;
schedMsg
.
ahandle
=
pCache
;
if
(
notify
)
{
schedMsg
.
thandle
=
taosMemoryMalloc
(
1
);
...
...
@@ -505,17 +505,17 @@ int indexCacheSchedToMerge(IndexCache* pCache, bool notify) {
return
0
;
}
static
void
i
nde
xCacheMakeRoomForWrite
(
IndexCache
*
cache
)
{
static
void
i
d
xCacheMakeRoomForWrite
(
IndexCache
*
cache
)
{
while
(
true
)
{
if
(
cache
->
occupiedMem
*
MEM_ESTIMATE_RADIO
<
MEM_THRESHOLD
)
{
break
;
}
else
if
(
cache
->
imm
!=
NULL
)
{
// TODO: wake up by condition variable
i
nde
xCacheWait
(
cache
);
i
d
xCacheWait
(
cache
);
}
else
{
bool
quit
=
cache
->
occupiedMem
>=
MEM_SIGNAL_QUIT
?
true
:
false
;
i
nde
xCacheRef
(
cache
);
i
d
xCacheRef
(
cache
);
cache
->
imm
=
cache
->
mem
;
cache
->
mem
=
idxInternalCacheCreate
(
cache
->
type
);
cache
->
mem
->
pCache
=
cache
;
...
...
@@ -525,18 +525,18 @@ static void indexCacheMakeRoomForWrite(IndexCache* cache) {
}
// sched to merge
// unref cache in bgwork
i
nde
xCacheSchedToMerge
(
cache
,
quit
);
i
d
xCacheSchedToMerge
(
cache
,
quit
);
}
}
}
int
i
nde
xCachePut
(
void
*
cache
,
SIndexTerm
*
term
,
uint64_t
uid
)
{
int
i
d
xCachePut
(
void
*
cache
,
SIndexTerm
*
term
,
uint64_t
uid
)
{
if
(
cache
==
NULL
)
{
return
-
1
;
}
bool
hasJson
=
INDEX_TYPE_CONTAIN_EXTERN_TYPE
(
term
->
colType
,
TSDB_DATA_TYPE_JSON
);
IndexCache
*
pCache
=
cache
;
i
nde
xCacheRef
(
pCache
);
i
d
xCacheRef
(
pCache
);
// encode data
CacheTerm
*
ct
=
taosMemoryCalloc
(
1
,
sizeof
(
CacheTerm
));
if
(
cache
==
NULL
)
{
...
...
@@ -559,7 +559,7 @@ int indexCachePut(void* cache, SIndexTerm* term, uint64_t uid) {
taosThreadMutexLock
(
&
pCache
->
mtx
);
pCache
->
occupiedMem
+=
estimate
;
i
nde
xCacheMakeRoomForWrite
(
pCache
);
i
d
xCacheMakeRoomForWrite
(
pCache
);
MemTable
*
tbl
=
pCache
->
mem
;
idxMemRef
(
tbl
);
tSkipListPut
(
tbl
->
mem
,
(
char
*
)
ct
);
...
...
@@ -567,29 +567,29 @@ int indexCachePut(void* cache, SIndexTerm* term, uint64_t uid) {
taosThreadMutexUnlock
(
&
pCache
->
mtx
);
i
nde
xCacheUnRef
(
pCache
);
i
d
xCacheUnRef
(
pCache
);
return
0
;
// encode end
}
void
i
nde
xCacheForceToMerge
(
void
*
cache
)
{
void
i
d
xCacheForceToMerge
(
void
*
cache
)
{
IndexCache
*
pCache
=
cache
;
i
nde
xCacheRef
(
pCache
);
i
d
xCacheRef
(
pCache
);
taosThreadMutexLock
(
&
pCache
->
mtx
);
indexInfo
(
"%p is forced to merge into tfile"
,
pCache
);
pCache
->
occupiedMem
+=
MEM_SIGNAL_QUIT
;
i
nde
xCacheMakeRoomForWrite
(
pCache
);
i
d
xCacheMakeRoomForWrite
(
pCache
);
taosThreadMutexUnlock
(
&
pCache
->
mtx
);
i
nde
xCacheUnRef
(
pCache
);
i
d
xCacheUnRef
(
pCache
);
return
;
}
int
i
nde
xCacheDel
(
void
*
cache
,
const
char
*
fieldValue
,
int32_t
fvlen
,
uint64_t
uid
,
int8_t
operType
)
{
int
i
d
xCacheDel
(
void
*
cache
,
const
char
*
fieldValue
,
int32_t
fvlen
,
uint64_t
uid
,
int8_t
operType
)
{
IndexCache
*
pCache
=
cache
;
return
0
;
}
static
int32_t
i
nde
xQueryMem
(
MemTable
*
mem
,
SIndexTermQuery
*
query
,
SIdxTRslt
*
tr
,
STermValueType
*
s
)
{
static
int32_t
i
d
xQueryMem
(
MemTable
*
mem
,
SIndexTermQuery
*
query
,
SIdxTRslt
*
tr
,
STermValueType
*
s
)
{
if
(
mem
==
NULL
)
{
return
0
;
}
...
...
@@ -603,7 +603,7 @@ static int32_t indexQueryMem(MemTable* mem, SIndexTermQuery* query, SIdxTRslt* t
return
cacheSearch
[
0
][
qtype
](
mem
,
term
,
tr
,
s
);
}
}
int
i
nde
xCacheSearch
(
void
*
cache
,
SIndexTermQuery
*
query
,
SIdxTRslt
*
result
,
STermValueType
*
s
)
{
int
i
d
xCacheSearch
(
void
*
cache
,
SIndexTermQuery
*
query
,
SIdxTRslt
*
result
,
STermValueType
*
s
)
{
int64_t
st
=
taosGetTimestampUs
();
if
(
cache
==
NULL
)
{
return
0
;
...
...
@@ -618,10 +618,10 @@ int indexCacheSearch(void* cache, SIndexTermQuery* query, SIdxTRslt* result, STe
idxMemRef
(
imm
);
taosThreadMutexUnlock
(
&
pCache
->
mtx
);
int
ret
=
(
mem
&&
mem
->
mem
)
?
i
nde
xQueryMem
(
mem
,
query
,
result
,
s
)
:
0
;
int
ret
=
(
mem
&&
mem
->
mem
)
?
i
d
xQueryMem
(
mem
,
query
,
result
,
s
)
:
0
;
if
(
ret
==
0
&&
*
s
!=
kTypeDeletion
)
{
// continue search in imm
ret
=
(
imm
&&
imm
->
mem
)
?
i
nde
xQueryMem
(
imm
,
query
,
result
,
s
)
:
0
;
ret
=
(
imm
&&
imm
->
mem
)
?
i
d
xQueryMem
(
imm
,
query
,
result
,
s
)
:
0
;
}
idxMemUnRef
(
mem
);
...
...
@@ -631,20 +631,20 @@ int indexCacheSearch(void* cache, SIndexTermQuery* query, SIdxTRslt* result, STe
return
ret
;
}
void
i
nde
xCacheRef
(
IndexCache
*
cache
)
{
void
i
d
xCacheRef
(
IndexCache
*
cache
)
{
if
(
cache
==
NULL
)
{
return
;
}
int
ref
=
T_REF_INC
(
cache
);
UNUSED
(
ref
);
}
void
i
nde
xCacheUnRef
(
IndexCache
*
cache
)
{
void
i
d
xCacheUnRef
(
IndexCache
*
cache
)
{
if
(
cache
==
NULL
)
{
return
;
}
int
ref
=
T_REF_DEC
(
cache
);
if
(
ref
==
0
)
{
i
nde
xCacheDestroy
(
cache
);
i
d
xCacheDestroy
(
cache
);
}
}
...
...
@@ -662,7 +662,7 @@ void idxMemUnRef(MemTable* tbl) {
int
ref
=
T_REF_DEC
(
tbl
);
if
(
ref
==
0
)
{
SSkipList
*
slt
=
tbl
->
mem
;
i
nde
xCacheDestroySkiplist
(
slt
);
i
d
xCacheDestroySkiplist
(
slt
);
taosMemoryFree
(
tbl
);
}
}
...
...
@@ -693,15 +693,15 @@ static int32_t idxCacheTermCompare(const void* l, const void* r) {
return
cmp
;
}
static
int
i
nde
xFindCh
(
char
*
a
,
char
c
)
{
static
int
i
d
xFindCh
(
char
*
a
,
char
c
)
{
char
*
p
=
a
;
while
(
*
p
!=
0
&&
*
p
++
!=
c
)
{
}
return
p
-
a
;
}
static
int
idxCacheJsonTermCompareImpl
(
char
*
a
,
char
*
b
)
{
// int alen = i
nde
xFindCh(a, '&');
// int blen = i
nde
xFindCh(b, '&');
// int alen = i
d
xFindCh(a, '&');
// int blen = i
d
xFindCh(b, '&');
// int cmp = strncmp(a, b, MIN(alen, blen));
// if (cmp == 0) {
...
...
@@ -742,7 +742,7 @@ static MemTable* idxInternalCacheCreate(int8_t type) {
return
tbl
;
}
static
void
d
oMergeWork
(
SSchedMsg
*
msg
)
{
static
void
idxD
oMergeWork
(
SSchedMsg
*
msg
)
{
IndexCache
*
pCache
=
msg
->
ahandle
;
SIndex
*
sidx
=
(
SIndex
*
)
pCache
->
index
;
...
...
@@ -771,7 +771,7 @@ static bool idxCacheIteratorNext(Iterate* itera) {
return
next
;
}
static
IterateValue
*
i
nde
xCacheIteratorGetValue
(
Iterate
*
iter
)
{
static
IterateValue
*
i
d
xCacheIteratorGetValue
(
Iterate
*
iter
)
{
// opt later
return
&
iter
->
val
;
}
source/libs/index/src/indexTfile.c
浏览文件 @
eab330c0
...
...
@@ -118,7 +118,7 @@ TFileCache* tfileCacheCreate(const char* path) {
ICacheKey
key
=
{.
suid
=
header
->
suid
,
.
colName
=
header
->
colName
,
.
nColName
=
(
int32_t
)
strlen
(
header
->
colName
)};
char
buf
[
128
]
=
{
0
};
int32_t
sz
=
i
nde
xSerialCacheKey
(
&
key
,
buf
);
int32_t
sz
=
i
d
xSerialCacheKey
(
&
key
,
buf
);
assert
(
sz
<
sizeof
(
buf
));
taosHashPut
(
tcache
->
tableCache
,
buf
,
sz
,
&
reader
,
sizeof
(
void
*
));
tfileReaderRef
(
reader
);
...
...
@@ -149,7 +149,7 @@ void tfileCacheDestroy(TFileCache* tcache) {
TFileReader
*
tfileCacheGet
(
TFileCache
*
tcache
,
ICacheKey
*
key
)
{
char
buf
[
128
]
=
{
0
};
int32_t
sz
=
i
nde
xSerialCacheKey
(
key
,
buf
);
int32_t
sz
=
i
d
xSerialCacheKey
(
key
,
buf
);
assert
(
sz
<
sizeof
(
buf
));
TFileReader
**
reader
=
taosHashGet
(
tcache
->
tableCache
,
buf
,
sz
);
if
(
reader
==
NULL
||
*
reader
==
NULL
)
{
...
...
@@ -161,7 +161,7 @@ TFileReader* tfileCacheGet(TFileCache* tcache, ICacheKey* key) {
}
void
tfileCachePut
(
TFileCache
*
tcache
,
ICacheKey
*
key
,
TFileReader
*
reader
)
{
char
buf
[
128
]
=
{
0
};
int32_t
sz
=
i
nde
xSerialCacheKey
(
key
,
buf
);
int32_t
sz
=
i
d
xSerialCacheKey
(
key
,
buf
);
// remove last version index reader
TFileReader
**
p
=
taosHashGet
(
tcache
->
tableCache
,
buf
,
sz
);
if
(
p
!=
NULL
&&
*
p
!=
NULL
)
{
...
...
@@ -620,7 +620,7 @@ void tfileWriterDestroy(TFileWriter* tw) {
taosMemoryFree
(
tw
);
}
IndexTFile
*
i
nde
xTFileCreate
(
const
char
*
path
)
{
IndexTFile
*
i
d
xTFileCreate
(
const
char
*
path
)
{
TFileCache
*
cache
=
tfileCacheCreate
(
path
);
if
(
cache
==
NULL
)
{
return
NULL
;
...
...
@@ -635,7 +635,7 @@ IndexTFile* indexTFileCreate(const char* path) {
tfile
->
cache
=
cache
;
return
tfile
;
}
void
i
nde
xTFileDestroy
(
IndexTFile
*
tfile
)
{
void
i
d
xTFileDestroy
(
IndexTFile
*
tfile
)
{
if
(
tfile
==
NULL
)
{
return
;
}
...
...
@@ -644,7 +644,7 @@ void indexTFileDestroy(IndexTFile* tfile) {
taosMemoryFree
(
tfile
);
}
int
i
nde
xTFileSearch
(
void
*
tfile
,
SIndexTermQuery
*
query
,
SIdxTRslt
*
result
)
{
int
i
d
xTFileSearch
(
void
*
tfile
,
SIndexTermQuery
*
query
,
SIdxTRslt
*
result
)
{
int
ret
=
-
1
;
if
(
tfile
==
NULL
)
{
return
ret
;
...
...
@@ -667,7 +667,7 @@ int indexTFileSearch(void* tfile, SIndexTermQuery* query, SIdxTRslt* result) {
return
tfileReaderSearch
(
reader
,
query
,
result
);
}
int
i
nde
xTFilePut
(
void
*
tfile
,
SIndexTerm
*
term
,
uint64_t
uid
)
{
int
i
d
xTFilePut
(
void
*
tfile
,
SIndexTerm
*
term
,
uint64_t
uid
)
{
// TFileWriterOpt wOpt = {.suid = term->suid, .colType = term->colType, .colName = term->colName, .nColName =
// term->nColName, .version = 1};
...
...
source/libs/index/test/indexTests.cc
浏览文件 @
eab330c0
...
...
@@ -521,10 +521,10 @@ class CacheObj {
public:
CacheObj
()
{
// TODO
cache
=
i
nde
xCacheCreate
(
NULL
,
0
,
"voltage"
,
TSDB_DATA_TYPE_BINARY
);
cache
=
i
d
xCacheCreate
(
NULL
,
0
,
"voltage"
,
TSDB_DATA_TYPE_BINARY
);
}
int
Put
(
SIndexTerm
*
term
,
int16_t
colId
,
int32_t
version
,
uint64_t
uid
)
{
int
ret
=
i
nde
xCachePut
(
cache
,
term
,
uid
);
int
ret
=
i
d
xCachePut
(
cache
,
term
,
uid
);
if
(
ret
!=
0
)
{
//
std
::
cout
<<
"failed to put into cache: "
<<
ret
<<
std
::
endl
;
...
...
@@ -533,12 +533,12 @@ class CacheObj {
}
void
Debug
()
{
//
i
nde
xCacheDebug
(
cache
);
i
d
xCacheDebug
(
cache
);
}
int
Get
(
SIndexTermQuery
*
query
,
int16_t
colId
,
int32_t
version
,
SArray
*
result
,
STermValueType
*
s
)
{
SIdxTRslt
*
tr
=
idxTRsltCreate
();
int
ret
=
i
nde
xCacheSearch
(
cache
,
query
,
tr
,
s
);
int
ret
=
i
d
xCacheSearch
(
cache
,
query
,
tr
,
s
);
idxTRsltMergeTo
(
tr
,
result
);
idxTRsltDestroy
(
tr
);
...
...
@@ -549,7 +549,7 @@ class CacheObj {
}
~
CacheObj
()
{
// TODO
i
nde
xCacheDestroy
(
cache
);
i
d
xCacheDestroy
(
cache
);
}
private:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录