Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
eebc949c
T
TDengine
项目概览
taosdata
/
TDengine
接近 2 年 前同步成功
通知
1192
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看板
提交
eebc949c
编写于
3月 21, 2023
作者:
S
shenglian zhou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enhance: add max query time range limit to taosc
上级
3609ff5c
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
36 addition
and
1 deletion
+36
-1
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+19
-0
src/common/inc/tglobal.h
src/common/inc/tglobal.h
+1
-0
src/common/src/tglobal.c
src/common/src/tglobal.c
+14
-0
src/inc/taoserror.h
src/inc/taoserror.h
+1
-1
src/util/src/terror.c
src/util/src/terror.c
+1
-0
未找到文件。
src/client/src/tscSQLParser.c
浏览文件 @
eebc949c
...
...
@@ -6605,6 +6605,18 @@ _ret:
return
ret
;
}
static
int32_t
validateMaxQueryTimeRange
(
SSqlObj
*
pSql
,
SQueryInfo
*
pQueryInfo
)
{
if
(
tsMaxQueryTimeRange
<
0
)
{
return
TSDB_CODE_SUCCESS
;
}
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
0
);
STableComInfo
tinfo
=
tscGetTableInfo
(
pTableMetaInfo
->
pTableMeta
);
int64_t
maxTimeRange
=
convertTimePrecision
(
tsMaxQueryTimeRange
*
1000
,
TSDB_TIME_PRECISION_MILLI
,
tinfo
.
precision
);
if
(
pQueryInfo
->
window
.
ekey
-
pQueryInfo
->
window
.
skey
>
maxTimeRange
)
{
return
TSDB_CODE_TSC_EXCEED_QUERY_TIME_RANGE
;
}
return
TSDB_CODE_SUCCESS
;
}
int32_t
validateWhereNode
(
SQueryInfo
*
pQueryInfo
,
tSqlExpr
**
pExpr
,
SSqlObj
*
pSql
,
bool
joinQuery
,
bool
delData
)
{
...
...
@@ -10665,6 +10677,10 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
if
((
code
=
validateRangeNode
(
pSql
,
pQueryInfo
,
pSqlNode
))
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
if
((
code
=
validateMaxQueryTimeRange
(
pSql
,
pQueryInfo
))
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
}
else
{
pQueryInfo
->
command
=
TSDB_SQL_SELECT
;
...
...
@@ -10819,6 +10835,9 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
return
code
;
}
if
((
code
=
validateMaxQueryTimeRange
(
pSql
,
pQueryInfo
))
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
}
{
// set the query info
...
...
src/common/inc/tglobal.h
浏览文件 @
eebc949c
...
...
@@ -96,6 +96,7 @@ extern int64_t tsMaxRetentWindow;
extern
bool
tsWriteBatchThreadLocal
;
extern
int32_t
tsWriteBatchSize
;
extern
int32_t
tsWriteBatchTimeout
;
extern
int32_t
tsMaxQueryTimeRange
;
// db parameters in client
extern
int32_t
tsCacheBlockSize
;
...
...
src/common/src/tglobal.c
浏览文件 @
eebc949c
...
...
@@ -135,6 +135,10 @@ bool tsWriteBatchThreadLocal = false; // if thread local enable, each thre
int32_t
tsWriteBatchSize
=
0
;
// suggest: 64 - 512, default 0, 0 means disable batching.
int32_t
tsWriteBatchTimeout
=
10
;
// suggest: 2 - 100 (unit: milliseconds)
// max query time range
// if less than zero, no limits
int32_t
tsMaxQueryTimeRange
=
-
1
;
// the maximum allowed query buffer size during query processing for each data node.
// -1 no limit (default)
// 0 no query allowed, queries are disabled
...
...
@@ -1923,6 +1927,16 @@ static void doInitGlobalConfig(void) {
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
cfg
.
option
=
"maxQueryTimeRange"
;
cfg
.
ptr
=
&
tsMaxQueryTimeRange
;
cfg
.
valType
=
TAOS_CFG_VTYPE_INT32
;
cfg
.
cfgType
=
TSDB_CFG_CTYPE_B_CONFIG
|
TSDB_CFG_CTYPE_B_SHOW
|
TSDB_CFG_CTYPE_B_CLIENT
;
cfg
.
minValue
=
-
1
;
cfg
.
maxValue
=
(
float
)
INT32_MAX
;
cfg
.
ptrLength
=
0
;
cfg
.
unitType
=
TAOS_CFG_UTYPE_NONE
;
taosInitConfigOption
(
cfg
);
assert
(
tsGlobalConfigNum
==
TSDB_CFG_MAX_NUM
);
#else
// if TD_TSZ macro define, have 5 count configs, so must add 5
...
...
src/inc/taoserror.h
浏览文件 @
eebc949c
...
...
@@ -121,7 +121,7 @@ int32_t* taosGetErrno();
#define TSDB_CODE_TSC_TOO_MANY_SML_LINES TAOS_DEF_ERROR_CODE(0, 0x0229) //"too many lines in batch")
#define TSDB_CODE_TSC_SEND_DATA_FAILED TAOS_DEF_ERROR_CODE(0, 0x0230) //"Client send request data error"
#define TSDB_CODE_TSC_EXCEED_ROW_BYTES TAOS_DEF_ERROR_CODE(0, 0x0231) //"Columns total length exceeds row bytes
#define TSDB_CODE_TSC_EXCEED_QUERY_TIME_RANGE TAOS_DEF_ERROR_CODE(0, 0x0232) //"Query time range exceeds max query time range"
// mnode
#define TSDB_CODE_MND_MSG_NOT_PROCESSED TAOS_DEF_ERROR_CODE(0, 0x0300) //"Message not processed"
#define TSDB_CODE_MND_ACTION_IN_PROGRESS TAOS_DEF_ERROR_CODE(0, 0x0301) //"Message is progressing"
...
...
src/util/src/terror.c
浏览文件 @
eebc949c
...
...
@@ -128,6 +128,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_TSC_RES_TOO_MANY, "Result set too large
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_TOO_MANY_SML_LINES
,
"Too many lines in batch"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_SEND_DATA_FAILED
,
"Client send request data failed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_EXCEED_ROW_BYTES
,
"Columns total length exceeds row bytes"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_EXCEED_QUERY_TIME_RANGE
,
"Query time range exceeds max query time range"
)
// mnode
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_MSG_NOT_PROCESSED
,
"Message not processed"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录