Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
2aad923b
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1184
Star
22015
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
2aad923b
编写于
12月 14, 2022
作者:
D
dapan1121
提交者:
GitHub
12月 14, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #18927 from taosdata/fix/TD-21101
fix: refact some example files
上级
473338cf
360282e5
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
1040 addition
and
413 deletion
+1040
-413
examples/c/CMakeLists.txt
examples/c/CMakeLists.txt
+27
-40
examples/c/asyncdemo.c
examples/c/asyncdemo.c
+4
-4
examples/c/demo.c
examples/c/demo.c
+1
-1
examples/c/epoll.c
examples/c/epoll.c
+0
-304
examples/c/makefile
examples/c/makefile
+7
-8
examples/c/prepare.c
examples/c/prepare.c
+34
-15
examples/c/schemaless.c
examples/c/schemaless.c
+11
-25
examples/c/stream_demo.c
examples/c/stream_demo.c
+5
-2
examples/c/tmq.c
examples/c/tmq.c
+12
-8
source/libs/catalog/src/ctgCache.c
source/libs/catalog/src/ctgCache.c
+1
-1
source/libs/scheduler/src/schStatus.c
source/libs/scheduler/src/schStatus.c
+1
-1
source/libs/scheduler/src/scheduler.c
source/libs/scheduler/src/scheduler.c
+1
-1
tests/script/api/api_with_reqid_test.c
tests/script/api/api_with_reqid_test.c
+0
-0
tests/script/api/apitest.c
tests/script/api/apitest.c
+936
-0
tests/script/api/demoapi.c
tests/script/api/demoapi.c
+0
-3
未找到文件。
examples/c/CMakeLists.txt
浏览文件 @
2aad923b
...
@@ -3,19 +3,13 @@ PROJECT(TDengine)
...
@@ -3,19 +3,13 @@ PROJECT(TDengine)
IF
(
TD_LINUX
)
IF
(
TD_LINUX
)
INCLUDE_DIRECTORIES
(
.
${
TD_SOURCE_DIR
}
/src/inc
${
TD_SOURCE_DIR
}
/src/client/inc
${
TD_SOURCE_DIR
}
/inc
)
INCLUDE_DIRECTORIES
(
.
${
TD_SOURCE_DIR
}
/src/inc
${
TD_SOURCE_DIR
}
/src/client/inc
${
TD_SOURCE_DIR
}
/inc
)
AUX_SOURCE_DIRECTORY
(
. SRC
)
AUX_SOURCE_DIRECTORY
(
. SRC
)
# ADD_EXECUTABLE(demo apitest.c)
#TARGET_LINK_LIBRARIES(demo taos_static trpc tutil pthread )
#ADD_EXECUTABLE(sml schemaless.c)
#TARGET_LINK_LIBRARIES(sml taos_static trpc tutil pthread )
#ADD_EXECUTABLE(subscribe subscribe.c)
#TARGET_LINK_LIBRARIES(subscribe taos_static trpc tutil pthread )
#ADD_EXECUTABLE(epoll epoll.c)
#TARGET_LINK_LIBRARIES(epoll taos_static trpc tutil pthread lua)
add_executable
(
tmq
""
)
add_executable
(
tmq
""
)
add_executable
(
stream_demo
""
)
add_executable
(
stream_demo
""
)
add_executable
(
demoapi
""
)
add_executable
(
schemaless
""
)
add_executable
(
api_reqid
""
)
add_executable
(
prepare
""
)
add_executable
(
demo
""
)
add_executable
(
asyncdemo
""
)
target_sources
(
tmq
target_sources
(
tmq
PRIVATE
PRIVATE
...
@@ -27,16 +21,25 @@ IF (TD_LINUX)
...
@@ -27,16 +21,25 @@ IF (TD_LINUX)
"stream_demo.c"
"stream_demo.c"
)
)
target_sources
(
demoapi
target_sources
(
schemaless
PRIVATE
PRIVATE
"
demoapi
.c"
"
schemaless
.c"
)
)
target_sources
(
api_reqid
target_sources
(
prepare
PRIVATE
PRIVATE
"
api_with_reqid_test
.c"
"
prepare
.c"
)
)
target_sources
(
demo
PRIVATE
"demo.c"
)
target_sources
(
asyncdemo
PRIVATE
"asyncdemo.c"
)
target_link_libraries
(
tmq
target_link_libraries
(
tmq
taos_static
taos_static
...
@@ -46,46 +49,30 @@ IF (TD_LINUX)
...
@@ -46,46 +49,30 @@ IF (TD_LINUX)
taos_static
taos_static
)
)
target_link_libraries
(
demoapi
target_link_libraries
(
schemaless
taos_static
taos_static
)
)
target_link_libraries
(
api_reqid
target_link_libraries
(
prepare
taos_static
taos_static
)
)
target_link_libraries
(
demo
target_include_directories
(
tmq
taos_static
PUBLIC
"
${
TD_SOURCE_DIR
}
/include/os"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/inc"
)
target_include_directories
(
stream_demo
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/inc"
)
target_include_directories
(
demoapi
PUBLIC
"
${
TD_SOURCE_DIR
}
/include/client"
PUBLIC
"
${
TD_SOURCE_DIR
}
/include/os"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/inc"
)
)
target_include_directories
(
api_reqid
target_link_libraries
(
asyncdemo
PUBLIC
"
${
TD_SOURCE_DIR
}
/include/client"
taos_static
PUBLIC
"
${
TD_SOURCE_DIR
}
/include/os"
PRIVATE
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/inc"
)
)
SET_TARGET_PROPERTIES
(
tmq PROPERTIES OUTPUT_NAME tmq
)
SET_TARGET_PROPERTIES
(
tmq PROPERTIES OUTPUT_NAME tmq
)
SET_TARGET_PROPERTIES
(
stream_demo PROPERTIES OUTPUT_NAME stream_demo
)
SET_TARGET_PROPERTIES
(
stream_demo PROPERTIES OUTPUT_NAME stream_demo
)
SET_TARGET_PROPERTIES
(
demoapi PROPERTIES OUTPUT_NAME demoapi
)
SET_TARGET_PROPERTIES
(
schemaless PROPERTIES OUTPUT_NAME schemaless
)
SET_TARGET_PROPERTIES
(
api_reqid PROPERTIES OUTPUT_NAME api_reqid
)
SET_TARGET_PROPERTIES
(
prepare PROPERTIES OUTPUT_NAME prepare
)
SET_TARGET_PROPERTIES
(
demo PROPERTIES OUTPUT_NAME demo
)
SET_TARGET_PROPERTIES
(
asyncdemo PROPERTIES OUTPUT_NAME asyncdemo
)
ENDIF
()
ENDIF
()
IF
(
TD_DARWIN
)
IF
(
TD_DARWIN
)
INCLUDE_DIRECTORIES
(
.
${
TD_SOURCE_DIR
}
/src/inc
${
TD_SOURCE_DIR
}
/src/client/inc
${
TD_SOURCE_DIR
}
/inc
)
INCLUDE_DIRECTORIES
(
.
${
TD_SOURCE_DIR
}
/src/inc
${
TD_SOURCE_DIR
}
/src/client/inc
${
TD_SOURCE_DIR
}
/inc
)
AUX_SOURCE_DIRECTORY
(
. SRC
)
AUX_SOURCE_DIRECTORY
(
. SRC
)
#ADD_EXECUTABLE(demo demo.c)
#TARGET_LINK_LIBRARIES(demo taos_static trpc tutil pthread lua)
#ADD_EXECUTABLE(epoll epoll.c)
#TARGET_LINK_LIBRARIES(epoll taos_static trpc tutil pthread lua)
ENDIF
()
ENDIF
()
examples/c/asyncdemo.c
浏览文件 @
2aad923b
...
@@ -23,8 +23,8 @@
...
@@ -23,8 +23,8 @@
#include <sys/time.h>
#include <sys/time.h>
#include <unistd.h>
#include <unistd.h>
#include <string.h>
#include <string.h>
#include <inttypes.h>
#include "
../../../include/client/
taos.h"
#include "taos.h"
int
points
=
5
;
int
points
=
5
;
int
numOfTables
=
3
;
int
numOfTables
=
3
;
...
@@ -230,7 +230,7 @@ void taos_insert_call_back(void *param, TAOS_RES *tres, int code)
...
@@ -230,7 +230,7 @@ void taos_insert_call_back(void *param, TAOS_RES *tres, int code)
if
(
tablesInsertProcessed
>=
numOfTables
)
{
if
(
tablesInsertProcessed
>=
numOfTables
)
{
gettimeofday
(
&
systemTime
,
NULL
);
gettimeofday
(
&
systemTime
,
NULL
);
et
=
systemTime
.
tv_sec
*
1000000
+
systemTime
.
tv_usec
;
et
=
systemTime
.
tv_sec
*
1000000
+
systemTime
.
tv_usec
;
printf
(
"%
lld
mseconds to insert %d data points
\n
"
,
(
et
-
st
)
/
1000
,
points
*
numOfTables
);
printf
(
"%
"
PRId64
"
mseconds to insert %d data points
\n
"
,
(
et
-
st
)
/
1000
,
points
*
numOfTables
);
}
}
}
}
...
@@ -267,7 +267,7 @@ void taos_retrieve_call_back(void *param, TAOS_RES *tres, int numOfRows)
...
@@ -267,7 +267,7 @@ void taos_retrieve_call_back(void *param, TAOS_RES *tres, int numOfRows)
if
(
tablesSelectProcessed
>=
numOfTables
)
{
if
(
tablesSelectProcessed
>=
numOfTables
)
{
gettimeofday
(
&
systemTime
,
NULL
);
gettimeofday
(
&
systemTime
,
NULL
);
et
=
systemTime
.
tv_sec
*
1000000
+
systemTime
.
tv_usec
;
et
=
systemTime
.
tv_sec
*
1000000
+
systemTime
.
tv_usec
;
printf
(
"%
lld
mseconds to query %d data rows
\n
"
,
(
et
-
st
)
/
1000
,
points
*
numOfTables
);
printf
(
"%
"
PRId64
"
mseconds to query %d data rows
\n
"
,
(
et
-
st
)
/
1000
,
points
*
numOfTables
);
}
}
taos_free_result
(
tres
);
taos_free_result
(
tres
);
...
...
examples/c/demo.c
浏览文件 @
2aad923b
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include "
../../../include/client/
taos.h" // TAOS header file
#include "taos.h" // TAOS header file
static
void
queryDB
(
TAOS
*
taos
,
char
*
command
)
{
static
void
queryDB
(
TAOS
*
taos
,
char
*
command
)
{
int
i
;
int
i
;
...
...
examples/c/epoll.c
已删除
100644 → 0
浏览文件 @
473338cf
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// how to use to do a pressure-test upon eok
// tester: cat /dev/urandom | nc -c <ip> <port>
// testee: ./debug/build/bin/epoll -l <port> > /dev/null
// compare against: nc -l <port> > /dev/null
// monitor and compare : glances
#ifdef __APPLE__
#include "osEok.h"
#else // __APPLE__
#include <sys/epoll.h>
#endif // __APPLE__
#include <sys/types.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <arpa/inet.h>
#include <libgen.h>
#include <locale.h>
#include <netdb.h>
#define D(fmt, ...) fprintf(stderr, "%s[%d]%s(): " fmt "\n", basename(__FILE__), __LINE__, __func__, ##__VA_ARGS__)
#define A(statement, fmt, ...) do { \
if (statement) break; \
fprintf(stderr, "%s[%d]%s(): assert [%s] failed: %d[%s]: " fmt "\n", \
basename(__FILE__), __LINE__, __func__, \
#statement, errno, strerror(errno), \
##__VA_ARGS__); \
abort(); \
} while (0)
#define E(fmt, ...) do { \
fprintf(stderr, "%s[%d]%s(): %d[%s]: " fmt "\n", \
basename(__FILE__), __LINE__, __func__, \
errno, strerror(errno), \
##__VA_ARGS__); \
} while (0)
#include "os.h"
typedef
struct
ep_s
ep_t
;
struct
ep_s
{
int
ep
;
pthread_mutex_t
lock
;
int
sv
[
2
];
// 0 for read, 1 for write;
pthread_t
thread
;
volatile
unsigned
int
stopping
:
1
;
volatile
unsigned
int
waiting
:
1
;
volatile
unsigned
int
wakenup
:
1
;
};
static
int
ep_dummy
=
0
;
static
ep_t
*
ep_create
(
void
);
static
void
ep_destroy
(
ep_t
*
ep
);
static
void
*
routine
(
void
*
arg
);
static
int
open_listen
(
unsigned
short
port
);
typedef
struct
fde_s
fde_t
;
struct
fde_s
{
int
skt
;
void
(
*
on_event
)(
ep_t
*
ep
,
struct
epoll_event
*
events
,
fde_t
*
client
);
};
static
void
listen_event
(
ep_t
*
ep
,
struct
epoll_event
*
ev
,
fde_t
*
client
);
static
void
null_event
(
ep_t
*
ep
,
struct
epoll_event
*
ev
,
fde_t
*
client
);
#define usage(arg0, fmt, ...) do { \
if (fmt[0]) { \
fprintf(stderr, "" fmt "\n", ##__VA_ARGS__); \
} \
fprintf(stderr, "usage:\n"); \
fprintf(stderr, " %s -l <port> : specify listenning port\n", arg0); \
} while (0)
int
main
(
int
argc
,
char
*
argv
[])
{
char
*
prg
=
basename
(
argv
[
0
]);
if
(
argc
==
1
)
{
usage
(
prg
,
""
);
return
0
;
}
ep_t
*
ep
=
ep_create
();
A
(
ep
,
"failed"
);
for
(
int
i
=
1
;
i
<
argc
;
++
i
)
{
const
char
*
arg
=
argv
[
i
];
if
(
0
==
strcmp
(
arg
,
"-l"
))
{
++
i
;
if
(
i
>=
argc
)
{
usage
(
prg
,
"expecting <port> after -l, but got nothing"
);
return
1
;
// confirmed potential leakage
}
arg
=
argv
[
i
];
int
port
=
atoi
(
arg
);
int
skt
=
open_listen
(
port
);
if
(
skt
==-
1
)
continue
;
fde_t
*
client
=
(
fde_t
*
)
calloc
(
1
,
sizeof
(
*
client
));
if
(
!
client
)
{
E
(
"out of memory"
);
close
(
skt
);
continue
;
}
client
->
skt
=
skt
;
client
->
on_event
=
listen_event
;
struct
epoll_event
ev
=
{
0
};
ev
.
events
=
EPOLLIN
|
EPOLLERR
|
EPOLLHUP
|
EPOLLRDHUP
;
ev
.
data
.
ptr
=
client
;
A
(
0
==
epoll_ctl
(
ep
->
ep
,
EPOLL_CTL_ADD
,
skt
,
&
ev
),
""
);
continue
;
}
usage
(
prg
,
"unknown argument: [%s]"
,
arg
);
return
1
;
}
char
*
line
=
NULL
;
size_t
linecap
=
0
;
ssize_t
linelen
;
while
((
linelen
=
getline
(
&
line
,
&
linecap
,
stdin
))
>
0
)
{
line
[
strlen
(
line
)
-
1
]
=
'\0'
;
if
(
0
==
strcmp
(
line
,
"exit"
))
break
;
if
(
0
==
strcmp
(
line
,
"quit"
))
break
;
if
(
line
==
strstr
(
line
,
"close"
))
{
int
fd
=
0
;
sscanf
(
line
,
"close %d"
,
&
fd
);
if
(
fd
<=
2
)
{
fprintf
(
stderr
,
"fd [%d] invalid
\n
"
,
fd
);
continue
;
}
A
(
0
==
epoll_ctl
(
ep
->
ep
,
EPOLL_CTL_DEL
,
fd
,
NULL
),
""
);
continue
;
}
if
(
strlen
(
line
)
==
0
)
continue
;
fprintf
(
stderr
,
"unknown cmd:[%s]
\n
"
,
line
);
}
ep_destroy
(
ep
);
D
(
""
);
return
0
;
}
ep_t
*
ep_create
(
void
)
{
ep_t
*
ep
=
(
ep_t
*
)
calloc
(
1
,
sizeof
(
*
ep
));
A
(
ep
,
"out of memory"
);
A
(
-
1
!=
(
ep
->
ep
=
epoll_create
(
1
)),
""
);
ep
->
sv
[
0
]
=
-
1
;
ep
->
sv
[
1
]
=
-
1
;
A
(
0
==
socketpair
(
AF_LOCAL
,
SOCK_STREAM
,
0
,
ep
->
sv
),
""
);
A
(
0
==
pthread_mutex_init
(
&
ep
->
lock
,
NULL
),
""
);
A
(
0
==
pthread_mutex_lock
(
&
ep
->
lock
),
""
);
struct
epoll_event
ev
=
{
0
};
ev
.
events
=
EPOLLIN
;
ev
.
data
.
ptr
=
&
ep_dummy
;
A
(
0
==
epoll_ctl
(
ep
->
ep
,
EPOLL_CTL_ADD
,
ep
->
sv
[
0
],
&
ev
),
""
);
A
(
0
==
pthread_create
(
&
ep
->
thread
,
NULL
,
routine
,
ep
),
""
);
A
(
0
==
pthread_mutex_unlock
(
&
ep
->
lock
),
""
);
return
ep
;
}
static
void
ep_destroy
(
ep_t
*
ep
)
{
A
(
ep
,
"invalid argument"
);
ep
->
stopping
=
1
;
A
(
1
==
send
(
ep
->
sv
[
1
],
"1"
,
1
,
0
),
""
);
A
(
0
==
pthread_join
(
ep
->
thread
,
NULL
),
""
);
A
(
0
==
pthread_mutex_destroy
(
&
ep
->
lock
),
""
);
A
(
0
==
close
(
ep
->
sv
[
0
]),
""
);
A
(
0
==
close
(
ep
->
sv
[
1
]),
""
);
A
(
0
==
close
(
ep
->
ep
),
""
);
free
(
ep
);
}
static
void
*
routine
(
void
*
arg
)
{
A
(
arg
,
"invalid argument"
);
ep_t
*
ep
=
(
ep_t
*
)
arg
;
while
(
!
ep
->
stopping
)
{
struct
epoll_event
evs
[
10
];
memset
(
evs
,
0
,
sizeof
(
evs
));
A
(
0
==
pthread_mutex_lock
(
&
ep
->
lock
),
""
);
A
(
ep
->
waiting
==
0
,
"internal logic error"
);
ep
->
waiting
=
1
;
A
(
0
==
pthread_mutex_unlock
(
&
ep
->
lock
),
""
);
int
r
=
epoll_wait
(
ep
->
ep
,
evs
,
sizeof
(
evs
)
/
sizeof
(
evs
[
0
]),
-
1
);
A
(
r
>
0
,
"indefinite epoll_wait shall not timeout:[%d]"
,
r
);
A
(
0
==
pthread_mutex_lock
(
&
ep
->
lock
),
""
);
A
(
ep
->
waiting
==
1
,
"internal logic error"
);
ep
->
waiting
=
0
;
A
(
0
==
pthread_mutex_unlock
(
&
ep
->
lock
),
""
);
for
(
int
i
=
0
;
i
<
r
;
++
i
)
{
struct
epoll_event
*
ev
=
evs
+
i
;
if
(
ev
->
data
.
ptr
==
&
ep_dummy
)
{
char
c
=
'\0'
;
A
(
1
==
recv
(
ep
->
sv
[
0
],
&
c
,
1
,
0
),
"internal logic error"
);
A
(
0
==
pthread_mutex_lock
(
&
ep
->
lock
),
""
);
ep
->
wakenup
=
0
;
A
(
0
==
pthread_mutex_unlock
(
&
ep
->
lock
),
""
);
continue
;
}
A
(
ev
->
data
.
ptr
,
"internal logic error"
);
fde_t
*
client
=
(
fde_t
*
)
ev
->
data
.
ptr
;
client
->
on_event
(
ep
,
ev
,
client
);
continue
;
}
}
return
NULL
;
}
static
int
open_listen
(
unsigned
short
port
)
{
int
r
=
0
;
int
skt
=
socket
(
AF_INET
,
SOCK_STREAM
,
IPPROTO_TCP
);
if
(
skt
==-
1
)
{
E
(
"socket() failed"
);
return
-
1
;
}
do
{
struct
sockaddr_in
si
=
{
0
};
si
.
sin_family
=
AF_INET
;
si
.
sin_addr
.
s_addr
=
inet_addr
(
"0.0.0.0"
);
si
.
sin_port
=
htons
(
port
);
r
=
bind
(
skt
,
(
struct
sockaddr
*
)
&
si
,
sizeof
(
si
));
if
(
r
)
{
E
(
"bind(%u) failed"
,
port
);
break
;
}
r
=
listen
(
skt
,
100
);
if
(
r
)
{
E
(
"listen() failed"
);
break
;
}
memset
(
&
si
,
0
,
sizeof
(
si
));
socklen_t
len
=
sizeof
(
si
);
r
=
getsockname
(
skt
,
(
struct
sockaddr
*
)
&
si
,
&
len
);
if
(
r
)
{
E
(
"getsockname() failed"
);
}
A
(
len
==
sizeof
(
si
),
"internal logic error"
);
D
(
"listenning at: %d"
,
ntohs
(
si
.
sin_port
));
return
skt
;
}
while
(
0
);
close
(
skt
);
return
-
1
;
}
static
void
listen_event
(
ep_t
*
ep
,
struct
epoll_event
*
ev
,
fde_t
*
client
)
{
A
(
ev
->
events
&
EPOLLIN
,
"internal logic error"
);
struct
sockaddr_in
si
=
{
0
};
socklen_t
silen
=
sizeof
(
si
);
int
skt
=
accept
(
client
->
skt
,
(
struct
sockaddr
*
)
&
si
,
&
silen
);
A
(
skt
!=-
1
,
"internal logic error"
);
fde_t
*
server
=
(
fde_t
*
)
calloc
(
1
,
sizeof
(
*
server
));
if
(
!
server
)
{
close
(
skt
);
return
;
}
server
->
skt
=
skt
;
server
->
on_event
=
null_event
;
struct
epoll_event
ee
=
{
0
};
ee
.
events
=
EPOLLIN
|
EPOLLERR
|
EPOLLHUP
|
EPOLLRDHUP
;
ee
.
data
.
ptr
=
server
;
A
(
0
==
epoll_ctl
(
ep
->
ep
,
EPOLL_CTL_ADD
,
skt
,
&
ee
),
""
);
}
static
void
null_event
(
ep_t
*
ep
,
struct
epoll_event
*
ev
,
fde_t
*
client
)
{
if
(
ev
->
events
&
EPOLLIN
)
{
char
buf
[
8192
];
int
n
=
recv
(
client
->
skt
,
buf
,
sizeof
(
buf
),
0
);
A
(
n
>=
0
&&
n
<=
sizeof
(
buf
),
"internal logic error:[%d]"
,
n
);
A
(
n
==
fwrite
(
buf
,
1
,
n
,
stdout
),
"internal logic error"
);
}
if
(
ev
->
events
&
(
EPOLLERR
|
EPOLLHUP
|
EPOLLRDHUP
))
{
A
(
0
==
pthread_mutex_lock
(
&
ep
->
lock
),
""
);
A
(
0
==
epoll_ctl
(
ep
->
ep
,
EPOLL_CTL_DEL
,
client
->
skt
,
NULL
),
""
);
A
(
0
==
pthread_mutex_unlock
(
&
ep
->
lock
),
""
);
close
(
client
->
skt
);
client
->
skt
=
-
1
;
client
->
on_event
=
NULL
;
free
(
client
);
}
}
examples/c/makefile
浏览文件 @
2aad923b
...
@@ -7,22 +7,21 @@ LFLAGS = '-Wl,-rpath,/usr/local/taos/driver/' -ltaos -lpthread -lm -lrt
...
@@ -7,22 +7,21 @@ LFLAGS = '-Wl,-rpath,/usr/local/taos/driver/' -ltaos -lpthread -lm -lrt
CFLAGS
=
-O3
-g
-Wall
-Wno-deprecated
-fPIC
-Wno-unused-result
-Wconversion
\
CFLAGS
=
-O3
-g
-Wall
-Wno-deprecated
-fPIC
-Wno-unused-result
-Wconversion
\
-Wno-char-subscripts
-D_REENTRANT
-Wno-format
-D_REENTRANT
-DLINUX
\
-Wno-char-subscripts
-D_REENTRANT
-Wno-format
-D_REENTRANT
-DLINUX
\
-Wno-unused-function
-D_M_X64
-I
/usr/local/taos/include
-std
=
gnu99
\
-Wno-unused-function
-D_M_X64
-I
/usr/local/taos/include
-std
=
gnu99
\
-I
../../../deps/cJson/inc
-I
/usr/local/include/cjson
all
:
$(TARGET)
all
:
$(TARGET)
exe
:
exe
:
gcc
$(CFLAGS)
./asyncdemo.c
-o
$(ROOT)
asyncdemo
$(LFLAGS)
gcc
$(CFLAGS)
./asyncdemo.c
-o
$(ROOT)
asyncdemo
$(LFLAGS)
gcc
$(CFLAGS)
./demo.c
-o
$(ROOT)
demo
$(LFLAGS)
gcc
$(CFLAGS)
./demo.c
-o
$(ROOT)
demo
$(LFLAGS)
gcc
$(CFLAGS)
./prepare.c
-o
$(ROOT)
prepare
$(LFLAGS)
gcc
$(CFLAGS)
./prepare.c
-o
$(ROOT)
prepare
$(LFLAGS)
gcc
$(CFLAGS)
./stream
.c
-o
$(ROOT)
stream
$(LFLAGS)
gcc
$(CFLAGS)
./stream
_demo.c
-o
$(ROOT)
stream_demo
$(LFLAGS)
gcc
$(CFLAGS)
./
subscribe.c
-o
$(ROOT)
subscribe
$(LFLAGS)
gcc
$(CFLAGS)
./
tmq.c
-o
$(ROOT)
tmq
$(LFLAGS)
gcc
$(CFLAGS)
./
apitest.c
-o
$(ROOT)
apitest
$(LFLAGS)
gcc
$(CFLAGS)
./
schemaless.c
-o
$(ROOT)
schemaless
$(LFLAGS)
clean
:
clean
:
rm
$(ROOT)
asyncdemo
rm
$(ROOT)
asyncdemo
rm
$(ROOT)
demo
rm
$(ROOT)
demo
rm
$(ROOT)
prepare
rm
$(ROOT)
prepare
rm
$(ROOT)
batchprepare
rm
$(ROOT)
stream_demo
rm
$(ROOT)
stream
rm
$(ROOT)
tmq
rm
$(ROOT)
subscribe
rm
$(ROOT)
schemaless
rm
$(ROOT)
apitest
examples/c/prepare.c
浏览文件 @
2aad923b
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include "
../../../include/client/
taos.h"
#include "taos.h"
void
taosMsleep
(
int
mseconds
);
void
taosMsleep
(
int
mseconds
);
...
@@ -70,70 +70,89 @@ int main(int argc, char *argv[])
...
@@ -70,70 +70,89 @@ int main(int argc, char *argv[])
char
blob
[
80
];
char
blob
[
80
];
}
v
=
{
0
};
}
v
=
{
0
};
int32_t
boolLen
=
sizeof
(
int8_t
);
int32_t
sintLen
=
sizeof
(
int16_t
);
int32_t
intLen
=
sizeof
(
int32_t
);
int32_t
bintLen
=
sizeof
(
int64_t
);
int32_t
floatLen
=
sizeof
(
float
);
int32_t
doubleLen
=
sizeof
(
double
);
int32_t
binLen
=
sizeof
(
v
.
bin
);
int32_t
ncharLen
=
30
;
stmt
=
taos_stmt_init
(
taos
);
stmt
=
taos_stmt_init
(
taos
);
TAOS_BIND
params
[
10
];
TAOS_
MULTI_
BIND
params
[
10
];
params
[
0
].
buffer_type
=
TSDB_DATA_TYPE_TIMESTAMP
;
params
[
0
].
buffer_type
=
TSDB_DATA_TYPE_TIMESTAMP
;
params
[
0
].
buffer_length
=
sizeof
(
v
.
ts
);
params
[
0
].
buffer_length
=
sizeof
(
v
.
ts
);
params
[
0
].
buffer
=
&
v
.
ts
;
params
[
0
].
buffer
=
&
v
.
ts
;
params
[
0
].
length
=
&
params
[
0
].
buffer_length
;
params
[
0
].
length
=
&
bintLen
;
params
[
0
].
is_null
=
NULL
;
params
[
0
].
is_null
=
NULL
;
params
[
0
].
num
=
1
;
params
[
1
].
buffer_type
=
TSDB_DATA_TYPE_BOOL
;
params
[
1
].
buffer_type
=
TSDB_DATA_TYPE_BOOL
;
params
[
1
].
buffer_length
=
sizeof
(
v
.
b
);
params
[
1
].
buffer_length
=
sizeof
(
v
.
b
);
params
[
1
].
buffer
=
&
v
.
b
;
params
[
1
].
buffer
=
&
v
.
b
;
params
[
1
].
length
=
&
params
[
1
].
buffer_length
;
params
[
1
].
length
=
&
boolLen
;
params
[
1
].
is_null
=
NULL
;
params
[
1
].
is_null
=
NULL
;
params
[
1
].
num
=
1
;
params
[
2
].
buffer_type
=
TSDB_DATA_TYPE_TINYINT
;
params
[
2
].
buffer_type
=
TSDB_DATA_TYPE_TINYINT
;
params
[
2
].
buffer_length
=
sizeof
(
v
.
v1
);
params
[
2
].
buffer_length
=
sizeof
(
v
.
v1
);
params
[
2
].
buffer
=
&
v
.
v1
;
params
[
2
].
buffer
=
&
v
.
v1
;
params
[
2
].
length
=
&
params
[
2
].
buffer_length
;
params
[
2
].
length
=
&
boolLen
;
params
[
2
].
is_null
=
NULL
;
params
[
2
].
is_null
=
NULL
;
params
[
2
].
num
=
1
;
params
[
3
].
buffer_type
=
TSDB_DATA_TYPE_SMALLINT
;
params
[
3
].
buffer_type
=
TSDB_DATA_TYPE_SMALLINT
;
params
[
3
].
buffer_length
=
sizeof
(
v
.
v2
);
params
[
3
].
buffer_length
=
sizeof
(
v
.
v2
);
params
[
3
].
buffer
=
&
v
.
v2
;
params
[
3
].
buffer
=
&
v
.
v2
;
params
[
3
].
length
=
&
params
[
3
].
buffer_length
;
params
[
3
].
length
=
&
sintLen
;
params
[
3
].
is_null
=
NULL
;
params
[
3
].
is_null
=
NULL
;
params
[
3
].
num
=
1
;
params
[
4
].
buffer_type
=
TSDB_DATA_TYPE_INT
;
params
[
4
].
buffer_type
=
TSDB_DATA_TYPE_INT
;
params
[
4
].
buffer_length
=
sizeof
(
v
.
v4
);
params
[
4
].
buffer_length
=
sizeof
(
v
.
v4
);
params
[
4
].
buffer
=
&
v
.
v4
;
params
[
4
].
buffer
=
&
v
.
v4
;
params
[
4
].
length
=
&
params
[
4
].
buffer_length
;
params
[
4
].
length
=
&
intLen
;
params
[
4
].
is_null
=
NULL
;
params
[
4
].
is_null
=
NULL
;
params
[
4
].
num
=
1
;
params
[
5
].
buffer_type
=
TSDB_DATA_TYPE_BIGINT
;
params
[
5
].
buffer_type
=
TSDB_DATA_TYPE_BIGINT
;
params
[
5
].
buffer_length
=
sizeof
(
v
.
v8
);
params
[
5
].
buffer_length
=
sizeof
(
v
.
v8
);
params
[
5
].
buffer
=
&
v
.
v8
;
params
[
5
].
buffer
=
&
v
.
v8
;
params
[
5
].
length
=
&
params
[
5
].
buffer_length
;
params
[
5
].
length
=
&
bintLen
;
params
[
5
].
is_null
=
NULL
;
params
[
5
].
is_null
=
NULL
;
params
[
5
].
num
=
1
;
params
[
6
].
buffer_type
=
TSDB_DATA_TYPE_FLOAT
;
params
[
6
].
buffer_type
=
TSDB_DATA_TYPE_FLOAT
;
params
[
6
].
buffer_length
=
sizeof
(
v
.
f4
);
params
[
6
].
buffer_length
=
sizeof
(
v
.
f4
);
params
[
6
].
buffer
=
&
v
.
f4
;
params
[
6
].
buffer
=
&
v
.
f4
;
params
[
6
].
length
=
&
params
[
6
].
buffer_length
;
params
[
6
].
length
=
&
floatLen
;
params
[
6
].
is_null
=
NULL
;
params
[
6
].
is_null
=
NULL
;
params
[
6
].
num
=
1
;
params
[
7
].
buffer_type
=
TSDB_DATA_TYPE_DOUBLE
;
params
[
7
].
buffer_type
=
TSDB_DATA_TYPE_DOUBLE
;
params
[
7
].
buffer_length
=
sizeof
(
v
.
f8
);
params
[
7
].
buffer_length
=
sizeof
(
v
.
f8
);
params
[
7
].
buffer
=
&
v
.
f8
;
params
[
7
].
buffer
=
&
v
.
f8
;
params
[
7
].
length
=
&
params
[
7
].
buffer_length
;
params
[
7
].
length
=
&
doubleLen
;
params
[
7
].
is_null
=
NULL
;
params
[
7
].
is_null
=
NULL
;
params
[
7
].
num
=
1
;
params
[
8
].
buffer_type
=
TSDB_DATA_TYPE_BINARY
;
params
[
8
].
buffer_type
=
TSDB_DATA_TYPE_BINARY
;
params
[
8
].
buffer_length
=
sizeof
(
v
.
bin
);
params
[
8
].
buffer_length
=
sizeof
(
v
.
bin
);
params
[
8
].
buffer
=
v
.
bin
;
params
[
8
].
buffer
=
v
.
bin
;
params
[
8
].
length
=
&
params
[
8
].
buffer_length
;
params
[
8
].
length
=
&
binLen
;
params
[
8
].
is_null
=
NULL
;
params
[
8
].
is_null
=
NULL
;
params
[
8
].
num
=
1
;
strcpy
(
v
.
blob
,
"一二三四五六七八九十"
);
strcpy
(
v
.
blob
,
"一二三四五六七八九十"
);
params
[
9
].
buffer_type
=
TSDB_DATA_TYPE_NCHAR
;
params
[
9
].
buffer_type
=
TSDB_DATA_TYPE_NCHAR
;
params
[
9
].
buffer_length
=
s
trlen
(
v
.
blob
);
params
[
9
].
buffer_length
=
s
izeof
(
v
.
blob
);
params
[
9
].
buffer
=
v
.
blob
;
params
[
9
].
buffer
=
v
.
blob
;
params
[
9
].
length
=
&
params
[
9
].
buffer_length
;
params
[
9
].
length
=
&
ncharLen
;
params
[
9
].
is_null
=
NULL
;
params
[
9
].
is_null
=
NULL
;
params
[
9
].
num
=
1
;
int
is_null
=
1
;
char
is_null
=
1
;
sql
=
"insert into m1 values(?,?,?,?,?,?,?,?,?,?)"
;
sql
=
"insert into m1 values(?,?,?,?,?,?,?,?,?,?)"
;
code
=
taos_stmt_prepare
(
stmt
,
sql
,
0
);
code
=
taos_stmt_prepare
(
stmt
,
sql
,
0
);
...
@@ -153,7 +172,7 @@ int main(int argc, char *argv[])
...
@@ -153,7 +172,7 @@ int main(int argc, char *argv[])
v
.
v8
=
(
int64_t
)(
i
*
8
);
v
.
v8
=
(
int64_t
)(
i
*
8
);
v
.
f4
=
(
float
)(
i
*
40
);
v
.
f4
=
(
float
)(
i
*
40
);
v
.
f8
=
(
double
)(
i
*
80
);
v
.
f8
=
(
double
)(
i
*
80
);
for
(
int
j
=
0
;
j
<
sizeof
(
v
.
bin
)
-
1
;
++
j
)
{
for
(
int
j
=
0
;
j
<
sizeof
(
v
.
bin
);
++
j
)
{
v
.
bin
[
j
]
=
(
char
)(
i
+
'0'
);
v
.
bin
[
j
]
=
(
char
)(
i
+
'0'
);
}
}
...
...
examples/c/schemaless.c
浏览文件 @
2aad923b
#include "../../../include/client/taos.h"
#include "taos.h"
#include "os.h"
#include "taoserror.h"
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/time.h>
#include <time.h>
#include <time.h>
#include <unistd.h>
#include <unistd.h>
#include <inttypes.h>
#include <string.h>
int
numSuperTables
=
8
;
int
numSuperTables
=
8
;
int
numChildTables
=
4
;
int
numChildTables
=
4
;
int
numRowsPerChildTable
=
2048
;
int
numRowsPerChildTable
=
2048
;
void
shuffle
(
char
**
lines
,
size_t
n
)
{
if
(
n
>
1
)
{
size_t
i
;
for
(
i
=
0
;
i
<
n
-
1
;
i
++
)
{
size_t
j
=
i
+
taosRand
()
/
(
RAND_MAX
/
(
n
-
i
)
+
1
);
char
*
t
=
lines
[
j
];
lines
[
j
]
=
lines
[
i
];
lines
[
i
]
=
t
;
}
}
}
static
int64_t
getTimeInUs
()
{
static
int64_t
getTimeInUs
()
{
struct
timeval
systemTime
;
struct
timeval
systemTime
;
gettimeofday
(
&
systemTime
,
NULL
);
gettimeofday
(
&
systemTime
,
NULL
);
...
@@ -46,7 +31,7 @@ int main(int argc, char* argv[]) {
...
@@ -46,7 +31,7 @@ int main(int argc, char* argv[]) {
exit
(
1
);
exit
(
1
);
}
}
char
*
info
=
taos_get_server_info
(
taos
);
c
onst
c
har
*
info
=
taos_get_server_info
(
taos
);
printf
(
"server info: %s
\n
"
,
info
);
printf
(
"server info: %s
\n
"
,
info
);
info
=
taos_get_client_info
(
taos
);
info
=
taos_get_client_info
(
taos
);
printf
(
"client info: %s
\n
"
,
info
);
printf
(
"client info: %s
\n
"
,
info
);
...
@@ -61,9 +46,10 @@ int main(int argc, char* argv[]) {
...
@@ -61,9 +46,10 @@ int main(int argc, char* argv[]) {
time_t
ct
=
time
(
0
);
time_t
ct
=
time
(
0
);
int64_t
ts
=
ct
*
1000
;
int64_t
ts
=
ct
*
1000
;
char
*
lineFormat
=
"sta%d,t0=true,t1=127i8,t2=32767i16,t3=%di32,t4=9223372036854775807i64,t9=11.12345f32,t10=22.123456789f64,t11=
\"
binaryTagValue
\"
,t12=L
\"
ncharTagValue
\"
c0=true,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=254u8,c6=32770u16,c7=2147483699u32,c8=9223372036854775899u64,c9=11.12345f32,c10=22.123456789f64,c11=
\"
binaryValue
\"
,c12=L
\"
ncharValue
\"
%
lldms"
;
char
*
lineFormat
=
"sta%d,t0=true,t1=127i8,t2=32767i16,t3=%di32,t4=9223372036854775807i64,t9=11.12345f32,t10=22.123456789f64,t11=
\"
binaryTagValue
\"
,t12=L
\"
ncharTagValue
\"
c0=true,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=254u8,c6=32770u16,c7=2147483699u32,c8=9223372036854775899u64,c9=11.12345f32,c10=22.123456789f64,c11=
\"
binaryValue
\"
,c12=L
\"
ncharValue
\"
%
"
PRId64
;
char
**
lines
=
calloc
(
numSuperTables
*
numChildTables
*
numRowsPerChildTable
,
sizeof
(
char
*
));
int
lineNum
=
numSuperTables
*
numChildTables
*
numRowsPerChildTable
;
char
**
lines
=
calloc
((
size_t
)
lineNum
,
sizeof
(
char
*
));
int
l
=
0
;
int
l
=
0
;
for
(
int
i
=
0
;
i
<
numSuperTables
;
++
i
)
{
for
(
int
i
=
0
;
i
<
numSuperTables
;
++
i
)
{
for
(
int
j
=
0
;
j
<
numChildTables
;
++
j
)
{
for
(
int
j
=
0
;
j
<
numChildTables
;
++
j
)
{
...
@@ -75,13 +61,13 @@ int main(int argc, char* argv[]) {
...
@@ -75,13 +61,13 @@ int main(int argc, char* argv[]) {
}
}
}
}
}
}
//shuffle(lines, numSuperTables * numChildTables * numRowsPerChildTable);
printf
(
"%s
\n
"
,
"begin taos_insert_lines"
);
printf
(
"%s
\n
"
,
"begin taos_insert_lines"
);
int64_t
begin
=
getTimeInUs
();
int64_t
begin
=
getTimeInUs
();
int32_t
code
=
taos_insert_lines
(
taos
,
lines
,
numSuperTables
*
numChildTables
*
numRowsPerChildTable
);
TAOS_RES
*
res
=
taos_schemaless_insert
(
taos
,
lines
,
lineNum
,
TSDB_SML_LINE_PROTOCOL
,
TSDB_SML_TIMESTAMP_MILLI_SECONDS
);
int64_t
end
=
getTimeInUs
();
int64_t
end
=
getTimeInUs
();
printf
(
"code: %d, %s. time used: %"
PRId64
"
\n
"
,
code
,
tstrerror
(
code
),
end
-
begin
);
printf
(
"code: %s. time used: %"
PRId64
"
\n
"
,
taos_errstr
(
res
),
end
-
begin
);
taos_free_result
(
res
);
return
0
;
return
0
;
}
}
examples/c/stream_demo.c
浏览文件 @
2aad923b
...
@@ -108,10 +108,13 @@ int32_t create_stream() {
...
@@ -108,10 +108,13 @@ int32_t create_stream() {
}
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
int
code
;
if
(
argc
>
1
)
{
if
(
argc
>
1
)
{
printf
(
"env init
\n
"
);
printf
(
"env init
\n
"
);
code
=
init_env
();
int
code
=
init_env
();
if
(
code
)
{
return
code
;
}
}
}
create_stream
();
create_stream
();
}
}
examples/c/tmq.c
浏览文件 @
2aad923b
...
@@ -21,9 +21,6 @@
...
@@ -21,9 +21,6 @@
#include "taos.h"
#include "taos.h"
static
int
running
=
1
;
static
int
running
=
1
;
static
char
dbName
[
64
]
=
"tmqdb"
;
static
char
stbName
[
64
]
=
"stb"
;
static
char
topicName
[
64
]
=
"topicname"
;
static
int32_t
msg_process
(
TAOS_RES
*
msg
)
{
static
int32_t
msg_process
(
TAOS_RES
*
msg
)
{
char
buf
[
1024
];
char
buf
[
1024
];
...
@@ -43,7 +40,7 @@ static int32_t msg_process(TAOS_RES* msg) {
...
@@ -43,7 +40,7 @@ static int32_t msg_process(TAOS_RES* msg) {
TAOS_FIELD
*
fields
=
taos_fetch_fields
(
msg
);
TAOS_FIELD
*
fields
=
taos_fetch_fields
(
msg
);
int32_t
numOfFields
=
taos_field_count
(
msg
);
int32_t
numOfFields
=
taos_field_count
(
msg
);
int32_t
*
length
=
taos_fetch_lengths
(
msg
);
//
int32_t* length = taos_fetch_lengths(msg);
int32_t
precision
=
taos_result_precision
(
msg
);
int32_t
precision
=
taos_result_precision
(
msg
);
rows
++
;
rows
++
;
taos_print_row
(
buf
,
row
,
fields
,
numOfFields
);
taos_print_row
(
buf
,
row
,
fields
,
numOfFields
);
...
@@ -62,6 +59,13 @@ static int32_t init_env() {
...
@@ -62,6 +59,13 @@ static int32_t init_env() {
TAOS_RES
*
pRes
;
TAOS_RES
*
pRes
;
// drop database if exists
// drop database if exists
printf
(
"create database
\n
"
);
printf
(
"create database
\n
"
);
pRes
=
taos_query
(
pConn
,
"drop topic topicname"
);
if
(
taos_errno
(
pRes
)
!=
0
)
{
printf
(
"error in drop tmqdb, reason:%s
\n
"
,
taos_errstr
(
pRes
));
return
-
1
;
}
taos_free_result
(
pRes
);
pRes
=
taos_query
(
pConn
,
"drop database if exists tmqdb"
);
pRes
=
taos_query
(
pConn
,
"drop database if exists tmqdb"
);
if
(
taos_errno
(
pRes
)
!=
0
)
{
if
(
taos_errno
(
pRes
)
!=
0
)
{
printf
(
"error in drop tmqdb, reason:%s
\n
"
,
taos_errstr
(
pRes
));
printf
(
"error in drop tmqdb, reason:%s
\n
"
,
taos_errstr
(
pRes
));
...
@@ -249,7 +253,7 @@ int main(int argc, char* argv[]) {
...
@@ -249,7 +253,7 @@ int main(int argc, char* argv[]) {
tmq_t
*
tmq
=
build_consumer
();
tmq_t
*
tmq
=
build_consumer
();
if
(
NULL
==
tmq
)
{
if
(
NULL
==
tmq
)
{
fprintf
(
stderr
,
"
%%
build_consumer() fail!
\n
"
);
fprintf
(
stderr
,
"build_consumer() fail!
\n
"
);
return
-
1
;
return
-
1
;
}
}
...
@@ -259,7 +263,7 @@ int main(int argc, char* argv[]) {
...
@@ -259,7 +263,7 @@ int main(int argc, char* argv[]) {
}
}
if
((
code
=
tmq_subscribe
(
tmq
,
topic_list
)))
{
if
((
code
=
tmq_subscribe
(
tmq
,
topic_list
)))
{
fprintf
(
stderr
,
"
%%
Failed to tmq_subscribe(): %s
\n
"
,
tmq_err2str
(
code
));
fprintf
(
stderr
,
"Failed to tmq_subscribe(): %s
\n
"
,
tmq_err2str
(
code
));
}
}
tmq_list_destroy
(
topic_list
);
tmq_list_destroy
(
topic_list
);
...
@@ -267,9 +271,9 @@ int main(int argc, char* argv[]) {
...
@@ -267,9 +271,9 @@ int main(int argc, char* argv[]) {
code
=
tmq_consumer_close
(
tmq
);
code
=
tmq_consumer_close
(
tmq
);
if
(
code
)
{
if
(
code
)
{
fprintf
(
stderr
,
"
%%
Failed to close consumer: %s
\n
"
,
tmq_err2str
(
code
));
fprintf
(
stderr
,
"Failed to close consumer: %s
\n
"
,
tmq_err2str
(
code
));
}
else
{
}
else
{
fprintf
(
stderr
,
"
%%
Consumer closed
\n
"
);
fprintf
(
stderr
,
"Consumer closed
\n
"
);
}
}
return
0
;
return
0
;
...
...
source/libs/catalog/src/ctgCache.c
浏览文件 @
2aad923b
...
@@ -1728,7 +1728,7 @@ int32_t ctgOpUpdateVgroup(SCtgCacheOperation *operation) {
...
@@ -1728,7 +1728,7 @@ int32_t ctgOpUpdateVgroup(SCtgCacheOperation *operation) {
}
}
if
(
dbInfo
->
vgVersion
<
0
||
taosHashGetSize
(
dbInfo
->
vgHash
)
<=
0
)
{
if
(
dbInfo
->
vgVersion
<
0
||
taosHashGetSize
(
dbInfo
->
vgHash
)
<=
0
)
{
ctg
Error
(
"invalid db vgInfo, dbFName:%s, vgHash:%p, vgVersion:%d, vgHashSize:%d"
,
dbFName
,
dbInfo
->
vgHash
,
ctg
Debug
(
"invalid db vgInfo, dbFName:%s, vgHash:%p, vgVersion:%d, vgHashSize:%d"
,
dbFName
,
dbInfo
->
vgHash
,
dbInfo
->
vgVersion
,
taosHashGetSize
(
dbInfo
->
vgHash
));
dbInfo
->
vgVersion
,
taosHashGetSize
(
dbInfo
->
vgHash
));
CTG_ERR_JRET
(
TSDB_CODE_APP_ERROR
);
CTG_ERR_JRET
(
TSDB_CODE_APP_ERROR
);
}
}
...
...
source/libs/scheduler/src/schStatus.c
浏览文件 @
2aad923b
...
@@ -64,7 +64,7 @@ _return:
...
@@ -64,7 +64,7 @@ _return:
int32_t
schHandleOpBeginEvent
(
int64_t
jobId
,
SSchJob
**
job
,
SCH_OP_TYPE
type
,
SSchedulerReq
*
pReq
)
{
int32_t
schHandleOpBeginEvent
(
int64_t
jobId
,
SSchJob
**
job
,
SCH_OP_TYPE
type
,
SSchedulerReq
*
pReq
)
{
SSchJob
*
pJob
=
schAcquireJob
(
jobId
);
SSchJob
*
pJob
=
schAcquireJob
(
jobId
);
if
(
NULL
==
pJob
)
{
if
(
NULL
==
pJob
)
{
q
Warn
(
"Acquire sch job failed, may be dropped, jobId:0x%"
PRIx64
,
jobId
);
q
Debug
(
"Acquire sch job failed, may be dropped, jobId:0x%"
PRIx64
,
jobId
);
SCH_ERR_RET
(
TSDB_CODE_SCH_STATUS_ERROR
);
SCH_ERR_RET
(
TSDB_CODE_SCH_STATUS_ERROR
);
}
}
...
...
source/libs/scheduler/src/scheduler.c
浏览文件 @
2aad923b
...
@@ -157,7 +157,7 @@ void schedulerFreeJob(int64_t *jobId, int32_t errCode) {
...
@@ -157,7 +157,7 @@ void schedulerFreeJob(int64_t *jobId, int32_t errCode) {
SSchJob
*
pJob
=
schAcquireJob
(
*
jobId
);
SSchJob
*
pJob
=
schAcquireJob
(
*
jobId
);
if
(
NULL
==
pJob
)
{
if
(
NULL
==
pJob
)
{
q
Warn
(
"Acquire sch job failed, may be dropped, jobId:0x%"
PRIx64
,
*
jobId
);
q
Debug
(
"Acquire sch job failed, may be dropped, jobId:0x%"
PRIx64
,
*
jobId
);
return
;
return
;
}
}
...
...
examples/c
/api_with_reqid_test.c
→
tests/script/api
/api_with_reqid_test.c
浏览文件 @
2aad923b
文件已移动
examples/c
/apitest.c
→
tests/script/api
/apitest.c
浏览文件 @
2aad923b
...
@@ -8,7 +8,14 @@
...
@@ -8,7 +8,14 @@
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include <unistd.h>
#include <unistd.h>
#include "../../../include/client/taos.h"
#include "../../include/client/taos.h"
static
int64_t
count
=
10000
;
int64_t
genReqid
()
{
count
+=
100
;
return
count
;
}
static
void
prepare_data
(
TAOS
*
taos
)
{
static
void
prepare_data
(
TAOS
*
taos
)
{
TAOS_RES
*
result
;
TAOS_RES
*
result
;
...
@@ -158,82 +165,6 @@ void subscribe_callback(TAOS_SUB* tsub, TAOS_RES* res, void* param, int code) {
...
@@ -158,82 +165,6 @@ void subscribe_callback(TAOS_SUB* tsub, TAOS_RES* res, void* param, int code) {
printf
(
"%d rows consumed in subscribe_callback
\n
"
,
rows
);
printf
(
"%d rows consumed in subscribe_callback
\n
"
,
rows
);
}
}
static
void
verify_subscribe
(
TAOS
*
taos
)
{
prepare_data
(
taos
);
TAOS_SUB
*
tsub
=
taos_subscribe
(
taos
,
0
,
"test"
,
"select * from meters;"
,
NULL
,
NULL
,
0
);
TAOS_RES
*
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
18
);
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
0
);
TAOS_RES
*
result
;
result
=
taos_query
(
taos
,
"insert into t0 values('2020-01-01 00:02:00.001', 0);"
);
taos_free_result
(
result
);
result
=
taos_query
(
taos
,
"insert into t8 values('2020-01-01 00:01:03.000', 0);"
);
taos_free_result
(
result
);
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
2
);
result
=
taos_query
(
taos
,
"insert into t2 values('2020-01-01 00:01:02.001', 0);"
);
taos_free_result
(
result
);
result
=
taos_query
(
taos
,
"insert into t1 values('2020-01-01 00:03:00.001', 0);"
);
taos_free_result
(
result
);
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
2
);
result
=
taos_query
(
taos
,
"insert into t1 values('2020-01-01 00:03:00.002', 0);"
);
taos_free_result
(
result
);
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
1
);
// keep progress information and restart subscription
taos_unsubscribe
(
tsub
,
1
);
result
=
taos_query
(
taos
,
"insert into t0 values('2020-01-01 00:04:00.000', 0);"
);
taos_free_result
(
result
);
tsub
=
taos_subscribe
(
taos
,
1
,
"test"
,
"select * from meters;"
,
NULL
,
NULL
,
0
);
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
24
);
// keep progress information and continue previous subscription
taos_unsubscribe
(
tsub
,
1
);
tsub
=
taos_subscribe
(
taos
,
0
,
"test"
,
"select * from meters;"
,
NULL
,
NULL
,
0
);
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
0
);
// don't keep progress information and continue previous subscription
taos_unsubscribe
(
tsub
,
0
);
tsub
=
taos_subscribe
(
taos
,
0
,
"test"
,
"select * from meters;"
,
NULL
,
NULL
,
0
);
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
24
);
// single meter subscription
taos_unsubscribe
(
tsub
,
0
);
tsub
=
taos_subscribe
(
taos
,
0
,
"test"
,
"select * from t0;"
,
NULL
,
NULL
,
0
);
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
5
);
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
0
);
result
=
taos_query
(
taos
,
"insert into t0 values('2020-01-01 00:04:00.001', 0);"
);
taos_free_result
(
result
);
res
=
taos_consume
(
tsub
);
check_row_count
(
__LINE__
,
res
,
1
);
taos_unsubscribe
(
tsub
,
0
);
int
blockFetch
=
0
;
tsub
=
taos_subscribe
(
taos
,
1
,
"test"
,
"select * from meters;"
,
subscribe_callback
,
&
blockFetch
,
1000
);
usleep
(
2000000
);
result
=
taos_query
(
taos
,
"insert into t0 values('2020-01-01 00:05:00.001', 0);"
);
taos_free_result
(
result
);
usleep
(
2000000
);
taos_unsubscribe
(
tsub
,
0
);
}
void
verify_prepare
(
TAOS
*
taos
)
{
void
verify_prepare
(
TAOS
*
taos
)
{
TAOS_RES
*
result
=
taos_query
(
taos
,
"drop database if exists test;"
);
TAOS_RES
*
result
=
taos_query
(
taos
,
"drop database if exists test;"
);
taos_free_result
(
result
);
taos_free_result
(
result
);
...
@@ -280,70 +211,88 @@ void verify_prepare(TAOS* taos) {
...
@@ -280,70 +211,88 @@ void verify_prepare(TAOS* taos) {
char
blob
[
80
];
char
blob
[
80
];
}
v
=
{
0
};
}
v
=
{
0
};
int32_t
boolLen
=
sizeof
(
int8_t
);
int32_t
sintLen
=
sizeof
(
int16_t
);
int32_t
intLen
=
sizeof
(
int32_t
);
int32_t
bintLen
=
sizeof
(
int64_t
);
int32_t
floatLen
=
sizeof
(
float
);
int32_t
doubleLen
=
sizeof
(
double
);
int32_t
binLen
=
sizeof
(
v
.
bin
);
int32_t
ncharLen
=
30
;
TAOS_STMT
*
stmt
=
taos_stmt_init
(
taos
);
TAOS_STMT
*
stmt
=
taos_stmt_init
(
taos
);
TAOS_
BIND
params
[
10
];
TAOS_
MULTI_BIND
params
[
10
];
params
[
0
].
buffer_type
=
TSDB_DATA_TYPE_TIMESTAMP
;
params
[
0
].
buffer_type
=
TSDB_DATA_TYPE_TIMESTAMP
;
params
[
0
].
buffer_length
=
sizeof
(
v
.
ts
);
params
[
0
].
buffer_length
=
sizeof
(
v
.
ts
);
params
[
0
].
buffer
=
&
v
.
ts
;
params
[
0
].
buffer
=
&
v
.
ts
;
params
[
0
].
length
=
&
params
[
0
].
buffer_length
;
params
[
0
].
length
=
&
bintLen
;
params
[
0
].
is_null
=
NULL
;
params
[
0
].
is_null
=
NULL
;
params
[
0
].
num
=
1
;
params
[
1
].
buffer_type
=
TSDB_DATA_TYPE_BOOL
;
params
[
1
].
buffer_type
=
TSDB_DATA_TYPE_BOOL
;
params
[
1
].
buffer_length
=
sizeof
(
v
.
b
);
params
[
1
].
buffer_length
=
sizeof
(
v
.
b
);
params
[
1
].
buffer
=
&
v
.
b
;
params
[
1
].
buffer
=
&
v
.
b
;
params
[
1
].
length
=
&
params
[
1
].
buffer_length
;
params
[
1
].
length
=
&
boolLen
;
params
[
1
].
is_null
=
NULL
;
params
[
1
].
is_null
=
NULL
;
params
[
1
].
num
=
1
;
params
[
2
].
buffer_type
=
TSDB_DATA_TYPE_TINYINT
;
params
[
2
].
buffer_type
=
TSDB_DATA_TYPE_TINYINT
;
params
[
2
].
buffer_length
=
sizeof
(
v
.
v1
);
params
[
2
].
buffer_length
=
sizeof
(
v
.
v1
);
params
[
2
].
buffer
=
&
v
.
v1
;
params
[
2
].
buffer
=
&
v
.
v1
;
params
[
2
].
length
=
&
params
[
2
].
buffer_length
;
params
[
2
].
length
=
&
boolLen
;
params
[
2
].
is_null
=
NULL
;
params
[
2
].
is_null
=
NULL
;
params
[
2
].
num
=
1
;
params
[
3
].
buffer_type
=
TSDB_DATA_TYPE_SMALLINT
;
params
[
3
].
buffer_type
=
TSDB_DATA_TYPE_SMALLINT
;
params
[
3
].
buffer_length
=
sizeof
(
v
.
v2
);
params
[
3
].
buffer_length
=
sizeof
(
v
.
v2
);
params
[
3
].
buffer
=
&
v
.
v2
;
params
[
3
].
buffer
=
&
v
.
v2
;
params
[
3
].
length
=
&
params
[
3
].
buffer_length
;
params
[
3
].
length
=
&
sintLen
;
params
[
3
].
is_null
=
NULL
;
params
[
3
].
is_null
=
NULL
;
params
[
3
].
num
=
1
;
params
[
4
].
buffer_type
=
TSDB_DATA_TYPE_INT
;
params
[
4
].
buffer_type
=
TSDB_DATA_TYPE_INT
;
params
[
4
].
buffer_length
=
sizeof
(
v
.
v4
);
params
[
4
].
buffer_length
=
sizeof
(
v
.
v4
);
params
[
4
].
buffer
=
&
v
.
v4
;
params
[
4
].
buffer
=
&
v
.
v4
;
params
[
4
].
length
=
&
params
[
4
].
buffer_length
;
params
[
4
].
length
=
&
intLen
;
params
[
4
].
is_null
=
NULL
;
params
[
4
].
is_null
=
NULL
;
params
[
4
].
num
=
1
;
params
[
5
].
buffer_type
=
TSDB_DATA_TYPE_BIGINT
;
params
[
5
].
buffer_type
=
TSDB_DATA_TYPE_BIGINT
;
params
[
5
].
buffer_length
=
sizeof
(
v
.
v8
);
params
[
5
].
buffer_length
=
sizeof
(
v
.
v8
);
params
[
5
].
buffer
=
&
v
.
v8
;
params
[
5
].
buffer
=
&
v
.
v8
;
params
[
5
].
length
=
&
params
[
5
].
buffer_length
;
params
[
5
].
length
=
&
bintLen
;
params
[
5
].
is_null
=
NULL
;
params
[
5
].
is_null
=
NULL
;
params
[
5
].
num
=
1
;
params
[
6
].
buffer_type
=
TSDB_DATA_TYPE_FLOAT
;
params
[
6
].
buffer_type
=
TSDB_DATA_TYPE_FLOAT
;
params
[
6
].
buffer_length
=
sizeof
(
v
.
f4
);
params
[
6
].
buffer_length
=
sizeof
(
v
.
f4
);
params
[
6
].
buffer
=
&
v
.
f4
;
params
[
6
].
buffer
=
&
v
.
f4
;
params
[
6
].
length
=
&
params
[
6
].
buffer_length
;
params
[
6
].
length
=
&
floatLen
;
params
[
6
].
is_null
=
NULL
;
params
[
6
].
is_null
=
NULL
;
params
[
6
].
num
=
1
;
params
[
7
].
buffer_type
=
TSDB_DATA_TYPE_DOUBLE
;
params
[
7
].
buffer_type
=
TSDB_DATA_TYPE_DOUBLE
;
params
[
7
].
buffer_length
=
sizeof
(
v
.
f8
);
params
[
7
].
buffer_length
=
sizeof
(
v
.
f8
);
params
[
7
].
buffer
=
&
v
.
f8
;
params
[
7
].
buffer
=
&
v
.
f8
;
params
[
7
].
length
=
&
params
[
7
].
buffer_length
;
params
[
7
].
length
=
&
doubleLen
;
params
[
7
].
is_null
=
NULL
;
params
[
7
].
is_null
=
NULL
;
params
[
7
].
num
=
1
;
params
[
8
].
buffer_type
=
TSDB_DATA_TYPE_BINARY
;
params
[
8
].
buffer_type
=
TSDB_DATA_TYPE_BINARY
;
params
[
8
].
buffer_length
=
sizeof
(
v
.
bin
);
params
[
8
].
buffer_length
=
sizeof
(
v
.
bin
);
params
[
8
].
buffer
=
v
.
bin
;
params
[
8
].
buffer
=
v
.
bin
;
params
[
8
].
length
=
&
params
[
8
].
buffer_length
;
params
[
8
].
length
=
&
binLen
;
params
[
8
].
is_null
=
NULL
;
params
[
8
].
is_null
=
NULL
;
params
[
8
].
num
=
1
;
strcpy
(
v
.
blob
,
"一二三四五六七八九十"
);
strcpy
(
v
.
blob
,
"一二三四五六七八九十"
);
params
[
9
].
buffer_type
=
TSDB_DATA_TYPE_NCHAR
;
params
[
9
].
buffer_type
=
TSDB_DATA_TYPE_NCHAR
;
params
[
9
].
buffer_length
=
s
trlen
(
v
.
blob
);
params
[
9
].
buffer_length
=
s
izeof
(
v
.
blob
);
params
[
9
].
buffer
=
v
.
blob
;
params
[
9
].
buffer
=
v
.
blob
;
params
[
9
].
length
=
&
params
[
9
].
buffer_length
;
params
[
9
].
length
=
&
ncharLen
;
params
[
9
].
is_null
=
NULL
;
params
[
9
].
is_null
=
NULL
;
params
[
9
].
num
=
1
;
int
is_null
=
1
;
char
is_null
=
1
;
sql
=
"insert into m1 values(?,?,?,?,?,?,?,?,?,?)"
;
sql
=
"insert into m1 values(?,?,?,?,?,?,?,?,?,?)"
;
code
=
taos_stmt_prepare
(
stmt
,
sql
,
0
);
code
=
taos_stmt_prepare
(
stmt
,
sql
,
0
);
...
@@ -593,21 +542,26 @@ void verify_prepare2(TAOS* taos) {
...
@@ -593,21 +542,26 @@ void verify_prepare2(TAOS* taos) {
// query the records
// query the records
stmt
=
taos_stmt_init
(
taos
);
stmt
=
taos_stmt_init
(
taos
);
taos_stmt_prepare
(
stmt
,
"SELECT * FROM m1 WHERE v1 > ? AND v2 < ?"
,
0
);
taos_stmt_prepare
(
stmt
,
"SELECT * FROM m1 WHERE v1 > ? AND v2 < ?"
,
0
);
TAOS_BIND
qparams
[
2
];
TAOS_
MULTI_
BIND
qparams
[
2
];
int8_t
v1
=
5
;
int8_t
v1
=
5
;
int16_t
v2
=
15
;
int16_t
v2
=
15
;
int32_t
tinyLen
=
sizeof
(
v1
);
int32_t
smallLen
=
sizeof
(
v2
);
qparams
[
0
].
buffer_type
=
TSDB_DATA_TYPE_TINYINT
;
qparams
[
0
].
buffer_type
=
TSDB_DATA_TYPE_TINYINT
;
qparams
[
0
].
buffer_length
=
sizeof
(
v1
);
qparams
[
0
].
buffer_length
=
sizeof
(
v1
);
qparams
[
0
].
buffer
=
&
v1
;
qparams
[
0
].
buffer
=
&
v1
;
qparams
[
0
].
length
=
&
qparams
[
0
].
buffer_length
;
qparams
[
0
].
length
=
&
tinyLen
;
qparams
[
0
].
is_null
=
NULL
;
qparams
[
0
].
is_null
=
NULL
;
qparams
[
0
].
num
=
1
;
qparams
[
1
].
buffer_type
=
TSDB_DATA_TYPE_SMALLINT
;
qparams
[
1
].
buffer_type
=
TSDB_DATA_TYPE_SMALLINT
;
qparams
[
1
].
buffer_length
=
sizeof
(
v2
);
qparams
[
1
].
buffer_length
=
sizeof
(
v2
);
qparams
[
1
].
buffer
=
&
v2
;
qparams
[
1
].
buffer
=
&
v2
;
qparams
[
1
].
length
=
&
qparams
[
1
].
buffer_length
;
qparams
[
1
].
length
=
&
smallLen
;
qparams
[
1
].
is_null
=
NULL
;
qparams
[
1
].
is_null
=
NULL
;
qparams
[
1
].
num
=
1
;
taos_stmt_bind_param
(
stmt
,
qparams
);
taos_stmt_bind_param
(
stmt
,
qparams
);
if
(
taos_stmt_execute
(
stmt
)
!=
0
)
{
if
(
taos_stmt_execute
(
stmt
)
!=
0
)
{
...
@@ -674,23 +628,25 @@ void verify_prepare3(TAOS* taos) {
...
@@ -674,23 +628,25 @@ void verify_prepare3(TAOS* taos) {
}
}
taos_free_result
(
result
);
taos_free_result
(
result
);
TAOS_BIND
tags
[
2
];
TAOS_
MULTI_
BIND
tags
[
2
];
int32_t
id1
=
1
;
int32_t
id1
=
1
;
char
id2
[
40
]
=
"abcdefghijklmnopqrstuvwxyz0123456789"
;
char
id2
[
40
]
=
"abcdefghijklmnopqrstuvwxyz0123456789"
;
uintptr_t
id2_len
=
strlen
(
id2
);
int32_t
id2_len
=
(
int32_t
)
strlen
(
id2
);
tags
[
0
].
buffer_type
=
TSDB_DATA_TYPE_INT
;
tags
[
0
].
buffer_type
=
TSDB_DATA_TYPE_INT
;
tags
[
0
].
buffer_length
=
sizeof
(
int
);
tags
[
0
].
buffer_length
=
sizeof
(
int
);
tags
[
0
].
buffer
=
&
id1
;
tags
[
0
].
buffer
=
&
id1
;
tags
[
0
].
length
=
NULL
;
tags
[
0
].
length
=
NULL
;
tags
[
0
].
is_null
=
NULL
;
tags
[
0
].
is_null
=
NULL
;
tags
[
0
].
num
=
1
;
tags
[
1
].
buffer_type
=
TSDB_DATA_TYPE_BINARY
;
tags
[
1
].
buffer_type
=
TSDB_DATA_TYPE_BINARY
;
tags
[
1
].
buffer_length
=
sizeof
(
id2
);
tags
[
1
].
buffer_length
=
sizeof
(
id2
);
tags
[
1
].
buffer
=
id2
;
tags
[
1
].
buffer
=
id2
;
tags
[
1
].
length
=
&
id2_len
;
tags
[
1
].
length
=
&
id2_len
;
tags
[
1
].
is_null
=
NULL
;
tags
[
1
].
is_null
=
NULL
;
tags
[
1
].
num
=
1
;
// insert 10 records
// insert 10 records
struct
{
struct
{
...
@@ -845,21 +801,26 @@ void verify_prepare3(TAOS* taos) {
...
@@ -845,21 +801,26 @@ void verify_prepare3(TAOS* taos) {
stmt
=
taos_stmt_init
(
taos
);
stmt
=
taos_stmt_init
(
taos
);
taos_stmt_prepare
(
stmt
,
"SELECT * FROM m1 WHERE v1 > ? AND v2 < ?"
,
0
);
taos_stmt_prepare
(
stmt
,
"SELECT * FROM m1 WHERE v1 > ? AND v2 < ?"
,
0
);
TAOS_BIND
qparams
[
2
];
TAOS_
MULTI_
BIND
qparams
[
2
];
int8_t
v1
=
5
;
int8_t
v1
=
5
;
int16_t
v2
=
15
;
int16_t
v2
=
15
;
int32_t
tinyLen
=
sizeof
(
v1
);
int32_t
smallLen
=
sizeof
(
v2
);
qparams
[
0
].
buffer_type
=
TSDB_DATA_TYPE_TINYINT
;
qparams
[
0
].
buffer_type
=
TSDB_DATA_TYPE_TINYINT
;
qparams
[
0
].
buffer_length
=
sizeof
(
v1
);
qparams
[
0
].
buffer_length
=
sizeof
(
v1
);
qparams
[
0
].
buffer
=
&
v1
;
qparams
[
0
].
buffer
=
&
v1
;
qparams
[
0
].
length
=
&
qparams
[
0
].
buffer_length
;
qparams
[
0
].
length
=
&
tinyLen
;
qparams
[
0
].
is_null
=
NULL
;
qparams
[
0
].
is_null
=
NULL
;
qparams
[
0
].
num
=
1
;
qparams
[
1
].
buffer_type
=
TSDB_DATA_TYPE_SMALLINT
;
qparams
[
1
].
buffer_type
=
TSDB_DATA_TYPE_SMALLINT
;
qparams
[
1
].
buffer_length
=
sizeof
(
v2
);
qparams
[
1
].
buffer_length
=
sizeof
(
v2
);
qparams
[
1
].
buffer
=
&
v2
;
qparams
[
1
].
buffer
=
&
v2
;
qparams
[
1
].
length
=
&
qparams
[
1
].
buffer_length
;
qparams
[
1
].
length
=
&
smallLen
;
qparams
[
1
].
is_null
=
NULL
;
qparams
[
1
].
is_null
=
NULL
;
qparams
[
1
].
num
=
1
;
taos_stmt_bind_param
(
stmt
,
qparams
);
taos_stmt_bind_param
(
stmt
,
qparams
);
if
(
taos_stmt_execute
(
stmt
)
!=
0
)
{
if
(
taos_stmt_execute
(
stmt
)
!=
0
)
{
...
@@ -938,965 +899,6 @@ void stream_callback(void* param, TAOS_RES* res, TAOS_ROW row) {
...
@@ -938,965 +899,6 @@ void stream_callback(void* param, TAOS_RES* res, TAOS_ROW row) {
puts
(
temp
);
puts
(
temp
);
}
}
void
verify_stream
(
TAOS
*
taos
)
{
prepare_data
(
taos
);
TAOS_STREAM
*
strm
=
taos_open_stream
(
taos
,
"select count(*) from meters interval(1m)"
,
stream_callback
,
0
,
NULL
,
NULL
);
printf
(
"waiting for stream data
\n
"
);
usleep
(
100000
);
TAOS_RES
*
result
=
taos_query
(
taos
,
"insert into t0 values(now, 0)(now+5s,1)(now+10s, 2);"
);
taos_free_result
(
result
);
usleep
(
200000000
);
taos_close_stream
(
strm
);
}
int32_t
verify_schema_less
(
TAOS
*
taos
)
{
TAOS_RES
*
result
;
result
=
taos_query
(
taos
,
"drop database if exists test;"
);
taos_free_result
(
result
);
usleep
(
100000
);
result
=
taos_query
(
taos
,
"create database test precision 'us' update 1;"
);
taos_free_result
(
result
);
usleep
(
100000
);
taos_select_db
(
taos
,
"test"
);
result
=
taos_query
(
taos
,
"create stable ste(ts timestamp, f int) tags(t1 bigint)"
);
taos_free_result
(
result
);
usleep
(
100000
);
int
code
=
0
;
char
*
lines
[]
=
{
"st,t1=3i64,t2=4f64,t3=
\"
t3
\"
c1=3i64,c3=L
\"
passit
\"
,c2=false,c4=4f64 1626006833639000000ns"
,
"st,t1=4i64,t3=
\"
t4
\"
,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin
\"
,c2=true,c4=5f64,c5=5f64 1626006833640000000ns"
,
"ste,t2=5f64,t3=L
\"
ste
\"
c1=true,c2=4i64,c3=
\"
iam
\"
1626056811823316532ns"
,
"st,t1=4i64,t2=5f64,t3=
\"
t4
\"
c1=3i64,c3=L
\"
passitagain
\"
,c2=true,c4=5f64 1626006833642000000ns"
,
"ste,t2=5f64,t3=L
\"
ste2
\"
c3=
\"
iamszhou
\"
,c4=false 1626056811843316532ns"
,
"ste,t2=5f64,t3=L
\"
ste2
\"
c3=
\"
iamszhou
\"
,c4=false,c5=32i8,c6=64i16,c7=32i32,c8=88.88f32 1626056812843316532ns"
,
"st,t1=4i64,t3=
\"
t4
\"
,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin
\"
,c2=true,c4=5f64,c5=5f64,c6=7u64 "
"1626006933640000000ns"
,
"stf,t1=4i64,t3=
\"
t4
\"
,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin
\"
,c2=true,c4=5f64,c5=5f64,c6=7u64 "
"1626006933640000000ns"
,
"stf,t1=4i64,t3=
\"
t4
\"
,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin_stf
\"
,c2=false,c5=5f64,c6=7u64 "
"1626006933641000000ns"
};
code
=
taos_insert_lines
(
taos
,
lines
,
sizeof
(
lines
)
/
sizeof
(
char
*
));
char
*
lines2
[]
=
{
"stg,t1=3i64,t2=4f64,t3=
\"
t3
\"
c1=3i64,c3=L
\"
passit
\"
,c2=false,c4=4f64 1626006833639000000ns"
,
"stg,t1=4i64,t3=
\"
t4
\"
,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin
\"
,c2=true,c4=5f64,c5=5f64 1626006833640000000ns"
};
code
=
taos_insert_lines
(
taos
,
&
lines2
[
0
],
1
);
code
=
taos_insert_lines
(
taos
,
&
lines2
[
1
],
1
);
char
*
lines3
[]
=
{
"sth,t1=4i64,t2=5f64,t4=5f64,ID=
\"
childtable
\"
c1=3i64,c3=L
\"
passitagin_stf
\"
,c2=false,c5=5f64,c6=7u64 "
"1626006933641ms"
,
"sth,t1=4i64,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin_stf
\"
,c2=false,c5=5f64,c6=7u64 1626006933654ms"
};
code
=
taos_insert_lines
(
taos
,
lines3
,
2
);
char
*
lines4
[]
=
{
"st123456,t1=3i64,t2=4f64,t3=
\"
t3
\"
c1=3i64,c3=L
\"
passit
\"
,c2=false,c4=4f64 1626006833639000000ns"
,
"dgtyqodr,t2=5f64,t3=L
\"
ste
\"
c1=tRue,c2=4i64,c3=
\"
iam
\"
1626056811823316532ns"
};
code
=
taos_insert_lines
(
taos
,
lines4
,
2
);
char
*
lines5
[]
=
{
"zqlbgs,id=
\"
zqlbgs_39302_21680
\"
,t0=f,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11."
"12345f32,t6=22.123456789f64,t7=
\"
binaryTagValue
\"
,t8=L
\"
ncharTagValue
\"
"
"c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="
"
\"
binaryColValue
\"
,c8=L
\"
ncharColValue
\"
,c9=7u64 1626006833639000000ns"
,
"zqlbgs,t9=f,id=
\"
zqlbgs_39302_21680
\"
,t0=f,t1=127i8,t11=127i8,t2=32767i16,t3=2147483647i32,t4="
"9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=
\"
binaryTagValue
\"
,t8=L
\"
ncharTagValue
\"
,t10="
"L
\"
ncharTagValue
\"
"
"c10=f,c0=f,c1=127i8,c12=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22."
"123456789f64,c7=
\"
binaryColValue
\"
,c8=L
\"
ncharColValue
\"
,c9=7u64,c11=L
\"
ncharColValue
\"
1626006833639000000ns"
};
code
=
taos_insert_lines
(
taos
,
&
lines5
[
0
],
1
);
code
=
taos_insert_lines
(
taos
,
&
lines5
[
1
],
1
);
char
*
lines6
[]
=
{
"st123456,t1=3i64,t2=4f64,t3=
\"
t3
\"
c1=3i64,c3=L
\"
passit
\"
,c2=false,c4=4f64 1626006833639000000ns"
,
"dgtyqodr,t2=5f64,t3=L
\"
ste
\"
c1=tRue,c2=4i64,c3=
\"
iam
\"
1626056811823316532ns"
};
code
=
taos_insert_lines
(
taos
,
lines6
,
2
);
return
(
code
);
}
void
verify_telnet_insert
(
TAOS
*
taos
)
{
TAOS_RES
*
result
;
result
=
taos_query
(
taos
,
"drop database if exists db;"
);
taos_free_result
(
result
);
usleep
(
100000
);
result
=
taos_query
(
taos
,
"create database db precision 'ms';"
);
taos_free_result
(
result
);
usleep
(
100000
);
(
void
)
taos_select_db
(
taos
,
"db"
);
int32_t
code
=
0
;
/* metric */
char
*
lines0
[]
=
{
"stb0_0 1626006833639000000ns 4i8 host=
\"
host0
\"
,interface=
\"
eth0
\"
"
,
"stb0_1 1626006833639000000ns 4i8 host=
\"
host0
\"
,interface=
\"
eth0
\"
"
,
"stb0_2 1626006833639000000ns 4i8 host=
\"
host0
\"
,interface=
\"
eth0
\"
"
,
};
code
=
taos_insert_telnet_lines
(
taos
,
lines0
,
3
);
if
(
code
)
{
printf
(
"lines0 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
/* timestamp */
char
*
lines1
[]
=
{
"stb1 1626006833s 1i8 host=
\"
host0
\"
"
,
"stb1 1626006833639000000ns 2i8 host=
\"
host0
\"
"
,
"stb1 1626006833640000us 3i8 host=
\"
host0
\"
"
,
"stb1 1626006833641123 4i8 host=
\"
host0
\"
"
,
"stb1 1626006833651ms 5i8 host=
\"
host0
\"
"
,
"stb1 0 6i8 host=
\"
host0
\"
"
,
};
code
=
taos_insert_telnet_lines
(
taos
,
lines1
,
6
);
if
(
code
)
{
printf
(
"lines1 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
/* metric value */
// tinyin
char
*
lines2_0
[]
=
{
"stb2_0 1626006833651ms -127i8 host=
\"
host0
\"
"
,
"stb2_0 1626006833652ms 127i8 host=
\"
host0
\"
"
};
code
=
taos_insert_telnet_lines
(
taos
,
lines2_0
,
2
);
if
(
code
)
{
printf
(
"lines2_0 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
// smallint
char
*
lines2_1
[]
=
{
"stb2_1 1626006833651ms -32767i16 host=
\"
host0
\"
"
,
"stb2_1 1626006833652ms 32767i16 host=
\"
host0
\"
"
};
code
=
taos_insert_telnet_lines
(
taos
,
lines2_1
,
2
);
if
(
code
)
{
printf
(
"lines2_1 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
// int
char
*
lines2_2
[]
=
{
"stb2_2 1626006833651ms -2147483647i32 host=
\"
host0
\"
"
,
"stb2_2 1626006833652ms 2147483647i32 host=
\"
host0
\"
"
};
code
=
taos_insert_telnet_lines
(
taos
,
lines2_2
,
2
);
if
(
code
)
{
printf
(
"lines2_2 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
// bigint
char
*
lines2_3
[]
=
{
"stb2_3 1626006833651ms -9223372036854775807i64 host=
\"
host0
\"
"
,
"stb2_3 1626006833652ms 9223372036854775807i64 host=
\"
host0
\"
"
};
code
=
taos_insert_telnet_lines
(
taos
,
lines2_3
,
2
);
if
(
code
)
{
printf
(
"lines2_3 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
// float
char
*
lines2_4
[]
=
{
"stb2_4 1626006833610ms 3f32 host=
\"
host0
\"
"
,
"stb2_4 1626006833620ms -3f32 host=
\"
host0
\"
"
,
"stb2_4 1626006833630ms 3.4f32 host=
\"
host0
\"
"
,
"stb2_4 1626006833640ms -3.4f32 host=
\"
host0
\"
"
,
"stb2_4 1626006833650ms 3.4E10f32 host=
\"
host0
\"
"
,
"stb2_4 1626006833660ms -3.4e10f32 host=
\"
host0
\"
"
,
"stb2_4 1626006833670ms 3.4E+2f32 host=
\"
host0
\"
"
,
"stb2_4 1626006833680ms -3.4e-2f32 host=
\"
host0
\"
"
,
"stb2_4 1626006833690ms 3.15 host=
\"
host0
\"
"
,
"stb2_4 1626006833700ms 3.4E38f32 host=
\"
host0
\"
"
,
"stb2_4 1626006833710ms -3.4E38f32 host=
\"
host0
\"
"
};
code
=
taos_insert_telnet_lines
(
taos
,
lines2_4
,
11
);
if
(
code
)
{
printf
(
"lines2_4 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
// double
char
*
lines2_5
[]
=
{
"stb2_5 1626006833610ms 3f64 host=
\"
host0
\"
"
,
"stb2_5 1626006833620ms -3f64 host=
\"
host0
\"
"
,
"stb2_5 1626006833630ms 3.4f64 host=
\"
host0
\"
"
,
"stb2_5 1626006833640ms -3.4f64 host=
\"
host0
\"
"
,
"stb2_5 1626006833650ms 3.4E10f64 host=
\"
host0
\"
"
,
"stb2_5 1626006833660ms -3.4e10f64 host=
\"
host0
\"
"
,
"stb2_5 1626006833670ms 3.4E+2f64 host=
\"
host0
\"
"
,
"stb2_5 1626006833680ms -3.4e-2f64 host=
\"
host0
\"
"
,
"stb2_5 1626006833690ms 1.7E308f64 host=
\"
host0
\"
"
,
"stb2_5 1626006833700ms -1.7E308f64 host=
\"
host0
\"
"
};
code
=
taos_insert_telnet_lines
(
taos
,
lines2_5
,
10
);
if
(
code
)
{
printf
(
"lines2_5 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
// bool
char
*
lines2_6
[]
=
{
"stb2_6 1626006833610ms t host=
\"
host0
\"
"
,
"stb2_6 1626006833620ms T host=
\"
host0
\"
"
,
"stb2_6 1626006833630ms true host=
\"
host0
\"
"
,
"stb2_6 1626006833640ms True host=
\"
host0
\"
"
,
"stb2_6 1626006833650ms TRUE host=
\"
host0
\"
"
,
"stb2_6 1626006833660ms f host=
\"
host0
\"
"
,
"stb2_6 1626006833670ms F host=
\"
host0
\"
"
,
"stb2_6 1626006833680ms false host=
\"
host0
\"
"
,
"stb2_6 1626006833690ms False host=
\"
host0
\"
"
,
"stb2_6 1626006833700ms FALSE host=
\"
host0
\"
"
};
code
=
taos_insert_telnet_lines
(
taos
,
lines2_6
,
10
);
if
(
code
)
{
printf
(
"lines2_6 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
// binary
char
*
lines2_7
[]
=
{
"stb2_7 1626006833610ms
\"
binary_val.!@#$%^&*
\"
host=
\"
host0
\"
"
,
"stb2_7 1626006833620ms
\"
binary_val.:;,./?|+-=
\"
host=
\"
host0
\"
"
,
"stb2_7 1626006833630ms
\"
binary_val.()[]{}<>
\"
host=
\"
host0
\"
"
};
code
=
taos_insert_telnet_lines
(
taos
,
lines2_7
,
3
);
if
(
code
)
{
printf
(
"lines2_7 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
// nchar
char
*
lines2_8
[]
=
{
"stb2_8 1626006833610ms L
\"
nchar_val数值一
\"
host=
\"
host0
\"
"
,
"stb2_8 1626006833620ms L
\"
nchar_val数值二
\"
host=
\"
host0
\"
"
,
};
code
=
taos_insert_telnet_lines
(
taos
,
lines2_8
,
2
);
if
(
code
)
{
printf
(
"lines2_8 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
/* tags */
// tag value types
char
*
lines3_0
[]
=
{
"stb3_0 1626006833610ms 1 "
"t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=3.4E38f32,t6=1.7E308f64,t7=true,t8=
\"
binary_"
"val_1
\"
,t9=L
\"
标签值1
\"
"
,
"stb3_0 1626006833610ms 2 "
"t1=-127i8,t2=-32767i16,t3=-2147483647i32,t4=-9223372036854775807i64,t5=-3.4E38f32,t6=-1.7E308f64,t7=false,t8="
"
\"
binary_val_2
\"
,t9=L
\"
标签值2
\"
"
};
code
=
taos_insert_telnet_lines
(
taos
,
lines3_0
,
2
);
if
(
code
)
{
printf
(
"lines3_0 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
// tag ID as child table name
char
*
lines3_1
[]
=
{
"stb3_1 1626006833610ms 1 id=
\"
child_table1
\"
,host=
\"
host1
\"
"
,
"stb3_1 1626006833610ms 2 host=
\"
host2
\"
,iD=
\"
child_table2
\"
"
,
"stb3_1 1626006833610ms 3 ID=
\"
child_table3
\"
,host=
\"
host3
\"
"
};
code
=
taos_insert_telnet_lines
(
taos
,
lines3_1
,
3
);
if
(
code
)
{
printf
(
"lines3_1 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
return
;
}
void
verify_json_insert
(
TAOS
*
taos
)
{
TAOS_RES
*
result
;
result
=
taos_query
(
taos
,
"drop database if exists db;"
);
taos_free_result
(
result
);
usleep
(
100000
);
result
=
taos_query
(
taos
,
"create database db precision 'ms';"
);
taos_free_result
(
result
);
usleep
(
100000
);
(
void
)
taos_select_db
(
taos
,
"db"
);
int32_t
code
=
0
;
char
*
message
=
"{ \
\"
metric
\"
:
\"
cpu_load_0
\"
, \
\"
timestamp
\"
: 1626006833610123, \
\"
value
\"
: 55.5, \
\"
tags
\"
: \
{ \
\"
host
\"
:
\"
ubuntu
\"
, \
\"
interface1
\"
:
\"
eth0
\"
, \
\"
Id
\"
:
\"
tb0
\"
\
} \
}"
;
code
=
taos_insert_json_payload
(
taos
,
message
);
if
(
code
)
{
printf
(
"payload_0 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
char
*
message1
=
"[ \
{ \
\"
metric
\"
:
\"
cpu_load_1
\"
, \
\"
timestamp
\"
: 1626006833610123, \
\"
value
\"
: 55.5, \
\"
tags
\"
: \
{ \
\"
host
\"
:
\"
ubuntu
\"
, \
\"
interface
\"
:
\"
eth1
\"
, \
\"
Id
\"
:
\"
tb1
\"
\
} \
}, \
{ \
\"
metric
\"
:
\"
cpu_load_2
\"
, \
\"
timestamp
\"
: 1626006833610123, \
\"
value
\"
: 55.5, \
\"
tags
\"
: \
{ \
\"
host
\"
:
\"
ubuntu
\"
, \
\"
interface
\"
:
\"
eth2
\"
, \
\"
Id
\"
:
\"
tb2
\"
\
} \
} \
]"
;
code
=
taos_insert_json_payload
(
taos
,
message1
);
if
(
code
)
{
printf
(
"payload_1 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
char
*
message2
=
"[ \
{ \
\"
metric
\"
:
\"
cpu_load_3
\"
, \
\"
timestamp
\"
: \
{ \
\"
value
\"
: 1626006833610123, \
\"
type
\"
:
\"
us
\"
\
}, \
\"
value
\"
: \
{ \
\"
value
\"
: 55, \
\"
type
\"
:
\"
int
\"
\
}, \
\"
tags
\"
: \
{ \
\"
host
\"
: \
{ \
\"
value
\"
:
\"
ubuntu
\"
, \
\"
type
\"
:
\"
binary
\"
\
}, \
\"
interface
\"
: \
{ \
\"
value
\"
:
\"
eth3
\"
, \
\"
type
\"
:
\"
nchar
\"
\
}, \
\"
ID
\"
:
\"
tb3
\"
, \
\"
port
\"
: \
{ \
\"
value
\"
: 4040, \
\"
type
\"
:
\"
int
\"
\
} \
} \
}, \
{ \
\"
metric
\"
:
\"
cpu_load_4
\"
, \
\"
timestamp
\"
: 1626006833610123, \
\"
value
\"
: 66.6, \
\"
tags
\"
: \
{ \
\"
host
\"
:
\"
ubuntu
\"
, \
\"
interface
\"
:
\"
eth4
\"
, \
\"
Id
\"
:
\"
tb4
\"
\
} \
} \
]"
;
code
=
taos_insert_json_payload
(
taos
,
message2
);
if
(
code
)
{
printf
(
"payload_2 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
cJSON
*
payload
,
*
tags
;
char
*
payload_str
;
/* Default format */
// number
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb0_0"
);
cJSON_AddNumberToObject
(
payload
,
"timestamp"
,
1626006833610123
);
cJSON_AddNumberToObject
(
payload
,
"value"
,
10
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload0_0 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// true
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb0_1"
);
cJSON_AddNumberToObject
(
payload
,
"timestamp"
,
1626006833610123
);
cJSON_AddTrueToObject
(
payload
,
"value"
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload0_1 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// false
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb0_2"
);
cJSON_AddNumberToObject
(
payload
,
"timestamp"
,
1626006833610123
);
cJSON_AddFalseToObject
(
payload
,
"value"
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload0_2 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// string
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb0_3"
);
cJSON_AddNumberToObject
(
payload
,
"timestamp"
,
1626006833610123
);
cJSON_AddStringToObject
(
payload
,
"value"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload0_3 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// timestamp 0 -> current time
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb0_4"
);
cJSON_AddNumberToObject
(
payload
,
"timestamp"
,
0
);
cJSON_AddNumberToObject
(
payload
,
"value"
,
123
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload0_4 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// ID
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb0_5"
);
cJSON_AddNumberToObject
(
payload
,
"timestamp"
,
0
);
cJSON_AddNumberToObject
(
payload
,
"value"
,
123
);
tags
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
tags
,
"ID"
,
"tb0_5"
);
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddStringToObject
(
tags
,
"iD"
,
"tb000"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddStringToObject
(
tags
,
"id"
,
"tb555"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload0_5 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
/* Nested format */
// timestamp
cJSON
*
timestamp
;
// seconds
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb1_0"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
cJSON_AddNumberToObject
(
payload
,
"value"
,
10
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload1_0 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// milleseconds
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb1_1"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833610
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"ms"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
cJSON_AddNumberToObject
(
payload
,
"value"
,
10
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload1_1 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// microseconds
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb1_2"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833610123
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"us"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
cJSON_AddNumberToObject
(
payload
,
"value"
,
10
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload1_2 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// nanoseconds
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb1_3"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833610123321
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"ns"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
cJSON_AddNumberToObject
(
payload
,
"value"
,
10
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload1_3 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// now
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb1_4"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
0
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"ns"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
cJSON_AddNumberToObject
(
payload
,
"value"
,
10
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload1_4 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// metric value
cJSON
*
metric_val
;
// bool
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb2_0"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
metric_val
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
metric_val
,
"value"
);
cJSON_AddStringToObject
(
metric_val
,
"type"
,
"bool"
);
cJSON_AddItemToObject
(
payload
,
"value"
,
metric_val
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload2_0 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// tinyint
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb2_1"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
metric_val
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
metric_val
,
"value"
,
127
);
cJSON_AddStringToObject
(
metric_val
,
"type"
,
"tinyint"
);
cJSON_AddItemToObject
(
payload
,
"value"
,
metric_val
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload2_1 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// smallint
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb2_2"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
metric_val
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
metric_val
,
"value"
,
32767
);
cJSON_AddStringToObject
(
metric_val
,
"type"
,
"smallint"
);
cJSON_AddItemToObject
(
payload
,
"value"
,
metric_val
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload2_2 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// int
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb2_3"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
metric_val
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
metric_val
,
"value"
,
2147483647
);
cJSON_AddStringToObject
(
metric_val
,
"type"
,
"int"
);
cJSON_AddItemToObject
(
payload
,
"value"
,
metric_val
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload2_3 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// bigint
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb2_4"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
metric_val
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
metric_val
,
"value"
,
9223372036854775807
);
cJSON_AddStringToObject
(
metric_val
,
"type"
,
"bigint"
);
cJSON_AddItemToObject
(
payload
,
"value"
,
metric_val
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload2_4 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// float
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb2_5"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
metric_val
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
metric_val
,
"value"
,
11
.
12345
);
cJSON_AddStringToObject
(
metric_val
,
"type"
,
"float"
);
cJSON_AddItemToObject
(
payload
,
"value"
,
metric_val
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload2_5 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// double
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb2_6"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
metric_val
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
metric_val
,
"value"
,
22
.
123456789
);
cJSON_AddStringToObject
(
metric_val
,
"type"
,
"double"
);
cJSON_AddItemToObject
(
payload
,
"value"
,
metric_val
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload2_6 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// binary
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb2_7"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
metric_val
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
metric_val
,
"value"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddStringToObject
(
metric_val
,
"type"
,
"binary"
);
cJSON_AddItemToObject
(
payload
,
"value"
,
metric_val
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload2_7 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// nchar
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb2_8"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
metric_val
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
metric_val
,
"value"
,
"你好"
);
cJSON_AddStringToObject
(
metric_val
,
"type"
,
"nchar"
);
cJSON_AddItemToObject
(
payload
,
"value"
,
metric_val
);
tags
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tags
,
"t1"
);
cJSON_AddFalseToObject
(
tags
,
"t2"
);
cJSON_AddNumberToObject
(
tags
,
"t3"
,
10
);
cJSON_AddStringToObject
(
tags
,
"t4"
,
"123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload2_8 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
// tag value
cJSON
*
tag
;
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"metric"
,
"stb3_0"
);
timestamp
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
timestamp
,
"value"
,
1626006833
);
cJSON_AddStringToObject
(
timestamp
,
"type"
,
"s"
);
cJSON_AddItemToObject
(
payload
,
"timestamp"
,
timestamp
);
metric_val
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
metric_val
,
"value"
,
"hello"
);
cJSON_AddStringToObject
(
metric_val
,
"type"
,
"nchar"
);
cJSON_AddItemToObject
(
payload
,
"value"
,
metric_val
);
tags
=
cJSON_CreateObject
();
tag
=
cJSON_CreateObject
();
cJSON_AddTrueToObject
(
tag
,
"value"
);
cJSON_AddStringToObject
(
tag
,
"type"
,
"bool"
);
cJSON_AddItemToObject
(
tags
,
"t1"
,
tag
);
tag
=
cJSON_CreateObject
();
cJSON_AddFalseToObject
(
tag
,
"value"
);
cJSON_AddStringToObject
(
tag
,
"type"
,
"bool"
);
cJSON_AddItemToObject
(
tags
,
"t2"
,
tag
);
tag
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
tag
,
"value"
,
127
);
cJSON_AddStringToObject
(
tag
,
"type"
,
"tinyint"
);
cJSON_AddItemToObject
(
tags
,
"t3"
,
tag
);
tag
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
tag
,
"value"
,
32767
);
cJSON_AddStringToObject
(
tag
,
"type"
,
"smallint"
);
cJSON_AddItemToObject
(
tags
,
"t4"
,
tag
);
tag
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
tag
,
"value"
,
2147483647
);
cJSON_AddStringToObject
(
tag
,
"type"
,
"int"
);
cJSON_AddItemToObject
(
tags
,
"t5"
,
tag
);
tag
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
tag
,
"value"
,
9223372036854775807
);
cJSON_AddStringToObject
(
tag
,
"type"
,
"bigint"
);
cJSON_AddItemToObject
(
tags
,
"t6"
,
tag
);
tag
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
tag
,
"value"
,
11
.
12345
);
cJSON_AddStringToObject
(
tag
,
"type"
,
"float"
);
cJSON_AddItemToObject
(
tags
,
"t7"
,
tag
);
tag
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
tag
,
"value"
,
22
.
1234567890
);
cJSON_AddStringToObject
(
tag
,
"type"
,
"double"
);
cJSON_AddItemToObject
(
tags
,
"t8"
,
tag
);
tag
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
tag
,
"value"
,
"binary_val"
);
cJSON_AddStringToObject
(
tag
,
"type"
,
"binary"
);
cJSON_AddItemToObject
(
tags
,
"t9"
,
tag
);
tag
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
tag
,
"value"
,
"你好"
);
cJSON_AddStringToObject
(
tag
,
"type"
,
"nchar"
);
cJSON_AddItemToObject
(
tags
,
"t10"
,
tag
);
cJSON_AddItemToObject
(
payload
,
"tags"
,
tags
);
payload_str
=
cJSON_Print
(
payload
);
// printf("%s\n", payload_str);
code
=
taos_insert_json_payload
(
taos
,
payload_str
);
if
(
code
)
{
printf
(
"payload3_0 code: %d, %s.
\n
"
,
code
,
tstrerror
(
code
));
}
free
(
payload_str
);
cJSON_Delete
(
payload
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
const
char
*
host
=
"127.0.0.1"
;
const
char
*
host
=
"127.0.0.1"
;
const
char
*
user
=
"root"
;
const
char
*
user
=
"root"
;
...
@@ -1909,29 +911,17 @@ int main(int argc, char* argv[]) {
...
@@ -1909,29 +911,17 @@ int main(int argc, char* argv[]) {
exit
(
1
);
exit
(
1
);
}
}
char
*
info
=
taos_get_server_info
(
taos
);
c
onst
c
har
*
info
=
taos_get_server_info
(
taos
);
printf
(
"server info: %s
\n
"
,
info
);
printf
(
"server info: %s
\n
"
,
info
);
info
=
taos_get_client_info
(
taos
);
info
=
taos_get_client_info
(
taos
);
printf
(
"client info: %s
\n
"
,
info
);
printf
(
"client info: %s
\n
"
,
info
);
printf
(
"************ verify schema-less *************
\n
"
);
verify_schema_less
(
taos
);
printf
(
"************ verify telnet-insert *************
\n
"
);
verify_telnet_insert
(
taos
);
printf
(
"************ verify json-insert *************
\n
"
);
verify_json_insert
(
taos
);
printf
(
"************ verify query *************
\n
"
);
printf
(
"************ verify query *************
\n
"
);
verify_query
(
taos
);
verify_query
(
taos
);
printf
(
"********* verify async query **********
\n
"
);
printf
(
"********* verify async query **********
\n
"
);
verify_async
(
taos
);
verify_async
(
taos
);
printf
(
"*********** verify subscribe ************
\n
"
);
verify_subscribe
(
taos
);
printf
(
"************ verify prepare *************
\n
"
);
printf
(
"************ verify prepare *************
\n
"
);
verify_prepare
(
taos
);
verify_prepare
(
taos
);
...
@@ -1940,8 +930,6 @@ int main(int argc, char* argv[]) {
...
@@ -1940,8 +930,6 @@ int main(int argc, char* argv[]) {
printf
(
"************ verify prepare3 *************
\n
"
);
printf
(
"************ verify prepare3 *************
\n
"
);
verify_prepare3
(
taos
);
verify_prepare3
(
taos
);
printf
(
"************ verify stream *************
\n
"
);
verify_stream
(
taos
);
printf
(
"done
\n
"
);
printf
(
"done
\n
"
);
taos_close
(
taos
);
taos_close
(
taos
);
taos_cleanup
();
taos_cleanup
();
...
...
examples/c
/demoapi.c
→
tests/script/api
/demoapi.c
浏览文件 @
2aad923b
...
@@ -21,7 +21,6 @@
...
@@ -21,7 +21,6 @@
#ifndef WINDOWS
#ifndef WINDOWS
#include <argp.h>
#include <argp.h>
#endif
#endif
#include "osSleep.h"
#include "taos.h"
#include "taos.h"
#define debugPrint(fmt, ...) \
#define debugPrint(fmt, ...) \
...
@@ -81,11 +80,9 @@ static void prepare_data(TAOS* taos) {
...
@@ -81,11 +80,9 @@ static void prepare_data(TAOS* taos) {
TAOS_RES
*
res
;
TAOS_RES
*
res
;
res
=
taos_query
(
taos
,
"drop database if exists test;"
);
res
=
taos_query
(
taos
,
"drop database if exists test;"
);
taos_free_result
(
res
);
taos_free_result
(
res
);
taosMsleep
(
100
);
res
=
taos_query
(
taos
,
"create database test;"
);
res
=
taos_query
(
taos
,
"create database test;"
);
taos_free_result
(
res
);
taos_free_result
(
res
);
taosMsleep
(
100
);
if
(
taos_select_db
(
taos
,
"test"
))
{
if
(
taos_select_db
(
taos
,
"test"
))
{
errorPrint
(
"%s() LN%d: taos_select_db() failed
\n
"
,
errorPrint
(
"%s() LN%d: taos_select_db() failed
\n
"
,
__func__
,
__LINE__
);
__func__
,
__LINE__
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录