Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
3ee29d8a
T
TDengine
项目概览
taosdata
/
TDengine
接近 2 年 前同步成功
通知
1191
Star
22018
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看板
提交
3ee29d8a
编写于
7月 26, 2021
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' into feature/query
上级
2b99aa16
33580725
变更
27
隐藏空白更改
内联
并排
Showing
27 changed file
with
350 addition
and
113 deletion
+350
-113
cmake/install.inc
cmake/install.inc
+1
-1
documentation20/cn/12.taos-sql/docs.md
documentation20/cn/12.taos-sql/docs.md
+1
-1
documentation20/en/12.taos-sql/docs.md
documentation20/en/12.taos-sql/docs.md
+1
-1
packaging/tools/makearbi.sh
packaging/tools/makearbi.sh
+1
-1
packaging/tools/makeclient.sh
packaging/tools/makeclient.sh
+1
-1
packaging/tools/makepkg.sh
packaging/tools/makepkg.sh
+1
-1
src/client/inc/tscUtil.h
src/client/inc/tscUtil.h
+1
-1
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+2
-2
src/client/src/tscParseLineProtocol.c
src/client/src/tscParseLineProtocol.c
+210
-72
src/client/src/tscPrepare.c
src/client/src/tscPrepare.c
+1
-1
src/client/src/tscProfile.c
src/client/src/tscProfile.c
+12
-1
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+6
-6
src/client/src/tscServer.c
src/client/src/tscServer.c
+9
-4
src/common/src/ttypes.c
src/common/src/ttypes.c
+5
-1
src/connector/grafanaplugin
src/connector/grafanaplugin
+1
-1
src/connector/jdbc/CMakeLists.txt
src/connector/jdbc/CMakeLists.txt
+1
-1
src/connector/jdbc/deploy-pom.xml
src/connector/jdbc/deploy-pom.xml
+1
-1
src/inc/taoserror.h
src/inc/taoserror.h
+1
-0
src/inc/taosmsg.h
src/inc/taosmsg.h
+4
-0
src/kit/taosdemo/taosdemo.c
src/kit/taosdemo/taosdemo.c
+5
-4
src/kit/taosdump/taosdump.c
src/kit/taosdump/taosdump.c
+2
-0
src/mnode/src/mnodeProfile.c
src/mnode/src/mnodeProfile.c
+48
-0
src/query/src/qSqlParser.c
src/query/src/qSqlParser.c
+4
-5
src/util/src/terror.c
src/util/src/terror.c
+2
-0
tests/examples/c/apitest.c
tests/examples/c/apitest.c
+25
-3
tests/examples/c/schemaless.c
tests/examples/c/schemaless.c
+2
-2
tests/pytest/fulltest.sh
tests/pytest/fulltest.sh
+2
-2
未找到文件。
cmake/install.inc
浏览文件 @
3ee29d8a
...
@@ -32,7 +32,7 @@ ELSEIF (TD_WINDOWS)
...
@@ -32,7 +32,7 @@ ELSEIF (TD_WINDOWS)
#INSTALL(TARGETS taos RUNTIME DESTINATION driver)
#INSTALL(TARGETS taos RUNTIME DESTINATION driver)
#INSTALL(TARGETS shell RUNTIME DESTINATION .)
#INSTALL(TARGETS shell RUNTIME DESTINATION .)
IF
(
TD_MVN_INSTALLED
)
IF
(
TD_MVN_INSTALLED
)
INSTALL
(
FILES
$
{
LIBRARY_OUTPUT_PATH
}
/
taos
-
jdbcdriver
-
*
-
dist
.
jar
DESTINATION
connector
/
jdbc
)
INSTALL
(
FILES
$
{
LIBRARY_OUTPUT_PATH
}
/
taos
-
jdbcdriver
-
2.0.33
-
dist
.
jar
DESTINATION
connector
/
jdbc
)
ENDIF
()
ENDIF
()
ELSEIF
(
TD_DARWIN
)
ELSEIF
(
TD_DARWIN
)
SET
(
TD_MAKE_INSTALL_SH
"${TD_COMMUNITY_DIR}/packaging/tools/make_install.sh"
)
SET
(
TD_MAKE_INSTALL_SH
"${TD_COMMUNITY_DIR}/packaging/tools/make_install.sh"
)
...
...
documentation20/cn/12.taos-sql/docs.md
浏览文件 @
3ee29d8a
...
@@ -1338,7 +1338,7 @@ SELECT function_list FROM stb_name
...
@@ -1338,7 +1338,7 @@ SELECT function_list FROM stb_name
- 查询过滤、聚合等操作按照每个切分窗口为独立的单位执行。聚合查询目前支持三种窗口的划分方式:
- 查询过滤、聚合等操作按照每个切分窗口为独立的单位执行。聚合查询目前支持三种窗口的划分方式:
1. 时间窗口:聚合时间段的窗口宽度由关键词 INTERVAL 指定,最短时间间隔 10 毫秒(10a);并且支持偏移 offset(偏移必须小于间隔),也即时间窗口划分与“UTC 时刻 0”相比的偏移量。SLIDING 语句用于指定聚合时间段的前向增量,也即每次窗口向前滑动的时长。当 SLIDING 与 INTERVAL 取值相等的时候,滑动窗口即为翻转窗口。
1. 时间窗口:聚合时间段的窗口宽度由关键词 INTERVAL 指定,最短时间间隔 10 毫秒(10a);并且支持偏移 offset(偏移必须小于间隔),也即时间窗口划分与“UTC 时刻 0”相比的偏移量。SLIDING 语句用于指定聚合时间段的前向增量,也即每次窗口向前滑动的时长。当 SLIDING 与 INTERVAL 取值相等的时候,滑动窗口即为翻转窗口。
* 从 2.1.5.0 版本开始,INTERVAL 语句允许的最短时间间隔调整为 1 微秒(1u),当然如果所查询的 DATABASE 的时间精度设置为毫秒级,那么允许的最短时间间隔为 1 毫秒(1a)。
* 从 2.1.5.0 版本开始,INTERVAL 语句允许的最短时间间隔调整为 1 微秒(1u),当然如果所查询的 DATABASE 的时间精度设置为毫秒级,那么允许的最短时间间隔为 1 毫秒(1a)。
2. 状态窗口:使用整数
(布尔值)或字符串
来标识产生记录时设备的状态量,产生的记录如果具有相同的状态量取值则归属于同一个状态窗口,数值改变后该窗口关闭。状态量所对应的列作为 STATE_WINDOW 语句的参数来指定。
2. 状态窗口:使用整数
或布尔值
来标识产生记录时设备的状态量,产生的记录如果具有相同的状态量取值则归属于同一个状态窗口,数值改变后该窗口关闭。状态量所对应的列作为 STATE_WINDOW 语句的参数来指定。
3. 会话窗口:时间戳所在的列由 SESSION 语句的 ts_col 参数指定,会话窗口根据相邻两条记录的时间戳差值来确定是否属于同一个会话——如果时间戳差异在 tol_val 以内,则认为记录仍属于同一个窗口;如果时间变化超过 tol_val,则自动开启下一个窗口。
3. 会话窗口:时间戳所在的列由 SESSION 语句的 ts_col 参数指定,会话窗口根据相邻两条记录的时间戳差值来确定是否属于同一个会话——如果时间戳差异在 tol_val 以内,则认为记录仍属于同一个窗口;如果时间变化超过 tol_val,则自动开启下一个窗口。
- WHERE 语句可以指定查询的起止时间和其他过滤条件。
- WHERE 语句可以指定查询的起止时间和其他过滤条件。
- FILL 语句指定某一窗口区间数据缺失的情况下的填充模式。填充模式包括以下几种:
- FILL 语句指定某一窗口区间数据缺失的情况下的填充模式。填充模式包括以下几种:
...
...
documentation20/en/12.taos-sql/docs.md
浏览文件 @
3ee29d8a
...
@@ -1132,7 +1132,7 @@ TDengine supports aggregations over data, they are listed below:
...
@@ -1132,7 +1132,7 @@ TDengine supports aggregations over data, they are listed below:
```
```
Function: Return the difference between the max value and the min value of a column in statistics /STable.
Function: Return the difference between the max value and the min value of a column in statistics /STable.
Return Data Type:
Same as applicable fields
.
Return Data Type:
Double
.
Applicable Fields: All types except binary, nchar, bool.
Applicable Fields: All types except binary, nchar, bool.
...
...
packaging/tools/makearbi.sh
浏览文件 @
3ee29d8a
...
@@ -59,7 +59,7 @@ pkg_name=${install_dir}-${osType}-${cpuType}
...
@@ -59,7 +59,7 @@ pkg_name=${install_dir}-${osType}-${cpuType}
# exit 1
# exit 1
# fi
# fi
if
[
"
$verType
"
==
"beta"
]
;
then
if
[
[
"
$verType
"
==
"beta"
]]
||
[[
"
$verType
"
==
"preRelease"
]
]
;
then
pkg_name
=
${
install_dir
}
-
${
verType
}
-
${
osType
}
-
${
cpuType
}
pkg_name
=
${
install_dir
}
-
${
verType
}
-
${
osType
}
-
${
cpuType
}
elif
[
"
$verType
"
==
"stable"
]
;
then
elif
[
"
$verType
"
==
"stable"
]
;
then
pkg_name
=
${
pkg_name
}
pkg_name
=
${
pkg_name
}
...
...
packaging/tools/makeclient.sh
浏览文件 @
3ee29d8a
...
@@ -182,7 +182,7 @@ pkg_name=${install_dir}-${osType}-${cpuType}
...
@@ -182,7 +182,7 @@ pkg_name=${install_dir}-${osType}-${cpuType}
# exit 1
# exit 1
# fi
# fi
if
[
"
$verType
"
==
"beta"
]
;
then
if
[
[
"
$verType
"
==
"beta"
]]
||
[[
"
$verType
"
==
"preRelease"
]
]
;
then
pkg_name
=
${
install_dir
}
-
${
verType
}
-
${
osType
}
-
${
cpuType
}
pkg_name
=
${
install_dir
}
-
${
verType
}
-
${
osType
}
-
${
cpuType
}
elif
[
"
$verType
"
==
"stable"
]
;
then
elif
[
"
$verType
"
==
"stable"
]
;
then
pkg_name
=
${
pkg_name
}
pkg_name
=
${
pkg_name
}
...
...
packaging/tools/makepkg.sh
浏览文件 @
3ee29d8a
...
@@ -215,7 +215,7 @@ pkg_name=${install_dir}-${osType}-${cpuType}
...
@@ -215,7 +215,7 @@ pkg_name=${install_dir}-${osType}-${cpuType}
# exit 1
# exit 1
# fi
# fi
if
[
"
$verType
"
==
"beta"
]
;
then
if
[
[
"
$verType
"
==
"beta"
]]
||
[[
"
$verType
"
==
"preRelease"
]
]
;
then
pkg_name
=
${
install_dir
}
-
${
verType
}
-
${
osType
}
-
${
cpuType
}
pkg_name
=
${
install_dir
}
-
${
verType
}
-
${
osType
}
-
${
cpuType
}
elif
[
"
$verType
"
==
"stable"
]
;
then
elif
[
"
$verType
"
==
"stable"
]
;
then
pkg_name
=
${
pkg_name
}
pkg_name
=
${
pkg_name
}
...
...
src/client/inc/tscUtil.h
浏览文件 @
3ee29d8a
...
@@ -273,7 +273,7 @@ void tscVgroupTableCopy(SVgroupTableInfo* info, SVgroupTableInfo* pInfo);
...
@@ -273,7 +273,7 @@ void tscVgroupTableCopy(SVgroupTableInfo* info, SVgroupTableInfo* pInfo);
int
tscGetSTableVgroupInfo
(
SSqlObj
*
pSql
,
SQueryInfo
*
pQueryInfo
);
int
tscGetSTableVgroupInfo
(
SSqlObj
*
pSql
,
SQueryInfo
*
pQueryInfo
);
int
tscGetTableMeta
(
SSqlObj
*
pSql
,
STableMetaInfo
*
pTableMetaInfo
);
int
tscGetTableMeta
(
SSqlObj
*
pSql
,
STableMetaInfo
*
pTableMetaInfo
);
int
tscGetTableMetaEx
(
SSqlObj
*
pSql
,
STableMetaInfo
*
pTableMetaInfo
,
bool
createIfNotExists
);
int
tscGetTableMetaEx
(
SSqlObj
*
pSql
,
STableMetaInfo
*
pTableMetaInfo
,
bool
createIfNotExists
,
bool
onlyLocal
);
int32_t
tscGetUdfFromNode
(
SSqlObj
*
pSql
,
SQueryInfo
*
pQueryInfo
);
int32_t
tscGetUdfFromNode
(
SSqlObj
*
pSql
,
SQueryInfo
*
pQueryInfo
);
void
tscResetForNextRetrieve
(
SSqlRes
*
pRes
);
void
tscResetForNextRetrieve
(
SSqlRes
*
pRes
);
...
...
src/client/src/tscParseInsert.c
浏览文件 @
3ee29d8a
...
@@ -1482,7 +1482,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
...
@@ -1482,7 +1482,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
return
TSDB_CODE_TSC_SQL_SYNTAX_ERROR
;
return
TSDB_CODE_TSC_SQL_SYNTAX_ERROR
;
}
}
code
=
tscGetTableMetaEx
(
pSql
,
pTableMetaInfo
,
true
);
code
=
tscGetTableMetaEx
(
pSql
,
pTableMetaInfo
,
true
,
false
);
if
(
TSDB_CODE_TSC_ACTION_IN_PROGRESS
==
code
)
{
if
(
TSDB_CODE_TSC_ACTION_IN_PROGRESS
==
code
)
{
return
code
;
return
code
;
}
}
...
@@ -1493,7 +1493,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
...
@@ -1493,7 +1493,7 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
}
}
sql
=
sToken
.
z
;
sql
=
sToken
.
z
;
code
=
tscGetTableMetaEx
(
pSql
,
pTableMetaInfo
,
false
);
code
=
tscGetTableMetaEx
(
pSql
,
pTableMetaInfo
,
false
,
false
);
if
(
pInsertParam
->
sql
==
NULL
)
{
if
(
pInsertParam
->
sql
==
NULL
)
{
assert
(
code
==
TSDB_CODE_TSC_ACTION_IN_PROGRESS
);
assert
(
code
==
TSDB_CODE_TSC_ACTION_IN_PROGRESS
);
}
}
...
...
src/client/src/tscParseLineProtocol.c
浏览文件 @
3ee29d8a
...
@@ -474,7 +474,7 @@ int32_t loadTableMeta(TAOS* taos, char* tableName, SSmlSTableSchema* schema) {
...
@@ -474,7 +474,7 @@ int32_t loadTableMeta(TAOS* taos, char* tableName, SSmlSTableSchema* schema) {
return
code
;
return
code
;
}
}
static
int32_t
reconcile
DBSchemas
(
TAOS
*
taos
,
SArray
*
stableSchemas
)
{
static
int32_t
modify
DBSchemas
(
TAOS
*
taos
,
SArray
*
stableSchemas
)
{
int32_t
code
=
0
;
int32_t
code
=
0
;
size_t
numStable
=
taosArrayGetSize
(
stableSchemas
);
size_t
numStable
=
taosArrayGetSize
(
stableSchemas
);
for
(
int
i
=
0
;
i
<
numStable
;
++
i
)
{
for
(
int
i
=
0
;
i
<
numStable
;
++
i
)
{
...
@@ -570,6 +570,40 @@ static int32_t getSmlMd5ChildTableName(TAOS_SML_DATA_POINT* point, char* tableNa
...
@@ -570,6 +570,40 @@ static int32_t getSmlMd5ChildTableName(TAOS_SML_DATA_POINT* point, char* tableNa
return
0
;
return
0
;
}
}
static
int32_t
changeChildTableTagValue
(
TAOS
*
taos
,
const
char
*
cTableName
,
const
char
*
tagName
,
TAOS_BIND
*
bind
)
{
char
sql
[
512
];
sprintf
(
sql
,
"alter table %s set tag %s=?"
,
cTableName
,
tagName
);
int32_t
code
;
TAOS_STMT
*
stmt
=
taos_stmt_init
(
taos
);
code
=
taos_stmt_prepare
(
stmt
,
sql
,
(
unsigned
long
)
strlen
(
sql
));
if
(
code
!=
0
)
{
tscError
(
"%s"
,
taos_stmt_errstr
(
stmt
));
return
code
;
}
code
=
taos_stmt_bind_param
(
stmt
,
bind
);
if
(
code
!=
0
)
{
tscError
(
"%s"
,
taos_stmt_errstr
(
stmt
));
return
code
;
}
code
=
taos_stmt_execute
(
stmt
);
if
(
code
!=
0
)
{
tscError
(
"%s"
,
taos_stmt_errstr
(
stmt
));
return
code
;
}
code
=
taos_stmt_close
(
stmt
);
if
(
code
!=
0
)
{
tscError
(
"%s"
,
taos_stmt_errstr
(
stmt
));
return
code
;
}
return
code
;
}
static
int32_t
creatChildTableIfNotExists
(
TAOS
*
taos
,
const
char
*
cTableName
,
const
char
*
sTableName
,
SArray
*
tagsSchema
,
SArray
*
tagsBind
)
{
static
int32_t
creatChildTableIfNotExists
(
TAOS
*
taos
,
const
char
*
cTableName
,
const
char
*
sTableName
,
SArray
*
tagsSchema
,
SArray
*
tagsBind
)
{
size_t
numTags
=
taosArrayGetSize
(
tagsSchema
);
size_t
numTags
=
taosArrayGetSize
(
tagsSchema
);
char
*
sql
=
malloc
(
tsMaxSQLStringLen
+
1
);
char
*
sql
=
malloc
(
tsMaxSQLStringLen
+
1
);
...
@@ -657,7 +691,6 @@ static int32_t insertChildTableBatch(TAOS* taos, char* cTableName, SArray* cols
...
@@ -657,7 +691,6 @@ static int32_t insertChildTableBatch(TAOS* taos, char* cTableName, SArray* cols
}
}
do
{
do
{
code
=
taos_stmt_set_tbname
(
stmt
,
cTableName
);
code
=
taos_stmt_set_tbname
(
stmt
,
cTableName
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
tscError
(
"%s"
,
taos_stmt_errstr
(
stmt
));
tscError
(
"%s"
,
taos_stmt_errstr
(
stmt
));
...
@@ -742,97 +775,200 @@ static int32_t arrangePointsByChildTableName(TAOS_SML_DATA_POINT* points, int nu
...
@@ -742,97 +775,200 @@ static int32_t arrangePointsByChildTableName(TAOS_SML_DATA_POINT* points, int nu
return
0
;
return
0
;
}
}
static
int32_t
insertPoints
(
TAOS
*
taos
,
TAOS_SML_DATA_POINT
*
points
,
int32_t
numPoints
,
SArray
*
stableSchemas
)
{
static
int32_t
applyChildTableTags
(
TAOS
*
taos
,
char
*
cTableName
,
char
*
sTableName
,
int32_t
code
=
TSDB_CODE_SUCCESS
;
SSmlSTableSchema
*
sTableSchema
,
SArray
*
cTablePoints
)
{
size_t
numTags
=
taosArrayGetSize
(
sTableSchema
->
tags
);
size_t
rows
=
taosArrayGetSize
(
cTablePoints
);
SHashObj
*
cname2points
=
taosHashInit
(
128
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
),
TAOS_SML_KV
*
tagKVs
[
TSDB_MAX_TAGS
]
=
{
0
};
true
,
false
);
for
(
int
i
=
0
;
i
<
rows
;
++
i
)
{
arrangePointsByChildTableName
(
points
,
numPoints
,
cname2points
,
stableSchemas
);
TAOS_SML_DATA_POINT
*
pDataPoint
=
taosArrayGetP
(
cTablePoints
,
i
);
for
(
int
j
=
0
;
j
<
pDataPoint
->
tagNum
;
++
j
)
{
TAOS_SML_KV
*
kv
=
pDataPoint
->
tags
+
j
;
tagKVs
[
kv
->
fieldSchemaIdx
]
=
kv
;
}
}
int32_t
notNullTagsIndices
[
TSDB_MAX_TAGS
]
=
{
0
};
int32_t
numNotNullTags
=
0
;
for
(
int32_t
i
=
0
;
i
<
numTags
;
++
i
)
{
if
(
tagKVs
[
i
]
!=
NULL
)
{
notNullTagsIndices
[
numNotNullTags
]
=
i
;
++
numNotNullTags
;
}
}
SArray
*
tagBinds
=
taosArrayInit
(
numTags
,
sizeof
(
TAOS_BIND
));
taosArraySetSize
(
tagBinds
,
numTags
);
int
isNullColBind
=
TSDB_TRUE
;
int
isNullColBind
=
TSDB_TRUE
;
SArray
**
pCTablePoints
=
taosHashIterate
(
cname2points
,
NULL
);
for
(
int
j
=
0
;
j
<
numTags
;
++
j
)
{
while
(
pCTablePoints
)
{
TAOS_BIND
*
bind
=
taosArrayGet
(
tagBinds
,
j
);
SArray
*
cTablePoints
=
*
pCTablePoints
;
bind
->
is_null
=
&
isNullColBind
;
}
for
(
int
j
=
0
;
j
<
numTags
;
++
j
)
{
if
(
tagKVs
[
j
]
==
NULL
)
continue
;
TAOS_SML_KV
*
kv
=
tagKVs
[
j
];
TAOS_BIND
*
bind
=
taosArrayGet
(
tagBinds
,
kv
->
fieldSchemaIdx
);
bind
->
buffer_type
=
kv
->
type
;
bind
->
length
=
malloc
(
sizeof
(
uintptr_t
*
));
*
bind
->
length
=
kv
->
length
;
bind
->
buffer
=
kv
->
value
;
bind
->
is_null
=
NULL
;
}
// select tag1,tag2,... from stable where tbname in (ctable)
char
*
sql
=
malloc
(
tsMaxSQLStringLen
+
1
);
int
freeBytes
=
tsMaxSQLStringLen
+
1
;
snprintf
(
sql
,
freeBytes
,
"select tbname, "
);
for
(
int
i
=
0
;
i
<
numNotNullTags
;
++
i
)
{
snprintf
(
sql
+
strlen
(
sql
),
freeBytes
-
strlen
(
sql
),
"%s,"
,
tagKVs
[
notNullTagsIndices
[
i
]]
->
key
);
}
snprintf
(
sql
+
strlen
(
sql
)
-
1
,
freeBytes
-
strlen
(
sql
)
+
1
,
" from %s where tbname in (
\'
%s
\'
)"
,
sTableName
,
cTableName
);
sql
[
strlen
(
sql
)]
=
'\0'
;
TAOS_RES
*
result
=
taos_query
(
taos
,
sql
);
free
(
sql
);
int32_t
code
=
taos_errno
(
result
);
if
(
code
!=
0
)
{
tscError
(
"get child table %s tags failed. error string %s"
,
cTableName
,
taos_errstr
(
result
));
goto
cleanup
;
}
// check tag value and set tag values if different
TAOS_ROW
row
=
taos_fetch_row
(
result
);
if
(
row
!=
NULL
)
{
int
numFields
=
taos_field_count
(
result
);
TAOS_FIELD
*
fields
=
taos_fetch_fields
(
result
);
int
*
lengths
=
taos_fetch_lengths
(
result
);
for
(
int
i
=
1
;
i
<
numFields
;
++
i
)
{
uint8_t
dbType
=
fields
[
i
].
type
;
int32_t
length
=
lengths
[
i
];
char
*
val
=
row
[
i
];
TAOS_SML_KV
*
tagKV
=
tagKVs
[
notNullTagsIndices
[
i
-
1
]];
if
(
tagKV
->
type
!=
dbType
)
{
tscError
(
"child table %s tag %s type mismatch. point type : %d, db type : %d"
,
cTableName
,
tagKV
->
key
,
tagKV
->
type
,
dbType
);
return
TSDB_CODE_TSC_INVALID_VALUE
;
}
assert
(
tagKV
->
value
);
TAOS_SML_DATA_POINT
*
point
=
taosArrayGetP
(
cTablePoints
,
0
);
if
(
val
==
NULL
||
length
!=
tagKV
->
length
||
memcmp
(
tagKV
->
value
,
val
,
length
)
!=
0
)
{
SSmlSTableSchema
*
sTableSchema
=
taosArrayGet
(
stableSchemas
,
point
->
schemaIdx
);
TAOS_BIND
*
bind
=
taosArrayGet
(
tagBinds
,
tagKV
->
fieldSchemaIdx
);
size_t
numTags
=
taosArrayGetSize
(
sTableSchema
->
tags
);
code
=
changeChildTableTagValue
(
taos
,
cTableName
,
tagKV
->
key
,
bind
);
size_t
numCols
=
taosArrayGetSize
(
sTableSchema
->
fields
);
if
(
code
!=
0
)
{
tscError
(
"change child table tag failed. table name %s, tag %s"
,
cTableName
,
tagKV
->
key
);
goto
cleanup
;
}
}
}
tscDebug
(
"successfully applied point tags. child table: %s"
,
cTableName
);
}
else
{
code
=
creatChildTableIfNotExists
(
taos
,
cTableName
,
sTableName
,
sTableSchema
->
tags
,
tagBinds
);
if
(
code
!=
0
)
{
goto
cleanup
;
}
}
cleanup:
taos_free_result
(
result
);
for
(
int
i
=
0
;
i
<
taosArrayGetSize
(
tagBinds
);
++
i
)
{
TAOS_BIND
*
bind
=
taosArrayGet
(
tagBinds
,
i
);
free
(
bind
->
length
);
}
taosArrayDestroy
(
tagBinds
);
return
code
;
}
static
int32_t
applyChildTableFields
(
TAOS
*
taos
,
SSmlSTableSchema
*
sTableSchema
,
char
*
cTableName
,
SArray
*
cTablePoints
)
{
int32_t
code
=
TSDB_CODE_SUCCESS
;
SArray
*
tagBinds
=
taosArrayInit
(
numTags
,
sizeof
(
TAOS_BIND
));
size_t
numCols
=
taosArrayGetSize
(
sTableSchema
->
fields
);
taosArraySetSize
(
tagBinds
,
numTags
);
size_t
rows
=
taosArrayGetSize
(
cTablePoints
);
for
(
int
j
=
0
;
j
<
numTags
;
++
j
)
{
SArray
*
rowsBind
=
taosArrayInit
(
rows
,
POINTER_BYTES
);
TAOS_BIND
*
bind
=
taosArrayGet
(
tagBinds
,
j
);
for
(
int
i
=
0
;
i
<
rows
;
++
i
)
{
TAOS_SML_DATA_POINT
*
point
=
taosArrayGetP
(
cTablePoints
,
i
);
TAOS_BIND
*
colBinds
=
calloc
(
numCols
,
sizeof
(
TAOS_BIND
));
if
(
colBinds
==
NULL
)
{
tscError
(
"taos_sml_insert insert points, failed to allocated memory for TAOS_BIND, "
"num of rows: %zu, num of cols: %zu"
,
rows
,
numCols
);
return
TSDB_CODE_TSC_OUT_OF_MEMORY
;
}
int
isNullColBind
=
TSDB_TRUE
;
for
(
int
j
=
0
;
j
<
numCols
;
++
j
)
{
TAOS_BIND
*
bind
=
colBinds
+
j
;
bind
->
is_null
=
&
isNullColBind
;
bind
->
is_null
=
&
isNullColBind
;
}
}
for
(
int
j
=
0
;
j
<
point
->
tag
Num
;
++
j
)
{
for
(
int
j
=
0
;
j
<
point
->
field
Num
;
++
j
)
{
TAOS_SML_KV
*
kv
=
point
->
tag
s
+
j
;
TAOS_SML_KV
*
kv
=
point
->
field
s
+
j
;
TAOS_BIND
*
bind
=
taosArrayGet
(
tagBinds
,
kv
->
fieldSchemaIdx
)
;
TAOS_BIND
*
bind
=
colBinds
+
kv
->
fieldSchemaIdx
;
bind
->
buffer_type
=
kv
->
type
;
bind
->
buffer_type
=
kv
->
type
;
bind
->
length
=
malloc
(
sizeof
(
uintptr_t
*
));
bind
->
length
=
malloc
(
sizeof
(
uintptr_t
*
));
*
bind
->
length
=
kv
->
length
;
*
bind
->
length
=
kv
->
length
;
bind
->
buffer
=
kv
->
value
;
bind
->
buffer
=
kv
->
value
;
bind
->
is_null
=
NULL
;
bind
->
is_null
=
NULL
;
}
}
taosArrayPush
(
rowsBind
,
&
colBinds
);
}
size_t
rows
=
taosArrayGetSize
(
cTablePoints
);
code
=
insertChildTableBatch
(
taos
,
cTableName
,
sTableSchema
->
fields
,
rowsBind
);
SArray
*
rowsBind
=
taosArrayInit
(
rows
,
POINTER_BYTES
);
if
(
code
!=
0
)
{
tscError
(
"insert into child table %s failed. error %s"
,
cTableName
,
tstrerror
(
code
));
for
(
int
i
=
0
;
i
<
rows
;
++
i
)
{
}
point
=
taosArrayGetP
(
cTablePoints
,
i
);
TAOS_BIND
*
colBinds
=
calloc
(
numCols
,
sizeof
(
TAOS_BIND
));
for
(
int
i
=
0
;
i
<
rows
;
++
i
)
{
if
(
colBinds
==
NULL
)
{
TAOS_BIND
*
colBinds
=
taosArrayGetP
(
rowsBind
,
i
);
tscError
(
"taos_sml_insert insert points, failed to allocated memory for TAOS_BIND, "
for
(
int
j
=
0
;
j
<
numCols
;
++
j
)
{
"num of rows: %zu, num of cols: %zu"
,
rows
,
numCols
);
TAOS_BIND
*
bind
=
colBinds
+
j
;
}
free
(
bind
->
length
);
for
(
int
j
=
0
;
j
<
numCols
;
++
j
)
{
TAOS_BIND
*
bind
=
colBinds
+
j
;
bind
->
is_null
=
&
isNullColBind
;
}
for
(
int
j
=
0
;
j
<
point
->
fieldNum
;
++
j
)
{
TAOS_SML_KV
*
kv
=
point
->
fields
+
j
;
TAOS_BIND
*
bind
=
colBinds
+
kv
->
fieldSchemaIdx
;
bind
->
buffer_type
=
kv
->
type
;
bind
->
length
=
malloc
(
sizeof
(
uintptr_t
*
));
*
bind
->
length
=
kv
->
length
;
bind
->
buffer
=
kv
->
value
;
bind
->
is_null
=
NULL
;
}
taosArrayPush
(
rowsBind
,
&
colBinds
);
}
}
free
(
colBinds
);
}
taosArrayDestroy
(
rowsBind
);
return
code
;
}
code
=
creatChildTableIfNotExists
(
taos
,
point
->
childTableName
,
point
->
stableName
,
sTableSchema
->
tags
,
tagBinds
);
static
int32_t
applyDataPoints
(
TAOS
*
taos
,
TAOS_SML_DATA_POINT
*
points
,
int32_t
numPoints
,
SArray
*
stableSchemas
)
{
if
(
code
==
0
)
{
int32_t
code
=
TSDB_CODE_SUCCESS
;
code
=
insertChildTableBatch
(
taos
,
point
->
childTableName
,
sTableSchema
->
fields
,
rowsBind
);
if
(
code
!=
0
)
{
tscError
(
"insert into child table %s failed. error %s"
,
point
->
childTableName
,
tstrerror
(
code
));
}
}
else
{
tscError
(
"Create Child Table %s failed, error %s"
,
point
->
childTableName
,
tstrerror
(
code
));
}
for
(
int
i
=
0
;
i
<
taosArrayGetSize
(
tagBinds
);
++
i
)
{
SHashObj
*
cname2points
=
taosHashInit
(
128
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
),
true
,
false
);
TAOS_BIND
*
bind
=
taosArrayGet
(
tagBinds
,
i
);
arrangePointsByChildTableName
(
points
,
numPoints
,
cname2points
,
stableSchemas
);
free
(
bind
->
length
);
}
SArray
**
pCTablePoints
=
taosHashIterate
(
cname2points
,
NULL
);
taosArrayDestroy
(
tagBinds
);
while
(
pCTablePoints
)
{
for
(
int
i
=
0
;
i
<
rows
;
++
i
)
{
SArray
*
cTablePoints
=
*
pCTablePoints
;
TAOS_BIND
*
colBinds
=
taosArrayGetP
(
rowsBind
,
i
);
for
(
int
j
=
0
;
j
<
numCols
;
++
j
)
{
TAOS_SML_DATA_POINT
*
point
=
taosArrayGetP
(
cTablePoints
,
0
);
TAOS_BIND
*
bind
=
colBinds
+
j
;
SSmlSTableSchema
*
sTableSchema
=
taosArrayGet
(
stableSchemas
,
point
->
schemaIdx
);
free
(
bind
->
length
);
code
=
applyChildTableTags
(
taos
,
point
->
childTableName
,
point
->
stableName
,
sTableSchema
,
cTablePoints
);
}
if
(
code
!=
0
)
{
free
(
colBinds
);
tscError
(
"apply child table tags failed. child table %s, error %s"
,
point
->
childTableName
,
tstrerror
(
code
));
goto
cleanup
;
}
}
taosArrayDestroy
(
rowsBind
);
code
=
applyChildTableFields
(
taos
,
sTableSchema
,
point
->
childTableName
,
cTablePoints
);
taosArrayDestroy
(
cTablePoints
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
break
;
tscError
(
"Apply child table fields failed. child table %s, error %s"
,
point
->
childTableName
,
tstrerror
(
code
));
goto
cleanup
;
}
}
tscDebug
(
"successfully applied data points of child table %s"
,
point
->
childTableName
);
pCTablePoints
=
taosHashIterate
(
cname2points
,
pCTablePoints
);
pCTablePoints
=
taosHashIterate
(
cname2points
,
pCTablePoints
);
}
}
cleanup:
pCTablePoints
=
taosHashIterate
(
cname2points
,
NULL
);
while
(
pCTablePoints
)
{
SArray
*
pPoints
=
*
pCTablePoints
;
taosArrayDestroy
(
pPoints
);
pCTablePoints
=
taosHashIterate
(
cname2points
,
pCTablePoints
);
}
taosHashCleanup
(
cname2points
);
taosHashCleanup
(
cname2points
);
return
code
;
return
code
;
}
}
...
@@ -849,15 +985,15 @@ int taos_sml_insert(TAOS* taos, TAOS_SML_DATA_POINT* points, int numPoint) {
...
@@ -849,15 +985,15 @@ int taos_sml_insert(TAOS* taos, TAOS_SML_DATA_POINT* points, int numPoint) {
goto
clean_up
;
goto
clean_up
;
}
}
code
=
reconcile
DBSchemas
(
taos
,
stableSchemas
);
code
=
modify
DBSchemas
(
taos
,
stableSchemas
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
tscError
(
"error change db schema : %s"
,
tstrerror
(
code
));
tscError
(
"error change db schema : %s"
,
tstrerror
(
code
));
goto
clean_up
;
goto
clean_up
;
}
}
code
=
insert
Points
(
taos
,
points
,
numPoint
,
stableSchemas
);
code
=
applyData
Points
(
taos
,
points
,
numPoint
,
stableSchemas
);
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
tscError
(
"error
insert
points : %s"
,
tstrerror
(
code
));
tscError
(
"error
apply data
points : %s"
,
tstrerror
(
code
));
}
}
clean_up:
clean_up:
...
@@ -1823,6 +1959,8 @@ int taos_insert_lines(TAOS* taos, char* lines[], int numLines) {
...
@@ -1823,6 +1959,8 @@ int taos_insert_lines(TAOS* taos, char* lines[], int numLines) {
cleanup:
cleanup:
tscDebug
(
"taos_insert_lines finish inserting %d lines. code: %d"
,
numLines
,
code
);
tscDebug
(
"taos_insert_lines finish inserting %d lines. code: %d"
,
numLines
,
code
);
points
=
TARRAY_GET_START
(
lpPoints
);
numPoints
=
taosArrayGetSize
(
lpPoints
);
for
(
int
i
=
0
;
i
<
numPoints
;
++
i
)
{
for
(
int
i
=
0
;
i
<
numPoints
;
++
i
)
{
destroySmlDataPoint
(
points
+
i
);
destroySmlDataPoint
(
points
+
i
);
}
}
...
...
src/client/src/tscPrepare.c
浏览文件 @
3ee29d8a
...
@@ -1640,7 +1640,7 @@ int taos_stmt_set_tbname_tags(TAOS_STMT* stmt, const char* name, TAOS_BIND* tags
...
@@ -1640,7 +1640,7 @@ int taos_stmt_set_tbname_tags(TAOS_STMT* stmt, const char* name, TAOS_BIND* tags
memcpy
(
&
pTableMetaInfo
->
name
,
&
fullname
,
sizeof
(
fullname
));
memcpy
(
&
pTableMetaInfo
->
name
,
&
fullname
,
sizeof
(
fullname
));
code
=
tscGetTableMeta
(
pSql
,
pTableMetaInfo
);
code
=
tscGetTableMeta
Ex
(
pSql
,
pTableMetaInfo
,
false
,
true
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
STMT_RET
(
code
);
STMT_RET
(
code
);
}
}
...
...
src/client/src/tscProfile.c
浏览文件 @
3ee29d8a
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
#include "os.h"
#include "os.h"
#include "tscLog.h"
#include "tscLog.h"
#include "tsclient.h"
#include "tsclient.h"
#include "tsocket.h"
#include "ttimer.h"
#include "ttimer.h"
#include "tutil.h"
#include "tutil.h"
#include "taosmsg.h"
#include "taosmsg.h"
...
@@ -228,7 +229,7 @@ int tscBuildQueryStreamDesc(void *pMsg, STscObj *pObj) {
...
@@ -228,7 +229,7 @@ int tscBuildQueryStreamDesc(void *pMsg, STscObj *pObj) {
SHeartBeatMsg
*
pHeartbeat
=
pMsg
;
SHeartBeatMsg
*
pHeartbeat
=
pMsg
;
int
allocedQueriesNum
=
pHeartbeat
->
numOfQueries
;
int
allocedQueriesNum
=
pHeartbeat
->
numOfQueries
;
int
allocedStreamsNum
=
pHeartbeat
->
numOfStreams
;
int
allocedStreamsNum
=
pHeartbeat
->
numOfStreams
;
pHeartbeat
->
numOfQueries
=
0
;
pHeartbeat
->
numOfQueries
=
0
;
SQueryDesc
*
pQdesc
=
(
SQueryDesc
*
)
pHeartbeat
->
pData
;
SQueryDesc
*
pQdesc
=
(
SQueryDesc
*
)
pHeartbeat
->
pData
;
...
@@ -252,6 +253,16 @@ int tscBuildQueryStreamDesc(void *pMsg, STscObj *pObj) {
...
@@ -252,6 +253,16 @@ int tscBuildQueryStreamDesc(void *pMsg, STscObj *pObj) {
//pQdesc->useconds = htobe64(pSql->res.useconds);
//pQdesc->useconds = htobe64(pSql->res.useconds);
pQdesc
->
useconds
=
htobe64
(
now
-
pSql
->
stime
);
pQdesc
->
useconds
=
htobe64
(
now
-
pSql
->
stime
);
pQdesc
->
qId
=
htobe64
(
pSql
->
res
.
qId
);
pQdesc
->
qId
=
htobe64
(
pSql
->
res
.
qId
);
pQdesc
->
sqlObjId
=
htobe64
(
pSql
->
self
);
pQdesc
->
pid
=
pHeartbeat
->
pid
;
if
(
pSql
->
cmd
.
pQueryInfo
->
stableQuery
==
true
)
{
pQdesc
->
numOfSub
=
pSql
->
subState
.
numOfSub
;
}
else
{
pQdesc
->
numOfSub
=
1
;
}
pQdesc
->
numOfSub
=
htonl
(
pQdesc
->
numOfSub
);
taosGetFqdn
(
pQdesc
->
fqdn
);
pHeartbeat
->
numOfQueries
++
;
pHeartbeat
->
numOfQueries
++
;
pQdesc
++
;
pQdesc
++
;
...
...
src/client/src/tscSQLParser.c
浏览文件 @
3ee29d8a
...
@@ -6020,7 +6020,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
...
@@ -6020,7 +6020,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
int16_t
i
;
int16_t
i
;
uint32_t
nLen
=
0
;
uint32_t
nLen
=
0
;
for
(
i
=
0
;
i
<
numOfColumns
;
++
i
)
{
for
(
i
=
0
;
i
<
numOfColumns
;
++
i
)
{
nLen
+=
pSchema
[
i
].
colId
!=
columnIndex
.
columnIndex
?
pSchema
[
i
].
bytes
:
pItem
->
bytes
;
nLen
+=
(
i
!=
columnIndex
.
columnIndex
)
?
pSchema
[
i
].
bytes
:
pItem
->
bytes
;
}
}
if
(
nLen
>=
TSDB_MAX_BYTES_PER_ROW
)
{
if
(
nLen
>=
TSDB_MAX_BYTES_PER_ROW
)
{
return
invalidOperationMsg
(
pMsg
,
msg24
);
return
invalidOperationMsg
(
pMsg
,
msg24
);
...
@@ -6066,14 +6066,14 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
...
@@ -6066,14 +6066,14 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
return
invalidOperationMsg
(
pMsg
,
msg22
);
return
invalidOperationMsg
(
pMsg
,
msg22
);
}
}
SSchema
*
pSchema
=
(
SSchema
*
)
pTableMetaInfo
->
pTableMeta
->
schema
;
SSchema
*
pSchema
=
tscGetTableTagSchema
(
pTableMetaInfo
->
pTableMeta
)
;
int16_t
numOf
Columns
=
pTableMetaInfo
->
pTableMeta
->
tableInfo
.
numOfColumns
;
int16_t
numOf
Tags
=
tscGetNumOfTags
(
pTableMetaInfo
->
pTableMeta
)
;
int16_t
i
;
int16_t
i
;
uint32_t
nLen
=
0
;
uint32_t
nLen
=
0
;
for
(
i
=
0
;
i
<
numOf
Column
s
;
++
i
)
{
for
(
i
=
0
;
i
<
numOf
Tag
s
;
++
i
)
{
nLen
+=
pSchema
[
i
].
colId
!=
columnIndex
.
columnIndex
?
pSchema
[
i
].
bytes
:
pItem
->
bytes
;
nLen
+=
(
i
!=
columnIndex
.
columnIndex
)
?
pSchema
[
i
].
bytes
:
pItem
->
bytes
;
}
}
if
(
nLen
>=
TSDB_MAX_
BYTES_PER_ROW
)
{
if
(
nLen
>=
TSDB_MAX_
TAGS_LEN
)
{
return
invalidOperationMsg
(
pMsg
,
msg24
);
return
invalidOperationMsg
(
pMsg
,
msg24
);
}
}
...
...
src/client/src/tscServer.c
浏览文件 @
3ee29d8a
...
@@ -2788,7 +2788,7 @@ int32_t getMultiTableMetaFromMnode(SSqlObj *pSql, SArray* pNameList, SArray* pVg
...
@@ -2788,7 +2788,7 @@ int32_t getMultiTableMetaFromMnode(SSqlObj *pSql, SArray* pNameList, SArray* pVg
return
code
;
return
code
;
}
}
int32_t
tscGetTableMetaImpl
(
SSqlObj
*
pSql
,
STableMetaInfo
*
pTableMetaInfo
,
bool
autocreate
)
{
int32_t
tscGetTableMetaImpl
(
SSqlObj
*
pSql
,
STableMetaInfo
*
pTableMetaInfo
,
bool
autocreate
,
bool
onlyLocal
)
{
assert
(
tIsValidName
(
&
pTableMetaInfo
->
name
));
assert
(
tIsValidName
(
&
pTableMetaInfo
->
name
));
uint32_t
size
=
tscGetTableMetaMaxSize
();
uint32_t
size
=
tscGetTableMetaMaxSize
();
...
@@ -2834,15 +2834,20 @@ int32_t tscGetTableMetaImpl(SSqlObj* pSql, STableMetaInfo *pTableMetaInfo, bool
...
@@ -2834,15 +2834,20 @@ int32_t tscGetTableMetaImpl(SSqlObj* pSql, STableMetaInfo *pTableMetaInfo, bool
}
}
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
if
(
onlyLocal
)
{
return
TSDB_CODE_TSC_NO_META_CACHED
;
}
return
getTableMetaFromMnode
(
pSql
,
pTableMetaInfo
,
autocreate
);
return
getTableMetaFromMnode
(
pSql
,
pTableMetaInfo
,
autocreate
);
}
}
int32_t
tscGetTableMeta
(
SSqlObj
*
pSql
,
STableMetaInfo
*
pTableMetaInfo
)
{
int32_t
tscGetTableMeta
(
SSqlObj
*
pSql
,
STableMetaInfo
*
pTableMetaInfo
)
{
return
tscGetTableMetaImpl
(
pSql
,
pTableMetaInfo
,
false
);
return
tscGetTableMetaImpl
(
pSql
,
pTableMetaInfo
,
false
,
false
);
}
}
int
tscGetTableMetaEx
(
SSqlObj
*
pSql
,
STableMetaInfo
*
pTableMetaInfo
,
bool
createIfNotExists
)
{
int
tscGetTableMetaEx
(
SSqlObj
*
pSql
,
STableMetaInfo
*
pTableMetaInfo
,
bool
createIfNotExists
,
bool
onlyLocal
)
{
return
tscGetTableMetaImpl
(
pSql
,
pTableMetaInfo
,
createIfNotExists
);
return
tscGetTableMetaImpl
(
pSql
,
pTableMetaInfo
,
createIfNotExists
,
onlyLocal
);
}
}
int32_t
tscGetUdfFromNode
(
SSqlObj
*
pSql
,
SQueryInfo
*
pQueryInfo
)
{
int32_t
tscGetUdfFromNode
(
SSqlObj
*
pSql
,
SQueryInfo
*
pQueryInfo
)
{
...
...
src/common/src/ttypes.c
浏览文件 @
3ee29d8a
...
@@ -38,7 +38,11 @@ const int32_t TYPE_BYTES[15] = {
...
@@ -38,7 +38,11 @@ const int32_t TYPE_BYTES[15] = {
#define DO_STATICS(__sum, __min, __max, __minIndex, __maxIndex, _list, _index) \
#define DO_STATICS(__sum, __min, __max, __minIndex, __maxIndex, _list, _index) \
do { \
do { \
(__sum) += (_list)[(_index)]; \
if (_list[(_index)] >= (INT64_MAX - (__sum))) { \
__sum = INT64_MAX; \
} else { \
(__sum) += (_list)[(_index)]; \
} \
if ((__min) > (_list)[(_index)]) { \
if ((__min) > (_list)[(_index)]) { \
(__min) = (_list)[(_index)]; \
(__min) = (_list)[(_index)]; \
(__minIndex) = (_index); \
(__minIndex) = (_index); \
...
...
grafanaplugin
@
4a4d7909
比较
3530c6df
...
4a4d7909
Subproject commit
3530c6df097134a410bacec6b3cd013ef38a61aa
Subproject commit
4a4d79099b076b8ff12d5b4fdbcba54049a6866d
src/connector/jdbc/CMakeLists.txt
浏览文件 @
3ee29d8a
...
@@ -8,7 +8,7 @@ IF (TD_MVN_INSTALLED)
...
@@ -8,7 +8,7 @@ IF (TD_MVN_INSTALLED)
ADD_CUSTOM_COMMAND
(
OUTPUT
${
JDBC_CMD_NAME
}
ADD_CUSTOM_COMMAND
(
OUTPUT
${
JDBC_CMD_NAME
}
POST_BUILD
POST_BUILD
COMMAND mvn -Dmaven.test.skip=true install -f
${
CMAKE_CURRENT_SOURCE_DIR
}
/pom.xml
COMMAND mvn -Dmaven.test.skip=true install -f
${
CMAKE_CURRENT_SOURCE_DIR
}
/pom.xml
COMMAND
${
CMAKE_COMMAND
}
-E copy
${
CMAKE_CURRENT_SOURCE_DIR
}
/target/taos-jdbcdriver-
*
-dist.jar
${
LIBRARY_OUTPUT_PATH
}
COMMAND
${
CMAKE_COMMAND
}
-E copy
${
CMAKE_CURRENT_SOURCE_DIR
}
/target/taos-jdbcdriver-
2.0.33
-dist.jar
${
LIBRARY_OUTPUT_PATH
}
COMMAND mvn -Dmaven.test.skip=true clean -f
${
CMAKE_CURRENT_SOURCE_DIR
}
/pom.xml
COMMAND mvn -Dmaven.test.skip=true clean -f
${
CMAKE_CURRENT_SOURCE_DIR
}
/pom.xml
COMMENT
"build jdbc driver"
)
COMMENT
"build jdbc driver"
)
ADD_CUSTOM_TARGET
(
${
JDBC_TARGET_NAME
}
ALL WORKING_DIRECTORY
${
EXECUTABLE_OUTPUT_PATH
}
DEPENDS
${
JDBC_CMD_NAME
}
)
ADD_CUSTOM_TARGET
(
${
JDBC_TARGET_NAME
}
ALL WORKING_DIRECTORY
${
EXECUTABLE_OUTPUT_PATH
}
DEPENDS
${
JDBC_CMD_NAME
}
)
...
...
src/connector/jdbc/deploy-pom.xml
浏览文件 @
3ee29d8a
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<groupId>
com.taosdata.jdbc
</groupId>
<groupId>
com.taosdata.jdbc
</groupId>
<artifactId>
taos-jdbcdriver
</artifactId>
<artifactId>
taos-jdbcdriver
</artifactId>
<version>
2.0.3
2
</version>
<version>
2.0.3
3
</version>
<packaging>
jar
</packaging>
<packaging>
jar
</packaging>
<name>
JDBCDriver
</name>
<name>
JDBCDriver
</name>
...
...
src/inc/taoserror.h
浏览文件 @
3ee29d8a
...
@@ -102,6 +102,7 @@ int32_t* taosGetErrno();
...
@@ -102,6 +102,7 @@ int32_t* taosGetErrno();
#define TSDB_CODE_TSC_EXCEED_SQL_LIMIT TAOS_DEF_ERROR_CODE(0, 0x0219) //"SQL statement too long check maxSQLLength config")
#define TSDB_CODE_TSC_EXCEED_SQL_LIMIT TAOS_DEF_ERROR_CODE(0, 0x0219) //"SQL statement too long check maxSQLLength config")
#define TSDB_CODE_TSC_FILE_EMPTY TAOS_DEF_ERROR_CODE(0, 0x021A) //"File is empty")
#define TSDB_CODE_TSC_FILE_EMPTY TAOS_DEF_ERROR_CODE(0, 0x021A) //"File is empty")
#define TSDB_CODE_TSC_LINE_SYNTAX_ERROR TAOS_DEF_ERROR_CODE(0, 0x021B) //"Syntax error in Line")
#define TSDB_CODE_TSC_LINE_SYNTAX_ERROR TAOS_DEF_ERROR_CODE(0, 0x021B) //"Syntax error in Line")
#define TSDB_CODE_TSC_NO_META_CACHED TAOS_DEF_ERROR_CODE(0, 0x021C) //"No table meta cached")
// mnode
// mnode
#define TSDB_CODE_MND_MSG_NOT_PROCESSED TAOS_DEF_ERROR_CODE(0, 0x0300) //"Message not processed")
#define TSDB_CODE_MND_MSG_NOT_PROCESSED TAOS_DEF_ERROR_CODE(0, 0x0300) //"Message not processed")
...
...
src/inc/taosmsg.h
浏览文件 @
3ee29d8a
...
@@ -874,6 +874,10 @@ typedef struct {
...
@@ -874,6 +874,10 @@ typedef struct {
int64_t
useconds
;
int64_t
useconds
;
int64_t
stime
;
int64_t
stime
;
uint64_t
qId
;
uint64_t
qId
;
uint64_t
sqlObjId
;
int32_t
pid
;
char
fqdn
[
TSDB_FQDN_LEN
];
int32_t
numOfSub
;
}
SQueryDesc
;
}
SQueryDesc
;
typedef
struct
{
typedef
struct
{
...
...
src/kit/taosdemo/taosdemo.c
浏览文件 @
3ee29d8a
...
@@ -743,8 +743,8 @@ static void printHelp() {
...
@@ -743,8 +743,8 @@ static void printHelp() {
"The number of threads. Default is 10."
);
"The number of threads. Default is 10."
);
printf
(
"%s%s%s%s
\n
"
,
indent
,
"-i"
,
indent
,
printf
(
"%s%s%s%s
\n
"
,
indent
,
"-i"
,
indent
,
"The sleep time (ms) between insertion. Default is 0."
);
"The sleep time (ms) between insertion. Default is 0."
);
printf
(
"%s%s%s%s%d
\n
"
,
indent
,
"-S"
,
indent
,
printf
(
"%s%s%s%s%d
.
\n
"
,
indent
,
"-S"
,
indent
,
"The timestamp step between insertion. Default is
%d.
"
,
"The timestamp step between insertion. Default is "
,
DEFAULT_TIMESTAMP_STEP
);
DEFAULT_TIMESTAMP_STEP
);
printf
(
"%s%s%s%s
\n
"
,
indent
,
"-r"
,
indent
,
printf
(
"%s%s%s%s
\n
"
,
indent
,
"-r"
,
indent
,
"The number of records per request. Default is 30000."
);
"The number of records per request. Default is 30000."
);
...
@@ -5940,14 +5940,15 @@ static int32_t prepareStbStmt(
...
@@ -5940,14 +5940,15 @@ static int32_t prepareStbStmt(
if
(
-
1
==
prepareStbStmtBind
(
if
(
-
1
==
prepareStbStmtBind
(
tagsArray
,
stbInfo
,
tagRand
,
-
1
,
-
1
,
false
/* is tag */
))
{
tagsArray
,
stbInfo
,
tagRand
,
-
1
,
-
1
,
false
/* is tag */
))
{
free
(
tagsArray
);
tmfree
(
tagsValBuf
);
tmfree
(
tagsArray
);
return
-
1
;
return
-
1
;
}
}
ret
=
taos_stmt_set_tbname_tags
(
stmt
,
tableName
,
(
TAOS_BIND
*
)
tagsArray
);
ret
=
taos_stmt_set_tbname_tags
(
stmt
,
tableName
,
(
TAOS_BIND
*
)
tagsArray
);
tmfree
(
tagsValBuf
);
tmfree
(
tagsValBuf
);
tmfree
(
(
char
*
)
tagsArray
);
tmfree
(
tagsArray
);
}
else
{
}
else
{
ret
=
taos_stmt_set_tbname
(
stmt
,
tableName
);
ret
=
taos_stmt_set_tbname
(
stmt
,
tableName
);
}
}
...
...
src/kit/taosdump/taosdump.c
浏览文件 @
3ee29d8a
...
@@ -453,6 +453,8 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
...
@@ -453,6 +453,8 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
case
'E'
:
case
'E'
:
g_args
.
end_time
=
atol
(
arg
);
g_args
.
end_time
=
atol
(
arg
);
break
;
break
;
case
'C'
:
break
;
case
'B'
:
case
'B'
:
g_args
.
data_batch
=
atoi
(
arg
);
g_args
.
data_batch
=
atoi
(
arg
);
if
(
g_args
.
data_batch
>
MAX_RECORDS_PER_REQ
)
{
if
(
g_args
.
data_batch
>
MAX_RECORDS_PER_REQ
)
{
...
...
src/mnode/src/mnodeProfile.c
浏览文件 @
3ee29d8a
...
@@ -32,6 +32,7 @@
...
@@ -32,6 +32,7 @@
#define CONN_KEEP_TIME (tsShellActivityTimer * 3)
#define CONN_KEEP_TIME (tsShellActivityTimer * 3)
#define CONN_CHECK_TIME (tsShellActivityTimer * 2)
#define CONN_CHECK_TIME (tsShellActivityTimer * 2)
#define QUERY_ID_SIZE 20
#define QUERY_ID_SIZE 20
#define QUERY_OBJ_ID_SIZE 10
#define QUERY_STREAM_SAVE_SIZE 20
#define QUERY_STREAM_SAVE_SIZE 20
static
SCacheObj
*
tsMnodeConnCache
=
NULL
;
static
SCacheObj
*
tsMnodeConnCache
=
NULL
;
...
@@ -361,6 +362,30 @@ static int32_t mnodeGetQueryMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
...
@@ -361,6 +362,30 @@ static int32_t mnodeGetQueryMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pC
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
cols
++
;
pShow
->
bytes
[
cols
]
=
QUERY_OBJ_ID_SIZE
+
VARSTR_HEADER_SIZE
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_BINARY
;
strcpy
(
pSchema
[
cols
].
name
,
"sql_obj_id"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
pShow
->
bytes
[
cols
]
=
4
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_INT
;
strcpy
(
pSchema
[
cols
].
name
,
"pid"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
pShow
->
bytes
[
cols
]
=
TSDB_EP_LEN
+
VARSTR_HEADER_SIZE
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_BINARY
;
strcpy
(
pSchema
[
cols
].
name
,
"ep"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
pShow
->
bytes
[
cols
]
=
4
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_INT
;
strcpy
(
pSchema
[
cols
].
name
,
"sub_queries"
);
pSchema
[
cols
].
bytes
=
htons
(
pShow
->
bytes
[
cols
]);
cols
++
;
pShow
->
bytes
[
cols
]
=
TSDB_SHOW_SQL_LEN
+
VARSTR_HEADER_SIZE
;
pShow
->
bytes
[
cols
]
=
TSDB_SHOW_SQL_LEN
+
VARSTR_HEADER_SIZE
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_BINARY
;
pSchema
[
cols
].
type
=
TSDB_DATA_TYPE_BINARY
;
strcpy
(
pSchema
[
cols
].
name
,
"sql"
);
strcpy
(
pSchema
[
cols
].
name
,
"sql"
);
...
@@ -434,6 +459,29 @@ static int32_t mnodeRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, v
...
@@ -434,6 +459,29 @@ static int32_t mnodeRetrieveQueries(SShowObj *pShow, char *data, int32_t rows, v
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
*
(
int64_t
*
)
pWrite
=
htobe64
(
pDesc
->
useconds
);
*
(
int64_t
*
)
pWrite
=
htobe64
(
pDesc
->
useconds
);
cols
++
;
cols
++
;
/*
pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;
*(int64_t *)pWrite = htobe64(pDesc->sqlObjId);
cols++;
*/
snprintf
(
str
,
tListLen
(
str
),
"0x%08"
PRIx64
,
htobe64
(
pDesc
->
sqlObjId
));
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
str
,
pShow
->
bytes
[
cols
]);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
*
(
int32_t
*
)
pWrite
=
htonl
(
pDesc
->
pid
);
cols
++
;
char
epBuf
[
TSDB_EP_LEN
+
1
]
=
{
0
};
snprintf
(
epBuf
,
tListLen
(
epBuf
),
"%s:%u"
,
pDesc
->
fqdn
,
pConnObj
->
port
);
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
epBuf
,
pShow
->
bytes
[
cols
]);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
*
(
int32_t
*
)
pWrite
=
htonl
(
pDesc
->
numOfSub
);
cols
++
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
pWrite
=
data
+
pShow
->
offset
[
cols
]
*
rows
+
pShow
->
bytes
[
cols
]
*
numOfRows
;
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pDesc
->
sql
,
pShow
->
bytes
[
cols
]);
STR_WITH_MAXSIZE_TO_VARSTR
(
pWrite
,
pDesc
->
sql
,
pShow
->
bytes
[
cols
]);
...
...
src/query/src/qSqlParser.c
浏览文件 @
3ee29d8a
...
@@ -712,9 +712,8 @@ void tSetColumnType(TAOS_FIELD *pField, SStrToken *type) {
...
@@ -712,9 +712,8 @@ void tSetColumnType(TAOS_FIELD *pField, SStrToken *type) {
}
else
{
}
else
{
int32_t
bytes
=
-
(
int32_t
)(
type
->
type
);
int32_t
bytes
=
-
(
int32_t
)(
type
->
type
);
if
(
bytes
>
(
TSDB_MAX_NCHAR_LEN
-
VARSTR_HEADER_SIZE
)
/
TSDB_NCHAR_SIZE
)
{
if
(
bytes
>
(
TSDB_MAX_NCHAR_LEN
-
VARSTR_HEADER_SIZE
)
/
TSDB_NCHAR_SIZE
)
{
// we have to postpone reporting the error because it cannot be done here
// overflowed. set bytes to -1 so that error can be reported
// as pField->bytes is int16_t, use 'TSDB_MAX_NCHAR_LEN + 1' to avoid overflow
bytes
=
-
1
;
bytes
=
TSDB_MAX_NCHAR_LEN
+
1
;
}
else
{
}
else
{
bytes
=
bytes
*
TSDB_NCHAR_SIZE
+
VARSTR_HEADER_SIZE
;
bytes
=
bytes
*
TSDB_NCHAR_SIZE
+
VARSTR_HEADER_SIZE
;
}
}
...
@@ -727,8 +726,8 @@ void tSetColumnType(TAOS_FIELD *pField, SStrToken *type) {
...
@@ -727,8 +726,8 @@ void tSetColumnType(TAOS_FIELD *pField, SStrToken *type) {
}
else
{
}
else
{
int32_t
bytes
=
-
(
int32_t
)(
type
->
type
);
int32_t
bytes
=
-
(
int32_t
)(
type
->
type
);
if
(
bytes
>
TSDB_MAX_BINARY_LEN
-
VARSTR_HEADER_SIZE
)
{
if
(
bytes
>
TSDB_MAX_BINARY_LEN
-
VARSTR_HEADER_SIZE
)
{
//
refer comment for NCHAR above
//
overflowed. set bytes to -1 so that error can be reported
bytes
=
TSDB_MAX_BINARY_LEN
+
1
;
bytes
=
-
1
;
}
else
{
}
else
{
bytes
+=
VARSTR_HEADER_SIZE
;
bytes
+=
VARSTR_HEADER_SIZE
;
}
}
...
...
src/util/src/terror.c
浏览文件 @
3ee29d8a
...
@@ -110,6 +110,8 @@ TAOS_DEFINE_ERROR(TSDB_CODE_TSC_DB_NOT_SELECTED, "Database not specifie
...
@@ -110,6 +110,8 @@ TAOS_DEFINE_ERROR(TSDB_CODE_TSC_DB_NOT_SELECTED, "Database not specifie
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_TABLE_NAME
,
"Table does not exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_INVALID_TABLE_NAME
,
"Table does not exist"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_EXCEED_SQL_LIMIT
,
"SQL statement too long, check maxSQLLength config"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_EXCEED_SQL_LIMIT
,
"SQL statement too long, check maxSQLLength config"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_FILE_EMPTY
,
"File is empty"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_FILE_EMPTY
,
"File is empty"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_LINE_SYNTAX_ERROR
,
"Syntax error in Line"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_NO_META_CACHED
,
"No table meta cached"
)
// mnode
// mnode
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_MSG_NOT_PROCESSED
,
"Message not processed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_MSG_NOT_PROCESSED
,
"Message not processed"
)
...
...
tests/examples/c/apitest.c
浏览文件 @
3ee29d8a
...
@@ -954,7 +954,7 @@ int32_t verify_schema_less(TAOS* taos) {
...
@@ -954,7 +954,7 @@ int32_t verify_schema_less(TAOS* taos) {
result
=
taos_query
(
taos
,
"drop database if exists test;"
);
result
=
taos_query
(
taos
,
"drop database if exists test;"
);
taos_free_result
(
result
);
taos_free_result
(
result
);
usleep
(
100000
);
usleep
(
100000
);
result
=
taos_query
(
taos
,
"create database test precision 'us';"
);
result
=
taos_query
(
taos
,
"create database test precision 'us'
update 1
;"
);
taos_free_result
(
result
);
taos_free_result
(
result
);
usleep
(
100000
);
usleep
(
100000
);
...
@@ -963,6 +963,8 @@ int32_t verify_schema_less(TAOS* taos) {
...
@@ -963,6 +963,8 @@ int32_t verify_schema_less(TAOS* taos) {
taos_free_result
(
result
);
taos_free_result
(
result
);
usleep
(
100000
);
usleep
(
100000
);
int
code
=
0
;
char
*
lines
[]
=
{
char
*
lines
[]
=
{
"st,t1=3i64,t2=4f64,t3=
\"
t3
\"
c1=3i64,c3=L
\"
passit
\"
,c2=false,c4=4f64 1626006833639000000ns"
,
"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"
,
"st,t1=4i64,t3=
\"
t4
\"
,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin
\"
,c2=true,c4=5f64,c5=5f64 1626006833640000000ns"
,
...
@@ -975,8 +977,8 @@ int32_t verify_schema_less(TAOS* taos) {
...
@@ -975,8 +977,8 @@ int32_t verify_schema_less(TAOS* taos) {
"stf,t1=4i64,t3=
\"
t4
\"
,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin_stf
\"
,c2=false,c5=5f64,c6=7u64 1626006933641000000ns"
"stf,t1=4i64,t3=
\"
t4
\"
,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin_stf
\"
,c2=false,c5=5f64,c6=7u64 1626006933641000000ns"
};
};
int
code
=
0
;
code
=
taos_insert_lines
(
taos
,
lines
,
sizeof
(
lines
)
/
sizeof
(
char
*
));
code
=
taos_insert_lines
(
taos
,
lines
,
sizeof
(
lines
)
/
sizeof
(
char
*
));
char
*
lines2
[]
=
{
char
*
lines2
[]
=
{
"stg,t1=3i64,t2=4f64,t3=
\"
t3
\"
c1=3i64,c3=L
\"
passit
\"
,c2=false,c4=4f64 1626006833639000000ns"
,
"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"
"stg,t1=4i64,t3=
\"
t4
\"
,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin
\"
,c2=true,c4=5f64,c5=5f64 1626006833640000000ns"
...
@@ -989,7 +991,27 @@ int32_t verify_schema_less(TAOS* taos) {
...
@@ -989,7 +991,27 @@ int32_t verify_schema_less(TAOS* taos) {
"sth,t1=4i64,t2=5f64,t4=5f64 c1=3i64,c3=L
\"
passitagin_stf
\"
,c2=false,c5=5f64,c6=7u64 1626006933654ms"
"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
);
code
=
taos_insert_lines
(
taos
,
lines3
,
2
);
return
code
;
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
);
}
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
...
...
tests/examples/c/schemaless.c
浏览文件 @
3ee29d8a
...
@@ -9,8 +9,8 @@
...
@@ -9,8 +9,8 @@
#include <unistd.h>
#include <unistd.h>
int
numSuperTables
=
8
;
int
numSuperTables
=
8
;
int
numChildTables
=
102
4
;
int
numChildTables
=
4
;
int
numRowsPerChildTable
=
12
8
;
int
numRowsPerChildTable
=
204
8
;
void
shuffle
(
char
**
lines
,
size_t
n
)
void
shuffle
(
char
**
lines
,
size_t
n
)
{
{
...
...
tests/pytest/fulltest.sh
浏览文件 @
3ee29d8a
...
@@ -44,6 +44,7 @@ python3 ./test.py -f table/del_stable.py
...
@@ -44,6 +44,7 @@ python3 ./test.py -f table/del_stable.py
#stable
#stable
python3 ./test.py
-f
stable/insert.py
python3 ./test.py
-f
stable/insert.py
python3 test.py
-f
tools/taosdemoAllTest/taosdemoTestInsertWithJsonStmt.py
# tag
# tag
python3 ./test.py
-f
tag_lite/filter.py
python3 ./test.py
-f
tag_lite/filter.py
...
@@ -353,8 +354,7 @@ python3 ./test.py -f alter/alter_debugFlag.py
...
@@ -353,8 +354,7 @@ python3 ./test.py -f alter/alter_debugFlag.py
python3 ./test.py
-f
query/queryBetweenAnd.py
python3 ./test.py
-f
query/queryBetweenAnd.py
python3 ./test.py
-f
tag_lite/alter_tag.py
python3 ./test.py
-f
tag_lite/alter_tag.py
#python3 test.py -f tools/taosdemoAllTest/taosdemoTestInsertWithJson.py
python3 test.py
-f
tools/taosdemoAllTest/taosdemoTestInsertWithJson.py
#python3 test.py -f tools/taosdemoAllTest/taosdemoTestInsertWithJsonStmt.py
python3 test.py
-f
tools/taosdemoAllTest/taosdemoTestQueryWithJson.py
python3 test.py
-f
tools/taosdemoAllTest/taosdemoTestQueryWithJson.py
python3 test.py
-f
tools/taosdemoAllTest/TD-4985/query-limit-offset.py
python3 test.py
-f
tools/taosdemoAllTest/TD-4985/query-limit-offset.py
python3 ./test.py
-f
tag_lite/drop_auto_create.py
python3 ./test.py
-f
tag_lite/drop_auto_create.py
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录