Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
d0e003b9
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
d0e003b9
编写于
7月 28, 2019
作者:
S
slguan
提交者:
GitHub
7月 28, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #195 from localvar/master
minor improvements to 'setErrMsg'
上级
fae45aaf
b2e06d1c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
327 addition
and
328 deletion
+327
-328
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+1
-1
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+326
-327
未找到文件。
src/client/src/tscParseInsert.c
浏览文件 @
d0e003b9
...
...
@@ -345,7 +345,7 @@ int32_t tsParseOneColumnData(SSchema* pSchema, char* value, int valuelen, char*
// todo merge the error msg function with tSQLParser
static
void
setErrMsg
(
char
*
msg
,
char
*
sql
)
{
c
har
msgFormat
[]
=
"near
\"
%s
\"
syntax error"
;
c
onst
char
*
msgFormat
=
"near
\"
%s
\"
syntax error"
;
const
int32_t
BACKWARD_CHAR_STEP
=
15
;
// only extract part of sql string,avoid too long sql string cause stack over flow
...
...
src/client/src/tscSQLParser.c
浏览文件 @
d0e003b9
...
...
@@ -75,7 +75,7 @@ static int32_t insertResultField(SSqlCmd* pCmd, int32_t fieldIDInResult, SColumn
int8_t
type
,
char
*
fieldName
);
static
int32_t
changeFunctionID
(
int32_t
optr
,
int16_t
*
pExpr
);
static
void
setErrMsg
(
SSqlCmd
*
pCmd
,
c
har
*
pzErrMsg
,
int32_t
maxLen
);
static
void
setErrMsg
(
SSqlCmd
*
pCmd
,
c
onst
char
*
pzErrMsg
);
static
int32_t
buildSelectionClause
(
SSqlCmd
*
pCmd
,
tSQLExprList
*
pSelection
,
bool
isMetric
);
...
...
@@ -139,7 +139,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSqlCmd
*
pCmd
=
&
(
pSql
->
cmd
);
if
(
!
pInfo
->
validSql
)
{
setErrMsg
(
pCmd
,
pInfo
->
pzErrMsg
,
tListLen
(
pInfo
->
pzErrMsg
)
);
setErrMsg
(
pCmd
,
pInfo
->
pzErrMsg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -152,13 +152,13 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
case
DROP_USER
:
case
DROP_ACCOUNT
:
case
DROP_DATABASE
:
{
c
har
msg
[]
=
"param name too long"
;
c
har
msg1
[]
=
"invalid ip address"
;
c
har
msg2
[]
=
"invalid name"
;
c
onst
char
*
msg
=
"param name too long"
;
c
onst
char
*
msg1
=
"invalid ip address"
;
c
onst
char
*
msg2
=
"invalid name"
;
SSQLToken
*
pzName
=
&
pInfo
->
pDCLInfo
->
a
[
0
];
if
((
pInfo
->
sqlType
!=
DROP_DNODE
)
&&
(
tscValidateName
(
pzName
)
!=
TSDB_CODE_SUCCESS
))
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -170,7 +170,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
int32_t
code
=
setObjFullName
(
pCmd
->
name
,
getAccountId
(
pSql
),
pzName
,
NULL
,
NULL
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
}
return
code
;
...
...
@@ -182,12 +182,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
int32_t
ret
=
setMeterID
(
pSql
,
pzName
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
}
return
ret
;
}
else
{
if
(
pzName
->
n
>
TSDB_USER_LEN
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -201,19 +201,19 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
case
USE_DATABASE
:
{
c
har
msg
[]
=
"db name too long"
;
c
onst
char
*
msg
=
"db name too long"
;
pCmd
->
command
=
TSDB_SQL_USE_DB
;
SSQLToken
*
pToken
=
&
pInfo
->
pDCLInfo
->
a
[
0
];
if
(
tscValidateName
(
pToken
)
!=
TSDB_CODE_SUCCESS
)
{
c
har
msg1
[]
=
"invalid db name"
;
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
c
onst
char
*
msg1
=
"invalid db name"
;
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pToken
->
n
>
TSDB_DB_NAME_LEN
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -246,8 +246,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
case
ALTER_DATABASE
:
case
CREATE_DATABASE
:
{
c
har
msg2
[]
=
"name too long"
;
c
har
msg3
[]
=
"invalid db name"
;
c
onst
char
*
msg2
=
"name too long"
;
c
onst
char
*
msg3
=
"invalid db name"
;
if
(
pInfo
->
sqlType
==
ALTER_DATABASE
)
{
pCmd
->
command
=
TSDB_SQL_ALTER_DB
;
...
...
@@ -258,13 +258,13 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SCreateDBInfo
*
pCreateDB
=
&
(
pInfo
->
pDCLInfo
->
dbOpt
);
if
(
tscValidateName
(
&
pCreateDB
->
dbname
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
int32_t
ret
=
setObjFullName
(
pCmd
->
name
,
getAccountId
(
pSql
),
&
(
pCreateDB
->
dbname
),
NULL
,
NULL
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
ret
;
}
...
...
@@ -279,14 +279,14 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd
->
command
=
(
pInfo
->
sqlType
==
CREATE_USER
)
?
TSDB_SQL_CREATE_USER
:
TSDB_SQL_CREATE_ACCT
;
assert
(
pInfo
->
pDCLInfo
->
nTokens
>=
2
);
c
har
msg
[]
=
"name or password too long"
;
c
har
msg1
[]
=
"password can not be empty"
;
c
har
msg2
[]
=
"invalid user/account name"
;
c
har
msg3
[]
=
"password needs single quote marks enclosed"
;
c
har
msg4
[]
=
"invalid state option, available options[no, r, w, all]"
;
c
onst
char
*
msg
=
"name or password too long"
;
c
onst
char
*
msg1
=
"password can not be empty"
;
c
onst
char
*
msg2
=
"invalid user/account name"
;
c
onst
char
*
msg3
=
"password needs single quote marks enclosed"
;
c
onst
char
*
msg4
=
"invalid state option, available options[no, r, w, all]"
;
if
(
pInfo
->
pDCLInfo
->
a
[
1
].
type
!=
TK_STRING
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -295,17 +295,17 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pInfo
->
pDCLInfo
->
a
[
1
].
n
=
strlen
(
pInfo
->
pDCLInfo
->
a
[
1
].
z
);
if
(
pInfo
->
pDCLInfo
->
a
[
1
].
n
<=
0
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pInfo
->
pDCLInfo
->
a
[
0
].
n
>
TSDB_USER_LEN
||
pInfo
->
pDCLInfo
->
a
[
1
].
n
>
TSDB_PASSWORD_LEN
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
tscValidateName
(
&
pInfo
->
pDCLInfo
->
a
[
0
])
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -318,15 +318,15 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
int32_t
num
=
pInfo
->
pDCLInfo
->
nTokens
;
assert
(
num
>=
1
&&
num
<=
2
);
c
har
msg
[]
=
"password too long"
;
c
har
msg1
[]
=
"password can not be empty"
;
c
har
msg2
[]
=
"invalid user/account name"
;
c
har
msg3
[]
=
"password needs single quote marks enclosed"
;
c
har
msg4
[]
=
"invalid state option, available options[no, r, w, all]"
;
c
onst
char
*
msg
=
"password too long"
;
c
onst
char
*
msg1
=
"password can not be empty"
;
c
onst
char
*
msg2
=
"invalid user/account name"
;
c
onst
char
*
msg3
=
"password needs single quote marks enclosed"
;
c
onst
char
*
msg4
=
"invalid state option, available options[no, r, w, all]"
;
if
(
num
==
2
)
{
if
(
pInfo
->
pDCLInfo
->
a
[
1
].
type
!=
TK_STRING
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -335,12 +335,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pInfo
->
pDCLInfo
->
a
[
1
].
n
=
strlen
(
pInfo
->
pDCLInfo
->
a
[
1
].
z
);
if
(
pInfo
->
pDCLInfo
->
a
[
1
].
n
<=
0
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pInfo
->
pDCLInfo
->
a
[
1
].
n
>
TSDB_PASSWORD_LEN
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -348,12 +348,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
pInfo
->
pDCLInfo
->
a
[
0
].
n
>
TSDB_USER_LEN
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
tscValidateName
(
&
pInfo
->
pDCLInfo
->
a
[
0
])
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -384,7 +384,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
else
if
(
strncmp
(
pAcctOpt
->
stat
.
z
,
"no"
,
2
)
==
0
&&
pAcctOpt
->
stat
.
n
==
2
)
{
pCmd
->
defaultVal
[
8
]
=
0
;
}
else
{
setErrMsg
(
pCmd
,
msg4
,
tListLen
(
msg4
)
);
setErrMsg
(
pCmd
,
msg4
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -394,21 +394,21 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd
->
command
=
TSDB_SQL_DESCRIBE_TABLE
;
SSQLToken
*
pToken
=
&
pInfo
->
pDCLInfo
->
a
[
0
];
c
har
msg
[]
=
"table name is too long"
;
c
onst
char
*
msg
=
"table name is too long"
;
if
(
tscValidateName
(
pToken
)
!=
TSDB_CODE_SUCCESS
)
{
c
har
msg1
[]
=
"invalid table name"
;
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
c
onst
char
*
msg1
=
"invalid table name"
;
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pToken
->
n
>
TSDB_METER_NAME_LEN
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
setMeterID
(
pSql
,
pToken
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -426,10 +426,10 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tDCLSQL
*
pDCL
=
pInfo
->
pDCLInfo
;
c
har
msg
[]
=
"parameters too long"
;
c
har
msg1
[]
=
"invalid ip address"
;
c
har
msg2
[]
=
"invalid configure options or values"
;
c
har
msg3
[]
=
"password can not be empty"
;
c
onst
char
*
msg
=
"parameters too long"
;
c
onst
char
*
msg1
=
"invalid ip address"
;
c
onst
char
*
msg2
=
"invalid configure options or values"
;
c
onst
char
*
msg3
=
"password can not be empty"
;
if
(
pInfo
->
sqlType
!=
ALTER_DNODE
)
{
strdequote
(
pDCL
->
a
[
1
].
z
);
...
...
@@ -438,12 +438,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
pDCL
->
a
[
1
].
n
<=
0
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pDCL
->
a
[
0
].
n
>
TSDB_METER_NAME_LEN
||
pDCL
->
a
[
1
].
n
>
TSDB_PASSWORD_LEN
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -453,7 +453,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
/* validate the ip address */
if
(
!
validateIpAddress
(
ip
))
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -461,7 +461,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
/* validate the parameter names and options */
if
(
validateDNodeConfig
(
pDCL
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -472,8 +472,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
strncpy
(
&
pCmd
->
payload
[
pDCL
->
a
[
1
].
n
+
1
],
pDCL
->
a
[
2
].
z
,
pDCL
->
a
[
2
].
n
);
}
}
else
{
c
har
msg
[]
=
"invalid user rights"
;
c
har
msg1
[]
=
"password can not be empty or larger than 24 characters"
;
c
onst
char
*
msg
=
"invalid user rights"
;
c
onst
char
*
msg1
=
"password can not be empty or larger than 24 characters"
;
strncpy
(
pCmd
->
name
,
pDCL
->
a
[
0
].
z
,
pDCL
->
a
[
0
].
n
);
...
...
@@ -486,7 +486,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if
(
pDCL
->
a
[
1
].
n
<=
0
||
pInfo
->
pDCLInfo
->
a
[
1
].
n
>
TSDB_PASSWORD_LEN
)
{
/* password cannot be empty string */
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -501,7 +501,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
else
if
(
strncasecmp
(
pDCL
->
a
[
1
].
z
,
"write"
,
5
)
==
0
&&
pDCL
->
a
[
1
].
n
==
5
)
{
pCmd
->
count
=
3
;
}
else
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
}
else
{
...
...
@@ -512,9 +512,9 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
case
ALTER_LOCAL
:
{
pCmd
->
command
=
TSDB_SQL_CFG_LOCAL
;
c
har
msg
[]
=
"parameter too long"
;
c
onst
char
*
msg
=
"parameter too long"
;
if
(
pInfo
->
pDCLInfo
->
a
[
0
].
n
>
TSDB_METER_ID_LEN
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -523,8 +523,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
case
TSQL_CREATE_NORMAL_METER
:
case
TSQL_CREATE_NORMAL_METRIC
:
{
c
har
msg
[]
=
"table name too long"
;
c
har
msg1
[]
=
"invalid table name"
;
c
onst
char
*
msg
=
"table name too long"
;
c
onst
char
*
msg1
=
"invalid table name"
;
tFieldList
*
pFieldList
=
pInfo
->
pCreateTableInfo
->
colInfo
.
pColumns
;
tFieldList
*
pTagList
=
pInfo
->
pCreateTableInfo
->
colInfo
.
pTagColumns
;
...
...
@@ -537,12 +537,12 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSQLToken
*
pzTableName
=
&
(
pInfo
->
pCreateTableInfo
->
name
);
if
(
tscValidateName
(
pzTableName
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
setMeterID
(
pSql
,
pzTableName
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -570,16 +570,16 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd
->
command
=
TSDB_SQL_CREATE_TABLE
;
pCmd
->
existsCheck
=
pInfo
->
pCreateTableInfo
->
existCheck
;
c
har
msg
[]
=
"invalid table name"
;
c
har
msg1
[]
=
"illegal value or data overflow"
;
c
har
msg2
[]
=
"illegal number of tags"
;
c
onst
char
*
msg
=
"invalid table name"
;
c
onst
char
*
msg1
=
"illegal value or data overflow"
;
c
onst
char
*
msg2
=
"illegal number of tags"
;
// table name
// metric name, create table by using dst
SSQLToken
*
pToken
=
&
(
pInfo
->
pCreateTableInfo
->
usingInfo
.
metricName
);
if
(
tscValidateName
(
pToken
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -600,7 +600,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
pSql
->
cmd
.
pMeterMeta
->
numOfTags
!=
pList
->
nExpr
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -611,7 +611,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
for
(
int32_t
i
=
0
;
i
<
pList
->
nExpr
;
++
i
)
{
int32_t
ret
=
tVariantDump
(
&
(
pList
->
a
[
i
].
pVar
),
tagVal
,
pTagSchema
[
i
].
type
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -619,7 +619,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
tscValidateName
(
&
pInfo
->
pCreateTableInfo
->
name
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -634,26 +634,26 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
case
TSQL_CREATE_STREAM
:
{
pCmd
->
command
=
TSDB_SQL_CREATE_TABLE
;
c
har
msg
[]
=
"table name too long"
;
c
har
msg1
[]
=
"invalid table name"
;
c
onst
char
*
msg
=
"table name too long"
;
c
onst
char
*
msg1
=
"invalid table name"
;
// if sql specifies db, use it, otherwise use default db
SSQLToken
*
pzTableName
=
&
(
pInfo
->
pCreateTableInfo
->
name
);
SQuerySQL
*
pQuerySql
=
pInfo
->
pCreateTableInfo
->
pSelect
;
if
(
tscValidateName
(
pzTableName
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
SSQLToken
*
pSrcMeterName
=
&
pInfo
->
pCreateTableInfo
->
pSelect
->
from
;
if
(
tscValidateName
(
pSrcMeterName
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
setMeterID
(
pSql
,
pSrcMeterName
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -688,7 +688,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
// set the created table[stream] name
if
(
setMeterID
(
pSql
,
pzTableName
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -697,8 +697,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
strncpy
(
pCmd
->
payload
,
pQuerySql
->
selectToken
.
z
,
pQuerySql
->
selectToken
.
n
);
if
(
pQuerySql
->
selectToken
.
n
>
TSDB_MAX_SAVED_SQL_LEN
)
{
c
har
msg4
[]
=
"sql too long"
;
// todo ADD support
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg4
)
);
c
onst
char
*
msg4
=
"sql too long"
;
// todo ADD support
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -717,8 +717,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
*/
if
(
pQuerySql
->
fillType
!=
NULL
)
{
if
(
pCmd
->
nAggTimeInterval
==
0
)
{
c
har
msg1
[]
=
"fill only available for interval query"
;
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
c
onst
char
*
msg1
=
"fill only available for interval query"
;
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -727,8 +727,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if
(
pItem
->
pVar
.
nType
==
TSDB_DATA_TYPE_BINARY
)
{
if
(
!
((
strncmp
(
pItem
->
pVar
.
pz
,
"none"
,
4
)
==
0
&&
pItem
->
pVar
.
nLen
==
4
)
||
(
strncmp
(
pItem
->
pVar
.
pz
,
"null"
,
4
)
==
0
&&
pItem
->
pVar
.
nLen
==
4
)))
{
c
har
msg2
[]
=
"fill option not supported in stream computing"
;
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
c
onst
char
*
msg2
=
"fill option not supported in stream computing"
;
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -744,20 +744,20 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
// too many result columns not support order by in query
if
(
pQuerySql
->
pSelection
->
nExpr
>
TSDB_MAX_COLUMNS
)
{
c
har
msg
[]
=
"too many columns in selection clause"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"too many columns in selection clause"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
tscValidateName
(
&
(
pQuerySql
->
from
))
!=
TSDB_CODE_SUCCESS
)
{
c
har
msg
[]
=
"invalid table name"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"invalid table name"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
setMeterID
(
pSql
,
&
pQuerySql
->
from
)
!=
TSDB_CODE_SUCCESS
)
{
c
har
msg
[]
=
"table name too long"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"table name too long"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -786,8 +786,8 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSQLToken
*
pSliding
=
&
pQuerySql
->
sliding
;
if
(
pSliding
->
n
!=
0
)
{
if
(
!
tscEmbedded
)
{
c
har
msg
[]
=
"not support sliding in query"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"not support sliding in query"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -796,16 +796,16 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd
->
nSlidingTime
/=
1000
;
}
c
har
msg3
[]
=
"sliding value too small"
;
c
har
msg4
[]
=
"sliding value no larger than the interval value"
;
c
onst
char
*
msg3
=
"sliding value too small"
;
c
onst
char
*
msg4
=
"sliding value no larger than the interval value"
;
if
(
pCmd
->
nSlidingTime
<
tsMinSlidingTime
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pCmd
->
nSlidingTime
>
pCmd
->
nAggTimeInterval
)
{
setErrMsg
(
pCmd
,
msg4
,
tListLen
(
msg4
)
);
setErrMsg
(
pCmd
,
msg4
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -842,17 +842,17 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
!
hasTimestampForPointInterpQuery
(
pCmd
))
{
c
har
msg
[]
=
"point interpolation query needs timestamp"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"point interpolation query needs timestamp"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pQuerySql
->
fillType
!=
NULL
)
{
c
har
msg1
[]
=
"fill only available for interval query"
;
c
har
msg2
[]
=
"start(end) time of query range required or time range too large"
;
c
onst
char
*
msg1
=
"fill only available for interval query"
;
c
onst
char
*
msg2
=
"start(end) time of query range required or time range too large"
;
if
(
pCmd
->
nAggTimeInterval
==
0
&&
(
!
tscIsPointInterpQuery
(
pCmd
)))
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -862,7 +862,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
// TODO define macro
if
((
timeRange
==
0
)
||
(
timeRange
/
pCmd
->
nAggTimeInterval
)
>
10000000
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -941,8 +941,8 @@ int32_t setIntervalClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) {
// interval cannot be less than 10 milliseconds
if
(
pCmd
->
nAggTimeInterval
<
tsMinIntervalTime
)
{
c
har
msg
[]
=
"interval cannot be less than 10 ms"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"interval cannot be less than 10 ms"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -961,8 +961,8 @@ int32_t setIntervalClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) {
}
int32_t
setSlidingClause
(
SSqlCmd
*
pCmd
,
SQuerySQL
*
pQuerySql
)
{
c
har
msg0
[]
=
"sliding value too small"
;
c
har
msg1
[]
=
"sliding value no larger than the interval value"
;
c
onst
char
*
msg0
=
"sliding value too small"
;
c
onst
char
*
msg1
=
"sliding value no larger than the interval value"
;
SSQLToken
*
pSliding
=
&
pQuerySql
->
sliding
;
...
...
@@ -973,12 +973,12 @@ int32_t setSlidingClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) {
}
if
(
pCmd
->
nSlidingTime
<
tsMinSlidingTime
)
{
setErrMsg
(
pCmd
,
msg0
,
tListLen
(
msg0
)
);
setErrMsg
(
pCmd
,
msg0
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pCmd
->
nSlidingTime
>
pCmd
->
nAggTimeInterval
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -992,7 +992,7 @@ int32_t setMeterID(SSqlObj *pSql, SSQLToken *pzTableName) {
//clear array
memset
(
pCmd
->
name
,
0
,
tListLen
(
pCmd
->
name
));
c
har
msg
[]
=
"name too long"
;
c
onst
char
*
msg
=
"name too long"
;
if
(
hasSpecifyDB
(
pzTableName
))
{
/*
...
...
@@ -1009,7 +1009,7 @@ int32_t setMeterID(SSqlObj *pSql, SSQLToken *pzTableName) {
}
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
}
return
ret
;
...
...
@@ -1018,23 +1018,23 @@ int32_t setMeterID(SSqlObj *pSql, SSQLToken *pzTableName) {
static
bool
validateTableColumnInfo
(
tFieldList
*
pFieldList
,
SSqlCmd
*
pCmd
)
{
assert
(
pFieldList
!=
NULL
);
c
har
msg
[]
=
"illegal number of columns"
;
c
har
msg1
[]
=
"first column must be timestamp"
;
c
har
msg2
[]
=
"row length exceeds max length"
;
c
har
msg3
[]
=
"duplicated column names"
;
c
har
msg4
[]
=
"invalid data types"
;
c
har
msg5
[]
=
"invalid binary/nchar column length"
;
c
har
msg6
[]
=
"invalid column name"
;
c
onst
char
*
msg
=
"illegal number of columns"
;
c
onst
char
*
msg1
=
"first column must be timestamp"
;
c
onst
char
*
msg2
=
"row length exceeds max length"
;
c
onst
char
*
msg3
=
"duplicated column names"
;
c
onst
char
*
msg4
=
"invalid data types"
;
c
onst
char
*
msg5
=
"invalid binary/nchar column length"
;
c
onst
char
*
msg6
=
"invalid column name"
;
// number of fields no less than 2
if
(
pFieldList
->
nField
<=
1
||
pFieldList
->
nField
>
TSDB_MAX_COLUMNS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
false
;
}
// first column must be timestamp
if
(
pFieldList
->
p
[
0
].
type
!=
TSDB_DATA_TYPE_TIMESTAMP
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
false
;
}
...
...
@@ -1045,7 +1045,7 @@ static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) {
// max row length must be less than TSDB_MAX_BYTES_PER_ROW
if
(
nLen
>
TSDB_MAX_BYTES_PER_ROW
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
false
;
}
...
...
@@ -1053,23 +1053,23 @@ static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) {
for
(
int32_t
i
=
0
;
i
<
pFieldList
->
nField
;
++
i
)
{
TAOS_FIELD
*
pField
=
&
pFieldList
->
p
[
i
];
if
(
pField
->
type
<
TSDB_DATA_TYPE_BOOL
||
pField
->
type
>
TSDB_DATA_TYPE_NCHAR
)
{
setErrMsg
(
pCmd
,
msg4
,
tListLen
(
msg4
)
);
setErrMsg
(
pCmd
,
msg4
);
return
false
;
}
if
((
pField
->
type
==
TSDB_DATA_TYPE_BINARY
&&
(
pField
->
bytes
<=
0
||
pField
->
bytes
>
TSDB_MAX_BINARY_LEN
))
||
(
pField
->
type
==
TSDB_DATA_TYPE_NCHAR
&&
(
pField
->
bytes
<=
0
||
pField
->
bytes
>
TSDB_MAX_NCHAR_LEN
)))
{
setErrMsg
(
pCmd
,
msg5
,
tListLen
(
msg5
)
);
setErrMsg
(
pCmd
,
msg5
);
return
false
;
}
if
(
validateColumnName
(
pField
->
name
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg6
,
tListLen
(
msg6
)
);
setErrMsg
(
pCmd
,
msg6
);
return
false
;
}
if
(
has
(
pFieldList
,
i
+
1
,
pFieldList
->
p
[
i
].
name
)
==
true
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
false
;
}
}
...
...
@@ -1080,17 +1080,17 @@ static bool validateTableColumnInfo(tFieldList* pFieldList, SSqlCmd* pCmd) {
static
bool
validateTagParams
(
tFieldList
*
pTagsList
,
tFieldList
*
pFieldList
,
SSqlCmd
*
pCmd
)
{
assert
(
pTagsList
!=
NULL
);
c
har
msg1
[]
=
"invalid number of tag columns"
;
c
har
msg2
[]
=
"tag length too long"
;
c
har
msg3
[]
=
"duplicated column names"
;
c
har
msg4
[]
=
"timestamp not allowed in tags"
;
c
har
msg5
[]
=
"invalid data type in tags"
;
c
har
msg6
[]
=
"invalid tag name"
;
c
har
msg7
[]
=
"invalid binary/nchar tag length"
;
c
onst
char
*
msg1
=
"invalid number of tag columns"
;
c
onst
char
*
msg2
=
"tag length too long"
;
c
onst
char
*
msg3
=
"duplicated column names"
;
c
onst
char
*
msg4
=
"timestamp not allowed in tags"
;
c
onst
char
*
msg5
=
"invalid data type in tags"
;
c
onst
char
*
msg6
=
"invalid tag name"
;
c
onst
char
*
msg7
=
"invalid binary/nchar tag length"
;
// number of fields at least 1
if
(
pTagsList
->
nField
<
1
||
pTagsList
->
nField
>
TSDB_MAX_TAGS
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
false
;
}
...
...
@@ -1101,14 +1101,14 @@ static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSq
// max tag row length must be less than TSDB_MAX_TAGS_LEN
if
(
nLen
>
TSDB_MAX_TAGS_LEN
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
false
;
}
// field name must be unique
for
(
int32_t
i
=
0
;
i
<
pTagsList
->
nField
;
++
i
)
{
if
(
has
(
pFieldList
,
0
,
pTagsList
->
p
[
i
].
name
)
==
true
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
false
;
}
}
...
...
@@ -1116,28 +1116,28 @@ static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSq
/* timestamp in tag is not allowed */
for
(
int32_t
i
=
0
;
i
<
pTagsList
->
nField
;
++
i
)
{
if
(
pTagsList
->
p
[
i
].
type
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
setErrMsg
(
pCmd
,
msg4
,
tListLen
(
msg4
)
);
setErrMsg
(
pCmd
,
msg4
);
return
false
;
}
if
(
pTagsList
->
p
[
i
].
type
<
TSDB_DATA_TYPE_BOOL
||
pTagsList
->
p
[
i
].
type
>
TSDB_DATA_TYPE_NCHAR
)
{
setErrMsg
(
pCmd
,
msg5
,
tListLen
(
msg5
)
);
setErrMsg
(
pCmd
,
msg5
);
return
false
;
}
if
((
pTagsList
->
p
[
i
].
type
==
TSDB_DATA_TYPE_BINARY
&&
pTagsList
->
p
[
i
].
bytes
<=
0
)
||
(
pTagsList
->
p
[
i
].
type
==
TSDB_DATA_TYPE_NCHAR
&&
pTagsList
->
p
[
i
].
bytes
<=
0
))
{
setErrMsg
(
pCmd
,
msg7
,
tListLen
(
msg7
)
);
setErrMsg
(
pCmd
,
msg7
);
return
false
;
}
if
(
validateColumnName
(
pTagsList
->
p
[
i
].
name
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg6
,
tListLen
(
msg6
)
);
setErrMsg
(
pCmd
,
msg6
);
return
false
;
}
if
(
has
(
pTagsList
,
i
+
1
,
pTagsList
->
p
[
i
].
name
)
==
true
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
false
;
}
}
...
...
@@ -1149,12 +1149,12 @@ static bool validateTagParams(tFieldList* pTagsList, tFieldList* pFieldList, SSq
* tags name /column name is truncated in sql.y
*/
bool
validateOneTags
(
SSqlCmd
*
pCmd
,
TAOS_FIELD
*
pTagField
)
{
c
har
msg1
[]
=
"timestamp not allowed in tags"
;
c
har
msg2
[]
=
"duplicated column names"
;
c
har
msg3
[]
=
"tag length too long"
;
c
har
msg4
[]
=
"invalid tag name"
;
c
har
msg5
[]
=
"invalid binary/nchar tag length"
;
c
har
msg6
[]
=
"invalid data type in tags"
;
c
onst
char
*
msg1
=
"timestamp not allowed in tags"
;
c
onst
char
*
msg2
=
"duplicated column names"
;
c
onst
char
*
msg3
=
"tag length too long"
;
c
onst
char
*
msg4
=
"invalid tag name"
;
c
onst
char
*
msg5
=
"invalid binary/nchar tag length"
;
c
onst
char
*
msg6
=
"invalid data type in tags"
;
SMeterMeta
*
pMeterMeta
=
pCmd
->
pMeterMeta
;
...
...
@@ -1163,18 +1163,18 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) {
char
msg
[
128
]
=
{
0
};
sprintf
(
msg
,
"tags no more than %d"
,
TSDB_MAX_TAGS
);
setErrMsg
(
pCmd
,
msg
,
strlen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
false
;
}
// no timestamp allowable
if
(
pTagField
->
type
==
TSDB_DATA_TYPE_TIMESTAMP
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
false
;
}
if
(
pTagField
->
type
<
TSDB_DATA_TYPE_BOOL
&&
pTagField
->
type
>
TSDB_DATA_TYPE_NCHAR
)
{
setErrMsg
(
pCmd
,
msg6
,
tListLen
(
msg6
)
);
setErrMsg
(
pCmd
,
msg6
);
return
false
;
}
...
...
@@ -1187,19 +1187,19 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) {
// length less than TSDB_MAX_TASG_LEN
if
(
nLen
+
pTagField
->
bytes
>
TSDB_MAX_TAGS_LEN
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
false
;
}
// tags name can not be a keyword
if
(
validateColumnName
(
pTagField
->
name
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg4
,
tListLen
(
msg4
)
);
setErrMsg
(
pCmd
,
msg4
);
return
false
;
}
// binary(val), val can not be equalled to or less than 0
if
((
pTagField
->
type
==
TSDB_DATA_TYPE_BINARY
||
pTagField
->
type
==
TSDB_DATA_TYPE_NCHAR
)
&&
pTagField
->
bytes
<=
0
)
{
setErrMsg
(
pCmd
,
msg5
,
tListLen
(
msg5
)
);
setErrMsg
(
pCmd
,
msg5
);
return
false
;
}
...
...
@@ -1208,7 +1208,7 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) {
for
(
int32_t
i
=
0
;
i
<
pMeterMeta
->
numOfTags
+
pMeterMeta
->
numOfColumns
;
++
i
)
{
if
(
strncasecmp
(
pTagField
->
name
,
pSchema
[
i
].
name
,
TSDB_COL_NAME_LEN
)
==
0
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
false
;
}
}
...
...
@@ -1217,29 +1217,29 @@ bool validateOneTags(SSqlCmd* pCmd, TAOS_FIELD* pTagField) {
}
bool
validateOneColumn
(
SSqlCmd
*
pCmd
,
TAOS_FIELD
*
pColField
)
{
c
har
msg1
[]
=
"too many columns"
;
c
har
msg2
[]
=
"duplicated column names"
;
c
har
msg3
[]
=
"column length too long"
;
c
har
msg4
[]
=
"invalid data types"
;
c
har
msg5
[]
=
"invalid column name"
;
c
har
msg6
[]
=
"invalid column length"
;
c
onst
char
*
msg1
=
"too many columns"
;
c
onst
char
*
msg2
=
"duplicated column names"
;
c
onst
char
*
msg3
=
"column length too long"
;
c
onst
char
*
msg4
=
"invalid data types"
;
c
onst
char
*
msg5
=
"invalid column name"
;
c
onst
char
*
msg6
=
"invalid column length"
;
SMeterMeta
*
pMeterMeta
=
pCmd
->
pMeterMeta
;
// no more max columns
if
(
pMeterMeta
->
numOfColumns
>=
TSDB_MAX_COLUMNS
||
pMeterMeta
->
numOfTags
+
pMeterMeta
->
numOfColumns
>=
TSDB_MAX_COLUMNS
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
false
;
}
if
(
pColField
->
type
<
TSDB_DATA_TYPE_BOOL
||
pColField
->
type
>
TSDB_DATA_TYPE_NCHAR
)
{
setErrMsg
(
pCmd
,
msg4
,
tListLen
(
msg4
)
);
setErrMsg
(
pCmd
,
msg4
);
return
false
;
}
if
(
validateColumnName
(
pColField
->
name
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg5
,
tListLen
(
msg5
)
);
setErrMsg
(
pCmd
,
msg5
);
return
false
;
}
...
...
@@ -1251,20 +1251,20 @@ bool validateOneColumn(SSqlCmd* pCmd, TAOS_FIELD* pColField) {
}
if
(
pColField
->
bytes
<=
0
)
{
setErrMsg
(
pCmd
,
msg6
,
tListLen
(
msg6
)
);
setErrMsg
(
pCmd
,
msg6
);
return
false
;
}
// length less than TSDB_MAX_BYTES_PER_ROW
if
(
nLen
+
pColField
->
bytes
>
TSDB_MAX_BYTES_PER_ROW
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
false
;
}
// field name must be unique
for
(
int32_t
i
=
0
;
i
<
pMeterMeta
->
numOfTags
+
pMeterMeta
->
numOfColumns
;
++
i
)
{
if
(
strncasecmp
(
pColField
->
name
,
pSchema
[
i
].
name
,
TSDB_COL_NAME_LEN
)
==
0
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
false
;
}
}
...
...
@@ -1365,10 +1365,10 @@ static void extractColumnNameFromString(tSQLExprItem* pItem, char* tmpBuf) {
int32_t
buildSelectionClause
(
SSqlCmd
*
pCmd
,
tSQLExprList
*
pSelection
,
bool
isMetric
)
{
assert
(
pSelection
!=
NULL
&&
pCmd
!=
NULL
);
c
har
msg1
[]
=
"invalid column name/illegal column type in arithmetic expression"
;
c
har
msg2
[]
=
"functions can not be mixed up"
;
c
har
msg3
[]
=
"not support query expression"
;
c
har
msg4
[]
=
"function not support in STable query"
;
c
onst
char
*
msg1
=
"invalid column name/illegal column type in arithmetic expression"
;
c
onst
char
*
msg2
=
"functions can not be mixed up"
;
c
onst
char
*
msg3
=
"not support query expression"
;
c
onst
char
*
msg4
=
"function not support in STable query"
;
SSchema
*
pSchema
=
tsGetSchema
(
pCmd
->
pMeterMeta
);
...
...
@@ -1405,7 +1405,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet
/* arithmetic function in select*/
int32_t
ret
=
validateArithmeticSQLExpr
(
pItem
->
pNode
,
pSchema
,
pCmd
->
pMeterMeta
->
numOfColumns
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -1440,7 +1440,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet
* not support such expression
* e.g., select 12+5 from table_name
*/
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -1450,7 +1450,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet
}
if
(
!
functionCompatibleCheck
(
pCmd
))
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -1469,7 +1469,7 @@ int32_t buildSelectionClause(SSqlCmd* pCmd, tSQLExprList* pSelection, bool isMet
tscTansformSQLFunctionForMetricQuery
(
pCmd
);
if
(
hasUnsupportFunctionsForMetricQuery
(
pCmd
))
{
setErrMsg
(
pCmd
,
msg4
,
tListLen
(
msg4
)
);
setErrMsg
(
pCmd
,
msg4
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -1577,8 +1577,8 @@ int32_t addProjectionExprAndResultField(SSqlCmd* pCmd, SSchema* pSchema, tSQLExp
addRequiredTagColumn
(
pCmd
,
-
1
);
pExpr
->
colInfo
.
isTag
=
true
;
}
else
{
c
har
msg
[]
=
"invalid column name"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"invalid column name"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
}
else
{
...
...
@@ -1610,12 +1610,12 @@ static int32_t setExprInfoForFunctions(SSqlCmd* pCmd, SSchema* pSchema, int32_t
int16_t
bytes
=
0
;
char
columnName
[
TSDB_COL_NAME_LEN
]
=
{
0
};
c
har
msg1
[]
=
"not support column types"
;
c
onst
char
*
msg1
=
"not support column types"
;
if
(
functionID
==
TSDB_FUNC_SPREAD
)
{
if
(
pSchema
[
idx
].
type
==
TSDB_DATA_TYPE_BINARY
||
pSchema
[
idx
].
type
==
TSDB_DATA_TYPE_NCHAR
||
pSchema
[
idx
].
type
==
TSDB_DATA_TYPE_BOOL
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
-
1
;
}
else
{
type
=
TSDB_DATA_TYPE_DOUBLE
;
...
...
@@ -1651,16 +1651,16 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
SSchema
*
pSchema
=
tsGetSchema
(
pCmd
->
pMeterMeta
);
int32_t
numOfAddedColumn
=
1
;
c
har
msg
[]
=
"invalid parameters"
;
c
har
msg1
[]
=
"not support column types"
;
c
har
msg3
[]
=
"illegal column name"
;
c
har
msg5
[]
=
"parameter is out of range [0, 100]"
;
c
onst
char
*
msg
=
"invalid parameters"
;
c
onst
char
*
msg1
=
"not support column types"
;
c
onst
char
*
msg3
=
"illegal column name"
;
c
onst
char
*
msg5
=
"parameter is out of range [0, 100]"
;
switch
(
optr
)
{
case
TK_COUNT
:
{
if
(
pItem
->
pNode
->
pParam
!=
NULL
&&
pItem
->
pNode
->
pParam
->
nExpr
!=
1
)
{
/* more than one parameter for count() function */
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
-
1
;
}
...
...
@@ -1674,7 +1674,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
if
(
pItem
->
pNode
->
pParam
!=
NULL
)
{
SSQLToken
*
pToken
=
&
pItem
->
pNode
->
pParam
->
a
[
0
].
pNode
->
colInfo
;
if
(
pToken
->
z
==
NULL
||
pToken
->
n
==
0
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
-
1
;
}
...
...
@@ -1685,7 +1685,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
}
else
{
columnId
=
getColumnIndexByName
(
pToken
,
pSchema
,
pCmd
->
pMeterMeta
->
numOfColumns
);
if
(
columnId
<
0
)
{
// invalid column name
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
-
1
;
}
...
...
@@ -1718,26 +1718,26 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
if
(
pItem
->
pNode
->
pParam
==
NULL
||
(
optr
!=
TK_LEASTSQUARES
&&
pItem
->
pNode
->
pParam
->
nExpr
!=
1
)
||
(
optr
==
TK_LEASTSQUARES
&&
pItem
->
pNode
->
pParam
->
nExpr
!=
3
))
{
/* no parameters or more than one parameter for function */
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
-
1
;
}
tSQLExprItem
*
pParamElem
=
&
(
pItem
->
pNode
->
pParam
->
a
[
0
]);
if
(
pParamElem
->
pNode
->
nSQLOptr
!=
TK_ALL
&&
pParamElem
->
pNode
->
nSQLOptr
!=
TK_ID
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
-
1
;
}
int32_t
idx
=
getColumnIndexByName
(
&
pParamElem
->
pNode
->
colInfo
,
pSchema
,
pCmd
->
pMeterMeta
->
numOfColumns
);
if
(
idx
<
0
)
{
// invalid column name
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
-
1
;
}
// 2. check if sql function can be applied on this column data type
int16_t
colType
=
pSchema
[
idx
].
type
;
if
(
colType
==
TSDB_DATA_TYPE_BOOL
||
colType
>=
TSDB_DATA_TYPE_BINARY
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
-
1
;
}
...
...
@@ -1799,7 +1799,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
if
(
!
requireAllFields
)
{
if
(
pItem
->
pNode
->
pParam
->
nExpr
<
1
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
-
1
;
}
...
...
@@ -1808,7 +1808,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
for
(
int32_t
i
=
0
;
i
<
pItem
->
pNode
->
pParam
->
nExpr
;
++
i
)
{
tSQLExprItem
*
pParamElem
=
&
(
pItem
->
pNode
->
pParam
->
a
[
i
]);
if
(
pParamElem
->
pNode
->
nSQLOptr
!=
TK_ALL
&&
pParamElem
->
pNode
->
nSQLOptr
!=
TK_ID
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
-
1
;
}
...
...
@@ -1840,13 +1840,13 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
// 1. valid the number of parameters
if
(
pItem
->
pNode
->
pParam
==
NULL
||
pItem
->
pNode
->
pParam
->
nExpr
!=
2
)
{
/* no parameters or more than one parameter for function */
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
-
1
;
}
tSQLExprItem
*
pParamElem
=
&
(
pItem
->
pNode
->
pParam
->
a
[
0
]);
if
(
pParamElem
->
pNode
->
nSQLOptr
!=
TK_ID
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
}
char
columnName
[
TSDB_COL_NAME_LEN
]
=
{
0
};
...
...
@@ -1860,13 +1860,13 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
// 2. valid the column type
int16_t
colType
=
pSchema
[
idx
].
type
;
if
(
colType
==
TSDB_DATA_TYPE_BOOL
||
colType
>=
TSDB_DATA_TYPE_BINARY
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
-
1
;
}
// 3. valid the parameters
if
(
pParamElem
[
1
].
pNode
->
nSQLOptr
==
TK_ID
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
-
1
;
}
...
...
@@ -1881,7 +1881,7 @@ int32_t addExprAndResultField(SSqlCmd* pCmd, int32_t colIdx, tSQLExprItem* pItem
double
dp
=
*
((
double
*
)
val
);
if
(
dp
<
0
||
dp
>
100
)
{
// todo use macro
setErrMsg
(
pCmd
,
msg5
,
tListLen
(
msg5
)
);
setErrMsg
(
pCmd
,
msg5
);
return
-
1
;
}
...
...
@@ -2037,9 +2037,9 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd
->
command
=
TSDB_SQL_SHOW
;
int8_t
type
=
pInfo
->
sqlType
;
c
har
msg
[]
=
"database name too long"
;
c
har
msg1
[]
=
"invalid database name"
;
c
har
msg2
[]
=
"pattern filter string too long"
;
c
onst
char
*
msg
=
"database name too long"
;
c
onst
char
*
msg1
=
"invalid database name"
;
c
onst
char
*
msg2
=
"pattern filter string too long"
;
switch
(
type
)
{
case
SHOW_VGROUPS
:
...
...
@@ -2084,12 +2084,12 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
SSQLToken
*
pDbPrefixToken
=
&
pInfo
->
pDCLInfo
->
a
[
0
];
if
(
pDbPrefixToken
->
n
>
TSDB_DB_NAME_LEN
)
{
// db name is too long
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pDbPrefixToken
->
n
>
0
&&
tscValidateName
(
pDbPrefixToken
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -2116,7 +2116,7 @@ int32_t setShowInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd
->
payloadLen
=
strlen
(
pCmd
->
payload
);
if
(
pCmd
->
payloadLen
>
TSDB_METER_NAME_LEN
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
// wildcard is too long
}
}
...
...
@@ -2157,8 +2157,8 @@ int32_t setKillInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if
(
!
validateIpAddress
(
ipStr
))
{
memset
(
pCmd
->
payload
,
0
,
tListLen
(
pCmd
->
payload
));
c
har
msg
[]
=
"invalid ip address"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"invalid ip address"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -2166,18 +2166,17 @@ int32_t setKillInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if
(
port
<=
0
||
port
>
65535
)
{
memset
(
pCmd
->
payload
,
0
,
tListLen
(
pCmd
->
payload
));
c
har
msg
[]
=
"invalid port"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"invalid port"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
return
TSDB_CODE_SUCCESS
;
}
void
setErrMsg
(
SSqlCmd
*
pCmd
,
char
*
pzErrMsg
,
int32_t
maxLen
)
{
int32_t
validLen
=
(
maxLen
>
pCmd
->
allocSize
)
?
pCmd
->
allocSize
:
maxLen
;
strncpy
(
pCmd
->
payload
,
pzErrMsg
,
validLen
);
pCmd
->
payload
[
validLen
-
1
]
=
0
;
void
setErrMsg
(
SSqlCmd
*
pCmd
,
const
char
*
pzErrMsg
)
{
strncpy
(
pCmd
->
payload
,
pzErrMsg
,
pCmd
->
allocSize
);
pCmd
->
payload
[
pCmd
->
allocSize
-
1
]
=
0
;
}
bool
validateIpAddress
(
char
*
ip
)
{
...
...
@@ -2305,16 +2304,16 @@ void updateTagColumnIndex(SSqlCmd* pCmd) {
}
int32_t
setGroupByClause
(
SSqlCmd
*
pCmd
,
tVariantList
*
pList
)
{
c
har
msg1
[]
=
"too many columns in group by clause"
;
c
har
msg2
[]
=
"invalid column name in group by clause"
;
c
har
msg3
[]
=
"functions are not available in group by query"
;
c
har
msg4
[]
=
"group by only available for STable query"
;
c
onst
char
*
msg1
=
"too many columns in group by clause"
;
c
onst
char
*
msg2
=
"invalid column name in group by clause"
;
c
onst
char
*
msg3
=
"functions are not available in group by query"
;
c
onst
char
*
msg4
=
"group by only available for STable query"
;
if
(
UTIL_METER_IS_NOMRAL_METER
(
pCmd
))
{
if
(
pList
==
NULL
)
{
return
TSDB_CODE_SUCCESS
;
}
else
{
setErrMsg
(
pCmd
,
msg4
,
tListLen
(
msg4
)
);
setErrMsg
(
pCmd
,
msg4
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -2325,7 +2324,7 @@ int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) {
pCmd
->
groupbyExpr
.
numOfGroupbyCols
=
pList
->
nExpr
;
if
(
pList
->
nExpr
>
TSDB_MAX_TAGS
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -2352,7 +2351,7 @@ int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) {
}
else
{
colIdx
=
getColumnIndexByName
(
&
token
,
pSchema
,
pMeterMeta
->
numOfTags
+
pMeterMeta
->
numOfColumns
);
if
(
colIdx
<
pMeterMeta
->
numOfColumns
||
colIdx
>
TSDB_MAX_TAGS
+
pMeterMeta
->
numOfColumns
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -2390,12 +2389,12 @@ int32_t setGroupByClause(SSqlCmd* pCmd, tVariantList* pList) {
int32_t
functId
=
tscSqlExprGet
(
pCmd
,
i
)
->
sqlFuncId
;
if
(
IS_MULTIOUTPUT
(
aAggs
[
functId
].
nStatus
)
&&
functId
!=
TSDB_FUNC_TOP_DST
&&
functId
!=
TSDB_FUNC_BOTTOM_DST
&&
functId
!=
TSDB_FUNC_TOP
&&
functId
!=
TSDB_FUNC_BOTTOM
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
functId
==
TSDB_FUNC_COUNT
&&
tscSqlExprGet
(
pCmd
,
i
)
->
colInfo
.
colIdx
==
-
1
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -2591,15 +2590,15 @@ static int32_t buildTagQueryCondString(SSqlCmd* pCmd, tSQLExpr* pExpr, char** qu
tSQLExpr
*
pLeft
=
pExpr
->
pLeft
;
tSQLExpr
*
pRight
=
pExpr
->
pRight
;
c
har
msg0
[]
=
"invalid table name list"
;
c
har
msg1
[]
=
"like operation is not allowed on numeric tags"
;
c
har
msg2
[]
=
"in and query condition cannot be mixed up"
;
c
onst
char
*
msg0
=
"invalid table name list"
;
c
onst
char
*
msg1
=
"like operation is not allowed on numeric tags"
;
c
onst
char
*
msg2
=
"in and query condition cannot be mixed up"
;
STagCond
*
pCond
=
&
pCmd
->
tagCond
;
if
(
pExpr
->
nSQLOptr
==
TK_IN
&&
pRight
->
nSQLOptr
==
TK_SET
)
{
/* table name array list, invoke another routine */
if
(
pCond
->
type
==
TSQL_STABLE_QTYPE_COND
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -2611,14 +2610,14 @@ static int32_t buildTagQueryCondString(SSqlCmd* pCmd, tSQLExpr* pExpr, char** qu
int32_t
ret
=
createTableNameList
(
pRight
,
queryStr
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg0
,
tListLen
(
msg0
)
);
setErrMsg
(
pCmd
,
msg0
);
}
return
ret
;
}
// already use IN predicates
if
(
pCond
->
type
==
TSQL_STABLE_QTYPE_SET
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
else
{
pCond
->
type
=
TSQL_STABLE_QTYPE_COND
;
...
...
@@ -2646,7 +2645,7 @@ static int32_t buildTagQueryCondString(SSqlCmd* pCmd, tSQLExpr* pExpr, char** qu
int32_t
colIdx
=
getColumnIndexByName
(
&
pLeft
->
colInfo
,
pSchema
,
numOfCols
+
numOfTags
);
if
((
!
isTbnameToken
(
&
pLeft
->
colInfo
))
&&
pSchema
[
colIdx
].
type
!=
TSDB_DATA_TYPE_BINARY
&&
pSchema
[
colIdx
].
type
!=
TSDB_DATA_TYPE_NCHAR
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -2780,18 +2779,18 @@ static int32_t getColumnFilterInfo(SSqlCmd* pCmd, int32_t colIdx, tSQLExpr* pExp
SMeterMeta
*
pMeterMeta
=
pCmd
->
pMeterMeta
;
SSchema
*
pSchema
=
tsGetSchema
(
pMeterMeta
);
c
har
msg
[]
=
"nchar column not available for filter"
;
c
har
msg1
[]
=
"non binary column not support like operator"
;
c
har
msg2
[]
=
"binary column not support this operator"
;
c
har
msg3
[]
=
"column not support in operator"
;
c
onst
char
*
msg
=
"nchar column not available for filter"
;
c
onst
char
*
msg1
=
"non binary column not support like operator"
;
c
onst
char
*
msg2
=
"binary column not support this operator"
;
c
onst
char
*
msg3
=
"column not support in operator"
;
if
(
pSchema
[
colIdx
].
type
==
TSDB_DATA_TYPE_NCHAR
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
-
1
;
}
if
(
pExpr
->
nSQLOptr
==
TK_IN
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
-
1
;
}
...
...
@@ -2801,12 +2800,12 @@ static int32_t getColumnFilterInfo(SSqlCmd* pCmd, int32_t colIdx, tSQLExpr* pExp
if
(
pColFilter
->
filterOnBinary
)
{
if
(
pExpr
->
nSQLOptr
!=
TK_EQ
&&
pExpr
->
nSQLOptr
!=
TK_NE
&&
pExpr
->
nSQLOptr
!=
TK_LIKE
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
}
else
{
if
(
pExpr
->
nSQLOptr
==
TK_LIKE
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -2826,27 +2825,27 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, bool* queryTimeRangeIsSet, c
int32_t
numOfCols
=
pMeterMeta
->
numOfColumns
;
int32_t
numOfTags
=
pMeterMeta
->
numOfTags
;
c
har
msg
[]
=
"meter query cannot use tags filter"
;
c
har
msg1
[]
=
"illegal column name"
;
c
har
msg2
[]
=
"invalid timestamp"
;
c
onst
char
*
msg
=
"meter query cannot use tags filter"
;
c
onst
char
*
msg1
=
"illegal column name"
;
c
onst
char
*
msg2
=
"invalid timestamp"
;
int32_t
colIdx
=
getColumnIndexByName
(
&
pLeft
->
colInfo
,
pSchema
,
numOfCols
+
numOfTags
);
bool
istbname
=
isTbnameToken
(
&
pLeft
->
colInfo
);
if
(
colIdx
<
0
&&
(
!
istbname
))
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
colIdx
==
0
)
{
// query on time range
*
queryTimeRangeIsSet
=
true
;
if
(
getTimeRange
(
stime
,
etime
,
pRight
,
pExpr
->
nSQLOptr
,
pMeterMeta
->
precision
)
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
}
else
if
(
colIdx
>=
numOfCols
||
istbname
)
{
// query on tags
if
(
UTIL_METER_IS_NOMRAL_METER
(
pCmd
))
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
return
buildTagQueryCondString
(
pCmd
,
pExpr
,
queryStr
);
...
...
@@ -2938,8 +2937,8 @@ int32_t getQueryCondExprImpl(SSqlCmd* pCmd, tSQLExpr* pExpr, int64_t* stime, int
*
etime
=
etime2
<
(
*
etime
)
?
etime2
:
(
*
etime
);
}
else
{
c
har
msg1
[]
=
"not support multi-segments query time ranges"
;
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
c
onst
char
*
msg1
=
"not support multi-segments query time ranges"
;
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -3023,7 +3022,7 @@ int tableNameCompar(const void* lhs, const void* rhs) {
static
int32_t
setMetersIDForMetricQuery
(
SSqlObj
*
pSql
,
char
*
tmpTagCondBuf
)
{
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
c
har
msg
[]
=
"meter name too long"
;
c
onst
char
*
msg
=
"meter name too long"
;
pCmd
->
tagCond
.
allocSize
=
4096
;
pCmd
->
tagCond
.
pData
=
realloc
(
pCmd
->
tagCond
.
pData
,
pCmd
->
tagCond
.
allocSize
);
...
...
@@ -3066,7 +3065,7 @@ static int32_t setMetersIDForMetricQuery(SSqlObj* pSql, char* tmpTagCondBuf) {
int32_t
ret
=
setObjFullName
(
pCmd
->
tagCond
.
pData
+
pCmd
->
tagCond
.
len
,
acc
,
&
tDB
,
&
t
,
&
xlen
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
tfree
(
segments
);
return
ret
;
}
...
...
@@ -3108,14 +3107,14 @@ int32_t buildQueryCond(SSqlObj* pSql, tSQLExpr* pExpr) {
return
TSDB_CODE_SUCCESS
;
}
c
har
msg1
[]
=
"invalid expression"
;
c
har
msg2
[]
=
"meter is not allowed"
;
c
har
msg3
[]
=
"invalid filter expression"
;
c
onst
char
*
msg1
=
"invalid expression"
;
c
onst
char
*
msg2
=
"meter is not allowed"
;
c
onst
char
*
msg3
=
"invalid filter expression"
;
tSQLExpr
*
pLeft
=
pExpr
->
pLeft
;
tSQLExpr
*
pRight
=
pExpr
->
pRight
;
if
(
pLeft
==
NULL
||
pRight
==
NULL
||
(
pLeft
->
nSQLOptr
==
TK_ID
&&
pRight
->
nSQLOptr
==
TK_ID
))
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3141,7 +3140,7 @@ int32_t buildQueryCond(SSqlObj* pSql, tSQLExpr* pExpr) {
if
(
pCmd
->
tagCond
.
type
==
TSQL_STABLE_QTYPE_SET
)
{
if
(
!
UTIL_METER_IS_METRIC
(
pCmd
))
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3160,7 +3159,7 @@ int32_t buildQueryCond(SSqlObj* pSql, tSQLExpr* pExpr) {
}
if
(
!
validateFilterExpr
(
pCmd
))
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3256,8 +3255,8 @@ int32_t tsRewriteFieldNameIfNecessary(SSqlCmd* pCmd) {
char
*
fieldName
=
tscFieldInfoGetField
(
pCmd
,
i
)
->
name
;
for
(
int32_t
j
=
i
+
1
;
j
<
pCmd
->
fieldsInfo
.
numOfOutputCols
;
++
j
)
{
if
(
strncasecmp
(
fieldName
,
tscFieldInfoGetField
(
pCmd
,
j
)
->
name
,
TSDB_COL_NAME_LEN
)
==
0
)
{
c
har
msg
[]
=
"duplicated column name in new table"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"duplicated column name in new table"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -3271,12 +3270,12 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) {
tVariantListItem
*
pItem
=
&
pFillToken
->
a
[
0
];
const
int32_t
START_INTERPO_COL_IDX
=
1
;
c
har
msg
[]
=
"illegal value or data overflow"
;
c
har
msg1
[]
=
"value is expected"
;
c
har
msg2
[]
=
"invalid fill option"
;
c
onst
char
*
msg
=
"illegal value or data overflow"
;
c
onst
char
*
msg1
=
"value is expected"
;
c
onst
char
*
msg2
=
"invalid fill option"
;
if
(
pItem
->
pVar
.
nType
!=
TSDB_DATA_TYPE_BINARY
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3297,7 +3296,7 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) {
pCmd
->
interpoType
=
TSDB_INTERPO_SET_VALUE
;
if
(
pFillToken
->
nExpr
==
1
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3323,7 +3322,7 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) {
int32_t
ret
=
tVariantDump
(
&
pFillToken
->
a
[
j
].
pVar
,
(
char
*
)
&
pCmd
->
defaultVal
[
i
],
pFields
->
type
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3346,7 +3345,7 @@ int32_t setFillPolicy(SSqlCmd* pCmd, SQuerySQL* pQuerySQL) {
}
}
}
else
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3371,10 +3370,10 @@ static void setDefaultOrderInfo(SSqlCmd* pCmd) {
}
int32_t
setOrderByClause
(
SSqlCmd
*
pCmd
,
SQuerySQL
*
pQuerySql
,
SSchema
*
pSchema
,
int32_t
numOfCols
)
{
c
har
msg
[]
=
"only support order by primary timestamp"
;
c
har
msg3
[]
=
"invalid column name"
;
c
har
msg5
[]
=
"only support order by primary timestamp and queried column"
;
c
har
msg6
[]
=
"only support order by primary timestamp and first tag in groupby clause"
;
c
onst
char
*
msg
=
"only support order by primary timestamp"
;
c
onst
char
*
msg3
=
"invalid column name"
;
c
onst
char
*
msg5
=
"only support order by primary timestamp and queried column"
;
c
onst
char
*
msg6
=
"only support order by primary timestamp and first tag in groupby clause"
;
setDefaultOrderInfo
(
pCmd
);
...
...
@@ -3385,12 +3384,12 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema,
tVariantList
*
pSortorder
=
pQuerySql
->
pSortOrder
;
if
(
UTIL_METER_IS_NOMRAL_METER
(
pCmd
))
{
if
(
pSortorder
->
nExpr
>
1
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
}
else
{
if
(
pSortorder
->
nExpr
>
2
)
{
setErrMsg
(
pCmd
,
msg6
,
tListLen
(
msg6
)
);
setErrMsg
(
pCmd
,
msg6
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -3422,7 +3421,7 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema,
}
if
(
!
(
orderByTags
||
orderByTS
))
{
setErrMsg
(
pCmd
,
msg6
,
tListLen
(
msg6
)
);
setErrMsg
(
pCmd
,
msg6
);
return
TSDB_CODE_INVALID_SQL
;
}
else
{
assert
(
!
(
orderByTags
&&
orderByTS
));
...
...
@@ -3443,7 +3442,7 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema,
SSQLToken
cname
=
{
pVar2
->
nLen
,
pVar2
->
nType
,
pVar2
->
pz
};
columnIndex
=
getColumnIndexByName
(
&
cname
,
pSchema
,
numOfCols
);
if
(
columnIndex
!=
PRIMARYKEY_TIMESTAMP_COL_INDEX
)
{
setErrMsg
(
pCmd
,
msg5
,
tListLen
(
msg5
)
);
setErrMsg
(
pCmd
,
msg5
);
return
TSDB_CODE_INVALID_SQL
;
}
else
{
pCmd
->
order
.
order
=
pSortorder
->
a
[
1
].
sortOrder
;
...
...
@@ -3454,12 +3453,12 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema,
}
else
{
// meter query
int32_t
columnIndex
=
getColumnIndexByName
(
&
columnName
,
pSchema
,
numOfCols
);
if
(
columnIndex
<=
-
1
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
columnIndex
!=
PRIMARYKEY_TIMESTAMP_COL_INDEX
&&
!
isTopBottomQuery
(
pCmd
))
{
setErrMsg
(
pCmd
,
msg5
,
tListLen
(
msg5
)
);
setErrMsg
(
pCmd
,
msg5
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3470,7 +3469,7 @@ int32_t setOrderByClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql, SSchema* pSchema,
pExpr
=
tscSqlExprGet
(
pCmd
,
1
);
if
(
pExpr
->
colInfo
.
colIdx
!=
columnIndex
&&
columnIndex
!=
PRIMARYKEY_TIMESTAMP_COL_INDEX
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3492,14 +3491,14 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd
->
command
=
TSDB_SQL_ALTER_TABLE
;
if
(
tscValidateName
(
&
(
pAlterSQL
->
name
))
!=
TSDB_CODE_SUCCESS
)
{
c
har
msg
[]
=
"invalid table name"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"invalid table name"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
setMeterID
(
pSql
,
&
(
pAlterSQL
->
name
))
!=
TSDB_CODE_SUCCESS
)
{
c
har
msg
[]
=
"table name too long"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"table name too long"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3514,18 +3513,18 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if
(
pInfo
->
sqlType
==
ALTER_TABLE_TAGS_ADD
||
pInfo
->
sqlType
==
ALTER_TABLE_TAGS_DROP
||
pInfo
->
sqlType
==
ALTER_TABLE_TAGS_CHG
)
{
if
(
UTIL_METER_IS_NOMRAL_METER
(
pCmd
))
{
c
har
msg
[]
=
"manipulation of tag available for metric"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"manipulation of tag available for metric"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
}
else
if
((
pInfo
->
sqlType
==
ALTER_TABLE_TAGS_SET
)
&&
(
UTIL_METER_IS_METRIC
(
pCmd
)))
{
c
har
msg
[]
=
"set tag value only available for table"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"set tag value only available for table"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
else
if
((
pInfo
->
sqlType
==
ALTER_TABLE_ADD_COLUMN
||
pInfo
->
sqlType
==
ALTER_TABLE_DROP_COLUMN
)
&&
UTIL_METER_IS_CREATE_FROM_METRIC
(
pCmd
))
{
c
har
msg
[]
=
"column can only be modified by metric"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"column can only be modified by metric"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3534,8 +3533,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tFieldList
*
pFieldList
=
pAlterSQL
->
pAddColumns
;
if
(
pFieldList
->
nField
>
1
)
{
c
har
msg
[]
=
"only support add one tag"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"only support add one tag"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3549,26 +3548,26 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
else
if
(
pInfo
->
sqlType
==
ALTER_TABLE_TAGS_DROP
)
{
pCmd
->
count
=
TSDB_ALTER_TABLE_DROP_TAG_COLUMN
;
c
har
msg1
[]
=
"no tags can be dropped"
;
c
har
msg2
[]
=
"only support one tag"
;
c
har
msg3
[]
=
"tag name too long"
;
c
har
msg4
[]
=
"illegal tag name"
;
c
har
msg5
[]
=
"primary tag cannot be dropped"
;
c
onst
char
*
msg1
=
"no tags can be dropped"
;
c
onst
char
*
msg2
=
"only support one tag"
;
c
onst
char
*
msg3
=
"tag name too long"
;
c
onst
char
*
msg4
=
"illegal tag name"
;
c
onst
char
*
msg5
=
"primary tag cannot be dropped"
;
if
(
pMeterMeta
->
numOfTags
==
1
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
// numOfTags == 1
if
(
pAlterSQL
->
varList
->
nExpr
>
1
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
tVariantListItem
*
pItem
=
&
pAlterSQL
->
varList
->
a
[
0
];
if
(
pItem
->
pVar
.
nLen
>
TSDB_COL_NAME_LEN
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3585,10 +3584,10 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
idx
==
-
1
)
{
setErrMsg
(
pCmd
,
msg4
,
tListLen
(
msg4
)
);
setErrMsg
(
pCmd
,
msg4
);
return
TSDB_CODE_INVALID_SQL
;
}
else
if
(
idx
==
0
)
{
setErrMsg
(
pCmd
,
msg5
,
tListLen
(
msg5
)
);
setErrMsg
(
pCmd
,
msg5
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3599,8 +3598,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
pCmd
->
numOfCols
=
1
;
// only one column
}
else
if
(
pInfo
->
sqlType
==
ALTER_TABLE_TAGS_CHG
)
{
c
har
msg1
[]
=
"tag name too long"
;
c
har
msg2
[]
=
"invalid tag name"
;
c
onst
char
*
msg1
=
"tag name too long"
;
c
onst
char
*
msg2
=
"invalid tag name"
;
pCmd
->
count
=
TSDB_ALTER_TABLE_CHANGE_TAG_COLUMN
;
tVariantList
*
pVarList
=
pAlterSQL
->
varList
;
...
...
@@ -3612,12 +3611,12 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tVariantListItem
*
pDstItem
=
&
pAlterSQL
->
varList
->
a
[
1
];
if
(
pSrcItem
->
pVar
.
nLen
>=
TSDB_COL_NAME_LEN
||
pDstItem
->
pVar
.
nLen
>=
TSDB_COL_NAME_LEN
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pSrcItem
->
pVar
.
nType
!=
TSDB_DATA_TYPE_BINARY
||
pDstItem
->
pVar
.
nType
!=
TSDB_DATA_TYPE_BINARY
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3639,8 +3638,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
((
!
srcFound
)
||
dstFound
)
{
c
har
msg
[]
=
"invalid tag name"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"invalid tag name"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3664,8 +3663,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tVariant
*
pTagName
=
&
pVarList
->
a
[
0
].
pVar
;
if
(
pTagName
->
nLen
>
TSDB_COL_NAME_LEN
)
{
c
har
msg
[]
=
"tag name too long"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"tag name too long"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3682,16 +3681,16 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
tagsIndex
==
-
1
)
{
c
har
msg
[]
=
"invalid tag name"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"invalid tag name"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
// validate the length of binary
if
(
pTagsSchema
[
tagsIndex
].
type
==
TSDB_DATA_TYPE_BINARY
&&
pVarList
->
a
[
1
].
pVar
.
nLen
>
pTagsSchema
[
tagsIndex
].
bytes
)
{
c
har
msg
[]
=
"tag value too long"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"tag value too long"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3705,8 +3704,8 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
tFieldList
*
pFieldList
=
pAlterSQL
->
pAddColumns
;
if
(
pFieldList
->
nField
>
1
)
{
c
har
msg
[]
=
"only support add one column"
;
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
c
onst
char
*
msg
=
"only support add one column"
;
setErrMsg
(
pCmd
,
msg
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3720,25 +3719,25 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
else
if
(
pInfo
->
sqlType
==
ALTER_TABLE_DROP_COLUMN
)
{
pCmd
->
count
=
TSDB_ALTER_TABLE_DROP_COLUMN
;
c
har
msg1
[]
=
"no columns can be dropped"
;
c
har
msg2
[]
=
"only support one column"
;
c
har
msg3
[]
=
"column name too long"
;
c
har
msg4
[]
=
"illegal column name"
;
c
har
msg5
[]
=
"primary timestamp column cannot be dropped"
;
c
onst
char
*
msg1
=
"no columns can be dropped"
;
c
onst
char
*
msg2
=
"only support one column"
;
c
onst
char
*
msg3
=
"column name too long"
;
c
onst
char
*
msg4
=
"illegal column name"
;
c
onst
char
*
msg5
=
"primary timestamp column cannot be dropped"
;
if
(
pMeterMeta
->
numOfColumns
==
TSDB_MIN_COLUMNS
)
{
//
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
if
(
pAlterSQL
->
varList
->
nExpr
>
1
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
tVariantListItem
*
pItem
=
&
pAlterSQL
->
varList
->
a
[
0
];
if
(
pItem
->
pVar
.
nLen
>
TSDB_COL_NAME_LEN
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3754,10 +3753,10 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
if
(
idx
==
-
1
)
{
setErrMsg
(
pCmd
,
msg4
,
tListLen
(
msg4
)
);
setErrMsg
(
pCmd
,
msg4
);
return
TSDB_CODE_INVALID_SQL
;
}
else
if
(
idx
==
0
)
{
setErrMsg
(
pCmd
,
msg5
,
tListLen
(
msg5
)
);
setErrMsg
(
pCmd
,
msg5
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3772,18 +3771,18 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
}
int32_t
validateSqlFunctionInStreamSql
(
SSqlCmd
*
pCmd
)
{
c
har
msg0
[]
=
"sample interval can not be less than 10ms."
;
c
har
msg1
[]
=
"functions not allowed in select clause"
;
c
onst
char
*
msg0
=
"sample interval can not be less than 10ms."
;
c
onst
char
*
msg1
=
"functions not allowed in select clause"
;
if
(
pCmd
->
nAggTimeInterval
!=
0
&&
pCmd
->
nAggTimeInterval
<
10
)
{
setErrMsg
(
pCmd
,
msg0
,
tListLen
(
msg0
)
);
setErrMsg
(
pCmd
,
msg0
);
return
TSDB_CODE_INVALID_SQL
;
}
for
(
int32_t
i
=
0
;
i
<
pCmd
->
fieldsInfo
.
numOfOutputCols
;
++
i
)
{
int32_t
functId
=
tscSqlExprGet
(
pCmd
,
i
)
->
sqlFuncId
;
if
(
!
IS_STREAM_QUERY_VALID
(
aAggs
[
functId
].
nStatus
))
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -3793,7 +3792,7 @@ int32_t validateSqlFunctionInStreamSql(SSqlCmd* pCmd) {
int32_t
validateFunctionsInIntervalOrGroupbyQuery
(
SSqlCmd
*
pCmd
)
{
bool
isProjectionFunction
=
false
;
c
har
msg
[]
=
"column projection is not compatible with interval"
;
c
onst
char
*
msg
=
"column projection is not compatible with interval"
;
// multi-output set/ todo refactor
for
(
int32_t
k
=
0
;
k
<
pCmd
->
fieldsInfo
.
numOfOutputCols
;
++
k
)
{
...
...
@@ -3804,7 +3803,7 @@ int32_t validateFunctionsInIntervalOrGroupbyQuery(SSqlCmd* pCmd) {
}
}
if
(
pCmd
->
metricQuery
==
0
||
isProjectionFunction
==
true
)
{
setErrMsg
(
pCmd
,
msg
,
tListLen
(
msg
)
);
setErrMsg
(
pCmd
,
msg
);
}
return
isProjectionFunction
==
true
?
TSDB_CODE_INVALID_SQL
:
TSDB_CODE_SUCCESS
;
...
...
@@ -3905,10 +3904,10 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) {
SSqlCmd
*
pCmd
=
&
pSql
->
cmd
;
bool
isMetric
=
UTIL_METER_IS_METRIC
(
pCmd
);
c
har
msg0
[]
=
"soffset can not be less than 0"
;
c
har
msg1
[]
=
"offset can not be less than 0"
;
c
har
msg2
[]
=
"slimit/soffset only available for STable query"
;
c
har
msg3
[]
=
"function not supported on table"
;
c
onst
char
*
msg0
=
"soffset can not be less than 0"
;
c
onst
char
*
msg1
=
"offset can not be less than 0"
;
c
onst
char
*
msg2
=
"slimit/soffset only available for STable query"
;
c
onst
char
*
msg3
=
"function not supported on table"
;
// handle the limit offset value, validate the limit
pCmd
->
limit
=
pQuerySql
->
limit
;
...
...
@@ -3932,7 +3931,7 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) {
}
if
(
pCmd
->
glimit
.
offset
<
0
)
{
setErrMsg
(
pCmd
,
msg0
,
tListLen
(
msg0
)
);
setErrMsg
(
pCmd
,
msg0
);
return
TSDB_CODE_INVALID_SQL
;
}
...
...
@@ -3961,14 +3960,14 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) {
pCmd
->
globalLimit
=
pCmd
->
limit
.
limit
;
}
else
{
if
(
pCmd
->
glimit
.
limit
!=
-
1
||
pCmd
->
glimit
.
offset
!=
0
)
{
setErrMsg
(
pCmd
,
msg2
,
tListLen
(
msg2
)
);
setErrMsg
(
pCmd
,
msg2
);
return
TSDB_CODE_INVALID_SQL
;
}
for
(
int32_t
i
=
0
;
i
<
pCmd
->
fieldsInfo
.
numOfOutputCols
;
++
i
)
{
SSqlExpr
*
pExpr
=
tscSqlExprGet
(
pCmd
,
i
);
if
(
pExpr
->
colInfo
.
colIdx
==
-
1
)
{
setErrMsg
(
pCmd
,
msg3
,
tListLen
(
msg3
)
);
setErrMsg
(
pCmd
,
msg3
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -3979,7 +3978,7 @@ int32_t setLimitOffsetValueInfo(SSqlObj* pSql, SQuerySQL* pQuerySql) {
}
if
(
pCmd
->
limit
.
offset
<
0
)
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -4008,8 +4007,8 @@ static void setCreateDBOption(SCreateDbMsg* pMsg, SCreateDBInfo* pCreateDb) {
}
int32_t
parseCreateDBOptions
(
SCreateDBInfo
*
pCreateDbSql
,
SSqlCmd
*
pCmd
)
{
c
har
msg0
[]
=
"invalid number of options"
;
c
har
msg1
[]
=
"invalid time precision"
;
c
onst
char
*
msg0
=
"invalid number of options"
;
c
onst
char
*
msg1
=
"invalid time precision"
;
SCreateDbMsg
*
pMsg
=
(
SCreateDbMsg
*
)
(
pCmd
->
payload
+
tsRpcHeadSize
+
sizeof
(
SMgmtHead
));
setCreateDBOption
(
pMsg
,
pCreateDbSql
);
...
...
@@ -4031,7 +4030,7 @@ int32_t parseCreateDBOptions(SCreateDBInfo* pCreateDbSql, SSqlCmd* pCmd) {
break
;
}
default:
{
setErrMsg
(
pCmd
,
msg0
,
tListLen
(
msg0
)
);
setErrMsg
(
pCmd
,
msg0
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
@@ -4049,7 +4048,7 @@ int32_t parseCreateDBOptions(SCreateDBInfo* pCreateDbSql, SSqlCmd* pCmd) {
strlen
(
TSDB_TIME_PRECISION_MICRO_STR
)
==
pToken
->
n
)
{
pMsg
->
precision
=
TSDB_TIME_PRECISION_MICRO
;
}
else
{
setErrMsg
(
pCmd
,
msg1
,
tListLen
(
msg1
)
);
setErrMsg
(
pCmd
,
msg1
);
return
TSDB_CODE_INVALID_SQL
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录