未验证 提交 e6058244 编写于 作者: S shenglian-zhou 提交者: GitHub

Merge pull request #10352 from taosdata/feature/TD-11220

 [TD-11220]<feature>(query): time related functions
......@@ -70,6 +70,10 @@ int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int1
if (pToken->type == TK_NOW) {
useconds = taosGetTimestamp(timePrec);
} else if (pToken->type == TK_TODAY) {
int64_t factor = (timePrec == TSDB_TIME_PRECISION_MILLI) ? 1000 :
(timePrec == TSDB_TIME_PRECISION_MICRO) ? 1000000 : 1000000000;
useconds = taosGetTimestampToday() * factor;
} else if (strncmp(pToken->z, "0", 1) == 0 && pToken->n == 1) {
// do nothing
} else if (pToken->type == TK_INTEGER) {
......@@ -473,7 +477,7 @@ int tsParseOneRow(char **str, STableDataBlocks *pDataBlocks, int16_t timePrec, i
}
int16_t type = sToken.type;
if ((type != TK_NOW && type != TK_INTEGER && type != TK_STRING && type != TK_FLOAT && type != TK_BOOL &&
if ((type != TK_NOW && type != TK_TODAY && type != TK_INTEGER && type != TK_STRING && type != TK_FLOAT && type != TK_BOOL &&
type != TK_NULL && type != TK_HEX && type != TK_OCT && type != TK_BIN) ||
(sToken.n == 0) || (type == TK_RP)) {
return tscSQLSyntaxErrMsg(pInsertParam->msg, "invalid data or symbol", sToken.z);
......
......@@ -5075,8 +5075,8 @@ static int32_t validateSQLExprItem(SSqlCmd* pCmd, tSqlExpr* pExpr,
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
//now allowing now +/- value in select expr
if (pExpr->tokenId == TK_TIMESTAMP) {
//not allowing now/today keyword arithmetic operation in select expr
if (pExpr->exprToken.type == TK_NOW || pExpr->exprToken.type == TK_TODAY) {
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
}
......@@ -5455,6 +5455,7 @@ static int32_t handleExprInQueryCond(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, tSql
}else{
colName = &(pLeft->columnName);
}
int32_t ret = TSDB_CODE_SUCCESS;
SColumnIndex index = COLUMN_INDEX_INITIALIZER;
......@@ -10436,6 +10437,10 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
(*pExpr)->pVal = calloc(1, sizeof(tVariant));
tVariantAssign((*pExpr)->pVal, &pSqlExpr->value);
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, pQueryInfo->curTableIdx);
STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta);
(*pExpr)->precision = tinfo.precision;
STableMeta* pTableMeta = tscGetMetaInfo(pQueryInfo, pQueryInfo->curTableIdx)->pTableMeta;
if (pCols != NULL) {
size_t colSize = taosArrayGetSize(pCols);
......@@ -10598,6 +10603,11 @@ int32_t exprTreeFromSqlExpr(SSqlCmd* pCmd, tExprNode **pExpr, const tSqlExpr* pS
*pExpr = calloc(1, sizeof(tExprNode));
(*pExpr)->nodeType = TSQL_NODE_FUNC;
(*pExpr)->_func.functionId = pSqlExpr->functionId;
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, pQueryInfo->curTableIdx);
STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta);
(*pExpr)->precision = tinfo.precision;
SArray* paramList = pSqlExpr->Expr.paramList;
size_t paramSize = paramList ? taosArrayGetSize(paramList) : 0;
if (paramSize > 0) {
......
......@@ -70,7 +70,15 @@ struct SSchema;
#define TSDB_FUNC_SCALAR_LTRIM (TSDB_FUNC_FLAG_SCALAR | 0x0014)
#define TSDB_FUNC_SCALAR_RTRIM (TSDB_FUNC_FLAG_SCALAR | 0x0015)
#define TSDB_FUNC_SCALAR_SUBSTR (TSDB_FUNC_FLAG_SCALAR | 0x0016)
#define TSDB_FUNC_SCALAR_NUM_FUNCTIONS 23
#define TSDB_FUNC_SCALAR_NOW (TSDB_FUNC_FLAG_SCALAR | 0x0017)
#define TSDB_FUNC_SCALAR_TODAY (TSDB_FUNC_FLAG_SCALAR | 0x0018)
#define TSDB_FUNC_SCALAR_TIMEZONE (TSDB_FUNC_FLAG_SCALAR | 0x0019)
#define TSDB_FUNC_SCALAR_TO_ISO8601 (TSDB_FUNC_FLAG_SCALAR | 0x001A)
#define TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP (TSDB_FUNC_FLAG_SCALAR | 0x001B)
#define TSDB_FUNC_SCALAR_TIMETRUNCATE (TSDB_FUNC_FLAG_SCALAR | 0x001C)
#define TSDB_FUNC_SCALAR_TIMEDIFF (TSDB_FUNC_FLAG_SCALAR | 0x001D)
#define TSDB_FUNC_SCALAR_NUM_FUNCTIONS 30
#define TSDB_FUNC_SCALAR_NAME_MAX_LEN 16
......@@ -143,6 +151,7 @@ typedef struct tExprNode {
};
int16_t resultType;
int16_t resultBytes;
int32_t precision;
} tExprNode;
typedef struct SExprTraverseSupp {
......
......@@ -92,6 +92,9 @@ double getVectorDoubleValue_FLOAT(void *src, int32_t index) {
double getVectorDoubleValue_DOUBLE(void *src, int32_t index) {
return (double)*((double *)src + index);
}
int64_t getVectorTimestampValue(void *src, int32_t index) {
return (int64_t)*((int64_t *)src + index);
}
_arithmetic_getVectorDoubleValue_fn_t getVectorDoubleValueFn(int32_t srcType) {
_arithmetic_getVectorDoubleValue_fn_t p = NULL;
if(srcType==TSDB_DATA_TYPE_TINYINT) {
......@@ -176,6 +179,8 @@ _arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFn(int32_t srcType) {
p = getVectorValueAddr_FLOAT;
}else if(srcType==TSDB_DATA_TYPE_DOUBLE) {
p = getVectorValueAddr_DOUBLE;
}else if(srcType==TSDB_DATA_TYPE_TIMESTAMP) {
p = getVectorValueAddr_BIGINT;
}else {
assert(0);
}
......@@ -185,7 +190,9 @@ _arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFn(int32_t srcType) {
void vectorAdd(void *left, int32_t len1, int32_t _left_type, void *right, int32_t len2, int32_t _right_type, void *out, int32_t _ord) {
int32_t i = ((_ord) == TSDB_ORDER_ASC) ? 0 : MAX(len1, len2) - 1;
int32_t step = ((_ord) == TSDB_ORDER_ASC) ? 1 : -1;
double *output=(double*)out;
if (!IS_TIMESTAMP_TYPE(_left_type) && !IS_TIMESTAMP_TYPE(_right_type)) {
double *output = (double*)out;
_arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFnLeft = getVectorValueAddrFn(_left_type);
_arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFnRight = getVectorValueAddrFn(_right_type);
_arithmetic_getVectorDoubleValue_fn_t getVectorDoubleValueFnLeft = getVectorDoubleValueFn(_left_type);
......@@ -216,11 +223,44 @@ void vectorAdd(void *left, int32_t len1, int32_t _left_type, void *right, int32_
SET_DOUBLE_VAL(output,getVectorDoubleValueFnLeft(left,i) + getVectorDoubleValueFnRight(right,0));
}
}
} else {
int64_t *output = (int64_t *)out;
_arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFnLeft = getVectorValueAddrFn(_left_type);
_arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFnRight = getVectorValueAddrFn(_right_type);
if ((len1) == (len2)) {
for (; i < (len2) && i >= 0; i += step, output += 1) {
if (isNull(getVectorValueAddrFnLeft(left,i), _left_type) || isNull(getVectorValueAddrFnRight(right,i), _right_type)) {
SET_TIMESTAMP_NULL(output);
continue;
}
SET_TIMESTAMP_VAL(output, getVectorTimestampValue(left,i) + getVectorTimestampValue(right,i));
}
} else if ((len1) == 1) {
for (; i >= 0 && i < (len2); i += step, output += 1) {
if (isNull(getVectorValueAddrFnLeft(left,0), _left_type) || isNull(getVectorValueAddrFnRight(right,i), _right_type)) {
SET_TIMESTAMP_NULL(output);
continue;
}
SET_TIMESTAMP_VAL(output, getVectorTimestampValue(left,0) + getVectorTimestampValue(right,i));
}
} else if ((len2) == 1) {
for (; i >= 0 && i < (len1); i += step, output += 1) {
if (isNull(getVectorValueAddrFnLeft(left,i), _left_type) || isNull(getVectorValueAddrFnRight(right,0), _right_type)) {
SET_TIMESTAMP_NULL(output);
continue;
}
SET_TIMESTAMP_VAL(output, getVectorTimestampValue(left,i) + getVectorTimestampValue(right,0));
}
}
}
}
void vectorSub(void *left, int32_t len1, int32_t _left_type, void *right, int32_t len2, int32_t _right_type, void *out, int32_t _ord) {
int32_t i = ((_ord) == TSDB_ORDER_ASC) ? 0 : MAX(len1, len2) - 1;
int32_t step = ((_ord) == TSDB_ORDER_ASC) ? 1 : -1;
if (!IS_TIMESTAMP_TYPE(_left_type) && !IS_TIMESTAMP_TYPE(_right_type)) {
double *output=(double*)out;
_arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFnLeft = getVectorValueAddrFn(_left_type);
_arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFnRight = getVectorValueAddrFn(_right_type);
......@@ -252,6 +292,37 @@ void vectorSub(void *left, int32_t len1, int32_t _left_type, void *right, int32_
SET_DOUBLE_VAL(output,getVectorDoubleValueFnLeft(left,i) - getVectorDoubleValueFnRight(right,0));
}
}
} else {
int64_t *output = (int64_t *)out;
_arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFnLeft = getVectorValueAddrFn(_left_type);
_arithmetic_getVectorValueAddr_fn_t getVectorValueAddrFnRight = getVectorValueAddrFn(_right_type);
if ((len1) == (len2)) {
for (; i < (len2) && i >= 0; i += step, output += 1) {
if (isNull(getVectorValueAddrFnLeft(left,i), _left_type) || isNull(getVectorValueAddrFnRight(right,i), _right_type)) {
SET_TIMESTAMP_NULL(output);
continue;
}
SET_TIMESTAMP_VAL(output, getVectorTimestampValue(left,i) - getVectorTimestampValue(right,i));
}
} else if ((len1) == 1) {
for (; i >= 0 && i < (len2); i += step, output += 1) {
if (isNull(getVectorValueAddrFnLeft(left,0), _left_type) || isNull(getVectorValueAddrFnRight(right,i), _right_type)) {
SET_TIMESTAMP_NULL(output);
continue;
}
SET_TIMESTAMP_VAL(output, getVectorTimestampValue(left,0) - getVectorTimestampValue(right,i));
}
} else if ((len2) == 1) {
for (; i >= 0 && i < (len1); i += step, output += 1) {
if (isNull(getVectorValueAddrFnLeft(left,i), _left_type) || isNull(getVectorValueAddrFnRight(right,0), _right_type)) {
SET_TIMESTAMP_NULL(output);
continue;
}
SET_TIMESTAMP_VAL(output, getVectorTimestampValue(left,i) - getVectorTimestampValue(right,0));
}
}
}
}
void vectorMultiply(void *left, int32_t len1, int32_t _left_type, void *right, int32_t len2, int32_t _right_type, void *out, int32_t _ord) {
......
......@@ -23,6 +23,7 @@
#include "tarray.h"
#include "tbuffer.h"
#include "tcompare.h"
#include "tglobal.h"
#include "tsdb.h"
#include "tskiplist.h"
#include "texpr.h"
......@@ -36,6 +37,7 @@ static int32_t exprValidateStringLengthNode(tExprNode *pExpr);
static int32_t exprValidateStringLowerUpperTrimNode(char* msgBuf, tExprNode *pExpr);
static int32_t exprValidateStringSubstrNode(char* msgBuf, tExprNode *pExpr);
static int32_t exprValidateCastNode(char* msgbuf, tExprNode *pExpr);
static int32_t exprValidateTimeNode(char* msgbuf, tExprNode *pExpr);
static int32_t exprInvalidOperationMsg(char *msgbuf, const char *msg) {
const char* msgFormat = "invalid operation: %s";
......@@ -49,7 +51,7 @@ static int32_t exprInvalidOperationMsg(char *msgbuf, const char *msg) {
int32_t exprTreeValidateFunctionNode(char* msgbuf, tExprNode *pExpr) {
int32_t code = TSDB_CODE_SUCCESS;
//TODO: check childs for every function
//TODO: check children for every function
switch (pExpr->_func.functionId) {
case TSDB_FUNC_SCALAR_POW:
case TSDB_FUNC_SCALAR_LOG:
......@@ -88,6 +90,15 @@ int32_t exprTreeValidateFunctionNode(char* msgbuf, tExprNode *pExpr) {
case TSDB_FUNC_SCALAR_SUBSTR: {
return exprValidateStringSubstrNode(msgbuf, pExpr);
}
case TSDB_FUNC_SCALAR_NOW:
case TSDB_FUNC_SCALAR_TODAY:
case TSDB_FUNC_SCALAR_TIMEZONE:
case TSDB_FUNC_SCALAR_TO_ISO8601:
case TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP:
case TSDB_FUNC_SCALAR_TIMETRUNCATE:
case TSDB_FUNC_SCALAR_TIMEDIFF: {
return exprValidateTimeNode(msgbuf, pExpr);
}
default:
break;
......@@ -101,11 +112,26 @@ int32_t exprTreeValidateExprNode(tExprNode *pExpr) {
pExpr->_node.optr == TSDB_BINARY_OP_REMAINDER) {
int16_t leftType = pExpr->_node.pLeft->resultType;
int16_t rightType = pExpr->_node.pRight->resultType;
if (!IS_NUMERIC_TYPE(leftType) || !IS_NUMERIC_TYPE(rightType)) {
if ((!IS_NUMERIC_TYPE(leftType) && !IS_TIMESTAMP_TYPE(leftType)) ||
(!IS_NUMERIC_TYPE(rightType) && !IS_TIMESTAMP_TYPE(rightType))) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if (IS_TIMESTAMP_TYPE(leftType) || IS_TIMESTAMP_TYPE(rightType)) {
if (pExpr->_node.pLeft->nodeType == TSQL_NODE_COL && pExpr->_node.pRight->nodeType == TSQL_NODE_COL) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
//timestamp cannot be used in arithmetic
//operation with other data types
if (!IS_TIMESTAMP_TYPE(leftType) || !IS_TIMESTAMP_TYPE(rightType) ||
(pExpr->_node.optr != TSDB_BINARY_OP_ADD && pExpr->_node.optr != TSDB_BINARY_OP_SUBTRACT)) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
pExpr->resultType = TSDB_DATA_TYPE_TIMESTAMP;
pExpr->resultBytes = tDataTypes[TSDB_DATA_TYPE_TIMESTAMP].bytes;
} else {
pExpr->resultType = TSDB_DATA_TYPE_DOUBLE;
pExpr->resultBytes = tDataTypes[TSDB_DATA_TYPE_DOUBLE].bytes;
}
return TSDB_CODE_SUCCESS;
} else {
return TSDB_CODE_SUCCESS;
......@@ -119,6 +145,11 @@ int32_t exprTreeValidateTree(char* msgbuf, tExprNode *pExpr) {
}
if (pExpr->nodeType == TSQL_NODE_VALUE) {
pExpr->resultType = pExpr->pVal->nType;
if (pExpr->pVal->nType == TSDB_DATA_TYPE_TIMESTAMP) {
//convert timestamp value according to db precision
pExpr->pVal->i64 = convertTimePrecision(pExpr->pVal->i64, TSDB_TIME_PRECISION_NANO,
pExpr->precision);
}
if (!IS_VAR_DATA_TYPE(pExpr->pVal->nType)) {
pExpr->resultBytes = tDataTypes[pExpr->pVal->nType].bytes;
} else {
......@@ -501,7 +532,11 @@ void exprTreeExprNodeTraverse(tExprNode *pExpr, int32_t numOfRows, tExprOperandI
OperatorFn(leftIn, leftNum, leftType, rightIn, rightNum, rightType, output->data, fnOrder);
output->numOfRows = MAX(leftNum, rightNum);
if(leftType == TSDB_DATA_TYPE_TIMESTAMP || rightType == TSDB_DATA_TYPE_TIMESTAMP) {
output->type = TSDB_DATA_TYPE_BIGINT;
} else {
output->type = TSDB_DATA_TYPE_DOUBLE;
}
output->bytes = tDataTypes[output->type].bytes;
tfree(ltmp);
......@@ -1220,6 +1255,348 @@ int32_t exprValidateMathNode(tExprNode *pExpr) {
return TSDB_CODE_SUCCESS;
}
int32_t exprValidateTimeNode(char *msgbuf, tExprNode *pExpr) {
const char* msg1 = "invalid timestamp digits";
const char* msg2 = "param must be positive integer";
switch (pExpr->_func.functionId) {
case TSDB_FUNC_SCALAR_NOW:
case TSDB_FUNC_SCALAR_TODAY: {
if (pExpr->_func.numChildren != 0 || pExpr->_func.pChildren != NULL) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
pExpr->_func.numChildren = 1;
pExpr->_func.pChildren = (tExprNode**)tcalloc(1, sizeof(tExprNode*));
if (!pExpr->_func.pChildren) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
pExpr->_func.pChildren[0] = (tExprNode*)tcalloc(1, sizeof(tExprNode));
tExprNode* child = pExpr->_func.pChildren[0];
if (!child) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
child->nodeType = TSQL_NODE_VALUE;
child->resultType = TSDB_DATA_TYPE_TIMESTAMP;
child->resultBytes = (int16_t)tDataTypes[child->resultType].bytes;
child->pVal = (tVariant *)tcalloc(1, sizeof(tVariant));
if (!child->pVal) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
child->pVal->nType = TSDB_DATA_TYPE_TIMESTAMP;
int64_t timeVal;
if (pExpr->_func.functionId == TSDB_FUNC_SCALAR_NOW) {
switch(pExpr->precision) {
case TSDB_TIME_PRECISION_MILLI: {
timeVal = taosGetTimestampMs();
break;
}
case TSDB_TIME_PRECISION_MICRO: {
timeVal = taosGetTimestampUs();
break;
}
case TSDB_TIME_PRECISION_NANO: {
timeVal = taosGetTimestampNs();
break;
}
default: {
assert(false);
break;
}
}
child->pVal->i64 = timeVal;
} else {
timeVal = taosGetTimestampToday() * 1000;
child->pVal->i64 = convertTimePrecision(timeVal, TSDB_TIME_PRECISION_MILLI, pExpr->precision);
}
pExpr->resultType = TSDB_DATA_TYPE_TIMESTAMP;
pExpr->resultBytes = (int16_t)tDataTypes[pExpr->resultType].bytes;
break;
}
case TSDB_FUNC_SCALAR_TIMEZONE: {
if (pExpr->_func.numChildren != 0 || pExpr->_func.pChildren != NULL) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
pExpr->_func.numChildren = 1;
pExpr->_func.pChildren = (tExprNode**)tcalloc(1, sizeof(tExprNode*));
if (!pExpr->_func.pChildren) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
pExpr->_func.pChildren[0] = (tExprNode*)tcalloc(1, sizeof(tExprNode));
tExprNode* child = pExpr->_func.pChildren[0];
if (!child) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
child->nodeType = TSQL_NODE_VALUE;
child->resultType = TSDB_DATA_TYPE_BINARY;
child->resultBytes = TSDB_TIMEZONE_LEN;
child->pVal = (tVariant *)tcalloc(1, sizeof(tVariant));
if (!child->pVal) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
child->pVal->nType = TSDB_DATA_TYPE_BINARY;
child->pVal->nLen = TSDB_TIMEZONE_LEN;
child->pVal->pz = tcalloc(TSDB_TIMEZONE_LEN, sizeof(char));
if (!child->pVal->pz) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
memcpy(child->pVal->pz, tsTimezone, TSDB_TIMEZONE_LEN);
pExpr->resultType = TSDB_DATA_TYPE_BINARY;
pExpr->resultBytes = TSDB_TIMEZONE_LEN;
break;
}
case TSDB_FUNC_SCALAR_TO_ISO8601: {
if (pExpr->_func.numChildren != 1) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
tExprNode *child = pExpr->_func.pChildren[0];
if (child->resultType != TSDB_DATA_TYPE_BIGINT &&
child->resultType != TSDB_DATA_TYPE_TIMESTAMP) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if (child->nodeType == TSQL_NODE_VALUE) {
if (child->pVal->i64 < 0) {
return exprInvalidOperationMsg(msgbuf, msg2);
}
char fraction[32] = {0};
NUM_TO_STRING(child->resultType, &child->pVal->i64, sizeof(fraction), fraction);
int32_t tsDigits = strlen(fraction);
if (tsDigits > TSDB_TIME_PRECISION_SEC_DIGITS &&
tsDigits != TSDB_TIME_PRECISION_MILLI_DIGITS &&
tsDigits != TSDB_TIME_PRECISION_MICRO_DIGITS &&
tsDigits != TSDB_TIME_PRECISION_NANO_DIGITS) {
return exprInvalidOperationMsg(msgbuf, msg1);
}
} else if (child->nodeType == TSQL_NODE_COL) {
if (child->pSchema->type != TSDB_DATA_TYPE_TIMESTAMP) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
}
pExpr->resultType = TSDB_DATA_TYPE_BINARY;
pExpr->resultBytes = 64;//2013-04-12T15:52:01.123000000+0800
break;
}
case TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP: {
if (pExpr->_func.numChildren != 1) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
tExprNode *child0 = pExpr->_func.pChildren[0];
if (child0->resultType != TSDB_DATA_TYPE_BINARY &&
child0->resultType != TSDB_DATA_TYPE_NCHAR) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
pExpr->_func.numChildren = 2;
tExprNode **pChildren = (tExprNode**)trealloc(pExpr->_func.pChildren, pExpr->_func.numChildren * sizeof(tExprNode*));
if (!pChildren) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
pExpr->_func.pChildren = pChildren;
pExpr->_func.pChildren[0] = child0;
pExpr->_func.pChildren[1] = (tExprNode*)tcalloc(1, sizeof(tExprNode));
tExprNode* child1 = pExpr->_func.pChildren[1];
if (!child1) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
child1->nodeType = TSQL_NODE_VALUE;
child1->resultType = TSDB_DATA_TYPE_BIGINT;
child1->resultBytes = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
child1->pVal = (tVariant *)tcalloc(1, sizeof(tVariant));
if (!child1->pVal) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
child1->pVal->nType = TSDB_DATA_TYPE_BIGINT;
child1->pVal->nLen = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
child1->pVal->i64 = (int64_t)pExpr->precision;
pExpr->resultType = TSDB_DATA_TYPE_BIGINT;
pExpr->resultBytes = (int16_t)tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
break;
}
case TSDB_FUNC_SCALAR_TIMETRUNCATE: {
if (pExpr->_func.numChildren != 2) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
tExprNode *child0 = pExpr->_func.pChildren[0];
tExprNode *child1 = pExpr->_func.pChildren[1];
if (child0->resultType != TSDB_DATA_TYPE_BIGINT &&
child0->resultType != TSDB_DATA_TYPE_TIMESTAMP &&
child0->resultType != TSDB_DATA_TYPE_BINARY &&
child0->resultType != TSDB_DATA_TYPE_NCHAR) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if (child0->nodeType == TSQL_NODE_VALUE) { /* datetime format or epoch */
if (child0->pVal->nType != TSDB_DATA_TYPE_BIGINT &&
child0->pVal->nType != TSDB_DATA_TYPE_BINARY &&
child0->pVal->nType != TSDB_DATA_TYPE_NCHAR) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if (child0->pVal->nType == TSDB_DATA_TYPE_BIGINT) {
char fraction[32] = {0};
NUM_TO_STRING(child0->resultType, &child0->pVal->i64, sizeof(fraction), fraction);
int32_t tsDigits = strlen(fraction);
if (tsDigits > TSDB_TIME_PRECISION_SEC_DIGITS &&
tsDigits != TSDB_TIME_PRECISION_MILLI_DIGITS &&
tsDigits != TSDB_TIME_PRECISION_MICRO_DIGITS &&
tsDigits != TSDB_TIME_PRECISION_NANO_DIGITS) {
return exprInvalidOperationMsg(msgbuf, msg1);
}
}
} else if (child0->nodeType == TSQL_NODE_COL) { /* ts column */
if (child0->pSchema->type != TSDB_DATA_TYPE_TIMESTAMP) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
} else {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
//time unit
if (child1->nodeType != TSQL_NODE_VALUE ||
child1->resultType != TSDB_DATA_TYPE_TIMESTAMP ||
child1->pVal->nType != TSDB_DATA_TYPE_TIMESTAMP) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
//db precision
pExpr->_func.numChildren = 3;
tExprNode **pChildren = (tExprNode**)trealloc(pExpr->_func.pChildren, pExpr->_func.numChildren * sizeof(tExprNode*));
if (!pChildren) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
pExpr->_func.pChildren = pChildren;
pExpr->_func.pChildren[0] = child0;
pExpr->_func.pChildren[1] = child1;
pExpr->_func.pChildren[2] = (tExprNode*)tcalloc(1, sizeof(tExprNode));
tExprNode* child2 = pExpr->_func.pChildren[2];
if (!child2) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
child2->nodeType = TSQL_NODE_VALUE;
child2->resultType = TSDB_DATA_TYPE_BIGINT;
child2->resultBytes = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
child2->pVal = (tVariant *)tcalloc(1, sizeof(tVariant));
if (!child2->pVal) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
child2->pVal->nType = TSDB_DATA_TYPE_BIGINT;
child2->pVal->nLen = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
child2->pVal->i64 = (int64_t)pExpr->precision;
pExpr->resultType = TSDB_DATA_TYPE_TIMESTAMP;
pExpr->resultBytes = (int16_t)tDataTypes[TSDB_DATA_TYPE_TIMESTAMP].bytes;
break;
}
case TSDB_FUNC_SCALAR_TIMEDIFF: {
if (pExpr->_func.numChildren != 2 && pExpr->_func.numChildren != 3) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
tExprNode **child = (tExprNode **)tcalloc(pExpr->_func.numChildren, sizeof(tExprNode *));
for (int32_t i = 0; i < pExpr->_func.numChildren; ++i) {
child[i] = pExpr->_func.pChildren[i];
}
//operands
for (int32_t i = 0; i < 2; ++i) {
if (child[i]->resultType != TSDB_DATA_TYPE_BIGINT &&
child[i]->resultType != TSDB_DATA_TYPE_TIMESTAMP &&
child[i]->resultType != TSDB_DATA_TYPE_BINARY &&
child[i]->resultType != TSDB_DATA_TYPE_NCHAR) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if (child[i]->nodeType == TSQL_NODE_VALUE) { /* datetime format or epoch */
if (child[i]->pVal->nType != TSDB_DATA_TYPE_BIGINT &&
child[i]->pVal->nType != TSDB_DATA_TYPE_BINARY &&
child[i]->pVal->nType != TSDB_DATA_TYPE_NCHAR) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if (child[i]->pVal->nType == TSDB_DATA_TYPE_BIGINT) {
char fraction[32] = {0};
NUM_TO_STRING(child[i]->resultType, &child[i]->pVal->i64, sizeof(fraction), fraction);
int32_t tsDigits = strlen(fraction);
if (tsDigits > TSDB_TIME_PRECISION_SEC_DIGITS &&
tsDigits != TSDB_TIME_PRECISION_MILLI_DIGITS &&
tsDigits != TSDB_TIME_PRECISION_MICRO_DIGITS &&
tsDigits != TSDB_TIME_PRECISION_NANO_DIGITS) {
return exprInvalidOperationMsg(msgbuf, msg1);
}
}
} else if (child[i]->nodeType == TSQL_NODE_COL) { /* ts column */
if (child[i]->pSchema->type != TSDB_DATA_TYPE_TIMESTAMP) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
} else {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
}
//time unit
if (pExpr->_func.numChildren == 3) {
if (child[2]->nodeType != TSQL_NODE_VALUE ||
child[2]->pVal->nType != TSDB_DATA_TYPE_TIMESTAMP) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
}
//db precision
pExpr->_func.numChildren++;
tExprNode **pChildren = (tExprNode**)trealloc(pExpr->_func.pChildren, pExpr->_func.numChildren * sizeof(tExprNode*));
if (!pChildren) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
pExpr->_func.pChildren = pChildren;
for (int32_t i = 0; i < pExpr->_func.numChildren - 1; ++i) {
pExpr->_func.pChildren[i] = child[i];
}
tExprNode* childPrec;
if (pExpr->_func.numChildren == 3) {
pExpr->_func.pChildren[2] = (tExprNode*)tcalloc(1, sizeof(tExprNode));
childPrec = pExpr->_func.pChildren[2];
} else {
pExpr->_func.pChildren[3] = (tExprNode*)tcalloc(1, sizeof(tExprNode));
childPrec = pExpr->_func.pChildren[3];
}
if (!childPrec) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
childPrec->nodeType = TSQL_NODE_VALUE;
childPrec->resultType = TSDB_DATA_TYPE_BIGINT;
childPrec->resultBytes = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
childPrec->pVal = (tVariant *)tcalloc(1, sizeof(tVariant));
if (!childPrec->pVal) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
childPrec->pVal->nType = TSDB_DATA_TYPE_BIGINT;
childPrec->pVal->nLen = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
childPrec->pVal->i64 = (int64_t)pExpr->precision;
free(child);
pExpr->resultType = TSDB_DATA_TYPE_BIGINT;
pExpr->resultBytes = (int16_t)tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
break;
}
default: {
assert(false);
break;
}
}
return TSDB_CODE_SUCCESS;
}
void vectorConcat(int16_t functionId, tExprOperandInfo* pInputs, int32_t numInputs, tExprOperandInfo* pOutput, int32_t order) {
assert(functionId == TSDB_FUNC_SCALAR_CONCAT && numInputs >=2 && order == TSDB_ORDER_ASC);
for (int i = 0; i < numInputs; ++i) {
......@@ -1851,6 +2228,421 @@ void vectorMathFunc(int16_t functionId, tExprOperandInfo *pInputs, int32_t numIn
free(inputData);
}
void vectorTimeFunc(int16_t functionId, tExprOperandInfo *pInputs, int32_t numInputs, tExprOperandInfo* pOutput, int32_t order) {
for (int i = 0; i < numInputs; ++i) {
assert(pInputs[i].numOfRows == 1 || pInputs[i].numOfRows == pOutput->numOfRows);
}
char* outputData = NULL;
char** inputData = calloc(numInputs, sizeof(char*));
for (int i = 0; i < pOutput->numOfRows; ++i) {
for (int j = 0; j < numInputs; ++j) {
if (pInputs[j].numOfRows == 1) {
inputData[j] = pInputs[j].data;
} else {
inputData[j] = pInputs[j].data + i * pInputs[j].bytes;
}
}
outputData = pOutput->data + i * pOutput->bytes;
bool hasNullInputs = false;
for (int j = 0; j < numInputs; ++j) {
if (isNull(inputData[j], pInputs[j].type)) {
hasNullInputs = true;
setNull(outputData, pOutput->type, pOutput->bytes);
}
}
if (!hasNullInputs) {
switch (functionId) {
case TSDB_FUNC_SCALAR_NOW:
case TSDB_FUNC_SCALAR_TODAY: {
assert(numInputs == 1);
int64_t result;
GET_TYPED_DATA(result, int64_t, pInputs[0].type, inputData[0]);
SET_TYPED_DATA(outputData, pOutput->type, result);
break;
}
case TSDB_FUNC_SCALAR_TIMEZONE: {
assert(numInputs == 1);
memcpy(((char*)varDataVal(outputData)), varDataVal(inputData[0]), varDataLen(inputData[0]));
varDataSetLen(outputData, varDataLen(inputData[0]));
break;
}
case TSDB_FUNC_SCALAR_TO_ISO8601: {
assert(numInputs == 1);
assert(pInputs[0].type == TSDB_DATA_TYPE_BIGINT || pInputs[0].type == TSDB_DATA_TYPE_TIMESTAMP);
char fraction[20] = {0};
bool hasFraction = false;
NUM_TO_STRING(pInputs[0].type, inputData[0], sizeof(fraction), fraction);
int32_t tsDigits = strlen(fraction);
char buf[64] = {0};
int64_t timeVal;
GET_TYPED_DATA(timeVal, int64_t, pInputs[0].type, inputData[0]);
if (tsDigits > TSDB_TIME_PRECISION_SEC_DIGITS) {
if (tsDigits == TSDB_TIME_PRECISION_MILLI_DIGITS) {
timeVal = timeVal / 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
timeVal = timeVal / (1000 * 1000);
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal = timeVal / (1000 * 1000 * 1000);
} else {
assert(0);
}
hasFraction = true;
memmove(fraction, fraction + TSDB_TIME_PRECISION_SEC_DIGITS, TSDB_TIME_PRECISION_SEC_DIGITS);
}
struct tm *tmInfo = localtime((const time_t *)&timeVal);
strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S%z", tmInfo);
int32_t len = (int32_t)strlen(buf);
if (hasFraction) {
int32_t fracLen = strlen(fraction) + 1;
char *tzInfo = strchr(buf, '+');
if (tzInfo) {
memmove(tzInfo + fracLen, tzInfo, strlen(tzInfo));
} else {
tzInfo = strchr(buf, '-');
memmove(tzInfo + fracLen, tzInfo, strlen(tzInfo));
}
char tmp[32];
sprintf(tmp, ".%s", fraction);
memcpy(tzInfo, tmp, fracLen);
len += fracLen;
}
memcpy(((char*)varDataVal(outputData)), buf, len);
varDataSetLen(outputData, len);
break;
}
case TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP: {
assert(numInputs == 2);
assert(pInputs[0].type == TSDB_DATA_TYPE_BINARY || pInputs[0].type == TSDB_DATA_TYPE_NCHAR);
assert(pInputs[1].type == TSDB_DATA_TYPE_BIGINT);
int64_t timeVal = 0;
int64_t timePrec;
GET_TYPED_DATA(timePrec, int64_t, pInputs[1].type, inputData[1]);
if (pInputs[0].type == TSDB_DATA_TYPE_BINARY) {
taosParseTime((char *)varDataVal(inputData[0]), &timeVal, pInputs[0].bytes, timePrec, 0);
} else {
int32_t charLen = varDataLen(inputData[0]);
char *newColData = calloc(1, charLen / TSDB_NCHAR_SIZE + 1);
int len = taosUcs4ToMbs(varDataVal(inputData[0]), charLen, newColData);
if (len < 0){
uError("vectorTimeFunc taosUcs4ToMbs error");
tfree(newColData);
return;
}
newColData[len] = 0;
taosParseTime(newColData, &timeVal, len + 1, timePrec, 0);
tfree(newColData);
}
SET_TYPED_DATA(outputData, pOutput->type, timeVal);
break;
}
case TSDB_FUNC_SCALAR_TIMETRUNCATE: {
assert(numInputs == 3);
assert(pInputs[0].type == TSDB_DATA_TYPE_BIGINT ||
pInputs[0].type == TSDB_DATA_TYPE_TIMESTAMP ||
pInputs[0].type == TSDB_DATA_TYPE_BINARY ||
pInputs[0].type == TSDB_DATA_TYPE_NCHAR);
assert(pInputs[1].type == TSDB_DATA_TYPE_TIMESTAMP);
assert(pInputs[2].type == TSDB_DATA_TYPE_BIGINT);
int64_t timeUnit, timePrec, timeVal = 0;
GET_TYPED_DATA(timeUnit, int64_t, pInputs[1].type, inputData[1]);
GET_TYPED_DATA(timePrec, int64_t, pInputs[2].type, inputData[2]);
int64_t factor = (timePrec == TSDB_TIME_PRECISION_MILLI) ? 1000 :
(timePrec == TSDB_TIME_PRECISION_MICRO ? 1000000 : 1000000000);
if (pInputs[0].type == TSDB_DATA_TYPE_BINARY ||
pInputs[0].type == TSDB_DATA_TYPE_NCHAR) { /* datetime format strings */
taosParseTime((char *)varDataVal(inputData[0]), &timeVal, pInputs[0].bytes, TSDB_TIME_PRECISION_NANO, 0);
//If converted value is less than 10digits in second, use value in second instead
int64_t timeValSec = timeVal / 1000000000;
if (timeValSec < 1000000000) {
timeVal = timeValSec;
}
} else if (pInputs[0].type == TSDB_DATA_TYPE_BIGINT) { /* unix timestamp */
GET_TYPED_DATA(timeVal, int64_t, pInputs[0].type, inputData[0]);
} else if (pInputs[0].type == TSDB_DATA_TYPE_TIMESTAMP) { /* timestamp column*/
GET_TYPED_DATA(timeVal, int64_t, pInputs[0].type, inputData[0]);
int64_t timeValSec = timeVal / factor;
if (timeValSec < 1000000000) {
timeVal = timeValSec;
}
} else {
assert(0);
}
char buf[20] = {0};
NUM_TO_STRING(TSDB_DATA_TYPE_BIGINT, &timeVal, sizeof(buf), buf);
int32_t tsDigits = strlen(buf);
timeUnit = timeUnit * 1000 / factor;
switch (timeUnit) {
case 0: { /* 1u */
if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal = timeVal / 1000 * 1000;
//} else if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
// //timeVal = timeVal / 1000;
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
timeVal = timeVal * factor;
} else {
timeVal = timeVal * 1;
}
break;
}
case 1: { /* 1a */
if (tsDigits == TSDB_TIME_PRECISION_MILLI_DIGITS) {
timeVal = timeVal * 1;
} else if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
timeVal = timeVal / 1000 * 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal = timeVal / 1000000 * 1000000;
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS){
timeVal = timeVal * factor;
} else {
assert(0);
}
break;
}
case 1000: { /* 1s */
if (tsDigits == TSDB_TIME_PRECISION_MILLI_DIGITS) {
timeVal = timeVal / 1000 * 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
timeVal = timeVal / 1000000 * 1000000;
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal = timeVal / 1000000000 * 1000000000;
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
timeVal = timeVal * factor;
} else {
assert(0);
}
break;
}
case 60000: { /* 1m */
if (tsDigits == TSDB_TIME_PRECISION_MILLI_DIGITS) {
timeVal = timeVal / 1000 / 60 * 60 * 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
timeVal = timeVal / 1000000 / 60 * 60 * 1000000;
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal = timeVal / 1000000000 / 60 * 60 * 1000000000;
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
timeVal = timeVal * factor / factor / 60 * 60 * factor;
} else {
assert(0);
}
break;
}
case 3600000: { /* 1h */
if (tsDigits == TSDB_TIME_PRECISION_MILLI_DIGITS) {
timeVal = timeVal / 1000 / 3600 * 3600 * 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
timeVal = timeVal / 1000000 / 3600 * 3600 * 1000000;
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal = timeVal / 1000000000 / 3600 * 3600 * 1000000000;
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
timeVal = timeVal * factor / factor / 3600 * 3600 * factor;
} else {
assert(0);
}
break;
}
case 86400000: { /* 1d */
if (tsDigits == TSDB_TIME_PRECISION_MILLI_DIGITS) {
timeVal = timeVal / 1000 / 86400 * 86400 * 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
timeVal = timeVal / 1000000 / 86400 * 86400 * 1000000;
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal = timeVal / 1000000000 / 86400 * 86400 * 1000000000;
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
timeVal = timeVal * factor / factor / 86400* 86400 * factor;
} else {
assert(0);
}
break;
}
case 604800000: { /* 1w */
if (tsDigits == TSDB_TIME_PRECISION_MILLI_DIGITS) {
timeVal = timeVal / 1000 / 604800 * 604800 * 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
timeVal = timeVal / 1000000 / 604800 * 604800 * 1000000;
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal = timeVal / 1000000000 / 604800 * 604800 * 1000000000;
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
timeVal = timeVal * factor / factor / 604800 * 604800* factor;
} else {
assert(0);
}
break;
}
default: {
timeVal = timeVal * 1;
break;
}
}
//truncate the timestamp to db precision
switch (timePrec) {
case TSDB_TIME_PRECISION_MILLI: {
if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
timeVal = timeVal / 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal = timeVal / 1000000;
}
break;
}
case TSDB_TIME_PRECISION_MICRO: {
if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal = timeVal / 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_MILLI_DIGITS) {
timeVal = timeVal * 1000;
}
break;
}
case TSDB_TIME_PRECISION_NANO: {
if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
timeVal = timeVal * 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_MILLI_DIGITS) {
timeVal = timeVal * 1000000;
}
break;
}
}
SET_TYPED_DATA(outputData, pOutput->type, timeVal);
break;
}
case TSDB_FUNC_SCALAR_TIMEDIFF: {
assert(numInputs == 3 || numInputs == 4);
int64_t timePrec, timeUnit = -1;
int64_t timeVal[2] = {0};
if (numInputs == 3) {
assert(pInputs[2].type == TSDB_DATA_TYPE_BIGINT);
GET_TYPED_DATA(timePrec, int64_t, pInputs[2].type, inputData[2]);
} else {
assert(pInputs[2].type == TSDB_DATA_TYPE_TIMESTAMP);
assert(pInputs[3].type == TSDB_DATA_TYPE_BIGINT);
GET_TYPED_DATA(timeUnit, int64_t, pInputs[2].type, inputData[2]);
GET_TYPED_DATA(timePrec, int64_t, pInputs[3].type, inputData[3]);
}
for (int32_t j = 0; j < 2; ++j) {
assert(pInputs[j].type == TSDB_DATA_TYPE_BIGINT ||
pInputs[j].type == TSDB_DATA_TYPE_TIMESTAMP ||
pInputs[j].type == TSDB_DATA_TYPE_BINARY ||
pInputs[j].type == TSDB_DATA_TYPE_NCHAR);
if (pInputs[j].type == TSDB_DATA_TYPE_BINARY || /* datetime format strings */
pInputs[j].type == TSDB_DATA_TYPE_NCHAR) {
taosParseTime((char *)varDataVal(inputData[j]), &timeVal[j], pInputs[j].bytes, TSDB_TIME_PRECISION_NANO, 0);
} else if (pInputs[j].type == TSDB_DATA_TYPE_BIGINT ||
pInputs[j].type == TSDB_DATA_TYPE_TIMESTAMP) { /* unix timestamp or ts column*/
GET_TYPED_DATA(timeVal[j], int64_t, pInputs[j].type, inputData[j]);
if (pInputs[j].type == TSDB_DATA_TYPE_TIMESTAMP) {
int64_t factor = (timePrec == TSDB_TIME_PRECISION_MILLI) ? 1000 :
(timePrec == TSDB_TIME_PRECISION_MICRO ? 1000000 : 1000000000);
int64_t timeValSec = timeVal[j] / factor;
if (timeValSec < 1000000000) {
timeVal[j] = timeValSec;
}
}
char buf[20] = {0};
NUM_TO_STRING(TSDB_DATA_TYPE_BIGINT, &timeVal[j], sizeof(buf), buf);
int32_t tsDigits = strlen(buf);
if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
timeVal[j] = timeVal[j] * 1000000000;
} else if (tsDigits == TSDB_TIME_PRECISION_MILLI_DIGITS) {
timeVal[j] = timeVal[j] * 1000000;
} else if (tsDigits == TSDB_TIME_PRECISION_MICRO_DIGITS) {
timeVal[j] = timeVal[j] * 1000;
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
timeVal[j] = timeVal[j];
}
}
}
int64_t result = (timeVal[0] >= timeVal[1]) ? (timeVal[0] - timeVal[1]) :
(timeVal[1] - timeVal[0]);
if (timeUnit < 0) { // if no time unit given use db precision
switch(timePrec) {
case TSDB_TIME_PRECISION_MILLI: {
result = result / 1000000;
break;
}
case TSDB_TIME_PRECISION_MICRO: {
result = result / 1000;
break;
}
case TSDB_TIME_PRECISION_NANO: {
result = result / 1;
break;
}
}
} else {
int64_t factor = (timePrec == TSDB_TIME_PRECISION_MILLI) ? 1000 :
(timePrec == TSDB_TIME_PRECISION_MICRO ? 1000000 : 1000000000);
timeUnit = timeUnit * 1000 / factor;
switch(timeUnit) {
case 0: { /* 1u */
result = result / 1000;
break;
}
case 1: { /* 1a */
result = result / 1000000;
break;
}
case 1000: { /* 1s */
result = result / 1000000000;
break;
}
case 60000: { /* 1m */
result = result / 1000000000 / 60;
break;
}
case 3600000: { /* 1h */
result = result / 1000000000 / 3600;
break;
}
case 86400000: { /* 1d */
result = result / 1000000000 / 86400;
break;
}
case 604800000: { /* 1w */
result = result / 1000000000 / 604800;
break;
}
default: {
break;
}
}
}
SET_TYPED_DATA(outputData, pOutput->type, result);
break;
}
default: {
assert(false);
break;
}
} // end switch function(id)
} // end can produce value, all child has value
} // end for each row
free(inputData);
}
_expr_scalar_function_t getExprScalarFunction(uint16_t funcId) {
assert(TSDB_FUNC_IS_SCALAR(funcId));
int16_t scalaIdx = TSDB_FUNC_SCALAR_INDEX(funcId);
......@@ -1974,5 +2766,40 @@ tScalarFunctionInfo aScalarFunctions[] = {
"substr",
vectorSubstrFunc
},
{
TSDB_FUNC_SCALAR_NOW,
"now",
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TODAY,
"today",
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TIMEZONE,
"timezone",
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TO_ISO8601,
"to_iso8601",
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TO_UNIXTIMESTAMP,
"to_unixtimestamp",
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TIMETRUNCATE,
"timetruncate",
vectorTimeFunc
},
{
TSDB_FUNC_SCALAR_TIMEDIFF,
"timediff",
vectorTimeFunc
},
};
......@@ -93,6 +93,8 @@ void tVariantCreateExt(tVariant *pVar, SStrToken *token, int32_t optrType, bool
case TSDB_DATA_TYPE_TIMESTAMP: {
if (optrType == TK_NOW) {
pVar->i64 = taosGetTimestamp(TSDB_TIME_PRECISION_NANO);
} else if (optrType == TK_TODAY) {
pVar->i64 = taosGetTimestampToday() * 1000000000;
} else if (optrType == TK_PLUS || optrType == TK_MINUS) {
char unit = 0;
ret = parseAbsoluteDuration(token->z, token->n, &pVar->i64, &unit, TSDB_TIME_PRECISION_NANO);
......@@ -282,7 +284,7 @@ void tVariantAssign(tVariant *pDst, const tVariant *pSrc) {
}
if (IS_NUMERIC_TYPE(pSrc->nType) || (pSrc->nType == TSDB_DATA_TYPE_BOOL)) {
if (IS_NUMERIC_TYPE(pSrc->nType) || IS_TIMESTAMP_TYPE(pSrc->nType) || (pSrc->nType == TSDB_DATA_TYPE_BOOL)) {
pDst->i64 = pSrc->i64;
} else if (pSrc->nType == TSDB_DATA_TYPE_POINTER_ARRAY) { // this is only for string array
size_t num = taosArrayGetSize(pSrc->arr);
......@@ -540,7 +542,7 @@ static FORCE_INLINE int32_t convertToInteger(tVariant *pVariant, int64_t *result
}
errno = 0;
if (IS_SIGNED_NUMERIC_TYPE(pVariant->nType) || (pVariant->nType == TSDB_DATA_TYPE_BOOL)) {
if (IS_SIGNED_NUMERIC_TYPE(pVariant->nType) || IS_TIMESTAMP_TYPE(pVariant->nType) || (pVariant->nType == TSDB_DATA_TYPE_BOOL)) {
*result = pVariant->i64;
} else if (IS_UNSIGNED_NUMERIC_TYPE(pVariant->nType)) {
*result = pVariant->u64;
......
......@@ -106,6 +106,11 @@ extern const int32_t TYPE_BYTES[16];
#define TSDB_TIME_PRECISION_MICRO_STR "us"
#define TSDB_TIME_PRECISION_NANO_STR "ns"
#define TSDB_TIME_PRECISION_SEC_DIGITS 10
#define TSDB_TIME_PRECISION_MILLI_DIGITS 13
#define TSDB_TIME_PRECISION_MICRO_DIGITS 16
#define TSDB_TIME_PRECISION_NANO_DIGITS 19
#define TSDB_TICK_PER_SECOND(precision) ((int64_t)((precision)==TSDB_TIME_PRECISION_MILLI ? 1e3L : ((precision)==TSDB_TIME_PRECISION_MICRO ? 1e6L : 1e9L)))
#define T_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
......@@ -137,6 +142,7 @@ do { \
#define GET_DOUBLE_VAL(x) taos_align_get_double(x)
#define SET_FLOAT_VAL(x, y) { float z = (float)(y); (*(int32_t*) x = *(int32_t*)(&z)); }
#define SET_DOUBLE_VAL(x, y) { double z = (double)(y); (*(int64_t*) x = *(int64_t*)(&z)); }
#define SET_TIMESTAMP_VAL(x, y) { int64_t z = (int64_t)(y); (*(int64_t*) x = *(int64_t*)(&z)); }
#define SET_FLOAT_PTR(x, y) { (*(int32_t*) x = *(int32_t*)y); }
#define SET_DOUBLE_PTR(x, y) { (*(int64_t*) x = *(int64_t*)y); }
#else
......@@ -144,6 +150,7 @@ do { \
#define GET_DOUBLE_VAL(x) (*(double *)(x))
#define SET_FLOAT_VAL(x, y) { (*(float *)(x)) = (float)(y); }
#define SET_DOUBLE_VAL(x, y) { (*(double *)(x)) = (double)(y); }
#define SET_TIMESTAMP_VAL(x, y) { (*(int64_t *)(x)) = (int64_t)(y); }
#define SET_FLOAT_PTR(x, y) { (*(float *)(x)) = (*(float *)(y)); }
#define SET_DOUBLE_PTR(x, y) { (*(double *)(x)) = (*(double *)(y)); }
#endif
......
......@@ -163,61 +163,62 @@
#define TK_SLIMIT 145
#define TK_SOFFSET 146
#define TK_WHERE 147
#define TK_RESET 148
#define TK_QUERY 149
#define TK_SYNCDB 150
#define TK_ADD 151
#define TK_COLUMN 152
#define TK_MODIFY 153
#define TK_TAG 154
#define TK_CHANGE 155
#define TK_SET 156
#define TK_KILL 157
#define TK_CONNECTION 158
#define TK_STREAM 159
#define TK_COLON 160
#define TK_ABORT 161
#define TK_AFTER 162
#define TK_ATTACH 163
#define TK_BEFORE 164
#define TK_BEGIN 165
#define TK_CASCADE 166
#define TK_CLUSTER 167
#define TK_CONFLICT 168
#define TK_COPY 169
#define TK_DEFERRED 170
#define TK_DELIMITERS 171
#define TK_DETACH 172
#define TK_EACH 173
#define TK_END 174
#define TK_EXPLAIN 175
#define TK_FAIL 176
#define TK_FOR 177
#define TK_IGNORE 178
#define TK_IMMEDIATE 179
#define TK_INITIALLY 180
#define TK_INSTEAD 181
#define TK_KEY 182
#define TK_OF 183
#define TK_RAISE 184
#define TK_REPLACE 185
#define TK_RESTRICT 186
#define TK_ROW 187
#define TK_STATEMENT 188
#define TK_TRIGGER 189
#define TK_VIEW 190
#define TK_IPTOKEN 191
#define TK_SEMI 192
#define TK_NONE 193
#define TK_PREV 194
#define TK_LINEAR 195
#define TK_IMPORT 196
#define TK_TBNAME 197
#define TK_JOIN 198
#define TK_INSERT 199
#define TK_INTO 200
#define TK_VALUES 201
#define TK_FILE 202
#define TK_TODAY 148
#define TK_RESET 149
#define TK_QUERY 150
#define TK_SYNCDB 151
#define TK_ADD 152
#define TK_COLUMN 153
#define TK_MODIFY 154
#define TK_TAG 155
#define TK_CHANGE 156
#define TK_SET 157
#define TK_KILL 158
#define TK_CONNECTION 159
#define TK_STREAM 160
#define TK_COLON 161
#define TK_ABORT 162
#define TK_AFTER 163
#define TK_ATTACH 164
#define TK_BEFORE 165
#define TK_BEGIN 166
#define TK_CASCADE 167
#define TK_CLUSTER 168
#define TK_CONFLICT 169
#define TK_COPY 170
#define TK_DEFERRED 171
#define TK_DELIMITERS 172
#define TK_DETACH 173
#define TK_EACH 174
#define TK_END 175
#define TK_EXPLAIN 176
#define TK_FAIL 177
#define TK_FOR 178
#define TK_IGNORE 179
#define TK_IMMEDIATE 180
#define TK_INITIALLY 181
#define TK_INSTEAD 182
#define TK_KEY 183
#define TK_OF 184
#define TK_RAISE 185
#define TK_REPLACE 186
#define TK_RESTRICT 187
#define TK_ROW 188
#define TK_STATEMENT 189
#define TK_TRIGGER 190
#define TK_VIEW 191
#define TK_IPTOKEN 192
#define TK_SEMI 193
#define TK_NONE 194
#define TK_PREV 195
#define TK_LINEAR 196
#define TK_IMPORT 197
#define TK_TBNAME 198
#define TK_JOIN 199
#define TK_INSERT 200
#define TK_INTO 201
#define TK_VALUES 202
#define TK_FILE 203
#define TK_SPACE 300
......
......@@ -107,7 +107,7 @@ typedef struct {
case TSDB_DATA_TYPE_USMALLINT: \
(_v) = (_finalType)GET_UINT16_VAL(_data); \
break; \
case TSDB_DATA_TYPE_TIMESTAMP:\
case TSDB_DATA_TYPE_TIMESTAMP: \
case TSDB_DATA_TYPE_BIGINT: \
(_v) = (_finalType)(GET_INT64_VAL(_data)); \
break; \
......@@ -145,6 +145,7 @@ typedef struct {
case TSDB_DATA_TYPE_USMALLINT: \
*(uint16_t *)(_v) = (uint16_t)(_data); \
break; \
case TSDB_DATA_TYPE_TIMESTAMP: \
case TSDB_DATA_TYPE_BIGINT: \
*(int64_t *)(_v) = (int64_t)(_data); \
break; \
......@@ -181,6 +182,7 @@ typedef struct {
case TSDB_DATA_TYPE_USMALLINT: \
snprintf(_output, (int32_t)(_outputBytes), "%d", *(uint16_t *)(_input)); \
break; \
case TSDB_DATA_TYPE_TIMESTAMP: \
case TSDB_DATA_TYPE_BIGINT: \
snprintf(_output, (int32_t)(_outputBytes), "%" PRId64, *(int64_t *)(_input)); \
break; \
......@@ -205,6 +207,7 @@ typedef struct {
#define IS_SIGNED_NUMERIC_TYPE(_t) ((_t) >= TSDB_DATA_TYPE_TINYINT && (_t) <= TSDB_DATA_TYPE_BIGINT)
#define IS_UNSIGNED_NUMERIC_TYPE(_t) ((_t) >= TSDB_DATA_TYPE_UTINYINT && (_t) <= TSDB_DATA_TYPE_UBIGINT)
#define IS_FLOAT_TYPE(_t) ((_t) == TSDB_DATA_TYPE_FLOAT || (_t) == TSDB_DATA_TYPE_DOUBLE)
#define IS_TIMESTAMP_TYPE(_t) ((_t) == TSDB_DATA_TYPE_TIMESTAMP)
#define IS_NUMERIC_TYPE(_t) ((IS_SIGNED_NUMERIC_TYPE(_t)) || (IS_UNSIGNED_NUMERIC_TYPE(_t)) || (IS_FLOAT_TYPE(_t)))
......@@ -289,6 +292,7 @@ void* getDataMax(int32_t type);
int32_t tStrToInteger(const char* z, int16_t type, int32_t n, int64_t* value, bool issigned);
#define SET_DOUBLE_NULL(v) (*(uint64_t *)(v) = TSDB_DATA_DOUBLE_NULL)
#define SET_TIMESTAMP_NULL(v) (*(uint64_t *)(v) = TSDB_DATA_TIMESTAMP_NULL)
#ifdef __cplusplus
}
......
......@@ -77,6 +77,15 @@ static FORCE_INLINE int64_t taosGetTimestamp(int32_t precision) {
}
}
//@return timestamp of today at 00:00:00 in seconds
static FORCE_INLINE int64_t taosGetTimestampToday() {
time_t t = time(NULL);
struct tm * tm= localtime(&t);
tm->tm_hour = 0;
tm->tm_min = 0;
tm->tm_sec = 0;
return (int64_t)mktime(tm);
}
typedef struct SInterval {
int32_t tz; // query client timezone
......
......@@ -83,12 +83,12 @@ void deltaToUtcInitOnce() {
static int64_t parseFraction(char* str, char** end, int32_t timePrec);
static int32_t parseTimeWithTz(char* timestr, int64_t* time, int32_t timePrec, char delim);
static int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec);
static int32_t parseLocaltimeWithDst(char* timestr, int64_t* time, int32_t timePrec);
static int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec, char delim);
static int32_t parseLocaltimeWithDst(char* timestr, int64_t* time, int32_t timePrec, char delim);
static char* forwardToTimeStringEnd(char* str);
static bool checkTzPresent(char *str, int32_t len);
static int32_t (*parseLocaltimeFp[]) (char* timestr, int64_t* time, int32_t timePrec) = {
static int32_t (*parseLocaltimeFp[]) (char* timestr, int64_t* time, int32_t timePrec, char delim) = {
parseLocaltime,
parseLocaltimeWithDst
};
......@@ -98,11 +98,17 @@ int32_t taosGetTimestampSec() { return (int32_t)time(NULL); }
int32_t taosParseTime(char* timestr, int64_t* time, int32_t len, int32_t timePrec, int8_t day_light) {
/* parse datatime string in with tz */
if (strnchr(timestr, 'T', len, false) != NULL) {
if (checkTzPresent(timestr, len)) {
return parseTimeWithTz(timestr, time, timePrec, 'T');
} else if (checkTzPresent(timestr, len)) {
} else {
return (*parseLocaltimeFp[day_light])(timestr, time, timePrec, 'T');
}
} else {
if (checkTzPresent(timestr, len)) {
return parseTimeWithTz(timestr, time, timePrec, 0);
} else {
return (*parseLocaltimeFp[day_light])(timestr, time, timePrec);
return (*parseLocaltimeFp[day_light])(timestr, time, timePrec, 0);
}
}
}
......@@ -316,11 +322,19 @@ int32_t parseTimeWithTz(char* timestr, int64_t* time, int32_t timePrec, char del
return 0;
}
int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec) {
int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec, char delim) {
*time = 0;
struct tm tm = {0};
char* str = strptime(timestr, "%Y-%m-%d %H:%M:%S", &tm);
char* str;
if (delim == 'T') {
str = strptime(timestr, "%Y-%m-%dT%H:%M:%S", &tm);
} else if (delim == 0) {
str = strptime(timestr, "%Y-%m-%d %H:%M:%S", &tm);
} else {
str = NULL;
}
if (str == NULL) {
return -1;
}
......@@ -349,12 +363,20 @@ int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec) {
return 0;
}
int32_t parseLocaltimeWithDst(char* timestr, int64_t* time, int32_t timePrec) {
int32_t parseLocaltimeWithDst(char* timestr, int64_t* time, int32_t timePrec, char delim) {
*time = 0;
struct tm tm = {0};
tm.tm_isdst = -1;
char* str = strptime(timestr, "%Y-%m-%d %H:%M:%S", &tm);
char* str;
if (delim == 'T') {
str = strptime(timestr, "%Y-%m-%dT%H:%M:%S", &tm);
} else if (delim == 0) {
str = strptime(timestr, "%Y-%m-%d %H:%M:%S", &tm);
} else {
str = NULL;
}
if (str == NULL) {
return -1;
}
......
......@@ -762,6 +762,7 @@ expr(A) ::= MINUS(X) FLOAT(Y). { X.n += Y.n; X.type = TK_FLOAT; A = tSqlExprCr
expr(A) ::= PLUS(X) FLOAT(Y). { X.n += Y.n; X.type = TK_FLOAT; A = tSqlExprCreateIdValue(pInfo, &X, TK_FLOAT);}
expr(A) ::= STRING(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_STRING);}
expr(A) ::= NOW(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_NOW); }
expr(A) ::= TODAY(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_TODAY); }
expr(A) ::= VARIABLE(X). { A = tSqlExprCreateIdValue(pInfo, &X, TK_VARIABLE);}
expr(A) ::= PLUS(X) VARIABLE(Y). { X.n += Y.n; X.type = TK_VARIABLE; A = tSqlExprCreateIdValue(pInfo, &X, TK_VARIABLE);}
expr(A) ::= MINUS(X) VARIABLE(Y). { X.n += Y.n; X.type = TK_VARIABLE; A = tSqlExprCreateIdValue(pInfo, &X, TK_VARIABLE);}
......@@ -986,4 +987,4 @@ cmd ::= KILL QUERY INTEGER(X) COLON(Z) INTEGER(Y). {X.n += (Z.n + Y.n); s
%fallback ID ABORT AFTER ASC ATTACH BEFORE BEGIN CASCADE CLUSTER CONFLICT COPY DATABASE DEFERRED
DELIMITERS DESC DETACH EACH END EXPLAIN FAIL FOR GLOB IGNORE IMMEDIATE INITIALLY INSTEAD
LIKE MATCH NMATCH KEY OF OFFSET RAISE REPLACE RESTRICT ROW STATEMENT TRIGGER VIEW ALL
NOW IPTOKEN SEMI NONE PREV LINEAR IMPORT TBNAME JOIN STABLE NULL INSERT INTO VALUES FILE.
NOW TODAY IPTOKEN SEMI NONE PREV LINEAR IMPORT TBNAME JOIN STABLE NULL INSERT INTO VALUES FILE.
......@@ -33,6 +33,7 @@ SSqlInfo qSqlParse(const char *pStr) {
sqlInfo.funcs = taosArrayInit(4, sizeof(SStrToken));
int32_t i = 0;
bool inWhere = false;
while (1) {
SStrToken t0 = {0};
......@@ -68,6 +69,25 @@ SSqlInfo qSqlParse(const char *pStr) {
sqlInfo.valid = false;
goto abort_parse;
}
case TK_WHERE:{
inWhere = true;
Parse(pParser, t0.type, t0, &sqlInfo);
if (sqlInfo.valid == false) {
goto abort_parse;
}
break;
}
case TK_NOW:
case TK_TODAY: {
//for now(),today() function used in select/where clause
if (pStr[i] == '(' && pStr[i + 1] == ')') {
if (!inWhere) {
t0.type = TK_ID;
} else {
i += 2;
}
}
}
default:
Parse(pParser, t0.type, t0, &sqlInfo);
if (sqlInfo.valid == false) {
......@@ -155,9 +175,13 @@ tSqlExpr *tSqlExprCreateIdValue(SSqlInfo* pInfo, SStrToken *pToken, int32_t optr
}
pSqlExpr->tokenId = optrType;
pSqlExpr->type = SQL_NODE_VALUE;
} else if (optrType == TK_NOW) {
} else if (optrType == TK_NOW || optrType == TK_TODAY) {
// use nanosecond by default TODO set value after getting database precision
if (optrType == TK_NOW) {
pSqlExpr->value.i64 = taosGetTimestamp(TSDB_TIME_PRECISION_NANO);
} else {
pSqlExpr->value.i64 = taosGetTimestampToday() * 1000000000;
}
pSqlExpr->value.nType = TSDB_DATA_TYPE_BIGINT;
pSqlExpr->tokenId = TK_TIMESTAMP; // TK_TIMESTAMP used to denote the time value is in microsecond
pSqlExpr->type = SQL_NODE_VALUE;
......@@ -176,7 +200,7 @@ tSqlExpr *tSqlExprCreateIdValue(SSqlInfo* pInfo, SStrToken *pToken, int32_t optr
pSqlExpr->flags |= 1 << EXPR_FLAG_NS_TIMESTAMP;
pSqlExpr->flags |= 1 << EXPR_FLAG_TIMESTAMP_VAR;
pSqlExpr->value.nType = TSDB_DATA_TYPE_BIGINT;
pSqlExpr->value.nType = TSDB_DATA_TYPE_TIMESTAMP;
pSqlExpr->tokenId = TK_TIMESTAMP;
pSqlExpr->type = SQL_NODE_VALUE;
} else if (optrType == TK_AS) {
......
......@@ -100,30 +100,30 @@
#endif
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned short int
#define YYNOCODE 289
#define YYNOCODE 290
#define YYACTIONTYPE unsigned short int
#define ParseTOKENTYPE SStrToken
typedef union {
int yyinit;
ParseTOKENTYPE yy0;
SRangeVal yy22;
SCreatedTableInfo yy34;
tVariant yy54;
int64_t yy55;
SIntervalVal yy102;
SSessionWindowVal yy115;
SSqlNode* yy160;
SCreateAcctInfo yy205;
SArray* yy209;
SWindowStateVal yy290;
int yy332;
TAOS_FIELD yy369;
int32_t yy380;
SCreateTableSql* yy404;
SRelationInfo* yy530;
SLimitVal yy534;
SCreateDbInfo yy560;
tSqlExpr* yy574;
SRelationInfo* yy84;
SArray* yy161;
SSessionWindowVal yy219;
TAOS_FIELD yy223;
SCreateAcctInfo yy231;
SSqlNode* yy276;
SIntervalVal yy300;
SCreateDbInfo yy302;
SCreatedTableInfo yy356;
int64_t yy369;
SLimitVal yy394;
SRangeVal yy420;
int yy452;
SCreateTableSql* yy462;
int32_t yy520;
tVariant yy526;
tSqlExpr* yy546;
SWindowStateVal yy548;
} YYMINORTYPE;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
......@@ -140,16 +140,17 @@ typedef union {
#define ParseCTX_STORE
#define YYFALLBACK 1
#define YYNSTATE 398
#define YYNRULE 319
#define YYNTOKEN 203
#define YYNRULE 320
#define YYNRULE_WITH_ACTION 320
#define YYNTOKEN 204
#define YY_MAX_SHIFT 397
#define YY_MIN_SHIFTREDUCE 624
#define YY_MAX_SHIFTREDUCE 942
#define YY_ERROR_ACTION 943
#define YY_ACCEPT_ACTION 944
#define YY_NO_ACTION 945
#define YY_MIN_REDUCE 946
#define YY_MAX_REDUCE 1264
#define YY_MIN_SHIFTREDUCE 625
#define YY_MAX_SHIFTREDUCE 944
#define YY_ERROR_ACTION 945
#define YY_ACCEPT_ACTION 946
#define YY_NO_ACTION 947
#define YY_MIN_REDUCE 948
#define YY_MAX_REDUCE 1267
/************* End control #defines *******************************************/
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
......@@ -216,318 +217,318 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (864)
#define YY_ACTTAB_COUNT (865)
static const YYACTIONTYPE yy_action[] = {
/* 0 */ 105, 675, 1095, 1129, 944, 397, 262, 759, 675, 676,
/* 10 */ 1181, 711, 1182, 314, 37, 38, 676, 41, 42, 396,
/* 20 */ 243, 265, 31, 30, 29, 1087, 163, 40, 347, 45,
/* 30 */ 43, 46, 44, 1084, 1085, 55, 1088, 36, 35, 372,
/* 0 */ 105, 676, 1097, 1131, 946, 397, 262, 760, 676, 677,
/* 10 */ 1183, 712, 1184, 314, 37, 38, 677, 41, 42, 396,
/* 20 */ 243, 265, 31, 30, 29, 1089, 163, 40, 347, 45,
/* 30 */ 43, 46, 44, 1086, 1087, 55, 1090, 36, 35, 372,
/* 40 */ 371, 34, 33, 32, 37, 38, 252, 41, 42, 258,
/* 50 */ 85, 265, 31, 30, 29, 24, 1120, 40, 347, 45,
/* 60 */ 43, 46, 44, 318, 100, 1238, 99, 36, 35, 218,
/* 70 */ 214, 34, 33, 32, 288, 1126, 131, 125, 136, 1238,
/* 80 */ 1238, 1240, 1241, 135, 1086, 141, 144, 134, 37, 38,
/* 50 */ 85, 265, 31, 30, 29, 24, 1122, 40, 347, 45,
/* 60 */ 43, 46, 44, 318, 100, 1241, 99, 36, 35, 218,
/* 70 */ 214, 34, 33, 32, 288, 1128, 131, 125, 136, 1241,
/* 80 */ 1241, 1243, 1244, 135, 1088, 141, 144, 134, 37, 38,
/* 90 */ 88, 41, 42, 51, 138, 265, 31, 30, 29, 295,
/* 100 */ 294, 40, 347, 45, 43, 46, 44, 343, 34, 33,
/* 110 */ 32, 36, 35, 343, 216, 34, 33, 32, 37, 38,
/* 120 */ 58, 41, 42, 59, 1238, 265, 31, 30, 29, 275,
/* 130 */ 675, 40, 347, 45, 43, 46, 44, 879, 676, 882,
/* 140 */ 185, 36, 35, 675, 217, 34, 33, 32, 13, 37,
/* 150 */ 39, 676, 41, 42, 1238, 382, 265, 31, 30, 29,
/* 160 */ 280, 873, 40, 347, 45, 43, 46, 44, 245, 284,
/* 170 */ 283, 1104, 36, 35, 59, 1102, 34, 33, 32, 209,
/* 180 */ 207, 205, 107, 86, 390, 1032, 204, 151, 150, 149,
/* 190 */ 148, 625, 626, 627, 628, 629, 630, 631, 632, 633,
/* 200 */ 634, 635, 636, 637, 638, 160, 250, 244, 38, 1260,
/* 210 */ 41, 42, 1252, 1105, 265, 31, 30, 29, 289, 255,
/* 220 */ 40, 347, 45, 43, 46, 44, 1102, 395, 393, 652,
/* 230 */ 36, 35, 60, 257, 34, 33, 32, 223, 41, 42,
/* 240 */ 1105, 178, 265, 31, 30, 29, 59, 1238, 40, 347,
/* 250 */ 45, 43, 46, 44, 159, 157, 156, 886, 36, 35,
/* 120 */ 58, 41, 42, 59, 1241, 265, 31, 30, 29, 275,
/* 130 */ 676, 40, 347, 45, 43, 46, 44, 880, 677, 883,
/* 140 */ 185, 36, 35, 676, 217, 34, 33, 32, 13, 37,
/* 150 */ 39, 677, 41, 42, 1241, 382, 265, 31, 30, 29,
/* 160 */ 1106, 874, 40, 347, 45, 43, 46, 44, 245, 395,
/* 170 */ 393, 653, 36, 35, 59, 1104, 34, 33, 32, 209,
/* 180 */ 207, 205, 107, 86, 390, 1034, 204, 151, 150, 149,
/* 190 */ 148, 626, 627, 628, 629, 630, 631, 632, 633, 634,
/* 200 */ 635, 636, 637, 638, 639, 160, 250, 244, 38, 1263,
/* 210 */ 41, 42, 345, 1107, 265, 31, 30, 29, 280, 255,
/* 220 */ 40, 347, 45, 43, 46, 44, 1104, 284, 283, 317,
/* 230 */ 36, 35, 1, 187, 34, 33, 32, 223, 41, 42,
/* 240 */ 268, 178, 265, 31, 30, 29, 1255, 1241, 40, 347,
/* 250 */ 45, 43, 46, 44, 879, 296, 882, 888, 36, 35,
/* 260 */ 304, 94, 34, 33, 32, 67, 341, 389, 388, 340,
/* 270 */ 339, 338, 387, 337, 336, 335, 386, 334, 385, 384,
/* 280 */ 25, 1063, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
/* 290 */ 1059, 1060, 1061, 1062, 1064, 1065, 802, 222, 1101, 237,
/* 300 */ 888, 68, 296, 877, 230, 880, 878, 883, 881, 108,
/* 310 */ 147, 146, 145, 229, 224, 237, 888, 355, 94, 877,
/* 320 */ 259, 880, 275, 883, 1238, 10, 59, 1105, 261, 45,
/* 330 */ 43, 46, 44, 186, 225, 241, 242, 36, 35, 349,
/* 340 */ 1230, 34, 33, 32, 1238, 1089, 5, 62, 189, 297,
/* 350 */ 1238, 241, 242, 188, 114, 119, 110, 118, 68, 787,
/* 360 */ 1229, 268, 784, 1228, 785, 239, 786, 274, 1192, 240,
/* 370 */ 1238, 256, 330, 1238, 67, 1238, 389, 388, 1102, 1238,
/* 380 */ 287, 387, 84, 1120, 47, 386, 821, 385, 384, 238,
/* 390 */ 824, 266, 218, 346, 270, 271, 1071, 103, 1069, 1070,
/* 400 */ 47, 246, 1238, 1072, 1241, 833, 834, 1073, 59, 1074,
/* 410 */ 1075, 59, 89, 853, 59, 345, 59, 59, 300, 301,
/* 420 */ 805, 889, 884, 885, 36, 35, 887, 59, 34, 33,
/* 430 */ 32, 59, 264, 220, 1179, 830, 1180, 889, 884, 885,
/* 440 */ 269, 59, 267, 1238, 358, 357, 276, 221, 273, 165,
/* 450 */ 367, 366, 1120, 359, 6, 218, 360, 1238, 1191, 361,
/* 460 */ 1102, 362, 368, 1102, 352, 1238, 1102, 1241, 1102, 1102,
/* 470 */ 247, 275, 369, 852, 226, 219, 370, 227, 228, 1102,
/* 480 */ 788, 272, 348, 1102, 1238, 1238, 374, 1238, 1238, 275,
/* 490 */ 994, 232, 233, 1102, 234, 91, 231, 199, 133, 215,
/* 500 */ 1103, 1238, 1238, 76, 1238, 248, 1238, 1004, 809, 1238,
/* 510 */ 382, 102, 92, 101, 199, 995, 1, 187, 3, 200,
/* 520 */ 299, 298, 199, 840, 841, 345, 769, 79, 263, 322,
/* 530 */ 771, 324, 770, 54, 351, 291, 917, 71, 48, 890,
/* 540 */ 60, 674, 317, 60, 71, 106, 71, 15, 77, 14,
/* 550 */ 9, 83, 291, 9, 285, 9, 350, 124, 17, 123,
/* 560 */ 16, 794, 792, 795, 793, 19, 325, 18, 876, 253,
/* 570 */ 80, 893, 364, 363, 130, 21, 129, 20, 143, 142,
/* 580 */ 1188, 1187, 254, 758, 181, 373, 26, 161, 162, 1100,
/* 590 */ 1128, 1139, 1171, 1136, 1137, 1141, 1121, 292, 164, 169,
/* 600 */ 1170, 310, 1169, 1168, 180, 1096, 182, 158, 1094, 183,
/* 610 */ 303, 820, 184, 171, 1009, 327, 328, 329, 249, 332,
/* 620 */ 333, 172, 69, 212, 65, 344, 1003, 305, 1118, 356,
/* 630 */ 170, 307, 1259, 121, 1258, 1255, 190, 365, 1251, 127,
/* 640 */ 1250, 81, 78, 1247, 319, 191, 1029, 28, 315, 313,
/* 650 */ 311, 66, 309, 306, 302, 61, 70, 176, 213, 173,
/* 660 */ 991, 137, 989, 139, 140, 987, 986, 277, 202, 203,
/* 670 */ 87, 983, 982, 981, 980, 979, 978, 977, 206, 208,
/* 680 */ 969, 210, 966, 27, 211, 962, 331, 383, 290, 1098,
/* 690 */ 132, 90, 95, 375, 308, 376, 377, 378, 379, 380,
/* 700 */ 381, 82, 260, 391, 942, 278, 326, 279, 941, 281,
/* 710 */ 282, 235, 940, 923, 922, 286, 115, 1008, 1007, 236,
/* 720 */ 321, 116, 291, 11, 93, 797, 293, 52, 96, 829,
/* 730 */ 74, 985, 827, 984, 823, 193, 1030, 194, 152, 192,
/* 740 */ 153, 196, 195, 197, 198, 976, 1067, 320, 154, 975,
/* 750 */ 4, 968, 179, 177, 53, 174, 175, 1031, 155, 967,
/* 760 */ 2, 826, 822, 75, 168, 831, 1077, 166, 251, 842,
/* 770 */ 167, 63, 836, 97, 22, 838, 98, 312, 350, 316,
/* 780 */ 64, 12, 23, 104, 49, 323, 50, 107, 109, 112,
/* 790 */ 689, 724, 56, 722, 111, 721, 720, 718, 717, 57,
/* 800 */ 113, 716, 713, 679, 117, 342, 7, 914, 912, 915,
/* 810 */ 892, 891, 913, 8, 353, 894, 354, 60, 72, 120,
/* 820 */ 761, 791, 122, 73, 760, 126, 128, 757, 705, 703,
/* 830 */ 695, 701, 697, 699, 790, 693, 691, 727, 726, 725,
/* 840 */ 723, 719, 715, 714, 201, 677, 946, 642, 651, 649,
/* 850 */ 945, 392, 945, 945, 945, 945, 945, 945, 945, 945,
/* 860 */ 945, 945, 945, 394,
/* 280 */ 25, 59, 1065, 1053, 1054, 1055, 1056, 1057, 1058, 1059,
/* 290 */ 1060, 1061, 1062, 1063, 1064, 1066, 1067, 222, 224, 237,
/* 300 */ 890, 68, 297, 878, 230, 881, 352, 884, 1241, 1122,
/* 310 */ 147, 146, 145, 229, 181, 237, 890, 355, 94, 878,
/* 320 */ 269, 881, 267, 884, 358, 357, 256, 246, 59, 45,
/* 330 */ 43, 46, 44, 1104, 225, 241, 242, 36, 35, 349,
/* 340 */ 261, 34, 33, 32, 1241, 59, 5, 62, 189, 1194,
/* 350 */ 1122, 241, 242, 188, 114, 119, 110, 118, 68, 788,
/* 360 */ 274, 1233, 785, 257, 786, 108, 787, 266, 247, 1232,
/* 370 */ 1107, 1241, 330, 359, 889, 67, 1193, 389, 388, 1241,
/* 380 */ 1104, 287, 387, 84, 47, 285, 386, 822, 385, 384,
/* 390 */ 238, 825, 1231, 346, 270, 271, 1073, 1103, 1071, 1072,
/* 400 */ 47, 1091, 1241, 1074, 218, 59, 59, 1075, 59, 1076,
/* 410 */ 1077, 59, 161, 895, 1241, 345, 1244, 239, 79, 300,
/* 420 */ 301, 891, 885, 887, 36, 35, 59, 1241, 34, 33,
/* 430 */ 32, 218, 264, 159, 157, 156, 133, 891, 885, 887,
/* 440 */ 276, 1241, 273, 1244, 367, 366, 886, 59, 382, 59,
/* 450 */ 360, 361, 806, 362, 6, 240, 368, 1104, 1104, 220,
/* 460 */ 1104, 80, 886, 1104, 221, 1241, 226, 219, 275, 1241,
/* 470 */ 854, 369, 227, 228, 1241, 232, 1241, 1241, 1104, 186,
/* 480 */ 789, 272, 1241, 1241, 91, 1241, 233, 92, 234, 275,
/* 490 */ 259, 275, 370, 231, 374, 215, 1241, 1107, 1241, 1104,
/* 500 */ 348, 1104, 1105, 1241, 996, 1241, 248, 834, 835, 1006,
/* 510 */ 1181, 199, 1182, 102, 997, 101, 199, 103, 3, 200,
/* 520 */ 289, 199, 803, 831, 291, 299, 298, 291, 841, 842,
/* 530 */ 853, 76, 89, 770, 60, 322, 772, 165, 324, 771,
/* 540 */ 810, 54, 71, 48, 919, 892, 351, 60, 263, 60,
/* 550 */ 71, 10, 106, 71, 15, 675, 14, 83, 9, 9,
/* 560 */ 124, 17, 123, 16, 795, 793, 796, 794, 350, 9,
/* 570 */ 364, 363, 253, 19, 325, 18, 77, 130, 21, 129,
/* 580 */ 20, 143, 142, 1190, 1189, 254, 373, 162, 877, 759,
/* 590 */ 1102, 1130, 26, 1173, 1141, 1138, 1172, 1139, 1123, 292,
/* 600 */ 1143, 164, 169, 1098, 310, 1171, 1170, 180, 182, 1096,
/* 610 */ 183, 184, 1011, 158, 821, 327, 328, 303, 329, 332,
/* 620 */ 333, 69, 212, 65, 344, 1005, 249, 170, 356, 1262,
/* 630 */ 305, 307, 121, 1261, 1258, 190, 81, 365, 1254, 1120,
/* 640 */ 127, 1253, 78, 1250, 191, 1031, 66, 319, 171, 61,
/* 650 */ 70, 213, 28, 993, 315, 173, 137, 309, 313, 991,
/* 660 */ 139, 311, 140, 172, 306, 989, 988, 277, 202, 203,
/* 670 */ 985, 984, 983, 982, 302, 981, 980, 27, 979, 206,
/* 680 */ 208, 971, 210, 968, 211, 964, 87, 331, 290, 1100,
/* 690 */ 90, 95, 308, 383, 376, 132, 375, 377, 378, 379,
/* 700 */ 82, 380, 381, 260, 391, 944, 326, 279, 943, 282,
/* 710 */ 942, 278, 235, 236, 281, 925, 924, 115, 1010, 1009,
/* 720 */ 116, 286, 321, 291, 11, 293, 987, 93, 798, 52,
/* 730 */ 96, 830, 986, 193, 1032, 194, 195, 192, 196, 198,
/* 740 */ 197, 152, 828, 153, 978, 977, 320, 1069, 154, 1033,
/* 750 */ 155, 74, 176, 174, 175, 177, 970, 53, 179, 969,
/* 760 */ 1079, 2, 4, 824, 823, 75, 166, 827, 832, 843,
/* 770 */ 167, 168, 837, 97, 251, 839, 98, 312, 63, 350,
/* 780 */ 316, 12, 104, 49, 22, 23, 323, 64, 107, 109,
/* 790 */ 56, 111, 50, 112, 690, 725, 723, 722, 721, 57,
/* 800 */ 113, 719, 718, 717, 714, 680, 342, 117, 7, 916,
/* 810 */ 914, 894, 917, 893, 915, 8, 896, 354, 120, 72,
/* 820 */ 122, 60, 353, 792, 73, 762, 126, 128, 761, 758,
/* 830 */ 706, 704, 696, 702, 791, 698, 700, 694, 692, 728,
/* 840 */ 727, 726, 724, 720, 716, 715, 201, 643, 948, 678,
/* 850 */ 652, 392, 650, 947, 947, 947, 947, 947, 947, 947,
/* 860 */ 947, 947, 947, 947, 394,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 213, 1, 205, 205, 203, 204, 212, 5, 1, 9,
/* 10 */ 284, 5, 286, 287, 14, 15, 9, 17, 18, 205,
/* 20 */ 206, 21, 22, 23, 24, 0, 205, 27, 28, 29,
/* 30 */ 30, 31, 32, 246, 247, 248, 249, 37, 38, 37,
/* 40 */ 38, 41, 42, 43, 14, 15, 1, 17, 18, 252,
/* 50 */ 213, 21, 22, 23, 24, 276, 255, 27, 28, 29,
/* 60 */ 30, 31, 32, 283, 284, 286, 286, 37, 38, 276,
/* 70 */ 276, 41, 42, 43, 273, 277, 66, 67, 68, 286,
/* 80 */ 286, 288, 288, 73, 247, 75, 76, 77, 14, 15,
/* 90 */ 90, 17, 18, 86, 84, 21, 22, 23, 24, 278,
/* 100 */ 279, 27, 28, 29, 30, 31, 32, 88, 41, 42,
/* 110 */ 43, 37, 38, 88, 276, 41, 42, 43, 14, 15,
/* 120 */ 90, 17, 18, 205, 286, 21, 22, 23, 24, 205,
/* 0 */ 214, 1, 206, 206, 204, 205, 213, 5, 1, 9,
/* 10 */ 285, 5, 287, 288, 14, 15, 9, 17, 18, 206,
/* 20 */ 207, 21, 22, 23, 24, 0, 206, 27, 28, 29,
/* 30 */ 30, 31, 32, 247, 248, 249, 250, 37, 38, 37,
/* 40 */ 38, 41, 42, 43, 14, 15, 1, 17, 18, 253,
/* 50 */ 214, 21, 22, 23, 24, 277, 256, 27, 28, 29,
/* 60 */ 30, 31, 32, 284, 285, 287, 287, 37, 38, 277,
/* 70 */ 277, 41, 42, 43, 274, 278, 66, 67, 68, 287,
/* 80 */ 287, 289, 289, 73, 248, 75, 76, 77, 14, 15,
/* 90 */ 90, 17, 18, 86, 84, 21, 22, 23, 24, 279,
/* 100 */ 280, 27, 28, 29, 30, 31, 32, 88, 41, 42,
/* 110 */ 43, 37, 38, 88, 277, 41, 42, 43, 14, 15,
/* 120 */ 90, 17, 18, 206, 287, 21, 22, 23, 24, 206,
/* 130 */ 1, 27, 28, 29, 30, 31, 32, 5, 9, 7,
/* 140 */ 216, 37, 38, 1, 276, 41, 42, 43, 86, 14,
/* 150 */ 15, 9, 17, 18, 286, 94, 21, 22, 23, 24,
/* 160 */ 149, 87, 27, 28, 29, 30, 31, 32, 250, 158,
/* 170 */ 159, 258, 37, 38, 205, 257, 41, 42, 43, 66,
/* 180 */ 67, 68, 120, 121, 227, 228, 73, 74, 75, 76,
/* 140 */ 217, 37, 38, 1, 277, 41, 42, 43, 86, 14,
/* 150 */ 15, 9, 17, 18, 287, 94, 21, 22, 23, 24,
/* 160 */ 259, 87, 27, 28, 29, 30, 31, 32, 251, 69,
/* 170 */ 70, 71, 37, 38, 206, 258, 41, 42, 43, 66,
/* 180 */ 67, 68, 120, 121, 228, 229, 73, 74, 75, 76,
/* 190 */ 77, 49, 50, 51, 52, 53, 54, 55, 56, 57,
/* 200 */ 58, 59, 60, 61, 62, 63, 251, 65, 15, 258,
/* 210 */ 17, 18, 258, 258, 21, 22, 23, 24, 87, 250,
/* 220 */ 27, 28, 29, 30, 31, 32, 257, 69, 70, 71,
/* 230 */ 37, 38, 101, 251, 41, 42, 43, 276, 17, 18,
/* 240 */ 258, 263, 21, 22, 23, 24, 205, 286, 27, 28,
/* 250 */ 29, 30, 31, 32, 66, 67, 68, 125, 37, 38,
/* 260 */ 282, 86, 41, 42, 43, 102, 103, 104, 105, 106,
/* 200 */ 58, 59, 60, 61, 62, 63, 252, 65, 15, 259,
/* 210 */ 17, 18, 47, 259, 21, 22, 23, 24, 150, 251,
/* 220 */ 27, 28, 29, 30, 31, 32, 258, 159, 160, 64,
/* 230 */ 37, 38, 215, 216, 41, 42, 43, 277, 17, 18,
/* 240 */ 72, 264, 21, 22, 23, 24, 259, 287, 27, 28,
/* 250 */ 29, 30, 31, 32, 5, 282, 7, 125, 37, 38,
/* 260 */ 283, 86, 41, 42, 43, 102, 103, 104, 105, 106,
/* 270 */ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
/* 280 */ 48, 229, 230, 231, 232, 233, 234, 235, 236, 237,
/* 290 */ 238, 239, 240, 241, 242, 243, 101, 65, 257, 1,
/* 300 */ 2, 126, 281, 5, 72, 7, 5, 9, 7, 213,
/* 310 */ 78, 79, 80, 81, 276, 1, 2, 85, 86, 5,
/* 320 */ 251, 7, 205, 9, 286, 130, 205, 258, 212, 29,
/* 330 */ 30, 31, 32, 216, 276, 37, 38, 37, 38, 41,
/* 340 */ 276, 41, 42, 43, 286, 249, 66, 67, 68, 281,
/* 350 */ 286, 37, 38, 73, 74, 75, 76, 77, 126, 2,
/* 360 */ 276, 72, 5, 276, 7, 276, 9, 72, 245, 276,
/* 370 */ 286, 250, 92, 286, 102, 286, 104, 105, 257, 286,
/* 380 */ 148, 109, 150, 255, 86, 113, 5, 115, 116, 157,
/* 390 */ 9, 212, 276, 25, 37, 38, 229, 259, 231, 232,
/* 400 */ 86, 273, 286, 236, 288, 132, 133, 240, 205, 242,
/* 410 */ 243, 205, 274, 80, 205, 47, 205, 205, 37, 38,
/* 420 */ 41, 123, 124, 125, 37, 38, 125, 205, 41, 42,
/* 430 */ 43, 205, 64, 276, 284, 87, 286, 123, 124, 125,
/* 440 */ 151, 205, 153, 286, 155, 156, 151, 276, 153, 101,
/* 450 */ 155, 156, 255, 250, 86, 276, 250, 286, 245, 250,
/* 460 */ 257, 250, 250, 257, 16, 286, 257, 288, 257, 257,
/* 470 */ 273, 205, 250, 140, 276, 276, 250, 276, 276, 257,
/* 480 */ 123, 124, 216, 257, 286, 286, 250, 286, 286, 205,
/* 490 */ 211, 276, 276, 257, 276, 87, 276, 218, 82, 276,
/* 500 */ 216, 286, 286, 101, 286, 124, 286, 211, 129, 286,
/* 510 */ 94, 284, 87, 286, 218, 211, 214, 215, 209, 210,
/* 520 */ 37, 38, 218, 87, 87, 47, 87, 101, 1, 87,
/* 530 */ 87, 87, 87, 86, 25, 127, 87, 101, 101, 87,
/* 540 */ 101, 87, 64, 101, 101, 101, 101, 152, 146, 154,
/* 550 */ 101, 86, 127, 101, 205, 101, 47, 152, 152, 154,
/* 560 */ 154, 5, 5, 7, 7, 152, 119, 154, 41, 245,
/* 570 */ 144, 123, 37, 38, 152, 152, 154, 154, 82, 83,
/* 580 */ 245, 245, 245, 118, 253, 245, 275, 205, 205, 205,
/* 590 */ 205, 205, 285, 205, 205, 205, 255, 255, 205, 205,
/* 600 */ 285, 205, 285, 285, 260, 255, 205, 64, 205, 205,
/* 610 */ 280, 125, 205, 270, 205, 205, 205, 205, 280, 205,
/* 620 */ 205, 269, 205, 205, 205, 205, 205, 280, 272, 205,
/* 630 */ 271, 280, 205, 205, 205, 205, 205, 205, 205, 205,
/* 640 */ 205, 143, 145, 205, 138, 205, 205, 142, 141, 136,
/* 650 */ 135, 205, 134, 137, 131, 205, 205, 265, 205, 268,
/* 660 */ 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
/* 670 */ 122, 205, 205, 205, 205, 205, 205, 205, 205, 205,
/* 680 */ 205, 205, 205, 147, 205, 205, 93, 117, 207, 207,
/* 690 */ 100, 207, 207, 99, 207, 55, 96, 98, 59, 97,
/* 700 */ 95, 207, 207, 88, 5, 160, 207, 5, 5, 160,
/* 710 */ 5, 207, 5, 104, 103, 149, 213, 217, 217, 207,
/* 720 */ 119, 213, 127, 86, 128, 87, 101, 86, 101, 87,
/* 730 */ 101, 207, 125, 207, 5, 224, 226, 220, 208, 225,
/* 740 */ 208, 221, 223, 222, 219, 207, 244, 254, 208, 207,
/* 750 */ 209, 207, 261, 264, 262, 267, 266, 228, 208, 207,
/* 760 */ 214, 125, 5, 86, 101, 87, 244, 86, 1, 87,
/* 770 */ 86, 101, 87, 86, 139, 87, 86, 86, 47, 1,
/* 780 */ 101, 86, 139, 90, 86, 119, 86, 120, 82, 74,
/* 790 */ 5, 9, 91, 5, 90, 5, 5, 5, 5, 91,
/* 800 */ 90, 5, 5, 89, 82, 16, 86, 9, 9, 9,
/* 810 */ 87, 87, 9, 86, 28, 123, 63, 101, 17, 154,
/* 820 */ 5, 125, 154, 17, 5, 154, 154, 87, 5, 5,
/* 280 */ 48, 206, 230, 231, 232, 233, 234, 235, 236, 237,
/* 290 */ 238, 239, 240, 241, 242, 243, 244, 65, 277, 1,
/* 300 */ 2, 126, 282, 5, 72, 7, 16, 9, 287, 256,
/* 310 */ 78, 79, 80, 81, 254, 1, 2, 85, 86, 5,
/* 320 */ 152, 7, 154, 9, 156, 157, 251, 274, 206, 29,
/* 330 */ 30, 31, 32, 258, 277, 37, 38, 37, 38, 41,
/* 340 */ 213, 41, 42, 43, 287, 206, 66, 67, 68, 246,
/* 350 */ 256, 37, 38, 73, 74, 75, 76, 77, 126, 2,
/* 360 */ 72, 277, 5, 252, 7, 214, 9, 213, 274, 277,
/* 370 */ 259, 287, 92, 251, 125, 102, 246, 104, 105, 287,
/* 380 */ 258, 149, 109, 151, 86, 206, 113, 5, 115, 116,
/* 390 */ 158, 9, 277, 25, 37, 38, 230, 258, 232, 233,
/* 400 */ 86, 250, 287, 237, 277, 206, 206, 241, 206, 243,
/* 410 */ 244, 206, 206, 123, 287, 47, 289, 277, 101, 37,
/* 420 */ 38, 123, 124, 125, 37, 38, 206, 287, 41, 42,
/* 430 */ 43, 277, 64, 66, 67, 68, 82, 123, 124, 125,
/* 440 */ 152, 287, 154, 289, 156, 157, 148, 206, 94, 206,
/* 450 */ 251, 251, 41, 251, 86, 277, 251, 258, 258, 277,
/* 460 */ 258, 144, 148, 258, 277, 287, 277, 277, 206, 287,
/* 470 */ 80, 251, 277, 277, 287, 277, 287, 287, 258, 217,
/* 480 */ 123, 124, 287, 287, 87, 287, 277, 87, 277, 206,
/* 490 */ 252, 206, 251, 277, 251, 277, 287, 259, 287, 258,
/* 500 */ 217, 258, 217, 287, 212, 287, 124, 132, 133, 212,
/* 510 */ 285, 219, 287, 285, 212, 287, 219, 260, 210, 211,
/* 520 */ 87, 219, 101, 87, 127, 37, 38, 127, 87, 87,
/* 530 */ 140, 101, 275, 87, 101, 87, 87, 101, 87, 87,
/* 540 */ 129, 86, 101, 101, 87, 87, 25, 101, 1, 101,
/* 550 */ 101, 130, 101, 101, 153, 87, 155, 86, 101, 101,
/* 560 */ 153, 153, 155, 155, 5, 5, 7, 7, 47, 101,
/* 570 */ 37, 38, 246, 153, 119, 155, 146, 153, 153, 155,
/* 580 */ 155, 82, 83, 246, 246, 246, 246, 206, 41, 118,
/* 590 */ 206, 206, 276, 286, 206, 206, 286, 206, 256, 256,
/* 600 */ 206, 206, 206, 256, 206, 286, 286, 261, 206, 206,
/* 610 */ 206, 206, 206, 64, 125, 206, 206, 281, 206, 206,
/* 620 */ 206, 206, 206, 206, 206, 206, 281, 272, 206, 206,
/* 630 */ 281, 281, 206, 206, 206, 206, 143, 206, 206, 273,
/* 640 */ 206, 206, 145, 206, 206, 206, 206, 138, 271, 206,
/* 650 */ 206, 206, 142, 206, 141, 269, 206, 134, 136, 206,
/* 660 */ 206, 135, 206, 270, 137, 206, 206, 206, 206, 206,
/* 670 */ 206, 206, 206, 206, 131, 206, 206, 147, 206, 206,
/* 680 */ 206, 206, 206, 206, 206, 206, 122, 93, 208, 208,
/* 690 */ 208, 208, 208, 117, 55, 100, 99, 96, 98, 59,
/* 700 */ 208, 97, 95, 208, 88, 5, 208, 5, 5, 5,
/* 710 */ 5, 161, 208, 208, 161, 104, 103, 214, 218, 218,
/* 720 */ 214, 150, 119, 127, 86, 101, 208, 128, 87, 86,
/* 730 */ 101, 87, 208, 225, 227, 221, 224, 226, 222, 220,
/* 740 */ 223, 209, 125, 209, 208, 208, 255, 245, 209, 229,
/* 750 */ 209, 101, 266, 268, 267, 265, 208, 263, 262, 208,
/* 760 */ 245, 215, 210, 5, 5, 86, 86, 125, 87, 87,
/* 770 */ 86, 101, 87, 86, 1, 87, 86, 86, 101, 47,
/* 780 */ 1, 86, 90, 86, 139, 139, 119, 101, 120, 82,
/* 790 */ 91, 90, 86, 74, 5, 9, 5, 5, 5, 91,
/* 800 */ 90, 5, 5, 5, 5, 89, 16, 82, 86, 9,
/* 810 */ 9, 87, 9, 87, 9, 86, 123, 63, 155, 17,
/* 820 */ 155, 101, 28, 125, 17, 5, 155, 155, 5, 87,
/* 830 */ 5, 5, 5, 5, 125, 5, 5, 5, 5, 5,
/* 840 */ 5, 5, 5, 5, 101, 89, 0, 64, 9, 9,
/* 850 */ 289, 22, 289, 289, 289, 289, 289, 289, 289, 289,
/* 860 */ 289, 289, 289, 22, 289, 289, 289, 289, 289, 289,
/* 870 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 880 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 890 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 900 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 910 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 920 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 930 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 940 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 950 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 960 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 970 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 980 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 990 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 1000 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 1010 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 1020 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 1030 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 1040 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 1050 */ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289,
/* 1060 */ 289, 289, 289, 289, 289, 289, 289,
/* 840 */ 5, 5, 5, 5, 5, 5, 101, 64, 0, 89,
/* 850 */ 9, 22, 9, 290, 290, 290, 290, 290, 290, 290,
/* 860 */ 290, 290, 290, 290, 22, 290, 290, 290, 290, 290,
/* 870 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 880 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 890 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 900 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 910 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 920 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 930 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 940 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 950 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 960 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 970 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 980 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 990 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1000 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1010 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1020 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1030 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1040 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1050 */ 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
/* 1060 */ 290, 290, 290, 290, 290, 290, 290, 290, 290,
};
#define YY_SHIFT_COUNT (397)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (846)
#define YY_SHIFT_MAX (848)
static const unsigned short int yy_shift_ofst[] = {
/* 0 */ 232, 163, 163, 272, 272, 19, 298, 314, 314, 314,
/* 0 */ 232, 163, 163, 273, 273, 19, 298, 314, 314, 314,
/* 10 */ 7, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 20 */ 129, 129, 45, 45, 0, 142, 314, 314, 314, 314,
/* 30 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
/* 40 */ 314, 314, 314, 314, 314, 314, 314, 314, 357, 357,
/* 50 */ 357, 175, 175, 273, 129, 25, 129, 129, 129, 129,
/* 60 */ 129, 416, 19, 45, 45, 61, 61, 6, 864, 864,
/* 70 */ 864, 357, 357, 357, 381, 381, 2, 2, 2, 2,
/* 80 */ 2, 2, 62, 2, 129, 129, 129, 129, 129, 379,
/* 90 */ 129, 129, 129, 175, 175, 129, 129, 129, 129, 333,
/* 100 */ 333, 333, 333, 195, 175, 129, 129, 129, 129, 129,
/* 50 */ 357, 175, 175, 375, 129, 25, 129, 129, 129, 129,
/* 60 */ 129, 354, 19, 45, 45, 61, 61, 6, 865, 865,
/* 70 */ 865, 357, 357, 357, 382, 382, 2, 2, 2, 2,
/* 80 */ 2, 2, 62, 2, 129, 129, 129, 129, 129, 411,
/* 90 */ 129, 129, 129, 175, 175, 129, 129, 129, 129, 390,
/* 100 */ 390, 390, 390, 421, 175, 129, 129, 129, 129, 129,
/* 110 */ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 120 */ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 130 */ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 140 */ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 150 */ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
/* 160 */ 129, 543, 543, 543, 543, 486, 486, 486, 486, 543,
/* 170 */ 498, 497, 506, 505, 507, 513, 515, 518, 516, 523,
/* 180 */ 536, 548, 543, 543, 543, 593, 593, 570, 19, 19,
/* 190 */ 543, 543, 590, 594, 640, 600, 599, 639, 602, 605,
/* 200 */ 570, 6, 543, 543, 615, 615, 543, 615, 543, 615,
/* 210 */ 543, 543, 864, 864, 30, 74, 104, 104, 104, 135,
/* 160 */ 129, 549, 549, 549, 549, 489, 489, 489, 489, 549,
/* 170 */ 493, 497, 509, 510, 513, 522, 526, 523, 527, 543,
/* 180 */ 530, 564, 549, 549, 549, 594, 594, 576, 19, 19,
/* 190 */ 549, 549, 595, 597, 639, 601, 600, 640, 604, 607,
/* 200 */ 576, 6, 549, 549, 616, 616, 549, 616, 549, 616,
/* 210 */ 549, 549, 865, 865, 30, 74, 104, 104, 104, 135,
/* 220 */ 193, 221, 280, 300, 300, 300, 300, 300, 300, 10,
/* 230 */ 113, 387, 387, 387, 387, 289, 295, 368, 11, 67,
/* 240 */ 67, 132, 301, 158, 188, 131, 408, 425, 483, 348,
/* 250 */ 436, 437, 478, 402, 426, 439, 442, 443, 444, 445,
/* 260 */ 447, 449, 452, 509, 527, 448, 454, 395, 405, 406,
/* 270 */ 556, 557, 535, 413, 422, 465, 423, 496, 699, 545,
/* 280 */ 702, 703, 549, 705, 707, 609, 611, 566, 595, 601,
/* 290 */ 637, 596, 638, 641, 625, 627, 642, 629, 607, 636,
/* 300 */ 729, 757, 677, 678, 681, 682, 684, 685, 663, 687,
/* 310 */ 688, 690, 767, 691, 670, 635, 731, 778, 679, 643,
/* 320 */ 693, 695, 601, 698, 666, 700, 667, 706, 701, 704,
/* 330 */ 715, 785, 708, 710, 782, 788, 790, 791, 792, 793,
/* 340 */ 796, 797, 714, 789, 722, 798, 799, 720, 723, 724,
/* 350 */ 800, 803, 692, 727, 786, 753, 801, 665, 668, 716,
/* 360 */ 716, 716, 716, 696, 709, 806, 671, 672, 716, 716,
/* 370 */ 716, 815, 819, 740, 716, 823, 824, 825, 826, 827,
/* 380 */ 828, 830, 831, 832, 833, 834, 835, 836, 837, 838,
/* 390 */ 743, 756, 839, 829, 840, 841, 783, 846,
/* 230 */ 113, 387, 387, 387, 387, 168, 288, 368, 68, 67,
/* 240 */ 67, 132, 249, 100, 367, 433, 397, 400, 488, 436,
/* 250 */ 441, 442, 165, 430, 317, 446, 448, 449, 451, 452,
/* 260 */ 455, 457, 458, 521, 547, 290, 468, 401, 407, 408,
/* 270 */ 559, 560, 533, 420, 424, 471, 425, 499, 700, 550,
/* 280 */ 702, 703, 553, 704, 705, 611, 613, 571, 596, 603,
/* 290 */ 638, 599, 641, 643, 624, 629, 644, 650, 617, 642,
/* 300 */ 758, 759, 679, 681, 680, 682, 684, 685, 670, 687,
/* 310 */ 688, 690, 773, 691, 677, 645, 732, 779, 686, 646,
/* 320 */ 692, 695, 603, 697, 667, 706, 668, 707, 699, 701,
/* 330 */ 719, 789, 708, 710, 786, 791, 792, 793, 796, 797,
/* 340 */ 798, 799, 716, 790, 725, 800, 801, 722, 724, 726,
/* 350 */ 803, 805, 693, 729, 794, 754, 802, 663, 665, 720,
/* 360 */ 720, 720, 720, 698, 709, 807, 671, 672, 720, 720,
/* 370 */ 720, 820, 823, 742, 720, 825, 826, 827, 828, 830,
/* 380 */ 831, 832, 833, 834, 835, 836, 837, 838, 839, 840,
/* 390 */ 745, 760, 841, 829, 843, 842, 783, 848,
};
#define YY_REDUCE_COUNT (213)
#define YY_REDUCE_MIN (-274)
#define YY_REDUCE_MIN (-275)
#define YY_REDUCE_MAX (552)
static const short yy_reduce_ofst[] = {
/* 0 */ -199, 52, 52, 167, 167, -213, -206, 116, 179, -207,
/* 10 */ -179, -82, -31, 121, 203, 206, 209, 211, 212, 222,
/* 20 */ 226, 236, -274, -220, -202, -186, -221, -162, -132, -39,
/* 30 */ 38, 58, 64, 84, 87, 89, 93, 157, 171, 198,
/* 40 */ 199, 201, 202, 215, 216, 218, 220, 223, -45, -18,
/* 50 */ 69, 128, 197, -22, -203, 96, -76, 117, 266, 284,
/* 60 */ 41, 279, -163, 150, 227, 296, 304, -43, 138, 302,
/* 70 */ 309, -87, -49, -46, 21, 68, 123, 213, 324, 335,
/* 80 */ 336, 337, 331, 340, 349, 382, 383, 384, 385, 311,
/* 90 */ 386, 388, 389, 341, 342, 390, 393, 394, 396, 307,
/* 100 */ 315, 317, 318, 344, 350, 401, 403, 404, 407, 409,
/* 110 */ 410, 411, 412, 414, 415, 417, 418, 419, 420, 421,
/* 120 */ 424, 427, 428, 429, 430, 431, 432, 433, 434, 435,
/* 130 */ 438, 440, 441, 446, 450, 451, 453, 455, 456, 457,
/* 140 */ 458, 459, 460, 461, 462, 463, 464, 466, 467, 468,
/* 150 */ 469, 470, 471, 472, 473, 474, 475, 476, 477, 479,
/* 160 */ 480, 481, 482, 484, 485, 330, 338, 347, 351, 487,
/* 170 */ 356, 359, 343, 352, 391, 488, 490, 392, 489, 492,
/* 180 */ 491, 493, 494, 495, 499, 500, 501, 502, 503, 508,
/* 190 */ 504, 512, 510, 514, 511, 517, 519, 520, 521, 525,
/* 200 */ 522, 529, 524, 526, 530, 532, 538, 540, 542, 550,
/* 210 */ 544, 552, 546, 541,
/* 0 */ -200, 52, 52, 166, 166, -214, -207, 127, 154, -208,
/* 10 */ -180, -83, -32, 75, 122, 199, 200, 202, 205, 220,
/* 20 */ 241, 243, -275, -221, -203, -187, -222, -163, -133, -40,
/* 30 */ 21, 57, 84, 92, 115, 140, 178, 182, 187, 189,
/* 40 */ 190, 195, 196, 198, 209, 211, 216, 218, -46, 111,
/* 50 */ 238, 53, 94, -23, -204, 151, -77, 262, 283, 285,
/* 60 */ 139, 292, -164, 225, 228, 297, 302, -44, 257, 17,
/* 70 */ 308, -99, -50, -13, -27, 20, 103, 130, 326, 337,
/* 80 */ 338, 339, 60, 340, 179, 206, 381, 384, 385, 316,
/* 90 */ 388, 389, 391, 342, 343, 394, 395, 396, 398, 307,
/* 100 */ 310, 319, 320, 346, 347, 402, 403, 404, 405, 406,
/* 110 */ 409, 410, 412, 413, 414, 415, 416, 417, 418, 419,
/* 120 */ 422, 423, 426, 427, 428, 429, 431, 432, 434, 435,
/* 130 */ 437, 438, 439, 440, 443, 444, 445, 447, 450, 453,
/* 140 */ 454, 456, 459, 460, 461, 462, 463, 464, 465, 466,
/* 150 */ 467, 469, 470, 472, 473, 474, 475, 476, 477, 478,
/* 160 */ 479, 480, 481, 482, 483, 336, 345, 349, 350, 484,
/* 170 */ 366, 355, 377, 393, 386, 485, 487, 486, 490, 494,
/* 180 */ 496, 491, 492, 495, 498, 500, 501, 502, 503, 506,
/* 190 */ 504, 505, 507, 511, 508, 514, 512, 516, 517, 519,
/* 200 */ 515, 520, 518, 524, 532, 534, 536, 539, 537, 541,
/* 210 */ 548, 551, 546, 552,
};
static const YYACTIONTYPE yy_default[] = {
/* 0 */ 943, 1066, 1005, 1076, 992, 1002, 1243, 1243, 1243, 1243,
/* 10 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 20 */ 943, 943, 943, 943, 1130, 963, 943, 943, 943, 943,
/* 30 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 40 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 50 */ 943, 943, 943, 1154, 943, 1002, 943, 943, 943, 943,
/* 60 */ 943, 1012, 1002, 943, 943, 1012, 1012, 943, 1125, 1050,
/* 70 */ 1068, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 80 */ 943, 943, 1097, 943, 943, 943, 943, 943, 943, 1132,
/* 90 */ 1138, 1135, 943, 943, 943, 1140, 943, 943, 943, 1176,
/* 100 */ 1176, 1176, 1176, 1123, 943, 943, 943, 943, 943, 943,
/* 110 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 120 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 130 */ 943, 943, 943, 943, 943, 943, 943, 990, 943, 988,
/* 140 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 150 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 160 */ 961, 965, 965, 965, 965, 943, 943, 943, 943, 965,
/* 170 */ 1185, 1189, 1166, 1183, 1177, 1161, 1159, 1157, 1165, 1150,
/* 180 */ 1193, 1099, 965, 965, 965, 1010, 1010, 1006, 1002, 1002,
/* 190 */ 965, 965, 1028, 1026, 1024, 1016, 1022, 1018, 1020, 1014,
/* 200 */ 993, 943, 965, 965, 1000, 1000, 965, 1000, 965, 1000,
/* 210 */ 965, 965, 1050, 1068, 1242, 943, 1194, 1184, 1242, 943,
/* 220 */ 1225, 1224, 943, 1233, 1232, 1231, 1223, 1222, 1221, 943,
/* 230 */ 943, 1217, 1220, 1219, 1218, 943, 943, 1196, 943, 1227,
/* 240 */ 1226, 943, 943, 943, 943, 943, 943, 943, 1147, 943,
/* 250 */ 943, 943, 1172, 1190, 1186, 943, 943, 943, 943, 943,
/* 260 */ 943, 943, 943, 1197, 943, 943, 943, 943, 943, 943,
/* 270 */ 943, 943, 1111, 943, 943, 1078, 943, 943, 943, 943,
/* 280 */ 943, 943, 943, 943, 943, 943, 943, 943, 1122, 943,
/* 290 */ 943, 943, 943, 943, 1134, 1133, 943, 943, 943, 943,
/* 300 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 310 */ 943, 943, 943, 943, 1178, 943, 1173, 943, 1167, 943,
/* 320 */ 943, 943, 1090, 943, 943, 943, 943, 943, 943, 943,
/* 330 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 340 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 350 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 1261,
/* 360 */ 1256, 1257, 1254, 943, 943, 943, 943, 943, 1253, 1248,
/* 370 */ 1249, 943, 943, 943, 1246, 943, 943, 943, 943, 943,
/* 380 */ 943, 943, 943, 943, 943, 943, 943, 943, 943, 943,
/* 390 */ 1034, 943, 943, 972, 943, 970, 943, 943,
/* 0 */ 945, 1068, 1007, 1078, 994, 1004, 1246, 1246, 1246, 1246,
/* 10 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 20 */ 945, 945, 945, 945, 1132, 965, 945, 945, 945, 945,
/* 30 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 40 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 50 */ 945, 945, 945, 1156, 945, 1004, 945, 945, 945, 945,
/* 60 */ 945, 1014, 1004, 945, 945, 1014, 1014, 945, 1127, 1052,
/* 70 */ 1070, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 80 */ 945, 945, 1099, 945, 945, 945, 945, 945, 945, 1134,
/* 90 */ 1140, 1137, 945, 945, 945, 1142, 945, 945, 945, 1178,
/* 100 */ 1178, 1178, 1178, 1125, 945, 945, 945, 945, 945, 945,
/* 110 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 120 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 130 */ 945, 945, 945, 945, 945, 945, 945, 992, 945, 990,
/* 140 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 150 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 160 */ 963, 967, 967, 967, 967, 945, 945, 945, 945, 967,
/* 170 */ 1187, 1191, 1168, 1185, 1179, 1163, 1161, 1159, 1167, 1152,
/* 180 */ 1195, 1101, 967, 967, 967, 1012, 1012, 1008, 1004, 1004,
/* 190 */ 967, 967, 1030, 1028, 1026, 1018, 1024, 1020, 1022, 1016,
/* 200 */ 995, 945, 967, 967, 1002, 1002, 967, 1002, 967, 1002,
/* 210 */ 967, 967, 1052, 1070, 1245, 945, 1196, 1186, 1245, 945,
/* 220 */ 1228, 1227, 945, 1236, 1235, 1234, 1226, 1225, 1224, 945,
/* 230 */ 945, 1220, 1223, 1222, 1221, 945, 945, 1198, 945, 1230,
/* 240 */ 1229, 945, 945, 945, 945, 945, 945, 945, 1149, 945,
/* 250 */ 945, 945, 1174, 1192, 1188, 945, 945, 945, 945, 945,
/* 260 */ 945, 945, 945, 1199, 945, 945, 945, 945, 945, 945,
/* 270 */ 945, 945, 1113, 945, 945, 1080, 945, 945, 945, 945,
/* 280 */ 945, 945, 945, 945, 945, 945, 945, 945, 1124, 945,
/* 290 */ 945, 945, 945, 945, 1136, 1135, 945, 945, 945, 945,
/* 300 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 310 */ 945, 945, 945, 945, 1180, 945, 1175, 945, 1169, 945,
/* 320 */ 945, 945, 1092, 945, 945, 945, 945, 945, 945, 945,
/* 330 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 340 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 350 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 1264,
/* 360 */ 1259, 1260, 1257, 945, 945, 945, 945, 945, 1256, 1251,
/* 370 */ 1252, 945, 945, 945, 1249, 945, 945, 945, 945, 945,
/* 380 */ 945, 945, 945, 945, 945, 945, 945, 945, 945, 945,
/* 390 */ 1036, 945, 945, 974, 945, 972, 945, 945,
};
/********** End of lemon-generated parsing tables *****************************/
......@@ -695,6 +696,7 @@ static const YYCODETYPE yyFallback[] = {
0, /* SLIMIT => nothing */
0, /* SOFFSET => nothing */
0, /* WHERE => nothing */
1, /* TODAY => ID */
0, /* RESET => nothing */
0, /* QUERY => nothing */
0, /* SYNCDB => nothing */
......@@ -985,147 +987,148 @@ static const char *const yyTokenName[] = {
/* 145 */ "SLIMIT",
/* 146 */ "SOFFSET",
/* 147 */ "WHERE",
/* 148 */ "RESET",
/* 149 */ "QUERY",
/* 150 */ "SYNCDB",
/* 151 */ "ADD",
/* 152 */ "COLUMN",
/* 153 */ "MODIFY",
/* 154 */ "TAG",
/* 155 */ "CHANGE",
/* 156 */ "SET",
/* 157 */ "KILL",
/* 158 */ "CONNECTION",
/* 159 */ "STREAM",
/* 160 */ "COLON",
/* 161 */ "ABORT",
/* 162 */ "AFTER",
/* 163 */ "ATTACH",
/* 164 */ "BEFORE",
/* 165 */ "BEGIN",
/* 166 */ "CASCADE",
/* 167 */ "CLUSTER",
/* 168 */ "CONFLICT",
/* 169 */ "COPY",
/* 170 */ "DEFERRED",
/* 171 */ "DELIMITERS",
/* 172 */ "DETACH",
/* 173 */ "EACH",
/* 174 */ "END",
/* 175 */ "EXPLAIN",
/* 176 */ "FAIL",
/* 177 */ "FOR",
/* 178 */ "IGNORE",
/* 179 */ "IMMEDIATE",
/* 180 */ "INITIALLY",
/* 181 */ "INSTEAD",
/* 182 */ "KEY",
/* 183 */ "OF",
/* 184 */ "RAISE",
/* 185 */ "REPLACE",
/* 186 */ "RESTRICT",
/* 187 */ "ROW",
/* 188 */ "STATEMENT",
/* 189 */ "TRIGGER",
/* 190 */ "VIEW",
/* 191 */ "IPTOKEN",
/* 192 */ "SEMI",
/* 193 */ "NONE",
/* 194 */ "PREV",
/* 195 */ "LINEAR",
/* 196 */ "IMPORT",
/* 197 */ "TBNAME",
/* 198 */ "JOIN",
/* 199 */ "INSERT",
/* 200 */ "INTO",
/* 201 */ "VALUES",
/* 202 */ "FILE",
/* 203 */ "program",
/* 204 */ "cmd",
/* 205 */ "ids",
/* 206 */ "dbPrefix",
/* 207 */ "cpxName",
/* 208 */ "ifexists",
/* 209 */ "alter_db_optr",
/* 210 */ "alter_topic_optr",
/* 211 */ "acct_optr",
/* 212 */ "exprlist",
/* 213 */ "ifnotexists",
/* 214 */ "db_optr",
/* 215 */ "topic_optr",
/* 216 */ "typename",
/* 217 */ "bufsize",
/* 218 */ "pps",
/* 219 */ "tseries",
/* 220 */ "dbs",
/* 221 */ "streams",
/* 222 */ "storage",
/* 223 */ "qtime",
/* 224 */ "users",
/* 225 */ "conns",
/* 226 */ "state",
/* 227 */ "intitemlist",
/* 228 */ "intitem",
/* 229 */ "keep",
/* 230 */ "cache",
/* 231 */ "replica",
/* 232 */ "quorum",
/* 233 */ "days",
/* 234 */ "minrows",
/* 235 */ "maxrows",
/* 236 */ "blocks",
/* 237 */ "ctime",
/* 238 */ "wal",
/* 239 */ "fsync",
/* 240 */ "comp",
/* 241 */ "prec",
/* 242 */ "update",
/* 243 */ "cachelast",
/* 244 */ "partitions",
/* 245 */ "signed",
/* 246 */ "create_table_args",
/* 247 */ "create_stable_args",
/* 248 */ "create_table_list",
/* 249 */ "create_from_stable",
/* 250 */ "columnlist",
/* 251 */ "tagitemlist",
/* 252 */ "tagNamelist",
/* 253 */ "to_opt",
/* 254 */ "split_opt",
/* 255 */ "select",
/* 256 */ "to_split",
/* 257 */ "column",
/* 258 */ "tagitem",
/* 259 */ "selcollist",
/* 260 */ "from",
/* 261 */ "where_opt",
/* 262 */ "range_option",
/* 263 */ "interval_option",
/* 264 */ "sliding_opt",
/* 265 */ "session_option",
/* 266 */ "windowstate_option",
/* 267 */ "fill_opt",
/* 268 */ "groupby_opt",
/* 269 */ "having_opt",
/* 270 */ "orderby_opt",
/* 271 */ "slimit_opt",
/* 272 */ "limit_opt",
/* 273 */ "union",
/* 274 */ "sclp",
/* 275 */ "distinct",
/* 276 */ "expr",
/* 277 */ "as",
/* 278 */ "tablelist",
/* 279 */ "sub",
/* 280 */ "tmvar",
/* 281 */ "timestamp",
/* 282 */ "intervalKey",
/* 283 */ "sortlist",
/* 284 */ "item",
/* 285 */ "sortorder",
/* 286 */ "arrow",
/* 287 */ "grouplist",
/* 288 */ "expritem",
/* 148 */ "TODAY",
/* 149 */ "RESET",
/* 150 */ "QUERY",
/* 151 */ "SYNCDB",
/* 152 */ "ADD",
/* 153 */ "COLUMN",
/* 154 */ "MODIFY",
/* 155 */ "TAG",
/* 156 */ "CHANGE",
/* 157 */ "SET",
/* 158 */ "KILL",
/* 159 */ "CONNECTION",
/* 160 */ "STREAM",
/* 161 */ "COLON",
/* 162 */ "ABORT",
/* 163 */ "AFTER",
/* 164 */ "ATTACH",
/* 165 */ "BEFORE",
/* 166 */ "BEGIN",
/* 167 */ "CASCADE",
/* 168 */ "CLUSTER",
/* 169 */ "CONFLICT",
/* 170 */ "COPY",
/* 171 */ "DEFERRED",
/* 172 */ "DELIMITERS",
/* 173 */ "DETACH",
/* 174 */ "EACH",
/* 175 */ "END",
/* 176 */ "EXPLAIN",
/* 177 */ "FAIL",
/* 178 */ "FOR",
/* 179 */ "IGNORE",
/* 180 */ "IMMEDIATE",
/* 181 */ "INITIALLY",
/* 182 */ "INSTEAD",
/* 183 */ "KEY",
/* 184 */ "OF",
/* 185 */ "RAISE",
/* 186 */ "REPLACE",
/* 187 */ "RESTRICT",
/* 188 */ "ROW",
/* 189 */ "STATEMENT",
/* 190 */ "TRIGGER",
/* 191 */ "VIEW",
/* 192 */ "IPTOKEN",
/* 193 */ "SEMI",
/* 194 */ "NONE",
/* 195 */ "PREV",
/* 196 */ "LINEAR",
/* 197 */ "IMPORT",
/* 198 */ "TBNAME",
/* 199 */ "JOIN",
/* 200 */ "INSERT",
/* 201 */ "INTO",
/* 202 */ "VALUES",
/* 203 */ "FILE",
/* 204 */ "program",
/* 205 */ "cmd",
/* 206 */ "ids",
/* 207 */ "dbPrefix",
/* 208 */ "cpxName",
/* 209 */ "ifexists",
/* 210 */ "alter_db_optr",
/* 211 */ "alter_topic_optr",
/* 212 */ "acct_optr",
/* 213 */ "exprlist",
/* 214 */ "ifnotexists",
/* 215 */ "db_optr",
/* 216 */ "topic_optr",
/* 217 */ "typename",
/* 218 */ "bufsize",
/* 219 */ "pps",
/* 220 */ "tseries",
/* 221 */ "dbs",
/* 222 */ "streams",
/* 223 */ "storage",
/* 224 */ "qtime",
/* 225 */ "users",
/* 226 */ "conns",
/* 227 */ "state",
/* 228 */ "intitemlist",
/* 229 */ "intitem",
/* 230 */ "keep",
/* 231 */ "cache",
/* 232 */ "replica",
/* 233 */ "quorum",
/* 234 */ "days",
/* 235 */ "minrows",
/* 236 */ "maxrows",
/* 237 */ "blocks",
/* 238 */ "ctime",
/* 239 */ "wal",
/* 240 */ "fsync",
/* 241 */ "comp",
/* 242 */ "prec",
/* 243 */ "update",
/* 244 */ "cachelast",
/* 245 */ "partitions",
/* 246 */ "signed",
/* 247 */ "create_table_args",
/* 248 */ "create_stable_args",
/* 249 */ "create_table_list",
/* 250 */ "create_from_stable",
/* 251 */ "columnlist",
/* 252 */ "tagitemlist",
/* 253 */ "tagNamelist",
/* 254 */ "to_opt",
/* 255 */ "split_opt",
/* 256 */ "select",
/* 257 */ "to_split",
/* 258 */ "column",
/* 259 */ "tagitem",
/* 260 */ "selcollist",
/* 261 */ "from",
/* 262 */ "where_opt",
/* 263 */ "range_option",
/* 264 */ "interval_option",
/* 265 */ "sliding_opt",
/* 266 */ "session_option",
/* 267 */ "windowstate_option",
/* 268 */ "fill_opt",
/* 269 */ "groupby_opt",
/* 270 */ "having_opt",
/* 271 */ "orderby_opt",
/* 272 */ "slimit_opt",
/* 273 */ "limit_opt",
/* 274 */ "union",
/* 275 */ "sclp",
/* 276 */ "distinct",
/* 277 */ "expr",
/* 278 */ "as",
/* 279 */ "tablelist",
/* 280 */ "sub",
/* 281 */ "tmvar",
/* 282 */ "timestamp",
/* 283 */ "intervalKey",
/* 284 */ "sortlist",
/* 285 */ "item",
/* 286 */ "sortorder",
/* 287 */ "arrow",
/* 288 */ "grouplist",
/* 289 */ "expritem",
};
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
......@@ -1394,64 +1397,65 @@ static const char *const yyRuleName[] = {
/* 258 */ "expr ::= PLUS FLOAT",
/* 259 */ "expr ::= STRING",
/* 260 */ "expr ::= NOW",
/* 261 */ "expr ::= VARIABLE",
/* 262 */ "expr ::= PLUS VARIABLE",
/* 263 */ "expr ::= MINUS VARIABLE",
/* 264 */ "expr ::= BOOL",
/* 265 */ "expr ::= NULL",
/* 266 */ "expr ::= ID LP exprlist RP",
/* 267 */ "expr ::= ID LP STAR RP",
/* 268 */ "expr ::= ID LP expr AS typename RP",
/* 269 */ "expr ::= expr IS NULL",
/* 270 */ "expr ::= expr IS NOT NULL",
/* 271 */ "expr ::= expr LT expr",
/* 272 */ "expr ::= expr GT expr",
/* 273 */ "expr ::= expr LE expr",
/* 274 */ "expr ::= expr GE expr",
/* 275 */ "expr ::= expr NE expr",
/* 276 */ "expr ::= expr EQ expr",
/* 277 */ "expr ::= expr BETWEEN expr AND expr",
/* 278 */ "expr ::= expr AND expr",
/* 279 */ "expr ::= expr OR expr",
/* 280 */ "expr ::= expr PLUS expr",
/* 281 */ "expr ::= expr MINUS expr",
/* 282 */ "expr ::= expr STAR expr",
/* 283 */ "expr ::= expr SLASH expr",
/* 284 */ "expr ::= expr REM expr",
/* 285 */ "expr ::= expr LIKE expr",
/* 286 */ "expr ::= expr MATCH expr",
/* 287 */ "expr ::= expr NMATCH expr",
/* 288 */ "expr ::= ID CONTAINS STRING",
/* 289 */ "expr ::= ID DOT ID CONTAINS STRING",
/* 290 */ "arrow ::= ID ARROW STRING",
/* 291 */ "arrow ::= ID DOT ID ARROW STRING",
/* 292 */ "expr ::= arrow",
/* 293 */ "expr ::= expr IN LP exprlist RP",
/* 294 */ "exprlist ::= exprlist COMMA expritem",
/* 295 */ "exprlist ::= expritem",
/* 296 */ "expritem ::= expr",
/* 297 */ "expritem ::=",
/* 298 */ "cmd ::= RESET QUERY CACHE",
/* 299 */ "cmd ::= SYNCDB ids REPLICA",
/* 300 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist",
/* 301 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids",
/* 302 */ "cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist",
/* 303 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist",
/* 304 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids",
/* 305 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids",
/* 306 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem",
/* 307 */ "cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist",
/* 308 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist",
/* 309 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids",
/* 310 */ "cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist",
/* 311 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist",
/* 312 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids",
/* 313 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids",
/* 314 */ "cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem",
/* 315 */ "cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist",
/* 316 */ "cmd ::= KILL CONNECTION INTEGER",
/* 317 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER",
/* 318 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER",
/* 261 */ "expr ::= TODAY",
/* 262 */ "expr ::= VARIABLE",
/* 263 */ "expr ::= PLUS VARIABLE",
/* 264 */ "expr ::= MINUS VARIABLE",
/* 265 */ "expr ::= BOOL",
/* 266 */ "expr ::= NULL",
/* 267 */ "expr ::= ID LP exprlist RP",
/* 268 */ "expr ::= ID LP STAR RP",
/* 269 */ "expr ::= ID LP expr AS typename RP",
/* 270 */ "expr ::= expr IS NULL",
/* 271 */ "expr ::= expr IS NOT NULL",
/* 272 */ "expr ::= expr LT expr",
/* 273 */ "expr ::= expr GT expr",
/* 274 */ "expr ::= expr LE expr",
/* 275 */ "expr ::= expr GE expr",
/* 276 */ "expr ::= expr NE expr",
/* 277 */ "expr ::= expr EQ expr",
/* 278 */ "expr ::= expr BETWEEN expr AND expr",
/* 279 */ "expr ::= expr AND expr",
/* 280 */ "expr ::= expr OR expr",
/* 281 */ "expr ::= expr PLUS expr",
/* 282 */ "expr ::= expr MINUS expr",
/* 283 */ "expr ::= expr STAR expr",
/* 284 */ "expr ::= expr SLASH expr",
/* 285 */ "expr ::= expr REM expr",
/* 286 */ "expr ::= expr LIKE expr",
/* 287 */ "expr ::= expr MATCH expr",
/* 288 */ "expr ::= expr NMATCH expr",
/* 289 */ "expr ::= ID CONTAINS STRING",
/* 290 */ "expr ::= ID DOT ID CONTAINS STRING",
/* 291 */ "arrow ::= ID ARROW STRING",
/* 292 */ "arrow ::= ID DOT ID ARROW STRING",
/* 293 */ "expr ::= arrow",
/* 294 */ "expr ::= expr IN LP exprlist RP",
/* 295 */ "exprlist ::= exprlist COMMA expritem",
/* 296 */ "exprlist ::= expritem",
/* 297 */ "expritem ::= expr",
/* 298 */ "expritem ::=",
/* 299 */ "cmd ::= RESET QUERY CACHE",
/* 300 */ "cmd ::= SYNCDB ids REPLICA",
/* 301 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist",
/* 302 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids",
/* 303 */ "cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist",
/* 304 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist",
/* 305 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids",
/* 306 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids",
/* 307 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem",
/* 308 */ "cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist",
/* 309 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist",
/* 310 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids",
/* 311 */ "cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist",
/* 312 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist",
/* 313 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids",
/* 314 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids",
/* 315 */ "cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem",
/* 316 */ "cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist",
/* 317 */ "cmd ::= KILL CONNECTION INTEGER",
/* 318 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER",
/* 319 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER",
};
#endif /* NDEBUG */
......@@ -1577,57 +1581,57 @@ static void yy_destructor(
** inside the C code.
*/
/********* Begin destructor definitions ***************************************/
case 212: /* exprlist */
case 259: /* selcollist */
case 274: /* sclp */
case 213: /* exprlist */
case 260: /* selcollist */
case 275: /* sclp */
{
tSqlExprListDestroy((yypminor->yy209));
tSqlExprListDestroy((yypminor->yy161));
}
break;
case 227: /* intitemlist */
case 229: /* keep */
case 250: /* columnlist */
case 251: /* tagitemlist */
case 252: /* tagNamelist */
case 267: /* fill_opt */
case 268: /* groupby_opt */
case 270: /* orderby_opt */
case 283: /* sortlist */
case 287: /* grouplist */
case 228: /* intitemlist */
case 230: /* keep */
case 251: /* columnlist */
case 252: /* tagitemlist */
case 253: /* tagNamelist */
case 268: /* fill_opt */
case 269: /* groupby_opt */
case 271: /* orderby_opt */
case 284: /* sortlist */
case 288: /* grouplist */
{
taosArrayDestroy(&(yypminor->yy209));
taosArrayDestroy(&(yypminor->yy161));
}
break;
case 248: /* create_table_list */
case 249: /* create_table_list */
{
destroyCreateTableSql((yypminor->yy404));
destroyCreateTableSql((yypminor->yy462));
}
break;
case 255: /* select */
case 256: /* select */
{
destroySqlNode((yypminor->yy160));
destroySqlNode((yypminor->yy276));
}
break;
case 260: /* from */
case 278: /* tablelist */
case 279: /* sub */
case 261: /* from */
case 279: /* tablelist */
case 280: /* sub */
{
destroyRelationInfo((yypminor->yy530));
destroyRelationInfo((yypminor->yy84));
}
break;
case 261: /* where_opt */
case 269: /* having_opt */
case 276: /* expr */
case 281: /* timestamp */
case 286: /* arrow */
case 288: /* expritem */
case 262: /* where_opt */
case 270: /* having_opt */
case 277: /* expr */
case 282: /* timestamp */
case 287: /* arrow */
case 289: /* expritem */
{
tSqlExprDestroy((yypminor->yy574));
tSqlExprDestroy((yypminor->yy546));
}
break;
case 273: /* union */
case 274: /* union */
{
destroyAllSqlNode((yypminor->yy209));
destroyAllSqlNode((yypminor->yy161));
}
break;
/********* End destructor definitions *****************************************/
......@@ -1753,15 +1757,18 @@ static YYACTIONTYPE yy_find_shift_action(
do{
i = yy_shift_ofst[stateno];
assert( i>=0 );
/* assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); */
assert( i<=YY_ACTTAB_COUNT );
assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD );
assert( iLookAhead!=YYNOCODE );
assert( iLookAhead < YYNTOKEN );
i += iLookAhead;
if( i>=YY_NLOOKAHEAD || yy_lookahead[i]!=iLookAhead ){
assert( i<(int)YY_NLOOKAHEAD );
if( yy_lookahead[i]!=iLookAhead ){
#ifdef YYFALLBACK
YYCODETYPE iFallback; /* Fallback token */
if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
&& (iFallback = yyFallback[iLookAhead])!=0 ){
assert( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) );
iFallback = yyFallback[iLookAhead];
if( iFallback!=0 ){
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
......@@ -1776,16 +1783,8 @@ static YYACTIONTYPE yy_find_shift_action(
#ifdef YYWILDCARD
{
int j = i - iLookAhead + YYWILDCARD;
if(
#if YY_SHIFT_MIN+YYWILDCARD<0
j>=0 &&
#endif
#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
j<YY_ACTTAB_COUNT &&
#endif
j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) &&
yy_lookahead[j]==YYWILDCARD && iLookAhead>0
){
assert( j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) );
if( yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
......@@ -1799,6 +1798,7 @@ static YYACTIONTYPE yy_find_shift_action(
#endif /* YYWILDCARD */
return yy_default[stateno];
}else{
assert( i>=0 && i<sizeof(yy_action)/sizeof(yy_action[0]) );
return yy_action[i];
}
}while(1);
......@@ -1917,332 +1917,654 @@ static void yy_shift(
yyTraceShift(yypParser, yyNewState, "Shift");
}
/* The following table contains information about every rule that
** is used during the reduce.
*/
static const struct {
YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
signed char nrhs; /* Negative of the number of RHS symbols in the rule */
} yyRuleInfo[] = {
{ 203, -1 }, /* (0) program ::= cmd */
{ 204, -2 }, /* (1) cmd ::= SHOW DATABASES */
{ 204, -2 }, /* (2) cmd ::= SHOW TOPICS */
{ 204, -2 }, /* (3) cmd ::= SHOW FUNCTIONS */
{ 204, -2 }, /* (4) cmd ::= SHOW MNODES */
{ 204, -2 }, /* (5) cmd ::= SHOW DNODES */
{ 204, -2 }, /* (6) cmd ::= SHOW ACCOUNTS */
{ 204, -2 }, /* (7) cmd ::= SHOW USERS */
{ 204, -2 }, /* (8) cmd ::= SHOW MODULES */
{ 204, -2 }, /* (9) cmd ::= SHOW QUERIES */
{ 204, -2 }, /* (10) cmd ::= SHOW CONNECTIONS */
{ 204, -2 }, /* (11) cmd ::= SHOW STREAMS */
{ 204, -2 }, /* (12) cmd ::= SHOW VARIABLES */
{ 204, -2 }, /* (13) cmd ::= SHOW SCORES */
{ 204, -2 }, /* (14) cmd ::= SHOW GRANTS */
{ 204, -2 }, /* (15) cmd ::= SHOW VNODES */
{ 204, -3 }, /* (16) cmd ::= SHOW VNODES ids */
{ 206, 0 }, /* (17) dbPrefix ::= */
{ 206, -2 }, /* (18) dbPrefix ::= ids DOT */
{ 207, 0 }, /* (19) cpxName ::= */
{ 207, -2 }, /* (20) cpxName ::= DOT ids */
{ 204, -5 }, /* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
{ 204, -5 }, /* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
{ 204, -4 }, /* (23) cmd ::= SHOW CREATE DATABASE ids */
{ 204, -3 }, /* (24) cmd ::= SHOW dbPrefix TABLES */
{ 204, -5 }, /* (25) cmd ::= SHOW dbPrefix TABLES LIKE STRING */
{ 204, -3 }, /* (26) cmd ::= SHOW dbPrefix STABLES */
{ 204, -5 }, /* (27) cmd ::= SHOW dbPrefix STABLES LIKE STRING */
{ 204, -3 }, /* (28) cmd ::= SHOW dbPrefix VGROUPS */
{ 204, -5 }, /* (29) cmd ::= DROP TABLE ifexists ids cpxName */
{ 204, -5 }, /* (30) cmd ::= DROP STABLE ifexists ids cpxName */
{ 204, -4 }, /* (31) cmd ::= DROP DATABASE ifexists ids */
{ 204, -4 }, /* (32) cmd ::= DROP TOPIC ifexists ids */
{ 204, -3 }, /* (33) cmd ::= DROP FUNCTION ids */
{ 204, -3 }, /* (34) cmd ::= DROP DNODE ids */
{ 204, -3 }, /* (35) cmd ::= DROP USER ids */
{ 204, -3 }, /* (36) cmd ::= DROP ACCOUNT ids */
{ 204, -2 }, /* (37) cmd ::= USE ids */
{ 204, -3 }, /* (38) cmd ::= DESCRIBE ids cpxName */
{ 204, -3 }, /* (39) cmd ::= DESC ids cpxName */
{ 204, -5 }, /* (40) cmd ::= ALTER USER ids PASS ids */
{ 204, -5 }, /* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
{ 204, -4 }, /* (42) cmd ::= ALTER DNODE ids ids */
{ 204, -5 }, /* (43) cmd ::= ALTER DNODE ids ids ids */
{ 204, -3 }, /* (44) cmd ::= ALTER LOCAL ids */
{ 204, -4 }, /* (45) cmd ::= ALTER LOCAL ids ids */
{ 204, -4 }, /* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
{ 204, -4 }, /* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
{ 204, -4 }, /* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
{ 204, -6 }, /* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{ 204, -6 }, /* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
{ 205, -1 }, /* (51) ids ::= ID */
{ 205, -1 }, /* (52) ids ::= STRING */
{ 208, -2 }, /* (53) ifexists ::= IF EXISTS */
{ 208, 0 }, /* (54) ifexists ::= */
{ 213, -3 }, /* (55) ifnotexists ::= IF NOT EXISTS */
{ 213, 0 }, /* (56) ifnotexists ::= */
{ 204, -3 }, /* (57) cmd ::= CREATE DNODE ids */
{ 204, -6 }, /* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{ 204, -5 }, /* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
{ 204, -5 }, /* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
{ 204, -8 }, /* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{ 204, -9 }, /* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{ 204, -5 }, /* (63) cmd ::= CREATE USER ids PASS ids */
{ 217, 0 }, /* (64) bufsize ::= */
{ 217, -2 }, /* (65) bufsize ::= BUFSIZE INTEGER */
{ 218, 0 }, /* (66) pps ::= */
{ 218, -2 }, /* (67) pps ::= PPS INTEGER */
{ 219, 0 }, /* (68) tseries ::= */
{ 219, -2 }, /* (69) tseries ::= TSERIES INTEGER */
{ 220, 0 }, /* (70) dbs ::= */
{ 220, -2 }, /* (71) dbs ::= DBS INTEGER */
{ 221, 0 }, /* (72) streams ::= */
{ 221, -2 }, /* (73) streams ::= STREAMS INTEGER */
{ 222, 0 }, /* (74) storage ::= */
{ 222, -2 }, /* (75) storage ::= STORAGE INTEGER */
{ 223, 0 }, /* (76) qtime ::= */
{ 223, -2 }, /* (77) qtime ::= QTIME INTEGER */
{ 224, 0 }, /* (78) users ::= */
{ 224, -2 }, /* (79) users ::= USERS INTEGER */
{ 225, 0 }, /* (80) conns ::= */
{ 225, -2 }, /* (81) conns ::= CONNS INTEGER */
{ 226, 0 }, /* (82) state ::= */
{ 226, -2 }, /* (83) state ::= STATE ids */
{ 211, -9 }, /* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{ 227, -3 }, /* (85) intitemlist ::= intitemlist COMMA intitem */
{ 227, -1 }, /* (86) intitemlist ::= intitem */
{ 228, -1 }, /* (87) intitem ::= INTEGER */
{ 229, -2 }, /* (88) keep ::= KEEP intitemlist */
{ 230, -2 }, /* (89) cache ::= CACHE INTEGER */
{ 231, -2 }, /* (90) replica ::= REPLICA INTEGER */
{ 232, -2 }, /* (91) quorum ::= QUORUM INTEGER */
{ 233, -2 }, /* (92) days ::= DAYS INTEGER */
{ 234, -2 }, /* (93) minrows ::= MINROWS INTEGER */
{ 235, -2 }, /* (94) maxrows ::= MAXROWS INTEGER */
{ 236, -2 }, /* (95) blocks ::= BLOCKS INTEGER */
{ 237, -2 }, /* (96) ctime ::= CTIME INTEGER */
{ 238, -2 }, /* (97) wal ::= WAL INTEGER */
{ 239, -2 }, /* (98) fsync ::= FSYNC INTEGER */
{ 240, -2 }, /* (99) comp ::= COMP INTEGER */
{ 241, -2 }, /* (100) prec ::= PRECISION STRING */
{ 242, -2 }, /* (101) update ::= UPDATE INTEGER */
{ 243, -2 }, /* (102) cachelast ::= CACHELAST INTEGER */
{ 244, -2 }, /* (103) partitions ::= PARTITIONS INTEGER */
{ 214, 0 }, /* (104) db_optr ::= */
{ 214, -2 }, /* (105) db_optr ::= db_optr cache */
{ 214, -2 }, /* (106) db_optr ::= db_optr replica */
{ 214, -2 }, /* (107) db_optr ::= db_optr quorum */
{ 214, -2 }, /* (108) db_optr ::= db_optr days */
{ 214, -2 }, /* (109) db_optr ::= db_optr minrows */
{ 214, -2 }, /* (110) db_optr ::= db_optr maxrows */
{ 214, -2 }, /* (111) db_optr ::= db_optr blocks */
{ 214, -2 }, /* (112) db_optr ::= db_optr ctime */
{ 214, -2 }, /* (113) db_optr ::= db_optr wal */
{ 214, -2 }, /* (114) db_optr ::= db_optr fsync */
{ 214, -2 }, /* (115) db_optr ::= db_optr comp */
{ 214, -2 }, /* (116) db_optr ::= db_optr prec */
{ 214, -2 }, /* (117) db_optr ::= db_optr keep */
{ 214, -2 }, /* (118) db_optr ::= db_optr update */
{ 214, -2 }, /* (119) db_optr ::= db_optr cachelast */
{ 215, -1 }, /* (120) topic_optr ::= db_optr */
{ 215, -2 }, /* (121) topic_optr ::= topic_optr partitions */
{ 209, 0 }, /* (122) alter_db_optr ::= */
{ 209, -2 }, /* (123) alter_db_optr ::= alter_db_optr replica */
{ 209, -2 }, /* (124) alter_db_optr ::= alter_db_optr quorum */
{ 209, -2 }, /* (125) alter_db_optr ::= alter_db_optr keep */
{ 209, -2 }, /* (126) alter_db_optr ::= alter_db_optr blocks */
{ 209, -2 }, /* (127) alter_db_optr ::= alter_db_optr comp */
{ 209, -2 }, /* (128) alter_db_optr ::= alter_db_optr update */
{ 209, -2 }, /* (129) alter_db_optr ::= alter_db_optr cachelast */
{ 210, -1 }, /* (130) alter_topic_optr ::= alter_db_optr */
{ 210, -2 }, /* (131) alter_topic_optr ::= alter_topic_optr partitions */
{ 216, -1 }, /* (132) typename ::= ids */
{ 216, -4 }, /* (133) typename ::= ids LP signed RP */
{ 216, -2 }, /* (134) typename ::= ids UNSIGNED */
{ 245, -1 }, /* (135) signed ::= INTEGER */
{ 245, -2 }, /* (136) signed ::= PLUS INTEGER */
{ 245, -2 }, /* (137) signed ::= MINUS INTEGER */
{ 204, -3 }, /* (138) cmd ::= CREATE TABLE create_table_args */
{ 204, -3 }, /* (139) cmd ::= CREATE TABLE create_stable_args */
{ 204, -3 }, /* (140) cmd ::= CREATE STABLE create_stable_args */
{ 204, -3 }, /* (141) cmd ::= CREATE TABLE create_table_list */
{ 248, -1 }, /* (142) create_table_list ::= create_from_stable */
{ 248, -2 }, /* (143) create_table_list ::= create_table_list create_from_stable */
{ 246, -6 }, /* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{ 247, -10 }, /* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{ 249, -10 }, /* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{ 249, -13 }, /* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{ 252, -3 }, /* (148) tagNamelist ::= tagNamelist COMMA ids */
{ 252, -1 }, /* (149) tagNamelist ::= ids */
{ 246, -7 }, /* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
{ 253, 0 }, /* (151) to_opt ::= */
{ 253, -3 }, /* (152) to_opt ::= TO ids cpxName */
{ 254, 0 }, /* (153) split_opt ::= */
{ 254, -2 }, /* (154) split_opt ::= SPLIT ids */
{ 250, -3 }, /* (155) columnlist ::= columnlist COMMA column */
{ 250, -1 }, /* (156) columnlist ::= column */
{ 257, -2 }, /* (157) column ::= ids typename */
{ 251, -3 }, /* (158) tagitemlist ::= tagitemlist COMMA tagitem */
{ 251, -1 }, /* (159) tagitemlist ::= tagitem */
{ 258, -1 }, /* (160) tagitem ::= INTEGER */
{ 258, -1 }, /* (161) tagitem ::= FLOAT */
{ 258, -1 }, /* (162) tagitem ::= STRING */
{ 258, -1 }, /* (163) tagitem ::= BOOL */
{ 258, -1 }, /* (164) tagitem ::= NULL */
{ 258, -1 }, /* (165) tagitem ::= NOW */
{ 258, -3 }, /* (166) tagitem ::= NOW PLUS VARIABLE */
{ 258, -3 }, /* (167) tagitem ::= NOW MINUS VARIABLE */
{ 258, -2 }, /* (168) tagitem ::= MINUS INTEGER */
{ 258, -2 }, /* (169) tagitem ::= MINUS FLOAT */
{ 258, -2 }, /* (170) tagitem ::= PLUS INTEGER */
{ 258, -2 }, /* (171) tagitem ::= PLUS FLOAT */
{ 255, -15 }, /* (172) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{ 255, -3 }, /* (173) select ::= LP select RP */
{ 273, -1 }, /* (174) union ::= select */
{ 273, -4 }, /* (175) union ::= union UNION ALL select */
{ 204, -1 }, /* (176) cmd ::= union */
{ 255, -2 }, /* (177) select ::= SELECT selcollist */
{ 274, -2 }, /* (178) sclp ::= selcollist COMMA */
{ 274, 0 }, /* (179) sclp ::= */
{ 259, -4 }, /* (180) selcollist ::= sclp distinct expr as */
{ 259, -2 }, /* (181) selcollist ::= sclp STAR */
{ 277, -2 }, /* (182) as ::= AS ids */
{ 277, -1 }, /* (183) as ::= ids */
{ 277, 0 }, /* (184) as ::= */
{ 275, -1 }, /* (185) distinct ::= DISTINCT */
{ 275, 0 }, /* (186) distinct ::= */
{ 260, -2 }, /* (187) from ::= FROM tablelist */
{ 260, -2 }, /* (188) from ::= FROM sub */
{ 279, -3 }, /* (189) sub ::= LP union RP */
{ 279, -4 }, /* (190) sub ::= LP union RP ids */
{ 279, -6 }, /* (191) sub ::= sub COMMA LP union RP ids */
{ 278, -2 }, /* (192) tablelist ::= ids cpxName */
{ 278, -3 }, /* (193) tablelist ::= ids cpxName ids */
{ 278, -4 }, /* (194) tablelist ::= tablelist COMMA ids cpxName */
{ 278, -5 }, /* (195) tablelist ::= tablelist COMMA ids cpxName ids */
{ 280, -1 }, /* (196) tmvar ::= VARIABLE */
{ 281, -1 }, /* (197) timestamp ::= INTEGER */
{ 281, -2 }, /* (198) timestamp ::= MINUS INTEGER */
{ 281, -2 }, /* (199) timestamp ::= PLUS INTEGER */
{ 281, -1 }, /* (200) timestamp ::= STRING */
{ 281, -1 }, /* (201) timestamp ::= NOW */
{ 281, -3 }, /* (202) timestamp ::= NOW PLUS VARIABLE */
{ 281, -3 }, /* (203) timestamp ::= NOW MINUS VARIABLE */
{ 262, 0 }, /* (204) range_option ::= */
{ 262, -6 }, /* (205) range_option ::= RANGE LP timestamp COMMA timestamp RP */
{ 263, -4 }, /* (206) interval_option ::= intervalKey LP tmvar RP */
{ 263, -6 }, /* (207) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{ 263, 0 }, /* (208) interval_option ::= */
{ 282, -1 }, /* (209) intervalKey ::= INTERVAL */
{ 282, -1 }, /* (210) intervalKey ::= EVERY */
{ 265, 0 }, /* (211) session_option ::= */
{ 265, -7 }, /* (212) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{ 266, 0 }, /* (213) windowstate_option ::= */
{ 266, -4 }, /* (214) windowstate_option ::= STATE_WINDOW LP ids RP */
{ 267, 0 }, /* (215) fill_opt ::= */
{ 267, -6 }, /* (216) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{ 267, -4 }, /* (217) fill_opt ::= FILL LP ID RP */
{ 264, -4 }, /* (218) sliding_opt ::= SLIDING LP tmvar RP */
{ 264, 0 }, /* (219) sliding_opt ::= */
{ 270, 0 }, /* (220) orderby_opt ::= */
{ 270, -3 }, /* (221) orderby_opt ::= ORDER BY sortlist */
{ 283, -4 }, /* (222) sortlist ::= sortlist COMMA item sortorder */
{ 283, -4 }, /* (223) sortlist ::= sortlist COMMA arrow sortorder */
{ 283, -2 }, /* (224) sortlist ::= item sortorder */
{ 283, -2 }, /* (225) sortlist ::= arrow sortorder */
{ 284, -1 }, /* (226) item ::= ID */
{ 284, -3 }, /* (227) item ::= ID DOT ID */
{ 285, -1 }, /* (228) sortorder ::= ASC */
{ 285, -1 }, /* (229) sortorder ::= DESC */
{ 285, 0 }, /* (230) sortorder ::= */
{ 268, 0 }, /* (231) groupby_opt ::= */
{ 268, -3 }, /* (232) groupby_opt ::= GROUP BY grouplist */
{ 287, -3 }, /* (233) grouplist ::= grouplist COMMA item */
{ 287, -3 }, /* (234) grouplist ::= grouplist COMMA arrow */
{ 287, -1 }, /* (235) grouplist ::= item */
{ 287, -1 }, /* (236) grouplist ::= arrow */
{ 269, 0 }, /* (237) having_opt ::= */
{ 269, -2 }, /* (238) having_opt ::= HAVING expr */
{ 272, 0 }, /* (239) limit_opt ::= */
{ 272, -2 }, /* (240) limit_opt ::= LIMIT signed */
{ 272, -4 }, /* (241) limit_opt ::= LIMIT signed OFFSET signed */
{ 272, -4 }, /* (242) limit_opt ::= LIMIT signed COMMA signed */
{ 271, 0 }, /* (243) slimit_opt ::= */
{ 271, -2 }, /* (244) slimit_opt ::= SLIMIT signed */
{ 271, -4 }, /* (245) slimit_opt ::= SLIMIT signed SOFFSET signed */
{ 271, -4 }, /* (246) slimit_opt ::= SLIMIT signed COMMA signed */
{ 261, 0 }, /* (247) where_opt ::= */
{ 261, -2 }, /* (248) where_opt ::= WHERE expr */
{ 276, -3 }, /* (249) expr ::= LP expr RP */
{ 276, -1 }, /* (250) expr ::= ID */
{ 276, -3 }, /* (251) expr ::= ID DOT ID */
{ 276, -3 }, /* (252) expr ::= ID DOT STAR */
{ 276, -1 }, /* (253) expr ::= INTEGER */
{ 276, -2 }, /* (254) expr ::= MINUS INTEGER */
{ 276, -2 }, /* (255) expr ::= PLUS INTEGER */
{ 276, -1 }, /* (256) expr ::= FLOAT */
{ 276, -2 }, /* (257) expr ::= MINUS FLOAT */
{ 276, -2 }, /* (258) expr ::= PLUS FLOAT */
{ 276, -1 }, /* (259) expr ::= STRING */
{ 276, -1 }, /* (260) expr ::= NOW */
{ 276, -1 }, /* (261) expr ::= VARIABLE */
{ 276, -2 }, /* (262) expr ::= PLUS VARIABLE */
{ 276, -2 }, /* (263) expr ::= MINUS VARIABLE */
{ 276, -1 }, /* (264) expr ::= BOOL */
{ 276, -1 }, /* (265) expr ::= NULL */
{ 276, -4 }, /* (266) expr ::= ID LP exprlist RP */
{ 276, -4 }, /* (267) expr ::= ID LP STAR RP */
{ 276, -6 }, /* (268) expr ::= ID LP expr AS typename RP */
{ 276, -3 }, /* (269) expr ::= expr IS NULL */
{ 276, -4 }, /* (270) expr ::= expr IS NOT NULL */
{ 276, -3 }, /* (271) expr ::= expr LT expr */
{ 276, -3 }, /* (272) expr ::= expr GT expr */
{ 276, -3 }, /* (273) expr ::= expr LE expr */
{ 276, -3 }, /* (274) expr ::= expr GE expr */
{ 276, -3 }, /* (275) expr ::= expr NE expr */
{ 276, -3 }, /* (276) expr ::= expr EQ expr */
{ 276, -5 }, /* (277) expr ::= expr BETWEEN expr AND expr */
{ 276, -3 }, /* (278) expr ::= expr AND expr */
{ 276, -3 }, /* (279) expr ::= expr OR expr */
{ 276, -3 }, /* (280) expr ::= expr PLUS expr */
{ 276, -3 }, /* (281) expr ::= expr MINUS expr */
{ 276, -3 }, /* (282) expr ::= expr STAR expr */
{ 276, -3 }, /* (283) expr ::= expr SLASH expr */
{ 276, -3 }, /* (284) expr ::= expr REM expr */
{ 276, -3 }, /* (285) expr ::= expr LIKE expr */
{ 276, -3 }, /* (286) expr ::= expr MATCH expr */
{ 276, -3 }, /* (287) expr ::= expr NMATCH expr */
{ 276, -3 }, /* (288) expr ::= ID CONTAINS STRING */
{ 276, -5 }, /* (289) expr ::= ID DOT ID CONTAINS STRING */
{ 286, -3 }, /* (290) arrow ::= ID ARROW STRING */
{ 286, -5 }, /* (291) arrow ::= ID DOT ID ARROW STRING */
{ 276, -1 }, /* (292) expr ::= arrow */
{ 276, -5 }, /* (293) expr ::= expr IN LP exprlist RP */
{ 212, -3 }, /* (294) exprlist ::= exprlist COMMA expritem */
{ 212, -1 }, /* (295) exprlist ::= expritem */
{ 288, -1 }, /* (296) expritem ::= expr */
{ 288, 0 }, /* (297) expritem ::= */
{ 204, -3 }, /* (298) cmd ::= RESET QUERY CACHE */
{ 204, -3 }, /* (299) cmd ::= SYNCDB ids REPLICA */
{ 204, -7 }, /* (300) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{ 204, -7 }, /* (301) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{ 204, -7 }, /* (302) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{ 204, -7 }, /* (303) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{ 204, -7 }, /* (304) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{ 204, -8 }, /* (305) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{ 204, -9 }, /* (306) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{ 204, -7 }, /* (307) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{ 204, -7 }, /* (308) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{ 204, -7 }, /* (309) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{ 204, -7 }, /* (310) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{ 204, -7 }, /* (311) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{ 204, -7 }, /* (312) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{ 204, -8 }, /* (313) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{ 204, -9 }, /* (314) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
{ 204, -7 }, /* (315) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{ 204, -3 }, /* (316) cmd ::= KILL CONNECTION INTEGER */
{ 204, -5 }, /* (317) cmd ::= KILL STREAM INTEGER COLON INTEGER */
{ 204, -5 }, /* (318) cmd ::= KILL QUERY INTEGER COLON INTEGER */
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
** of that rule */
static const YYCODETYPE yyRuleInfoLhs[] = {
204, /* (0) program ::= cmd */
205, /* (1) cmd ::= SHOW DATABASES */
205, /* (2) cmd ::= SHOW TOPICS */
205, /* (3) cmd ::= SHOW FUNCTIONS */
205, /* (4) cmd ::= SHOW MNODES */
205, /* (5) cmd ::= SHOW DNODES */
205, /* (6) cmd ::= SHOW ACCOUNTS */
205, /* (7) cmd ::= SHOW USERS */
205, /* (8) cmd ::= SHOW MODULES */
205, /* (9) cmd ::= SHOW QUERIES */
205, /* (10) cmd ::= SHOW CONNECTIONS */
205, /* (11) cmd ::= SHOW STREAMS */
205, /* (12) cmd ::= SHOW VARIABLES */
205, /* (13) cmd ::= SHOW SCORES */
205, /* (14) cmd ::= SHOW GRANTS */
205, /* (15) cmd ::= SHOW VNODES */
205, /* (16) cmd ::= SHOW VNODES ids */
207, /* (17) dbPrefix ::= */
207, /* (18) dbPrefix ::= ids DOT */
208, /* (19) cpxName ::= */
208, /* (20) cpxName ::= DOT ids */
205, /* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
205, /* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
205, /* (23) cmd ::= SHOW CREATE DATABASE ids */
205, /* (24) cmd ::= SHOW dbPrefix TABLES */
205, /* (25) cmd ::= SHOW dbPrefix TABLES LIKE STRING */
205, /* (26) cmd ::= SHOW dbPrefix STABLES */
205, /* (27) cmd ::= SHOW dbPrefix STABLES LIKE STRING */
205, /* (28) cmd ::= SHOW dbPrefix VGROUPS */
205, /* (29) cmd ::= DROP TABLE ifexists ids cpxName */
205, /* (30) cmd ::= DROP STABLE ifexists ids cpxName */
205, /* (31) cmd ::= DROP DATABASE ifexists ids */
205, /* (32) cmd ::= DROP TOPIC ifexists ids */
205, /* (33) cmd ::= DROP FUNCTION ids */
205, /* (34) cmd ::= DROP DNODE ids */
205, /* (35) cmd ::= DROP USER ids */
205, /* (36) cmd ::= DROP ACCOUNT ids */
205, /* (37) cmd ::= USE ids */
205, /* (38) cmd ::= DESCRIBE ids cpxName */
205, /* (39) cmd ::= DESC ids cpxName */
205, /* (40) cmd ::= ALTER USER ids PASS ids */
205, /* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
205, /* (42) cmd ::= ALTER DNODE ids ids */
205, /* (43) cmd ::= ALTER DNODE ids ids ids */
205, /* (44) cmd ::= ALTER LOCAL ids */
205, /* (45) cmd ::= ALTER LOCAL ids ids */
205, /* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
205, /* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
205, /* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
205, /* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
205, /* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
206, /* (51) ids ::= ID */
206, /* (52) ids ::= STRING */
209, /* (53) ifexists ::= IF EXISTS */
209, /* (54) ifexists ::= */
214, /* (55) ifnotexists ::= IF NOT EXISTS */
214, /* (56) ifnotexists ::= */
205, /* (57) cmd ::= CREATE DNODE ids */
205, /* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
205, /* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
205, /* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
205, /* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
205, /* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
205, /* (63) cmd ::= CREATE USER ids PASS ids */
218, /* (64) bufsize ::= */
218, /* (65) bufsize ::= BUFSIZE INTEGER */
219, /* (66) pps ::= */
219, /* (67) pps ::= PPS INTEGER */
220, /* (68) tseries ::= */
220, /* (69) tseries ::= TSERIES INTEGER */
221, /* (70) dbs ::= */
221, /* (71) dbs ::= DBS INTEGER */
222, /* (72) streams ::= */
222, /* (73) streams ::= STREAMS INTEGER */
223, /* (74) storage ::= */
223, /* (75) storage ::= STORAGE INTEGER */
224, /* (76) qtime ::= */
224, /* (77) qtime ::= QTIME INTEGER */
225, /* (78) users ::= */
225, /* (79) users ::= USERS INTEGER */
226, /* (80) conns ::= */
226, /* (81) conns ::= CONNS INTEGER */
227, /* (82) state ::= */
227, /* (83) state ::= STATE ids */
212, /* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
228, /* (85) intitemlist ::= intitemlist COMMA intitem */
228, /* (86) intitemlist ::= intitem */
229, /* (87) intitem ::= INTEGER */
230, /* (88) keep ::= KEEP intitemlist */
231, /* (89) cache ::= CACHE INTEGER */
232, /* (90) replica ::= REPLICA INTEGER */
233, /* (91) quorum ::= QUORUM INTEGER */
234, /* (92) days ::= DAYS INTEGER */
235, /* (93) minrows ::= MINROWS INTEGER */
236, /* (94) maxrows ::= MAXROWS INTEGER */
237, /* (95) blocks ::= BLOCKS INTEGER */
238, /* (96) ctime ::= CTIME INTEGER */
239, /* (97) wal ::= WAL INTEGER */
240, /* (98) fsync ::= FSYNC INTEGER */
241, /* (99) comp ::= COMP INTEGER */
242, /* (100) prec ::= PRECISION STRING */
243, /* (101) update ::= UPDATE INTEGER */
244, /* (102) cachelast ::= CACHELAST INTEGER */
245, /* (103) partitions ::= PARTITIONS INTEGER */
215, /* (104) db_optr ::= */
215, /* (105) db_optr ::= db_optr cache */
215, /* (106) db_optr ::= db_optr replica */
215, /* (107) db_optr ::= db_optr quorum */
215, /* (108) db_optr ::= db_optr days */
215, /* (109) db_optr ::= db_optr minrows */
215, /* (110) db_optr ::= db_optr maxrows */
215, /* (111) db_optr ::= db_optr blocks */
215, /* (112) db_optr ::= db_optr ctime */
215, /* (113) db_optr ::= db_optr wal */
215, /* (114) db_optr ::= db_optr fsync */
215, /* (115) db_optr ::= db_optr comp */
215, /* (116) db_optr ::= db_optr prec */
215, /* (117) db_optr ::= db_optr keep */
215, /* (118) db_optr ::= db_optr update */
215, /* (119) db_optr ::= db_optr cachelast */
216, /* (120) topic_optr ::= db_optr */
216, /* (121) topic_optr ::= topic_optr partitions */
210, /* (122) alter_db_optr ::= */
210, /* (123) alter_db_optr ::= alter_db_optr replica */
210, /* (124) alter_db_optr ::= alter_db_optr quorum */
210, /* (125) alter_db_optr ::= alter_db_optr keep */
210, /* (126) alter_db_optr ::= alter_db_optr blocks */
210, /* (127) alter_db_optr ::= alter_db_optr comp */
210, /* (128) alter_db_optr ::= alter_db_optr update */
210, /* (129) alter_db_optr ::= alter_db_optr cachelast */
211, /* (130) alter_topic_optr ::= alter_db_optr */
211, /* (131) alter_topic_optr ::= alter_topic_optr partitions */
217, /* (132) typename ::= ids */
217, /* (133) typename ::= ids LP signed RP */
217, /* (134) typename ::= ids UNSIGNED */
246, /* (135) signed ::= INTEGER */
246, /* (136) signed ::= PLUS INTEGER */
246, /* (137) signed ::= MINUS INTEGER */
205, /* (138) cmd ::= CREATE TABLE create_table_args */
205, /* (139) cmd ::= CREATE TABLE create_stable_args */
205, /* (140) cmd ::= CREATE STABLE create_stable_args */
205, /* (141) cmd ::= CREATE TABLE create_table_list */
249, /* (142) create_table_list ::= create_from_stable */
249, /* (143) create_table_list ::= create_table_list create_from_stable */
247, /* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
248, /* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
250, /* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
250, /* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
253, /* (148) tagNamelist ::= tagNamelist COMMA ids */
253, /* (149) tagNamelist ::= ids */
247, /* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
254, /* (151) to_opt ::= */
254, /* (152) to_opt ::= TO ids cpxName */
255, /* (153) split_opt ::= */
255, /* (154) split_opt ::= SPLIT ids */
251, /* (155) columnlist ::= columnlist COMMA column */
251, /* (156) columnlist ::= column */
258, /* (157) column ::= ids typename */
252, /* (158) tagitemlist ::= tagitemlist COMMA tagitem */
252, /* (159) tagitemlist ::= tagitem */
259, /* (160) tagitem ::= INTEGER */
259, /* (161) tagitem ::= FLOAT */
259, /* (162) tagitem ::= STRING */
259, /* (163) tagitem ::= BOOL */
259, /* (164) tagitem ::= NULL */
259, /* (165) tagitem ::= NOW */
259, /* (166) tagitem ::= NOW PLUS VARIABLE */
259, /* (167) tagitem ::= NOW MINUS VARIABLE */
259, /* (168) tagitem ::= MINUS INTEGER */
259, /* (169) tagitem ::= MINUS FLOAT */
259, /* (170) tagitem ::= PLUS INTEGER */
259, /* (171) tagitem ::= PLUS FLOAT */
256, /* (172) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
256, /* (173) select ::= LP select RP */
274, /* (174) union ::= select */
274, /* (175) union ::= union UNION ALL select */
205, /* (176) cmd ::= union */
256, /* (177) select ::= SELECT selcollist */
275, /* (178) sclp ::= selcollist COMMA */
275, /* (179) sclp ::= */
260, /* (180) selcollist ::= sclp distinct expr as */
260, /* (181) selcollist ::= sclp STAR */
278, /* (182) as ::= AS ids */
278, /* (183) as ::= ids */
278, /* (184) as ::= */
276, /* (185) distinct ::= DISTINCT */
276, /* (186) distinct ::= */
261, /* (187) from ::= FROM tablelist */
261, /* (188) from ::= FROM sub */
280, /* (189) sub ::= LP union RP */
280, /* (190) sub ::= LP union RP ids */
280, /* (191) sub ::= sub COMMA LP union RP ids */
279, /* (192) tablelist ::= ids cpxName */
279, /* (193) tablelist ::= ids cpxName ids */
279, /* (194) tablelist ::= tablelist COMMA ids cpxName */
279, /* (195) tablelist ::= tablelist COMMA ids cpxName ids */
281, /* (196) tmvar ::= VARIABLE */
282, /* (197) timestamp ::= INTEGER */
282, /* (198) timestamp ::= MINUS INTEGER */
282, /* (199) timestamp ::= PLUS INTEGER */
282, /* (200) timestamp ::= STRING */
282, /* (201) timestamp ::= NOW */
282, /* (202) timestamp ::= NOW PLUS VARIABLE */
282, /* (203) timestamp ::= NOW MINUS VARIABLE */
263, /* (204) range_option ::= */
263, /* (205) range_option ::= RANGE LP timestamp COMMA timestamp RP */
264, /* (206) interval_option ::= intervalKey LP tmvar RP */
264, /* (207) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
264, /* (208) interval_option ::= */
283, /* (209) intervalKey ::= INTERVAL */
283, /* (210) intervalKey ::= EVERY */
266, /* (211) session_option ::= */
266, /* (212) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
267, /* (213) windowstate_option ::= */
267, /* (214) windowstate_option ::= STATE_WINDOW LP ids RP */
268, /* (215) fill_opt ::= */
268, /* (216) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
268, /* (217) fill_opt ::= FILL LP ID RP */
265, /* (218) sliding_opt ::= SLIDING LP tmvar RP */
265, /* (219) sliding_opt ::= */
271, /* (220) orderby_opt ::= */
271, /* (221) orderby_opt ::= ORDER BY sortlist */
284, /* (222) sortlist ::= sortlist COMMA item sortorder */
284, /* (223) sortlist ::= sortlist COMMA arrow sortorder */
284, /* (224) sortlist ::= item sortorder */
284, /* (225) sortlist ::= arrow sortorder */
285, /* (226) item ::= ID */
285, /* (227) item ::= ID DOT ID */
286, /* (228) sortorder ::= ASC */
286, /* (229) sortorder ::= DESC */
286, /* (230) sortorder ::= */
269, /* (231) groupby_opt ::= */
269, /* (232) groupby_opt ::= GROUP BY grouplist */
288, /* (233) grouplist ::= grouplist COMMA item */
288, /* (234) grouplist ::= grouplist COMMA arrow */
288, /* (235) grouplist ::= item */
288, /* (236) grouplist ::= arrow */
270, /* (237) having_opt ::= */
270, /* (238) having_opt ::= HAVING expr */
273, /* (239) limit_opt ::= */
273, /* (240) limit_opt ::= LIMIT signed */
273, /* (241) limit_opt ::= LIMIT signed OFFSET signed */
273, /* (242) limit_opt ::= LIMIT signed COMMA signed */
272, /* (243) slimit_opt ::= */
272, /* (244) slimit_opt ::= SLIMIT signed */
272, /* (245) slimit_opt ::= SLIMIT signed SOFFSET signed */
272, /* (246) slimit_opt ::= SLIMIT signed COMMA signed */
262, /* (247) where_opt ::= */
262, /* (248) where_opt ::= WHERE expr */
277, /* (249) expr ::= LP expr RP */
277, /* (250) expr ::= ID */
277, /* (251) expr ::= ID DOT ID */
277, /* (252) expr ::= ID DOT STAR */
277, /* (253) expr ::= INTEGER */
277, /* (254) expr ::= MINUS INTEGER */
277, /* (255) expr ::= PLUS INTEGER */
277, /* (256) expr ::= FLOAT */
277, /* (257) expr ::= MINUS FLOAT */
277, /* (258) expr ::= PLUS FLOAT */
277, /* (259) expr ::= STRING */
277, /* (260) expr ::= NOW */
277, /* (261) expr ::= TODAY */
277, /* (262) expr ::= VARIABLE */
277, /* (263) expr ::= PLUS VARIABLE */
277, /* (264) expr ::= MINUS VARIABLE */
277, /* (265) expr ::= BOOL */
277, /* (266) expr ::= NULL */
277, /* (267) expr ::= ID LP exprlist RP */
277, /* (268) expr ::= ID LP STAR RP */
277, /* (269) expr ::= ID LP expr AS typename RP */
277, /* (270) expr ::= expr IS NULL */
277, /* (271) expr ::= expr IS NOT NULL */
277, /* (272) expr ::= expr LT expr */
277, /* (273) expr ::= expr GT expr */
277, /* (274) expr ::= expr LE expr */
277, /* (275) expr ::= expr GE expr */
277, /* (276) expr ::= expr NE expr */
277, /* (277) expr ::= expr EQ expr */
277, /* (278) expr ::= expr BETWEEN expr AND expr */
277, /* (279) expr ::= expr AND expr */
277, /* (280) expr ::= expr OR expr */
277, /* (281) expr ::= expr PLUS expr */
277, /* (282) expr ::= expr MINUS expr */
277, /* (283) expr ::= expr STAR expr */
277, /* (284) expr ::= expr SLASH expr */
277, /* (285) expr ::= expr REM expr */
277, /* (286) expr ::= expr LIKE expr */
277, /* (287) expr ::= expr MATCH expr */
277, /* (288) expr ::= expr NMATCH expr */
277, /* (289) expr ::= ID CONTAINS STRING */
277, /* (290) expr ::= ID DOT ID CONTAINS STRING */
287, /* (291) arrow ::= ID ARROW STRING */
287, /* (292) arrow ::= ID DOT ID ARROW STRING */
277, /* (293) expr ::= arrow */
277, /* (294) expr ::= expr IN LP exprlist RP */
213, /* (295) exprlist ::= exprlist COMMA expritem */
213, /* (296) exprlist ::= expritem */
289, /* (297) expritem ::= expr */
289, /* (298) expritem ::= */
205, /* (299) cmd ::= RESET QUERY CACHE */
205, /* (300) cmd ::= SYNCDB ids REPLICA */
205, /* (301) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
205, /* (302) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
205, /* (303) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
205, /* (304) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
205, /* (305) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
205, /* (306) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
205, /* (307) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
205, /* (308) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
205, /* (309) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
205, /* (310) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
205, /* (311) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
205, /* (312) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
205, /* (313) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
205, /* (314) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
205, /* (315) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
205, /* (316) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
205, /* (317) cmd ::= KILL CONNECTION INTEGER */
205, /* (318) cmd ::= KILL STREAM INTEGER COLON INTEGER */
205, /* (319) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
** of symbols on the right-hand side of that rule. */
static const signed char yyRuleInfoNRhs[] = {
-1, /* (0) program ::= cmd */
-2, /* (1) cmd ::= SHOW DATABASES */
-2, /* (2) cmd ::= SHOW TOPICS */
-2, /* (3) cmd ::= SHOW FUNCTIONS */
-2, /* (4) cmd ::= SHOW MNODES */
-2, /* (5) cmd ::= SHOW DNODES */
-2, /* (6) cmd ::= SHOW ACCOUNTS */
-2, /* (7) cmd ::= SHOW USERS */
-2, /* (8) cmd ::= SHOW MODULES */
-2, /* (9) cmd ::= SHOW QUERIES */
-2, /* (10) cmd ::= SHOW CONNECTIONS */
-2, /* (11) cmd ::= SHOW STREAMS */
-2, /* (12) cmd ::= SHOW VARIABLES */
-2, /* (13) cmd ::= SHOW SCORES */
-2, /* (14) cmd ::= SHOW GRANTS */
-2, /* (15) cmd ::= SHOW VNODES */
-3, /* (16) cmd ::= SHOW VNODES ids */
0, /* (17) dbPrefix ::= */
-2, /* (18) dbPrefix ::= ids DOT */
0, /* (19) cpxName ::= */
-2, /* (20) cpxName ::= DOT ids */
-5, /* (21) cmd ::= SHOW CREATE TABLE ids cpxName */
-5, /* (22) cmd ::= SHOW CREATE STABLE ids cpxName */
-4, /* (23) cmd ::= SHOW CREATE DATABASE ids */
-3, /* (24) cmd ::= SHOW dbPrefix TABLES */
-5, /* (25) cmd ::= SHOW dbPrefix TABLES LIKE STRING */
-3, /* (26) cmd ::= SHOW dbPrefix STABLES */
-5, /* (27) cmd ::= SHOW dbPrefix STABLES LIKE STRING */
-3, /* (28) cmd ::= SHOW dbPrefix VGROUPS */
-5, /* (29) cmd ::= DROP TABLE ifexists ids cpxName */
-5, /* (30) cmd ::= DROP STABLE ifexists ids cpxName */
-4, /* (31) cmd ::= DROP DATABASE ifexists ids */
-4, /* (32) cmd ::= DROP TOPIC ifexists ids */
-3, /* (33) cmd ::= DROP FUNCTION ids */
-3, /* (34) cmd ::= DROP DNODE ids */
-3, /* (35) cmd ::= DROP USER ids */
-3, /* (36) cmd ::= DROP ACCOUNT ids */
-2, /* (37) cmd ::= USE ids */
-3, /* (38) cmd ::= DESCRIBE ids cpxName */
-3, /* (39) cmd ::= DESC ids cpxName */
-5, /* (40) cmd ::= ALTER USER ids PASS ids */
-5, /* (41) cmd ::= ALTER USER ids PRIVILEGE ids */
-4, /* (42) cmd ::= ALTER DNODE ids ids */
-5, /* (43) cmd ::= ALTER DNODE ids ids ids */
-3, /* (44) cmd ::= ALTER LOCAL ids */
-4, /* (45) cmd ::= ALTER LOCAL ids ids */
-4, /* (46) cmd ::= ALTER DATABASE ids alter_db_optr */
-4, /* (47) cmd ::= ALTER TOPIC ids alter_topic_optr */
-4, /* (48) cmd ::= ALTER ACCOUNT ids acct_optr */
-6, /* (49) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
-6, /* (50) cmd ::= COMPACT VNODES IN LP exprlist RP */
-1, /* (51) ids ::= ID */
-1, /* (52) ids ::= STRING */
-2, /* (53) ifexists ::= IF EXISTS */
0, /* (54) ifexists ::= */
-3, /* (55) ifnotexists ::= IF NOT EXISTS */
0, /* (56) ifnotexists ::= */
-3, /* (57) cmd ::= CREATE DNODE ids */
-6, /* (58) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
-5, /* (59) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
-5, /* (60) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
-8, /* (61) cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
-9, /* (62) cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
-5, /* (63) cmd ::= CREATE USER ids PASS ids */
0, /* (64) bufsize ::= */
-2, /* (65) bufsize ::= BUFSIZE INTEGER */
0, /* (66) pps ::= */
-2, /* (67) pps ::= PPS INTEGER */
0, /* (68) tseries ::= */
-2, /* (69) tseries ::= TSERIES INTEGER */
0, /* (70) dbs ::= */
-2, /* (71) dbs ::= DBS INTEGER */
0, /* (72) streams ::= */
-2, /* (73) streams ::= STREAMS INTEGER */
0, /* (74) storage ::= */
-2, /* (75) storage ::= STORAGE INTEGER */
0, /* (76) qtime ::= */
-2, /* (77) qtime ::= QTIME INTEGER */
0, /* (78) users ::= */
-2, /* (79) users ::= USERS INTEGER */
0, /* (80) conns ::= */
-2, /* (81) conns ::= CONNS INTEGER */
0, /* (82) state ::= */
-2, /* (83) state ::= STATE ids */
-9, /* (84) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
-3, /* (85) intitemlist ::= intitemlist COMMA intitem */
-1, /* (86) intitemlist ::= intitem */
-1, /* (87) intitem ::= INTEGER */
-2, /* (88) keep ::= KEEP intitemlist */
-2, /* (89) cache ::= CACHE INTEGER */
-2, /* (90) replica ::= REPLICA INTEGER */
-2, /* (91) quorum ::= QUORUM INTEGER */
-2, /* (92) days ::= DAYS INTEGER */
-2, /* (93) minrows ::= MINROWS INTEGER */
-2, /* (94) maxrows ::= MAXROWS INTEGER */
-2, /* (95) blocks ::= BLOCKS INTEGER */
-2, /* (96) ctime ::= CTIME INTEGER */
-2, /* (97) wal ::= WAL INTEGER */
-2, /* (98) fsync ::= FSYNC INTEGER */
-2, /* (99) comp ::= COMP INTEGER */
-2, /* (100) prec ::= PRECISION STRING */
-2, /* (101) update ::= UPDATE INTEGER */
-2, /* (102) cachelast ::= CACHELAST INTEGER */
-2, /* (103) partitions ::= PARTITIONS INTEGER */
0, /* (104) db_optr ::= */
-2, /* (105) db_optr ::= db_optr cache */
-2, /* (106) db_optr ::= db_optr replica */
-2, /* (107) db_optr ::= db_optr quorum */
-2, /* (108) db_optr ::= db_optr days */
-2, /* (109) db_optr ::= db_optr minrows */
-2, /* (110) db_optr ::= db_optr maxrows */
-2, /* (111) db_optr ::= db_optr blocks */
-2, /* (112) db_optr ::= db_optr ctime */
-2, /* (113) db_optr ::= db_optr wal */
-2, /* (114) db_optr ::= db_optr fsync */
-2, /* (115) db_optr ::= db_optr comp */
-2, /* (116) db_optr ::= db_optr prec */
-2, /* (117) db_optr ::= db_optr keep */
-2, /* (118) db_optr ::= db_optr update */
-2, /* (119) db_optr ::= db_optr cachelast */
-1, /* (120) topic_optr ::= db_optr */
-2, /* (121) topic_optr ::= topic_optr partitions */
0, /* (122) alter_db_optr ::= */
-2, /* (123) alter_db_optr ::= alter_db_optr replica */
-2, /* (124) alter_db_optr ::= alter_db_optr quorum */
-2, /* (125) alter_db_optr ::= alter_db_optr keep */
-2, /* (126) alter_db_optr ::= alter_db_optr blocks */
-2, /* (127) alter_db_optr ::= alter_db_optr comp */
-2, /* (128) alter_db_optr ::= alter_db_optr update */
-2, /* (129) alter_db_optr ::= alter_db_optr cachelast */
-1, /* (130) alter_topic_optr ::= alter_db_optr */
-2, /* (131) alter_topic_optr ::= alter_topic_optr partitions */
-1, /* (132) typename ::= ids */
-4, /* (133) typename ::= ids LP signed RP */
-2, /* (134) typename ::= ids UNSIGNED */
-1, /* (135) signed ::= INTEGER */
-2, /* (136) signed ::= PLUS INTEGER */
-2, /* (137) signed ::= MINUS INTEGER */
-3, /* (138) cmd ::= CREATE TABLE create_table_args */
-3, /* (139) cmd ::= CREATE TABLE create_stable_args */
-3, /* (140) cmd ::= CREATE STABLE create_stable_args */
-3, /* (141) cmd ::= CREATE TABLE create_table_list */
-1, /* (142) create_table_list ::= create_from_stable */
-2, /* (143) create_table_list ::= create_table_list create_from_stable */
-6, /* (144) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
-10, /* (145) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
-10, /* (146) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
-13, /* (147) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
-3, /* (148) tagNamelist ::= tagNamelist COMMA ids */
-1, /* (149) tagNamelist ::= ids */
-7, /* (150) create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
0, /* (151) to_opt ::= */
-3, /* (152) to_opt ::= TO ids cpxName */
0, /* (153) split_opt ::= */
-2, /* (154) split_opt ::= SPLIT ids */
-3, /* (155) columnlist ::= columnlist COMMA column */
-1, /* (156) columnlist ::= column */
-2, /* (157) column ::= ids typename */
-3, /* (158) tagitemlist ::= tagitemlist COMMA tagitem */
-1, /* (159) tagitemlist ::= tagitem */
-1, /* (160) tagitem ::= INTEGER */
-1, /* (161) tagitem ::= FLOAT */
-1, /* (162) tagitem ::= STRING */
-1, /* (163) tagitem ::= BOOL */
-1, /* (164) tagitem ::= NULL */
-1, /* (165) tagitem ::= NOW */
-3, /* (166) tagitem ::= NOW PLUS VARIABLE */
-3, /* (167) tagitem ::= NOW MINUS VARIABLE */
-2, /* (168) tagitem ::= MINUS INTEGER */
-2, /* (169) tagitem ::= MINUS FLOAT */
-2, /* (170) tagitem ::= PLUS INTEGER */
-2, /* (171) tagitem ::= PLUS FLOAT */
-15, /* (172) select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
-3, /* (173) select ::= LP select RP */
-1, /* (174) union ::= select */
-4, /* (175) union ::= union UNION ALL select */
-1, /* (176) cmd ::= union */
-2, /* (177) select ::= SELECT selcollist */
-2, /* (178) sclp ::= selcollist COMMA */
0, /* (179) sclp ::= */
-4, /* (180) selcollist ::= sclp distinct expr as */
-2, /* (181) selcollist ::= sclp STAR */
-2, /* (182) as ::= AS ids */
-1, /* (183) as ::= ids */
0, /* (184) as ::= */
-1, /* (185) distinct ::= DISTINCT */
0, /* (186) distinct ::= */
-2, /* (187) from ::= FROM tablelist */
-2, /* (188) from ::= FROM sub */
-3, /* (189) sub ::= LP union RP */
-4, /* (190) sub ::= LP union RP ids */
-6, /* (191) sub ::= sub COMMA LP union RP ids */
-2, /* (192) tablelist ::= ids cpxName */
-3, /* (193) tablelist ::= ids cpxName ids */
-4, /* (194) tablelist ::= tablelist COMMA ids cpxName */
-5, /* (195) tablelist ::= tablelist COMMA ids cpxName ids */
-1, /* (196) tmvar ::= VARIABLE */
-1, /* (197) timestamp ::= INTEGER */
-2, /* (198) timestamp ::= MINUS INTEGER */
-2, /* (199) timestamp ::= PLUS INTEGER */
-1, /* (200) timestamp ::= STRING */
-1, /* (201) timestamp ::= NOW */
-3, /* (202) timestamp ::= NOW PLUS VARIABLE */
-3, /* (203) timestamp ::= NOW MINUS VARIABLE */
0, /* (204) range_option ::= */
-6, /* (205) range_option ::= RANGE LP timestamp COMMA timestamp RP */
-4, /* (206) interval_option ::= intervalKey LP tmvar RP */
-6, /* (207) interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
0, /* (208) interval_option ::= */
-1, /* (209) intervalKey ::= INTERVAL */
-1, /* (210) intervalKey ::= EVERY */
0, /* (211) session_option ::= */
-7, /* (212) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
0, /* (213) windowstate_option ::= */
-4, /* (214) windowstate_option ::= STATE_WINDOW LP ids RP */
0, /* (215) fill_opt ::= */
-6, /* (216) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
-4, /* (217) fill_opt ::= FILL LP ID RP */
-4, /* (218) sliding_opt ::= SLIDING LP tmvar RP */
0, /* (219) sliding_opt ::= */
0, /* (220) orderby_opt ::= */
-3, /* (221) orderby_opt ::= ORDER BY sortlist */
-4, /* (222) sortlist ::= sortlist COMMA item sortorder */
-4, /* (223) sortlist ::= sortlist COMMA arrow sortorder */
-2, /* (224) sortlist ::= item sortorder */
-2, /* (225) sortlist ::= arrow sortorder */
-1, /* (226) item ::= ID */
-3, /* (227) item ::= ID DOT ID */
-1, /* (228) sortorder ::= ASC */
-1, /* (229) sortorder ::= DESC */
0, /* (230) sortorder ::= */
0, /* (231) groupby_opt ::= */
-3, /* (232) groupby_opt ::= GROUP BY grouplist */
-3, /* (233) grouplist ::= grouplist COMMA item */
-3, /* (234) grouplist ::= grouplist COMMA arrow */
-1, /* (235) grouplist ::= item */
-1, /* (236) grouplist ::= arrow */
0, /* (237) having_opt ::= */
-2, /* (238) having_opt ::= HAVING expr */
0, /* (239) limit_opt ::= */
-2, /* (240) limit_opt ::= LIMIT signed */
-4, /* (241) limit_opt ::= LIMIT signed OFFSET signed */
-4, /* (242) limit_opt ::= LIMIT signed COMMA signed */
0, /* (243) slimit_opt ::= */
-2, /* (244) slimit_opt ::= SLIMIT signed */
-4, /* (245) slimit_opt ::= SLIMIT signed SOFFSET signed */
-4, /* (246) slimit_opt ::= SLIMIT signed COMMA signed */
0, /* (247) where_opt ::= */
-2, /* (248) where_opt ::= WHERE expr */
-3, /* (249) expr ::= LP expr RP */
-1, /* (250) expr ::= ID */
-3, /* (251) expr ::= ID DOT ID */
-3, /* (252) expr ::= ID DOT STAR */
-1, /* (253) expr ::= INTEGER */
-2, /* (254) expr ::= MINUS INTEGER */
-2, /* (255) expr ::= PLUS INTEGER */
-1, /* (256) expr ::= FLOAT */
-2, /* (257) expr ::= MINUS FLOAT */
-2, /* (258) expr ::= PLUS FLOAT */
-1, /* (259) expr ::= STRING */
-1, /* (260) expr ::= NOW */
-1, /* (261) expr ::= TODAY */
-1, /* (262) expr ::= VARIABLE */
-2, /* (263) expr ::= PLUS VARIABLE */
-2, /* (264) expr ::= MINUS VARIABLE */
-1, /* (265) expr ::= BOOL */
-1, /* (266) expr ::= NULL */
-4, /* (267) expr ::= ID LP exprlist RP */
-4, /* (268) expr ::= ID LP STAR RP */
-6, /* (269) expr ::= ID LP expr AS typename RP */
-3, /* (270) expr ::= expr IS NULL */
-4, /* (271) expr ::= expr IS NOT NULL */
-3, /* (272) expr ::= expr LT expr */
-3, /* (273) expr ::= expr GT expr */
-3, /* (274) expr ::= expr LE expr */
-3, /* (275) expr ::= expr GE expr */
-3, /* (276) expr ::= expr NE expr */
-3, /* (277) expr ::= expr EQ expr */
-5, /* (278) expr ::= expr BETWEEN expr AND expr */
-3, /* (279) expr ::= expr AND expr */
-3, /* (280) expr ::= expr OR expr */
-3, /* (281) expr ::= expr PLUS expr */
-3, /* (282) expr ::= expr MINUS expr */
-3, /* (283) expr ::= expr STAR expr */
-3, /* (284) expr ::= expr SLASH expr */
-3, /* (285) expr ::= expr REM expr */
-3, /* (286) expr ::= expr LIKE expr */
-3, /* (287) expr ::= expr MATCH expr */
-3, /* (288) expr ::= expr NMATCH expr */
-3, /* (289) expr ::= ID CONTAINS STRING */
-5, /* (290) expr ::= ID DOT ID CONTAINS STRING */
-3, /* (291) arrow ::= ID ARROW STRING */
-5, /* (292) arrow ::= ID DOT ID ARROW STRING */
-1, /* (293) expr ::= arrow */
-5, /* (294) expr ::= expr IN LP exprlist RP */
-3, /* (295) exprlist ::= exprlist COMMA expritem */
-1, /* (296) exprlist ::= expritem */
-1, /* (297) expritem ::= expr */
0, /* (298) expritem ::= */
-3, /* (299) cmd ::= RESET QUERY CACHE */
-3, /* (300) cmd ::= SYNCDB ids REPLICA */
-7, /* (301) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
-7, /* (302) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
-7, /* (303) cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
-7, /* (304) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
-7, /* (305) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
-8, /* (306) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
-9, /* (307) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
-7, /* (308) cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
-7, /* (309) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
-7, /* (310) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
-7, /* (311) cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
-7, /* (312) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
-7, /* (313) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
-8, /* (314) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
-9, /* (315) cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
-7, /* (316) cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
-3, /* (317) cmd ::= KILL CONNECTION INTEGER */
-5, /* (318) cmd ::= KILL STREAM INTEGER COLON INTEGER */
-5, /* (319) cmd ::= KILL QUERY INTEGER COLON INTEGER */
};
static void yy_accept(yyParser*); /* Forward Declaration */
......@@ -2274,14 +2596,17 @@ static YYACTIONTYPE yy_reduce(
yymsp = yypParser->yytos;
#ifndef NDEBUG
if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
yysize = yyRuleInfo[yyruleno].nrhs;
yysize = yyRuleInfoNRhs[yyruleno];
if( yysize ){
fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n",
fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n",
yyTracePrompt,
yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno);
yyruleno, yyRuleName[yyruleno],
yyruleno<YYNRULE_WITH_ACTION ? "" : " without external action",
yymsp[yysize].stateno);
}else{
fprintf(yyTraceFILE, "%sReduce %d [%s].\n",
yyTracePrompt, yyruleno, yyRuleName[yyruleno]);
fprintf(yyTraceFILE, "%sReduce %d [%s]%s.\n",
yyTracePrompt, yyruleno, yyRuleName[yyruleno],
yyruleno<YYNRULE_WITH_ACTION ? "" : " without external action");
}
}
#endif /* NDEBUG */
......@@ -2289,7 +2614,7 @@ static YYACTIONTYPE yy_reduce(
/* Check that the stack is large enough to grow by a single entry
** if the RHS of the rule is empty. This ensures that there is room
** enough on the stack to push the LHS value */
if( yyRuleInfo[yyruleno].nrhs==0 ){
if( yyRuleInfoNRhs[yyruleno]==0 ){
#ifdef YYTRACKMAXSTACKDEPTH
if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
yypParser->yyhwm++;
......@@ -2502,16 +2827,16 @@ static YYACTIONTYPE yy_reduce(
break;
case 46: /* cmd ::= ALTER DATABASE ids alter_db_optr */
case 47: /* cmd ::= ALTER TOPIC ids alter_topic_optr */ yytestcase(yyruleno==47);
{ SStrToken t = {0}; setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy560, &t);}
{ SStrToken t = {0}; setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy302, &t);}
break;
case 48: /* cmd ::= ALTER ACCOUNT ids acct_optr */
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy205);}
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy231);}
break;
case 49: /* cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy205);}
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy231);}
break;
case 50: /* cmd ::= COMPACT VNODES IN LP exprlist RP */
{ setCompactVnodeSql(pInfo, TSDB_SQL_COMPACT_VNODE, yymsp[-1].minor.yy209);}
{ setCompactVnodeSql(pInfo, TSDB_SQL_COMPACT_VNODE, yymsp[-1].minor.yy161);}
break;
case 51: /* ids ::= ID */
case 52: /* ids ::= STRING */ yytestcase(yyruleno==52);
......@@ -2533,17 +2858,17 @@ static YYACTIONTYPE yy_reduce(
{ setDCLSqlElems(pInfo, TSDB_SQL_CREATE_DNODE, 1, &yymsp[0].minor.yy0);}
break;
case 58: /* cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
{ setCreateAcctSql(pInfo, TSDB_SQL_CREATE_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy205);}
{ setCreateAcctSql(pInfo, TSDB_SQL_CREATE_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy231);}
break;
case 59: /* cmd ::= CREATE DATABASE ifnotexists ids db_optr */
case 60: /* cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ yytestcase(yyruleno==60);
{ setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy560, &yymsp[-2].minor.yy0);}
{ setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy302, &yymsp[-2].minor.yy0);}
break;
case 61: /* cmd ::= CREATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{ setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy369, &yymsp[0].minor.yy0, 1);}
{ setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy223, &yymsp[0].minor.yy0, 1);}
break;
case 62: /* cmd ::= CREATE AGGREGATE FUNCTION ids AS ids OUTPUTTYPE typename bufsize */
{ setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy369, &yymsp[0].minor.yy0, 2);}
{ setCreateFuncInfo(pInfo, TSDB_SQL_CREATE_FUNCTION, &yymsp[-5].minor.yy0, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy223, &yymsp[0].minor.yy0, 2);}
break;
case 63: /* cmd ::= CREATE USER ids PASS ids */
{ setCreateUserSql(pInfo, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);}
......@@ -2574,38 +2899,38 @@ static YYACTIONTYPE yy_reduce(
break;
case 84: /* acct_optr ::= pps tseries storage streams qtime dbs users conns state */
{
yylhsminor.yy205.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1;
yylhsminor.yy205.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1;
yylhsminor.yy205.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1;
yylhsminor.yy205.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1;
yylhsminor.yy205.maxPointsPerSecond = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1;
yylhsminor.yy205.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy205.maxQueryTime = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy205.maxConnections = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1;
yylhsminor.yy205.stat = yymsp[0].minor.yy0;
yylhsminor.yy231.maxUsers = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1;
yylhsminor.yy231.maxDbs = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1;
yylhsminor.yy231.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1;
yylhsminor.yy231.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1;
yylhsminor.yy231.maxPointsPerSecond = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1;
yylhsminor.yy231.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy231.maxQueryTime = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1;
yylhsminor.yy231.maxConnections = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1;
yylhsminor.yy231.stat = yymsp[0].minor.yy0;
}
yymsp[-8].minor.yy205 = yylhsminor.yy205;
yymsp[-8].minor.yy231 = yylhsminor.yy231;
break;
case 85: /* intitemlist ::= intitemlist COMMA intitem */
case 158: /* tagitemlist ::= tagitemlist COMMA tagitem */ yytestcase(yyruleno==158);
{ yylhsminor.yy209 = tVariantListAppend(yymsp[-2].minor.yy209, &yymsp[0].minor.yy54, -1); }
yymsp[-2].minor.yy209 = yylhsminor.yy209;
{ yylhsminor.yy161 = tVariantListAppend(yymsp[-2].minor.yy161, &yymsp[0].minor.yy526, -1); }
yymsp[-2].minor.yy161 = yylhsminor.yy161;
break;
case 86: /* intitemlist ::= intitem */
case 159: /* tagitemlist ::= tagitem */ yytestcase(yyruleno==159);
{ yylhsminor.yy209 = tVariantListAppend(NULL, &yymsp[0].minor.yy54, -1); }
yymsp[0].minor.yy209 = yylhsminor.yy209;
{ yylhsminor.yy161 = tVariantListAppend(NULL, &yymsp[0].minor.yy526, -1); }
yymsp[0].minor.yy161 = yylhsminor.yy161;
break;
case 87: /* intitem ::= INTEGER */
case 160: /* tagitem ::= INTEGER */ yytestcase(yyruleno==160);
case 161: /* tagitem ::= FLOAT */ yytestcase(yyruleno==161);
case 162: /* tagitem ::= STRING */ yytestcase(yyruleno==162);
case 163: /* tagitem ::= BOOL */ yytestcase(yyruleno==163);
{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy54, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy54 = yylhsminor.yy54;
{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy526, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy526 = yylhsminor.yy526;
break;
case 88: /* keep ::= KEEP intitemlist */
{ yymsp[-1].minor.yy209 = yymsp[0].minor.yy209; }
{ yymsp[-1].minor.yy161 = yymsp[0].minor.yy161; }
break;
case 89: /* cache ::= CACHE INTEGER */
case 90: /* replica ::= REPLICA INTEGER */ yytestcase(yyruleno==90);
......@@ -2625,200 +2950,200 @@ static YYACTIONTYPE yy_reduce(
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; }
break;
case 104: /* db_optr ::= */
{setDefaultCreateDbOption(&yymsp[1].minor.yy560); yymsp[1].minor.yy560.dbType = TSDB_DB_TYPE_DEFAULT;}
{setDefaultCreateDbOption(&yymsp[1].minor.yy302); yymsp[1].minor.yy302.dbType = TSDB_DB_TYPE_DEFAULT;}
break;
case 105: /* db_optr ::= db_optr cache */
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 106: /* db_optr ::= db_optr replica */
case 123: /* alter_db_optr ::= alter_db_optr replica */ yytestcase(yyruleno==123);
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 107: /* db_optr ::= db_optr quorum */
case 124: /* alter_db_optr ::= alter_db_optr quorum */ yytestcase(yyruleno==124);
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 108: /* db_optr ::= db_optr days */
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 109: /* db_optr ::= db_optr minrows */
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 110: /* db_optr ::= db_optr maxrows */
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 111: /* db_optr ::= db_optr blocks */
case 126: /* alter_db_optr ::= alter_db_optr blocks */ yytestcase(yyruleno==126);
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 112: /* db_optr ::= db_optr ctime */
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 113: /* db_optr ::= db_optr wal */
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 114: /* db_optr ::= db_optr fsync */
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 115: /* db_optr ::= db_optr comp */
case 127: /* alter_db_optr ::= alter_db_optr comp */ yytestcase(yyruleno==127);
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 116: /* db_optr ::= db_optr prec */
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.precision = yymsp[0].minor.yy0; }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.precision = yymsp[0].minor.yy0; }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 117: /* db_optr ::= db_optr keep */
case 125: /* alter_db_optr ::= alter_db_optr keep */ yytestcase(yyruleno==125);
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.keep = yymsp[0].minor.yy209; }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.keep = yymsp[0].minor.yy161; }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 118: /* db_optr ::= db_optr update */
case 128: /* alter_db_optr ::= alter_db_optr update */ yytestcase(yyruleno==128);
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 119: /* db_optr ::= db_optr cachelast */
case 129: /* alter_db_optr ::= alter_db_optr cachelast */ yytestcase(yyruleno==129);
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 120: /* topic_optr ::= db_optr */
case 130: /* alter_topic_optr ::= alter_db_optr */ yytestcase(yyruleno==130);
{ yylhsminor.yy560 = yymsp[0].minor.yy560; yylhsminor.yy560.dbType = TSDB_DB_TYPE_TOPIC; }
yymsp[0].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[0].minor.yy302; yylhsminor.yy302.dbType = TSDB_DB_TYPE_TOPIC; }
yymsp[0].minor.yy302 = yylhsminor.yy302;
break;
case 121: /* topic_optr ::= topic_optr partitions */
case 131: /* alter_topic_optr ::= alter_topic_optr partitions */ yytestcase(yyruleno==131);
{ yylhsminor.yy560 = yymsp[-1].minor.yy560; yylhsminor.yy560.partitions = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy560 = yylhsminor.yy560;
{ yylhsminor.yy302 = yymsp[-1].minor.yy302; yylhsminor.yy302.partitions = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[-1].minor.yy302 = yylhsminor.yy302;
break;
case 122: /* alter_db_optr ::= */
{ setDefaultCreateDbOption(&yymsp[1].minor.yy560); yymsp[1].minor.yy560.dbType = TSDB_DB_TYPE_DEFAULT;}
{ setDefaultCreateDbOption(&yymsp[1].minor.yy302); yymsp[1].minor.yy302.dbType = TSDB_DB_TYPE_DEFAULT;}
break;
case 132: /* typename ::= ids */
{
yymsp[0].minor.yy0.type = 0;
tSetColumnType (&yylhsminor.yy369, &yymsp[0].minor.yy0);
tSetColumnType (&yylhsminor.yy223, &yymsp[0].minor.yy0);
}
yymsp[0].minor.yy369 = yylhsminor.yy369;
yymsp[0].minor.yy223 = yylhsminor.yy223;
break;
case 133: /* typename ::= ids LP signed RP */
{
if (yymsp[-1].minor.yy55 <= 0) {
if (yymsp[-1].minor.yy369 <= 0) {
yymsp[-3].minor.yy0.type = 0;
tSetColumnType(&yylhsminor.yy369, &yymsp[-3].minor.yy0);
tSetColumnType(&yylhsminor.yy223, &yymsp[-3].minor.yy0);
} else {
yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy55; // negative value of name length
tSetColumnType(&yylhsminor.yy369, &yymsp[-3].minor.yy0);
yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy369; // negative value of name length
tSetColumnType(&yylhsminor.yy223, &yymsp[-3].minor.yy0);
}
}
yymsp[-3].minor.yy369 = yylhsminor.yy369;
yymsp[-3].minor.yy223 = yylhsminor.yy223;
break;
case 134: /* typename ::= ids UNSIGNED */
{
yymsp[-1].minor.yy0.type = 0;
yymsp[-1].minor.yy0.n = ((yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z);
tSetColumnType (&yylhsminor.yy369, &yymsp[-1].minor.yy0);
tSetColumnType (&yylhsminor.yy223, &yymsp[-1].minor.yy0);
}
yymsp[-1].minor.yy369 = yylhsminor.yy369;
yymsp[-1].minor.yy223 = yylhsminor.yy223;
break;
case 135: /* signed ::= INTEGER */
{ yylhsminor.yy55 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[0].minor.yy55 = yylhsminor.yy55;
{ yylhsminor.yy369 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
yymsp[0].minor.yy369 = yylhsminor.yy369;
break;
case 136: /* signed ::= PLUS INTEGER */
{ yymsp[-1].minor.yy55 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
{ yymsp[-1].minor.yy369 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
break;
case 137: /* signed ::= MINUS INTEGER */
{ yymsp[-1].minor.yy55 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);}
{ yymsp[-1].minor.yy369 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);}
break;
case 141: /* cmd ::= CREATE TABLE create_table_list */
{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy404;}
{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy462;}
break;
case 142: /* create_table_list ::= create_from_stable */
{
SCreateTableSql* pCreateTable = calloc(1, sizeof(SCreateTableSql));
pCreateTable->childTableInfo = taosArrayInit(4, sizeof(SCreatedTableInfo));
taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy34);
taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy356);
pCreateTable->type = TSQL_CREATE_TABLE_FROM_STABLE;
yylhsminor.yy404 = pCreateTable;
yylhsminor.yy462 = pCreateTable;
}
yymsp[0].minor.yy404 = yylhsminor.yy404;
yymsp[0].minor.yy462 = yylhsminor.yy462;
break;
case 143: /* create_table_list ::= create_table_list create_from_stable */
{
taosArrayPush(yymsp[-1].minor.yy404->childTableInfo, &yymsp[0].minor.yy34);
yylhsminor.yy404 = yymsp[-1].minor.yy404;
taosArrayPush(yymsp[-1].minor.yy462->childTableInfo, &yymsp[0].minor.yy356);
yylhsminor.yy462 = yymsp[-1].minor.yy462;
}
yymsp[-1].minor.yy404 = yylhsminor.yy404;
yymsp[-1].minor.yy462 = yylhsminor.yy462;
break;
case 144: /* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
{
yylhsminor.yy404 = tSetCreateTableInfo(yymsp[-1].minor.yy209, NULL, NULL, TSQL_CREATE_TABLE);
setSqlInfo(pInfo, yylhsminor.yy404, NULL, TSDB_SQL_CREATE_TABLE);
yylhsminor.yy462 = tSetCreateTableInfo(yymsp[-1].minor.yy161, NULL, NULL, TSQL_CREATE_TABLE);
setSqlInfo(pInfo, yylhsminor.yy462, NULL, TSDB_SQL_CREATE_TABLE);
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
setCreatedTableName(pInfo, &yymsp[-4].minor.yy0, &yymsp[-5].minor.yy0);
}
yymsp[-5].minor.yy404 = yylhsminor.yy404;
yymsp[-5].minor.yy462 = yylhsminor.yy462;
break;
case 145: /* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
{
yylhsminor.yy404 = tSetCreateTableInfo(yymsp[-5].minor.yy209, yymsp[-1].minor.yy209, NULL, TSQL_CREATE_STABLE);
setSqlInfo(pInfo, yylhsminor.yy404, NULL, TSDB_SQL_CREATE_TABLE);
yylhsminor.yy462 = tSetCreateTableInfo(yymsp[-5].minor.yy161, yymsp[-1].minor.yy161, NULL, TSQL_CREATE_STABLE);
setSqlInfo(pInfo, yylhsminor.yy462, NULL, TSDB_SQL_CREATE_TABLE);
yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
setCreatedTableName(pInfo, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0);
}
yymsp[-9].minor.yy404 = yylhsminor.yy404;
yymsp[-9].minor.yy462 = yylhsminor.yy462;
break;
case 146: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
{
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
yylhsminor.yy34 = createNewChildTableInfo(&yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy209, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0);
yylhsminor.yy356 = createNewChildTableInfo(&yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy161, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0);
}
yymsp[-9].minor.yy34 = yylhsminor.yy34;
yymsp[-9].minor.yy356 = yylhsminor.yy356;
break;
case 147: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
{
yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
yymsp[-11].minor.yy0.n += yymsp[-10].minor.yy0.n;
yylhsminor.yy34 = createNewChildTableInfo(&yymsp[-8].minor.yy0, yymsp[-5].minor.yy209, yymsp[-1].minor.yy209, &yymsp[-11].minor.yy0, &yymsp[-12].minor.yy0);
yylhsminor.yy356 = createNewChildTableInfo(&yymsp[-8].minor.yy0, yymsp[-5].minor.yy161, yymsp[-1].minor.yy161, &yymsp[-11].minor.yy0, &yymsp[-12].minor.yy0);
}
yymsp[-12].minor.yy34 = yylhsminor.yy34;
yymsp[-12].minor.yy356 = yylhsminor.yy356;
break;
case 148: /* tagNamelist ::= tagNamelist COMMA ids */
{taosArrayPush(yymsp[-2].minor.yy209, &yymsp[0].minor.yy0); yylhsminor.yy209 = yymsp[-2].minor.yy209; }
yymsp[-2].minor.yy209 = yylhsminor.yy209;
{taosArrayPush(yymsp[-2].minor.yy161, &yymsp[0].minor.yy0); yylhsminor.yy161 = yymsp[-2].minor.yy161; }
yymsp[-2].minor.yy161 = yylhsminor.yy161;
break;
case 149: /* tagNamelist ::= ids */
{yylhsminor.yy209 = taosArrayInit(4, sizeof(SStrToken)); taosArrayPush(yylhsminor.yy209, &yymsp[0].minor.yy0);}
yymsp[0].minor.yy209 = yylhsminor.yy209;
{yylhsminor.yy161 = taosArrayInit(4, sizeof(SStrToken)); taosArrayPush(yylhsminor.yy161, &yymsp[0].minor.yy0);}
yymsp[0].minor.yy161 = yylhsminor.yy161;
break;
case 150: /* create_table_args ::= ifnotexists ids cpxName to_opt split_opt AS select */
{
yylhsminor.yy404 = tSetCreateTableInfo(NULL, NULL, yymsp[0].minor.yy160, TSQL_CREATE_STREAM);
setSqlInfo(pInfo, yylhsminor.yy404, NULL, TSDB_SQL_CREATE_TABLE);
yylhsminor.yy462 = tSetCreateTableInfo(NULL, NULL, yymsp[0].minor.yy276, TSQL_CREATE_STREAM);
setSqlInfo(pInfo, yylhsminor.yy462, NULL, TSDB_SQL_CREATE_TABLE);
setCreatedStreamOpt(pInfo, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0);
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
setCreatedTableName(pInfo, &yymsp[-5].minor.yy0, &yymsp[-6].minor.yy0);
}
yymsp[-6].minor.yy404 = yylhsminor.yy404;
yymsp[-6].minor.yy462 = yylhsminor.yy462;
break;
case 151: /* to_opt ::= */
case 153: /* split_opt ::= */ yytestcase(yyruleno==153);
......@@ -2834,37 +3159,37 @@ static YYACTIONTYPE yy_reduce(
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
break;
case 155: /* columnlist ::= columnlist COMMA column */
{taosArrayPush(yymsp[-2].minor.yy209, &yymsp[0].minor.yy369); yylhsminor.yy209 = yymsp[-2].minor.yy209; }
yymsp[-2].minor.yy209 = yylhsminor.yy209;
{taosArrayPush(yymsp[-2].minor.yy161, &yymsp[0].minor.yy223); yylhsminor.yy161 = yymsp[-2].minor.yy161; }
yymsp[-2].minor.yy161 = yylhsminor.yy161;
break;
case 156: /* columnlist ::= column */
{yylhsminor.yy209 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy209, &yymsp[0].minor.yy369);}
yymsp[0].minor.yy209 = yylhsminor.yy209;
{yylhsminor.yy161 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy161, &yymsp[0].minor.yy223);}
yymsp[0].minor.yy161 = yylhsminor.yy161;
break;
case 157: /* column ::= ids typename */
{
tSetColumnInfo(&yylhsminor.yy369, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy369);
tSetColumnInfo(&yylhsminor.yy223, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy223);
}
yymsp[-1].minor.yy369 = yylhsminor.yy369;
yymsp[-1].minor.yy223 = yylhsminor.yy223;
break;
case 164: /* tagitem ::= NULL */
{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy54, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy54 = yylhsminor.yy54;
{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy526, &yymsp[0].minor.yy0); }
yymsp[0].minor.yy526 = yylhsminor.yy526;
break;
case 165: /* tagitem ::= NOW */
{ yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP; tVariantCreateExt(&yylhsminor.yy54, &yymsp[0].minor.yy0, TK_NOW, true);}
yymsp[0].minor.yy54 = yylhsminor.yy54;
{ yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP; tVariantCreateExt(&yylhsminor.yy526, &yymsp[0].minor.yy0, TK_NOW, true);}
yymsp[0].minor.yy526 = yylhsminor.yy526;
break;
case 166: /* tagitem ::= NOW PLUS VARIABLE */
{
yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP;
tVariantCreateExt(&yymsp[-2].minor.yy54, &yymsp[0].minor.yy0, TK_PLUS, true);
tVariantCreateExt(&yymsp[-2].minor.yy526, &yymsp[0].minor.yy0, TK_PLUS, true);
}
break;
case 167: /* tagitem ::= NOW MINUS VARIABLE */
{
yymsp[0].minor.yy0.type = TSDB_DATA_TYPE_TIMESTAMP;
tVariantCreateExt(&yymsp[-2].minor.yy54, &yymsp[0].minor.yy0, TK_MINUS, true);
tVariantCreateExt(&yymsp[-2].minor.yy526, &yymsp[0].minor.yy0, TK_MINUS, true);
}
break;
case 168: /* tagitem ::= MINUS INTEGER */
......@@ -2875,56 +3200,56 @@ static YYACTIONTYPE yy_reduce(
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yymsp[-1].minor.yy0.type = yymsp[0].minor.yy0.type;
toTSDBType(yymsp[-1].minor.yy0.type);
tVariantCreate(&yylhsminor.yy54, &yymsp[-1].minor.yy0);
tVariantCreate(&yylhsminor.yy526, &yymsp[-1].minor.yy0);
}
yymsp[-1].minor.yy54 = yylhsminor.yy54;
yymsp[-1].minor.yy526 = yylhsminor.yy526;
break;
case 172: /* select ::= SELECT selcollist from where_opt range_option interval_option sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
{
yylhsminor.yy160 = tSetQuerySqlNode(&yymsp[-14].minor.yy0, yymsp[-13].minor.yy209, yymsp[-12].minor.yy530, yymsp[-11].minor.yy574, yymsp[-4].minor.yy209, yymsp[-2].minor.yy209, &yymsp[-9].minor.yy102, &yymsp[-7].minor.yy115, &yymsp[-6].minor.yy290, &yymsp[-8].minor.yy0, yymsp[-5].minor.yy209, &yymsp[0].minor.yy534, &yymsp[-1].minor.yy534, yymsp[-3].minor.yy574, &yymsp[-10].minor.yy22);
yylhsminor.yy276 = tSetQuerySqlNode(&yymsp[-14].minor.yy0, yymsp[-13].minor.yy161, yymsp[-12].minor.yy84, yymsp[-11].minor.yy546, yymsp[-4].minor.yy161, yymsp[-2].minor.yy161, &yymsp[-9].minor.yy300, &yymsp[-7].minor.yy219, &yymsp[-6].minor.yy548, &yymsp[-8].minor.yy0, yymsp[-5].minor.yy161, &yymsp[0].minor.yy394, &yymsp[-1].minor.yy394, yymsp[-3].minor.yy546, &yymsp[-10].minor.yy420);
}
yymsp[-14].minor.yy160 = yylhsminor.yy160;
yymsp[-14].minor.yy276 = yylhsminor.yy276;
break;
case 173: /* select ::= LP select RP */
{yymsp[-2].minor.yy160 = yymsp[-1].minor.yy160;}
{yymsp[-2].minor.yy276 = yymsp[-1].minor.yy276;}
break;
case 174: /* union ::= select */
{ yylhsminor.yy209 = setSubclause(NULL, yymsp[0].minor.yy160); }
yymsp[0].minor.yy209 = yylhsminor.yy209;
{ yylhsminor.yy161 = setSubclause(NULL, yymsp[0].minor.yy276); }
yymsp[0].minor.yy161 = yylhsminor.yy161;
break;
case 175: /* union ::= union UNION ALL select */
{ yylhsminor.yy209 = appendSelectClause(yymsp[-3].minor.yy209, yymsp[0].minor.yy160); }
yymsp[-3].minor.yy209 = yylhsminor.yy209;
{ yylhsminor.yy161 = appendSelectClause(yymsp[-3].minor.yy161, yymsp[0].minor.yy276); }
yymsp[-3].minor.yy161 = yylhsminor.yy161;
break;
case 176: /* cmd ::= union */
{ setSqlInfo(pInfo, yymsp[0].minor.yy209, NULL, TSDB_SQL_SELECT); }
{ setSqlInfo(pInfo, yymsp[0].minor.yy161, NULL, TSDB_SQL_SELECT); }
break;
case 177: /* select ::= SELECT selcollist */
{
yylhsminor.yy160 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy209, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
yylhsminor.yy276 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy161, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
yymsp[-1].minor.yy160 = yylhsminor.yy160;
yymsp[-1].minor.yy276 = yylhsminor.yy276;
break;
case 178: /* sclp ::= selcollist COMMA */
{yylhsminor.yy209 = yymsp[-1].minor.yy209;}
yymsp[-1].minor.yy209 = yylhsminor.yy209;
{yylhsminor.yy161 = yymsp[-1].minor.yy161;}
yymsp[-1].minor.yy161 = yylhsminor.yy161;
break;
case 179: /* sclp ::= */
case 220: /* orderby_opt ::= */ yytestcase(yyruleno==220);
{yymsp[1].minor.yy209 = 0;}
{yymsp[1].minor.yy161 = 0;}
break;
case 180: /* selcollist ::= sclp distinct expr as */
{
yylhsminor.yy209 = tSqlExprListAppend(yymsp[-3].minor.yy209, yymsp[-1].minor.yy574, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
yylhsminor.yy161 = tSqlExprListAppend(yymsp[-3].minor.yy161, yymsp[-1].minor.yy546, yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
}
yymsp[-3].minor.yy209 = yylhsminor.yy209;
yymsp[-3].minor.yy161 = yylhsminor.yy161;
break;
case 181: /* selcollist ::= sclp STAR */
{
tSqlExpr *pNode = tSqlExprCreateIdValue(pInfo, NULL, TK_ALL);
yylhsminor.yy209 = tSqlExprListAppend(yymsp[-1].minor.yy209, pNode, 0, 0);
yylhsminor.yy161 = tSqlExprListAppend(yymsp[-1].minor.yy161, pNode, 0, 0);
}
yymsp[-1].minor.yy209 = yylhsminor.yy209;
yymsp[-1].minor.yy161 = yylhsminor.yy161;
break;
case 182: /* as ::= AS ids */
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; }
......@@ -2942,114 +3267,114 @@ static YYACTIONTYPE yy_reduce(
break;
case 187: /* from ::= FROM tablelist */
case 188: /* from ::= FROM sub */ yytestcase(yyruleno==188);
{yymsp[-1].minor.yy530 = yymsp[0].minor.yy530;}
{yymsp[-1].minor.yy84 = yymsp[0].minor.yy84;}
break;
case 189: /* sub ::= LP union RP */
{yymsp[-2].minor.yy530 = addSubqueryElem(NULL, yymsp[-1].minor.yy209, NULL);}
{yymsp[-2].minor.yy84 = addSubqueryElem(NULL, yymsp[-1].minor.yy161, NULL);}
break;
case 190: /* sub ::= LP union RP ids */
{yymsp[-3].minor.yy530 = addSubqueryElem(NULL, yymsp[-2].minor.yy209, &yymsp[0].minor.yy0);}
{yymsp[-3].minor.yy84 = addSubqueryElem(NULL, yymsp[-2].minor.yy161, &yymsp[0].minor.yy0);}
break;
case 191: /* sub ::= sub COMMA LP union RP ids */
{yylhsminor.yy530 = addSubqueryElem(yymsp[-5].minor.yy530, yymsp[-2].minor.yy209, &yymsp[0].minor.yy0);}
yymsp[-5].minor.yy530 = yylhsminor.yy530;
{yylhsminor.yy84 = addSubqueryElem(yymsp[-5].minor.yy84, yymsp[-2].minor.yy161, &yymsp[0].minor.yy0);}
yymsp[-5].minor.yy84 = yylhsminor.yy84;
break;
case 192: /* tablelist ::= ids cpxName */
{
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yylhsminor.yy530 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL);
yylhsminor.yy84 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL);
}
yymsp[-1].minor.yy530 = yylhsminor.yy530;
yymsp[-1].minor.yy84 = yylhsminor.yy84;
break;
case 193: /* tablelist ::= ids cpxName ids */
{
yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
yylhsminor.yy530 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
yylhsminor.yy84 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
}
yymsp[-2].minor.yy530 = yylhsminor.yy530;
yymsp[-2].minor.yy84 = yylhsminor.yy84;
break;
case 194: /* tablelist ::= tablelist COMMA ids cpxName */
{
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
yylhsminor.yy530 = setTableNameList(yymsp[-3].minor.yy530, &yymsp[-1].minor.yy0, NULL);
yylhsminor.yy84 = setTableNameList(yymsp[-3].minor.yy84, &yymsp[-1].minor.yy0, NULL);
}
yymsp[-3].minor.yy530 = yylhsminor.yy530;
yymsp[-3].minor.yy84 = yylhsminor.yy84;
break;
case 195: /* tablelist ::= tablelist COMMA ids cpxName ids */
{
yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
yylhsminor.yy530 = setTableNameList(yymsp[-4].minor.yy530, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
yylhsminor.yy84 = setTableNameList(yymsp[-4].minor.yy84, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
}
yymsp[-4].minor.yy530 = yylhsminor.yy530;
yymsp[-4].minor.yy84 = yylhsminor.yy84;
break;
case 196: /* tmvar ::= VARIABLE */
{yylhsminor.yy0 = yymsp[0].minor.yy0;}
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
case 197: /* timestamp ::= INTEGER */
{ yylhsminor.yy574 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy574 = yylhsminor.yy574;
{ yylhsminor.yy546 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 198: /* timestamp ::= MINUS INTEGER */
case 199: /* timestamp ::= PLUS INTEGER */ yytestcase(yyruleno==199);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy574 = tSqlExprCreateTimestamp(&yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy574 = yylhsminor.yy574;
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy546 = tSqlExprCreateTimestamp(&yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy546 = yylhsminor.yy546;
break;
case 200: /* timestamp ::= STRING */
{ yylhsminor.yy574 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy574 = yylhsminor.yy574;
{ yylhsminor.yy546 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 201: /* timestamp ::= NOW */
{ yylhsminor.yy574 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy574 = yylhsminor.yy574;
{ yylhsminor.yy546 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 202: /* timestamp ::= NOW PLUS VARIABLE */
{yymsp[-2].minor.yy574 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_PLUS); }
{yymsp[-2].minor.yy546 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_PLUS); }
break;
case 203: /* timestamp ::= NOW MINUS VARIABLE */
{yymsp[-2].minor.yy574 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_MINUS); }
{yymsp[-2].minor.yy546 = tSqlExprCreateTimestamp(&yymsp[0].minor.yy0, TK_MINUS); }
break;
case 204: /* range_option ::= */
{yymsp[1].minor.yy22.start = 0; yymsp[1].minor.yy22.end = 0;}
{yymsp[1].minor.yy420.start = 0; yymsp[1].minor.yy420.end = 0;}
break;
case 205: /* range_option ::= RANGE LP timestamp COMMA timestamp RP */
{yymsp[-5].minor.yy22.start = yymsp[-3].minor.yy574; yymsp[-5].minor.yy22.end = yymsp[-1].minor.yy574;}
{yymsp[-5].minor.yy420.start = yymsp[-3].minor.yy546; yymsp[-5].minor.yy420.end = yymsp[-1].minor.yy546;}
break;
case 206: /* interval_option ::= intervalKey LP tmvar RP */
{yylhsminor.yy102.interval = yymsp[-1].minor.yy0; yylhsminor.yy102.offset.n = 0; yylhsminor.yy102.token = yymsp[-3].minor.yy380;}
yymsp[-3].minor.yy102 = yylhsminor.yy102;
{yylhsminor.yy300.interval = yymsp[-1].minor.yy0; yylhsminor.yy300.offset.n = 0; yylhsminor.yy300.token = yymsp[-3].minor.yy520;}
yymsp[-3].minor.yy300 = yylhsminor.yy300;
break;
case 207: /* interval_option ::= intervalKey LP tmvar COMMA tmvar RP */
{yylhsminor.yy102.interval = yymsp[-3].minor.yy0; yylhsminor.yy102.offset = yymsp[-1].minor.yy0; yylhsminor.yy102.token = yymsp[-5].minor.yy380;}
yymsp[-5].minor.yy102 = yylhsminor.yy102;
{yylhsminor.yy300.interval = yymsp[-3].minor.yy0; yylhsminor.yy300.offset = yymsp[-1].minor.yy0; yylhsminor.yy300.token = yymsp[-5].minor.yy520;}
yymsp[-5].minor.yy300 = yylhsminor.yy300;
break;
case 208: /* interval_option ::= */
{memset(&yymsp[1].minor.yy102, 0, sizeof(yymsp[1].minor.yy102));}
{memset(&yymsp[1].minor.yy300, 0, sizeof(yymsp[1].minor.yy300));}
break;
case 209: /* intervalKey ::= INTERVAL */
{yymsp[0].minor.yy380 = TK_INTERVAL;}
{yymsp[0].minor.yy520 = TK_INTERVAL;}
break;
case 210: /* intervalKey ::= EVERY */
{yymsp[0].minor.yy380 = TK_EVERY; }
{yymsp[0].minor.yy520 = TK_EVERY; }
break;
case 211: /* session_option ::= */
{yymsp[1].minor.yy115.col.n = 0; yymsp[1].minor.yy115.gap.n = 0;}
{yymsp[1].minor.yy219.col.n = 0; yymsp[1].minor.yy219.gap.n = 0;}
break;
case 212: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
yymsp[-6].minor.yy115.col = yymsp[-4].minor.yy0;
yymsp[-6].minor.yy115.gap = yymsp[-1].minor.yy0;
yymsp[-6].minor.yy219.col = yymsp[-4].minor.yy0;
yymsp[-6].minor.yy219.gap = yymsp[-1].minor.yy0;
}
break;
case 213: /* windowstate_option ::= */
{ yymsp[1].minor.yy290.col.n = 0; yymsp[1].minor.yy290.col.z = NULL;}
{ yymsp[1].minor.yy548.col.n = 0; yymsp[1].minor.yy548.col.z = NULL;}
break;
case 214: /* windowstate_option ::= STATE_WINDOW LP ids RP */
{ yymsp[-3].minor.yy290.col = yymsp[-1].minor.yy0; }
{ yymsp[-3].minor.yy548.col = yymsp[-1].minor.yy0; }
break;
case 215: /* fill_opt ::= */
{ yymsp[1].minor.yy209 = 0; }
{ yymsp[1].minor.yy161 = 0; }
break;
case 216: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{
......@@ -3057,14 +3382,14 @@ static YYACTIONTYPE yy_reduce(
toTSDBType(yymsp[-3].minor.yy0.type);
tVariantCreate(&A, &yymsp[-3].minor.yy0);
tVariantListInsert(yymsp[-1].minor.yy209, &A, -1, 0);
yymsp[-5].minor.yy209 = yymsp[-1].minor.yy209;
tVariantListInsert(yymsp[-1].minor.yy161, &A, -1, 0);
yymsp[-5].minor.yy161 = yymsp[-1].minor.yy161;
}
break;
case 217: /* fill_opt ::= FILL LP ID RP */
{
toTSDBType(yymsp[-1].minor.yy0.type);
yymsp[-3].minor.yy209 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1, true);
yymsp[-3].minor.yy161 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1, true);
}
break;
case 218: /* sliding_opt ::= SLIDING LP tmvar RP */
......@@ -3074,309 +3399,313 @@ static YYACTIONTYPE yy_reduce(
{yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0; }
break;
case 221: /* orderby_opt ::= ORDER BY sortlist */
{yymsp[-2].minor.yy209 = yymsp[0].minor.yy209;}
{yymsp[-2].minor.yy161 = yymsp[0].minor.yy161;}
break;
case 222: /* sortlist ::= sortlist COMMA item sortorder */
{
yylhsminor.yy209 = commonItemAppend(yymsp[-3].minor.yy209, &yymsp[-1].minor.yy54, NULL, false, yymsp[0].minor.yy332);
yylhsminor.yy161 = commonItemAppend(yymsp[-3].minor.yy161, &yymsp[-1].minor.yy526, NULL, false, yymsp[0].minor.yy452);
}
yymsp[-3].minor.yy209 = yylhsminor.yy209;
yymsp[-3].minor.yy161 = yylhsminor.yy161;
break;
case 223: /* sortlist ::= sortlist COMMA arrow sortorder */
{
yylhsminor.yy209 = commonItemAppend(yymsp[-3].minor.yy209, NULL, yymsp[-1].minor.yy574, true, yymsp[0].minor.yy332);
yylhsminor.yy161 = commonItemAppend(yymsp[-3].minor.yy161, NULL, yymsp[-1].minor.yy546, true, yymsp[0].minor.yy452);
}
yymsp[-3].minor.yy209 = yylhsminor.yy209;
yymsp[-3].minor.yy161 = yylhsminor.yy161;
break;
case 224: /* sortlist ::= item sortorder */
{
yylhsminor.yy209 = commonItemAppend(NULL, &yymsp[-1].minor.yy54, NULL, false, yymsp[0].minor.yy332);
yylhsminor.yy161 = commonItemAppend(NULL, &yymsp[-1].minor.yy526, NULL, false, yymsp[0].minor.yy452);
}
yymsp[-1].minor.yy209 = yylhsminor.yy209;
yymsp[-1].minor.yy161 = yylhsminor.yy161;
break;
case 225: /* sortlist ::= arrow sortorder */
{
yylhsminor.yy209 = commonItemAppend(NULL, NULL, yymsp[-1].minor.yy574, true, yymsp[0].minor.yy332);
yylhsminor.yy161 = commonItemAppend(NULL, NULL, yymsp[-1].minor.yy546, true, yymsp[0].minor.yy452);
}
yymsp[-1].minor.yy209 = yylhsminor.yy209;
yymsp[-1].minor.yy161 = yylhsminor.yy161;
break;
case 226: /* item ::= ID */
{
toTSDBType(yymsp[0].minor.yy0.type);
tVariantCreate(&yylhsminor.yy54, &yymsp[0].minor.yy0);
tVariantCreate(&yylhsminor.yy526, &yymsp[0].minor.yy0);
}
yymsp[0].minor.yy54 = yylhsminor.yy54;
yymsp[0].minor.yy526 = yylhsminor.yy526;
break;
case 227: /* item ::= ID DOT ID */
{
toTSDBType(yymsp[-2].minor.yy0.type);
yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n);
tVariantCreate(&yylhsminor.yy54, &yymsp[-2].minor.yy0);
tVariantCreate(&yylhsminor.yy526, &yymsp[-2].minor.yy0);
}
yymsp[-2].minor.yy54 = yylhsminor.yy54;
yymsp[-2].minor.yy526 = yylhsminor.yy526;
break;
case 228: /* sortorder ::= ASC */
{ yymsp[0].minor.yy332 = TSDB_ORDER_ASC; }
{ yymsp[0].minor.yy452 = TSDB_ORDER_ASC; }
break;
case 229: /* sortorder ::= DESC */
{ yymsp[0].minor.yy332 = TSDB_ORDER_DESC;}
{ yymsp[0].minor.yy452 = TSDB_ORDER_DESC;}
break;
case 230: /* sortorder ::= */
{ yymsp[1].minor.yy332 = TSDB_ORDER_ASC; }
{ yymsp[1].minor.yy452 = TSDB_ORDER_ASC; }
break;
case 231: /* groupby_opt ::= */
{ yymsp[1].minor.yy209 = 0;}
{ yymsp[1].minor.yy161 = 0;}
break;
case 232: /* groupby_opt ::= GROUP BY grouplist */
{ yymsp[-2].minor.yy209 = yymsp[0].minor.yy209;}
{ yymsp[-2].minor.yy161 = yymsp[0].minor.yy161;}
break;
case 233: /* grouplist ::= grouplist COMMA item */
{
yylhsminor.yy209 = commonItemAppend(yymsp[-2].minor.yy209, &yymsp[0].minor.yy54, NULL, false, -1);
yylhsminor.yy161 = commonItemAppend(yymsp[-2].minor.yy161, &yymsp[0].minor.yy526, NULL, false, -1);
}
yymsp[-2].minor.yy209 = yylhsminor.yy209;
yymsp[-2].minor.yy161 = yylhsminor.yy161;
break;
case 234: /* grouplist ::= grouplist COMMA arrow */
{
yylhsminor.yy209 = commonItemAppend(yymsp[-2].minor.yy209, NULL, yymsp[0].minor.yy574, true, -1);
yylhsminor.yy161 = commonItemAppend(yymsp[-2].minor.yy161, NULL, yymsp[0].minor.yy546, true, -1);
}
yymsp[-2].minor.yy209 = yylhsminor.yy209;
yymsp[-2].minor.yy161 = yylhsminor.yy161;
break;
case 235: /* grouplist ::= item */
{
yylhsminor.yy209 = commonItemAppend(NULL, &yymsp[0].minor.yy54, NULL, false, -1);
yylhsminor.yy161 = commonItemAppend(NULL, &yymsp[0].minor.yy526, NULL, false, -1);
}
yymsp[0].minor.yy209 = yylhsminor.yy209;
yymsp[0].minor.yy161 = yylhsminor.yy161;
break;
case 236: /* grouplist ::= arrow */
{
yylhsminor.yy209 = commonItemAppend(NULL, NULL, yymsp[0].minor.yy574, true, -1);
yylhsminor.yy161 = commonItemAppend(NULL, NULL, yymsp[0].minor.yy546, true, -1);
}
yymsp[0].minor.yy209 = yylhsminor.yy209;
yymsp[0].minor.yy161 = yylhsminor.yy161;
break;
case 237: /* having_opt ::= */
case 247: /* where_opt ::= */ yytestcase(yyruleno==247);
case 297: /* expritem ::= */ yytestcase(yyruleno==297);
{yymsp[1].minor.yy574 = 0;}
case 298: /* expritem ::= */ yytestcase(yyruleno==298);
{yymsp[1].minor.yy546 = 0;}
break;
case 238: /* having_opt ::= HAVING expr */
case 248: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==248);
{yymsp[-1].minor.yy574 = yymsp[0].minor.yy574;}
{yymsp[-1].minor.yy546 = yymsp[0].minor.yy546;}
break;
case 239: /* limit_opt ::= */
case 243: /* slimit_opt ::= */ yytestcase(yyruleno==243);
{yymsp[1].minor.yy534.limit = -1; yymsp[1].minor.yy534.offset = 0;}
{yymsp[1].minor.yy394.limit = -1; yymsp[1].minor.yy394.offset = 0;}
break;
case 240: /* limit_opt ::= LIMIT signed */
case 244: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==244);
{yymsp[-1].minor.yy534.limit = yymsp[0].minor.yy55; yymsp[-1].minor.yy534.offset = 0;}
{yymsp[-1].minor.yy394.limit = yymsp[0].minor.yy369; yymsp[-1].minor.yy394.offset = 0;}
break;
case 241: /* limit_opt ::= LIMIT signed OFFSET signed */
{ yymsp[-3].minor.yy534.limit = yymsp[-2].minor.yy55; yymsp[-3].minor.yy534.offset = yymsp[0].minor.yy55;}
{ yymsp[-3].minor.yy394.limit = yymsp[-2].minor.yy369; yymsp[-3].minor.yy394.offset = yymsp[0].minor.yy369;}
break;
case 242: /* limit_opt ::= LIMIT signed COMMA signed */
{ yymsp[-3].minor.yy534.limit = yymsp[0].minor.yy55; yymsp[-3].minor.yy534.offset = yymsp[-2].minor.yy55;}
{ yymsp[-3].minor.yy394.limit = yymsp[0].minor.yy369; yymsp[-3].minor.yy394.offset = yymsp[-2].minor.yy369;}
break;
case 245: /* slimit_opt ::= SLIMIT signed SOFFSET signed */
{yymsp[-3].minor.yy534.limit = yymsp[-2].minor.yy55; yymsp[-3].minor.yy534.offset = yymsp[0].minor.yy55;}
{yymsp[-3].minor.yy394.limit = yymsp[-2].minor.yy369; yymsp[-3].minor.yy394.offset = yymsp[0].minor.yy369;}
break;
case 246: /* slimit_opt ::= SLIMIT signed COMMA signed */
{yymsp[-3].minor.yy534.limit = yymsp[0].minor.yy55; yymsp[-3].minor.yy534.offset = yymsp[-2].minor.yy55;}
{yymsp[-3].minor.yy394.limit = yymsp[0].minor.yy369; yymsp[-3].minor.yy394.offset = yymsp[-2].minor.yy369;}
break;
case 249: /* expr ::= LP expr RP */
{yylhsminor.yy574 = yymsp[-1].minor.yy574; yylhsminor.yy574->exprToken.z = yymsp[-2].minor.yy0.z; yylhsminor.yy574->exprToken.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
{yylhsminor.yy546 = yymsp[-1].minor.yy546; yylhsminor.yy546->exprToken.z = yymsp[-2].minor.yy0.z; yylhsminor.yy546->exprToken.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 250: /* expr ::= ID */
{ yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_ID);}
yymsp[0].minor.yy574 = yylhsminor.yy574;
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_ID);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 251: /* expr ::= ID DOT ID */
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 252: /* expr ::= ID DOT STAR */
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ALL);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ALL);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 253: /* expr ::= INTEGER */
{ yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy574 = yylhsminor.yy574;
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 254: /* expr ::= MINUS INTEGER */
case 255: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==255);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy574 = yylhsminor.yy574;
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy546 = yylhsminor.yy546;
break;
case 256: /* expr ::= FLOAT */
{ yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_FLOAT);}
yymsp[0].minor.yy574 = yylhsminor.yy574;
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_FLOAT);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 257: /* expr ::= MINUS FLOAT */
case 258: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==258);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_FLOAT);}
yymsp[-1].minor.yy574 = yylhsminor.yy574;
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_FLOAT);}
yymsp[-1].minor.yy546 = yylhsminor.yy546;
break;
case 259: /* expr ::= STRING */
{ yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy574 = yylhsminor.yy574;
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 260: /* expr ::= NOW */
{ yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy574 = yylhsminor.yy574;
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 261: /* expr ::= TODAY */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_TODAY); }
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 261: /* expr ::= VARIABLE */
{ yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_VARIABLE);}
yymsp[0].minor.yy574 = yylhsminor.yy574;
case 262: /* expr ::= VARIABLE */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_VARIABLE);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 262: /* expr ::= PLUS VARIABLE */
case 263: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==263);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_VARIABLE);}
yymsp[-1].minor.yy574 = yylhsminor.yy574;
case 263: /* expr ::= PLUS VARIABLE */
case 264: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==264);
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[-1].minor.yy0, TK_VARIABLE);}
yymsp[-1].minor.yy546 = yylhsminor.yy546;
break;
case 264: /* expr ::= BOOL */
{ yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_BOOL);}
yymsp[0].minor.yy574 = yylhsminor.yy574;
case 265: /* expr ::= BOOL */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_BOOL);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 265: /* expr ::= NULL */
{ yylhsminor.yy574 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_NULL);}
yymsp[0].minor.yy574 = yylhsminor.yy574;
case 266: /* expr ::= NULL */
{ yylhsminor.yy546 = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_NULL);}
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 266: /* expr ::= ID LP exprlist RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy574 = tSqlExprCreateFunction(yymsp[-1].minor.yy209, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy574 = yylhsminor.yy574;
case 267: /* expr ::= ID LP exprlist RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy546 = tSqlExprCreateFunction(yymsp[-1].minor.yy161, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy546 = yylhsminor.yy546;
break;
case 267: /* expr ::= ID LP STAR RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy574 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy574 = yylhsminor.yy574;
break;
case 268: /* expr ::= ID LP expr AS typename RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-5].minor.yy0); yylhsminor.yy574 = tSqlExprCreateFuncWithParams(pInfo, yymsp[-3].minor.yy574, &yymsp[-1].minor.yy369, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, yymsp[-5].minor.yy0.type); }
yymsp[-5].minor.yy574 = yylhsminor.yy574;
break;
case 269: /* expr ::= expr IS NULL */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, NULL, TK_ISNULL);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
break;
case 270: /* expr ::= expr IS NOT NULL */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-3].minor.yy574, NULL, TK_NOTNULL);}
yymsp[-3].minor.yy574 = yylhsminor.yy574;
break;
case 271: /* expr ::= expr LT expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_LT);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 268: /* expr ::= ID LP STAR RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-3].minor.yy0); yylhsminor.yy546 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
yymsp[-3].minor.yy546 = yylhsminor.yy546;
break;
case 269: /* expr ::= ID LP expr AS typename RP */
{ tStrTokenAppend(pInfo->funcs, &yymsp[-5].minor.yy0); yylhsminor.yy546 = tSqlExprCreateFuncWithParams(pInfo, yymsp[-3].minor.yy546, &yymsp[-1].minor.yy223, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, yymsp[-5].minor.yy0.type); }
yymsp[-5].minor.yy546 = yylhsminor.yy546;
break;
case 270: /* expr ::= expr IS NULL */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, NULL, TK_ISNULL);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 271: /* expr ::= expr IS NOT NULL */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-3].minor.yy546, NULL, TK_NOTNULL);}
yymsp[-3].minor.yy546 = yylhsminor.yy546;
break;
case 272: /* expr ::= expr LT expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_LT);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 272: /* expr ::= expr GT expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_GT);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 273: /* expr ::= expr GT expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_GT);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 273: /* expr ::= expr LE expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_LE);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 274: /* expr ::= expr LE expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_LE);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 274: /* expr ::= expr GE expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_GE);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 275: /* expr ::= expr GE expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_GE);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 275: /* expr ::= expr NE expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_NE);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 276: /* expr ::= expr NE expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_NE);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 276: /* expr ::= expr EQ expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_EQ);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 277: /* expr ::= expr EQ expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_EQ);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 277: /* expr ::= expr BETWEEN expr AND expr */
{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy574); yylhsminor.yy574 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy574, yymsp[-2].minor.yy574, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy574, TK_LE), TK_AND);}
yymsp[-4].minor.yy574 = yylhsminor.yy574;
case 278: /* expr ::= expr BETWEEN expr AND expr */
{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy546); yylhsminor.yy546 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy546, yymsp[-2].minor.yy546, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy546, TK_LE), TK_AND);}
yymsp[-4].minor.yy546 = yylhsminor.yy546;
break;
case 278: /* expr ::= expr AND expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_AND);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 279: /* expr ::= expr AND expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_AND);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 279: /* expr ::= expr OR expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_OR); }
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 280: /* expr ::= expr OR expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_OR); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 280: /* expr ::= expr PLUS expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_PLUS); }
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 281: /* expr ::= expr PLUS expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_PLUS); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 281: /* expr ::= expr MINUS expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_MINUS); }
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 282: /* expr ::= expr MINUS expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_MINUS); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 282: /* expr ::= expr STAR expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_STAR); }
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 283: /* expr ::= expr STAR expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_STAR); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 283: /* expr ::= expr SLASH expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_DIVIDE);}
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 284: /* expr ::= expr SLASH expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_DIVIDE);}
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 284: /* expr ::= expr REM expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_REM); }
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 285: /* expr ::= expr REM expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_REM); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 285: /* expr ::= expr LIKE expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_LIKE); }
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 286: /* expr ::= expr LIKE expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_LIKE); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 286: /* expr ::= expr MATCH expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_MATCH); }
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 287: /* expr ::= expr MATCH expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_MATCH); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 287: /* expr ::= expr NMATCH expr */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-2].minor.yy574, yymsp[0].minor.yy574, TK_NMATCH); }
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 288: /* expr ::= expr NMATCH expr */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-2].minor.yy546, yymsp[0].minor.yy546, TK_NMATCH); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 288: /* expr ::= ID CONTAINS STRING */
{ tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy574 = tSqlExprCreate(S, M, TK_CONTAINS); }
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 289: /* expr ::= ID CONTAINS STRING */
{ tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy546 = tSqlExprCreate(S, M, TK_CONTAINS); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 289: /* expr ::= ID DOT ID CONTAINS STRING */
{ yymsp[-4].minor.yy0.n += (1+yymsp[-2].minor.yy0.n); tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-4].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy574 = tSqlExprCreate(S, M, TK_CONTAINS); }
yymsp[-4].minor.yy574 = yylhsminor.yy574;
case 290: /* expr ::= ID DOT ID CONTAINS STRING */
{ yymsp[-4].minor.yy0.n += (1+yymsp[-2].minor.yy0.n); tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-4].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy546 = tSqlExprCreate(S, M, TK_CONTAINS); }
yymsp[-4].minor.yy546 = yylhsminor.yy546;
break;
case 290: /* arrow ::= ID ARROW STRING */
{tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy574 = tSqlExprCreate(S, M, TK_ARROW); }
yymsp[-2].minor.yy574 = yylhsminor.yy574;
case 291: /* arrow ::= ID ARROW STRING */
{tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-2].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy546 = tSqlExprCreate(S, M, TK_ARROW); }
yymsp[-2].minor.yy546 = yylhsminor.yy546;
break;
case 291: /* arrow ::= ID DOT ID ARROW STRING */
{yymsp[-4].minor.yy0.n += (1+yymsp[-2].minor.yy0.n); tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-4].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy574 = tSqlExprCreate(S, M, TK_ARROW); }
yymsp[-4].minor.yy574 = yylhsminor.yy574;
case 292: /* arrow ::= ID DOT ID ARROW STRING */
{yymsp[-4].minor.yy0.n += (1+yymsp[-2].minor.yy0.n); tSqlExpr* S = tSqlExprCreateIdValue(pInfo, &yymsp[-4].minor.yy0, TK_ID); tSqlExpr* M = tSqlExprCreateIdValue(pInfo, &yymsp[0].minor.yy0, TK_STRING); yylhsminor.yy546 = tSqlExprCreate(S, M, TK_ARROW); }
yymsp[-4].minor.yy546 = yylhsminor.yy546;
break;
case 292: /* expr ::= arrow */
case 296: /* expritem ::= expr */ yytestcase(yyruleno==296);
{yylhsminor.yy574 = yymsp[0].minor.yy574;}
yymsp[0].minor.yy574 = yylhsminor.yy574;
case 293: /* expr ::= arrow */
case 297: /* expritem ::= expr */ yytestcase(yyruleno==297);
{yylhsminor.yy546 = yymsp[0].minor.yy546;}
yymsp[0].minor.yy546 = yylhsminor.yy546;
break;
case 293: /* expr ::= expr IN LP exprlist RP */
{yylhsminor.yy574 = tSqlExprCreate(yymsp[-4].minor.yy574, (tSqlExpr*)yymsp[-1].minor.yy209, TK_IN); }
yymsp[-4].minor.yy574 = yylhsminor.yy574;
case 294: /* expr ::= expr IN LP exprlist RP */
{yylhsminor.yy546 = tSqlExprCreate(yymsp[-4].minor.yy546, (tSqlExpr*)yymsp[-1].minor.yy161, TK_IN); }
yymsp[-4].minor.yy546 = yylhsminor.yy546;
break;
case 294: /* exprlist ::= exprlist COMMA expritem */
{yylhsminor.yy209 = tSqlExprListAppend(yymsp[-2].minor.yy209,yymsp[0].minor.yy574,0, 0);}
yymsp[-2].minor.yy209 = yylhsminor.yy209;
case 295: /* exprlist ::= exprlist COMMA expritem */
{yylhsminor.yy161 = tSqlExprListAppend(yymsp[-2].minor.yy161,yymsp[0].minor.yy546,0, 0);}
yymsp[-2].minor.yy161 = yylhsminor.yy161;
break;
case 295: /* exprlist ::= expritem */
{yylhsminor.yy209 = tSqlExprListAppend(0,yymsp[0].minor.yy574,0, 0);}
yymsp[0].minor.yy209 = yylhsminor.yy209;
case 296: /* exprlist ::= expritem */
{yylhsminor.yy161 = tSqlExprListAppend(0,yymsp[0].minor.yy546,0, 0);}
yymsp[0].minor.yy161 = yylhsminor.yy161;
break;
case 298: /* cmd ::= RESET QUERY CACHE */
case 299: /* cmd ::= RESET QUERY CACHE */
{ setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);}
break;
case 299: /* cmd ::= SYNCDB ids REPLICA */
case 300: /* cmd ::= SYNCDB ids REPLICA */
{ setDCLSqlElems(pInfo, TSDB_SQL_SYNC_DB_REPLICA, 1, &yymsp[-1].minor.yy0);}
break;
case 300: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
case 301: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy209, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 301: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
case 302: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
......@@ -3387,21 +3716,21 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 302: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
case 303: /* cmd ::= ALTER TABLE ids cpxName MODIFY COLUMN columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy209, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 303: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
case 304: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy209, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 304: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
case 305: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
......@@ -3412,7 +3741,7 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 305: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
case 306: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
......@@ -3426,33 +3755,33 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 306: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
case 307: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{
yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n;
toTSDBType(yymsp[-2].minor.yy0.type);
SArray* A = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1, false);
A = tVariantListAppend(A, &yymsp[0].minor.yy54, -1);
A = tVariantListAppend(A, &yymsp[0].minor.yy526, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-6].minor.yy0, NULL, A, TSDB_ALTER_TABLE_UPDATE_TAG_VAL, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 307: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
case 308: /* cmd ::= ALTER TABLE ids cpxName MODIFY TAG columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy209, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, -1);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 308: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
case 309: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy209, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 309: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
case 310: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
......@@ -3463,21 +3792,21 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 310: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
case 311: /* cmd ::= ALTER STABLE ids cpxName MODIFY COLUMN columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy209, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_CHANGE_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 311: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
case 312: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy209, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 312: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
case 313: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
......@@ -3488,7 +3817,7 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 313: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
case 314: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
{
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
......@@ -3502,41 +3831,41 @@ static YYACTIONTYPE yy_reduce(
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 314: /* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
case 315: /* cmd ::= ALTER STABLE ids cpxName SET TAG ids EQ tagitem */
{
yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n;
toTSDBType(yymsp[-2].minor.yy0.type);
SArray* A = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1, false);
A = tVariantListAppend(A, &yymsp[0].minor.yy54, -1);
A = tVariantListAppend(A, &yymsp[0].minor.yy526, -1);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-6].minor.yy0, NULL, A, TSDB_ALTER_TABLE_UPDATE_TAG_VAL, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 315: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
case 316: /* cmd ::= ALTER STABLE ids cpxName MODIFY TAG columnlist */
{
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy209, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE);
SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy161, NULL, TSDB_ALTER_TABLE_MODIFY_TAG_COLUMN, TSDB_SUPER_TABLE);
setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
break;
case 316: /* cmd ::= KILL CONNECTION INTEGER */
case 317: /* cmd ::= KILL CONNECTION INTEGER */
{setKillSql(pInfo, TSDB_SQL_KILL_CONNECTION, &yymsp[0].minor.yy0);}
break;
case 317: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */
case 318: /* 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 318: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */
case 319: /* 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:
break;
/********** End reduce actions ************************************************/
};
assert( yyruleno<sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0]) );
yygoto = yyRuleInfo[yyruleno].lhs;
yysize = yyRuleInfo[yyruleno].nrhs;
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
yygoto = yyRuleInfoLhs[yyruleno];
yysize = yyRuleInfoNRhs[yyruleno];
yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto);
/* There are no SHIFTREDUCE actions on nonterminals because the table
......@@ -3838,11 +4167,10 @@ void Parse(
*/
int ParseFallback(int iToken){
#ifdef YYFALLBACK
if( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) ){
assert( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) );
return yyFallback[iToken];
}
#else
(void)iToken;
#endif
return 0;
#endif
}
......@@ -159,6 +159,7 @@ static SKeyword keywordTable[] = {
{"SOFFSET", TK_SOFFSET},
{"WHERE", TK_WHERE},
{"NOW", TK_NOW},
{"TODAY", TK_TODAY},
{"INSERT", TK_INSERT},
{"INTO", TK_INTO},
{"VALUES", TK_VALUES},
......@@ -591,6 +592,7 @@ uint32_t tGetToken(char* z, uint32_t* tokenId) {
for (i = 1; ((z[i] & 0x80) == 0) && isIdChar[(uint8_t) z[i]]; i++) {
}
*tokenId = tKeywordCode(z, i);
return i;
}
}
......@@ -667,6 +669,12 @@ SStrToken tStrGetToken(char* str, int32_t* i, bool isPrevOptr) {
#endif
}
//for now(),today() function used in insert clause
if ((t0.type == TK_NOW || t0.type == TK_TODAY) &&
str[*i + t0.n] == '(' && str[*i + t0.n + 1] == ')') {
t0.n += 2;
}
if (t0.type == TK_SEMI) {
t0.n = 0;
return t0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册