Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
13a2e489
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
13a2e489
编写于
9月 26, 2022
作者:
Z
zhihaop
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: nTables != nBlocks because incorrect use of compareSName
上级
1453db3a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
28 addition
and
21 deletion
+28
-21
src/client/inc/tscBatchMerge.h
src/client/inc/tscBatchMerge.h
+1
-1
src/client/src/tscBatchMerge.c
src/client/src/tscBatchMerge.c
+26
-20
src/client/src/tscBatchWrite.c
src/client/src/tscBatchWrite.c
+1
-0
未找到文件。
src/client/inc/tscBatchMerge.h
浏览文件 @
13a2e489
...
...
@@ -68,7 +68,7 @@ typedef struct STableDataBlocksListBuilder {
*/
typedef
struct
STableNameListBuilder
{
// store the unsorted table names, SArray<SName*>.
SArray
*
tableNames
;
SArray
*
pTableNameList
;
}
STableNameListBuilder
;
/**
...
...
src/client/src/tscBatchMerge.c
浏览文件 @
13a2e489
...
...
@@ -18,13 +18,13 @@
/**
* A util function to compare two SName.
*/
static
int32_t
compareSName
(
const
void
*
x
,
const
void
*
y
)
{
SName
*
left
=
*
((
SName
**
)
x
);
SName
*
right
=
*
((
SName
**
)
y
);
static
int32_t
compareSName
(
const
void
*
left
,
const
void
*
right
)
{
if
(
left
==
right
)
{
return
0
;
}
return
strncmp
((
const
char
*
)
left
,
(
const
char
*
)
right
,
sizeof
(
SName
));
SName
*
x
=
*
(
SName
**
)
left
;
SName
*
y
=
*
(
SName
**
)
right
;
return
memcmp
(
x
,
y
,
sizeof
(
SName
));
}
/**
...
...
@@ -67,21 +67,22 @@ inline static SSubmitBlkBuilder* computeIfAbsentSSubmitBlkBuilder(SSubmitMsgBloc
return
blocksBuilder
;
}
SName
**
buildSTableNameListBuilder
(
STableNameListBuilder
*
builder
,
size_t
*
n
umOf
Tables
)
{
if
(
!
taosArrayGetSize
(
builder
->
tableNames
))
{
*
n
umOf
Tables
=
0
;
SName
**
buildSTableNameListBuilder
(
STableNameListBuilder
*
builder
,
size_t
*
nTables
)
{
if
(
!
taosArrayGetSize
(
builder
->
pTableNameList
))
{
*
nTables
=
0
;
return
NULL
;
}
// sort and unique.
taosArraySort
(
builder
->
tableNames
,
compareSName
);
taosArraySort
(
builder
->
pTableNameList
,
compareSName
);
size_t
tail
=
0
;
for
(
size_t
i
=
1
;
i
<
taosArrayGetSize
(
builder
->
tableNames
);
++
i
)
{
SName
*
last
=
taosArrayGetP
(
builder
->
tableNames
,
tail
);
SName
*
current
=
taosArrayGetP
(
builder
->
tableNames
,
i
);
if
(
compareSName
(
last
,
current
)
!=
0
)
{
size_t
nNames
=
taosArrayGetSize
(
builder
->
pTableNameList
);
for
(
size_t
i
=
1
;
i
<
nNames
;
++
i
)
{
SName
*
last
=
taosArrayGetP
(
builder
->
pTableNameList
,
tail
);
SName
*
current
=
taosArrayGetP
(
builder
->
pTableNameList
,
i
);
if
(
memcmp
(
last
,
current
,
sizeof
(
SName
))
!=
0
)
{
++
tail
;
taosArraySet
(
builder
->
tableNames
,
tail
,
&
current
);
taosArraySet
(
builder
->
pTableNameList
,
tail
,
&
current
);
}
}
...
...
@@ -97,11 +98,11 @@ SName** buildSTableNameListBuilder(STableNameListBuilder* builder, size_t* numOf
if
(
!
clone
)
{
goto
error
;
}
memcpy
(
clone
,
taosArrayGetP
(
builder
->
tableNames
,
i
),
sizeof
(
SName
));
memcpy
(
clone
,
taosArrayGetP
(
builder
->
pTableNameList
,
i
),
sizeof
(
SName
));
tableNames
[
i
]
=
clone
;
}
*
n
umOf
Tables
=
tail
+
1
;
*
nTables
=
tail
+
1
;
return
tableNames
;
error:
...
...
@@ -437,8 +438,8 @@ STableNameListBuilder* createSTableNameListBuilder() {
return
NULL
;
}
builder
->
tableNames
=
taosArrayInit
(
1
,
sizeof
(
SName
*
));
if
(
!
builder
->
tableNames
)
{
builder
->
pTableNameList
=
taosArrayInit
(
1
,
sizeof
(
SName
*
));
if
(
!
builder
->
pTableNameList
)
{
free
(
builder
);
return
NULL
;
}
...
...
@@ -450,12 +451,12 @@ void destroySTableNameListBuilder(STableNameListBuilder* builder) {
if
(
!
builder
)
{
return
;
}
taosArrayDestroy
(
&
builder
->
tableNames
);
taosArrayDestroy
(
&
builder
->
pTableNameList
);
free
(
builder
);
}
bool
insertSTableNameListBuilder
(
STableNameListBuilder
*
builder
,
SName
*
name
)
{
return
taosArrayPush
(
builder
->
tableNames
,
&
name
);
return
taosArrayPush
(
builder
->
pTableNameList
,
&
name
);
}
int32_t
tscMergeSSqlObjs
(
SSqlObj
**
polls
,
size_t
nPolls
,
SSqlObj
*
result
)
{
...
...
@@ -525,7 +526,12 @@ int32_t tscMergeSSqlObjs(SSqlObj** polls, size_t nPolls, SSqlObj* result) {
destroySTableNameListBuilder
(
nameListBuilder
);
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
assert
(
nTables
==
nBlocks
);
if
(
nTables
!=
nBlocks
)
{
destroySTableDataBlocksListBuilder
(
builder
);
destroySTableNameListBuilder
(
nameListBuilder
);
return
TSDB_CODE_TSC_INVALID_OPERATION
;
}
// replace table name list.
if
(
pInsertParam
->
pTableNameList
)
{
...
...
src/client/src/tscBatchWrite.c
浏览文件 @
13a2e489
...
...
@@ -497,6 +497,7 @@ SAsyncBatchWriteDispatcher* dispatcherAcquire(SDispatcherManager* manager) {
}
SAsyncBatchWriteDispatcher
*
value
=
pthread_getspecific
(
manager
->
key
);
printf
(
"acquire thread local"
);
if
(
value
)
{
return
value
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录