Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
9a3770c0
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看板
提交
9a3770c0
编写于
1月 08, 2021
作者:
H
Hui Li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-2658]<fix> read table name error because the length of each row was not read
上级
2f11010b
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
103 addition
and
24 deletion
+103
-24
src/kit/taosdemox/CMakeLists.txt
src/kit/taosdemox/CMakeLists.txt
+25
-0
src/kit/taosdemox/insert.json
src/kit/taosdemox/insert.json
+2
-1
src/kit/taosdemox/taosdemox.c
src/kit/taosdemox/taosdemox.c
+76
-23
未找到文件。
src/kit/taosdemox/CMakeLists.txt
0 → 100644
浏览文件 @
9a3770c0
CMAKE_MINIMUM_REQUIRED
(
VERSION 2.8
)
PROJECT
(
TDengine
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/client/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/deps/libcurl/include
)
IF
(
TD_LINUX
)
AUX_SOURCE_DIRECTORY
(
. SRC
)
ADD_EXECUTABLE
(
taosdemox
${
SRC
}
)
#find_program(HAVE_CURL NAMES curl)
IF
((
NOT TD_ARM_64
)
AND
(
NOT TD_ARM_32
))
ADD_DEFINITIONS
(
-DTD_LOWA_CURL
)
LINK_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/deps/libcurl/lib
)
ADD_LIBRARY
(
curl STATIC IMPORTED
)
SET_PROPERTY
(
TARGET curl PROPERTY IMPORTED_LOCATION
${
TD_COMMUNITY_DIR
}
/deps/libcurl/lib/libcurl.a
)
TARGET_LINK_LIBRARIES
(
taosdemox curl
)
ENDIF
()
IF
(
TD_SOMODE_STATIC
)
TARGET_LINK_LIBRARIES
(
taosdemox taos_static cJson
)
ELSE
()
TARGET_LINK_LIBRARIES
(
taosdemox taos cJson
)
ENDIF
()
ENDIF
()
src/kit/taosdemox/insert.json
浏览文件 @
9a3770c0
...
...
@@ -5,7 +5,8 @@
"port"
:
6030
,
"user"
:
"root"
,
"password"
:
"taosdata"
,
"thread_count"
:
2
,
"thread_count"
:
4
,
"thread_count_create_tbl"
:
1
,
"result_file"
:
"./insert_res.txt"
,
"databases"
:
[{
"dbinfo"
:
{
...
...
src/kit/taosdemox/taosdemox.c
浏览文件 @
9a3770c0
...
...
@@ -93,9 +93,6 @@ extern char configDir[];
#define MAX_QUERY_SQL_COUNT 10
#define MAX_QUERY_SQL_LENGTH 256
#define MAX_LINE_COUNT_IN_MEM 10000
typedef
enum
CREATE_SUB_TALBE_MOD_EN
{
PRE_CREATE_SUBTBL
,
AUTO_CREATE_SUBTBL
,
...
...
@@ -259,6 +256,7 @@ typedef struct SDbs_S {
bool
queryMode
;
int
threadCount
;
int
threadCountByCreateTbl
;
int
dbCount
;
SDataBase
db
[
MAX_DB_COUNT
];
...
...
@@ -1418,7 +1416,6 @@ static int getAllChildNameOfSuperTable(TAOS * taos, char* dbName, char* sTblName
char
command
[
BUFFER_SIZE
]
=
"
\0
"
;
TAOS_RES
*
res
;
TAOS_ROW
row
=
NULL
;
int
count
=
0
;
char
*
childTblName
=
*
childTblNameOfSuperTbl
;
...
...
@@ -1434,11 +1431,12 @@ static int getAllChildNameOfSuperTable(TAOS * taos, char* dbName, char* sTblName
}
int
childTblCount
=
10000
;
count
=
0
;
int
count
=
0
;
childTblName
=
(
char
*
)
calloc
(
1
,
childTblCount
*
TSDB_TABLE_NAME_LEN
);
char
*
pTblName
=
childTblName
;
while
((
row
=
taos_fetch_row
(
res
))
!=
NULL
)
{
strncpy
(
pTblName
,
(
char
*
)
row
[
0
],
TSDB_TABLE_NAME_LEN
);
int32_t
*
len
=
taos_fetch_lengths
(
res
);
strncpy
(
pTblName
,
(
char
*
)
row
[
0
],
len
[
0
]);
//printf("==== sub table name: %s\n", pTblName);
count
++
;
if
(
count
>=
childTblCount
-
1
)
{
...
...
@@ -1829,33 +1827,59 @@ static void createChildTables() {
if
((
AUTO_CREATE_SUBTBL
==
g_Dbs
.
db
[
i
].
superTbls
[
j
].
autoCreateTable
)
||
(
TBL_ALREADY_EXISTS
==
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblExists
))
{
continue
;
}
startMultiThreadCreateChildTable
(
g_Dbs
.
db
[
i
].
superTbls
[
j
].
colsOfCreatChildTable
,
g_Dbs
.
threadCount
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblCount
,
g_Dbs
.
db
[
i
].
dbName
,
&
(
g_Dbs
.
db
[
i
].
superTbls
[
j
]));
startMultiThreadCreateChildTable
(
g_Dbs
.
db
[
i
].
superTbls
[
j
].
colsOfCreatChildTable
,
g_Dbs
.
threadCount
ByCreateTbl
,
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblCount
,
g_Dbs
.
db
[
i
].
dbName
,
&
(
g_Dbs
.
db
[
i
].
superTbls
[
j
]));
g_totalChildTables
+=
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblCount
;
}
}
}
/*
static int taosGetLineNum(const char *fileName)
{
int lineNum = 0;
char cmd[1024] = { 0 };
char buf[1024] = { 0 };
sprintf(cmd, "wc -l %s", fileName);
FILE *fp = popen(cmd, "r");
if (fp == NULL) {
fprintf(stderr, "ERROR: failed to execute:%s, error:%s\n", cmd, strerror(errno));
return lineNum;
}
if (fgets(buf, sizeof(buf), fp)) {
int index = strchr((const char*)buf, ' ') - buf;
buf[index] = '\0';
lineNum = atoi(buf);
}
pclose(fp);
return lineNum;
}
*/
/*
Read 10000 lines at most. If more than 10000 lines, continue to read after using
*/
int
readTagFromCsvFileToMem
(
SSuperTable
*
sup
t
erTblInfo
)
{
int
readTagFromCsvFileToMem
(
SSuperTable
*
superTblInfo
)
{
size_t
n
=
0
;
ssize_t
readLen
=
0
;
char
*
line
=
NULL
;
FILE
*
fp
=
fopen
(
sup
t
erTblInfo
->
tagsFile
,
"r"
);
FILE
*
fp
=
fopen
(
superTblInfo
->
tagsFile
,
"r"
);
if
(
fp
==
NULL
)
{
printf
(
"Failed to open tags file: %s, reason:%s
\n
"
,
sup
t
erTblInfo
->
tagsFile
,
strerror
(
errno
));
printf
(
"Failed to open tags file: %s, reason:%s
\n
"
,
superTblInfo
->
tagsFile
,
strerror
(
errno
));
return
-
1
;
}
if
(
sup
t
erTblInfo
->
tagDataBuf
)
{
free
(
sup
t
erTblInfo
->
tagDataBuf
);
sup
t
erTblInfo
->
tagDataBuf
=
NULL
;
if
(
superTblInfo
->
tagDataBuf
)
{
free
(
superTblInfo
->
tagDataBuf
);
superTblInfo
->
tagDataBuf
=
NULL
;
}
supterTblInfo
->
tagDataBuf
=
calloc
(
supterTblInfo
->
lenOfTagOfOneRow
*
MAX_LINE_COUNT_IN_MEM
,
1
);
if
(
supterTblInfo
->
tagDataBuf
==
NULL
)
{
int
tagCount
=
10000
;
int
count
=
0
;
char
*
tagDataBuf
=
calloc
(
1
,
superTblInfo
->
lenOfTagOfOneRow
*
tagCount
);
if
(
tagDataBuf
==
NULL
)
{
printf
(
"Failed to calloc, reason:%s
\n
"
,
strerror
(
errno
));
fclose
(
fp
);
return
-
1
;
...
...
@@ -1870,20 +1894,35 @@ int readTagFromCsvFileToMem(SSuperTable * supterTblInfo) {
continue
;
}
memcpy
(
supterTblInfo
->
tagDataBuf
+
supterTblInfo
->
tagSampleCount
*
supt
erTblInfo
->
lenOfTagOfOneRow
,
line
,
readLen
);
supterTblInfo
->
tagSampleC
ount
++
;
memcpy
(
tagDataBuf
+
count
*
sup
erTblInfo
->
lenOfTagOfOneRow
,
line
,
readLen
);
c
ount
++
;
if
(
supterTblInfo
->
tagSampleCount
>=
MAX_LINE_COUNT_IN_MEM
)
{
break
;
if
(
count
>=
tagCount
-
1
)
{
char
*
tmp
=
realloc
(
tagDataBuf
,
(
size_t
)
tagCount
*
1
.
5
*
superTblInfo
->
lenOfTagOfOneRow
);
if
(
tmp
!=
NULL
)
{
tagDataBuf
=
tmp
;
tagCount
=
(
int
)(
tagCount
*
1
.
5
);
memset
(
tagDataBuf
+
count
*
superTblInfo
->
lenOfTagOfOneRow
,
0
,
(
size_t
)((
tagCount
-
count
)
*
superTblInfo
->
lenOfTagOfOneRow
));
}
else
{
// exit, if allocate more memory failed
printf
(
"realloc fail for save tag val from %s
\n
"
,
superTblInfo
->
tagsFile
);
tmfree
(
tagDataBuf
);
free
(
line
);
fclose
(
fp
);
return
-
1
;
}
}
}
superTblInfo
->
tagDataBuf
=
tagDataBuf
;
superTblInfo
->
tagSampleCount
=
count
;
free
(
line
);
fclose
(
fp
);
return
0
;
}
int
readSampleFromJsonFileToMem
(
SSuperTable
*
sup
t
erTblInfo
)
{
int
readSampleFromJsonFileToMem
(
SSuperTable
*
superTblInfo
)
{
// TODO
return
0
;
}
...
...
@@ -2139,6 +2178,16 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
goto
PARSE_OVER
;
}
cJSON
*
threads2
=
cJSON_GetObjectItem
(
root
,
"thread_count_create_tbl"
);
if
(
threads2
&&
threads2
->
type
==
cJSON_Number
)
{
g_Dbs
.
threadCountByCreateTbl
=
threads2
->
valueint
;
}
else
if
(
!
threads2
)
{
g_Dbs
.
threadCountByCreateTbl
=
1
;
}
else
{
printf
(
"failed to read json, threads2 not found"
);
goto
PARSE_OVER
;
}
cJSON
*
dbs
=
cJSON_GetObjectItem
(
root
,
"databases"
);
if
(
!
dbs
||
dbs
->
type
!=
cJSON_Array
)
{
printf
(
"failed to read json, databases not found
\n
"
);
...
...
@@ -3008,6 +3057,10 @@ void postFreeResource() {
free
(
g_Dbs
.
db
[
i
].
superTbls
[
j
].
sampleDataBuf
);
g_Dbs
.
db
[
i
].
superTbls
[
j
].
sampleDataBuf
=
NULL
;
}
if
(
0
!=
g_Dbs
.
db
[
i
].
superTbls
[
j
].
tagDataBuf
)
{
free
(
g_Dbs
.
db
[
i
].
superTbls
[
j
].
tagDataBuf
);
g_Dbs
.
db
[
i
].
superTbls
[
j
].
tagDataBuf
=
NULL
;
}
if
(
0
!=
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblName
)
{
free
(
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblName
);
g_Dbs
.
db
[
i
].
superTbls
[
j
].
childTblName
=
NULL
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录