Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
2a395670
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看板
提交
2a395670
编写于
9月 09, 2020
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[td-1369]
上级
fb25b058
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
475 addition
and
339 deletion
+475
-339
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+24
-13
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+3
-2
src/inc/taoserror.h
src/inc/taoserror.h
+1
-1
src/query/inc/qAst.h
src/query/inc/qAst.h
+1
-0
src/query/inc/sql.y
src/query/inc/sql.y
+40
-40
src/query/src/qAst.c
src/query/src/qAst.c
+27
-9
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+1
-4
src/query/src/qFilterfunc.c
src/query/src/qFilterfunc.c
+81
-0
src/query/src/qParserImpl.c
src/query/src/qParserImpl.c
+5
-0
src/query/src/sql.c
src/query/src/sql.c
+279
-269
src/tsdb/src/tsdbRead.c
src/tsdb/src/tsdbRead.c
+13
-1
未找到文件。
src/client/src/tscSQLParser.c
浏览文件 @
2a395670
...
...
@@ -2784,6 +2784,12 @@ static int32_t doExtractColumnFilterInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo,
case
TK_LIKE
:
pColumnFilter
->
lowerRelOptr
=
TSDB_RELATION_LIKE
;
break
;
case
TK_ISNULL
:
pColumnFilter
->
lowerRelOptr
=
TSDB_RELATION_ISNULL
;
break
;
case
TK_NOTNULL
:
pColumnFilter
->
lowerRelOptr
=
TSDB_RELATION_NOTNULL
;
break
;
default:
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg
);
}
...
...
@@ -2829,19 +2835,19 @@ static int32_t tSQLExprNodeToString(tSQLExpr* pExpr, char** str) {
return
TSDB_CODE_SUCCESS
;
}
// pExpr->nSQLOptr == 0 while handling "is null" query
static
bool
isExprLeafNode
(
tSQLExpr
*
pExpr
)
{
return
(
pExpr
->
pRight
==
NULL
&&
pExpr
->
pLeft
==
NULL
)
&&
(
pExpr
->
nSQLOptr
==
TK_ID
||
(
pExpr
->
nSQLOptr
>=
TK_BOOL
&&
pExpr
->
nSQLOptr
<=
TK_NCHAR
)
||
pExpr
->
nSQLOptr
==
TK_SET
);
(
pExpr
->
nSQLOptr
==
0
||
pExpr
->
nSQLOptr
==
TK_ID
||
(
pExpr
->
nSQLOptr
>=
TK_BOOL
&&
pExpr
->
nSQLOptr
<=
TK_NCHAR
)
||
pExpr
->
nSQLOptr
==
TK_SET
);
}
static
bool
isExprDirectParentOfLeaf
t
Node
(
tSQLExpr
*
pExpr
)
{
static
bool
isExprDirectParentOfLeafNode
(
tSQLExpr
*
pExpr
)
{
return
(
pExpr
->
pLeft
!=
NULL
&&
pExpr
->
pRight
!=
NULL
)
&&
(
isExprLeafNode
(
pExpr
->
pLeft
)
&&
isExprLeafNode
(
pExpr
->
pRight
));
}
static
int32_t
tSQLExprLeafToString
(
tSQLExpr
*
pExpr
,
bool
addParentheses
,
char
**
output
)
{
if
(
!
isExprDirectParentOfLeaf
t
Node
(
pExpr
))
{
if
(
!
isExprDirectParentOfLeafNode
(
pExpr
))
{
return
TSDB_CODE_TSC_INVALID_SQL
;
}
...
...
@@ -3052,7 +3058,7 @@ static int32_t getTagCondString(tSQLExpr* pExpr, char** str) {
return
TSDB_CODE_SUCCESS
;
}
if
(
!
isExprDirectParentOfLeaf
t
Node
(
pExpr
))
{
if
(
!
isExprDirectParentOfLeafNode
(
pExpr
))
{
*
(
*
str
)
=
'('
;
*
str
+=
1
;
...
...
@@ -3108,7 +3114,7 @@ static int32_t getColumnQueryCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSQ
return
TSDB_CODE_SUCCESS
;
}
if
(
!
isExprDirectParentOfLeaf
t
Node
(
pExpr
))
{
// internal node
if
(
!
isExprDirectParentOfLeafNode
(
pExpr
))
{
// internal node
int32_t
ret
=
getColumnQueryCondInfo
(
pCmd
,
pQueryInfo
,
pExpr
->
pLeft
,
pExpr
->
nSQLOptr
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
...
...
@@ -3134,7 +3140,7 @@ static int32_t getJoinCondInfo(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSQLExpr*
return
TSDB_CODE_SUCCESS
;
}
if
(
!
isExprDirectParentOfLeaf
t
Node
(
pExpr
))
{
if
(
!
isExprDirectParentOfLeafNode
(
pExpr
))
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
}
...
...
@@ -3453,7 +3459,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSQL
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg2
);
}
assert
(
isExprDirectParentOfLeaf
t
Node
(
*
pExpr
));
assert
(
isExprDirectParentOfLeafNode
(
*
pExpr
));
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
index
.
tableIndex
);
STableMeta
*
pTableMeta
=
pTableMetaInfo
->
pTableMeta
;
...
...
@@ -3499,7 +3505,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSQL
}
}
// in case of in operator, keep it in a sep
e
rate attribute
// in case of in operator, keep it in a seprate attribute
if
(
index
.
columnIndex
==
TSDB_TBNAME_COLUMN_INDEX
)
{
if
(
!
validTableNameOptr
(
*
pExpr
))
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg7
);
...
...
@@ -3520,7 +3526,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSQL
*
type
=
TSQL_EXPR_TBNAME
;
*
pExpr
=
NULL
;
}
else
{
if
(
pRight
->
nSQLOptr
==
TK_ID
)
{
// join on tag columns for stable query
if
(
pRight
!=
NULL
&&
pRight
->
nSQLOptr
==
TK_ID
)
{
// join on tag columns for stable query
if
(
!
validateJoinExprNode
(
pCmd
,
pQueryInfo
,
*
pExpr
,
&
index
))
{
return
TSDB_CODE_TSC_INVALID_SQL
;
}
...
...
@@ -3573,7 +3579,7 @@ int32_t getQueryCondExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSQLExpr** pExpr
int32_t
leftType
=
-
1
;
int32_t
rightType
=
-
1
;
if
(
!
isExprDirectParentOfLeaf
t
Node
(
*
pExpr
))
{
if
(
!
isExprDirectParentOfLeafNode
(
*
pExpr
))
{
int32_t
ret
=
getQueryCondExpr
(
pCmd
,
pQueryInfo
,
&
(
*
pExpr
)
->
pLeft
,
pCondExpr
,
&
leftType
,
(
*
pExpr
)
->
nSQLOptr
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
...
...
@@ -3635,7 +3641,7 @@ static void doCompactQueryExpr(tSQLExpr** pExpr) {
}
static
void
doExtractExprForSTable
(
SSqlCmd
*
pCmd
,
tSQLExpr
**
pExpr
,
SQueryInfo
*
pQueryInfo
,
tSQLExpr
**
pOut
,
int32_t
tableIndex
)
{
if
(
isExprDirectParentOfLeaf
t
Node
(
*
pExpr
))
{
if
(
isExprDirectParentOfLeafNode
(
*
pExpr
))
{
tSQLExpr
*
pLeft
=
(
*
pExpr
)
->
pLeft
;
SColumnIndex
index
=
COLUMN_INDEX_INITIALIZER
;
...
...
@@ -3794,7 +3800,7 @@ static int32_t getTimeRangeFromExpr(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSQLE
return
TSDB_CODE_SUCCESS
;
}
if
(
!
isExprDirectParentOfLeaf
t
Node
(
pExpr
))
{
if
(
!
isExprDirectParentOfLeafNode
(
pExpr
))
{
if
(
pExpr
->
nSQLOptr
==
TK_OR
)
{
return
invalidSqlErrMsg
(
tscGetErrorMsgPayload
(
pCmd
),
msg1
);
}
...
...
@@ -6215,6 +6221,11 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSQLExpr* pS
return
ret
;
}
}
if
(
pSqlExpr
->
pLeft
==
NULL
&&
pSqlExpr
->
pRight
==
NULL
&&
pSqlExpr
->
nSQLOptr
==
0
)
{
*
pExpr
=
calloc
(
1
,
sizeof
(
tExprNode
));
return
TSDB_CODE_SUCCESS
;
}
if
(
pSqlExpr
->
pLeft
==
NULL
)
{
if
(
pSqlExpr
->
nSQLOptr
>=
TK_BOOL
&&
pSqlExpr
->
nSQLOptr
<=
TK_STRING
)
{
...
...
src/client/src/tscUtil.c
浏览文件 @
2a395670
...
...
@@ -1531,9 +1531,10 @@ void tscInitQueryInfo(SQueryInfo* pQueryInfo) {
pQueryInfo
->
fieldsInfo
.
pSupportInfo
=
taosArrayInit
(
4
,
sizeof
(
SFieldSupInfo
));
assert
(
pQueryInfo
->
exprList
==
NULL
);
pQueryInfo
->
exprList
=
taosArrayInit
(
4
,
POINTER_BYTES
);
pQueryInfo
->
colList
=
taosArrayInit
(
4
,
POINTER_BYTES
);
pQueryInfo
->
exprList
=
taosArrayInit
(
4
,
POINTER_BYTES
);
pQueryInfo
->
colList
=
taosArrayInit
(
4
,
POINTER_BYTES
);
pQueryInfo
->
udColumnId
=
TSDB_UD_COLUMN_INDEX
;
pQueryInfo
->
window
=
TSWINDOW_INITIALIZER
;
}
int32_t
tscAddSubqueryInfo
(
SSqlCmd
*
pCmd
)
{
...
...
src/inc/taoserror.h
浏览文件 @
2a395670
...
...
@@ -98,7 +98,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_TSC_ACTION_IN_PROGRESS, 0, 0x0212, "Action in
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_DISCONNECTED
,
0
,
0x0213
,
"Disconnected from service"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_NO_WRITE_AUTH
,
0
,
0x0214
,
"No write permission"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_CONN_KILLED
,
0
,
0x0215
,
"Connection killed"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_SQL_SYNTAX_ERROR
,
0
,
0x0216
,
"Syntax errr in SQL"
)
TAOS_DEFINE_ERROR
(
TSDB_CODE_TSC_SQL_SYNTAX_ERROR
,
0
,
0x0216
,
"Syntax err
o
r in SQL"
)
// mnode
TAOS_DEFINE_ERROR
(
TSDB_CODE_MND_MSG_NOT_PROCESSED
,
0
,
0x0300
,
"Message not processed"
)
...
...
src/query/inc/qAst.h
浏览文件 @
2a395670
...
...
@@ -32,6 +32,7 @@ struct tExprNode;
struct
SSchema
;
enum
{
TSQL_NODE_DUMMY
=
0x0
,
TSQL_NODE_EXPR
=
0x1
,
TSQL_NODE_COL
=
0x2
,
TSQL_NODE_VALUE
=
0x4
,
...
...
src/query/inc/sql.y
浏览文件 @
2a395670
...
...
@@ -567,53 +567,53 @@ where_opt(A) ::= WHERE expr(X). {A = X;}
%type expr {tSQLExpr*}
%destructor expr {tSQLExprDestroy($$);}
expr(A) ::= LP expr(X) RP. {A = X; }
expr(A) ::= LP expr(X) RP.
{A = X; }
expr(A) ::= ID(X). {A = tSQLExprIdValueCreate(&X, TK_ID);}
expr(A) ::= ID(X) DOT ID(Y). {X.n += (1+Y.n); A = tSQLExprIdValueCreate(&X, TK_ID);}
expr(A) ::= ID(X) DOT STAR(Y). {X.n += (1+Y.n); A = tSQLExprIdValueCreate(&X, TK_ALL);}
expr(A) ::= ID(X).
{A = tSQLExprIdValueCreate(&X, TK_ID);}
expr(A) ::= ID(X) DOT ID(Y).
{X.n += (1+Y.n); A = tSQLExprIdValueCreate(&X, TK_ID);}
expr(A) ::= ID(X) DOT STAR(Y).
{X.n += (1+Y.n); A = tSQLExprIdValueCreate(&X, TK_ALL);}
expr(A) ::= INTEGER(X). {A = tSQLExprIdValueCreate(&X, TK_INTEGER);}
expr(A) ::= INTEGER(X).
{A = tSQLExprIdValueCreate(&X, TK_INTEGER);}
expr(A) ::= MINUS(X) INTEGER(Y). {X.n += Y.n; X.type = TK_INTEGER; A = tSQLExprIdValueCreate(&X, TK_INTEGER);}
expr(A) ::= PLUS(X) INTEGER(Y). {X.n += Y.n; X.type = TK_INTEGER; A = tSQLExprIdValueCreate(&X, TK_INTEGER);}
expr(A) ::= FLOAT(X). {A = tSQLExprIdValueCreate(&X, TK_FLOAT);}
expr(A) ::= MINUS(X) FLOAT(Y).
{X.n += Y.n; X.type = TK_FLOAT; A = tSQLExprIdValueCreate(&X, TK_FLOAT);}
expr(A) ::= PLUS(X) FLOAT(Y).
{X.n += Y.n; X.type = TK_FLOAT; A = tSQLExprIdValueCreate(&X, TK_FLOAT);}
expr(A) ::= STRING(X). {A = tSQLExprIdValueCreate(&X, TK_STRING);}
expr(A) ::= NOW(X). {A = tSQLExprIdValueCreate(&X, TK_NOW); }
expr(A) ::= VARIABLE(X). {A = tSQLExprIdValueCreate(&X, TK_VARIABLE);}
expr(A) ::= BOOL(X). {A = tSQLExprIdValueCreate(&X, TK_BOOL);}
// normal functions: min(x)
expr(A) ::= ID(X) LP exprlist(Y) RP(E). {
A = tSQLExprCreateFunction(Y, &X, &E, X.type);
}
// this is for: count(*)/first(*)/last(*) operation
expr(A) ::= ID(X) LP STAR RP(Y). {
A = tSQLExprCreateFunction(NULL, &X, &Y, X.type);
}
//binary expression: a+2, b+3
expr(A) ::= expr(X) AND expr(Y). {A = tSQLExprCreate(X, Y, TK_AND);}
expr(A) ::= expr(X)
OR expr(Y). {A = tSQLExprCreate(X, Y, TK_OR);
}
//binary relational expression
expr(A) ::= expr(X)
LT expr(Y). {A = tSQLExprCreate(X, Y, TK_LT
);}
expr(A) ::= expr(X)
GT expr(Y). {A = tSQLExprCreate(X, Y, TK_GT
);}
expr(A) ::= expr(X)
LE expr(Y). {A = tSQLExprCreate(X, Y, TK_LE
);}
expr(A) ::= expr(X) GE expr(Y). {A = tSQLExprCreate(X, Y, TK_GE);}
expr(A) ::= expr(X)
NE expr(Y). {A = tSQLExprCreate(X, Y, TK_NE
);}
expr(A) ::= expr(X)
EQ expr(Y). {A = tSQLExprCreate(X, Y, TK_EQ);
}
//binary arithmetic expression
expr(A) ::= FLOAT(X).
{A = tSQLExprIdValueCreate(&X, TK_FLOAT);}
expr(A) ::= MINUS(X) FLOAT(Y). {X.n += Y.n; X.type = TK_FLOAT; A = tSQLExprIdValueCreate(&X, TK_FLOAT);}
expr(A) ::= PLUS(X) FLOAT(Y). {X.n += Y.n; X.type = TK_FLOAT; A = tSQLExprIdValueCreate(&X, TK_FLOAT);}
expr(A) ::= STRING(X).
{A = tSQLExprIdValueCreate(&X, TK_STRING);}
expr(A) ::= NOW(X).
{A = tSQLExprIdValueCreate(&X, TK_NOW); }
expr(A) ::= VARIABLE(X).
{A = tSQLExprIdValueCreate(&X, TK_VARIABLE);}
expr(A) ::= BOOL(X).
{A = tSQLExprIdValueCreate(&X, TK_BOOL);}
// ordinary functions: min(x), max(x), top(k, 20)
expr(A) ::= ID(X) LP exprlist(Y) RP(E). { A = tSQLExprCreateFunction(Y, &X, &E, X.type); }
// for parsing sql functions with wildcard for parameters. e.g., count(*)/first(*)/last(*) operation
expr(A) ::= ID(X) LP STAR RP(Y). { A = tSQLExprCreateFunction(NULL, &X, &Y, X.type); }
// is (not) null expression
expr(A) ::= expr(X) IS NULL. {A = tSQLExprCreate(X, NULL, TK_ISNULL);
}
expr(A) ::= expr(X) IS NOT NULL. {A = tSQLExprCreate(X, NULL, TK_NOTNULL);}
// relational expression
expr(A) ::= expr(X)
LT expr(Y). {A = tSQLExprCreate(X, Y, TK_LT);
}
expr(A) ::= expr(X) GT expr(Y). {A = tSQLExprCreate(X, Y, TK_GT);}
expr(A) ::= expr(X) LE expr(Y). {A = tSQLExprCreate(X, Y, TK_LE);}
expr(A) ::= expr(X)
GE expr(Y). {A = tSQLExprCreate(X, Y, TK_GE
);}
expr(A) ::= expr(X)
NE expr(Y). {A = tSQLExprCreate(X, Y, TK_NE
);}
expr(A) ::= expr(X)
EQ expr(Y). {A = tSQLExprCreate(X, Y, TK_EQ
);}
expr(A) ::= expr(X)
AND expr(Y). {A = tSQLExprCreate(X, Y, TK_AND
);}
expr(A) ::= expr(X)
OR expr(Y). {A = tSQLExprCreate(X, Y, TK_OR);
}
//
binary arithmetic expression
expr(A) ::= expr(X) PLUS expr(Y). {A = tSQLExprCreate(X, Y, TK_PLUS); }
expr(A) ::= expr(X) MINUS expr(Y). {A = tSQLExprCreate(X, Y, TK_MINUS); }
expr(A) ::= expr(X) STAR expr(Y). {A = tSQLExprCreate(X, Y, TK_STAR); }
expr(A) ::= expr(X) SLASH expr(Y). {A = tSQLExprCreate(X, Y, TK_DIVIDE);}
expr(A) ::= expr(X) REM expr(Y). {A = tSQLExprCreate(X, Y, TK_REM); }
//like expression
expr(A) ::= expr(X) LIKE
expr(Y).
{A = tSQLExprCreate(X, Y, TK_LIKE); }
//
like expression
expr(A) ::= expr(X) LIKE
expr(Y).
{A = tSQLExprCreate(X, Y, TK_LIKE); }
//in expression
expr(A) ::= expr(X) IN LP exprlist(Y) RP. {A = tSQLExprCreate(X, (tSQLExpr*)Y, TK_IN); }
...
...
@@ -625,9 +625,9 @@ expr(A) ::= expr(X) IN LP exprlist(Y) RP. {A = tSQLExprCreate(X, (tSQLExpr*)Y,
%destructor expritem {tSQLExprDestroy($$);}
exprlist(A) ::= exprlist(X) COMMA expritem(Y). {A = tSQLExprListAppend(X,Y,0);}
exprlist(A) ::= expritem(X). {A = tSQLExprListAppend(0,X,0);}
expritem(A) ::= expr(X). {A = X;}
expritem(A) ::= . {A = 0;}
exprlist(A) ::= expritem(X).
{A = tSQLExprListAppend(0,X,0);}
expritem(A) ::= expr(X).
{A = X;}
expritem(A) ::= .
{A = 0;}
///////////////////////////////////reset query cache//////////////////////////////////////
cmd ::= RESET QUERY CACHE. { setDCLSQLElems(pInfo, TSDB_SQL_RESET_CACHE, 0);}
...
...
src/query/src/qAst.c
浏览文件 @
2a395670
...
...
@@ -188,6 +188,10 @@ uint8_t getBinaryExprOptr(SStrToken *pToken) {
return
TSDB_BINARY_OP_REMAINDER
;
case
TK_LIKE
:
return
TSDB_RELATION_LIKE
;
case
TK_ISNULL
:
return
TSDB_RELATION_ISNULL
;
case
TK_NOTNULL
:
return
TSDB_RELATION_NOTNULL
;
default:
{
return
0
;
}
}
}
...
...
@@ -486,29 +490,42 @@ static void tQueryIndexColumn(SSkipList* pSkipList, tQueryInfo* pQueryInfo, SArr
}
else
{
int32_t
optr
=
cond
.
end
?
cond
.
end
->
optr
:
TSDB_RELATION_INVALID
;
if
(
optr
==
TSDB_RELATION_LESS
||
optr
==
TSDB_RELATION_LESS_EQUAL
)
{
bool
comp
=
true
;
bool
comp
=
true
;
int32_t
ret
=
0
;
while
(
tSkipListIterNext
(
iter
))
{
SSkipListNode
*
pNode
=
tSkipListIterGet
(
iter
);
while
(
tSkipListIterNext
(
iter
))
{
SSkipListNode
*
pNode
=
tSkipListIterGet
(
iter
);
if
(
comp
)
{
ret
=
pQueryInfo
->
compare
(
SL_GET_NODE_KEY
(
pSkipList
,
pNode
),
cond
.
end
->
v
);
assert
(
ret
<=
0
);
}
if
(
ret
==
0
&&
optr
==
TSDB_RELATION_LESS
)
{
continue
;
}
else
{
STableKeyInfo
info
=
{.
pTable
=
*
(
void
**
)
SL_GET_NODE_DATA
(
pNode
),
.
lastKey
=
TSKEY_INITIAL_VAL
};
STableKeyInfo
info
=
{.
pTable
=
*
(
void
**
)
SL_GET_NODE_DATA
(
pNode
),
.
lastKey
=
TSKEY_INITIAL_VAL
};
taosArrayPush
(
result
,
&
info
);
comp
=
false
;
// no need to compare anymore
}
}
}
else
{
assert
(
pQueryInfo
->
optr
==
TSDB_RELATION_ISNULL
||
pQueryInfo
->
optr
==
TSDB_RELATION_NOTNULL
);
while
(
tSkipListIterNext
(
iter
))
{
SSkipListNode
*
pNode
=
tSkipListIterGet
(
iter
);
bool
isnull
=
isNull
(
SL_GET_NODE_KEY
(
pSkipList
,
pNode
),
pQueryInfo
->
sch
.
type
);
if
((
pQueryInfo
->
optr
==
TSDB_RELATION_ISNULL
&&
isnull
)
||
(
pQueryInfo
->
optr
==
TSDB_RELATION_NOTNULL
&&
(
!
isnull
)))
{
STableKeyInfo
info
=
{.
pTable
=
*
(
void
**
)
SL_GET_NODE_DATA
(
pNode
),
.
lastKey
=
TSKEY_INITIAL_VAL
};
taosArrayPush
(
result
,
&
info
);
}
}
}
}
free
(
cond
.
start
);
free
(
cond
.
start
);
free
(
cond
.
end
);
tSkipListDestroyIter
(
iter
);
}
...
...
@@ -683,6 +700,7 @@ static void tQueryIndexlessColumn(SSkipList* pSkipList, tQueryInfo* pQueryInfo,
char
*
pData
=
SL_GET_NODE_DATA
(
pNode
);
tstr
*
name
=
(
tstr
*
)
tsdbGetTableName
(
*
(
void
**
)
pData
);
// todo speed up by using hash
if
(
pQueryInfo
->
sch
.
colId
==
TSDB_TBNAME_COLUMN_INDEX
)
{
if
(
pQueryInfo
->
optr
==
TSDB_RELATION_IN
)
{
...
...
@@ -714,7 +732,7 @@ void tExprTreeTraverse(tExprNode *pExpr, SSkipList *pSkipList, SArray *result, S
// column project
if
(
pLeft
->
nodeType
!=
TSQL_NODE_EXPR
&&
pRight
->
nodeType
!=
TSQL_NODE_EXPR
)
{
assert
(
pLeft
->
nodeType
==
TSQL_NODE_COL
&&
pRight
->
nodeType
==
TSQL_NODE_VALUE
);
assert
(
pLeft
->
nodeType
==
TSQL_NODE_COL
&&
(
pRight
->
nodeType
==
TSQL_NODE_VALUE
||
pRight
->
nodeType
==
TSQL_NODE_DUMMY
)
);
param
->
setupInfoFn
(
pExpr
,
param
->
pExtInfo
);
if
(
pSkipList
==
NULL
)
{
...
...
src/query/src/qExecutor.c
浏览文件 @
2a395670
...
...
@@ -200,9 +200,6 @@ bool doFilterData(SQuery *pQuery, int32_t elemPos) {
SSingleColumnFilterInfo
*
pFilterInfo
=
&
pQuery
->
pFilterInfo
[
k
];
char
*
pElem
=
(
char
*
)
pFilterInfo
->
pData
+
pFilterInfo
->
info
.
bytes
*
elemPos
;
if
(
isNull
(
pElem
,
pFilterInfo
->
info
.
type
))
{
return
false
;
}
bool
qualified
=
false
;
for
(
int32_t
j
=
0
;
j
<
pFilterInfo
->
numOfFilters
;
++
j
)
{
...
...
@@ -1002,7 +999,7 @@ static void blockwiseApplyFunctions(SQueryRuntimeEnv *pRuntimeEnv, SDataStatis *
}
int32_t
step
=
GET_FORWARD_DIRECTION_FACTOR
(
pQuery
->
order
.
order
);
if
(
QUERY_IS_INTERVAL_QUERY
(
pQuery
)
/* && tsCols != NULL*/
)
{
if
(
QUERY_IS_INTERVAL_QUERY
(
pQuery
))
{
TSKEY
ts
=
TSKEY_INITIAL_VAL
;
if
(
tsCols
==
NULL
)
{
...
...
src/query/src/qFilterfunc.c
浏览文件 @
2a395670
...
...
@@ -284,6 +284,71 @@ bool nequal_nchar(SColumnFilterElem *pFilter, char* minval, char *maxval) {
return
wcsncmp
((
wchar_t
*
)
pFilter
->
filterInfo
.
pz
,
varDataVal
(
minval
),
varDataLen
(
minval
)
/
TSDB_NCHAR_SIZE
)
!=
0
;
}
////////////////////////////////////////////////////////////////
bool
isNull_i8
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
isNull
(
minval
,
TSDB_DATA_TYPE_TINYINT
);
}
bool
isNull_i16
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
isNull
(
minval
,
TSDB_DATA_TYPE_SMALLINT
);
}
bool
isNull_i32
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
isNull
(
minval
,
TSDB_DATA_TYPE_INT
);
}
bool
isNull_i64
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
isNull
(
minval
,
TSDB_DATA_TYPE_BIGINT
);
}
bool
isNull_ds
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
isNull
(
minval
,
TSDB_DATA_TYPE_FLOAT
);
}
bool
isNull_dd
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
isNull
(
minval
,
TSDB_DATA_TYPE_DOUBLE
);
}
bool
isNull_binary
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
isNull
(
minval
,
TSDB_DATA_TYPE_BINARY
);
}
bool
isNull_nchar
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
isNull
(
minval
,
TSDB_DATA_TYPE_NCHAR
);
}
////////////////////////////////////////////////////////////////
bool
notNull_i8
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
!
isNull
(
minval
,
TSDB_DATA_TYPE_TINYINT
);
}
bool
notNull_i16
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
!
isNull
(
minval
,
TSDB_DATA_TYPE_SMALLINT
);
}
bool
notNull_i32
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
!
isNull
(
minval
,
TSDB_DATA_TYPE_INT
);
}
bool
notNull_i64
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
!
isNull
(
minval
,
TSDB_DATA_TYPE_BIGINT
);
}
bool
notNull_ds
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
!
isNull
(
minval
,
TSDB_DATA_TYPE_FLOAT
);
}
bool
notNull_dd
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
isNull
(
minval
,
TSDB_DATA_TYPE_DOUBLE
);
}
bool
notNull_binary
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
!
isNull
(
minval
,
TSDB_DATA_TYPE_BINARY
);
}
bool
notNull_nchar
(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
{
return
!
isNull
(
minval
,
TSDB_DATA_TYPE_NCHAR
);
}
////////////////////////////////////////////////////////////////
...
...
@@ -398,6 +463,8 @@ bool (*filterFunc_i8[])(SColumnFilterElem *pFilter, char *minval, char *maxval)
largeEqual_i8
,
nequal_i8
,
NULL
,
isNull_i8
,
notNull_i8
,
};
bool
(
*
filterFunc_i16
[])(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
=
{
...
...
@@ -409,6 +476,8 @@ bool (*filterFunc_i16[])(SColumnFilterElem *pFilter, char *minval, char *maxval)
largeEqual_i16
,
nequal_i16
,
NULL
,
isNull_i16
,
notNull_i16
,
};
bool
(
*
filterFunc_i32
[])(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
=
{
...
...
@@ -420,6 +489,8 @@ bool (*filterFunc_i32[])(SColumnFilterElem *pFilter, char *minval, char *maxval)
largeEqual_i32
,
nequal_i32
,
NULL
,
isNull_i32
,
notNull_i32
,
};
bool
(
*
filterFunc_i64
[])(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
=
{
...
...
@@ -431,6 +502,8 @@ bool (*filterFunc_i64[])(SColumnFilterElem *pFilter, char *minval, char *maxval)
largeEqual_i64
,
nequal_i64
,
NULL
,
isNull_i64
,
notNull_i64
,
};
bool
(
*
filterFunc_ds
[])(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
=
{
...
...
@@ -442,6 +515,8 @@ bool (*filterFunc_ds[])(SColumnFilterElem *pFilter, char *minval, char *maxval)
largeEqual_ds
,
nequal_ds
,
NULL
,
isNull_ds
,
notNull_ds
,
};
bool
(
*
filterFunc_dd
[])(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
=
{
...
...
@@ -453,6 +528,8 @@ bool (*filterFunc_dd[])(SColumnFilterElem *pFilter, char *minval, char *maxval)
largeEqual_dd
,
nequal_dd
,
NULL
,
isNull_dd
,
notNull_dd
,
};
bool
(
*
filterFunc_str
[])(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
=
{
...
...
@@ -464,6 +541,8 @@ bool (*filterFunc_str[])(SColumnFilterElem* pFilter, char* minval, char *maxval)
NULL
,
nequal_str
,
like_str
,
isNull_binary
,
notNull_binary
,
};
bool
(
*
filterFunc_nchar
[])(
SColumnFilterElem
*
pFitler
,
char
*
minval
,
char
*
maxval
)
=
{
...
...
@@ -475,6 +554,8 @@ bool (*filterFunc_nchar[])(SColumnFilterElem* pFitler, char* minval, char* maxva
NULL
,
nequal_nchar
,
like_nchar
,
isNull_nchar
,
notNull_nchar
,
};
bool
(
*
rangeFilterFunc_i8
[])(
SColumnFilterElem
*
pFilter
,
char
*
minval
,
char
*
maxval
)
=
{
...
...
src/query/src/qParserImpl.c
浏览文件 @
2a395670
...
...
@@ -275,6 +275,11 @@ tSQLExpr *tSQLExprCreate(tSQLExpr *pLeft, tSQLExpr *pRight, int32_t optrType) {
}
else
{
pExpr
->
nSQLOptr
=
optrType
;
pExpr
->
pLeft
=
pLeft
;
if
(
pRight
==
NULL
)
{
pRight
=
calloc
(
1
,
sizeof
(
tSQLExpr
));
}
pExpr
->
pRight
=
pRight
;
}
...
...
src/query/src/sql.c
浏览文件 @
2a395670
...
...
@@ -126,17 +126,17 @@ typedef union {
#define ParseARG_FETCH SSqlInfo* pInfo = yypParser->pInfo
#define ParseARG_STORE yypParser->pInfo = pInfo
#define YYFALLBACK 1
#define YYNSTATE 24
4
#define YYNRULE 22
5
#define YYNSTATE 24
6
#define YYNRULE 22
7
#define YYNTOKEN 206
#define YY_MAX_SHIFT 24
3
#define YY_MIN_SHIFTREDUCE 40
3
#define YY_MAX_SHIFTREDUCE 6
27
#define YY_ERROR_ACTION 6
28
#define YY_ACCEPT_ACTION 6
29
#define YY_NO_ACTION 63
0
#define YY_MIN_REDUCE 63
1
#define YY_MAX_REDUCE 8
55
#define YY_MAX_SHIFT 24
5
#define YY_MIN_SHIFTREDUCE 40
7
#define YY_MAX_SHIFTREDUCE 6
33
#define YY_ERROR_ACTION 6
34
#define YY_ACCEPT_ACTION 6
35
#define YY_NO_ACTION 63
6
#define YY_MIN_REDUCE 63
7
#define YY_MAX_REDUCE 8
63
/************* End control #defines *******************************************/
/* Define the yytestcase() macro to be a no-op if is not already defined
...
...
@@ -202,121 +202,122 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (5
49
)
#define YY_ACTTAB_COUNT (5
56
)
static
const
YYACTIONTYPE
yy_action
[]
=
{
/* 0 */
731
,
444
,
221
,
729
,
730
,
629
,
243
,
510
,
732
,
445
,
/* 10 */
734
,
735
,
733
,
41
,
43
,
526
,
35
,
36
,
523
,
11
,
/* 20 */
524
,
29
,
525
,
444
,
199
,
39
,
37
,
40
,
38
,
155
,
/* 30 */
241
,
445
,
748
,
34
,
33
,
219
,
218
,
32
,
31
,
30
,
/* 40 */
41
,
43
,
761
,
35
,
36
,
136
,
172
,
173
,
29
,
137
,
/* 50 */
21
,
199
,
39
,
37
,
40
,
38
,
184
,
141
,
160
,
843
,
/* 60 */
34
,
33
,
839
,
772
,
32
,
31
,
30
,
404
,
405
,
406
,
/* 70 */
407
,
408
,
409
,
410
,
411
,
412
,
413
,
414
,
415
,
242
,
/* 80 */
41
,
43
,
230
,
35
,
36
,
746
,
62
,
137
,
29
,
137
,
/* 90 */
21
,
199
,
39
,
37
,
40
,
38
,
159
,
843
,
27
,
842
,
/* 100 */
34
,
33
,
56
,
838
,
32
,
31
,
30
,
105
,
43
,
8
,
/* 110 */
35
,
36
,
63
,
115
,
769
,
29
,
761
,
527
,
199
,
39
,
/* 120 */
37
,
40
,
38
,
168
,
539
,
747
,
583
,
34
,
33
,
18
,
/* 130 */
156
,
32
,
31
,
30
,
16
,
210
,
236
,
235
,
209
,
208
,
/* 140 */
207
,
234
,
206
,
233
,
232
,
231
,
205
,
727
,
105
,
715
,
/* 150 */
716
,
717
,
718
,
719
,
720
,
721
,
722
,
723
,
724
,
725
,
/* 160 */
726
,
35
,
36
,
798
,
837
,
194
,
29
,
177
,
157
,
199
,
/* 170 */
39
,
37
,
40
,
38
,
181
,
180
,
21
,
21
,
34
,
33
,
/* 180 */
444
,
12
,
32
,
31
,
30
,
164
,
596
,
750
,
445
,
587
,
/* 190 */
153
,
590
,
154
,
593
,
105
,
164
,
596
,
21
,
17
,
587
,
/* 200 */
150
,
590
,
196
,
593
,
60
,
26
,
90
,
89
,
144
,
169
,
/* 210 */
217
,
747
,
747
,
16
,
149
,
236
,
235
,
161
,
162
,
167
,
/* 220 */
234
,
198
,
233
,
232
,
231
,
142
,
670
,
161
,
162
,
128
,
/* 230 */
222
,
542
,
747
,
164
,
596
,
17
,
143
,
587
,
750
,
590
,
/* 240 */
105
,
593
,
26
,
39
,
37
,
40
,
38
,
100
,
170
,
145
,
/* 250 */
797
,
34
,
33
,
101
,
26
,
32
,
31
,
30
,
32
,
31
,
/* 260 */
30
,
78
,
183
,
564
,
565
,
161
,
162
,
230
,
589
,
152
,
/* 270 */
592
,
76
,
80
,
85
,
88
,
79
,
240
,
239
,
97
,
34
,
/* 280 */
33
,
82
,
42
,
32
,
31
,
30
,
118
,
119
,
70
,
66
,
/* 290 */
69
,
237
,
42
,
595
,
679
,
163
,
61
,
128
,
132
,
130
,
/* 300 */
93
,
92
,
91
,
595
,
671
,
187
,
585
,
128
,
594
,
588
,
/* 310 */
750
,
591
,
171
,
534
,
47
,
216
,
215
,
146
,
594
,
555
,
/* 320 */
186
,
147
,
556
,
46
,
613
,
148
,
14
,
597
,
13
,
139
,
/* 330 */
42
,
13
,
50
,
48
,
3
,
135
,
75
,
74
,
140
,
516
,
/* 340 */
515
,
595
,
586
,
46
,
22
,
138
,
203
,
10
,
9
,
51
,
/* 350 */
22
,
852
,
530
,
528
,
531
,
529
,
594
,
87
,
86
,
749
,
/* 360 */
808
,
807
,
165
,
804
,
803
,
166
,
771
,
741
,
220
,
776
,
/* 370 */
763
,
778
,
102
,
790
,
789
,
116
,
117
,
114
,
681
,
204
,
/* 380 */
133
,
24
,
213
,
678
,
214
,
851
,
72
,
850
,
848
,
26
,
/* 390 */
120
,
699
,
25
,
23
,
185
,
95
,
134
,
668
,
81
,
551
,
/* 400 */
666
,
83
,
84
,
664
,
188
,
663
,
174
,
129
,
661
,
660
,
/* 410 */
659
,
658
,
657
,
649
,
131
,
655
,
653
,
192
,
52
,
651
,
/* 420 */
760
,
57
,
49
,
58
,
791
,
44
,
197
,
195
,
193
,
191
,
/* 430 */
189
,
28
,
212
,
77
,
223
,
224
,
225
,
226
,
227
,
228
,
/* 440 */
229
,
238
,
627
,
176
,
175
,
626
,
201
,
178
,
179
,
53
,
/* 450 */
625
,
618
,
182
,
536
,
64
,
151
,
186
,
67
,
552
,
55
,
/* 460 */
103
,
158
,
662
,
59
,
200
,
94
,
96
,
123
,
700
,
121
,
/* 470 */
126
,
106
,
107
,
122
,
124
,
125
,
127
,
112
,
108
,
109
,
/* 480 */
113
,
745
,
110
,
656
,
111
,
1
,
2
,
190
,
5
,
557
,
/* 490 */
104
,
19
,
6
,
598
,
20
,
4
,
15
,
7
,
65
,
485
,
/* 500 */
202
,
481
,
479
,
478
,
477
,
474
,
448
,
211
,
68
,
45
,
/* 510 */
71
,
73
,
22
,
512
,
511
,
509
,
54
,
469
,
467
,
459
,
/* 520 */
465
,
461
,
463
,
457
,
455
,
484
,
483
,
482
,
480
,
476
,
/* 530 */
475
,
46
,
446
,
419
,
417
,
631
,
630
,
630
,
630
,
630
,
/* 540 */
630
,
630
,
630
,
630
,
630
,
630
,
630
,
98
,
99
,
/* 0 */
737
,
448
,
11
,
735
,
736
,
635
,
245
,
448
,
738
,
449
,
/* 10 */
740
,
741
,
739
,
35
,
36
,
449
,
37
,
38
,
155
,
243
,
/* 20 */
165
,
29
,
137
,
136
,
200
,
41
,
39
,
43
,
40
,
105
,
/* 30 */
514
,
160
,
851
,
34
,
33
,
778
,
137
,
32
,
31
,
30
,
/* 40 */
35
,
36
,
767
,
37
,
38
,
159
,
851
,
165
,
29
,
767
,
/* 50 */
105
,
200
,
41
,
39
,
43
,
40
,
185
,
157
,
221
,
220
,
/* 60 */
34
,
33
,
137
,
156
,
32
,
31
,
30
,
35
,
36
,
448
,
/* 70 */
37
,
38
,
850
,
141
,
165
,
29
,
756
,
449
,
200
,
41
,
/* 80 */
39
,
43
,
40
,
197
,
78
,
60
,
775
,
34
,
33
,
232
,
/* 90 */
232
,
32
,
31
,
30
,
21
,
41
,
39
,
43
,
40
,
32
,
/* 100 */
31
,
30
,
56
,
34
,
33
,
847
,
803
,
32
,
31
,
30
,
/* 110 */
21
,
21
,
105
,
408
,
409
,
410
,
411
,
412
,
413
,
414
,
/* 120 */
415
,
416
,
417
,
418
,
419
,
244
,
587
,
169
,
36
,
753
,
/* 130 */
37
,
38
,
223
,
50
,
165
,
29
,
21
,
62
,
200
,
41
,
/* 140 */
39
,
43
,
40
,
170
,
219
,
753
,
753
,
34
,
33
,
27
,
/* 150 */
51
,
32
,
31
,
30
,
8
,
37
,
38
,
63
,
115
,
165
,
/* 160 */
29
,
101
,
754
,
200
,
41
,
39
,
43
,
40
,
804
,
224
,
/* 170 */
195
,
753
,
34
,
33
,
168
,
846
,
32
,
31
,
30
,
16
,
/* 180 */
212
,
238
,
237
,
211
,
210
,
209
,
236
,
208
,
235
,
234
,
/* 190 */
233
,
207
,
733
,
756
,
721
,
722
,
723
,
724
,
725
,
726
,
/* 200 */
727
,
728
,
729
,
730
,
731
,
732
,
164
,
600
,
12
,
239
,
/* 210 */
591
,
17
,
594
,
188
,
597
,
105
,
164
,
600
,
26
,
559
,
/* 220 */
591
,
845
,
594
,
46
,
597
,
34
,
33
,
150
,
756
,
32
,
/* 230 */
31
,
30
,
21
,
90
,
89
,
144
,
568
,
569
,
161
,
162
,
/* 240 */
171
,
149
,
199
,
76
,
80
,
85
,
88
,
79
,
161
,
162
,
/* 250 */
164
,
600
,
546
,
82
,
591
,
589
,
594
,
100
,
597
,
242
,
/* 260 */
241
,
97
,
17
,
16
,
26
,
238
,
237
,
752
,
201
,
26
,
/* 270 */
236
,
61
,
235
,
234
,
233
,
118
,
119
,
70
,
66
,
69
,
/* 280 */
538
,
676
,
161
,
162
,
128
,
530
,
178
,
187
,
527
,
184
,
/* 290 */
528
,
590
,
529
,
182
,
181
,
593
,
152
,
596
,
132
,
130
,
/* 300 */
93
,
92
,
91
,
42
,
172
,
543
,
685
,
218
,
217
,
128
,
/* 310 */
18
,
163
,
677
,
42
,
599
,
128
,
173
,
174
,
560
,
619
,
/* 320 */
153
,
47
,
14
,
13
,
599
,
592
,
601
,
595
,
520
,
598
,
/* 330 */
13
,
519
,
46
,
154
,
205
,
22
,
75
,
74
,
22
,
598
,
/* 340 */
48
,
10
,
9
,
534
,
532
,
535
,
533
,
42
,
87
,
86
,
/* 350 */
3
,
139
,
860
,
140
,
755
,
142
,
143
,
603
,
599
,
147
,
/* 360 */
148
,
146
,
135
,
145
,
138
,
814
,
813
,
166
,
810
,
809
,
/* 370 */
167
,
777
,
747
,
598
,
222
,
769
,
782
,
784
,
102
,
796
,
/* 380 */
114
,
116
,
795
,
117
,
687
,
206
,
133
,
531
,
186
,
26
,
/* 390 */
24
,
95
,
215
,
684
,
216
,
859
,
72
,
858
,
856
,
120
,
/* 400 */
705
,
25
,
555
,
23
,
134
,
674
,
81
,
672
,
83
,
189
,
/* 410 */
84
,
670
,
193
,
669
,
175
,
52
,
129
,
667
,
49
,
666
,
/* 420 */
665
,
106
,
664
,
44
,
663
,
107
,
655
,
131
,
198
,
766
,
/* 430 */
196
,
661
,
659
,
657
,
194
,
57
,
58
,
797
,
192
,
190
,
/* 440 */
28
,
214
,
77
,
225
,
226
,
227
,
228
,
229
,
230
,
203
,
/* 450 */
53
,
231
,
240
,
633
,
151
,
177
,
64
,
67
,
176
,
668
,
/* 460 */
632
,
179
,
180
,
631
,
624
,
187
,
123
,
183
,
122
,
706
,
/* 470 */
121
,
125
,
124
,
94
,
127
,
662
,
126
,
96
,
1
,
2
,
/* 480 */
540
,
112
,
108
,
109
,
751
,
110
,
113
,
111
,
59
,
55
,
/* 490 */
556
,
103
,
158
,
19
,
191
,
20
,
561
,
104
,
5
,
602
,
/* 500 */
6
,
4
,
604
,
15
,
202
,
7
,
204
,
65
,
489
,
485
,
/* 510 */
483
,
482
,
481
,
478
,
452
,
213
,
68
,
45
,
71
,
22
,
/* 520 */
516
,
515
,
513
,
54
,
473
,
471
,
463
,
469
,
465
,
467
,
/* 530 */
73
,
461
,
459
,
488
,
487
,
486
,
484
,
480
,
479
,
46
,
/* 540 */
450
,
423
,
421
,
637
,
636
,
636
,
98
,
636
,
636
,
636
,
/* 550 */
636
,
636
,
636
,
636
,
636
,
99
,
};
static
const
YYCODETYPE
yy_lookahead
[]
=
{
/* 0 */
226
,
1
,
2
10
,
229
,
230
,
207
,
208
,
5
,
234
,
9
,
/* 10 */
236
,
237
,
238
,
13
,
14
,
2
,
16
,
17
,
5
,
26
0
,
/* 20 */
7
,
21
,
9
,
1
,
24
,
25
,
26
,
27
,
28
,
209
,
/* 30 */
210
,
9
,
240
,
33
,
34
,
33
,
34
,
37
,
38
,
39
,
/* 40 */
13
,
14
,
244
,
16
,
17
,
26
0
,
33
,
34
,
21
,
260
,
/* 50 */
210
,
24
,
25
,
26
,
27
,
28
,
258
,
2
60
,
269
,
270
,
/* 60 */
33
,
34
,
260
,
2
10
,
37
,
38
,
39
,
45
,
46
,
47
,
/* 70 */
48
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
/* 80 */
13
,
14
,
78
,
16
,
17
,
245
,
247
,
260
,
21
,
260
,
/* 90 */
210
,
24
,
25
,
26
,
27
,
28
,
269
,
270
,
259
,
270
,
/* 100 */
3
3
,
34
,
102
,
260
,
37
,
38
,
39
,
210
,
14
,
98
,
/* 110 */
16
,
17
,
101
,
102
,
261
,
21
,
244
,
104
,
24
,
25
,
/* 120 */
26
,
27
,
28
,
243
,
103
,
245
,
99
,
33
,
34
,
108
,
/* 130 */
258
,
37
,
38
,
39
,
85
,
86
,
87
,
88
,
89
,
90
,
/* 140 */
91
,
92
,
93
,
94
,
95
,
96
,
97
,
226
,
210
,
228
,
/* 150 */
229
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
238
,
/* 160 */
239
,
16
,
17
,
266
,
260
,
268
,
21
,
126
,
227
,
24
,
/* 170 */
25
,
26
,
27
,
28
,
133
,
134
,
210
,
210
,
33
,
34
,
/* 180 */
1
,
44
,
37
,
38
,
39
,
1
,
2
,
246
,
9
,
5
,
/* 190 */
260
,
7
,
260
,
9
,
210
,
1
,
2
,
210
,
98
,
5
,
/* 200 */
63
,
7
,
264
,
9
,
266
,
105
,
69
,
70
,
71
,
243
,
/* 210 */
243
,
245
,
245
,
85
,
77
,
87
,
88
,
33
,
34
,
227
,
/* 220 */
92
,
37
,
94
,
95
,
96
,
260
,
214
,
33
,
34
,
21
7
,
/* 230 */
243
,
37
,
245
,
1
,
2
,
98
,
260
,
5
,
246
,
7
,
/* 240 */
210
,
9
,
105
,
25
,
26
,
27
,
28
,
98
,
63
,
260
,
/* 250 */
266
,
33
,
34
,
210
,
105
,
37
,
38
,
39
,
37
,
38
,
/* 260 */
39
,
72
,
125
,
115
,
116
,
33
,
34
,
78
,
5
,
132
,
/* 270 */
7
,
64
,
65
,
66
,
67
,
68
,
60
,
61
,
62
,
33
,
/* 280 */
34
,
74
,
98
,
37
,
38
,
39
,
64
,
65
,
66
,
67
,
/* 290 */
68
,
227
,
98
,
109
,
214
,
59
,
266
,
21
7
,
64
,
65
,
/* 300 */
66
,
67
,
68
,
109
,
214
,
262
,
1
,
217
,
124
,
5
,
/* 310 */
246
,
7
,
127
,
99
,
103
,
130
,
131
,
260
,
124
,
99
,
/* 320 */
106
,
260
,
99
,
103
,
99
,
260
,
103
,
99
,
103
,
260
,
/* 330 */
98
,
103
,
103
,
122
,
98
,
260
,
128
,
129
,
260
,
99
,
/* 340 */
99
,
109
,
37
,
103
,
103
,
260
,
99
,
128
,
129
,
120
,
/* 350 */
103
,
246
,
5
,
5
,
7
,
7
,
124
,
72
,
73
,
246
,
/* 360 */
2
41
,
241
,
241
,
241
,
241
,
241
,
210
,
242
,
241
,
210
,
/* 370 */
24
4
,
210
,
210
,
267
,
267
,
210
,
210
,
248
,
210
,
210
,
/* 380 */
2
10
,
210
,
210
,
210
,
210
,
210
,
210
,
210
,
210
,
105
,
/* 390 */
210
,
210
,
210
,
210
,
244
,
59
,
210
,
210
,
210
,
109
,
/* 400 */
210
,
210
,
210
,
210
,
263
,
210
,
210
,
210
,
210
,
210
,
/* 410 */
210
,
210
,
2
10
,
210
,
210
,
210
,
210
,
263
,
119
,
210
,
/* 420 */
2
57
,
211
,
121
,
211
,
211
,
118
,
113
,
117
,
112
,
111
,
/* 430 */
11
0
,
123
,
75
,
84
,
83
,
49
,
80
,
82
,
53
,
81
,
/* 440 */
79
,
75
,
5
,
5
,
135
,
5
,
211
,
135
,
5
,
211
,
/* 450 */
5
,
86
,
126
,
99
,
215
,
211
,
106
,
215
,
99
,
107
,
/* 460 */
98
,
1
,
211
,
103
,
100
,
212
,
212
,
219
,
225
,
224
,
/* 470 */
22
1
,
256
,
255
,
223
,
222
,
220
,
218
,
250
,
254
,
25
3
,
/* 480 */
249
,
244
,
252
,
211
,
251
,
216
,
213
,
98
,
114
,
99
,
/* 490 */
9
8
,
103
,
114
,
99
,
103
,
98
,
98
,
98
,
72
,
9
,
/* 500 */
1
00
,
5
,
5
,
5
,
5
,
5
,
76
,
15
,
72
,
16
,
/* 510 */
129
,
129
,
103
,
5
,
5
,
99
,
98
,
5
,
5
,
5
,
/* 520 */
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
/* 530 */
5
,
103
,
76
,
59
,
58
,
0
,
271
,
271
,
271
,
271
,
/* 540 */
271
,
271
,
271
,
271
,
271
,
271
,
271
,
21
,
2
1
,
271
,
/* 550 */
271
,
271
,
271
,
271
,
271
,
27
1
,
271
,
271
,
271
,
271
,
/* 0 */
226
,
1
,
2
60
,
229
,
230
,
207
,
208
,
1
,
234
,
9
,
/* 10 */
236
,
237
,
238
,
13
,
14
,
9
,
16
,
17
,
209
,
21
0
,
/* 20 */
20
,
21
,
260
,
260
,
24
,
25
,
26
,
27
,
28
,
210
,
/* 30 */
5
,
269
,
270
,
33
,
34
,
210
,
260
,
37
,
38
,
39
,
/* 40 */
13
,
14
,
244
,
16
,
17
,
26
9
,
270
,
20
,
21
,
244
,
/* 50 */
210
,
24
,
25
,
26
,
27
,
28
,
258
,
2
27
,
33
,
34
,
/* 60 */
33
,
34
,
260
,
2
58
,
37
,
38
,
39
,
13
,
14
,
1
,
/* 70 */
16
,
17
,
270
,
260
,
20
,
21
,
246
,
9
,
24
,
25
,
/* 80 */
26
,
27
,
28
,
264
,
72
,
266
,
261
,
33
,
34
,
78
,
/* 90 */
78
,
37
,
38
,
39
,
210
,
25
,
26
,
27
,
28
,
37
,
/* 100 */
3
8
,
39
,
102
,
33
,
34
,
260
,
266
,
37
,
38
,
39
,
/* 110 */
210
,
210
,
210
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
/* 120 */
52
,
53
,
54
,
55
,
56
,
57
,
99
,
243
,
14
,
245
,
/* 130 */
16
,
17
,
210
,
103
,
20
,
21
,
210
,
247
,
24
,
25
,
/* 140 */
26
,
27
,
28
,
243
,
243
,
245
,
245
,
33
,
34
,
259
,
/* 150 */
120
,
37
,
38
,
39
,
98
,
16
,
17
,
101
,
102
,
20
,
/* 160 */
21
,
210
,
240
,
24
,
25
,
26
,
27
,
28
,
266
,
243
,
/* 170 */
268
,
245
,
33
,
34
,
227
,
260
,
37
,
38
,
39
,
85
,
/* 180 */
86
,
87
,
88
,
89
,
90
,
91
,
92
,
93
,
94
,
9
5
,
/* 190 */
96
,
97
,
226
,
246
,
228
,
229
,
230
,
231
,
232
,
233
,
/* 200 */
234
,
235
,
236
,
237
,
238
,
239
,
1
,
2
,
44
,
227
,
/* 210 */
5
,
98
,
7
,
262
,
9
,
210
,
1
,
2
,
105
,
99
,
/* 220 */
5
,
260
,
7
,
103
,
9
,
33
,
34
,
63
,
246
,
3
7
,
/* 230 */
38
,
39
,
210
,
69
,
70
,
71
,
115
,
116
,
33
,
34
,
/* 240 */
63
,
77
,
37
,
64
,
65
,
66
,
67
,
68
,
33
,
34
,
/* 250 */
1
,
2
,
37
,
74
,
5
,
1
,
7
,
98
,
9
,
60
,
/* 260 */
61
,
62
,
98
,
85
,
105
,
87
,
88
,
245
,
15
,
105
,
/* 270 */
92
,
266
,
94
,
95
,
96
,
64
,
65
,
66
,
67
,
68
,
/* 280 */
99
,
214
,
33
,
34
,
217
,
2
,
126
,
106
,
5
,
125
,
/* 290 */
7
,
37
,
9
,
133
,
134
,
5
,
132
,
7
,
64
,
65
,
/* 300 */
66
,
67
,
68
,
98
,
127
,
103
,
214
,
130
,
131
,
217
,
/* 310 */
108
,
59
,
214
,
98
,
109
,
217
,
33
,
34
,
99
,
99
,
/* 320 */
260
,
103
,
103
,
103
,
109
,
5
,
99
,
7
,
99
,
124
,
/* 330 */
103
,
99
,
103
,
260
,
99
,
103
,
128
,
129
,
103
,
124
,
/* 340 */
122
,
128
,
129
,
5
,
5
,
7
,
7
,
98
,
72
,
73
,
/* 350 */
98
,
260
,
246
,
260
,
246
,
260
,
260
,
104
,
109
,
260
,
/* 360 */
2
60
,
260
,
260
,
260
,
260
,
241
,
241
,
241
,
241
,
241
,
/* 370 */
24
1
,
210
,
242
,
124
,
241
,
244
,
210
,
210
,
210
,
267
,
/* 380 */
2
48
,
210
,
267
,
210
,
210
,
210
,
210
,
104
,
244
,
105
,
/* 390 */
210
,
59
,
210
,
210
,
210
,
210
,
210
,
210
,
210
,
210
,
/* 400 */
210
,
210
,
109
,
210
,
210
,
210
,
210
,
210
,
210
,
263
,
/* 410 */
210
,
210
,
2
63
,
210
,
210
,
119
,
210
,
210
,
121
,
210
,
/* 420 */
2
10
,
256
,
210
,
118
,
210
,
255
,
210
,
210
,
113
,
257
,
/* 430 */
11
7
,
210
,
210
,
210
,
112
,
211
,
211
,
211
,
111
,
110
,
/* 440 */
123
,
75
,
84
,
83
,
49
,
80
,
82
,
53
,
81
,
211
,
/* 450 */
211
,
79
,
75
,
5
,
211
,
5
,
215
,
215
,
135
,
211
,
/* 460 */
5
,
135
,
5
,
5
,
86
,
106
,
219
,
126
,
223
,
225
,
/* 470 */
22
4
,
220
,
222
,
212
,
218
,
211
,
221
,
212
,
216
,
21
3
,
/* 480 */
99
,
250
,
254
,
253
,
244
,
252
,
249
,
251
,
103
,
107
,
/* 490 */
9
9
,
98
,
1
,
103
,
98
,
103
,
99
,
98
,
114
,
9
9
,
/* 500 */
1
14
,
98
,
104
,
98
,
100
,
98
,
100
,
72
,
9
,
5
,
/* 510 */
5
,
5
,
5
,
5
,
76
,
15
,
72
,
16
,
129
,
103
,
/* 520 */
5
,
5
,
99
,
98
,
5
,
5
,
5
,
5
,
5
,
5
,
/* 530 */
129
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
5
,
103
,
/* 540 */
76
,
59
,
58
,
0
,
271
,
271
,
21
,
271
,
27
1
,
271
,
/* 550 */
271
,
271
,
271
,
271
,
271
,
2
1
,
271
,
271
,
271
,
271
,
/* 560 */
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
/* 570 */
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
/* 580 */
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
...
...
@@ -336,83 +337,84 @@ static const YYCODETYPE yy_lookahead[] = {
/* 720 */
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
/* 730 */
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
/* 740 */
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
/* 750 */
271
,
271
,
271
,
271
,
271
,
/* 750 */
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
271
,
/* 760 */
271
,
271
,
};
#define YY_SHIFT_COUNT (24
3
)
#define YY_SHIFT_COUNT (24
5
)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (5
35
)
#define YY_SHIFT_MAX (5
43
)
static
const
unsigned
short
int
yy_shift_ofst
[]
=
{
/* 0 */
1
37
,
49
,
128
,
184
,
232
,
179
,
179
,
179
,
179
,
179
,
/* 10 */
179
,
0
,
22
,
232
,
13
,
13
,
13
,
100
,
179
,
179
,
/* 20 */
179
,
179
,
179
,
189
,
4
,
4
,
549
,
194
,
232
,
232
,
/* 30 */
2
32
,
232
,
232
,
232
,
232
,
232
,
232
,
232
,
232
,
232
,
/* 40 */
2
32
,
232
,
232
,
232
,
232
,
13
,
13
,
2
,
2
,
2
,
/* 50 */
2
,
2
,
2
,
11
,
2
,
149
,
179
,
179
,
179
,
179
,
/* 60 */
1
48
,
148
,
21
,
179
,
179
,
179
,
179
,
179
,
179
,
179
,
/* 70 */
179
,
179
,
179
,
179
,
179
,
179
,
179
,
179
,
179
,
179
,
/* 80 */
179
,
179
,
179
,
179
,
179
,
179
,
179
,
179
,
179
,
179
,
/* 90 */
179
,
179
,
179
,
179
,
179
,
179
,
179
,
179
,
179
,
179
,
/* 100 */
284
,
33
6
,
336
,
290
,
290
,
336
,
299
,
301
,
307
,
313
,
/* 110 */
31
0
,
316
,
318
,
320
,
308
,
284
,
336
,
336
,
357
,
357
,
/* 120 */
33
6
,
349
,
351
,
386
,
356
,
355
,
385
,
358
,
361
,
336
,
/* 130 */
3
66
,
336
,
366
,
549
,
549
,
27
,
67
,
67
,
67
,
9
4
,
/* 140 */
1
45
,
218
,
218
,
218
,
207
,
246
,
246
,
246
,
246
,
222
,
/* 150 */
234
,
1
85
,
41
,
221
,
221
,
216
,
214
,
220
,
223
,
225
,
/* 160 */
22
8
,
263
,
304
,
305
,
236
,
211
,
229
,
240
,
241
,
247
,
/* 170 */
2
08
,
219
,
347
,
348
,
285
,
437
,
309
,
438
,
440
,
312
,
/* 180 */
443
,
445
,
365
,
326
,
350
,
354
,
352
,
360
,
359
,
362
,
/* 190 */
460
,
389
,
390
,
392
,
388
,
374
,
391
,
378
,
394
,
397
,
/* 200 */
398
,
364
,
399
,
400
,
426
,
490
,
496
,
497
,
498
,
499
,
/* 210 */
50
0
,
430
,
492
,
436
,
493
,
381
,
382
,
409
,
508
,
509
,
/* 220 */
416
,
418
,
409
,
512
,
513
,
514
,
515
,
516
,
517
,
518
,
/* 230 */
5
19
,
520
,
521
,
522
,
523
,
524
,
525
,
428
,
456
,
52
6
,
/* 240 */
527
,
474
,
476
,
535
,
/* 0 */
1
64
,
94
,
178
,
205
,
249
,
6
,
6
,
6
,
6
,
6
,
/* 10 */
6
,
0
,
68
,
249
,
283
,
283
,
283
,
113
,
6
,
6
,
/* 20 */
6
,
6
,
6
,
12
,
11
,
11
,
556
,
215
,
249
,
249
,
/* 30 */
2
49
,
249
,
249
,
249
,
249
,
249
,
249
,
249
,
249
,
249
,
/* 40 */
2
49
,
249
,
249
,
249
,
249
,
283
,
283
,
25
,
25
,
25
,
/* 50 */
25
,
25
,
25
,
56
,
25
,
159
,
6
,
6
,
6
,
6
,
/* 60 */
1
21
,
121
,
202
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
/* 70 */
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
/* 80 */
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
/* 90 */
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
6
,
/* 100 */
284
,
33
2
,
332
,
293
,
293
,
332
,
296
,
297
,
305
,
315
,
/* 110 */
31
3
,
322
,
327
,
329
,
317
,
284
,
332
,
332
,
366
,
366
,
/* 120 */
33
2
,
358
,
360
,
395
,
365
,
364
,
394
,
367
,
372
,
332
,
/* 130 */
3
77
,
332
,
377
,
556
,
556
,
27
,
54
,
54
,
54
,
11
4
,
/* 140 */
1
39
,
70
,
70
,
70
,
179
,
192
,
192
,
192
,
192
,
211
,
/* 150 */
234
,
1
77
,
160
,
62
,
62
,
199
,
181
,
120
,
219
,
220
,
/* 160 */
22
7
,
290
,
320
,
254
,
252
,
253
,
218
,
30
,
229
,
232
,
/* 170 */
2
35
,
208
,
213
,
338
,
339
,
276
,
448
,
323
,
450
,
455
,
/* 180 */
326
,
457
,
458
,
378
,
341
,
359
,
381
,
382
,
385
,
391
,
/* 190 */
393
,
491
,
396
,
397
,
399
,
390
,
384
,
392
,
386
,
400
,
/* 200 */
403
,
398
,
405
,
404
,
407
,
406
,
435
,
499
,
504
,
505
,
/* 210 */
50
6
,
507
,
508
,
438
,
500
,
444
,
501
,
389
,
401
,
416
,
/* 220 */
515
,
516
,
423
,
425
,
416
,
519
,
520
,
521
,
522
,
523
,
/* 230 */
5
24
,
526
,
527
,
528
,
529
,
530
,
531
,
532
,
533
,
43
6
,
/* 240 */
464
,
525
,
534
,
482
,
484
,
543
,
};
#define YY_REDUCE_COUNT (134)
#define YY_REDUCE_MIN (-2
41
)
#define YY_REDUCE_MAX (2
73
)
#define YY_REDUCE_MIN (-2
58
)
#define YY_REDUCE_MAX (2
66
)
static
const
short
yy_reduce_ofst
[]
=
{
/* 0 */
-
202
,
-
79
,
-
226
,
-
211
,
-
173
,
-
103
,
-
62
,
-
120
,
-
34
,
-
33
,
/* 10 */
-
13
,
-
147
,
-
180
,
-
171
,
-
59
,
-
8
,
64
,
-
128
,
43
,
-
16
,
/* 20 */
30
,
-
208
,
-
160
,
12
,
80
,
90
,
-
161
,
-
241
,
-
215
,
-
203
,
/* 30 */
-
1
98
,
-
157
,
-
96
,
-
70
,
-
68
,
-
35
,
-
24
,
-
11
,
57
,
61
,
/* 40 */
65
,
69
,
75
,
78
,
85
,
105
,
113
,
119
,
120
,
121
,
/* 50 */
12
2
,
123
,
124
,
125
,
127
,
126
,
156
,
159
,
161
,
162
,
/* 60 */
1
06
,
107
,
129
,
165
,
166
,
168
,
169
,
170
,
171
,
17
2
,
/* 70 */
1
73
,
174
,
175
,
176
,
177
,
178
,
180
,
181
,
182
,
18
3
,
/* 80 */
1
86
,
187
,
188
,
190
,
191
,
192
,
193
,
195
,
196
,
197
,
/* 90 */
198
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
206
,
209
,
/* 100 */
1
50
,
210
,
212
,
141
,
154
,
213
,
163
,
215
,
217
,
224
,
/* 110 */
2
26
,
230
,
233
,
227
,
231
,
237
,
235
,
238
,
239
,
242
,
/* 120 */
24
4
,
243
,
245
,
250
,
248
,
252
,
255
,
249
,
258
,
251
,
/* 130 */
2
53
,
272
,
254
,
269
,
273
,
/* 0 */
-
202
,
-
34
,
-
226
,
-
238
,
-
224
,
-
98
,
-
181
,
-
116
,
-
100
,
-
99
,
/* 10 */
-
74
,
-
175
,
-
191
,
-
198
,
-
170
,
-
53
,
-
18
,
-
195
,
-
49
,
-
160
,
/* 20 */
5
,
-
78
,
22
,
67
,
92
,
98
,
-
110
,
-
258
,
-
237
,
-
187
,
/* 30 */
-
1
55
,
-
85
,
-
39
,
60
,
73
,
91
,
93
,
95
,
96
,
99
,
/* 40 */
100
,
101
,
102
,
103
,
104
,
106
,
108
,
124
,
125
,
126
,
/* 50 */
12
7
,
128
,
129
,
130
,
133
,
131
,
161
,
166
,
167
,
168
,
/* 60 */
1
12
,
115
,
132
,
171
,
173
,
174
,
175
,
176
,
180
,
18
2
,
/* 70 */
1
83
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
19
3
,
/* 80 */
1
94
,
195
,
196
,
197
,
198
,
200
,
201
,
203
,
204
,
206
,
/* 90 */
207
,
209
,
210
,
212
,
214
,
216
,
217
,
221
,
222
,
223
,
/* 100 */
1
44
,
224
,
225
,
146
,
149
,
226
,
172
,
165
,
170
,
228
,
/* 110 */
2
30
,
233
,
236
,
231
,
237
,
240
,
238
,
239
,
241
,
242
,
/* 120 */
24
3
,
244
,
246
,
245
,
247
,
250
,
251
,
255
,
256
,
248
,
/* 130 */
2
61
,
264
,
265
,
262
,
266
,
};
static
const
YYACTIONTYPE
yy_default
[]
=
{
/* 0 */
6
28
,
680
,
669
,
845
,
845
,
628
,
628
,
628
,
628
,
628
,
/* 10 */
6
28
,
773
,
646
,
845
,
628
,
628
,
628
,
628
,
628
,
628
,
/* 20 */
6
28
,
628
,
628
,
682
,
682
,
682
,
768
,
628
,
628
,
628
,
/* 30 */
6
28
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
/* 40 */
6
28
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
/* 50 */
6
28
,
628
,
628
,
628
,
628
,
628
,
628
,
775
,
777
,
628
,
/* 60 */
794
,
794
,
766
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
/* 70 */
6
28
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
/* 80 */
6
28
,
667
,
628
,
665
,
628
,
628
,
628
,
628
,
628
,
628
,
/* 90 */
6
28
,
628
,
628
,
628
,
628
,
628
,
628
,
654
,
628
,
628
,
/* 100 */
6
28
,
648
,
648
,
628
,
628
,
648
,
801
,
805
,
799
,
787
,
/* 110 */
795
,
786
,
782
,
781
,
809
,
628
,
648
,
648
,
677
,
677
,
/* 120 */
6
48
,
698
,
696
,
694
,
686
,
692
,
688
,
690
,
684
,
648
,
/* 130 */
6
75
,
648
,
675
,
714
,
728
,
628
,
810
,
844
,
800
,
828
,
/* 140 */
8
27
,
840
,
834
,
833
,
628
,
832
,
831
,
830
,
829
,
628
,
/* 150 */
6
28
,
628
,
628
,
836
,
835
,
628
,
628
,
628
,
628
,
628
,
/* 160 */
6
28
,
628
,
628
,
628
,
812
,
806
,
802
,
628
,
628
,
628
,
/* 170 */
6
28
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
/* 180 */
6
28
,
628
,
628
,
628
,
765
,
628
,
628
,
774
,
628
,
628
,
/* 190 */
6
28
,
628
,
628
,
628
,
796
,
628
,
788
,
628
,
628
,
628
,
/* 200 */
6
28
,
628
,
628
,
742
,
628
,
628
,
628
,
628
,
628
,
628
,
/* 210 */
6
28
,
628
,
628
,
628
,
628
,
628
,
628
,
849
,
628
,
628
,
/* 220 */
6
28
,
736
,
847
,
628
,
628
,
628
,
628
,
628
,
628
,
628
,
/* 230 */
6
28
,
628
,
628
,
628
,
628
,
628
,
628
,
701
,
628
,
652
,
/* 240 */
6
50
,
628
,
644
,
628
,
/* 0 */
6
34
,
686
,
675
,
853
,
853
,
634
,
634
,
634
,
634
,
634
,
/* 10 */
6
34
,
779
,
652
,
853
,
634
,
634
,
634
,
634
,
634
,
634
,
/* 20 */
6
34
,
634
,
634
,
688
,
688
,
688
,
774
,
634
,
634
,
634
,
/* 30 */
6
34
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
/* 40 */
6
34
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
/* 50 */
6
34
,
634
,
634
,
634
,
634
,
634
,
634
,
781
,
783
,
634
,
/* 60 */
800
,
800
,
772
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
/* 70 */
6
34
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
/* 80 */
6
34
,
673
,
634
,
671
,
634
,
634
,
634
,
634
,
634
,
634
,
/* 90 */
6
34
,
634
,
634
,
634
,
634
,
634
,
634
,
660
,
634
,
634
,
/* 100 */
6
34
,
654
,
654
,
634
,
634
,
654
,
807
,
811
,
805
,
793
,
/* 110 */
801
,
792
,
788
,
787
,
815
,
634
,
654
,
654
,
683
,
683
,
/* 120 */
6
54
,
704
,
702
,
700
,
692
,
698
,
694
,
696
,
690
,
654
,
/* 130 */
6
81
,
654
,
681
,
720
,
734
,
634
,
816
,
852
,
806
,
842
,
/* 140 */
8
41
,
848
,
840
,
839
,
634
,
835
,
836
,
838
,
837
,
634
,
/* 150 */
6
34
,
634
,
634
,
844
,
843
,
634
,
634
,
634
,
634
,
634
,
/* 160 */
6
34
,
634
,
634
,
634
,
818
,
634
,
812
,
808
,
634
,
634
,
/* 170 */
6
34
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
/* 180 */
6
34
,
634
,
634
,
634
,
634
,
771
,
634
,
634
,
780
,
634
,
/* 190 */
6
34
,
634
,
634
,
634
,
634
,
802
,
634
,
794
,
634
,
634
,
/* 200 */
6
34
,
634
,
634
,
634
,
634
,
748
,
634
,
634
,
634
,
634
,
/* 210 */
6
34
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
857
,
/* 220 */
6
34
,
634
,
634
,
742
,
855
,
634
,
634
,
634
,
634
,
634
,
/* 230 */
6
34
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
634
,
707
,
/* 240 */
6
34
,
658
,
656
,
634
,
650
,
634
,
};
/********** End of lemon-generated parsing tables *****************************/
...
...
@@ -1198,35 +1200,37 @@ static const char *const yyRuleName[] = {
/* 193 */
"expr ::= BOOL"
,
/* 194 */
"expr ::= ID LP exprlist RP"
,
/* 195 */
"expr ::= ID LP STAR RP"
,
/* 196 */
"expr ::= expr
AND expr
"
,
/* 197 */
"expr ::= expr
OR expr
"
,
/* 196 */
"expr ::= expr
IS NULL
"
,
/* 197 */
"expr ::= expr
IS NOT NULL
"
,
/* 198 */
"expr ::= expr LT expr"
,
/* 199 */
"expr ::= expr GT expr"
,
/* 200 */
"expr ::= expr LE expr"
,
/* 201 */
"expr ::= expr GE expr"
,
/* 202 */
"expr ::= expr NE expr"
,
/* 203 */
"expr ::= expr EQ expr"
,
/* 204 */
"expr ::= expr PLUS expr"
,
/* 205 */
"expr ::= expr MINUS expr"
,
/* 206 */
"expr ::= expr STAR expr"
,
/* 207 */
"expr ::= expr SLASH expr"
,
/* 208 */
"expr ::= expr REM expr"
,
/* 209 */
"expr ::= expr LIKE expr"
,
/* 210 */
"expr ::= expr IN LP exprlist RP"
,
/* 211 */
"exprlist ::= exprlist COMMA expritem"
,
/* 212 */
"exprlist ::= expritem"
,
/* 213 */
"expritem ::= expr"
,
/* 214 */
"expritem ::="
,
/* 215 */
"cmd ::= RESET QUERY CACHE"
,
/* 216 */
"cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist"
,
/* 217 */
"cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids"
,
/* 218 */
"cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist"
,
/* 219 */
"cmd ::= ALTER TABLE ids cpxName DROP TAG ids"
,
/* 220 */
"cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids"
,
/* 221 */
"cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 222 */
"cmd ::= KILL CONNECTION INTEGER"
,
/* 223 */
"cmd ::= KILL STREAM INTEGER COLON INTEGER"
,
/* 224 */
"cmd ::= KILL QUERY INTEGER COLON INTEGER"
,
/* 204 */
"expr ::= expr AND expr"
,
/* 205 */
"expr ::= expr OR expr"
,
/* 206 */
"expr ::= expr PLUS expr"
,
/* 207 */
"expr ::= expr MINUS expr"
,
/* 208 */
"expr ::= expr STAR expr"
,
/* 209 */
"expr ::= expr SLASH expr"
,
/* 210 */
"expr ::= expr REM expr"
,
/* 211 */
"expr ::= expr LIKE expr"
,
/* 212 */
"expr ::= expr IN LP exprlist RP"
,
/* 213 */
"exprlist ::= exprlist COMMA expritem"
,
/* 214 */
"exprlist ::= expritem"
,
/* 215 */
"expritem ::= expr"
,
/* 216 */
"expritem ::="
,
/* 217 */
"cmd ::= RESET QUERY CACHE"
,
/* 218 */
"cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist"
,
/* 219 */
"cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids"
,
/* 220 */
"cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist"
,
/* 221 */
"cmd ::= ALTER TABLE ids cpxName DROP TAG ids"
,
/* 222 */
"cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids"
,
/* 223 */
"cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem"
,
/* 224 */
"cmd ::= KILL CONNECTION INTEGER"
,
/* 225 */
"cmd ::= KILL STREAM INTEGER COLON INTEGER"
,
/* 226 */
"cmd ::= KILL QUERY INTEGER COLON INTEGER"
,
};
#endif
/* NDEBUG */
...
...
@@ -1880,35 +1884,37 @@ static const struct {
{
260
,
-
1
},
/* (193) expr ::= BOOL */
{
260
,
-
4
},
/* (194) expr ::= ID LP exprlist RP */
{
260
,
-
4
},
/* (195) expr ::= ID LP STAR RP */
{
260
,
-
3
},
/* (196) expr ::= expr
AND expr
*/
{
260
,
-
3
},
/* (197) expr ::= expr OR expr
*/
{
260
,
-
3
},
/* (196) expr ::= expr
IS NULL
*/
{
260
,
-
4
},
/* (197) expr ::= expr IS NOT NULL
*/
{
260
,
-
3
},
/* (198) expr ::= expr LT expr */
{
260
,
-
3
},
/* (199) expr ::= expr GT expr */
{
260
,
-
3
},
/* (200) expr ::= expr LE expr */
{
260
,
-
3
},
/* (201) expr ::= expr GE expr */
{
260
,
-
3
},
/* (202) expr ::= expr NE expr */
{
260
,
-
3
},
/* (203) expr ::= expr EQ expr */
{
260
,
-
3
},
/* (204) expr ::= expr PLUS expr */
{
260
,
-
3
},
/* (205) expr ::= expr MINUS expr */
{
260
,
-
3
},
/* (206) expr ::= expr STAR expr */
{
260
,
-
3
},
/* (207) expr ::= expr SLASH expr */
{
260
,
-
3
},
/* (208) expr ::= expr REM expr */
{
260
,
-
3
},
/* (209) expr ::= expr LIKE expr */
{
260
,
-
5
},
/* (210) expr ::= expr IN LP exprlist RP */
{
269
,
-
3
},
/* (211) exprlist ::= exprlist COMMA expritem */
{
269
,
-
1
},
/* (212) exprlist ::= expritem */
{
270
,
-
1
},
/* (213) expritem ::= expr */
{
270
,
0
},
/* (214) expritem ::= */
{
208
,
-
3
},
/* (215) cmd ::= RESET QUERY CACHE */
{
208
,
-
7
},
/* (216) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
208
,
-
7
},
/* (217) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
208
,
-
7
},
/* (218) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
208
,
-
7
},
/* (219) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
208
,
-
8
},
/* (220) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
208
,
-
9
},
/* (221) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{
208
,
-
3
},
/* (222) cmd ::= KILL CONNECTION INTEGER */
{
208
,
-
5
},
/* (223) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{
208
,
-
5
},
/* (224) cmd ::= KILL QUERY INTEGER COLON INTEGER */
{
260
,
-
3
},
/* (204) expr ::= expr AND expr */
{
260
,
-
3
},
/* (205) expr ::= expr OR expr */
{
260
,
-
3
},
/* (206) expr ::= expr PLUS expr */
{
260
,
-
3
},
/* (207) expr ::= expr MINUS expr */
{
260
,
-
3
},
/* (208) expr ::= expr STAR expr */
{
260
,
-
3
},
/* (209) expr ::= expr SLASH expr */
{
260
,
-
3
},
/* (210) expr ::= expr REM expr */
{
260
,
-
3
},
/* (211) expr ::= expr LIKE expr */
{
260
,
-
5
},
/* (212) expr ::= expr IN LP exprlist RP */
{
269
,
-
3
},
/* (213) exprlist ::= exprlist COMMA expritem */
{
269
,
-
1
},
/* (214) exprlist ::= expritem */
{
270
,
-
1
},
/* (215) expritem ::= expr */
{
270
,
0
},
/* (216) expritem ::= */
{
208
,
-
3
},
/* (217) cmd ::= RESET QUERY CACHE */
{
208
,
-
7
},
/* (218) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
208
,
-
7
},
/* (219) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
208
,
-
7
},
/* (220) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
208
,
-
7
},
/* (221) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
208
,
-
8
},
/* (222) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
208
,
-
9
},
/* (223) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{
208
,
-
3
},
/* (224) cmd ::= KILL CONNECTION INTEGER */
{
208
,
-
5
},
/* (225) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{
208
,
-
5
},
/* (226) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
static
void
yy_accept
(
yyParser
*
);
/* Forward Declaration */
...
...
@@ -2570,7 +2576,7 @@ static void yy_reduce(
break
;
case
168
:
/* having_opt ::= */
case
178
:
/* where_opt ::= */
yytestcase
(
yyruleno
==
178
);
case
21
4
:
/* expritem ::= */
yytestcase
(
yyruleno
==
214
);
case
21
6
:
/* expritem ::= */
yytestcase
(
yyruleno
==
216
);
{
yymsp
[
1
].
minor
.
yy66
=
0
;}
break
;
case
169
:
/* having_opt ::= HAVING expr */
...
...
@@ -2643,24 +2649,20 @@ static void yy_reduce(
yymsp
[
0
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
194
:
/* expr ::= ID LP exprlist RP */
{
yylhsminor
.
yy66
=
tSQLExprCreateFunction
(
yymsp
[
-
1
].
minor
.
yy224
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
{
yylhsminor
.
yy66
=
tSQLExprCreateFunction
(
yymsp
[
-
1
].
minor
.
yy224
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
195
:
/* expr ::= ID LP STAR RP */
{
yylhsminor
.
yy66
=
tSQLExprCreateFunction
(
NULL
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
{
yylhsminor
.
yy66
=
tSQLExprCreateFunction
(
NULL
,
&
yymsp
[
-
3
].
minor
.
yy0
,
&
yymsp
[
0
].
minor
.
yy0
,
yymsp
[
-
3
].
minor
.
yy0
.
type
);
}
yymsp
[
-
3
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
196
:
/* expr ::= expr
AND expr
*/
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_AND
);}
case
196
:
/* expr ::= expr
IS NULL
*/
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
NULL
,
TK_ISNULL
);}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
197
:
/* expr ::= expr
OR expr
*/
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_OR
);
}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
case
197
:
/* expr ::= expr
IS NOT NULL
*/
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
3
].
minor
.
yy66
,
NULL
,
TK_NOTNULL
);
}
yymsp
[
-
3
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
198
:
/* expr ::= expr LT expr */
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_LT
);}
...
...
@@ -2686,57 +2688,65 @@ static void yy_reduce(
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_EQ
);}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
204
:
/* expr ::= expr PLUS expr */
case
204
:
/* expr ::= expr AND expr */
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_AND
);}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
205
:
/* expr ::= expr OR expr */
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_OR
);
}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
206
:
/* expr ::= expr PLUS expr */
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_PLUS
);
}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
20
5
:
/* expr ::= expr MINUS expr */
case
20
7
:
/* expr ::= expr MINUS expr */
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_MINUS
);
}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
20
6
:
/* expr ::= expr STAR expr */
case
20
8
:
/* expr ::= expr STAR expr */
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_STAR
);
}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
20
7
:
/* expr ::= expr SLASH expr */
case
20
9
:
/* expr ::= expr SLASH expr */
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_DIVIDE
);}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
2
08
:
/* expr ::= expr REM expr */
case
2
10
:
/* expr ::= expr REM expr */
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_REM
);
}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
2
09
:
/* expr ::= expr LIKE expr */
case
2
11
:
/* expr ::= expr LIKE expr */
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
2
].
minor
.
yy66
,
yymsp
[
0
].
minor
.
yy66
,
TK_LIKE
);
}
yymsp
[
-
2
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
21
0
:
/* expr ::= expr IN LP exprlist RP */
case
21
2
:
/* expr ::= expr IN LP exprlist RP */
{
yylhsminor
.
yy66
=
tSQLExprCreate
(
yymsp
[
-
4
].
minor
.
yy66
,
(
tSQLExpr
*
)
yymsp
[
-
1
].
minor
.
yy224
,
TK_IN
);
}
yymsp
[
-
4
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
21
1
:
/* exprlist ::= exprlist COMMA expritem */
case
21
3
:
/* exprlist ::= exprlist COMMA expritem */
{
yylhsminor
.
yy224
=
tSQLExprListAppend
(
yymsp
[
-
2
].
minor
.
yy224
,
yymsp
[
0
].
minor
.
yy66
,
0
);}
yymsp
[
-
2
].
minor
.
yy224
=
yylhsminor
.
yy224
;
break
;
case
21
2
:
/* exprlist ::= expritem */
case
21
4
:
/* exprlist ::= expritem */
{
yylhsminor
.
yy224
=
tSQLExprListAppend
(
0
,
yymsp
[
0
].
minor
.
yy66
,
0
);}
yymsp
[
0
].
minor
.
yy224
=
yylhsminor
.
yy224
;
break
;
case
21
3
:
/* expritem ::= expr */
case
21
5
:
/* expritem ::= expr */
{
yylhsminor
.
yy66
=
yymsp
[
0
].
minor
.
yy66
;}
yymsp
[
0
].
minor
.
yy66
=
yylhsminor
.
yy66
;
break
;
case
21
5
:
/* cmd ::= RESET QUERY CACHE */
case
21
7
:
/* cmd ::= RESET QUERY CACHE */
{
setDCLSQLElems
(
pInfo
,
TSDB_SQL_RESET_CACHE
,
0
);}
break
;
case
21
6
:
/* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
case
21
8
:
/* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
SAlterTableSQL
*
pAlterTable
=
tAlterTableSQLElems
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy449
,
NULL
,
TSDB_ALTER_TABLE_ADD_COLUMN
);
setSQLInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
21
7
:
/* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
case
21
9
:
/* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
...
...
@@ -2747,14 +2757,14 @@ static void yy_reduce(
setSQLInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
2
18
:
/* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
case
2
20
:
/* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
SAlterTableSQL
*
pAlterTable
=
tAlterTableSQLElems
(
&
yymsp
[
-
4
].
minor
.
yy0
,
yymsp
[
0
].
minor
.
yy449
,
NULL
,
TSDB_ALTER_TABLE_ADD_TAG_COLUMN
);
setSQLInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
2
19
:
/* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
case
2
21
:
/* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
yymsp
[
-
4
].
minor
.
yy0
.
n
+=
yymsp
[
-
3
].
minor
.
yy0
.
n
;
...
...
@@ -2765,7 +2775,7 @@ static void yy_reduce(
setSQLInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
22
0
:
/* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
case
22
2
:
/* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
yymsp
[
-
5
].
minor
.
yy0
.
n
+=
yymsp
[
-
4
].
minor
.
yy0
.
n
;
...
...
@@ -2779,7 +2789,7 @@ static void yy_reduce(
setSQLInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
22
1
:
/* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
case
22
3
:
/* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{
yymsp
[
-
6
].
minor
.
yy0
.
n
+=
yymsp
[
-
5
].
minor
.
yy0
.
n
;
...
...
@@ -2791,13 +2801,13 @@ static void yy_reduce(
setSQLInfo
(
pInfo
,
pAlterTable
,
NULL
,
TSDB_SQL_ALTER_TABLE
);
}
break
;
case
22
2
:
/* cmd ::= KILL CONNECTION INTEGER */
case
22
4
:
/* cmd ::= KILL CONNECTION INTEGER */
{
setKillSQL
(
pInfo
,
TSDB_SQL_KILL_CONNECTION
,
&
yymsp
[
0
].
minor
.
yy0
);}
break
;
case
22
3
:
/* cmd ::= KILL STREAM INTEGER COLON INTEGER */
case
22
5
:
/* cmd ::= KILL STREAM INTEGER COLON INTEGER */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
yymsp
[
-
1
].
minor
.
yy0
.
n
+
yymsp
[
0
].
minor
.
yy0
.
n
);
setKillSQL
(
pInfo
,
TSDB_SQL_KILL_STREAM
,
&
yymsp
[
-
2
].
minor
.
yy0
);}
break
;
case
22
4
:
/* cmd ::= KILL QUERY INTEGER COLON INTEGER */
case
22
6
:
/* cmd ::= KILL QUERY INTEGER COLON INTEGER */
{
yymsp
[
-
2
].
minor
.
yy0
.
n
+=
(
yymsp
[
-
1
].
minor
.
yy0
.
n
+
yymsp
[
0
].
minor
.
yy0
.
n
);
setKillSQL
(
pInfo
,
TSDB_SQL_KILL_QUERY
,
&
yymsp
[
-
2
].
minor
.
yy0
);}
break
;
default:
...
...
src/tsdb/src/tsdbRead.c
浏览文件 @
2a395670
...
...
@@ -2071,13 +2071,17 @@ STimeWindow changeTableGroupByLastrow(STableGroupInfo *groupList) {
if
(
keyInfo
.
pTable
!=
NULL
)
{
totalNumOfTable
++
;
taosArrayPush
(
pGroup
,
&
keyInfo
);
}
else
{
taosArrayRemove
(
groupList
->
pGroupList
,
j
);
numOfGroups
-=
1
;
j
-=
1
;
}
}
// window does not being updated, so set the original
if
(
window
.
skey
==
INT64_MAX
&&
window
.
ekey
==
INT64_MIN
)
{
window
=
TSWINDOW_INITIALIZER
;
assert
(
totalNumOfTable
==
0
);
assert
(
totalNumOfTable
==
0
&&
taosArrayGetSize
(
groupList
->
pGroupList
)
==
0
);
}
groupList
->
numOfTables
=
totalNumOfTable
;
...
...
@@ -2398,6 +2402,14 @@ static bool indexedNodeFilterFp(const void* pNode, void* param) {
val
=
tdGetKVRowValOfCol
(
pTable
->
tagVal
,
pInfo
->
sch
.
colId
);
}
if
(
pInfo
->
optr
==
TSDB_RELATION_ISNULL
||
pInfo
->
optr
==
TSDB_RELATION_NOTNULL
)
{
if
(
pInfo
->
optr
==
TSDB_RELATION_ISNULL
)
{
return
(
val
==
NULL
)
||
isNull
(
val
,
pInfo
->
sch
.
type
);
}
else
if
(
pInfo
->
optr
==
TSDB_RELATION_NOTNULL
)
{
return
(
val
!=
NULL
)
&&
(
!
isNull
(
val
,
pInfo
->
sch
.
type
));
}
}
int32_t
ret
=
0
;
if
(
val
==
NULL
)
{
//the val is possible to be null, so check it out carefully
ret
=
-
1
;
// val is missing in table tags value pairs
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录