Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
4305ed31
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
未验证
提交
4305ed31
编写于
4月 27, 2022
作者:
wmmhello
提交者:
GitHub
4月 27, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #11877 from taosdata/fix/TD-14916
fix: coredump if mode function with interval
上级
e9dd8290
a0d3c08b
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
16 addition
and
16 deletion
+16
-16
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+1
-7
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+5
-0
src/query/inc/qResultbuf.h
src/query/inc/qResultbuf.h
+3
-3
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+4
-4
src/query/src/qUtil.c
src/query/src/qUtil.c
+3
-2
未找到文件。
src/client/src/tscSQLParser.c
浏览文件 @
4305ed31
...
...
@@ -3362,13 +3362,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, int32_t col
tVariantDump
(
pVariant
,
val
,
TSDB_DATA_TYPE_BIGINT
,
true
);
if
(
functionId
==
TSDB_FUNC_UNIQUE
){
// consider of memory size
if
(
pSchema
->
bytes
<
10
){
GET_INT64_VAL
(
val
)
=
MAX_UNIQUE_RESULT_ROWS
*
100
;
}
else
if
(
pSchema
->
bytes
<
100
){
GET_INT64_VAL
(
val
)
=
MAX_UNIQUE_RESULT_ROWS
*
10
;
}
else
{
GET_INT64_VAL
(
val
)
=
MAX_UNIQUE_RESULT_ROWS
;
}
GET_INT64_VAL
(
val
)
=
MAX_UNIQUE_RESULT_ROWS
;
}
int64_t
numRowsSelected
=
GET_INT64_VAL
(
val
);
...
...
src/client/src/tscUtil.c
浏览文件 @
4305ed31
...
...
@@ -1528,6 +1528,11 @@ void handleDownstreamOperator(SSqlObj** pSqlObjList, int32_t numOfUpstream, SQue
tscDebug
(
"0x%"
PRIx64
" create QInfo 0x%"
PRIx64
" to execute the main query while all nest queries are ready"
,
pSql
->
self
,
pSql
->
self
);
px
->
pQInfo
=
createQInfoFromQueryNode
(
px
,
&
tableGroupInfo
,
pSourceOperator
,
NULL
,
NULL
,
MASTER_SCAN
,
pSql
->
self
);
if
(
px
->
pQInfo
==
NULL
)
{
tscAsyncResultOnError
(
pSql
);
pOutput
->
code
=
TSDB_CODE_QRY_OUT_OF_MEMORY
;
return
;
}
px
->
pQInfo
->
runtimeEnv
.
udfIsCopy
=
true
;
px
->
pQInfo
->
runtimeEnv
.
pUdfInfo
=
pUdfInfo
;
...
...
src/query/inc/qResultbuf.h
浏览文件 @
4305ed31
...
...
@@ -79,9 +79,9 @@ typedef struct SDiskbasedResultBuf {
#define DEFAULT_INTERN_BUF_PAGE_SIZE (1024L) // in bytes
#define PAGE_INFO_INITIALIZER (SPageDiskInfo){-1, -1}
#define MAX_UNIQUE_RESULT_ROWS (10000)
#define MAX_UNIQUE_RESULT_SIZE (1024*1024
*10
)
#define MAX_MODE_INNER_RESULT_ROWS (10000
00
)
#define MAX_MODE_INNER_RESULT_SIZE (1024*1024
*10
)
#define MAX_UNIQUE_RESULT_SIZE (1024*1024)
#define MAX_MODE_INNER_RESULT_ROWS (10000)
#define MAX_MODE_INNER_RESULT_SIZE (1024*1024)
/**
* create disk-based result buffer
* @param pResultBuf
...
...
src/query/src/qExecutor.c
浏览文件 @
4305ed31
...
...
@@ -330,11 +330,11 @@ SSDataBlock* createOutputBuf(SExprInfo* pExpr, int32_t numOfOutput, int32_t numO
int64_t
tmp
=
idata
.
info
.
bytes
;
tmp
*=
numOfRows
;
if
(
tmp
>=
1024
*
1024
*
1024
)
{
// 1G
qError
(
"size is too large, failed to allocate column buffer for output buffer
"
);
if
(
tmp
>=
INT32_MAX
)
{
qError
(
"size is too large, failed to allocate column buffer for output buffer
:%"
PRId64
,
tmp
);
tmp
=
128
*
1024
*
1024
;
}
int32_t
size
=
(
int32
_t
)
MAX
(
tmp
,
minSize
);
size_t
size
=
(
size
_t
)
MAX
(
tmp
,
minSize
);
idata
.
pData
=
calloc
(
1
,
size
);
// at least to hold a pointer on x64 platform
if
(
idata
.
pData
==
NULL
)
{
qError
(
"failed to allocate column buffer for output buffer"
);
...
...
@@ -2131,7 +2131,7 @@ static int32_t setupQueryRuntimeEnv(SQueryRuntimeEnv *pRuntimeEnv, int32_t numOf
pRuntimeEnv
->
sasArray
=
calloc
(
pQueryAttr
->
numOfOutput
,
sizeof
(
SScalarExprSupport
));
if
(
pRuntimeEnv
->
sasArray
==
NULL
||
pRuntimeEnv
->
pResultRowHashTable
==
NULL
||
pRuntimeEnv
->
keyBuf
==
NULL
||
pRuntimeEnv
->
prevRow
==
NULL
||
pRuntimeEnv
->
tagVal
==
NULL
)
{
pRuntimeEnv
->
prevRow
==
NULL
||
pRuntimeEnv
->
tagVal
==
NULL
||
pRuntimeEnv
->
pool
==
NULL
)
{
goto
_clean
;
}
...
...
src/query/src/qUtil.c
浏览文件 @
4305ed31
...
...
@@ -204,9 +204,9 @@ SResultRowPool* initResultRowPool(size_t size) {
p
->
elemSize
=
(
int32_t
)
size
;
int64_t
tmp
=
p
->
elemSize
;
tmp
*=
p
->
numOfElemPerBlock
;
if
(
tmp
>
1024
*
1024
*
1024
){
if
(
tmp
>
INT32_MAX
){
qError
(
"ResultRow blockSize is too large:%"
PRId64
,
tmp
);
tmp
=
128
*
1024
*
1024
;
return
NULL
;
}
p
->
blockSize
=
(
int32_t
)
tmp
;
p
->
position
.
pos
=
0
;
...
...
@@ -223,6 +223,7 @@ SResultRow* getNewResultRow(SResultRowPool* p) {
void
*
ptr
=
NULL
;
if
(
p
->
position
.
pos
==
0
)
{
ptr
=
calloc
(
1
,
p
->
blockSize
);
if
(
ptr
==
NULL
)
return
NULL
;
taosArrayPush
(
p
->
pData
,
&
ptr
);
}
else
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录