Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
52bedb2b
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
提交
52bedb2b
编写于
8月 30, 2022
作者:
wafwerar
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feature: shell csv rfc 4180
上级
c5f270ab
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
51 addition
and
51 deletion
+51
-51
tools/shell/src/shellWebsocket.c
tools/shell/src/shellWebsocket.c
+51
-51
未找到文件。
tools/shell/src/shellWebsocket.c
浏览文件 @
52bedb2b
...
...
@@ -18,19 +18,19 @@
#include "shellInt.h"
int
shell_conn_ws_server
(
bool
first
)
{
shell
.
ws_conn
=
ws_connect_with_dsn
(
shell
.
args
.
dsn
);
if
(
!
shell
.
ws_conn
)
{
fprintf
(
stderr
,
"failed to connect %s, reason: %s
\n
"
,
shell
.
args
.
dsn
,
ws_errstr
(
NULL
));
return
-
1
;
}
if
(
first
&&
shell
.
args
.
restful
)
{
fprintf
(
stdout
,
"successfully connect to %s
\n\n
"
,
shell
.
args
.
dsn
);
}
else
if
(
first
&&
shell
.
args
.
cloud
)
{
fprintf
(
stdout
,
"successfully connect to cloud service
\n
"
);
}
return
0
;
shell
.
ws_conn
=
ws_connect_with_dsn
(
shell
.
args
.
dsn
);
if
(
!
shell
.
ws_conn
)
{
fprintf
(
stderr
,
"failed to connect %s, reason: %s
\n
"
,
shell
.
args
.
dsn
,
ws_errstr
(
NULL
));
return
-
1
;
}
if
(
first
&&
shell
.
args
.
restful
)
{
fprintf
(
stdout
,
"successfully connect to %s
\n\n
"
,
shell
.
args
.
dsn
);
}
else
if
(
first
&&
shell
.
args
.
cloud
)
{
fprintf
(
stdout
,
"successfully connect to cloud service
\n
"
);
}
return
0
;
}
static
int
horizontalPrintWebsocket
(
WS_RES
*
wres
,
double
*
execute_time
)
{
...
...
@@ -39,7 +39,7 @@ static int horizontalPrintWebsocket(WS_RES* wres, double* execute_time) {
ws_fetch_block
(
wres
,
&
data
,
&
rows
);
*
execute_time
+=
(
double
)(
ws_take_timing
(
wres
)
/
1E6
);
if
(
!
rows
)
{
return
0
;
return
0
;
}
int
num_fields
=
ws_field_count
(
wres
);
TAOS_FIELD
*
fields
=
(
TAOS_FIELD
*
)
ws_fetch_fields
(
wres
);
...
...
@@ -64,7 +64,7 @@ static int horizontalPrintWebsocket(WS_RES* wres, double* execute_time) {
putchar
(
' '
);
putchar
(
'|'
);
}
putchar
(
'\r'
);
putchar
(
'\r'
);
putchar
(
'\n'
);
}
numOfRows
+=
rows
;
...
...
@@ -79,7 +79,7 @@ static int verticalPrintWebsocket(WS_RES* wres, double* pexecute_time) {
ws_fetch_block
(
wres
,
&
data
,
&
rows
);
*
pexecute_time
+=
(
double
)(
ws_take_timing
(
wres
)
/
1E6
);
if
(
!
rows
)
{
return
0
;
return
0
;
}
int
num_fields
=
ws_field_count
(
wres
);
TAOS_FIELD
*
fields
=
(
TAOS_FIELD
*
)
ws_fetch_fields
(
wres
);
...
...
@@ -98,7 +98,7 @@ static int verticalPrintWebsocket(WS_RES* wres, double* pexecute_time) {
uint32_t
len
;
for
(
int
i
=
0
;
i
<
rows
;
i
++
)
{
printf
(
"*************************** %d.row ***************************
\n
"
,
numOfRows
+
1
);
numOfRows
+
1
);
for
(
int
j
=
0
;
j
<
num_fields
;
j
++
)
{
TAOS_FIELD
*
field
=
fields
+
j
;
int
padding
=
(
int
)(
maxColNameLen
-
strlen
(
field
->
name
));
...
...
@@ -121,7 +121,7 @@ static int dumpWebsocketToFile(const char* fname, WS_RES* wres, double* pexecute
}
TdFilePtr
pFile
=
taosOpenFile
(
fullname
,
TD_FILE_CREATE
|
TD_FILE_WRITE
|
TD_FILE_TRUNC
|
TD_FILE_STREAM
);
TD_FILE_CREATE
|
TD_FILE_WRITE
|
TD_FILE_TRUNC
|
TD_FILE_STREAM
);
if
(
pFile
==
NULL
)
{
fprintf
(
stderr
,
"failed to open file: %s
\r\n
"
,
fullname
);
return
-
1
;
...
...
@@ -132,7 +132,7 @@ static int dumpWebsocketToFile(const char* fname, WS_RES* wres, double* pexecute
*
pexecute_time
+=
(
double
)(
ws_take_timing
(
wres
)
/
1E6
);
if
(
!
rows
)
{
taosCloseFile
(
&
pFile
);
return
0
;
return
0
;
}
int
numOfRows
=
0
;
TAOS_FIELD
*
fields
=
(
TAOS_FIELD
*
)
ws_fetch_fields
(
wres
);
...
...
@@ -207,7 +207,7 @@ void shellRunSingleCommandWebsocketImp(char *command) {
}
if
(
!
shell
.
ws_conn
&&
shell_conn_ws_server
(
0
))
{
return
;
return
;
}
shell
.
stop_query
=
false
;
...
...
@@ -216,16 +216,16 @@ void shellRunSingleCommandWebsocketImp(char *command) {
WS_RES
*
res
=
ws_query_timeout
(
shell
.
ws_conn
,
command
,
shell
.
args
.
timeout
);
int
code
=
ws_errno
(
res
);
if
(
code
!=
0
)
{
et
=
taosGetTimestampUs
();
fprintf
(
stderr
,
"
\n
DB: error: %s (%.6fs)
\n
"
,
ws_errstr
(
res
),
(
et
-
st
)
/
1E6
);
if
(
code
==
TSDB_CODE_WS_SEND_TIMEOUT
||
code
==
TSDB_CODE_WS_RECV_TIMEOUT
)
{
fprintf
(
stderr
,
"Hint: use -t to increase the timeout in seconds
\n
"
);
}
else
if
(
code
==
TSDB_CODE_WS_INTERNAL_ERRO
||
code
==
TSDB_CODE_WS_CLOSED
)
{
fprintf
(
stderr
,
"TDengine server is down, will try to reconnect
\n
"
);
shell
.
ws_conn
=
NULL
;
}
ws_free_result
(
res
);
return
;
et
=
taosGetTimestampUs
();
fprintf
(
stderr
,
"
\n
DB: error: %s (%.6fs)
\n
"
,
ws_errstr
(
res
),
(
et
-
st
)
/
1E6
);
if
(
code
==
TSDB_CODE_WS_SEND_TIMEOUT
||
code
==
TSDB_CODE_WS_RECV_TIMEOUT
)
{
fprintf
(
stderr
,
"Hint: use -t to increase the timeout in seconds
\n
"
);
}
else
if
(
code
==
TSDB_CODE_WS_INTERNAL_ERRO
||
code
==
TSDB_CODE_WS_CLOSED
)
{
fprintf
(
stderr
,
"TDengine server is down, will try to reconnect
\n
"
);
shell
.
ws_conn
=
NULL
;
}
ws_free_result
(
res
);
return
;
}
double
execute_time
=
ws_take_timing
(
res
)
/
1E6
;
...
...
@@ -233,36 +233,36 @@ void shellRunSingleCommandWebsocketImp(char *command) {
if
(
shellRegexMatch
(
command
,
"^
\\
s*use
\\
s+[a-zA-Z0-9_]+
\\
s*;
\\
s*$"
,
REG_EXTENDED
|
REG_ICASE
))
{
fprintf
(
stdout
,
"Database changed.
\r\n\r\n
"
);
fflush
(
stdout
);
ws_free_result
(
res
);
ws_free_result
(
res
);
return
;
}
int
numOfRows
=
0
;
if
(
ws_is_update_query
(
res
))
{
numOfRows
=
ws_affected_rows
(
res
);
et
=
taosGetTimestampUs
();
numOfRows
=
ws_affected_rows
(
res
);
et
=
taosGetTimestampUs
();
double
total_time
=
(
et
-
st
)
/
1E3
;
double
net_time
=
total_time
-
(
double
)
execute_time
;
printf
(
"Query Ok, %d of %d row(s) in database
\n
"
,
numOfRows
,
numOfRows
);
printf
(
"Query Ok, %d of %d row(s) in database
\n
"
,
numOfRows
,
numOfRows
);
printf
(
"Execute: %.2f ms Network: %.2f ms Total: %.2f ms
\n
"
,
execute_time
,
net_time
,
total_time
);
}
else
{
int
error_no
=
0
;
numOfRows
=
shellDumpWebsocket
(
res
,
fname
,
&
error_no
,
printMode
,
&
execute_time
);
if
(
numOfRows
<
0
)
{
ws_free_result
(
res
);
return
;
}
et
=
taosGetTimestampUs
();
double
total_time
=
(
et
-
st
)
/
1E3
;
double
net_time
=
total_time
-
execute_time
;
if
(
error_no
==
0
&&
!
shell
.
stop_query
)
{
printf
(
"Query OK, %d row(s) in set
\n
"
,
numOfRows
);
printf
(
"Execute: %.2f ms Network: %.2f ms Total: %.2f ms
\n
"
,
execute_time
,
net_time
,
total_time
);
}
else
{
printf
(
"Query interrupted, %d row(s) in set (%.6fs)
\n
"
,
numOfRows
,
(
et
-
st
)
/
1E6
);
printf
(
"Execute: %.2f ms Network: %.2f ms Total: %.2f ms
\n
"
,
execute_time
,
net_time
,
total_time
);
}
int
error_no
=
0
;
numOfRows
=
shellDumpWebsocket
(
res
,
fname
,
&
error_no
,
printMode
,
&
execute_time
);
if
(
numOfRows
<
0
)
{
ws_free_result
(
res
);
return
;
}
et
=
taosGetTimestampUs
();
double
total_time
=
(
et
-
st
)
/
1E3
;
double
net_time
=
total_time
-
execute_time
;
if
(
error_no
==
0
&&
!
shell
.
stop_query
)
{
printf
(
"Query OK, %d row(s) in set
\n
"
,
numOfRows
);
printf
(
"Execute: %.2f ms Network: %.2f ms Total: %.2f ms
\n
"
,
execute_time
,
net_time
,
total_time
);
}
else
{
printf
(
"Query interrupted, %d row(s) in set (%.6fs)
\n
"
,
numOfRows
,
(
et
-
st
)
/
1E6
);
printf
(
"Execute: %.2f ms Network: %.2f ms Total: %.2f ms
\n
"
,
execute_time
,
net_time
,
total_time
);
}
}
printf
(
"
\n
"
);
ws_free_result
(
res
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录