Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
93396bca
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
93396bca
编写于
7月 17, 2021
作者:
sangshuduo
提交者:
GitHub
7月 17, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD5065]<feature>: taosdemo nano second support (#6902)
上级
91774fda
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
1438 addition
and
1421 deletion
+1438
-1421
src/kit/taosdemo/taosdemo.c
src/kit/taosdemo/taosdemo.c
+1438
-1421
未找到文件。
src/kit/taosdemo/taosdemo.c
浏览文件 @
93396bca
...
@@ -54,6 +54,7 @@
...
@@ -54,6 +54,7 @@
#include "tutil.h"
#include "tutil.h"
#define STMT_IFACE_ENABLED 1
#define STMT_IFACE_ENABLED 1
#define NANO_SECOND_ENABLED 1
#define REQ_EXTRA_BUF_LEN 1024
#define REQ_EXTRA_BUF_LEN 1024
#define RESP_BUF_LEN 4096
#define RESP_BUF_LEN 4096
...
@@ -66,13 +67,6 @@ extern char configDir[];
...
@@ -66,13 +67,6 @@ extern char configDir[];
#define STR_INSERT_INTO "INSERT INTO "
#define STR_INSERT_INTO "INSERT INTO "
enum
TEST_MODE
{
INSERT_TEST
,
// 0
QUERY_TEST
,
// 1
SUBSCRIBE_TEST
,
// 2
INVAID_TEST
};
#define MAX_RECORDS_PER_REQ 32766
#define MAX_RECORDS_PER_REQ 32766
#define HEAD_BUFF_LEN TSDB_MAX_COLUMNS*24 // 16*MAX_COLUMNS + (192+32)*2 + insert into ..
#define HEAD_BUFF_LEN TSDB_MAX_COLUMNS*24 // 16*MAX_COLUMNS + (192+32)*2 + insert into ..
...
@@ -105,6 +99,13 @@ enum TEST_MODE {
...
@@ -105,6 +99,13 @@ enum TEST_MODE {
#define DEFAULT_TIMESTAMP_STEP 1
#define DEFAULT_TIMESTAMP_STEP 1
enum
TEST_MODE
{
INSERT_TEST
,
// 0
QUERY_TEST
,
// 1
SUBSCRIBE_TEST
,
// 2
INVAID_TEST
};
typedef
enum
CREATE_SUB_TALBE_MOD_EN
{
typedef
enum
CREATE_SUB_TALBE_MOD_EN
{
PRE_CREATE_SUBTBL
,
PRE_CREATE_SUBTBL
,
AUTO_CREATE_SUBTBL
,
AUTO_CREATE_SUBTBL
,
...
@@ -228,7 +229,7 @@ typedef struct SArguments_S {
...
@@ -228,7 +229,7 @@ typedef struct SArguments_S {
int64_t
num_of_DPT
;
int64_t
num_of_DPT
;
int
abort
;
int
abort
;
uint32_t
disorderRatio
;
// 0: no disorder, >0: x%
uint32_t
disorderRatio
;
// 0: no disorder, >0: x%
int
disorderRange
;
// ms
or us by
database precision
int
disorderRange
;
// ms
, us or ns. accordig to
database precision
uint32_t
method_of_delete
;
uint32_t
method_of_delete
;
char
**
arg_list
;
char
**
arg_list
;
uint64_t
totalInsertRows
;
uint64_t
totalInsertRows
;
...
@@ -256,10 +257,10 @@ typedef struct SSuperTable_S {
...
@@ -256,10 +257,10 @@ typedef struct SSuperTable_S {
int64_t
childTblLimit
;
int64_t
childTblLimit
;
uint64_t
childTblOffset
;
uint64_t
childTblOffset
;
// int multiThreadWriteOneTbl; // 0: no, 1: yes
// int multiThreadWriteOneTbl; // 0: no, 1: yes
uint32_t
interlaceRows
;
//
uint32_t
interlaceRows
;
//
int
disorderRatio
;
// 0: no disorder, >0: x%
int
disorderRatio
;
// 0: no disorder, >0: x%
int
disorderRange
;
// ms or us by
database precision
int
disorderRange
;
// ms, us or ns. according to
database precision
uint64_t
maxSqlLen
;
//
uint64_t
maxSqlLen
;
//
uint64_t
insertInterval
;
// insert interval, will override global insert interval
uint64_t
insertInterval
;
// insert interval, will override global insert interval
...
@@ -317,7 +318,7 @@ typedef struct {
...
@@ -317,7 +318,7 @@ typedef struct {
}
SDbInfo
;
}
SDbInfo
;
typedef
struct
SDbCfg_S
{
typedef
struct
SDbCfg_S
{
// int maxtablesPerVnode;
// int maxtablesPerVnode;
uint32_t
minRows
;
// 0 means default
uint32_t
minRows
;
// 0 means default
uint32_t
maxRows
;
// 0 means default
uint32_t
maxRows
;
// 0 means default
int
comp
;
int
comp
;
...
@@ -1513,7 +1514,10 @@ static int printfInsertMeta() {
...
@@ -1513,7 +1514,10 @@ static int printfInsertMeta() {
}
}
if
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
[
0
]
!=
0
)
{
if
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
[
0
]
!=
0
)
{
if
((
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"ms"
,
2
))
if
((
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"ms"
,
2
))
||
(
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"us"
,
2
)))
{
#if NANO_SECOND_ENABLED == 1
||
(
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"us"
,
2
))
#endif
||
(
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"ns"
,
2
)))
{
printf
(
" precision:
\033
[33m%s
\033
[0m
\n
"
,
printf
(
" precision:
\033
[33m%s
\033
[0m
\n
"
,
g_Dbs
.
db
[
i
].
dbCfg
.
precision
);
g_Dbs
.
db
[
i
].
dbCfg
.
precision
);
}
else
{
}
else
{
...
@@ -1703,6 +1707,9 @@ static void printfInsertMetaToFile(FILE* fp) {
...
@@ -1703,6 +1707,9 @@ static void printfInsertMetaToFile(FILE* fp) {
}
}
if
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
[
0
]
!=
0
)
{
if
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
[
0
]
!=
0
)
{
if
((
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"ms"
,
2
))
if
((
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"ms"
,
2
))
#if NANO_SECOND_ENABLED == 1
||
(
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"ns"
,
2
))
#endif
||
(
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"us"
,
2
)))
{
||
(
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"us"
,
2
)))
{
fprintf
(
fp
,
" precision: %s
\n
"
,
fprintf
(
fp
,
" precision: %s
\n
"
,
g_Dbs
.
db
[
i
].
dbCfg
.
precision
);
g_Dbs
.
db
[
i
].
dbCfg
.
precision
);
...
@@ -1903,10 +1910,12 @@ static void printfQueryMeta() {
...
@@ -1903,10 +1910,12 @@ static void printfQueryMeta() {
static
char
*
formatTimestamp
(
char
*
buf
,
int64_t
val
,
int
precision
)
{
static
char
*
formatTimestamp
(
char
*
buf
,
int64_t
val
,
int
precision
)
{
time_t
tt
;
time_t
tt
;
if
(
precision
==
TSDB_TIME_PRECISION_NANO
)
{
if
(
precision
==
TSDB_TIME_PRECISION_MICRO
)
{
tt
=
(
time_t
)(
val
/
1000000000
);
}
else
if
(
precision
==
TSDB_TIME_PRECISION_MICRO
)
{
tt
=
(
time_t
)(
val
/
1000000
);
tt
=
(
time_t
)(
val
/
1000000
);
#if NANO_SECOND_ENABLED == 1
}
if
(
precision
==
TSDB_TIME_PRECISION_NANO
)
{
tt
=
(
time_t
)(
val
/
1000000000
);
#endif
}
else
{
}
else
{
tt
=
(
time_t
)(
val
/
1000
);
tt
=
(
time_t
)(
val
/
1000
);
}
}
...
@@ -1926,10 +1935,12 @@ static char* formatTimestamp(char* buf, int64_t val, int precision) {
...
@@ -1926,10 +1935,12 @@ static char* formatTimestamp(char* buf, int64_t val, int precision) {
struct
tm
*
ptm
=
localtime
(
&
tt
);
struct
tm
*
ptm
=
localtime
(
&
tt
);
size_t
pos
=
strftime
(
buf
,
32
,
"%Y-%m-%d %H:%M:%S"
,
ptm
);
size_t
pos
=
strftime
(
buf
,
32
,
"%Y-%m-%d %H:%M:%S"
,
ptm
);
if
(
precision
==
TSDB_TIME_PRECISION_NANO
)
{
if
(
precision
==
TSDB_TIME_PRECISION_MICRO
)
{
sprintf
(
buf
+
pos
,
".%09d"
,
(
int
)(
val
%
1000000000
));
}
else
if
(
precision
==
TSDB_TIME_PRECISION_MICRO
)
{
sprintf
(
buf
+
pos
,
".%06d"
,
(
int
)(
val
%
1000000
));
sprintf
(
buf
+
pos
,
".%06d"
,
(
int
)(
val
%
1000000
));
#if NANO_SECOND_ENABLED == 1
}
else
if
(
precision
==
TSDB_TIME_PRECISION_NANO
)
{
sprintf
(
buf
+
pos
,
".%09d"
,
(
int
)(
val
%
1000000000
));
#endif
}
else
{
}
else
{
sprintf
(
buf
+
pos
,
".%03d"
,
(
int
)(
val
%
1000
));
sprintf
(
buf
+
pos
,
".%03d"
,
(
int
)(
val
%
1000
));
}
}
...
@@ -2953,6 +2964,10 @@ static int createDatabasesAndStables() {
...
@@ -2953,6 +2964,10 @@ static int createDatabasesAndStables() {
" fsync %d"
,
g_Dbs
.
db
[
i
].
dbCfg
.
fsync
);
" fsync %d"
,
g_Dbs
.
db
[
i
].
dbCfg
.
fsync
);
}
}
if
((
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"ms"
,
strlen
(
"ms"
)))
if
((
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"ms"
,
strlen
(
"ms"
)))
#if NANO_SECOND_ENABLED == 1
||
(
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"ns"
,
strlen
(
"ns"
)))
#endif
||
(
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
||
(
0
==
strncasecmp
(
g_Dbs
.
db
[
i
].
dbCfg
.
precision
,
"us"
,
strlen
(
"us"
))))
{
"us"
,
strlen
(
"us"
))))
{
dataLen
+=
snprintf
(
command
+
dataLen
,
BUFFER_SIZE
-
dataLen
,
dataLen
+=
snprintf
(
command
+
dataLen
,
BUFFER_SIZE
-
dataLen
,
...
@@ -4140,7 +4155,7 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
...
@@ -4140,7 +4155,7 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
__func__
,
__LINE__
);
__func__
,
__LINE__
);
goto
PARSE_OVER
;
goto
PARSE_OVER
;
}
}
/*
/*
cJSON *multiThreadWriteOneTbl =
cJSON *multiThreadWriteOneTbl =
cJSON_GetObjectItem(stbInfo, "multi_thread_write_one_tbl"); // no , yes
cJSON_GetObjectItem(stbInfo, "multi_thread_write_one_tbl"); // no , yes
if (multiThreadWriteOneTbl
if (multiThreadWriteOneTbl
...
@@ -4157,7 +4172,7 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
...
@@ -4157,7 +4172,7 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
printf("ERROR: failed to read json, multiThreadWriteOneTbl not found\n");
printf("ERROR: failed to read json, multiThreadWriteOneTbl not found\n");
goto PARSE_OVER;
goto PARSE_OVER;
}
}
*/
*/
cJSON
*
insertRows
=
cJSON_GetObjectItem
(
stbInfo
,
"insert_rows"
);
cJSON
*
insertRows
=
cJSON_GetObjectItem
(
stbInfo
,
"insert_rows"
);
if
(
insertRows
&&
insertRows
->
type
==
cJSON_Number
)
{
if
(
insertRows
&&
insertRows
->
type
==
cJSON_Number
)
{
if
(
insertRows
->
valueint
<
0
)
{
if
(
insertRows
->
valueint
<
0
)
{
...
@@ -6541,8 +6556,10 @@ static void startMultiThreadInsertData(int threads, char* db_name,
...
@@ -6541,8 +6556,10 @@ static void startMultiThreadInsertData(int threads, char* db_name,
timePrec
=
TSDB_TIME_PRECISION_MILLI
;
timePrec
=
TSDB_TIME_PRECISION_MILLI
;
}
else
if
(
0
==
strncasecmp
(
precision
,
"us"
,
2
))
{
}
else
if
(
0
==
strncasecmp
(
precision
,
"us"
,
2
))
{
timePrec
=
TSDB_TIME_PRECISION_MICRO
;
timePrec
=
TSDB_TIME_PRECISION_MICRO
;
#if NANO_SECOND_ENABLED == 1
}
else
if
(
0
==
strncasecmp
(
precision
,
"ns"
,
2
))
{
}
else
if
(
0
==
strncasecmp
(
precision
,
"ns"
,
2
))
{
timePrec
=
TSDB_TIME_PRECISION_NANO
;
timePrec
=
TSDB_TIME_PRECISION_NANO
;
#endif
}
else
{
}
else
{
errorPrint
(
"Not support precision: %s
\n
"
,
precision
);
errorPrint
(
"Not support precision: %s
\n
"
,
precision
);
exit
(
-
1
);
exit
(
-
1
);
...
@@ -6761,19 +6778,19 @@ static void startMultiThreadInsertData(int threads, char* db_name,
...
@@ -6761,19 +6778,19 @@ static void startMultiThreadInsertData(int threads, char* db_name,
pThreadInfo
->
taos
=
NULL
;
pThreadInfo
->
taos
=
NULL
;
}
}
/* if ((NULL == superTblInfo)
/* if ((NULL == superTblInfo)
|| (0 == superTblInfo->multiThreadWriteOneTbl)) {
|| (0 == superTblInfo->multiThreadWriteOneTbl)) {
*/
*/
pThreadInfo
->
start_table_from
=
tableFrom
;
pThreadInfo
->
start_table_from
=
tableFrom
;
pThreadInfo
->
ntables
=
i
<
b
?
a
+
1
:
a
;
pThreadInfo
->
ntables
=
i
<
b
?
a
+
1
:
a
;
pThreadInfo
->
end_table_to
=
i
<
b
?
tableFrom
+
a
:
tableFrom
+
a
-
1
;
pThreadInfo
->
end_table_to
=
i
<
b
?
tableFrom
+
a
:
tableFrom
+
a
-
1
;
tableFrom
=
pThreadInfo
->
end_table_to
+
1
;
tableFrom
=
pThreadInfo
->
end_table_to
+
1
;
/* } else {
/* } else {
pThreadInfo->start_table_from = 0;
pThreadInfo->start_table_from = 0;
pThreadInfo->ntables = superTblInfo->childTblCount;
pThreadInfo->ntables = superTblInfo->childTblCount;
pThreadInfo->start_time = pThreadInfo->start_time + rand_int() % 10000 - rand_tinyint();
pThreadInfo->start_time = pThreadInfo->start_time + rand_int() % 10000 - rand_tinyint();
}
}
*/
*/
tsem_init
(
&
(
pThreadInfo
->
lock_sem
),
0
,
0
);
tsem_init
(
&
(
pThreadInfo
->
lock_sem
),
0
,
0
);
if
(
ASYNC_MODE
==
g_Dbs
.
asyncMode
)
{
if
(
ASYNC_MODE
==
g_Dbs
.
asyncMode
)
{
pthread_create
(
pids
+
i
,
NULL
,
asyncWrite
,
pThreadInfo
);
pthread_create
(
pids
+
i
,
NULL
,
asyncWrite
,
pThreadInfo
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录