Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
aa5f5967
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
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看板
提交
aa5f5967
编写于
11月 11, 2021
作者:
X
Xiaoyu Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-10901]<fix>: Solve the conversion and serialization problems caused by long SQL.
上级
79be15f5
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
93 addition
and
105 deletion
+93
-105
src/client/src/tscServer.c
src/client/src/tscServer.c
+1
-1
src/inc/taosmsg.h
src/inc/taosmsg.h
+1
-1
src/query/inc/qExecutor.h
src/query/inc/qExecutor.h
+1
-1
src/query/inc/qFilter.h
src/query/inc/qFilter.h
+17
-28
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+2
-2
src/query/src/qFilter.c
src/query/src/qFilter.c
+71
-72
未找到文件。
src/client/src/tscServer.c
浏览文件 @
aa5f5967
...
@@ -975,7 +975,7 @@ int tscBuildQueryMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
...
@@ -975,7 +975,7 @@ int tscBuildQueryMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
if
(
pQueryInfo
->
colCond
&&
taosArrayGetSize
(
pQueryInfo
->
colCond
)
>
0
&&
!
onlyQueryTags
(
&
query
)
)
{
if
(
pQueryInfo
->
colCond
&&
taosArrayGetSize
(
pQueryInfo
->
colCond
)
>
0
&&
!
onlyQueryTags
(
&
query
)
)
{
STblCond
*
pCond
=
tsGetTableFilter
(
pQueryInfo
->
colCond
,
pTableMeta
->
id
.
uid
,
0
);
STblCond
*
pCond
=
tsGetTableFilter
(
pQueryInfo
->
colCond
,
pTableMeta
->
id
.
uid
,
0
);
if
(
pCond
!=
NULL
&&
pCond
->
cond
!=
NULL
)
{
if
(
pCond
!=
NULL
&&
pCond
->
cond
!=
NULL
)
{
pQueryMsg
->
colCondLen
=
hton
s
(
pCond
->
len
);
pQueryMsg
->
colCondLen
=
hton
l
(
pCond
->
len
);
memcpy
(
pMsg
,
pCond
->
cond
,
pCond
->
len
);
memcpy
(
pMsg
,
pCond
->
cond
,
pCond
->
len
);
pMsg
+=
pCond
->
len
;
pMsg
+=
pCond
->
len
;
...
...
src/inc/taosmsg.h
浏览文件 @
aa5f5967
...
@@ -486,7 +486,7 @@ typedef struct {
...
@@ -486,7 +486,7 @@ typedef struct {
SInterval
interval
;
SInterval
interval
;
SSessionWindow
sw
;
// session window
SSessionWindow
sw
;
// session window
uint16_t
tagCondLen
;
// tag length in current query
uint16_t
tagCondLen
;
// tag length in current query
uint16
_t
colCondLen
;
// column length in current query
int32
_t
colCondLen
;
// column length in current query
int16_t
numOfGroupCols
;
// num of group by columns
int16_t
numOfGroupCols
;
// num of group by columns
int16_t
orderByIdx
;
int16_t
orderByIdx
;
int16_t
orderType
;
// used in group by xx order by xxx
int16_t
orderType
;
// used in group by xx order by xxx
...
...
src/query/inc/qExecutor.h
浏览文件 @
aa5f5967
...
@@ -649,7 +649,7 @@ int32_t createQueryFunc(SQueriedTableInfo* pTableInfo, int32_t numOfOutput, SExp
...
@@ -649,7 +649,7 @@ int32_t createQueryFunc(SQueriedTableInfo* pTableInfo, int32_t numOfOutput, SExp
int32_t
createIndirectQueryFuncExprFromMsg
(
SQueryTableMsg
*
pQueryMsg
,
int32_t
numOfOutput
,
SExprInfo
**
pExprInfo
,
int32_t
createIndirectQueryFuncExprFromMsg
(
SQueryTableMsg
*
pQueryMsg
,
int32_t
numOfOutput
,
SExprInfo
**
pExprInfo
,
SSqlExpr
**
pExpr
,
SExprInfo
*
prevExpr
,
SUdfInfo
*
pUdfInfo
);
SSqlExpr
**
pExpr
,
SExprInfo
*
prevExpr
,
SUdfInfo
*
pUdfInfo
);
int32_t
createQueryFilter
(
char
*
data
,
uint16
_t
len
,
void
**
pFilters
);
int32_t
createQueryFilter
(
char
*
data
,
int32
_t
len
,
void
**
pFilters
);
SGroupbyExpr
*
createGroupbyExprFromMsg
(
SQueryTableMsg
*
pQueryMsg
,
SColIndex
*
pColIndex
,
int32_t
*
code
);
SGroupbyExpr
*
createGroupbyExprFromMsg
(
SQueryTableMsg
*
pQueryMsg
,
SColIndex
*
pColIndex
,
int32_t
*
code
);
SQInfo
*
createQInfoImpl
(
SQueryTableMsg
*
pQueryMsg
,
SGroupbyExpr
*
pGroupbyExpr
,
SExprInfo
*
pExprs
,
SQInfo
*
createQInfoImpl
(
SQueryTableMsg
*
pQueryMsg
,
SGroupbyExpr
*
pGroupbyExpr
,
SExprInfo
*
pExprs
,
...
...
src/query/inc/qFilter.h
浏览文件 @
aa5f5967
...
@@ -101,14 +101,6 @@ typedef struct SFilterRange {
...
@@ -101,14 +101,6 @@ typedef struct SFilterRange {
char
eflag
;
char
eflag
;
}
SFilterRange
;
}
SFilterRange
;
typedef
struct
SFilterColRange
{
uint16_t
idx
;
//column field idx
bool
isNull
;
bool
notNull
;
bool
isRange
;
SFilterRange
ra
;
}
SFilterColRange
;
typedef
bool
(
*
rangeCompFunc
)
(
const
void
*
,
const
void
*
,
const
void
*
,
const
void
*
,
__compar_fn_t
);
typedef
bool
(
*
rangeCompFunc
)
(
const
void
*
,
const
void
*
,
const
void
*
,
const
void
*
,
__compar_fn_t
);
typedef
int32_t
(
*
filter_desc_compare_func
)(
const
void
*
,
const
void
*
);
typedef
int32_t
(
*
filter_desc_compare_func
)(
const
void
*
,
const
void
*
);
typedef
bool
(
*
filter_exec_func
)(
void
*
,
int32_t
,
int8_t
**
,
SDataStatis
*
,
int16_t
);
typedef
bool
(
*
filter_exec_func
)(
void
*
,
int32_t
,
int8_t
**
,
SDataStatis
*
,
int16_t
);
...
@@ -160,20 +152,20 @@ typedef struct SFilterField {
...
@@ -160,20 +152,20 @@ typedef struct SFilterField {
}
SFilterField
;
}
SFilterField
;
typedef
struct
SFilterFields
{
typedef
struct
SFilterFields
{
uint
16
_t
size
;
uint
32
_t
size
;
uint
16
_t
num
;
uint
32
_t
num
;
SFilterField
*
fields
;
SFilterField
*
fields
;
}
SFilterFields
;
}
SFilterFields
;
typedef
struct
SFilterFieldId
{
typedef
struct
SFilterFieldId
{
uint16_t
type
;
uint16_t
type
;
uint
16
_t
idx
;
uint
32
_t
idx
;
}
SFilterFieldId
;
}
SFilterFieldId
;
typedef
struct
SFilterGroup
{
typedef
struct
SFilterGroup
{
uint
16
_t
unitSize
;
uint
32
_t
unitSize
;
uint
16
_t
unitNum
;
uint
32
_t
unitNum
;
uint
16
_t
*
unitIdxs
;
uint
32
_t
*
unitIdxs
;
uint8_t
*
unitFlags
;
// !unit result
uint8_t
*
unitFlags
;
// !unit result
}
SFilterGroup
;
}
SFilterGroup
;
...
@@ -184,13 +176,13 @@ typedef struct SFilterColInfo {
...
@@ -184,13 +176,13 @@ typedef struct SFilterColInfo {
}
SFilterColInfo
;
}
SFilterColInfo
;
typedef
struct
SFilterGroupCtx
{
typedef
struct
SFilterGroupCtx
{
uint
16
_t
colNum
;
uint
32
_t
colNum
;
uint
16
_t
*
colIdx
;
uint
32
_t
*
colIdx
;
SFilterColInfo
*
colInfo
;
SFilterColInfo
*
colInfo
;
}
SFilterGroupCtx
;
}
SFilterGroupCtx
;
typedef
struct
SFilterColCtx
{
typedef
struct
SFilterColCtx
{
uint
16
_t
colIdx
;
uint
32
_t
colIdx
;
void
*
ctx
;
void
*
ctx
;
}
SFilterColCtx
;
}
SFilterColCtx
;
...
@@ -227,13 +219,12 @@ typedef struct SFilterPCtx {
...
@@ -227,13 +219,12 @@ typedef struct SFilterPCtx {
typedef
struct
SFilterInfo
{
typedef
struct
SFilterInfo
{
uint32_t
options
;
uint32_t
options
;
uint32_t
status
;
uint32_t
status
;
uint
16
_t
unitSize
;
uint
32
_t
unitSize
;
uint
16
_t
unitNum
;
uint
32
_t
unitNum
;
uint
16
_t
groupNum
;
uint
32
_t
groupNum
;
uint
16
_t
colRangeNum
;
uint
32
_t
colRangeNum
;
SFilterFields
fields
[
FLD_TYPE_MAX
];
SFilterFields
fields
[
FLD_TYPE_MAX
];
SFilterGroup
*
groups
;
SFilterGroup
*
groups
;
uint16_t
*
cgroups
;
SFilterUnit
*
units
;
SFilterUnit
*
units
;
SFilterComUnit
*
cunits
;
SFilterComUnit
*
cunits
;
uint8_t
*
unitRes
;
// result
uint8_t
*
unitRes
;
// result
...
@@ -241,15 +232,13 @@ typedef struct SFilterInfo {
...
@@ -241,15 +232,13 @@ typedef struct SFilterInfo {
SFilterRangeCtx
**
colRange
;
SFilterRangeCtx
**
colRange
;
filter_exec_func
func
;
filter_exec_func
func
;
uint8_t
blkFlag
;
uint8_t
blkFlag
;
uint
16
_t
blkGroupNum
;
uint
32
_t
blkGroupNum
;
uint
16
_t
*
blkUnits
;
uint
32
_t
*
blkUnits
;
int8_t
*
blkUnitRes
;
int8_t
*
blkUnitRes
;
SFilterPCtx
pctx
;
SFilterPCtx
pctx
;
}
SFilterInfo
;
}
SFilterInfo
;
#define COL_FIELD_SIZE (sizeof(SFilterField) + 2 * sizeof(int64_t))
#define FILTER_NO_MERGE_DATA_TYPE(t) ((t) == TSDB_DATA_TYPE_BINARY || (t) == TSDB_DATA_TYPE_NCHAR)
#define FILTER_NO_MERGE_DATA_TYPE(t) ((t) == TSDB_DATA_TYPE_BINARY || (t) == TSDB_DATA_TYPE_NCHAR)
#define FILTER_NO_MERGE_OPTR(o) ((o) == TSDB_RELATION_ISNULL || (o) == TSDB_RELATION_NOTNULL || (o) == FILTER_DUMMY_EMPTY_OPTR)
#define FILTER_NO_MERGE_OPTR(o) ((o) == TSDB_RELATION_ISNULL || (o) == TSDB_RELATION_NOTNULL || (o) == FILTER_DUMMY_EMPTY_OPTR)
...
@@ -266,7 +255,7 @@ typedef struct SFilterInfo {
...
@@ -266,7 +255,7 @@ typedef struct SFilterInfo {
#define FILTER_CLR_FLAG(st, f) st &= (~f)
#define FILTER_CLR_FLAG(st, f) st &= (~f)
#define SIMPLE_COPY_VALUES(dst, src) *((int64_t *)dst) = *((int64_t *)src)
#define SIMPLE_COPY_VALUES(dst, src) *((int64_t *)dst) = *((int64_t *)src)
#define FILTER_PACKAGE_UNIT_HASH_KEY(v, optr, idx1, idx2) do { char *_t = (char *)v; _t[0] = optr; *(uint
16_t *)(_t + 1) = idx1; *(uint16
_t *)(_t + 3) = idx2; } while (0)
#define FILTER_PACKAGE_UNIT_HASH_KEY(v, optr, idx1, idx2) do { char *_t = (char *)v; _t[0] = optr; *(uint
32_t *)(_t + 1) = idx1; *(uint32
_t *)(_t + 3) = idx2; } while (0)
#define FILTER_GREATER(cr,sflag,eflag) ((cr > 0) || ((cr == 0) && (FILTER_GET_FLAG(sflag,RANGE_FLG_EXCLUDE) || FILTER_GET_FLAG(eflag,RANGE_FLG_EXCLUDE))))
#define FILTER_GREATER(cr,sflag,eflag) ((cr > 0) || ((cr == 0) && (FILTER_GET_FLAG(sflag,RANGE_FLG_EXCLUDE) || FILTER_GET_FLAG(eflag,RANGE_FLG_EXCLUDE))))
#define FILTER_COPY_RA(dst, src) do { (dst)->sflag = (src)->sflag; (dst)->eflag = (src)->eflag; (dst)->s = (src)->s; (dst)->e = (src)->e; } while (0)
#define FILTER_COPY_RA(dst, src) do { (dst)->sflag = (src)->sflag; (dst)->eflag = (src)->eflag; (dst)->s = (src)->s; (dst)->e = (src)->e; } while (0)
...
@@ -321,7 +310,7 @@ typedef struct SFilterInfo {
...
@@ -321,7 +310,7 @@ typedef struct SFilterInfo {
#define FILTER_PUSH_VAR_HASH(colInfo, ha) do { (colInfo).type = RANGE_TYPE_VAR_HASH; (colInfo).info = ha;} while (0)
#define FILTER_PUSH_VAR_HASH(colInfo, ha) do { (colInfo).type = RANGE_TYPE_VAR_HASH; (colInfo).info = ha;} while (0)
#define FILTER_PUSH_CTX(colInfo, ctx) do { (colInfo).type = RANGE_TYPE_MR_CTX; (colInfo).info = ctx;} while (0)
#define FILTER_PUSH_CTX(colInfo, ctx) do { (colInfo).type = RANGE_TYPE_MR_CTX; (colInfo).info = ctx;} while (0)
#define FILTER_COPY_IDX(dst, src, n) do { *(dst) = malloc(sizeof(uint
16_t) * n); memcpy(*(dst), src, sizeof(uint16
_t) * n);} while (0)
#define FILTER_COPY_IDX(dst, src, n) do { *(dst) = malloc(sizeof(uint
32_t) * n); memcpy(*(dst), src, sizeof(uint32
_t) * n);} while (0)
#define FILTER_ADD_CTX_TO_GRES(gres, idx, ctx) do { if ((gres)->colCtxs == NULL) { (gres)->colCtxs = taosArrayInit(gres->colNum, sizeof(SFilterColCtx)); } SFilterColCtx cCtx = {idx, ctx}; taosArrayPush((gres)->colCtxs, &cCtx); } while (0)
#define FILTER_ADD_CTX_TO_GRES(gres, idx, ctx) do { if ((gres)->colCtxs == NULL) { (gres)->colCtxs = taosArrayInit(gres->colNum, sizeof(SFilterColCtx)); } SFilterColCtx cCtx = {idx, ctx}; taosArrayPush((gres)->colCtxs, &cCtx); } while (0)
...
...
src/query/src/qExecutor.c
浏览文件 @
aa5f5967
...
@@ -7595,7 +7595,7 @@ int32_t convertQueryMsg(SQueryTableMsg *pQueryMsg, SQueryParam* param) {
...
@@ -7595,7 +7595,7 @@ int32_t convertQueryMsg(SQueryTableMsg *pQueryMsg, SQueryParam* param) {
pQueryMsg
->
numOfGroupCols
=
htons
(
pQueryMsg
->
numOfGroupCols
);
pQueryMsg
->
numOfGroupCols
=
htons
(
pQueryMsg
->
numOfGroupCols
);
pQueryMsg
->
tagCondLen
=
htons
(
pQueryMsg
->
tagCondLen
);
pQueryMsg
->
tagCondLen
=
htons
(
pQueryMsg
->
tagCondLen
);
pQueryMsg
->
colCondLen
=
hton
s
(
pQueryMsg
->
colCondLen
);
pQueryMsg
->
colCondLen
=
hton
l
(
pQueryMsg
->
colCondLen
);
pQueryMsg
->
tsBuf
.
tsOffset
=
htonl
(
pQueryMsg
->
tsBuf
.
tsOffset
);
pQueryMsg
->
tsBuf
.
tsOffset
=
htonl
(
pQueryMsg
->
tsBuf
.
tsOffset
);
pQueryMsg
->
tsBuf
.
tsLen
=
htonl
(
pQueryMsg
->
tsBuf
.
tsLen
);
pQueryMsg
->
tsBuf
.
tsLen
=
htonl
(
pQueryMsg
->
tsBuf
.
tsLen
);
...
@@ -8245,7 +8245,7 @@ int32_t createQueryFunc(SQueriedTableInfo* pTableInfo, int32_t numOfOutput, SExp
...
@@ -8245,7 +8245,7 @@ int32_t createQueryFunc(SQueriedTableInfo* pTableInfo, int32_t numOfOutput, SExp
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
int32_t
createQueryFilter
(
char
*
data
,
uint16
_t
len
,
void
**
pFilters
)
{
int32_t
createQueryFilter
(
char
*
data
,
int32
_t
len
,
void
**
pFilters
)
{
tExprNode
*
expr
=
NULL
;
tExprNode
*
expr
=
NULL
;
TRY
(
TSDB_MAX_TAG_CONDITIONS
)
{
TRY
(
TSDB_MAX_TAG_CONDITIONS
)
{
...
...
src/query/src/qFilter.c
浏览文件 @
aa5f5967
...
@@ -254,7 +254,7 @@ int32_t filterInitUnitsFields(SFilterInfo *info) {
...
@@ -254,7 +254,7 @@ int32_t filterInitUnitsFields(SFilterInfo *info) {
info
->
fields
[
FLD_TYPE_COLUMN
].
num
=
0
;
info
->
fields
[
FLD_TYPE_COLUMN
].
num
=
0
;
info
->
fields
[
FLD_TYPE_COLUMN
].
size
=
FILTER_DEFAULT_FIELD_SIZE
;
info
->
fields
[
FLD_TYPE_COLUMN
].
size
=
FILTER_DEFAULT_FIELD_SIZE
;
info
->
fields
[
FLD_TYPE_COLUMN
].
fields
=
calloc
(
info
->
fields
[
FLD_TYPE_COLUMN
].
size
,
COL_FIELD_SIZE
);
info
->
fields
[
FLD_TYPE_COLUMN
].
fields
=
calloc
(
info
->
fields
[
FLD_TYPE_COLUMN
].
size
,
sizeof
(
SFilterField
)
);
info
->
fields
[
FLD_TYPE_VALUE
].
num
=
0
;
info
->
fields
[
FLD_TYPE_VALUE
].
num
=
0
;
info
->
fields
[
FLD_TYPE_VALUE
].
size
=
FILTER_DEFAULT_FIELD_SIZE
;
info
->
fields
[
FLD_TYPE_VALUE
].
size
=
FILTER_DEFAULT_FIELD_SIZE
;
info
->
fields
[
FLD_TYPE_VALUE
].
fields
=
calloc
(
info
->
fields
[
FLD_TYPE_VALUE
].
size
,
sizeof
(
SFilterField
));
info
->
fields
[
FLD_TYPE_VALUE
].
fields
=
calloc
(
info
->
fields
[
FLD_TYPE_VALUE
].
size
,
sizeof
(
SFilterField
));
...
@@ -756,7 +756,7 @@ int32_t filterDetachCnfGroups(SArray* group, SArray* left, SArray* right) {
...
@@ -756,7 +756,7 @@ int32_t filterDetachCnfGroups(SArray* group, SArray* left, SArray* right) {
}
}
int32_t
filterGetFiledByDesc
(
SFilterFields
*
fields
,
int32_t
type
,
void
*
v
)
{
int32_t
filterGetFiledByDesc
(
SFilterFields
*
fields
,
int32_t
type
,
void
*
v
)
{
for
(
uint
16
_t
i
=
0
;
i
<
fields
->
num
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
fields
->
num
;
++
i
)
{
if
(
0
==
gDescCompare
[
type
](
fields
->
fields
[
i
].
desc
,
v
))
{
if
(
0
==
gDescCompare
[
type
](
fields
->
fields
[
i
].
desc
,
v
))
{
return
i
;
return
i
;
}
}
...
@@ -784,8 +784,8 @@ int32_t filterGetFiledByData(SFilterInfo *info, int32_t type, void *v, int32_t d
...
@@ -784,8 +784,8 @@ int32_t filterGetFiledByData(SFilterInfo *info, int32_t type, void *v, int32_t d
int32_t
filterAddField
(
SFilterInfo
*
info
,
void
*
desc
,
void
**
data
,
int32_t
type
,
SFilterFieldId
*
fid
,
int32_t
dataLen
,
bool
freeIfExists
)
{
int32_t
filterAddField
(
SFilterInfo
*
info
,
void
*
desc
,
void
**
data
,
int32_t
type
,
SFilterFieldId
*
fid
,
int32_t
dataLen
,
bool
freeIfExists
)
{
int
32
_t
idx
=
-
1
;
int
64
_t
idx
=
-
1
;
uint
16
_t
*
num
;
uint
32
_t
*
num
;
num
=
&
info
->
fields
[
type
].
num
;
num
=
&
info
->
fields
[
type
].
num
;
...
@@ -869,7 +869,7 @@ int32_t filterAddFieldFromNode(SFilterInfo *info, tExprNode *node, SFilterFieldI
...
@@ -869,7 +869,7 @@ int32_t filterAddFieldFromNode(SFilterInfo *info, tExprNode *node, SFilterFieldI
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
int32_t
filterAddUnit
(
SFilterInfo
*
info
,
uint8_t
optr
,
SFilterFieldId
*
left
,
SFilterFieldId
*
right
,
uint
16
_t
*
uidx
)
{
int32_t
filterAddUnit
(
SFilterInfo
*
info
,
uint8_t
optr
,
SFilterFieldId
*
left
,
SFilterFieldId
*
right
,
uint
32
_t
*
uidx
)
{
if
(
FILTER_GET_FLAG
(
info
->
options
,
FI_OPTION_NEED_UNIQE
))
{
if
(
FILTER_GET_FLAG
(
info
->
options
,
FI_OPTION_NEED_UNIQE
))
{
if
(
info
->
pctx
.
unitHash
==
NULL
)
{
if
(
info
->
pctx
.
unitHash
==
NULL
)
{
info
->
pctx
.
unitHash
=
taosHashInit
(
FILTER_DEFAULT_GROUP_SIZE
*
FILTER_DEFAULT_UNIT_SIZE
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
false
,
false
);
info
->
pctx
.
unitHash
=
taosHashInit
(
FILTER_DEFAULT_GROUP_SIZE
*
FILTER_DEFAULT_UNIT_SIZE
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_BIGINT
),
false
,
false
);
...
@@ -878,14 +878,14 @@ int32_t filterAddUnit(SFilterInfo *info, uint8_t optr, SFilterFieldId *left, SFi
...
@@ -878,14 +878,14 @@ int32_t filterAddUnit(SFilterInfo *info, uint8_t optr, SFilterFieldId *left, SFi
FILTER_PACKAGE_UNIT_HASH_KEY
(
&
v
,
optr
,
left
->
idx
,
right
?
right
->
idx
:
-
1
);
FILTER_PACKAGE_UNIT_HASH_KEY
(
&
v
,
optr
,
left
->
idx
,
right
?
right
->
idx
:
-
1
);
void
*
hu
=
taosHashGet
(
info
->
pctx
.
unitHash
,
&
v
,
sizeof
(
v
));
void
*
hu
=
taosHashGet
(
info
->
pctx
.
unitHash
,
&
v
,
sizeof
(
v
));
if
(
hu
)
{
if
(
hu
)
{
*
uidx
=
*
(
uint
16
_t
*
)
hu
;
*
uidx
=
*
(
uint
32
_t
*
)
hu
;
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
}
}
}
}
if
(
info
->
unitNum
>=
info
->
unitSize
)
{
if
(
info
->
unitNum
>=
info
->
unitSize
)
{
uint
16
_t
psize
=
info
->
unitSize
;
uint
32
_t
psize
=
info
->
unitSize
;
info
->
unitSize
+=
FILTER_DEFAULT_UNIT_SIZE
;
info
->
unitSize
+=
FILTER_DEFAULT_UNIT_SIZE
;
info
->
units
=
realloc
(
info
->
units
,
info
->
unitSize
*
sizeof
(
SFilterUnit
));
info
->
units
=
realloc
(
info
->
units
,
info
->
unitSize
*
sizeof
(
SFilterUnit
));
memset
(
info
->
units
+
psize
,
0
,
sizeof
(
*
info
->
units
)
*
FILTER_DEFAULT_UNIT_SIZE
);
memset
(
info
->
units
+
psize
,
0
,
sizeof
(
*
info
->
units
)
*
FILTER_DEFAULT_UNIT_SIZE
);
...
@@ -926,7 +926,7 @@ int32_t filterAddUnit(SFilterInfo *info, uint8_t optr, SFilterFieldId *left, SFi
...
@@ -926,7 +926,7 @@ int32_t filterAddUnit(SFilterInfo *info, uint8_t optr, SFilterFieldId *left, SFi
int32_t
filterAddUnitToGroup
(
SFilterGroup
*
group
,
uint
16
_t
unitIdx
)
{
int32_t
filterAddUnitToGroup
(
SFilterGroup
*
group
,
uint
32
_t
unitIdx
)
{
if
(
group
->
unitNum
>=
group
->
unitSize
)
{
if
(
group
->
unitNum
>=
group
->
unitSize
)
{
group
->
unitSize
+=
FILTER_DEFAULT_UNIT_SIZE
;
group
->
unitSize
+=
FILTER_DEFAULT_UNIT_SIZE
;
group
->
unitIdxs
=
realloc
(
group
->
unitIdxs
,
group
->
unitSize
*
sizeof
(
*
group
->
unitIdxs
));
group
->
unitIdxs
=
realloc
(
group
->
unitIdxs
,
group
->
unitSize
*
sizeof
(
*
group
->
unitIdxs
));
...
@@ -1157,7 +1157,7 @@ int32_t filterAddGroupUnitFromNode(SFilterInfo *info, tExprNode* tree, SArray *g
...
@@ -1157,7 +1157,7 @@ int32_t filterAddGroupUnitFromNode(SFilterInfo *info, tExprNode* tree, SArray *g
tVariant
*
var
=
tree
->
_node
.
pRight
->
pVal
;
tVariant
*
var
=
tree
->
_node
.
pRight
->
pVal
;
int32_t
type
=
FILTER_GET_COL_FIELD_TYPE
(
FILTER_GET_FIELD
(
info
,
left
));
int32_t
type
=
FILTER_GET_COL_FIELD_TYPE
(
FILTER_GET_FIELD
(
info
,
left
));
int32_t
len
=
0
;
int32_t
len
=
0
;
uint
16
_t
uidx
=
0
;
uint
32
_t
uidx
=
0
;
if
(
tree
->
_node
.
optr
==
TSDB_RELATION_IN
&&
(
!
IS_VAR_DATA_TYPE
(
type
)))
{
if
(
tree
->
_node
.
optr
==
TSDB_RELATION_IN
&&
(
!
IS_VAR_DATA_TYPE
(
type
)))
{
void
*
data
=
NULL
;
void
*
data
=
NULL
;
...
@@ -1192,7 +1192,6 @@ int32_t filterAddGroupUnitFromNode(SFilterInfo *info, tExprNode* tree, SArray *g
...
@@ -1192,7 +1192,6 @@ int32_t filterAddGroupUnitFromNode(SFilterInfo *info, tExprNode* tree, SArray *g
SIMPLE_COPY_VALUES
(
fdata
,
key
);
SIMPLE_COPY_VALUES
(
fdata
,
key
);
len
=
tDataTypes
[
type
].
bytes
;
len
=
tDataTypes
[
type
].
bytes
;
}
}
filterAddField
(
info
,
NULL
,
&
fdata
,
FLD_TYPE_VALUE
,
&
right
,
len
,
true
);
filterAddField
(
info
,
NULL
,
&
fdata
,
FLD_TYPE_VALUE
,
&
right
,
len
,
true
);
filterAddUnit
(
info
,
TSDB_RELATION_EQUAL
,
&
left
,
&
right
,
&
uidx
);
filterAddUnit
(
info
,
TSDB_RELATION_EQUAL
,
&
left
,
&
right
,
&
uidx
);
...
@@ -1221,7 +1220,7 @@ int32_t filterAddGroupUnitFromNode(SFilterInfo *info, tExprNode* tree, SArray *g
...
@@ -1221,7 +1220,7 @@ int32_t filterAddGroupUnitFromNode(SFilterInfo *info, tExprNode* tree, SArray *g
}
}
int32_t
filterAddUnitFromUnit
(
SFilterInfo
*
dst
,
SFilterInfo
*
src
,
SFilterUnit
*
u
,
uint
16
_t
*
uidx
)
{
int32_t
filterAddUnitFromUnit
(
SFilterInfo
*
dst
,
SFilterInfo
*
src
,
SFilterUnit
*
u
,
uint
32
_t
*
uidx
)
{
SFilterFieldId
left
,
right
,
*
pright
=
&
right
;
SFilterFieldId
left
,
right
,
*
pright
=
&
right
;
int32_t
type
=
FILTER_UNIT_DATA_TYPE
(
u
);
int32_t
type
=
FILTER_UNIT_DATA_TYPE
(
u
);
uint16_t
flag
=
FLD_DESC_NO_FREE
;
uint16_t
flag
=
FLD_DESC_NO_FREE
;
...
@@ -1256,7 +1255,7 @@ int32_t filterAddUnitFromUnit(SFilterInfo *dst, SFilterInfo *src, SFilterUnit* u
...
@@ -1256,7 +1255,7 @@ int32_t filterAddUnitFromUnit(SFilterInfo *dst, SFilterInfo *src, SFilterUnit* u
return
filterAddUnit
(
dst
,
FILTER_UNIT_OPTR
(
u
),
&
left
,
pright
,
uidx
);
return
filterAddUnit
(
dst
,
FILTER_UNIT_OPTR
(
u
),
&
left
,
pright
,
uidx
);
}
}
int32_t
filterAddUnitRight
(
SFilterInfo
*
info
,
uint8_t
optr
,
SFilterFieldId
*
right
,
uint
16
_t
uidx
)
{
int32_t
filterAddUnitRight
(
SFilterInfo
*
info
,
uint8_t
optr
,
SFilterFieldId
*
right
,
uint
32
_t
uidx
)
{
SFilterUnit
*
u
=
&
info
->
units
[
uidx
];
SFilterUnit
*
u
=
&
info
->
units
[
uidx
];
u
->
compare
.
optr2
=
optr
;
u
->
compare
.
optr2
=
optr
;
...
@@ -1266,9 +1265,9 @@ int32_t filterAddUnitRight(SFilterInfo *info, uint8_t optr, SFilterFieldId *righ
...
@@ -1266,9 +1265,9 @@ int32_t filterAddUnitRight(SFilterInfo *info, uint8_t optr, SFilterFieldId *righ
}
}
int32_t
filterAddGroupUnitFromCtx
(
SFilterInfo
*
dst
,
SFilterInfo
*
src
,
SFilterRangeCtx
*
ctx
,
uint
16
_t
cidx
,
SFilterGroup
*
g
,
int32_t
optr
,
SArray
*
res
)
{
int32_t
filterAddGroupUnitFromCtx
(
SFilterInfo
*
dst
,
SFilterInfo
*
src
,
SFilterRangeCtx
*
ctx
,
uint
32
_t
cidx
,
SFilterGroup
*
g
,
int32_t
optr
,
SArray
*
res
)
{
SFilterFieldId
left
,
right
,
right2
;
SFilterFieldId
left
,
right
,
right2
;
uint
16
_t
uidx
=
0
;
uint
32
_t
uidx
=
0
;
SFilterField
*
col
=
FILTER_GET_COL_FIELD
(
src
,
cidx
);
SFilterField
*
col
=
FILTER_GET_COL_FIELD
(
src
,
cidx
);
...
@@ -1495,14 +1494,14 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
...
@@ -1495,14 +1494,14 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
if
(
options
==
0
)
{
if
(
options
==
0
)
{
qDebug
(
"%s - FilterInfo:"
,
msg
);
qDebug
(
"%s - FilterInfo:"
,
msg
);
qDebug
(
"COLUMN Field Num:%u"
,
info
->
fields
[
FLD_TYPE_COLUMN
].
num
);
qDebug
(
"COLUMN Field Num:%u"
,
info
->
fields
[
FLD_TYPE_COLUMN
].
num
);
for
(
uint
16
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_COLUMN
].
num
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_COLUMN
].
num
;
++
i
)
{
SFilterField
*
field
=
&
info
->
fields
[
FLD_TYPE_COLUMN
].
fields
[
i
];
SFilterField
*
field
=
&
info
->
fields
[
FLD_TYPE_COLUMN
].
fields
[
i
];
SSchema
*
sch
=
field
->
desc
;
SSchema
*
sch
=
field
->
desc
;
qDebug
(
"COL%d => [%d][%s]"
,
i
,
sch
->
colId
,
sch
->
name
);
qDebug
(
"COL%d => [%d][%s]"
,
i
,
sch
->
colId
,
sch
->
name
);
}
}
qDebug
(
"VALUE Field Num:%u"
,
info
->
fields
[
FLD_TYPE_VALUE
].
num
);
qDebug
(
"VALUE Field Num:%u"
,
info
->
fields
[
FLD_TYPE_VALUE
].
num
);
for
(
uint
16
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_VALUE
].
num
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_VALUE
].
num
;
++
i
)
{
SFilterField
*
field
=
&
info
->
fields
[
FLD_TYPE_VALUE
].
fields
[
i
];
SFilterField
*
field
=
&
info
->
fields
[
FLD_TYPE_VALUE
].
fields
[
i
];
if
(
field
->
desc
)
{
if
(
field
->
desc
)
{
tVariant
*
var
=
field
->
desc
;
tVariant
*
var
=
field
->
desc
;
...
@@ -1517,7 +1516,7 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
...
@@ -1517,7 +1516,7 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
}
}
qDebug
(
"UNIT Num:%u"
,
info
->
unitNum
);
qDebug
(
"UNIT Num:%u"
,
info
->
unitNum
);
for
(
uint
16
_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
SFilterUnit
*
unit
=
&
info
->
units
[
i
];
SFilterUnit
*
unit
=
&
info
->
units
[
i
];
int32_t
type
=
FILTER_UNIT_DATA_TYPE
(
unit
);
int32_t
type
=
FILTER_UNIT_DATA_TYPE
(
unit
);
int32_t
len
=
0
;
int32_t
len
=
0
;
...
@@ -1563,11 +1562,11 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
...
@@ -1563,11 +1562,11 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
}
}
qDebug
(
"GROUP Num:%u"
,
info
->
groupNum
);
qDebug
(
"GROUP Num:%u"
,
info
->
groupNum
);
for
(
uint
16
_t
i
=
0
;
i
<
info
->
groupNum
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
groupNum
;
++
i
)
{
SFilterGroup
*
group
=
&
info
->
groups
[
i
];
SFilterGroup
*
group
=
&
info
->
groups
[
i
];
qDebug
(
"Group%d : unit num[%u]"
,
i
,
group
->
unitNum
);
qDebug
(
"Group%d : unit num[%u]"
,
i
,
group
->
unitNum
);
for
(
uint
16
_t
u
=
0
;
u
<
group
->
unitNum
;
++
u
)
{
for
(
uint
32
_t
u
=
0
;
u
<
group
->
unitNum
;
++
u
)
{
qDebug
(
"unit id:%u"
,
group
->
unitIdxs
[
u
]);
qDebug
(
"unit id:%u"
,
group
->
unitIdxs
[
u
]);
}
}
}
}
...
@@ -1579,7 +1578,7 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
...
@@ -1579,7 +1578,7 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
qDebug
(
"%s - RANGE info:"
,
msg
);
qDebug
(
"%s - RANGE info:"
,
msg
);
qDebug
(
"RANGE Num:%u"
,
info
->
colRangeNum
);
qDebug
(
"RANGE Num:%u"
,
info
->
colRangeNum
);
for
(
uint
16
_t
i
=
0
;
i
<
info
->
colRangeNum
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
colRangeNum
;
++
i
)
{
SFilterRangeCtx
*
ctx
=
info
->
colRange
[
i
];
SFilterRangeCtx
*
ctx
=
info
->
colRange
[
i
];
qDebug
(
"Column ID[%d] RANGE: isnull[%d],notnull[%d],range[%d]"
,
ctx
->
colId
,
ctx
->
isnull
,
ctx
->
notnull
,
ctx
->
isrange
);
qDebug
(
"Column ID[%d] RANGE: isnull[%d],notnull[%d],range[%d]"
,
ctx
->
colId
,
ctx
->
isnull
,
ctx
->
notnull
,
ctx
->
isrange
);
if
(
ctx
->
isrange
)
{
if
(
ctx
->
isrange
)
{
...
@@ -1625,11 +1624,11 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
...
@@ -1625,11 +1624,11 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
}
}
qDebug
(
"GroupNum:%d"
,
info
->
blkGroupNum
);
qDebug
(
"GroupNum:%d"
,
info
->
blkGroupNum
);
uint
16
_t
*
unitIdx
=
info
->
blkUnits
;
uint
32
_t
*
unitIdx
=
info
->
blkUnits
;
for
(
uint
16
_t
i
=
0
;
i
<
info
->
blkGroupNum
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
blkGroupNum
;
++
i
)
{
qDebug
(
"Group[%d] UnitNum: %d:"
,
i
,
*
unitIdx
);
qDebug
(
"Group[%d] UnitNum: %d:"
,
i
,
*
unitIdx
);
uint
16
_t
unitNum
=
*
(
unitIdx
++
);
uint
32
_t
unitNum
=
*
(
unitIdx
++
);
for
(
uint
16
_t
m
=
0
;
m
<
unitNum
;
++
m
)
{
for
(
uint
32
_t
m
=
0
;
m
<
unitNum
;
++
m
)
{
qDebug
(
"uidx[%d]"
,
*
(
unitIdx
++
));
qDebug
(
"uidx[%d]"
,
*
(
unitIdx
++
));
}
}
}
}
...
@@ -1723,14 +1722,14 @@ void filterFreeInfo(SFilterInfo *info) {
...
@@ -1723,14 +1722,14 @@ void filterFreeInfo(SFilterInfo *info) {
tfree
(
info
->
blkUnits
);
tfree
(
info
->
blkUnits
);
for
(
int32_t
i
=
0
;
i
<
FLD_TYPE_MAX
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
FLD_TYPE_MAX
;
++
i
)
{
for
(
uint
16
_t
f
=
0
;
f
<
info
->
fields
[
i
].
num
;
++
f
)
{
for
(
uint
32
_t
f
=
0
;
f
<
info
->
fields
[
i
].
num
;
++
f
)
{
filterFreeField
(
&
info
->
fields
[
i
].
fields
[
f
],
i
);
filterFreeField
(
&
info
->
fields
[
i
].
fields
[
f
],
i
);
}
}
tfree
(
info
->
fields
[
i
].
fields
);
tfree
(
info
->
fields
[
i
].
fields
);
}
}
for
(
int32_t
i
=
0
;
i
<
info
->
groupNum
;
++
i
)
{
for
(
u
int32_t
i
=
0
;
i
<
info
->
groupNum
;
++
i
)
{
filterFreeGroup
(
&
info
->
groups
[
i
]);
filterFreeGroup
(
&
info
->
groups
[
i
]);
}
}
...
@@ -1742,7 +1741,7 @@ void filterFreeInfo(SFilterInfo *info) {
...
@@ -1742,7 +1741,7 @@ void filterFreeInfo(SFilterInfo *info) {
tfree
(
info
->
unitFlags
);
tfree
(
info
->
unitFlags
);
for
(
uint
16
_t
i
=
0
;
i
<
info
->
colRangeNum
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
colRangeNum
;
++
i
)
{
filterFreeRangeCtx
(
info
->
colRange
[
i
]);
filterFreeRangeCtx
(
info
->
colRange
[
i
]);
}
}
...
@@ -1780,7 +1779,7 @@ int32_t filterHandleValueExtInfo(SFilterUnit* unit, char extInfo) {
...
@@ -1780,7 +1779,7 @@ int32_t filterHandleValueExtInfo(SFilterUnit* unit, char extInfo) {
int32_t
filterInitValFieldData
(
SFilterInfo
*
info
)
{
int32_t
filterInitValFieldData
(
SFilterInfo
*
info
)
{
for
(
uint
16
_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
SFilterUnit
*
unit
=
&
info
->
units
[
i
];
SFilterUnit
*
unit
=
&
info
->
units
[
i
];
if
(
unit
->
right
.
type
!=
FLD_TYPE_VALUE
)
{
if
(
unit
->
right
.
type
!=
FLD_TYPE_VALUE
)
{
assert
(
unit
->
compare
.
optr
==
TSDB_RELATION_ISNULL
||
unit
->
compare
.
optr
==
TSDB_RELATION_NOTNULL
||
unit
->
compare
.
optr
==
FILTER_DUMMY_EMPTY_OPTR
);
assert
(
unit
->
compare
.
optr
==
TSDB_RELATION_ISNULL
||
unit
->
compare
.
optr
==
TSDB_RELATION_NOTNULL
||
unit
->
compare
.
optr
==
FILTER_DUMMY_EMPTY_OPTR
);
...
@@ -1980,7 +1979,7 @@ _return:
...
@@ -1980,7 +1979,7 @@ _return:
}
}
int32_t
filterMergeUnits
(
SFilterInfo
*
info
,
SFilterGroupCtx
*
gRes
,
uint
16
_t
colIdx
,
bool
*
empty
)
{
int32_t
filterMergeUnits
(
SFilterInfo
*
info
,
SFilterGroupCtx
*
gRes
,
uint
32
_t
colIdx
,
bool
*
empty
)
{
SArray
*
colArray
=
(
SArray
*
)
gRes
->
colInfo
[
colIdx
].
info
;
SArray
*
colArray
=
(
SArray
*
)
gRes
->
colInfo
[
colIdx
].
info
;
int32_t
size
=
(
int32_t
)
taosArrayGetSize
(
colArray
);
int32_t
size
=
(
int32_t
)
taosArrayGetSize
(
colArray
);
int32_t
type
=
gRes
->
colInfo
[
colIdx
].
dataType
;
int32_t
type
=
gRes
->
colInfo
[
colIdx
].
dataType
;
...
@@ -2017,11 +2016,11 @@ _return:
...
@@ -2017,11 +2016,11 @@ _return:
int32_t
filterMergeGroupUnits
(
SFilterInfo
*
info
,
SFilterGroupCtx
**
gRes
,
int32_t
*
gResNum
)
{
int32_t
filterMergeGroupUnits
(
SFilterInfo
*
info
,
SFilterGroupCtx
**
gRes
,
int32_t
*
gResNum
)
{
bool
empty
=
false
;
bool
empty
=
false
;
uint
16_t
*
colIdx
=
malloc
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
*
sizeof
(
uint16
_t
));
uint
32_t
*
colIdx
=
malloc
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
*
sizeof
(
uint32
_t
));
uint
16
_t
colIdxi
=
0
;
uint
32
_t
colIdxi
=
0
;
uint
16
_t
gResIdx
=
0
;
uint
32
_t
gResIdx
=
0
;
for
(
uint
16
_t
i
=
0
;
i
<
info
->
groupNum
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
groupNum
;
++
i
)
{
SFilterGroup
*
g
=
info
->
groups
+
i
;
SFilterGroup
*
g
=
info
->
groups
+
i
;
gRes
[
gResIdx
]
=
calloc
(
1
,
sizeof
(
SFilterGroupCtx
));
gRes
[
gResIdx
]
=
calloc
(
1
,
sizeof
(
SFilterGroupCtx
));
...
@@ -2029,9 +2028,9 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t
...
@@ -2029,9 +2028,9 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t
colIdxi
=
0
;
colIdxi
=
0
;
empty
=
false
;
empty
=
false
;
for
(
uint
16
_t
j
=
0
;
j
<
g
->
unitNum
;
++
j
)
{
for
(
uint
32
_t
j
=
0
;
j
<
g
->
unitNum
;
++
j
)
{
SFilterUnit
*
u
=
FILTER_GROUP_UNIT
(
info
,
g
,
j
);
SFilterUnit
*
u
=
FILTER_GROUP_UNIT
(
info
,
g
,
j
);
uint
16
_t
cidx
=
FILTER_UNIT_COL_IDX
(
u
);
uint
32
_t
cidx
=
FILTER_UNIT_COL_IDX
(
u
);
if
(
gRes
[
gResIdx
]
->
colInfo
[
cidx
].
info
==
NULL
)
{
if
(
gRes
[
gResIdx
]
->
colInfo
[
cidx
].
info
==
NULL
)
{
gRes
[
gResIdx
]
->
colInfo
[
cidx
].
info
=
(
SArray
*
)
taosArrayInit
(
4
,
POINTER_BYTES
);
gRes
[
gResIdx
]
->
colInfo
[
cidx
].
info
=
(
SArray
*
)
taosArrayInit
(
4
,
POINTER_BYTES
);
...
@@ -2047,10 +2046,10 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t
...
@@ -2047,10 +2046,10 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t
}
}
if
(
colIdxi
>
1
)
{
if
(
colIdxi
>
1
)
{
qsort
(
colIdx
,
colIdxi
,
sizeof
(
uint
16
_t
),
getComparFunc
(
TSDB_DATA_TYPE_USMALLINT
,
0
));
qsort
(
colIdx
,
colIdxi
,
sizeof
(
uint
32
_t
),
getComparFunc
(
TSDB_DATA_TYPE_USMALLINT
,
0
));
}
}
for
(
uint
16
_t
l
=
0
;
l
<
colIdxi
;
++
l
)
{
for
(
uint
32
_t
l
=
0
;
l
<
colIdxi
;
++
l
)
{
int32_t
type
=
gRes
[
gResIdx
]
->
colInfo
[
colIdx
[
l
]].
dataType
;
int32_t
type
=
gRes
[
gResIdx
]
->
colInfo
[
colIdx
[
l
]].
dataType
;
if
(
FILTER_NO_MERGE_DATA_TYPE
(
type
))
{
if
(
FILTER_NO_MERGE_DATA_TYPE
(
type
))
{
...
@@ -2089,7 +2088,7 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t
...
@@ -2089,7 +2088,7 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t
}
}
void
filterCheckColConflict
(
SFilterGroupCtx
*
gRes1
,
SFilterGroupCtx
*
gRes2
,
bool
*
conflict
)
{
void
filterCheckColConflict
(
SFilterGroupCtx
*
gRes1
,
SFilterGroupCtx
*
gRes2
,
bool
*
conflict
)
{
uint
16
_t
idx1
=
0
,
idx2
=
0
,
m
=
0
,
n
=
0
;
uint
32
_t
idx1
=
0
,
idx2
=
0
,
m
=
0
,
n
=
0
;
bool
equal
=
false
;
bool
equal
=
false
;
for
(;
m
<
gRes1
->
colNum
;
++
m
)
{
for
(;
m
<
gRes1
->
colNum
;
++
m
)
{
...
@@ -2129,7 +2128,7 @@ void filterCheckColConflict(SFilterGroupCtx* gRes1, SFilterGroupCtx* gRes2, bool
...
@@ -2129,7 +2128,7 @@ void filterCheckColConflict(SFilterGroupCtx* gRes1, SFilterGroupCtx* gRes2, bool
}
}
int32_t
filterMergeTwoGroupsImpl
(
SFilterInfo
*
info
,
SFilterRangeCtx
**
ctx
,
int32_t
optr
,
uint
16
_t
cidx
,
SFilterGroupCtx
*
gRes1
,
SFilterGroupCtx
*
gRes2
,
bool
*
empty
,
bool
*
all
)
{
int32_t
filterMergeTwoGroupsImpl
(
SFilterInfo
*
info
,
SFilterRangeCtx
**
ctx
,
int32_t
optr
,
uint
32
_t
cidx
,
SFilterGroupCtx
*
gRes1
,
SFilterGroupCtx
*
gRes2
,
bool
*
empty
,
bool
*
all
)
{
SFilterField
*
fi
=
FILTER_GET_COL_FIELD
(
info
,
cidx
);
SFilterField
*
fi
=
FILTER_GET_COL_FIELD
(
info
,
cidx
);
int32_t
type
=
FILTER_GET_COL_FIELD_TYPE
(
fi
);
int32_t
type
=
FILTER_GET_COL_FIELD_TYPE
(
fi
);
...
@@ -2159,10 +2158,10 @@ int32_t filterMergeTwoGroups(SFilterInfo *info, SFilterGroupCtx** gRes1, SFilter
...
@@ -2159,10 +2158,10 @@ int32_t filterMergeTwoGroups(SFilterInfo *info, SFilterGroupCtx** gRes1, SFilter
FILTER_SET_FLAG
(
info
->
status
,
FI_STATUS_REWRITE
);
FILTER_SET_FLAG
(
info
->
status
,
FI_STATUS_REWRITE
);
uint
16
_t
idx1
=
0
,
idx2
=
0
,
m
=
0
,
n
=
0
;
uint
32
_t
idx1
=
0
,
idx2
=
0
,
m
=
0
,
n
=
0
;
bool
numEqual
=
(
*
gRes1
)
->
colNum
==
(
*
gRes2
)
->
colNum
;
bool
numEqual
=
(
*
gRes1
)
->
colNum
==
(
*
gRes2
)
->
colNum
;
bool
equal
=
false
;
bool
equal
=
false
;
uint
16
_t
equal1
=
0
,
equal2
=
0
,
merNum
=
0
;
uint
32
_t
equal1
=
0
,
equal2
=
0
,
merNum
=
0
;
SFilterRangeCtx
*
ctx
=
NULL
;
SFilterRangeCtx
*
ctx
=
NULL
;
SFilterColCtx
colCtx
=
{
0
};
SFilterColCtx
colCtx
=
{
0
};
SArray
*
colCtxs
=
taosArrayInit
((
*
gRes2
)
->
colNum
,
sizeof
(
SFilterColCtx
));
SArray
*
colCtxs
=
taosArrayInit
((
*
gRes2
)
->
colNum
,
sizeof
(
SFilterColCtx
));
...
@@ -2276,7 +2275,7 @@ int32_t filterMergeGroups(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t *gR
...
@@ -2276,7 +2275,7 @@ int32_t filterMergeGroups(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t *gR
qsort
(
gRes
,
*
gResNum
,
POINTER_BYTES
,
filterCompareGroupCtx
);
qsort
(
gRes
,
*
gResNum
,
POINTER_BYTES
,
filterCompareGroupCtx
);
int32_t
pEnd
=
0
,
cStart
=
0
,
cEnd
=
0
;
int32_t
pEnd
=
0
,
cStart
=
0
,
cEnd
=
0
;
uint
16
_t
pColNum
=
0
,
cColNum
=
0
;
uint
32
_t
pColNum
=
0
,
cColNum
=
0
;
int32_t
movedNum
=
0
;
int32_t
movedNum
=
0
;
bool
all
=
false
;
bool
all
=
false
;
...
@@ -2358,7 +2357,7 @@ _return:
...
@@ -2358,7 +2357,7 @@ _return:
int32_t
filterConvertGroupFromArray
(
SFilterInfo
*
info
,
SArray
*
group
)
{
int32_t
filterConvertGroupFromArray
(
SFilterInfo
*
info
,
SArray
*
group
)
{
size_t
groupSize
=
taosArrayGetSize
(
group
);
size_t
groupSize
=
taosArrayGetSize
(
group
);
info
->
groupNum
=
(
uint
16
_t
)
groupSize
;
info
->
groupNum
=
(
uint
32
_t
)
groupSize
;
if
(
info
->
groupNum
>
0
)
{
if
(
info
->
groupNum
>
0
)
{
info
->
groups
=
calloc
(
info
->
groupNum
,
sizeof
(
*
info
->
groups
));
info
->
groups
=
calloc
(
info
->
groupNum
,
sizeof
(
*
info
->
groups
));
...
@@ -2387,7 +2386,7 @@ int32_t filterRewrite(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t gResNum
...
@@ -2387,7 +2386,7 @@ int32_t filterRewrite(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t gResNum
SFilterGroupCtx
*
res
=
NULL
;
SFilterGroupCtx
*
res
=
NULL
;
SFilterColInfo
*
colInfo
=
NULL
;
SFilterColInfo
*
colInfo
=
NULL
;
int32_t
optr
=
0
;
int32_t
optr
=
0
;
uint
16
_t
uidx
=
0
;
uint
32
_t
uidx
=
0
;
memset
(
info
,
0
,
sizeof
(
*
info
));
memset
(
info
,
0
,
sizeof
(
*
info
));
...
@@ -2407,7 +2406,7 @@ int32_t filterRewrite(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t gResNum
...
@@ -2407,7 +2406,7 @@ int32_t filterRewrite(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t gResNum
SFilterGroup
ng
=
{
0
};
SFilterGroup
ng
=
{
0
};
for
(
uint
16
_t
m
=
0
;
m
<
res
->
colNum
;
++
m
)
{
for
(
uint
32
_t
m
=
0
;
m
<
res
->
colNum
;
++
m
)
{
colInfo
=
&
res
->
colInfo
[
res
->
colIdx
[
m
]];
colInfo
=
&
res
->
colInfo
[
res
->
colIdx
[
m
]];
if
(
FILTER_NO_MERGE_DATA_TYPE
(
colInfo
->
dataType
))
{
if
(
FILTER_NO_MERGE_DATA_TYPE
(
colInfo
->
dataType
))
{
assert
(
colInfo
->
type
==
RANGE_TYPE_UNIT
);
assert
(
colInfo
->
type
==
RANGE_TYPE_UNIT
);
...
@@ -2443,13 +2442,13 @@ int32_t filterRewrite(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t gResNum
...
@@ -2443,13 +2442,13 @@ int32_t filterRewrite(SFilterInfo *info, SFilterGroupCtx** gRes, int32_t gResNum
}
}
int32_t
filterGenerateColRange
(
SFilterInfo
*
info
,
SFilterGroupCtx
**
gRes
,
int32_t
gResNum
)
{
int32_t
filterGenerateColRange
(
SFilterInfo
*
info
,
SFilterGroupCtx
**
gRes
,
int32_t
gResNum
)
{
uint
16
_t
*
idxs
=
NULL
;
uint
32
_t
*
idxs
=
NULL
;
uint
16
_t
colNum
=
0
;
uint
32
_t
colNum
=
0
;
SFilterGroupCtx
*
res
=
NULL
;
SFilterGroupCtx
*
res
=
NULL
;
uint
16
_t
*
idxNum
=
calloc
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
,
sizeof
(
*
idxNum
));
uint
32
_t
*
idxNum
=
calloc
(
info
->
fields
[
FLD_TYPE_COLUMN
].
num
,
sizeof
(
*
idxNum
));
for
(
int32_t
i
=
0
;
i
<
gResNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
gResNum
;
++
i
)
{
for
(
uint
16
_t
m
=
0
;
m
<
gRes
[
i
]
->
colNum
;
++
m
)
{
for
(
uint
32
_t
m
=
0
;
m
<
gRes
[
i
]
->
colNum
;
++
m
)
{
SFilterColInfo
*
colInfo
=
&
gRes
[
i
]
->
colInfo
[
gRes
[
i
]
->
colIdx
[
m
]];
SFilterColInfo
*
colInfo
=
&
gRes
[
i
]
->
colInfo
[
gRes
[
i
]
->
colIdx
[
m
]];
if
(
FILTER_NO_MERGE_DATA_TYPE
(
colInfo
->
dataType
))
{
if
(
FILTER_NO_MERGE_DATA_TYPE
(
colInfo
->
dataType
))
{
continue
;
continue
;
...
@@ -2459,7 +2458,7 @@ int32_t filterGenerateColRange(SFilterInfo *info, SFilterGroupCtx** gRes, int32_
...
@@ -2459,7 +2458,7 @@ int32_t filterGenerateColRange(SFilterInfo *info, SFilterGroupCtx** gRes, int32_
}
}
}
}
for
(
uint
16
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_COLUMN
].
num
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_COLUMN
].
num
;
++
i
)
{
if
(
idxNum
[
i
]
<
gResNum
)
{
if
(
idxNum
[
i
]
<
gResNum
)
{
continue
;
continue
;
}
}
...
@@ -2480,9 +2479,9 @@ int32_t filterGenerateColRange(SFilterInfo *info, SFilterGroupCtx** gRes, int32_
...
@@ -2480,9 +2479,9 @@ int32_t filterGenerateColRange(SFilterInfo *info, SFilterGroupCtx** gRes, int32_
for
(
int32_t
i
=
0
;
i
<
gResNum
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
gResNum
;
++
i
)
{
res
=
gRes
[
i
];
res
=
gRes
[
i
];
uint
16
_t
n
=
0
;
uint
32
_t
n
=
0
;
for
(
uint
16
_t
m
=
0
;
m
<
info
->
colRangeNum
;
++
m
)
{
for
(
uint
32
_t
m
=
0
;
m
<
info
->
colRangeNum
;
++
m
)
{
for
(;
n
<
res
->
colNum
;
++
n
)
{
for
(;
n
<
res
->
colNum
;
++
n
)
{
if
(
res
->
colIdx
[
n
]
<
idxs
[
m
])
{
if
(
res
->
colIdx
[
n
]
<
idxs
[
m
])
{
continue
;
continue
;
...
@@ -2530,7 +2529,7 @@ _return:
...
@@ -2530,7 +2529,7 @@ _return:
}
}
int32_t
filterPostProcessRange
(
SFilterInfo
*
info
)
{
int32_t
filterPostProcessRange
(
SFilterInfo
*
info
)
{
for
(
uint
16
_t
i
=
0
;
i
<
info
->
colRangeNum
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
colRangeNum
;
++
i
)
{
SFilterRangeCtx
*
ctx
=
info
->
colRange
[
i
];
SFilterRangeCtx
*
ctx
=
info
->
colRange
[
i
];
SFilterRangeNode
*
r
=
ctx
->
rs
;
SFilterRangeNode
*
r
=
ctx
->
rs
;
while
(
r
)
{
while
(
r
)
{
...
@@ -2548,7 +2547,7 @@ int32_t filterGenerateComInfo(SFilterInfo *info) {
...
@@ -2548,7 +2547,7 @@ int32_t filterGenerateComInfo(SFilterInfo *info) {
info
->
blkUnitRes
=
malloc
(
sizeof
(
*
info
->
blkUnitRes
)
*
info
->
unitNum
);
info
->
blkUnitRes
=
malloc
(
sizeof
(
*
info
->
blkUnitRes
)
*
info
->
unitNum
);
info
->
blkUnits
=
malloc
(
sizeof
(
*
info
->
blkUnits
)
*
(
info
->
unitNum
+
1
)
*
info
->
groupNum
);
info
->
blkUnits
=
malloc
(
sizeof
(
*
info
->
blkUnits
)
*
(
info
->
unitNum
+
1
)
*
info
->
groupNum
);
for
(
uint
16
_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
SFilterUnit
*
unit
=
&
info
->
units
[
i
];
SFilterUnit
*
unit
=
&
info
->
units
[
i
];
info
->
cunits
[
i
].
func
=
filterGetCompFuncIdx
(
FILTER_UNIT_DATA_TYPE
(
unit
),
unit
->
compare
.
optr
);
info
->
cunits
[
i
].
func
=
filterGetCompFuncIdx
(
FILTER_UNIT_DATA_TYPE
(
unit
),
unit
->
compare
.
optr
);
...
@@ -2576,7 +2575,7 @@ int32_t filterGenerateComInfo(SFilterInfo *info) {
...
@@ -2576,7 +2575,7 @@ int32_t filterGenerateComInfo(SFilterInfo *info) {
}
}
int32_t
filterUpdateComUnits
(
SFilterInfo
*
info
)
{
int32_t
filterUpdateComUnits
(
SFilterInfo
*
info
)
{
for
(
uint
16
_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
unitNum
;
++
i
)
{
SFilterUnit
*
unit
=
&
info
->
units
[
i
];
SFilterUnit
*
unit
=
&
info
->
units
[
i
];
info
->
cunits
[
i
].
colData
=
FILTER_UNIT_COL_DATA
(
info
,
unit
,
0
);
info
->
cunits
[
i
].
colData
=
FILTER_UNIT_COL_DATA
(
info
,
unit
,
0
);
...
@@ -2591,7 +2590,7 @@ int32_t filterRmUnitByRange(SFilterInfo *info, SDataStatis *pDataStatis, int32_t
...
@@ -2591,7 +2590,7 @@ int32_t filterRmUnitByRange(SFilterInfo *info, SDataStatis *pDataStatis, int32_t
memset
(
info
->
blkUnitRes
,
0
,
sizeof
(
*
info
->
blkUnitRes
)
*
info
->
unitNum
);
memset
(
info
->
blkUnitRes
,
0
,
sizeof
(
*
info
->
blkUnitRes
)
*
info
->
unitNum
);
for
(
int32_t
k
=
0
;
k
<
info
->
unitNum
;
++
k
)
{
for
(
u
int32_t
k
=
0
;
k
<
info
->
unitNum
;
++
k
)
{
int32_t
index
=
-
1
;
int32_t
index
=
-
1
;
SFilterComUnit
*
cunit
=
&
info
->
cunits
[
k
];
SFilterComUnit
*
cunit
=
&
info
->
cunits
[
k
];
...
@@ -2708,8 +2707,8 @@ int32_t filterRmUnitByRange(SFilterInfo *info, SDataStatis *pDataStatis, int32_t
...
@@ -2708,8 +2707,8 @@ int32_t filterRmUnitByRange(SFilterInfo *info, SDataStatis *pDataStatis, int32_t
info
->
blkGroupNum
=
info
->
groupNum
;
info
->
blkGroupNum
=
info
->
groupNum
;
uint
16
_t
*
unitNum
=
info
->
blkUnits
;
uint
32
_t
*
unitNum
=
info
->
blkUnits
;
uint
16
_t
*
unitIdx
=
unitNum
+
1
;
uint
32
_t
*
unitIdx
=
unitNum
+
1
;
int32_t
all
=
0
,
empty
=
0
;
int32_t
all
=
0
,
empty
=
0
;
for
(
uint32_t
g
=
0
;
g
<
info
->
groupNum
;
++
g
)
{
for
(
uint32_t
g
=
0
;
g
<
info
->
groupNum
;
++
g
)
{
...
@@ -2719,7 +2718,7 @@ int32_t filterRmUnitByRange(SFilterInfo *info, SDataStatis *pDataStatis, int32_t
...
@@ -2719,7 +2718,7 @@ int32_t filterRmUnitByRange(SFilterInfo *info, SDataStatis *pDataStatis, int32_t
empty
=
0
;
empty
=
0
;
for
(
uint32_t
u
=
0
;
u
<
group
->
unitNum
;
++
u
)
{
for
(
uint32_t
u
=
0
;
u
<
group
->
unitNum
;
++
u
)
{
uint
16
_t
uidx
=
group
->
unitIdxs
[
u
];
uint
32
_t
uidx
=
group
->
unitIdxs
[
u
];
if
(
info
->
blkUnitRes
[
uidx
]
==
1
)
{
if
(
info
->
blkUnitRes
[
uidx
]
==
1
)
{
--
(
*
unitNum
);
--
(
*
unitNum
);
all
=
1
;
all
=
1
;
...
@@ -2766,7 +2765,7 @@ _return:
...
@@ -2766,7 +2765,7 @@ _return:
bool
filterExecuteBasedOnStatisImpl
(
void
*
pinfo
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
)
{
bool
filterExecuteBasedOnStatisImpl
(
void
*
pinfo
,
int32_t
numOfRows
,
int8_t
**
p
,
SDataStatis
*
statis
,
int16_t
numOfCols
)
{
SFilterInfo
*
info
=
(
SFilterInfo
*
)
pinfo
;
SFilterInfo
*
info
=
(
SFilterInfo
*
)
pinfo
;
bool
all
=
true
;
bool
all
=
true
;
uint
16
_t
*
unitIdx
=
NULL
;
uint
32
_t
*
unitIdx
=
NULL
;
if
(
*
p
==
NULL
)
{
if
(
*
p
==
NULL
)
{
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
*
p
=
calloc
(
numOfRows
,
sizeof
(
int8_t
));
...
@@ -2778,7 +2777,7 @@ bool filterExecuteBasedOnStatisImpl(void *pinfo, int32_t numOfRows, int8_t** p,
...
@@ -2778,7 +2777,7 @@ bool filterExecuteBasedOnStatisImpl(void *pinfo, int32_t numOfRows, int8_t** p,
unitIdx
=
info
->
blkUnits
;
unitIdx
=
info
->
blkUnits
;
for
(
uint32_t
g
=
0
;
g
<
info
->
blkGroupNum
;
++
g
)
{
for
(
uint32_t
g
=
0
;
g
<
info
->
blkGroupNum
;
++
g
)
{
uint
16
_t
unitNum
=
*
(
unitIdx
++
);
uint
32
_t
unitNum
=
*
(
unitIdx
++
);
for
(
uint32_t
u
=
0
;
u
<
unitNum
;
++
u
)
{
for
(
uint32_t
u
=
0
;
u
<
unitNum
;
++
u
)
{
SFilterComUnit
*
cunit
=
&
info
->
cunits
[
*
(
unitIdx
+
u
)];
SFilterComUnit
*
cunit
=
&
info
->
cunits
[
*
(
unitIdx
+
u
)];
void
*
colData
=
(
char
*
)
cunit
->
colData
+
cunit
->
dataSize
*
i
;
void
*
colData
=
(
char
*
)
cunit
->
colData
+
cunit
->
dataSize
*
i
;
...
@@ -2878,7 +2877,7 @@ static FORCE_INLINE bool filterExecuteImplIsNull(void *pinfo, int32_t numOfRows,
...
@@ -2878,7 +2877,7 @@ static FORCE_INLINE bool filterExecuteImplIsNull(void *pinfo, int32_t numOfRows,
}
}
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
uint
16
_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
uint
32
_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
void
*
colData
=
(
char
*
)
info
->
cunits
[
uidx
].
colData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
void
*
colData
=
(
char
*
)
info
->
cunits
[
uidx
].
colData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
(
*
p
)[
i
]
=
((
colData
==
NULL
)
||
isNull
(
colData
,
info
->
cunits
[
uidx
].
dataType
));
(
*
p
)[
i
]
=
((
colData
==
NULL
)
||
isNull
(
colData
,
info
->
cunits
[
uidx
].
dataType
));
if
((
*
p
)[
i
]
==
0
)
{
if
((
*
p
)[
i
]
==
0
)
{
...
@@ -2901,7 +2900,7 @@ static FORCE_INLINE bool filterExecuteImplNotNull(void *pinfo, int32_t numOfRows
...
@@ -2901,7 +2900,7 @@ static FORCE_INLINE bool filterExecuteImplNotNull(void *pinfo, int32_t numOfRows
}
}
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
uint
16
_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
uint
32
_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
void
*
colData
=
(
char
*
)
info
->
cunits
[
uidx
].
colData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
void
*
colData
=
(
char
*
)
info
->
cunits
[
uidx
].
colData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
(
*
p
)[
i
]
=
((
colData
!=
NULL
)
&&
!
isNull
(
colData
,
info
->
cunits
[
uidx
].
dataType
));
(
*
p
)[
i
]
=
((
colData
!=
NULL
)
&&
!
isNull
(
colData
,
info
->
cunits
[
uidx
].
dataType
));
if
((
*
p
)[
i
]
==
0
)
{
if
((
*
p
)[
i
]
==
0
)
{
...
@@ -2962,7 +2961,7 @@ bool filterExecuteImplMisc(void *pinfo, int32_t numOfRows, int8_t** p, SDataStat
...
@@ -2962,7 +2961,7 @@ bool filterExecuteImplMisc(void *pinfo, int32_t numOfRows, int8_t** p, SDataStat
}
}
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
numOfRows
;
++
i
)
{
uint
16
_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
uint
32
_t
uidx
=
info
->
groups
[
0
].
unitIdxs
[
0
];
void
*
colData
=
(
char
*
)
info
->
cunits
[
uidx
].
colData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
void
*
colData
=
(
char
*
)
info
->
cunits
[
uidx
].
colData
+
info
->
cunits
[
uidx
].
dataSize
*
i
;
if
(
colData
==
NULL
||
isNull
(
colData
,
info
->
cunits
[
uidx
].
dataType
))
{
if
(
colData
==
NULL
||
isNull
(
colData
,
info
->
cunits
[
uidx
].
dataType
))
{
(
*
p
)[
i
]
=
0
;
(
*
p
)[
i
]
=
0
;
...
@@ -3008,7 +3007,7 @@ bool filterExecuteImpl(void *pinfo, int32_t numOfRows, int8_t** p, SDataStatis *
...
@@ -3008,7 +3007,7 @@ bool filterExecuteImpl(void *pinfo, int32_t numOfRows, int8_t** p, SDataStatis *
for
(
uint32_t
g
=
0
;
g
<
info
->
groupNum
;
++
g
)
{
for
(
uint32_t
g
=
0
;
g
<
info
->
groupNum
;
++
g
)
{
SFilterGroup
*
group
=
&
info
->
groups
[
g
];
SFilterGroup
*
group
=
&
info
->
groups
[
g
];
for
(
uint32_t
u
=
0
;
u
<
group
->
unitNum
;
++
u
)
{
for
(
uint32_t
u
=
0
;
u
<
group
->
unitNum
;
++
u
)
{
uint
16
_t
uidx
=
group
->
unitIdxs
[
u
];
uint
32
_t
uidx
=
group
->
unitIdxs
[
u
];
SFilterComUnit
*
cunit
=
&
info
->
cunits
[
uidx
];
SFilterComUnit
*
cunit
=
&
info
->
cunits
[
uidx
];
void
*
colData
=
(
char
*
)
cunit
->
colData
+
cunit
->
dataSize
*
i
;
void
*
colData
=
(
char
*
)
cunit
->
colData
+
cunit
->
dataSize
*
i
;
...
@@ -3152,7 +3151,7 @@ int32_t filterSetColFieldData(SFilterInfo *info, void *param, filer_get_col_from
...
@@ -3152,7 +3151,7 @@ int32_t filterSetColFieldData(SFilterInfo *info, void *param, filer_get_col_from
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
for
(
uint
16
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_COLUMN
].
num
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_COLUMN
].
num
;
++
i
)
{
SFilterField
*
fi
=
&
info
->
fields
[
FLD_TYPE_COLUMN
].
fields
[
i
];
SFilterField
*
fi
=
&
info
->
fields
[
FLD_TYPE_COLUMN
].
fields
[
i
];
SSchema
*
sch
=
fi
->
desc
;
SSchema
*
sch
=
fi
->
desc
;
...
@@ -3240,7 +3239,7 @@ bool filterRangeExecute(SFilterInfo *info, SDataStatis *pDataStatis, int32_t num
...
@@ -3240,7 +3239,7 @@ bool filterRangeExecute(SFilterInfo *info, SDataStatis *pDataStatis, int32_t num
bool
ret
=
true
;
bool
ret
=
true
;
void
*
minVal
,
*
maxVal
;
void
*
minVal
,
*
maxVal
;
for
(
int32_t
k
=
0
;
k
<
info
->
colRangeNum
;
++
k
)
{
for
(
u
int32_t
k
=
0
;
k
<
info
->
colRangeNum
;
++
k
)
{
int32_t
index
=
-
1
;
int32_t
index
=
-
1
;
SFilterRangeCtx
*
ctx
=
info
->
colRange
[
k
];
SFilterRangeCtx
*
ctx
=
info
->
colRange
[
k
];
for
(
int32_t
i
=
0
;
i
<
numOfCols
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
numOfCols
;
++
i
)
{
...
@@ -3323,7 +3322,7 @@ int32_t filterGetTimeRange(SFilterInfo *info, STimeWindow *win) {
...
@@ -3323,7 +3322,7 @@ int32_t filterGetTimeRange(SFilterInfo *info, STimeWindow *win) {
int32_t
code
=
0
;
int32_t
code
=
0
;
bool
empty
=
false
,
all
=
false
;
bool
empty
=
false
,
all
=
false
;
for
(
int32_t
i
=
0
;
i
<
info
->
groupNum
;
++
i
)
{
for
(
u
int32_t
i
=
0
;
i
<
info
->
groupNum
;
++
i
)
{
SFilterGroup
*
group
=
&
info
->
groups
[
i
];
SFilterGroup
*
group
=
&
info
->
groups
[
i
];
if
(
group
->
unitNum
>
1
)
{
if
(
group
->
unitNum
>
1
)
{
cur
=
tmpc
;
cur
=
tmpc
;
...
@@ -3333,8 +3332,8 @@ int32_t filterGetTimeRange(SFilterInfo *info, STimeWindow *win) {
...
@@ -3333,8 +3332,8 @@ int32_t filterGetTimeRange(SFilterInfo *info, STimeWindow *win) {
optr
=
TSDB_RELATION_OR
;
optr
=
TSDB_RELATION_OR
;
}
}
for
(
int32_t
u
=
0
;
u
<
group
->
unitNum
;
++
u
)
{
for
(
u
int32_t
u
=
0
;
u
<
group
->
unitNum
;
++
u
)
{
uint
16
_t
uidx
=
group
->
unitIdxs
[
u
];
uint
32
_t
uidx
=
group
->
unitIdxs
[
u
];
SFilterUnit
*
unit
=
&
info
->
units
[
uidx
];
SFilterUnit
*
unit
=
&
info
->
units
[
uidx
];
uint8_t
raOptr
=
FILTER_UNIT_OPTR
(
unit
);
uint8_t
raOptr
=
FILTER_UNIT_OPTR
(
unit
);
...
@@ -3407,7 +3406,7 @@ _return:
...
@@ -3407,7 +3406,7 @@ _return:
int32_t
filterConverNcharColumns
(
SFilterInfo
*
info
,
int32_t
rows
,
bool
*
gotNchar
)
{
int32_t
filterConverNcharColumns
(
SFilterInfo
*
info
,
int32_t
rows
,
bool
*
gotNchar
)
{
for
(
uint
16
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_COLUMN
].
num
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_COLUMN
].
num
;
++
i
)
{
SFilterField
*
fi
=
&
info
->
fields
[
FLD_TYPE_COLUMN
].
fields
[
i
];
SFilterField
*
fi
=
&
info
->
fields
[
FLD_TYPE_COLUMN
].
fields
[
i
];
int32_t
type
=
FILTER_GET_COL_FIELD_TYPE
(
fi
);
int32_t
type
=
FILTER_GET_COL_FIELD_TYPE
(
fi
);
if
(
type
==
TSDB_DATA_TYPE_NCHAR
)
{
if
(
type
==
TSDB_DATA_TYPE_NCHAR
)
{
...
@@ -3438,7 +3437,7 @@ int32_t filterConverNcharColumns(SFilterInfo* info, int32_t rows, bool *gotNchar
...
@@ -3438,7 +3437,7 @@ int32_t filterConverNcharColumns(SFilterInfo* info, int32_t rows, bool *gotNchar
}
}
int32_t
filterFreeNcharColumns
(
SFilterInfo
*
info
)
{
int32_t
filterFreeNcharColumns
(
SFilterInfo
*
info
)
{
for
(
uint
16
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_COLUMN
].
num
;
++
i
)
{
for
(
uint
32
_t
i
=
0
;
i
<
info
->
fields
[
FLD_TYPE_COLUMN
].
num
;
++
i
)
{
SFilterField
*
fi
=
&
info
->
fields
[
FLD_TYPE_COLUMN
].
fields
[
i
];
SFilterField
*
fi
=
&
info
->
fields
[
FLD_TYPE_COLUMN
].
fields
[
i
];
int32_t
type
=
FILTER_GET_COL_FIELD_TYPE
(
fi
);
int32_t
type
=
FILTER_GET_COL_FIELD_TYPE
(
fi
);
if
(
type
==
TSDB_DATA_TYPE_NCHAR
)
{
if
(
type
==
TSDB_DATA_TYPE_NCHAR
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录