Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
6e743d53
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,发现更多精彩内容 >>
提交
6e743d53
编写于
7月 28, 2021
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[td-225]fix the bug found by regression test.
上级
e0046dbb
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
71 addition
and
51 deletion
+71
-51
src/client/inc/tsclient.h
src/client/inc/tsclient.h
+2
-0
src/client/src/tscAsync.c
src/client/src/tscAsync.c
+40
-46
src/client/src/tscServer.c
src/client/src/tscServer.c
+9
-1
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+18
-4
tests/pytest/insert/line_insert.py
tests/pytest/insert/line_insert.py
+2
-0
未找到文件。
src/client/inc/tsclient.h
浏览文件 @
6e743d53
...
...
@@ -376,6 +376,8 @@ void tscResetSqlCmd(SSqlCmd *pCmd, bool removeMeta);
*/
void
tscFreeSqlResult
(
SSqlObj
*
pSql
);
void
*
tscCleanupTableMetaMap
(
SHashObj
*
pTableMetaMap
);
/**
* free sql object, release allocated resource
* @param pObj
...
...
src/client/src/tscAsync.c
浏览文件 @
6e743d53
...
...
@@ -336,7 +336,7 @@ void tscTableMetaCallBack(void *param, TAOS_RES *res, int code) {
pRes
->
code
=
code
;
SSqlObj
*
sub
=
(
SSqlObj
*
)
res
;
const
char
*
msg
=
(
sub
->
cmd
.
command
==
TSDB_SQL_STABLEVGROUP
)
?
"vgroup-list"
:
"
[multi-]
tableMeta"
;
const
char
*
msg
=
(
sub
->
cmd
.
command
==
TSDB_SQL_STABLEVGROUP
)
?
"vgroup-list"
:
"
multi-
tableMeta"
;
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
tscError
(
"0x%"
PRIx64
" get %s failed, code:%s"
,
pSql
->
self
,
msg
,
tstrerror
(
code
));
goto
_error
;
...
...
@@ -346,62 +346,56 @@ void tscTableMetaCallBack(void *param, TAOS_RES *res, int code) {
if
(
pSql
->
pStream
==
NULL
)
{
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfo
(
pCmd
);
// assert(TSDB_QUERY_HAS_TYPE(pQueryInfo->type, (TSDB_QUERY_TYPE_STABLE_SUBQUERY | TSDB_QUERY_TYPE_SUBQUERY | TSDB_QUERY_TYPE_TAG_FILTER_QUERY)) == 0);
if
(
TSDB_QUERY_HAS_TYPE
(
pQueryInfo
->
type
,
TSDB_QUERY_TYPE_INSERT
))
{
tscDebug
(
"0x%"
PRIx64
" continue parse sql after get table-meta"
,
pSql
->
self
);
// super table subquery failure will be ignored
// if (!TSDB_QUERY_HAS_TYPE(pQueryInfo->type, (TSDB_QUERY_TYPE_STABLE_SUBQUERY | TSDB_QUERY_TYPE_SUBQUERY |
// TSDB_QUERY_TYPE_TAG_FILTER_QUERY))) {
if
(
TSDB_QUERY_HAS_TYPE
(
pQueryInfo
->
type
,
TSDB_QUERY_TYPE_INSERT
))
{
tscDebug
(
"0x%"
PRIx64
" continue parse sql after get table-meta"
,
pSql
->
self
);
code
=
tsParseSql
(
pSql
,
false
);
if
(
code
==
TSDB_CODE_TSC_ACTION_IN_PROGRESS
)
{
taosReleaseRef
(
tscObjRef
,
pSql
->
self
);
return
;
}
else
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
goto
_error
;
}
code
=
tsParseSql
(
pSql
,
false
);
if
(
TSDB_QUERY_HAS_TYPE
(
pCmd
->
insertParam
.
insertType
,
TSDB_QUERY_TYPE_STMT_INSERT
))
{
// stmt insert
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
code
=
tscGetTableMeta
(
pSql
,
pTableMetaInfo
);
if
(
code
==
TSDB_CODE_TSC_ACTION_IN_PROGRESS
)
{
taosReleaseRef
(
tscObjRef
,
pSql
->
self
);
return
;
}
else
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
goto
_error
;
}
if
(
TSDB_QUERY_HAS_TYPE
(
pCmd
->
insertParam
.
insertType
,
TSDB_QUERY_TYPE_STMT_INSERT
))
{
// stmt insert
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
code
=
tscGetTableMeta
(
pSql
,
pTableMetaInfo
);
if
(
code
==
TSDB_CODE_TSC_ACTION_IN_PROGRESS
)
{
taosReleaseRef
(
tscObjRef
,
pSql
->
self
);
return
;
}
else
{
assert
(
code
==
TSDB_CODE_SUCCESS
);
}
(
*
pSql
->
fp
)(
pSql
->
param
,
pSql
,
code
);
}
else
if
(
TSDB_QUERY_HAS_TYPE
(
pCmd
->
insertParam
.
insertType
,
TSDB_QUERY_TYPE_FILE_INSERT
))
{
// file insert
tscImportDataFromFile
(
pSql
);
}
else
{
// sql string insert
tscHandleMultivnodeInsert
(
pSql
);
}
}
else
{
if
(
pSql
->
retryReason
!=
TSDB_CODE_SUCCESS
)
{
tscDebug
(
"0x%"
PRIx64
" update cached table-meta, re-validate sql statement and send query again"
,
pSql
->
self
);
tscResetSqlCmd
(
pCmd
,
false
);
pSql
->
retryReason
=
TSDB_CODE_SUCCESS
;
}
else
{
tscDebug
(
"0x%"
PRIx64
" cached table-meta, continue validate sql statement and send query"
,
pSql
->
self
);
assert
(
code
==
TSDB_CODE_SUCCESS
);
}
code
=
tsParseSql
(
pSql
,
true
);
if
(
code
==
TSDB_CODE_TSC_ACTION_IN_PROGRESS
)
{
taosReleaseRef
(
tscObjRef
,
pSql
->
self
);
return
;
}
else
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
goto
_error
;
}
(
*
pSql
->
fp
)(
pSql
->
param
,
pSql
,
code
);
}
else
if
(
TSDB_QUERY_HAS_TYPE
(
pCmd
->
insertParam
.
insertType
,
TSDB_QUERY_TYPE_FILE_INSERT
))
{
// file insert
tscImportDataFromFile
(
pSql
);
}
else
{
// sql string insert
tscHandleMultivnodeInsert
(
pSql
);
}
}
else
{
if
(
pSql
->
retryReason
!=
TSDB_CODE_SUCCESS
)
{
tscDebug
(
"0x%"
PRIx64
" update cached table-meta, re-validate sql statement and send query again"
,
pSql
->
self
);
tscResetSqlCmd
(
pCmd
,
false
);
pSql
->
retryReason
=
TSDB_CODE_SUCCESS
;
}
else
{
tscDebug
(
"0x%"
PRIx64
" cached table-meta, continue validate sql statement and send query"
,
pSql
->
self
);
}
SQueryInfo
*
pQueryInfo1
=
tscGetQueryInfo
(
pCmd
);
executeQuery
(
pSql
,
pQueryInfo1
);
code
=
tsParseSql
(
pSql
,
true
);
if
(
code
==
TSDB_CODE_TSC_ACTION_IN_PROGRESS
)
{
taosReleaseRef
(
tscObjRef
,
pSql
->
self
);
return
;
}
else
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
goto
_error
;
}
taosReleaseRef
(
tscObjRef
,
pSql
->
self
);
return
;
// }
SQueryInfo
*
pQueryInfo1
=
tscGetQueryInfo
(
pCmd
);
executeQuery
(
pSql
,
pQueryInfo1
);
}
taosReleaseRef
(
tscObjRef
,
pSql
->
self
);
return
;
}
else
{
// stream computing
tscDebug
(
"0x%"
PRIx64
" stream:%p meta is updated, start new query, command:%d"
,
pSql
->
self
,
pSql
->
pStream
,
pCmd
->
command
);
...
...
src/client/src/tscServer.c
浏览文件 @
6e743d53
...
...
@@ -2224,6 +2224,9 @@ int tscProcessMultiTableMetaRsp(SSqlObj *pSql) {
if
(
pMultiMeta
->
metaClone
==
1
||
pTableMeta
->
tableType
==
TSDB_SUPER_TABLE
)
{
STableMetaVgroupInfo
p
=
{.
pTableMeta
=
pTableMeta
,};
size_t
keyLen
=
strnlen
(
pMetaMsg
->
tableFname
,
TSDB_TABLE_FNAME_LEN
);
void
*
t
=
taosHashGet
(
pParentCmd
->
pTableMetaMap
,
pMetaMsg
->
tableFname
,
keyLen
);
assert
(
t
==
NULL
);
taosHashPut
(
pParentCmd
->
pTableMetaMap
,
pMetaMsg
->
tableFname
,
keyLen
,
&
p
,
sizeof
(
STableMetaVgroupInfo
));
}
else
{
freeMeta
=
true
;
...
...
@@ -2915,7 +2918,9 @@ static void freeElem(void* p) {
* @return status code
*/
int
tscRenewTableMeta
(
SSqlObj
*
pSql
,
int32_t
tableIndex
)
{
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfo
(
&
pSql
->
cmd
);
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfo
(
pCmd
);
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
tableIndex
);
char
name
[
TSDB_TABLE_FNAME_LEN
]
=
{
0
};
...
...
@@ -2934,6 +2939,9 @@ int tscRenewTableMeta(SSqlObj *pSql, int32_t tableIndex) {
// remove stored tableMeta info in hash table
tscRemoveTableMetaBuf
(
pTableMetaInfo
,
pSql
->
self
);
pCmd
->
pTableMetaMap
=
tscCleanupTableMetaMap
(
pCmd
->
pTableMetaMap
);
pCmd
->
pTableMetaMap
=
taosHashInit
(
4
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BINARY
),
false
,
HASH_NO_LOCK
);
SArray
*
pNameList
=
taosArrayInit
(
1
,
POINTER_BYTES
);
SArray
*
vgroupList
=
taosArrayInit
(
1
,
POINTER_BYTES
);
...
...
src/client/src/tscUtil.c
浏览文件 @
6e743d53
...
...
@@ -1398,6 +1398,22 @@ void tscResetSqlCmd(SSqlCmd* pCmd, bool clearCachedMeta) {
}
}
void
*
tscCleanupTableMetaMap
(
SHashObj
*
pTableMetaMap
)
{
if
(
pTableMetaMap
==
NULL
)
{
return
NULL
;
}
STableMetaVgroupInfo
*
p
=
taosHashIterate
(
pTableMetaMap
,
NULL
);
while
(
p
)
{
taosArrayDestroy
(
p
->
vgroupIdList
);
tfree
(
p
->
pTableMeta
);
p
=
taosHashIterate
(
pTableMetaMap
,
p
);
}
taosHashCleanup
(
pTableMetaMap
);
return
NULL
;
}
void
tscFreeSqlResult
(
SSqlObj
*
pSql
)
{
SSqlRes
*
pRes
=
&
pSql
->
res
;
...
...
@@ -3481,11 +3497,9 @@ SSqlObj* createSimpleSubObj(SSqlObj* pSql, __async_cb_func_t fp, void* param, in
SSqlCmd
*
pCmd
=
&
pNew
->
cmd
;
pCmd
->
command
=
cmd
;
tsem_init
(
&
pNew
->
rspSem
,
0
,
0
);
if
(
tscAddQueryInfo
(
pCmd
)
!=
TSDB_CODE_SUCCESS
)
{
#ifdef __APPLE__
// to satisfy later tsem_destroy in taos_free_result
tsem_init
(
&
pNew
->
rspSem
,
0
,
0
);
#endif // __APPLE__
tscFreeSqlObj
(
pNew
);
return
NULL
;
}
...
...
tests/pytest/insert/line_insert.py
浏览文件 @
6e743d53
...
...
@@ -77,6 +77,8 @@ class TDTestCase:
"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"
])
tdSql
.
execute
(
'reset query cache'
)
tdSql
.
query
(
'select tbname, * from sth'
)
tdSql
.
checkRows
(
2
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录