Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e5da9167
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看板
提交
e5da9167
编写于
8月 19, 2022
作者:
X
Xiaoyu Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: escape character problem in auto create table insert
上级
09cb5753
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
12 addition
and
50 deletion
+12
-50
include/libs/nodes/querynodes.h
include/libs/nodes/querynodes.h
+3
-0
include/util/tdef.h
include/util/tdef.h
+1
-1
source/libs/nodes/src/nodesToSQLFuncs.c
source/libs/nodes/src/nodesToSQLFuncs.c
+2
-2
source/libs/scalar/inc/filterInt.h
source/libs/scalar/inc/filterInt.h
+0
-1
source/libs/scalar/src/filter.c
source/libs/scalar/src/filter.c
+3
-43
source/libs/scalar/test/scalar/scalarTests.cpp
source/libs/scalar/test/scalar/scalarTests.cpp
+3
-3
未找到文件。
include/libs/nodes/querynodes.h
浏览文件 @
e5da9167
...
...
@@ -428,6 +428,9 @@ void nodesValueNodeToVariant(const SValueNode* pNode, SVariant* pVal);
char
*
nodesGetFillModeString
(
EFillMode
mode
);
int32_t
nodesMergeConds
(
SNode
**
pDst
,
SNodeList
**
pSrc
);
const
char
*
operatorTypeStr
(
EOperatorType
type
);
const
char
*
logicConditionTypeStr
(
ELogicConditionType
type
);
#ifdef __cplusplus
}
#endif
...
...
include/util/tdef.h
浏览文件 @
e5da9167
...
...
@@ -166,7 +166,7 @@ typedef enum EOperatorType {
OP_TYPE_JSON_CONTAINS
,
// internal operator
OP_TYPE_ASSIGN
=
2
5
0
OP_TYPE_ASSIGN
=
2
0
0
}
EOperatorType
;
#define OP_TYPE_CALC_MAX OP_TYPE_BIT_OR
...
...
source/libs/nodes/src/nodesToSQLFuncs.c
浏览文件 @
e5da9167
...
...
@@ -21,7 +21,7 @@
#include "taoserror.h"
#include "thash.h"
static
const
char
*
operatorTypeStr
(
EOperatorType
type
)
{
const
char
*
operatorTypeStr
(
EOperatorType
type
)
{
switch
(
type
)
{
case
OP_TYPE_ADD
:
return
"+"
;
...
...
@@ -91,7 +91,7 @@ static const char *operatorTypeStr(EOperatorType type) {
return
"UNKNOWN"
;
}
static
const
char
*
logicConditionTypeStr
(
ELogicConditionType
type
)
{
const
char
*
logicConditionTypeStr
(
ELogicConditionType
type
)
{
switch
(
type
)
{
case
LOGIC_COND_TYPE_AND
:
return
"AND"
;
...
...
source/libs/scalar/inc/filterInt.h
浏览文件 @
e5da9167
...
...
@@ -350,7 +350,6 @@ struct SFilterInfo {
extern
bool
filterDoCompare
(
__compar_fn_t
func
,
uint8_t
optr
,
void
*
left
,
void
*
right
);
extern
__compar_fn_t
filterGetCompFunc
(
int32_t
type
,
int32_t
optr
);
extern
OptrStr
gOptrStr
[];
#ifdef __cplusplus
}
...
...
source/libs/scalar/src/filter.c
浏览文件 @
e5da9167
...
...
@@ -24,46 +24,6 @@
#include "ttime.h"
#include "functionMgt.h"
OptrStr
gOptrStr
[]
=
{
{
0
,
"invalid"
},
{
OP_TYPE_ADD
,
"+"
},
{
OP_TYPE_SUB
,
"-"
},
{
OP_TYPE_MULTI
,
"*"
},
{
OP_TYPE_DIV
,
"/"
},
{
OP_TYPE_REM
,
"%"
},
{
OP_TYPE_MINUS
,
"minus"
},
{
OP_TYPE_ASSIGN
,
"assign"
},
// bit operator
{
OP_TYPE_BIT_AND
,
"&"
},
{
OP_TYPE_BIT_OR
,
"|"
},
// comparison operator
{
OP_TYPE_GREATER_THAN
,
">"
},
{
OP_TYPE_GREATER_EQUAL
,
">="
},
{
OP_TYPE_LOWER_THAN
,
"<"
},
{
OP_TYPE_LOWER_EQUAL
,
"<="
},
{
OP_TYPE_EQUAL
,
"=="
},
{
OP_TYPE_NOT_EQUAL
,
"!="
},
{
OP_TYPE_IN
,
"in"
},
{
OP_TYPE_NOT_IN
,
"not in"
},
{
OP_TYPE_LIKE
,
"like"
},
{
OP_TYPE_NOT_LIKE
,
"not like"
},
{
OP_TYPE_MATCH
,
"match"
},
{
OP_TYPE_NMATCH
,
"nmatch"
},
{
OP_TYPE_IS_NULL
,
"is null"
},
{
OP_TYPE_IS_NOT_NULL
,
"not null"
},
{
OP_TYPE_IS_TRUE
,
"is true"
},
{
OP_TYPE_IS_FALSE
,
"is false"
},
{
OP_TYPE_IS_UNKNOWN
,
"is unknown"
},
{
OP_TYPE_IS_NOT_TRUE
,
"not true"
},
{
OP_TYPE_IS_NOT_FALSE
,
"not false"
},
{
OP_TYPE_IS_NOT_UNKNOWN
,
"not unknown"
},
// json operator
{
OP_TYPE_JSON_GET_VALUE
,
"->"
},
{
OP_TYPE_JSON_CONTAINS
,
"json contains"
}
};
bool
filterRangeCompGi
(
const
void
*
minv
,
const
void
*
maxv
,
const
void
*
minr
,
const
void
*
maxr
,
__compar_fn_t
cfunc
)
{
int32_t
result
=
cfunc
(
maxv
,
minr
);
return
result
>=
0
;
...
...
@@ -986,7 +946,7 @@ int32_t filterAddUnit(SFilterInfo *info, uint8_t optr, SFilterFieldId *left, SFi
}
else
{
int32_t
paramNum
=
scalarGetOperatorParamNum
(
optr
);
if
(
1
!=
paramNum
)
{
fltError
(
"invalid right field in unit, operator:%s, rightType:%d"
,
gOptrStr
[
optr
].
str
,
u
->
right
.
type
);
fltError
(
"invalid right field in unit, operator:%s, rightType:%d"
,
operatorTypeStr
(
optr
)
,
u
->
right
.
type
);
return
TSDB_CODE_QRY_APP_ERROR
;
}
}
...
...
@@ -1517,7 +1477,7 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
SFilterField
*
left
=
FILTER_UNIT_LEFT_FIELD
(
info
,
unit
);
SColumnNode
*
refNode
=
(
SColumnNode
*
)
left
->
desc
;
if
(
unit
->
compare
.
optr
>=
0
&&
unit
->
compare
.
optr
<=
OP_TYPE_JSON_CONTAINS
){
len
=
sprintf
(
str
,
"UNIT[%d] => [%d][%d] %s ["
,
i
,
refNode
->
dataBlockId
,
refNode
->
slotId
,
gOptrStr
[
unit
->
compare
.
optr
].
str
);
len
=
sprintf
(
str
,
"UNIT[%d] => [%d][%d] %s ["
,
i
,
refNode
->
dataBlockId
,
refNode
->
slotId
,
operatorTypeStr
(
unit
->
compare
.
optr
)
);
}
if
(
unit
->
right
.
type
==
FLD_TYPE_VALUE
&&
FILTER_UNIT_OPTR
(
unit
)
!=
OP_TYPE_IN
)
{
...
...
@@ -1536,7 +1496,7 @@ void filterDumpInfoToString(SFilterInfo *info, const char *msg, int32_t options)
if
(
unit
->
compare
.
optr2
)
{
strcat
(
str
,
" && "
);
if
(
unit
->
compare
.
optr2
>=
0
&&
unit
->
compare
.
optr2
<=
OP_TYPE_JSON_CONTAINS
){
sprintf
(
str
+
strlen
(
str
),
"[%d][%d] %s ["
,
refNode
->
dataBlockId
,
refNode
->
slotId
,
gOptrStr
[
unit
->
compare
.
optr2
].
str
);
sprintf
(
str
+
strlen
(
str
),
"[%d][%d] %s ["
,
refNode
->
dataBlockId
,
refNode
->
slotId
,
operatorTypeStr
(
unit
->
compare
.
optr2
)
);
}
if
(
unit
->
right2
.
type
==
FLD_TYPE_VALUE
&&
FILTER_UNIT_OPTR
(
unit
)
!=
OP_TYPE_IN
)
{
...
...
source/libs/scalar/test/scalar/scalarTests.cpp
浏览文件 @
e5da9167
...
...
@@ -1089,16 +1089,16 @@ void makeCalculate(void *json, void *key, int32_t rightType, void *rightData, do
}
else
if
(
opType
==
OP_TYPE_ADD
||
opType
==
OP_TYPE_SUB
||
opType
==
OP_TYPE_MULTI
||
opType
==
OP_TYPE_DIV
||
opType
==
OP_TYPE_REM
||
opType
==
OP_TYPE_MINUS
){
printf
(
"op:%s,1result:%f,except:%f
\n
"
,
gOptrStr
[
opType
].
str
,
*
((
double
*
)
colDataGetData
(
column
,
0
)),
exceptValue
);
printf
(
"op:%s,1result:%f,except:%f
\n
"
,
operatorTypeStr
(
opType
)
,
*
((
double
*
)
colDataGetData
(
column
,
0
)),
exceptValue
);
ASSERT_TRUE
(
fabs
(
*
((
double
*
)
colDataGetData
(
column
,
0
))
-
exceptValue
)
<
0.0001
);
}
else
if
(
opType
==
OP_TYPE_BIT_AND
||
opType
==
OP_TYPE_BIT_OR
){
printf
(
"op:%s,2result:%"
PRId64
",except:%f
\n
"
,
gOptrStr
[
opType
].
str
,
*
((
int64_t
*
)
colDataGetData
(
column
,
0
)),
exceptValue
);
printf
(
"op:%s,2result:%"
PRId64
",except:%f
\n
"
,
operatorTypeStr
(
opType
)
,
*
((
int64_t
*
)
colDataGetData
(
column
,
0
)),
exceptValue
);
ASSERT_EQ
(
*
((
int64_t
*
)
colDataGetData
(
column
,
0
)),
exceptValue
);
}
else
if
(
opType
==
OP_TYPE_GREATER_THAN
||
opType
==
OP_TYPE_GREATER_EQUAL
||
opType
==
OP_TYPE_LOWER_THAN
||
opType
==
OP_TYPE_LOWER_EQUAL
||
opType
==
OP_TYPE_EQUAL
||
opType
==
OP_TYPE_NOT_EQUAL
||
opType
==
OP_TYPE_IS_NULL
||
opType
==
OP_TYPE_IS_NOT_NULL
||
opType
==
OP_TYPE_IS_TRUE
||
opType
==
OP_TYPE_LIKE
||
opType
==
OP_TYPE_NOT_LIKE
||
opType
==
OP_TYPE_MATCH
||
opType
==
OP_TYPE_NMATCH
){
printf
(
"op:%s,3result:%d,except:%f
\n
"
,
gOptrStr
[
opType
].
str
,
*
((
bool
*
)
colDataGetData
(
column
,
0
)),
exceptValue
);
printf
(
"op:%s,3result:%d,except:%f
\n
"
,
operatorTypeStr
(
opType
)
,
*
((
bool
*
)
colDataGetData
(
column
,
0
)),
exceptValue
);
ASSERT_EQ
(
*
((
bool
*
)
colDataGetData
(
column
,
0
)),
exceptValue
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录