Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
eede5a77
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
eede5a77
编写于
12月 04, 2020
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/develop' into feature/wal
上级
94756ccd
8fdcba9f
变更
33
显示空白变更内容
内联
并排
Showing
33 changed file
with
173 addition
and
82 deletion
+173
-82
documentation20/webdocs/markdowndocs/faq-ch.md
documentation20/webdocs/markdowndocs/faq-ch.md
+14
-1
packaging/cfg/taos.cfg
packaging/cfg/taos.cfg
+4
-1
src/client/src/tscFunctionImpl.c
src/client/src/tscFunctionImpl.c
+4
-4
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+17
-4
src/client/src/tscProfile.c
src/client/src/tscProfile.c
+2
-0
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+4
-0
src/client/src/tscSystem.c
src/client/src/tscSystem.c
+1
-1
src/common/inc/tglobal.h
src/common/inc/tglobal.h
+1
-0
src/common/src/tglobal.c
src/common/src/tglobal.c
+14
-1
src/connector/python/linux/python2/setup.py
src/connector/python/linux/python2/setup.py
+1
-1
src/connector/python/linux/python2/taos/__init__.py
src/connector/python/linux/python2/taos/__init__.py
+1
-1
src/connector/python/linux/python2/taos/cinterface.py
src/connector/python/linux/python2/taos/cinterface.py
+2
-0
src/connector/python/linux/python2/taos/cursor.py
src/connector/python/linux/python2/taos/cursor.py
+2
-2
src/connector/python/linux/python3/setup.py
src/connector/python/linux/python3/setup.py
+1
-1
src/connector/python/linux/python3/taos/__init__.py
src/connector/python/linux/python3/taos/__init__.py
+2
-2
src/connector/python/linux/python3/taos/cinterface.py
src/connector/python/linux/python3/taos/cinterface.py
+2
-0
src/connector/python/linux/python3/taos/cursor.py
src/connector/python/linux/python3/taos/cursor.py
+2
-2
src/connector/python/windows/python2/setup.py
src/connector/python/windows/python2/setup.py
+1
-1
src/connector/python/windows/python2/taos/__init__.py
src/connector/python/windows/python2/taos/__init__.py
+1
-1
src/connector/python/windows/python2/taos/cinterface.py
src/connector/python/windows/python2/taos/cinterface.py
+2
-0
src/connector/python/windows/python2/taos/cursor.py
src/connector/python/windows/python2/taos/cursor.py
+2
-2
src/connector/python/windows/python3/setup.py
src/connector/python/windows/python3/setup.py
+1
-1
src/connector/python/windows/python3/taos/__init__.py
src/connector/python/windows/python3/taos/__init__.py
+1
-1
src/connector/python/windows/python3/taos/cinterface.py
src/connector/python/windows/python3/taos/cinterface.py
+2
-0
src/connector/python/windows/python3/taos/cursor.py
src/connector/python/windows/python3/taos/cursor.py
+2
-2
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+6
-2
src/query/src/qParserImpl.c
src/query/src/qParserImpl.c
+17
-2
src/tsdb/src/tsdbMemTable.c
src/tsdb/src/tsdbMemTable.c
+2
-2
src/util/src/tconfig.c
src/util/src/tconfig.c
+0
-2
src/util/src/tref.c
src/util/src/tref.c
+10
-9
src/vnode/src/vnodeRead.c
src/vnode/src/vnodeRead.c
+36
-35
tests/pytest/fulltest.sh
tests/pytest/fulltest.sh
+2
-1
tests/pytest/query/queryInterval.py
tests/pytest/query/queryInterval.py
+14
-0
未找到文件。
documentation20/webdocs/markdowndocs/faq-ch.md
浏览文件 @
eede5a77
...
@@ -101,7 +101,20 @@ Connection = DriverManager.getConnection(url, properties);
...
@@ -101,7 +101,20 @@ Connection = DriverManager.getConnection(url, properties);
<version>2.0.4</version>
<version>2.0.4</version>
</dependency>
</dependency>
```
```
## 14. 怎么报告问题?
## 14. taos connect failed, reason: invalid timestamp
常见原因是服务器和客户端时间没有校准,可以通过和时间服务器同步的方式(Linux 下使用 ntpdate 命令,Windows 在系统时间设置中选择自动同步)校准。
## 15. 表名显示不全
由于 taos shell 在终端中显示宽度有限,有可能比较长的表名显示不全,如果按照显示的不全的表名进行相关操作会发生 Table does not exist 错误。解决方法可以是通过修改 taos.cfg 文件中的设置项 maxBinaryDisplayWidth, 或者直接输入命令 set max_binary_display_width 100。或者在命令结尾使用
\G
参数来调整结果的显示方式。
## 16. 怎么报告问题?
如果 FAQ 中的信息不能够帮到您,需要 TDengine 技术团队的技术支持与协助,请将以下两个目录中内容打包:
如果 FAQ 中的信息不能够帮到您,需要 TDengine 技术团队的技术支持与协助,请将以下两个目录中内容打包:
1.
/var/log/taos
1.
/var/log/taos
2.
/etc/taos
2.
/etc/taos
...
...
packaging/cfg/taos.cfg
浏览文件 @
eede5a77
...
@@ -251,7 +251,7 @@
...
@@ -251,7 +251,7 @@
# cqDebugFlag 131
# cqDebugFlag 131
# enable/disable recording the SQL in taos client
# enable/disable recording the SQL in taos client
#
tscE
nableRecordSql 0
#
e
nableRecordSql 0
# generate core file when service crash
# generate core file when service crash
# enableCoreFile 1
# enableCoreFile 1
...
@@ -264,3 +264,6 @@
...
@@ -264,3 +264,6 @@
# enable/disable stream (continuous query)
# enable/disable stream (continuous query)
# stream 1
# stream 1
# only 50% CPU resources will be used in query processing
# halfCoresForQuery 0
src/client/src/tscFunctionImpl.c
浏览文件 @
eede5a77
...
@@ -4542,7 +4542,7 @@ static void sumrate_finalizer(SQLFunctionCtx *pCtx) {
...
@@ -4542,7 +4542,7 @@ static void sumrate_finalizer(SQLFunctionCtx *pCtx) {
int32_t
functionCompatList
[]
=
{
int32_t
functionCompatList
[]
=
{
// count, sum, avg, min, max, stddev, percentile, apercentile, first, last
// count, sum, avg, min, max, stddev, percentile, apercentile, first, last
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
// last_row,
top, bottom, spread, twa, leastsqr, ts,
ts_dummy, tag_dummy, ts_z
// last_row,
top, bottom, spread, twa, leastsqr, ts,
ts_dummy, tag_dummy, ts_z
4
,
-
1
,
-
1
,
1
,
1
,
1
,
1
,
1
,
1
,
-
1
,
4
,
-
1
,
-
1
,
1
,
1
,
1
,
1
,
1
,
1
,
-
1
,
// tag, colprj, tagprj, arithmetic, diff, first_dist, last_dist, interp rate irate
// tag, colprj, tagprj, arithmetic, diff, first_dist, last_dist, interp rate irate
1
,
1
,
1
,
1
,
-
1
,
1
,
1
,
5
,
1
,
1
,
1
,
1
,
1
,
1
,
-
1
,
1
,
1
,
5
,
1
,
1
,
...
...
src/client/src/tscParseInsert.c
浏览文件 @
eede5a77
...
@@ -630,11 +630,17 @@ int32_t tscAllocateMemIfNeed(STableDataBlocks *pDataBlock, int32_t rowSize, int3
...
@@ -630,11 +630,17 @@ int32_t tscAllocateMemIfNeed(STableDataBlocks *pDataBlock, int32_t rowSize, int3
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
void
tsSetBlockInfo
(
SSubmitBlk
*
pBlocks
,
const
STableMeta
*
pTableMeta
,
int32_t
numOfRows
)
{
static
int32_t
tsSetBlockInfo
(
SSubmitBlk
*
pBlocks
,
const
STableMeta
*
pTableMeta
,
int32_t
numOfRows
)
{
pBlocks
->
tid
=
pTableMeta
->
id
.
tid
;
pBlocks
->
tid
=
pTableMeta
->
id
.
tid
;
pBlocks
->
uid
=
pTableMeta
->
id
.
uid
;
pBlocks
->
uid
=
pTableMeta
->
id
.
uid
;
pBlocks
->
sversion
=
pTableMeta
->
sversion
;
pBlocks
->
sversion
=
pTableMeta
->
sversion
;
if
(
pBlocks
->
numOfRows
+
numOfRows
>=
INT16_MAX
)
{
return
TSDB_CODE_TSC_INVALID_SQL
;
}
else
{
pBlocks
->
numOfRows
+=
numOfRows
;
pBlocks
->
numOfRows
+=
numOfRows
;
return
TSDB_CODE_SUCCESS
;
}
}
}
// data block is disordered, sort it in ascending order
// data block is disordered, sort it in ascending order
...
@@ -722,7 +728,11 @@ static int32_t doParseInsertStatement(SSqlObj *pSql, void *pTableList, char **st
...
@@ -722,7 +728,11 @@ static int32_t doParseInsertStatement(SSqlObj *pSql, void *pTableList, char **st
}
}
SSubmitBlk
*
pBlocks
=
(
SSubmitBlk
*
)(
dataBuf
->
pData
);
SSubmitBlk
*
pBlocks
=
(
SSubmitBlk
*
)(
dataBuf
->
pData
);
tsSetBlockInfo
(
pBlocks
,
pTableMeta
,
numOfRows
);
code
=
tsSetBlockInfo
(
pBlocks
,
pTableMeta
,
numOfRows
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
tscInvalidSQLErrMsg
(
pCmd
->
payload
,
"too many rows in sql, total number of rows should be less than 32767"
,
*
str
);
return
code
;
}
dataBuf
->
vgId
=
pTableMeta
->
vgroupInfo
.
vgId
;
dataBuf
->
vgId
=
pTableMeta
->
vgroupInfo
.
vgId
;
dataBuf
->
numOfTables
=
1
;
dataBuf
->
numOfTables
=
1
;
...
@@ -1384,7 +1394,10 @@ static int doPackSendDataBlock(SSqlObj *pSql, int32_t numOfRows, STableDataBlock
...
@@ -1384,7 +1394,10 @@ static int doPackSendDataBlock(SSqlObj *pSql, int32_t numOfRows, STableDataBlock
STableMeta
*
pTableMeta
=
tscGetTableMetaInfoFromCmd
(
pCmd
,
pCmd
->
clauseIndex
,
0
)
->
pTableMeta
;
STableMeta
*
pTableMeta
=
tscGetTableMetaInfoFromCmd
(
pCmd
,
pCmd
->
clauseIndex
,
0
)
->
pTableMeta
;
SSubmitBlk
*
pBlocks
=
(
SSubmitBlk
*
)(
pTableDataBlocks
->
pData
);
SSubmitBlk
*
pBlocks
=
(
SSubmitBlk
*
)(
pTableDataBlocks
->
pData
);
tsSetBlockInfo
(
pBlocks
,
pTableMeta
,
numOfRows
);
code
=
tsSetBlockInfo
(
pBlocks
,
pTableMeta
,
numOfRows
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
tscInvalidSQLErrMsg
(
pCmd
->
payload
,
"too many rows in sql, total number of rows should be less than 32767"
,
NULL
);
}
if
((
code
=
tscMergeTableDataBlocks
(
pSql
,
pCmd
->
pDataBlocks
))
!=
TSDB_CODE_SUCCESS
)
{
if
((
code
=
tscMergeTableDataBlocks
(
pSql
,
pCmd
->
pDataBlocks
))
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
return
code
;
...
...
src/client/src/tscProfile.c
浏览文件 @
eede5a77
...
@@ -39,6 +39,7 @@ void tscInitConnCb(void *param, TAOS_RES *result, int code) {
...
@@ -39,6 +39,7 @@ void tscInitConnCb(void *param, TAOS_RES *result, int code) {
tscSlowQueryConnInitialized
=
true
;
tscSlowQueryConnInitialized
=
true
;
tscSaveSlowQueryFp
(
sql
,
NULL
);
tscSaveSlowQueryFp
(
sql
,
NULL
);
}
}
taos_free_result
(
result
);
}
}
void
tscAddIntoSqlList
(
SSqlObj
*
pSql
)
{
void
tscAddIntoSqlList
(
SSqlObj
*
pSql
)
{
...
@@ -69,6 +70,7 @@ void tscSaveSlowQueryFpCb(void *param, TAOS_RES *result, int code) {
...
@@ -69,6 +70,7 @@ void tscSaveSlowQueryFpCb(void *param, TAOS_RES *result, int code) {
}
else
{
}
else
{
tscDebug
(
"success to save slow query, code:%d"
,
code
);
tscDebug
(
"success to save slow query, code:%d"
,
code
);
}
}
taos_free_result
(
result
);
}
}
void
tscSaveSlowQueryFp
(
void
*
handle
,
void
*
tmrId
)
{
void
tscSaveSlowQueryFp
(
void
*
handle
,
void
*
tmrId
)
{
...
...
src/client/src/tscSQLParser.c
浏览文件 @
eede5a77
...
@@ -2835,6 +2835,10 @@ static bool functionCompatibleCheck(SQueryInfo* pQueryInfo, bool joinQuery) {
...
@@ -2835,6 +2835,10 @@ static bool functionCompatibleCheck(SQueryInfo* pQueryInfo, bool joinQuery) {
if
(
functionCompatList
[
functionId
]
!=
factor
)
{
if
(
functionCompatList
[
functionId
]
!=
factor
)
{
return
false
;
return
false
;
}
else
{
if
(
factor
==
-
1
)
{
// two functions with the same -1 flag
return
false
;
}
}
}
if
(
functionId
==
TSDB_FUNC_LAST_ROW
&&
joinQuery
)
{
if
(
functionId
==
TSDB_FUNC_LAST_ROW
&&
joinQuery
)
{
...
...
src/client/src/tscSystem.c
浏览文件 @
eede5a77
...
@@ -144,7 +144,7 @@ void taos_init_imp(void) {
...
@@ -144,7 +144,7 @@ void taos_init_imp(void) {
int64_t
refreshTime
=
10
;
// 10 seconds by default
int64_t
refreshTime
=
10
;
// 10 seconds by default
if
(
tscMetaCache
==
NULL
)
{
if
(
tscMetaCache
==
NULL
)
{
tscMetaCache
=
taosCacheInit
(
TSDB_DATA_TYPE_BINARY
,
refreshTime
,
false
,
tscFreeTableMetaHelper
,
"tableMeta"
);
tscMetaCache
=
taosCacheInit
(
TSDB_DATA_TYPE_BINARY
,
refreshTime
,
false
,
tscFreeTableMetaHelper
,
"tableMeta"
);
tscObjRef
=
taosOpenRef
(
4096
,
tscFreeRegisteredSqlObj
);
tscObjRef
=
taosOpenRef
(
4096
0
,
tscFreeRegisteredSqlObj
);
}
}
tscRefId
=
taosOpenRef
(
200
,
tscCloseTscObj
);
tscRefId
=
taosOpenRef
(
200
,
tscCloseTscObj
);
...
...
src/common/inc/tglobal.h
浏览文件 @
eede5a77
...
@@ -56,6 +56,7 @@ extern char tsTempDir[];
...
@@ -56,6 +56,7 @@ extern char tsTempDir[];
//query buffer management
//query buffer management
extern
int32_t
tsQueryBufferSize
;
// maximum allowed usage buffer for each data node during query processing
extern
int32_t
tsQueryBufferSize
;
// maximum allowed usage buffer for each data node during query processing
extern
int32_t
tsHalfCoresForQuery
;
// only 50% will be used in query processing
// client
// client
extern
int32_t
tsTableMetaKeepTimer
;
extern
int32_t
tsTableMetaKeepTimer
;
...
...
src/common/src/tglobal.c
浏览文件 @
eede5a77
...
@@ -107,6 +107,9 @@ int64_t tsMaxRetentWindow = 24 * 3600L; // maximum time window tolerance
...
@@ -107,6 +107,9 @@ int64_t tsMaxRetentWindow = 24 * 3600L; // maximum time window tolerance
// positive value (in MB)
// positive value (in MB)
int32_t
tsQueryBufferSize
=
-
1
;
int32_t
tsQueryBufferSize
=
-
1
;
// only 50% cpu will be used in query processing in dnode
int32_t
tsHalfCoresForQuery
=
0
;
// db parameters
// db parameters
int32_t
tsCacheBlockSize
=
TSDB_DEFAULT_CACHE_BLOCK_SIZE
;
int32_t
tsCacheBlockSize
=
TSDB_DEFAULT_CACHE_BLOCK_SIZE
;
int32_t
tsBlocksPerVnode
=
TSDB_DEFAULT_TOTAL_BLOCKS
;
int32_t
tsBlocksPerVnode
=
TSDB_DEFAULT_TOTAL_BLOCKS
;
...
@@ -884,6 +887,16 @@ static void doInitGlobalConfig(void) {
...
@@ -884,6 +887,16 @@ static void doInitGlobalConfig(void) {
cfg
.
unitType
=
TAOS_CFG_UTYPE_BYTE
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_BYTE
;
taosInitConfigOption
(
cfg
);
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"halfCoresForQuery"
;
cfg
.
ptr
=
&
tsHalfCoresForQuery
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_SHOW
;
cfg
.
minValue
=
0
;
cfg
.
maxValue
=
1
;
cfg
.
ptrLength
=
1
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
// locale & charset
// locale & charset
cfg
.
option
=
"timezone"
;
cfg
.
option
=
"timezone"
;
cfg
.
ptr
=
tsTimezone
;
cfg
.
ptr
=
tsTimezone
;
...
@@ -1290,7 +1303,7 @@ static void doInitGlobalConfig(void) {
...
@@ -1290,7 +1303,7 @@ static void doInitGlobalConfig(void) {
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"
tscE
nableRecordSql"
;
cfg
.
option
=
"
e
nableRecordSql"
;
cfg
.
ptr
=
&
tsTscEnableRecordSql
;
cfg
.
ptr
=
&
tsTscEnableRecordSql
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
;
...
...
src/connector/python/linux/python2/setup.py
浏览文件 @
eede5a77
...
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
...
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
setuptools
.
setup
(
setuptools
.
setup
(
name
=
"taos"
,
name
=
"taos"
,
version
=
"2.0.
2
"
,
version
=
"2.0.
3
"
,
author
=
"Taosdata Inc."
,
author
=
"Taosdata Inc."
,
author_email
=
"support@taosdata.com"
,
author_email
=
"support@taosdata.com"
,
description
=
"TDengine python client package"
,
description
=
"TDengine python client package"
,
...
...
src/connector/python/linux/python2/taos/__init__.py
浏览文件 @
eede5a77
...
@@ -3,7 +3,7 @@ from .connection import TDengineConnection
...
@@ -3,7 +3,7 @@ from .connection import TDengineConnection
from
.cursor
import
TDengineCursor
from
.cursor
import
TDengineCursor
# Globals
# Globals
apilevel
=
'2.0'
apilevel
=
'2.0
.3
'
threadsafety
=
0
threadsafety
=
0
paramstyle
=
'pyformat'
paramstyle
=
'pyformat'
...
...
src/connector/python/linux/python2/taos/cinterface.py
浏览文件 @
eede5a77
...
@@ -81,6 +81,7 @@ def _crow_double_to_python(data, num_of_rows, nbytes=None, micro=False):
...
@@ -81,6 +81,7 @@ def _crow_double_to_python(data, num_of_rows, nbytes=None, micro=False):
def
_crow_binary_to_python
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
def
_crow_binary_to_python
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
"""Function to convert C binary row to python row
"""Function to convert C binary row to python row
"""
"""
assert
(
nbytes
is
not
None
)
if
num_of_rows
>
0
:
if
num_of_rows
>
0
:
return
[
None
if
ele
.
value
[
0
:
1
]
==
FieldType
.
C_BINARY_NULL
else
ele
.
value
.
decode
(
'utf-8'
)
for
ele
in
(
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_char
*
nbytes
)))[:
abs
(
num_of_rows
)]]
return
[
None
if
ele
.
value
[
0
:
1
]
==
FieldType
.
C_BINARY_NULL
else
ele
.
value
.
decode
(
'utf-8'
)
for
ele
in
(
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_char
*
nbytes
)))[:
abs
(
num_of_rows
)]]
else
:
else
:
...
@@ -106,6 +107,7 @@ def _crow_nchar_to_python(data, num_of_rows, nbytes=None, micro=False):
...
@@ -106,6 +107,7 @@ def _crow_nchar_to_python(data, num_of_rows, nbytes=None, micro=False):
def
_crow_binary_to_python_block
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
def
_crow_binary_to_python_block
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
"""Function to convert C binary row to python row
"""Function to convert C binary row to python row
"""
"""
assert
(
nbytes
is
not
None
)
res
=
[]
res
=
[]
if
num_of_rows
>
0
:
if
num_of_rows
>
0
:
for
i
in
range
(
abs
(
num_of_rows
)):
for
i
in
range
(
abs
(
num_of_rows
)):
...
...
src/connector/python/linux/python2/taos/cursor.py
浏览文件 @
eede5a77
...
@@ -26,7 +26,7 @@ class TDengineCursor(object):
...
@@ -26,7 +26,7 @@ class TDengineCursor(object):
"""
"""
def
__init__
(
self
,
connection
=
None
):
def
__init__
(
self
,
connection
=
None
):
self
.
_description
=
None
self
.
_description
=
[]
self
.
_rowcount
=
-
1
self
.
_rowcount
=
-
1
self
.
_connection
=
None
self
.
_connection
=
None
self
.
_result
=
None
self
.
_result
=
None
...
@@ -234,7 +234,7 @@ class TDengineCursor(object):
...
@@ -234,7 +234,7 @@ class TDengineCursor(object):
def
_reset_result
(
self
):
def
_reset_result
(
self
):
"""Reset the result to unused version.
"""Reset the result to unused version.
"""
"""
self
.
_description
=
None
self
.
_description
=
[]
self
.
_rowcount
=
-
1
self
.
_rowcount
=
-
1
if
self
.
_result
is
not
None
:
if
self
.
_result
is
not
None
:
CTaosInterface
.
freeResult
(
self
.
_result
)
CTaosInterface
.
freeResult
(
self
.
_result
)
...
...
src/connector/python/linux/python3/setup.py
浏览文件 @
eede5a77
...
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
...
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
setuptools
.
setup
(
setuptools
.
setup
(
name
=
"taos"
,
name
=
"taos"
,
version
=
"2.0.
2
"
,
version
=
"2.0.
3
"
,
author
=
"Taosdata Inc."
,
author
=
"Taosdata Inc."
,
author_email
=
"support@taosdata.com"
,
author_email
=
"support@taosdata.com"
,
description
=
"TDengine python client package"
,
description
=
"TDengine python client package"
,
...
...
src/connector/python/linux/python3/taos/__init__.py
浏览文件 @
eede5a77
...
@@ -3,7 +3,7 @@ from .connection import TDengineConnection
...
@@ -3,7 +3,7 @@ from .connection import TDengineConnection
from
.cursor
import
TDengineCursor
from
.cursor
import
TDengineCursor
# Globals
# Globals
apilevel
=
'2.0'
apilevel
=
'2.0
.3
'
threadsafety
=
0
threadsafety
=
0
paramstyle
=
'pyformat'
paramstyle
=
'pyformat'
...
...
src/connector/python/linux/python3/taos/cinterface.py
浏览文件 @
eede5a77
...
@@ -81,6 +81,7 @@ def _crow_double_to_python(data, num_of_rows, nbytes=None, micro=False):
...
@@ -81,6 +81,7 @@ def _crow_double_to_python(data, num_of_rows, nbytes=None, micro=False):
def
_crow_binary_to_python
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
def
_crow_binary_to_python
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
"""Function to convert C binary row to python row
"""Function to convert C binary row to python row
"""
"""
assert
(
nbytes
is
not
None
)
if
num_of_rows
>
0
:
if
num_of_rows
>
0
:
return
[
None
if
ele
.
value
[
0
:
1
]
==
FieldType
.
C_BINARY_NULL
else
ele
.
value
.
decode
(
'utf-8'
)
for
ele
in
(
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_char
*
nbytes
)))[:
abs
(
num_of_rows
)]]
return
[
None
if
ele
.
value
[
0
:
1
]
==
FieldType
.
C_BINARY_NULL
else
ele
.
value
.
decode
(
'utf-8'
)
for
ele
in
(
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_char
*
nbytes
)))[:
abs
(
num_of_rows
)]]
else
:
else
:
...
@@ -106,6 +107,7 @@ def _crow_nchar_to_python(data, num_of_rows, nbytes=None, micro=False):
...
@@ -106,6 +107,7 @@ def _crow_nchar_to_python(data, num_of_rows, nbytes=None, micro=False):
def
_crow_binary_to_python_block
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
def
_crow_binary_to_python_block
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
"""Function to convert C binary row to python row
"""Function to convert C binary row to python row
"""
"""
assert
(
nbytes
is
not
None
)
res
=
[]
res
=
[]
if
num_of_rows
>
0
:
if
num_of_rows
>
0
:
for
i
in
range
(
abs
(
num_of_rows
)):
for
i
in
range
(
abs
(
num_of_rows
)):
...
...
src/connector/python/linux/python3/taos/cursor.py
浏览文件 @
eede5a77
...
@@ -27,7 +27,7 @@ class TDengineCursor(object):
...
@@ -27,7 +27,7 @@ class TDengineCursor(object):
"""
"""
def
__init__
(
self
,
connection
=
None
):
def
__init__
(
self
,
connection
=
None
):
self
.
_description
=
None
self
.
_description
=
[]
self
.
_rowcount
=
-
1
self
.
_rowcount
=
-
1
self
.
_connection
=
None
self
.
_connection
=
None
self
.
_result
=
None
self
.
_result
=
None
...
@@ -242,7 +242,7 @@ class TDengineCursor(object):
...
@@ -242,7 +242,7 @@ class TDengineCursor(object):
def
_reset_result
(
self
):
def
_reset_result
(
self
):
"""Reset the result to unused version.
"""Reset the result to unused version.
"""
"""
self
.
_description
=
None
self
.
_description
=
[]
self
.
_rowcount
=
-
1
self
.
_rowcount
=
-
1
if
self
.
_result
is
not
None
:
if
self
.
_result
is
not
None
:
CTaosInterface
.
freeResult
(
self
.
_result
)
CTaosInterface
.
freeResult
(
self
.
_result
)
...
...
src/connector/python/windows/python2/setup.py
浏览文件 @
eede5a77
...
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
...
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
setuptools
.
setup
(
setuptools
.
setup
(
name
=
"taos"
,
name
=
"taos"
,
version
=
"2.0.
2
"
,
version
=
"2.0.
3
"
,
author
=
"Taosdata Inc."
,
author
=
"Taosdata Inc."
,
author_email
=
"support@taosdata.com"
,
author_email
=
"support@taosdata.com"
,
description
=
"TDengine python client package"
,
description
=
"TDengine python client package"
,
...
...
src/connector/python/windows/python2/taos/__init__.py
浏览文件 @
eede5a77
...
@@ -3,7 +3,7 @@ from .connection import TDengineConnection
...
@@ -3,7 +3,7 @@ from .connection import TDengineConnection
from
.cursor
import
TDengineCursor
from
.cursor
import
TDengineCursor
# Globals
# Globals
apilevel
=
'2.0'
apilevel
=
'2.0
.3
'
threadsafety
=
0
threadsafety
=
0
paramstyle
=
'pyformat'
paramstyle
=
'pyformat'
...
...
src/connector/python/windows/python2/taos/cinterface.py
浏览文件 @
eede5a77
...
@@ -81,6 +81,7 @@ def _crow_double_to_python(data, num_of_rows, nbytes=None, micro=False):
...
@@ -81,6 +81,7 @@ def _crow_double_to_python(data, num_of_rows, nbytes=None, micro=False):
def
_crow_binary_to_python
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
def
_crow_binary_to_python
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
"""Function to convert C binary row to python row
"""Function to convert C binary row to python row
"""
"""
assert
(
nbytes
is
not
None
)
if
num_of_rows
>
0
:
if
num_of_rows
>
0
:
return
[
None
if
ele
.
value
[
0
:
1
]
==
FieldType
.
C_BINARY_NULL
else
ele
.
value
.
decode
(
'utf-8'
)
for
ele
in
(
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_char
*
nbytes
)))[:
abs
(
num_of_rows
)]]
return
[
None
if
ele
.
value
[
0
:
1
]
==
FieldType
.
C_BINARY_NULL
else
ele
.
value
.
decode
(
'utf-8'
)
for
ele
in
(
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_char
*
nbytes
)))[:
abs
(
num_of_rows
)]]
else
:
else
:
...
@@ -106,6 +107,7 @@ def _crow_nchar_to_python(data, num_of_rows, nbytes=None, micro=False):
...
@@ -106,6 +107,7 @@ def _crow_nchar_to_python(data, num_of_rows, nbytes=None, micro=False):
def
_crow_binary_to_python_block
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
def
_crow_binary_to_python_block
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
"""Function to convert C binary row to python row
"""Function to convert C binary row to python row
"""
"""
assert
(
nbytes
is
not
None
)
res
=
[]
res
=
[]
if
num_of_rows
>
0
:
if
num_of_rows
>
0
:
for
i
in
range
(
abs
(
num_of_rows
)):
for
i
in
range
(
abs
(
num_of_rows
)):
...
...
src/connector/python/windows/python2/taos/cursor.py
浏览文件 @
eede5a77
...
@@ -27,7 +27,7 @@ class TDengineCursor(object):
...
@@ -27,7 +27,7 @@ class TDengineCursor(object):
"""
"""
def
__init__
(
self
,
connection
=
None
):
def
__init__
(
self
,
connection
=
None
):
self
.
_description
=
None
self
.
_description
=
[]
self
.
_rowcount
=
-
1
self
.
_rowcount
=
-
1
self
.
_connection
=
None
self
.
_connection
=
None
self
.
_result
=
None
self
.
_result
=
None
...
@@ -193,7 +193,7 @@ class TDengineCursor(object):
...
@@ -193,7 +193,7 @@ class TDengineCursor(object):
def
_reset_result
(
self
):
def
_reset_result
(
self
):
"""Reset the result to unused version.
"""Reset the result to unused version.
"""
"""
self
.
_description
=
None
self
.
_description
=
[]
self
.
_rowcount
=
-
1
self
.
_rowcount
=
-
1
if
self
.
_result
is
not
None
:
if
self
.
_result
is
not
None
:
CTaosInterface
.
freeResult
(
self
.
_result
)
CTaosInterface
.
freeResult
(
self
.
_result
)
...
...
src/connector/python/windows/python3/setup.py
浏览文件 @
eede5a77
...
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
...
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
setuptools
.
setup
(
setuptools
.
setup
(
name
=
"taos"
,
name
=
"taos"
,
version
=
"2.0.
2
"
,
version
=
"2.0.
3
"
,
author
=
"Taosdata Inc."
,
author
=
"Taosdata Inc."
,
author_email
=
"support@taosdata.com"
,
author_email
=
"support@taosdata.com"
,
description
=
"TDengine python client package"
,
description
=
"TDengine python client package"
,
...
...
src/connector/python/windows/python3/taos/__init__.py
浏览文件 @
eede5a77
...
@@ -3,7 +3,7 @@ from .connection import TDengineConnection
...
@@ -3,7 +3,7 @@ from .connection import TDengineConnection
from
.cursor
import
TDengineCursor
from
.cursor
import
TDengineCursor
# Globals
# Globals
apilevel
=
'2.0'
apilevel
=
'2.0
.3
'
threadsafety
=
0
threadsafety
=
0
paramstyle
=
'pyformat'
paramstyle
=
'pyformat'
...
...
src/connector/python/windows/python3/taos/cinterface.py
浏览文件 @
eede5a77
...
@@ -81,6 +81,7 @@ def _crow_double_to_python(data, num_of_rows, nbytes=None, micro=False):
...
@@ -81,6 +81,7 @@ def _crow_double_to_python(data, num_of_rows, nbytes=None, micro=False):
def
_crow_binary_to_python
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
def
_crow_binary_to_python
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
"""Function to convert C binary row to python row
"""Function to convert C binary row to python row
"""
"""
assert
(
nbytes
is
not
None
)
if
num_of_rows
>
0
:
if
num_of_rows
>
0
:
return
[
None
if
ele
.
value
[
0
:
1
]
==
FieldType
.
C_BINARY_NULL
else
ele
.
value
.
decode
(
'utf-8'
)
for
ele
in
(
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_char
*
nbytes
)))[:
abs
(
num_of_rows
)]]
return
[
None
if
ele
.
value
[
0
:
1
]
==
FieldType
.
C_BINARY_NULL
else
ele
.
value
.
decode
(
'utf-8'
)
for
ele
in
(
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_char
*
nbytes
)))[:
abs
(
num_of_rows
)]]
else
:
else
:
...
@@ -108,6 +109,7 @@ def _crow_nchar_to_python(data, num_of_rows, nbytes=None, micro=False):
...
@@ -108,6 +109,7 @@ def _crow_nchar_to_python(data, num_of_rows, nbytes=None, micro=False):
def
_crow_binary_to_python_block
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
def
_crow_binary_to_python_block
(
data
,
num_of_rows
,
nbytes
=
None
,
micro
=
False
):
"""Function to convert C binary row to python row
"""Function to convert C binary row to python row
"""
"""
assert
(
nbytes
is
not
None
)
res
=
[]
res
=
[]
if
num_of_rows
>
0
:
if
num_of_rows
>
0
:
for
i
in
range
(
abs
(
num_of_rows
)):
for
i
in
range
(
abs
(
num_of_rows
)):
...
...
src/connector/python/windows/python3/taos/cursor.py
浏览文件 @
eede5a77
...
@@ -28,7 +28,7 @@ class TDengineCursor(object):
...
@@ -28,7 +28,7 @@ class TDengineCursor(object):
"""
"""
def
__init__
(
self
,
connection
=
None
):
def
__init__
(
self
,
connection
=
None
):
self
.
_description
=
None
self
.
_description
=
[]
self
.
_rowcount
=
-
1
self
.
_rowcount
=
-
1
self
.
_connection
=
None
self
.
_connection
=
None
self
.
_result
=
None
self
.
_result
=
None
...
@@ -194,7 +194,7 @@ class TDengineCursor(object):
...
@@ -194,7 +194,7 @@ class TDengineCursor(object):
def
_reset_result
(
self
):
def
_reset_result
(
self
):
"""Reset the result to unused version.
"""Reset the result to unused version.
"""
"""
self
.
_description
=
None
self
.
_description
=
[]
self
.
_rowcount
=
-
1
self
.
_rowcount
=
-
1
if
self
.
_result
is
not
None
:
if
self
.
_result
is
not
None
:
CTaosInterface
.
freeResult
(
self
.
_result
)
CTaosInterface
.
freeResult
(
self
.
_result
)
...
...
src/query/src/qExecutor.c
浏览文件 @
eede5a77
...
@@ -1372,8 +1372,12 @@ static int32_t setGroupResultOutputBuf(SQueryRuntimeEnv *pRuntimeEnv, char *pDat
...
@@ -1372,8 +1372,12 @@ static int32_t setGroupResultOutputBuf(SQueryRuntimeEnv *pRuntimeEnv, char *pDat
}
}
if
(
type
==
TSDB_DATA_TYPE_BINARY
||
type
==
TSDB_DATA_TYPE_NCHAR
)
{
if
(
type
==
TSDB_DATA_TYPE_BINARY
||
type
==
TSDB_DATA_TYPE_NCHAR
)
{
if
(
pResultRow
->
key
==
NULL
)
{
pResultRow
->
key
=
malloc
(
varDataTLen
(
pData
));
pResultRow
->
key
=
malloc
(
varDataTLen
(
pData
));
varDataCopy
(
pResultRow
->
key
,
pData
);
varDataCopy
(
pResultRow
->
key
,
pData
);
}
else
{
assert
(
memcmp
(
pResultRow
->
key
,
pData
,
varDataTLen
(
pData
))
==
0
);
}
}
else
{
}
else
{
pResultRow
->
win
.
skey
=
v
;
pResultRow
->
win
.
skey
=
v
;
pResultRow
->
win
.
ekey
=
v
;
pResultRow
->
win
.
ekey
=
v
;
...
...
src/query/src/qParserImpl.c
浏览文件 @
eede5a77
...
@@ -405,14 +405,29 @@ void tSQLSetColumnType(TAOS_FIELD *pField, SStrToken *type) {
...
@@ -405,14 +405,29 @@ void tSQLSetColumnType(TAOS_FIELD *pField, SStrToken *type) {
if
(
type
->
type
==
0
)
{
if
(
type
->
type
==
0
)
{
pField
->
bytes
=
0
;
pField
->
bytes
=
0
;
}
else
{
}
else
{
pField
->
bytes
=
(
int16_t
)(
-
(
int32_t
)
type
->
type
*
TSDB_NCHAR_SIZE
+
VARSTR_HEADER_SIZE
);
int32_t
bytes
=
-
(
int32_t
)(
type
->
type
);
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
// as pField->bytes is int16_t, use 'TSDB_MAX_NCHAR_LEN + 1' to avoid overflow
bytes
=
TSDB_MAX_NCHAR_LEN
+
1
;
}
else
{
bytes
=
bytes
*
TSDB_NCHAR_SIZE
+
VARSTR_HEADER_SIZE
;
}
pField
->
bytes
=
(
int16_t
)
bytes
;
}
}
}
else
if
(
i
==
TSDB_DATA_TYPE_BINARY
)
{
}
else
if
(
i
==
TSDB_DATA_TYPE_BINARY
)
{
/* for binary, the TOKENTYPE is the length of binary */
/* for binary, the TOKENTYPE is the length of binary */
if
(
type
->
type
==
0
)
{
if
(
type
->
type
==
0
)
{
pField
->
bytes
=
0
;
pField
->
bytes
=
0
;
}
else
{
}
else
{
pField
->
bytes
=
(
int16_t
)
(
-
(
int32_t
)
type
->
type
+
VARSTR_HEADER_SIZE
);
int32_t
bytes
=
-
(
int32_t
)(
type
->
type
);
if
(
bytes
>
TSDB_MAX_BINARY_LEN
-
VARSTR_HEADER_SIZE
)
{
// refer comment for NCHAR above
bytes
=
TSDB_MAX_BINARY_LEN
+
1
;
}
else
{
bytes
+=
VARSTR_HEADER_SIZE
;
}
pField
->
bytes
=
(
int16_t
)
bytes
;
}
}
}
}
break
;
break
;
...
...
src/tsdb/src/tsdbMemTable.c
浏览文件 @
eede5a77
...
@@ -786,10 +786,10 @@ static int tsdbCheckTableSchema(STsdbRepo *pRepo, SSubmitBlk *pBlock, STable *pT
...
@@ -786,10 +786,10 @@ static int tsdbCheckTableSchema(STsdbRepo *pRepo, SSubmitBlk *pBlock, STable *pT
if
(
tsdbGetTableSchemaImpl
(
pTable
,
false
,
false
,
pBlock
->
sversion
)
==
NULL
)
{
if
(
tsdbGetTableSchemaImpl
(
pTable
,
false
,
false
,
pBlock
->
sversion
)
==
NULL
)
{
tsdbError
(
"vgId:%d invalid submit schema version %d to table %s tid %d from client"
,
REPO_ID
(
pRepo
),
tsdbError
(
"vgId:%d invalid submit schema version %d to table %s tid %d from client"
,
REPO_ID
(
pRepo
),
pBlock
->
sversion
,
TABLE_CHAR_NAME
(
pTable
),
TABLE_TID
(
pTable
));
pBlock
->
sversion
,
TABLE_CHAR_NAME
(
pTable
),
TABLE_TID
(
pTable
));
}
terrno
=
TSDB_CODE_TDB_IVD_TB_SCHEMA_VERSION
;
terrno
=
TSDB_CODE_TDB_IVD_TB_SCHEMA_VERSION
;
return
-
1
;
return
-
1
;
}
}
}
return
0
;
return
0
;
}
}
...
...
src/util/src/tconfig.c
浏览文件 @
eede5a77
...
@@ -19,9 +19,7 @@
...
@@ -19,9 +19,7 @@
#include "taoserror.h"
#include "taoserror.h"
#include "tconfig.h"
#include "tconfig.h"
#include "tglobal.h"
#include "tglobal.h"
#include "tkey.h"
#include "tulog.h"
#include "tulog.h"
#include "tsocket.h"
#include "tsystem.h"
#include "tsystem.h"
#include "tutil.h"
#include "tutil.h"
...
...
src/util/src/tref.c
浏览文件 @
eede5a77
...
@@ -423,14 +423,9 @@ static int taosDecRefCount(int rsetId, int64_t rid, int remove) {
...
@@ -423,14 +423,9 @@ static int taosDecRefCount(int rsetId, int64_t rid, int remove) {
if
(
pNode
->
next
)
{
if
(
pNode
->
next
)
{
pNode
->
next
->
prev
=
pNode
->
prev
;
pNode
->
next
->
prev
=
pNode
->
prev
;
}
}
(
*
pSet
->
fp
)(
pNode
->
p
);
uTrace
(
"rsetId:%d p:%p rid:%"
PRId64
" is removed, count:%d, free mem: %p"
,
rsetId
,
pNode
->
p
,
rid
,
pSet
->
count
,
pNode
);
free
(
pNode
);
released
=
1
;
released
=
1
;
}
else
{
}
else
{
uTrace
(
"rsetId:%d p:%p rid:%"
PRId64
" is released, count:%d"
,
rsetId
,
pNode
->
p
,
rid
,
pNode
->
count
);
uTrace
(
"rsetId:%d p:%p rid:%"
PRId64
" is released"
,
rsetId
,
pNode
->
p
,
rid
);
}
}
}
else
{
}
else
{
uTrace
(
"rsetId:%d rid:%"
PRId64
" is not there, failed to release/remove"
,
rsetId
,
rid
);
uTrace
(
"rsetId:%d rid:%"
PRId64
" is not there, failed to release/remove"
,
rsetId
,
rid
);
...
@@ -440,7 +435,13 @@ static int taosDecRefCount(int rsetId, int64_t rid, int remove) {
...
@@ -440,7 +435,13 @@ static int taosDecRefCount(int rsetId, int64_t rid, int remove) {
taosUnlockList
(
pSet
->
lockedBy
+
hash
);
taosUnlockList
(
pSet
->
lockedBy
+
hash
);
if
(
released
)
taosDecRsetCount
(
pSet
);
if
(
released
)
{
uTrace
(
"rsetId:%d p:%p rid:%"
PRId64
" is removed, count:%d, free mem: %p"
,
rsetId
,
pNode
->
p
,
rid
,
pSet
->
count
,
pNode
);
(
*
pSet
->
fp
)(
pNode
->
p
);
free
(
pNode
);
taosDecRsetCount
(
pSet
);
}
return
code
;
return
code
;
}
}
...
...
src/vnode/src/vnodeRead.c
浏览文件 @
eede5a77
...
@@ -275,8 +275,11 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead) {
...
@@ -275,8 +275,11 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead) {
vDebug
(
"vgId:%d, QInfo:%p, dnode continues to exec query"
,
pVnode
->
vgId
,
*
qhandle
);
vDebug
(
"vgId:%d, QInfo:%p, dnode continues to exec query"
,
pVnode
->
vgId
,
*
qhandle
);
// In the retrieve blocking model, only 50% CPU will be used in query processing
#if _NON_BLOCKING_RETRIEVE
if
(
tsHalfCoresForQuery
)
{
qTableQuery
(
*
qhandle
);
// do execute query
qReleaseQInfo
(
pVnode
->
qMgmt
,
(
void
**
)
&
qhandle
,
false
);
}
else
{
bool
freehandle
=
false
;
bool
freehandle
=
false
;
bool
buildRes
=
qTableQuery
(
*
qhandle
);
// do execute query
bool
buildRes
=
qTableQuery
(
*
qhandle
);
// do execute query
...
@@ -295,9 +298,8 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead) {
...
@@ -295,9 +298,8 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead) {
// NOTE: set return code to be TSDB_CODE_QRY_HAS_RSP to notify dnode to return msg to client
// NOTE: set return code to be TSDB_CODE_QRY_HAS_RSP to notify dnode to return msg to client
code
=
TSDB_CODE_QRY_HAS_RSP
;
code
=
TSDB_CODE_QRY_HAS_RSP
;
}
else
{
}
else
{
void
*
h1
=
qGetResultRetrieveMsg
(
*
qhandle
);
void
*
h1
=
qGetResultRetrieveMsg
(
*
qhandle
);
assert
(
h1
==
NULL
);
assert
(
h1
==
NULL
);
freehandle
=
qQueryCompleted
(
*
qhandle
);
freehandle
=
qQueryCompleted
(
*
qhandle
);
}
}
...
@@ -306,10 +308,7 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead) {
...
@@ -306,10 +308,7 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead) {
if
(
freehandle
||
(
!
buildRes
))
{
if
(
freehandle
||
(
!
buildRes
))
{
qReleaseQInfo
(
pVnode
->
qMgmt
,
(
void
**
)
&
qhandle
,
freehandle
);
qReleaseQInfo
(
pVnode
->
qMgmt
,
(
void
**
)
&
qhandle
,
freehandle
);
}
}
#else
}
qTableQuery
(
*
qhandle
);
// do execute query
qReleaseQInfo
(
pVnode
->
qMgmt
,
(
void
**
)
&
qhandle
,
false
);
#endif
}
}
return
code
;
return
code
;
...
@@ -375,14 +374,16 @@ static int32_t vnodeProcessFetchMsg(SVnodeObj *pVnode, SVReadMsg *pRead) {
...
@@ -375,14 +374,16 @@ static int32_t vnodeProcessFetchMsg(SVnodeObj *pVnode, SVReadMsg *pRead) {
freeHandle
=
true
;
freeHandle
=
true
;
}
else
{
// result is not ready, return immediately
}
else
{
// result is not ready, return immediately
assert
(
buildRes
==
true
);
assert
(
buildRes
==
true
);
#if _NON_BLOCKING_RETRIEVE
// Only effects in the non-blocking model
if
(
!
tsHalfCoresForQuery
)
{
if
(
!
buildRes
)
{
if
(
!
buildRes
)
{
assert
(
pRead
->
rpcHandle
!=
NULL
);
assert
(
pRead
->
rpcHandle
!=
NULL
);
qReleaseQInfo
(
pVnode
->
qMgmt
,
(
void
**
)
&
handle
,
false
);
qReleaseQInfo
(
pVnode
->
qMgmt
,
(
void
**
)
&
handle
,
false
);
return
TSDB_CODE_QRY_NOT_READY
;
return
TSDB_CODE_QRY_NOT_READY
;
}
}
#endif
}
// ahandle is the sqlObj pointer
// ahandle is the sqlObj pointer
code
=
vnodeDumpQueryResult
(
pRet
,
pVnode
,
handle
,
&
freeHandle
,
pRead
->
rpcHandle
);
code
=
vnodeDumpQueryResult
(
pRet
,
pVnode
,
handle
,
&
freeHandle
,
pRead
->
rpcHandle
);
...
...
tests/pytest/fulltest.sh
浏览文件 @
eede5a77
...
@@ -160,6 +160,7 @@ python3 ./test.py -f query/bug1874.py
...
@@ -160,6 +160,7 @@ python3 ./test.py -f query/bug1874.py
python3 ./test.py
-f
query/bug1875.py
python3 ./test.py
-f
query/bug1875.py
python3 ./test.py
-f
query/bug1876.py
python3 ./test.py
-f
query/bug1876.py
python3 ./test.py
-f
query/bug2218.py
python3 ./test.py
-f
query/bug2218.py
python3 ./test.py
-f
query/sliding.py
#stream
#stream
python3 ./test.py
-f
stream/metric_1.py
python3 ./test.py
-f
stream/metric_1.py
...
...
tests/pytest/query/queryInterval.py
浏览文件 @
eede5a77
...
@@ -16,6 +16,7 @@ import taos
...
@@ -16,6 +16,7 @@ import taos
from
util.log
import
tdLog
from
util.log
import
tdLog
from
util.cases
import
tdCases
from
util.cases
import
tdCases
from
util.sql
import
tdSql
from
util.sql
import
tdSql
from
util.dnodes
import
tdDnodes
class
TDTestCase
:
class
TDTestCase
:
...
@@ -72,6 +73,19 @@ class TDTestCase:
...
@@ -72,6 +73,19 @@ class TDTestCase:
tdSql
.
checkData
(
6
,
0
,
"2020-09-16 00:00:00"
)
tdSql
.
checkData
(
6
,
0
,
"2020-09-16 00:00:00"
)
tdSql
.
checkData
(
6
,
1
,
222.0
)
tdSql
.
checkData
(
6
,
1
,
222.0
)
# test case for https://jira.taosdata.com:18080/browse/TD-2298
tdSql
.
execute
(
"create database test keep 36500"
)
tdSql
.
execute
(
"use test"
)
tdSql
.
execute
(
"create table t (ts timestamp, voltage int)"
)
for
i
in
range
(
10000
):
tdSql
.
execute
(
"insert into t values(%d, 0)"
%
(
1000000
+
i
*
6000
))
tdDnodes
.
stop
(
1
)
tdDnodes
.
start
(
1
)
tdSql
.
query
(
"select last(*) from t interval(1s)"
)
tdSql
.
checkRows
(
10000
)
def
stop
(
self
):
def
stop
(
self
):
tdSql
.
close
()
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录