Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
b96082fe
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看板
提交
b96082fe
编写于
4月 19, 2022
作者:
wmmhello
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: fix compare logic
上级
49c30572
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
30 addition
and
19 deletion
+30
-19
source/libs/scalar/src/filter.c
source/libs/scalar/src/filter.c
+9
-0
source/libs/scalar/src/scalar.c
source/libs/scalar/src/scalar.c
+1
-0
source/libs/scalar/src/sclvector.c
source/libs/scalar/src/sclvector.c
+20
-19
未找到文件。
source/libs/scalar/src/filter.c
浏览文件 @
b96082fe
...
...
@@ -1050,6 +1050,8 @@ int32_t fltAddGroupUnitFromNode(SFilterInfo *info, SNode* tree, SArray *group) {
cell
=
cell
->
pNext
;
}
colDataDestroy
(
out
.
columnData
);
taosMemoryFree
(
out
.
columnData
);
}
else
{
filterAddFieldFromNode
(
info
,
node
->
pRight
,
&
right
);
...
...
@@ -1813,6 +1815,8 @@ int32_t fltInitValFieldData(SFilterInfo *info) {
}
memcpy
(
fi
->
data
,
out
.
columnData
->
pData
,
out
.
columnData
->
info
.
bytes
);
colDataDestroy
(
out
.
columnData
);
taosMemoryFree
(
out
.
columnData
);
}
// match/nmatch for nchar type need convert from ucs4 to mbs
...
...
@@ -3537,6 +3541,11 @@ EDealRes fltReviseRewriter(SNode** pNode, void* pContext) {
return
DEAL_RES_CONTINUE
;
}
if
(
OP_TYPE_JSON_CONTAINS
==
node
->
opType
)
{
stat
->
scalarMode
=
true
;
return
DEAL_RES_CONTINUE
;
}
if
(
QUERY_NODE_COLUMN
!=
nodeType
(
node
->
pLeft
))
{
SNode
*
t
=
node
->
pLeft
;
node
->
pLeft
=
node
->
pRight
;
...
...
source/libs/scalar/src/scalar.c
浏览文件 @
b96082fe
...
...
@@ -132,6 +132,7 @@ void sclFreeRes(SHashObj *res) {
void
sclFreeParam
(
SScalarParam
*
param
)
{
if
(
param
->
columnData
!=
NULL
)
{
colDataDestroy
(
param
->
columnData
);
taosMemoryFree
(
param
->
columnData
);
}
if
(
param
->
pHashFilter
!=
NULL
)
{
...
...
source/libs/scalar/src/sclvector.c
浏览文件 @
b96082fe
...
...
@@ -188,17 +188,17 @@ static FORCE_INLINE void varToBool(char *buf, SScalarParam* pOut, int32_t rowInd
colDataAppendInt8
(
pOut
->
columnData
,
rowIndex
,
(
int8_t
*
)
&
v
);
}
//
static FORCE_INLINE void varToNchar(char* buf, SScalarParam* pOut, int32_t rowIndex) {
//
int32_t len = 0;
//
int32_t inputLen = varDataLen(buf);
//
//
char* t = taosMemoryCalloc(1,(inputLen + 1) * TSDB_NCHAR_SIZE + VARSTR_HEADER_SIZE);
//
/*int32_t resLen = */taosMbsToUcs4(varDataVal(buf), inputLen, (TdUcs4*) varDataVal(t), pOut->columnData->info.bytes, &len);
//
varDataSetLen(t, len);
//
//
colDataAppend(pOut->columnData, rowIndex, t, false);
//
taosMemoryFree(t);
//
}
static
FORCE_INLINE
void
varToNchar
(
char
*
buf
,
SScalarParam
*
pOut
,
int32_t
rowIndex
)
{
int32_t
len
=
0
;
int32_t
inputLen
=
varDataLen
(
buf
);
char
*
t
=
taosMemoryCalloc
(
1
,(
inputLen
+
1
)
*
TSDB_NCHAR_SIZE
+
VARSTR_HEADER_SIZE
);
/*int32_t resLen = */
taosMbsToUcs4
(
varDataVal
(
buf
),
inputLen
,
(
TdUcs4
*
)
varDataVal
(
t
),
pOut
->
columnData
->
info
.
bytes
,
&
len
);
varDataSetLen
(
t
,
len
);
colDataAppend
(
pOut
->
columnData
,
rowIndex
,
t
,
false
);
taosMemoryFree
(
t
);
}
void
convertNumberToNumber
(
const
void
*
inData
,
void
*
outData
,
int8_t
inType
,
int8_t
outType
){
switch
(
outType
)
{
...
...
@@ -275,7 +275,7 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
int32_t
bufSize
=
pIn
->
columnData
->
info
.
bytes
;
char
*
tmp
=
taosMemoryMalloc
(
bufSize
+
VARSTR_HEADER_SIZE
);
//
bool vton = false;
bool
vton
=
false
;
_bufConverteFunc
func
=
NULL
;
if
(
TSDB_DATA_TYPE_BOOL
==
outType
)
{
...
...
@@ -286,9 +286,10 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
func
=
varToUnsigned
;
}
else
if
(
IS_FLOAT_TYPE
(
outType
))
{
func
=
varToFloat
;
// } else if (outType == TSDB_DATA_TYPE_NCHAR) { // can not be nchar or binary
// func = varToNchar;
// vton = true;
}
else
if
(
outType
==
TSDB_DATA_TYPE_NCHAR
)
{
// binary -> nchar
ASSERT
(
inType
==
TSDB_DATA_TYPE_VARCHAR
);
func
=
varToNchar
;
vton
=
true
;
}
else
{
sclError
(
"invalid convert outType:%d"
,
outType
);
return
TSDB_CODE_QRY_APP_ERROR
;
...
...
@@ -316,9 +317,9 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
continue
;
}
}
//
if (vton) {
//
memcpy(tmp, data, varDataTLen(data));
//
} else {
if
(
vton
)
{
memcpy
(
tmp
,
data
,
varDataTLen
(
data
));
}
else
{
if
(
TSDB_DATA_TYPE_VARCHAR
==
convertType
)
{
memcpy
(
tmp
,
varDataVal
(
data
),
varDataLen
(
data
));
tmp
[
varDataLen
(
data
)]
=
0
;
...
...
@@ -334,7 +335,7 @@ int32_t vectorConvertFromVarData(const SScalarParam* pIn, SScalarParam* pOut, in
tmp
[
len
]
=
0
;
}
//
}
}
(
*
func
)(
tmp
,
pOut
,
i
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录