提交 a797219b 编写于 作者: H hjxilinx

[tbase-1210]

上级 7a517945
...@@ -127,7 +127,7 @@ int tscAllocPayload(SSqlCmd* pCmd, int size); ...@@ -127,7 +127,7 @@ int tscAllocPayload(SSqlCmd* pCmd, int size);
void tscFieldInfoSetValFromSchema(SFieldInfo* pFieldInfo, int32_t index, SSchema* pSchema); void tscFieldInfoSetValFromSchema(SFieldInfo* pFieldInfo, int32_t index, SSchema* pSchema);
void tscFieldInfoSetValFromField(SFieldInfo* pFieldInfo, int32_t index, TAOS_FIELD* pField); void tscFieldInfoSetValFromField(SFieldInfo* pFieldInfo, int32_t index, TAOS_FIELD* pField);
void tscFieldInfoSetValue(SFieldInfo* pFieldInfo, int32_t index, int8_t type, char* name, int16_t bytes); void tscFieldInfoSetValue(SFieldInfo* pFieldInfo, int32_t index, int8_t type, const char* name, int16_t bytes);
void tscFieldInfoUpdateVisible(SFieldInfo* pFieldInfo, int32_t index, bool visible); void tscFieldInfoUpdateVisible(SFieldInfo* pFieldInfo, int32_t index, bool visible);
void tscFieldInfoCalOffset(SSqlCmd* pCmd); void tscFieldInfoCalOffset(SSqlCmd* pCmd);
...@@ -143,7 +143,9 @@ void tscClearFieldInfo(SFieldInfo* pFieldInfo); ...@@ -143,7 +143,9 @@ void tscClearFieldInfo(SFieldInfo* pFieldInfo);
void addExprParams(SSqlExpr* pExpr, char* argument, int32_t type, int32_t bytes, int16_t tableIndex); void addExprParams(SSqlExpr* pExpr, char* argument, int32_t type, int32_t bytes, int16_t tableIndex);
SSqlExpr* tscSqlExprInsert(SSqlCmd* pCmd, int32_t index, int16_t functionId, SColumnIndex* pColIndex, int16_t type, SSqlExpr* tscSqlExprInsert(SSqlCmd* pCmd, int32_t index, int16_t functionId, SColumnIndex* pColIndex, int16_t type,
int16_t size, /*int16_t colId,*/ int16_t interSize); int16_t size, int16_t interSize);
SSqlExpr* tscSqlExprInsertEmpty(SSqlCmd* pCmd, int32_t index, int16_t functionId);
SSqlExpr* tscSqlExprUpdate(SSqlCmd* pCmd, int32_t index, int16_t functionId, int16_t srcColumnIndex, int16_t type, SSqlExpr* tscSqlExprUpdate(SSqlCmd* pCmd, int32_t index, int16_t functionId, int16_t srcColumnIndex, int16_t type,
int16_t size); int16_t size);
......
...@@ -92,7 +92,12 @@ enum _sql_cmd { ...@@ -92,7 +92,12 @@ enum _sql_cmd {
*/ */
TSDB_SQL_RETRIEVE_EMPTY_RESULT, TSDB_SQL_RETRIEVE_EMPTY_RESULT,
TSDB_SQL_RESET_CACHE, TSDB_SQL_RESET_CACHE, // 40
TSDB_SQL_SERV_STATUS,
TSDB_SQL_CURRENT_DB,
TSDB_SQL_SERV_VERSION,
TSDB_SQL_CLI_VERSION,
TSDB_SQL_CURRENT_USER,
TSDB_SQL_CFG_LOCAL, TSDB_SQL_CFG_LOCAL,
TSDB_SQL_MAX TSDB_SQL_MAX
......
...@@ -26,6 +26,8 @@ ...@@ -26,6 +26,8 @@
#include "tschemautil.h" #include "tschemautil.h"
#include "tsocket.h" #include "tsocket.h"
static void tscSetLocalQueryResult(SSqlObj *pSql, const char *val, const char *columnName, size_t valueLength);
static int32_t getToStringLength(const char *pData, int32_t length, int32_t type) { static int32_t getToStringLength(const char *pData, int32_t length, int32_t type) {
char buf[512] = {0}; char buf[512] = {0};
...@@ -39,7 +41,7 @@ static int32_t getToStringLength(const char *pData, int32_t length, int32_t type ...@@ -39,7 +41,7 @@ static int32_t getToStringLength(const char *pData, int32_t length, int32_t type
case TSDB_DATA_TYPE_DOUBLE: { case TSDB_DATA_TYPE_DOUBLE: {
#ifdef _TD_ARM_32_ #ifdef _TD_ARM_32_
double dv = 0; double dv = 0;
*(int64_t*)(&dv) = *(int64_t*)pData; *(int64_t *)(&dv) = *(int64_t *)pData;
len = sprintf(buf, "%f", dv); len = sprintf(buf, "%f", dv);
#else #else
len = sprintf(buf, "%lf", *(double *)pData); len = sprintf(buf, "%lf", *(double *)pData);
...@@ -47,12 +49,11 @@ static int32_t getToStringLength(const char *pData, int32_t length, int32_t type ...@@ -47,12 +49,11 @@ static int32_t getToStringLength(const char *pData, int32_t length, int32_t type
if (strncasecmp("nan", buf, 3) == 0) { if (strncasecmp("nan", buf, 3) == 0) {
len = 4; len = 4;
} }
} } break;
break;
case TSDB_DATA_TYPE_FLOAT: { case TSDB_DATA_TYPE_FLOAT: {
#ifdef _TD_ARM_32_ #ifdef _TD_ARM_32_
float fv = 0; float fv = 0;
*(int32_t*)(&fv) = *(int32_t*)pData; *(int32_t *)(&fv) = *(int32_t *)pData;
len = sprintf(buf, "%f", fv); len = sprintf(buf, "%f", fv);
#else #else
len = sprintf(buf, "%f", *(float *)pData); len = sprintf(buf, "%f", *(float *)pData);
...@@ -60,8 +61,7 @@ static int32_t getToStringLength(const char *pData, int32_t length, int32_t type ...@@ -60,8 +61,7 @@ static int32_t getToStringLength(const char *pData, int32_t length, int32_t type
if (strncasecmp("nan", buf, 3) == 0) { if (strncasecmp("nan", buf, 3) == 0) {
len = 4; len = 4;
} }
} } break;
break;
case TSDB_DATA_TYPE_TIMESTAMP: case TSDB_DATA_TYPE_TIMESTAMP:
case TSDB_DATA_TYPE_BIGINT: case TSDB_DATA_TYPE_BIGINT:
len = sprintf(buf, "%lld", *(int64_t *)pData); len = sprintf(buf, "%lld", *(int64_t *)pData);
...@@ -203,23 +203,21 @@ static int32_t tscSetValueToResObj(SSqlObj *pSql, int32_t rowLen) { ...@@ -203,23 +203,21 @@ static int32_t tscSetValueToResObj(SSqlObj *pSql, int32_t rowLen) {
case TSDB_DATA_TYPE_FLOAT: { case TSDB_DATA_TYPE_FLOAT: {
#ifdef _TD_ARM_32_ #ifdef _TD_ARM_32_
float fv = 0; float fv = 0;
*(int32_t*)(&fv) = *(int32_t*)pTagValue; *(int32_t *)(&fv) = *(int32_t *)pTagValue;
sprintf(target, "%f", fv); sprintf(target, "%f", fv);
#else #else
sprintf(target, "%f", *(float *)pTagValue); sprintf(target, "%f", *(float *)pTagValue);
#endif #endif
} } break;
break;
case TSDB_DATA_TYPE_DOUBLE: { case TSDB_DATA_TYPE_DOUBLE: {
#ifdef _TD_ARM_32_ #ifdef _TD_ARM_32_
double dv = 0; double dv = 0;
*(int64_t*)(&dv) = *(int64_t*)pTagValue; *(int64_t *)(&dv) = *(int64_t *)pTagValue;
sprintf(target, "%lf", dv); sprintf(target, "%lf", dv);
#else #else
sprintf(target, "%lf", *(double *)pTagValue); sprintf(target, "%lf", *(double *)pTagValue);
#endif #endif
} } break;
break;
case TSDB_DATA_TYPE_TINYINT: case TSDB_DATA_TYPE_TINYINT:
sprintf(target, "%d", *(int8_t *)pTagValue); sprintf(target, "%d", *(int8_t *)pTagValue);
break; break;
...@@ -391,6 +389,68 @@ static int tscProcessQueryTags(SSqlObj *pSql) { ...@@ -391,6 +389,68 @@ static int tscProcessQueryTags(SSqlObj *pSql) {
} }
} }
static void tscProcessCurrentUser(SSqlObj *pSql) {
SSqlExpr* pExpr = tscSqlExprGet(&pSql->cmd, 0);
tscSetLocalQueryResult(pSql, pSql->pTscObj->user, pExpr->aliasName, TSDB_USER_LEN);
}
static void tscProcessCurrentDB(SSqlObj *pSql) {
char db[TSDB_DB_NAME_LEN + 1] = {0};
extractDBName(pSql->pTscObj->db, db);
// no use db is invoked before.
if (strlen(db) == 0) {
setNull(db, TSDB_DATA_TYPE_BINARY, TSDB_DB_NAME_LEN);
}
SSqlExpr* pExpr = tscSqlExprGet(&pSql->cmd, 0);
tscSetLocalQueryResult(pSql, db, pExpr->aliasName, TSDB_DB_NAME_LEN);
}
static void tscProcessServerVer(SSqlObj *pSql) {
const char* v = pSql->pTscObj->sversion;
SSqlExpr* pExpr = tscSqlExprGet(&pSql->cmd, 0);
tscSetLocalQueryResult(pSql, v, pExpr->aliasName, tListLen(pSql->pTscObj->sversion));
}
static void tscProcessClientVer(SSqlObj *pSql) {
SSqlExpr* pExpr = tscSqlExprGet(&pSql->cmd, 0);
tscSetLocalQueryResult(pSql, version, pExpr->aliasName, strlen(version));
}
static void tscProcessServStatus(SSqlObj *pSql) {
STscObj* pObj = pSql->pTscObj;
if (pObj->pHb != NULL) {
if (pObj->pHb->res.code == TSDB_CODE_NETWORK_UNAVAIL) {
pSql->res.code = TSDB_CODE_NETWORK_UNAVAIL;
return;
}
} else {
if (pSql->res.code == TSDB_CODE_NETWORK_UNAVAIL) {
return;
}
}
SSqlExpr* pExpr = tscSqlExprGet(&pSql->cmd, 0);
tscSetLocalQueryResult(pSql, "1", pExpr->aliasName, 2);
}
void tscSetLocalQueryResult(SSqlObj *pSql, const char *val, const char *columnName, size_t valueLength) {
SSqlCmd *pCmd = &pSql->cmd;
SSqlRes *pRes = &pSql->res;
pCmd->numOfCols = 1;
pCmd->order.order = TSQL_SO_ASC;
tscFieldInfoSetValue(&pCmd->fieldsInfo, 0, TSDB_DATA_TYPE_BINARY, columnName, valueLength);
tscInitResObjForLocalQuery(pSql, 1, valueLength);
TAOS_FIELD *pField = tscFieldInfoGetField(pCmd, 0);
strncpy(pRes->data, val, pField->bytes);
}
int tscProcessLocalCmd(SSqlObj *pSql) { int tscProcessLocalCmd(SSqlObj *pSql) {
SSqlCmd *pCmd = &pSql->cmd; SSqlCmd *pCmd = &pSql->cmd;
...@@ -402,13 +462,23 @@ int tscProcessLocalCmd(SSqlObj *pSql) { ...@@ -402,13 +462,23 @@ int tscProcessLocalCmd(SSqlObj *pSql) {
pSql->res.code = (uint8_t)tscProcessQueryTags(pSql); pSql->res.code = (uint8_t)tscProcessQueryTags(pSql);
} else if (pCmd->command == TSDB_SQL_RETRIEVE_EMPTY_RESULT) { } else if (pCmd->command == TSDB_SQL_RETRIEVE_EMPTY_RESULT) {
/* /*
* pass the qhandle check, in order to call partial release function to * set the qhandle to be 1 in order to pass the qhandle check, and to call partial release function to
* free allocated resources and remove the SqlObj from linked list * free allocated resources and remove the SqlObj from sql query linked list
*/ */
pSql->res.qhandle = 0x1; // pass the qhandle check pSql->res.qhandle = 0x1;
pSql->res.numOfRows = 0; pSql->res.numOfRows = 0;
} else if (pCmd->command == TSDB_SQL_RESET_CACHE) { } else if (pCmd->command == TSDB_SQL_RESET_CACHE) {
taosClearDataCache(tscCacheHandle); taosClearDataCache(tscCacheHandle);
} else if (pCmd->command == TSDB_SQL_SERV_VERSION) {
tscProcessServerVer(pSql);
} else if (pCmd->command == TSDB_SQL_CLI_VERSION) {
tscProcessClientVer(pSql);
} else if (pCmd->command == TSDB_SQL_CURRENT_USER) {
tscProcessCurrentUser(pSql);
} else if (pCmd->command == TSDB_SQL_CURRENT_DB) {
tscProcessCurrentDB(pSql);
} else if (pCmd->command == TSDB_SQL_SERV_STATUS) {
tscProcessServStatus(pSql);
} else { } else {
pSql->res.code = TSDB_CODE_INVALID_SQL; pSql->res.code = TSDB_CODE_INVALID_SQL;
tscError("%p not support command:%d", pSql, pCmd->command); tscError("%p not support command:%d", pSql, pCmd->command);
......
...@@ -117,7 +117,8 @@ static int32_t optrToString(tSQLExpr* pExpr, char** exprString); ...@@ -117,7 +117,8 @@ static int32_t optrToString(tSQLExpr* pExpr, char** exprString);
static SColumnList getColumnList(int32_t num, int16_t tableIndex, int32_t columnIndex); static SColumnList getColumnList(int32_t num, int16_t tableIndex, int32_t columnIndex);
static int32_t getMeterIndex(SSQLToken* pTableToken, SSqlCmd* pCmd, SColumnIndex* pIndex); static int32_t getMeterIndex(SSQLToken* pTableToken, SSqlCmd* pCmd, SColumnIndex* pIndex);
static int32_t doFunctionsCompatibleCheck(SSqlObj* pSql); static int32_t doFunctionsCompatibleCheck(SSqlObj* pSql);
static int32_t doLocalQueryProcess(SQuerySQL* pQuerySql, SSqlCmd* pCmd);
static int32_t tscQueryOnlyMetricTags(SSqlCmd* pCmd, bool* queryOnMetricTags) { static int32_t tscQueryOnlyMetricTags(SSqlCmd* pCmd, bool* queryOnMetricTags) {
assert(QUERY_IS_STABLE_QUERY(pCmd->type)); assert(QUERY_IS_STABLE_QUERY(pCmd->type));
...@@ -877,7 +878,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -877,7 +878,7 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
case TSQL_QUERY_METER: { case TSQL_QUERY_METER: {
SQuerySQL* pQuerySql = pInfo->pQueryInfo; SQuerySQL* pQuerySql = pInfo->pQueryInfo;
assert(pQuerySql != NULL && pQuerySql->from->nExpr > 0); assert(pQuerySql != NULL && (pQuerySql->from == NULL || pQuerySql->from->nExpr > 0));
const char* msg0 = "invalid table name"; const char* msg0 = "invalid table name";
const char* msg1 = "table name too long"; const char* msg1 = "table name too long";
...@@ -895,6 +896,19 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) { ...@@ -895,6 +896,19 @@ int32_t tscToSQLCmd(SSqlObj* pSql, struct SSqlInfo* pInfo) {
setErrMsg(pCmd, msg8); setErrMsg(pCmd, msg8);
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
/*
* handle the sql expression without from subclause
* select current_database();
* select server_version();
* select client_version();
* select server_state();
*/
if (pQuerySql->from == NULL) {
assert(pQuerySql->fillType == NULL && pQuerySql->pGroupby == NULL && pQuerySql->pWhere == NULL &&
pQuerySql->pSortOrder == NULL);
return doLocalQueryProcess(pQuerySql, pCmd);
}
if (pQuerySql->from->nExpr > TSDB_MAX_JOIN_TABLE_NUM) { if (pQuerySql->from->nExpr > TSDB_MAX_JOIN_TABLE_NUM) {
setErrMsg(pCmd, msg7); setErrMsg(pCmd, msg7);
...@@ -1120,7 +1134,7 @@ int32_t parseIntervalClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) { ...@@ -1120,7 +1134,7 @@ int32_t parseIntervalClause(SSqlCmd* pCmd, SQuerySQL* pQuerySql) {
SMeterMetaInfo* pMeterMetaInfo = tscGetMeterMetaInfo(pCmd, 0); SMeterMetaInfo* pMeterMetaInfo = tscGetMeterMetaInfo(pCmd, 0);
if (pQuerySql->interval.type == 0) { if (pQuerySql->interval.type == 0 || pQuerySql->interval.n == 0) {
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
...@@ -4971,8 +4985,8 @@ int32_t validateFunctionsInIntervalOrGroupbyQuery(SSqlCmd* pCmd) { ...@@ -4971,8 +4985,8 @@ int32_t validateFunctionsInIntervalOrGroupbyQuery(SSqlCmd* pCmd) {
} }
typedef struct SDNodeDynConfOption { typedef struct SDNodeDynConfOption {
char* name; char* name; // command name
int32_t len; int32_t len; // name string length
} SDNodeDynConfOption; } SDNodeDynConfOption;
int32_t validateDNodeConfig(tDCLSQL* pOptions) { int32_t validateDNodeConfig(tDCLSQL* pOptions) {
...@@ -4980,7 +4994,7 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) { ...@@ -4980,7 +4994,7 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) {
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
SDNodeDynConfOption DNODE_DYNAMIC_CFG_OPTIONS[14] = { const SDNodeDynConfOption DNODE_DYNAMIC_CFG_OPTIONS[14] = {
{"resetLog", 8}, {"resetQueryCache", 15}, {"dDebugFlag", 10}, {"rpcDebugFlag", 12}, {"resetLog", 8}, {"resetQueryCache", 15}, {"dDebugFlag", 10}, {"rpcDebugFlag", 12},
{"tmrDebugFlag", 12}, {"cDebugFlag", 10}, {"uDebugFlag", 10}, {"mDebugFlag", 10}, {"tmrDebugFlag", 12}, {"cDebugFlag", 10}, {"uDebugFlag", 10}, {"mDebugFlag", 10},
{"sdbDebugFlag", 12}, {"httpDebugFlag", 13}, {"monitorDebugFlag", 16}, {"qDebugflag", 10}, {"sdbDebugFlag", 12}, {"httpDebugFlag", 13}, {"monitorDebugFlag", 16}, {"qDebugflag", 10},
...@@ -4991,7 +5005,7 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) { ...@@ -4991,7 +5005,7 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) {
if (pOptions->nTokens == 2) { if (pOptions->nTokens == 2) {
// reset log and reset query cache does not need value // reset log and reset query cache does not need value
for (int32_t i = 0; i < 2; ++i) { for (int32_t i = 0; i < 2; ++i) {
SDNodeDynConfOption* pOption = &DNODE_DYNAMIC_CFG_OPTIONS[i]; const SDNodeDynConfOption* pOption = &DNODE_DYNAMIC_CFG_OPTIONS[i];
if ((strncasecmp(pOption->name, pOptionToken->z, pOptionToken->n) == 0) && (pOption->len == pOptionToken->n)) { if ((strncasecmp(pOption->name, pOptionToken->z, pOptionToken->n) == 0) && (pOption->len == pOptionToken->n)) {
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
...@@ -5014,7 +5028,7 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) { ...@@ -5014,7 +5028,7 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) {
} }
for (int32_t i = 2; i < tListLen(DNODE_DYNAMIC_CFG_OPTIONS) - 1; ++i) { for (int32_t i = 2; i < tListLen(DNODE_DYNAMIC_CFG_OPTIONS) - 1; ++i) {
SDNodeDynConfOption* pOption = &DNODE_DYNAMIC_CFG_OPTIONS[i]; const SDNodeDynConfOption* pOption = &DNODE_DYNAMIC_CFG_OPTIONS[i];
if ((strncasecmp(pOption->name, pOptionToken->z, pOptionToken->n) == 0) && (pOption->len == pOptionToken->n)) { if ((strncasecmp(pOption->name, pOptionToken->z, pOptionToken->n) == 0) && (pOption->len == pOptionToken->n)) {
/* options is valid */ /* options is valid */
...@@ -5031,8 +5045,10 @@ int32_t validateLocalConfig(tDCLSQL* pOptions) { ...@@ -5031,8 +5045,10 @@ int32_t validateLocalConfig(tDCLSQL* pOptions) {
return TSDB_CODE_INVALID_SQL; return TSDB_CODE_INVALID_SQL;
} }
SDNodeDynConfOption LOCAL_DYNAMIC_CFG_OPTIONS[6] = {{"resetLog", 8}, {"rpcDebugFlag", 12}, {"tmrDebugFlag", 12}, SDNodeDynConfOption LOCAL_DYNAMIC_CFG_OPTIONS[6] = {
{"cDebugFlag", 10}, {"uDebugFlag", 10}, {"debugFlag", 9}}; {"resetLog", 8}, {"rpcDebugFlag", 12}, {"tmrDebugFlag", 12},
{"cDebugFlag", 10}, {"uDebugFlag", 10}, {"debugFlag", 9}
};
SSQLToken* pOptionToken = &pOptions->a[0]; SSQLToken* pOptionToken = &pOptions->a[0];
...@@ -5686,3 +5702,53 @@ int32_t doFunctionsCompatibleCheck(SSqlObj* pSql) { ...@@ -5686,3 +5702,53 @@ int32_t doFunctionsCompatibleCheck(SSqlObj* pSql) {
return checkUpdateTagPrjFunctions(pCmd); return checkUpdateTagPrjFunctions(pCmd);
} }
} }
int32_t doLocalQueryProcess(SQuerySQL* pQuerySql, SSqlCmd* pCmd) {
const char* msg1 = "only one expression allowed";
const char* msg2 = "invalid expression in select clause";
const char* msg3 = "invalid function";
tSQLExprList* pExprList = pQuerySql->pSelection;
if (pExprList->nExpr != 1) {
setErrMsg(pCmd, msg1);
return TSDB_CODE_INVALID_SQL;
}
tSQLExpr* pExpr = pExprList->a[0].pNode;
if (pExpr->operand.z == NULL) {
setErrMsg(pCmd, msg2);
return TSDB_CODE_INVALID_SQL;
}
SDNodeDynConfOption functionsInfo[5] = {
{"database()", 10}, {"server_version()", 16}, {"server_status()", 15}, {"client_version()", 16}, {"current_user()", 14}
};
int32_t index = -1;
for(int32_t i = 0; i < tListLen(functionsInfo); ++i) {
if (strncasecmp(functionsInfo[i].name, pExpr->operand.z, functionsInfo[i].len) == 0 &&
functionsInfo[i].len == pExpr->operand.n) {
index = i;
break;
}
}
SSqlExpr* pExpr1 = tscSqlExprInsertEmpty(pCmd, 0, TSDB_FUNC_TAG_DUMMY);
if (pExprList->a[0].aliasName != NULL) {
strncpy(pExpr1->aliasName, pExprList->a[0].aliasName, tListLen(pExpr1->aliasName));
} else {
strncpy(pExpr1->aliasName, functionsInfo[index].name, tListLen(pExpr1->aliasName));
}
switch(index) {
case 0: pCmd->command = TSDB_SQL_CURRENT_DB;return TSDB_CODE_SUCCESS;
case 1: pCmd->command = TSDB_SQL_SERV_VERSION;return TSDB_CODE_SUCCESS;
case 2: pCmd->command = TSDB_SQL_SERV_STATUS;return TSDB_CODE_SUCCESS;
case 3: pCmd->command = TSDB_SQL_CLI_VERSION;return TSDB_CODE_SUCCESS;
case 4: pCmd->command = TSDB_SQL_CURRENT_USER;return TSDB_CODE_SUCCESS;
default: {
setErrMsg(pCmd, msg3);
return TSDB_CODE_INVALID_SQL;
}
}
}
...@@ -500,7 +500,7 @@ void tSQLSetColumnType(TAOS_FIELD *pField, SSQLToken *type) { ...@@ -500,7 +500,7 @@ void tSQLSetColumnType(TAOS_FIELD *pField, SSQLToken *type) {
SQuerySQL *tSetQuerySQLElems(SSQLToken *pSelectToken, tSQLExprList *pSelection, tVariantList *pFrom, tSQLExpr *pWhere, SQuerySQL *tSetQuerySQLElems(SSQLToken *pSelectToken, tSQLExprList *pSelection, tVariantList *pFrom, tSQLExpr *pWhere,
tVariantList *pGroupby, tVariantList *pSortOrder, SSQLToken *pInterval, tVariantList *pGroupby, tVariantList *pSortOrder, SSQLToken *pInterval,
SSQLToken *pSliding, tVariantList *pFill, SLimitVal *pLimit, SLimitVal *pGLimit) { SSQLToken *pSliding, tVariantList *pFill, SLimitVal *pLimit, SLimitVal *pGLimit) {
assert(pSelection != NULL && pFrom != NULL && pInterval != NULL && pLimit != NULL && pGLimit != NULL); assert(pSelection != NULL);
SQuerySQL *pQuery = calloc(1, sizeof(SQuerySQL)); SQuerySQL *pQuery = calloc(1, sizeof(SQuerySQL));
pQuery->selectToken = *pSelectToken; pQuery->selectToken = *pSelectToken;
...@@ -512,13 +512,23 @@ SQuerySQL *tSetQuerySQLElems(SSQLToken *pSelectToken, tSQLExprList *pSelection, ...@@ -512,13 +512,23 @@ SQuerySQL *tSetQuerySQLElems(SSQLToken *pSelectToken, tSQLExprList *pSelection,
pQuery->pSortOrder = pSortOrder; pQuery->pSortOrder = pSortOrder;
pQuery->pWhere = pWhere; pQuery->pWhere = pWhere;
pQuery->limit = *pLimit; if (pLimit != NULL) {
pQuery->slimit = *pGLimit; pQuery->limit = *pLimit;
}
if (pGLimit != NULL) {
pQuery->slimit = *pGLimit;
}
pQuery->interval = *pInterval; if (pInterval != NULL) {
pQuery->sliding = *pSliding; pQuery->interval = *pInterval;
}
if (pSliding != NULL) {
pQuery->sliding = *pSliding;
}
pQuery->fillType = pFill; pQuery->fillType = pFill;
return pQuery; return pQuery;
} }
......
...@@ -3807,7 +3807,14 @@ void tscInitMsgs() { ...@@ -3807,7 +3807,14 @@ void tscInitMsgs() {
tscProcessMsgRsp[TSDB_SQL_SHOW] = tscProcessShowRsp; tscProcessMsgRsp[TSDB_SQL_SHOW] = tscProcessShowRsp;
tscProcessMsgRsp[TSDB_SQL_RETRIEVE] = tscProcessRetrieveRspFromVnode; // rsp handled by same function. tscProcessMsgRsp[TSDB_SQL_RETRIEVE] = tscProcessRetrieveRspFromVnode; // rsp handled by same function.
tscProcessMsgRsp[TSDB_SQL_DESCRIBE_TABLE] = tscProcessDescribeTableRsp; tscProcessMsgRsp[TSDB_SQL_DESCRIBE_TABLE] = tscProcessDescribeTableRsp;
tscProcessMsgRsp[TSDB_SQL_RETRIEVE_TAGS] = tscProcessTagRetrieveRsp; tscProcessMsgRsp[TSDB_SQL_RETRIEVE_TAGS] = tscProcessTagRetrieveRsp;
tscProcessMsgRsp[TSDB_SQL_CURRENT_DB] = tscProcessTagRetrieveRsp;
tscProcessMsgRsp[TSDB_SQL_CURRENT_USER] = tscProcessTagRetrieveRsp;
tscProcessMsgRsp[TSDB_SQL_SERV_VERSION] = tscProcessTagRetrieveRsp;
tscProcessMsgRsp[TSDB_SQL_CLI_VERSION] = tscProcessTagRetrieveRsp;
tscProcessMsgRsp[TSDB_SQL_SERV_STATUS] = tscProcessTagRetrieveRsp;
tscProcessMsgRsp[TSDB_SQL_RETRIEVE_EMPTY_RESULT] = tscProcessEmptyResultRsp; tscProcessMsgRsp[TSDB_SQL_RETRIEVE_EMPTY_RESULT] = tscProcessEmptyResultRsp;
tscProcessMsgRsp[TSDB_SQL_RETRIEVE_METRIC] = tscProcessRetrieveMetricRsp; tscProcessMsgRsp[TSDB_SQL_RETRIEVE_METRIC] = tscProcessRetrieveMetricRsp;
......
...@@ -720,7 +720,7 @@ static void evic(SFieldInfo* pFieldInfo, int32_t index) { ...@@ -720,7 +720,7 @@ static void evic(SFieldInfo* pFieldInfo, int32_t index) {
} }
} }
static void setValueImpl(TAOS_FIELD* pField, int8_t type, char* name, int16_t bytes) { static void setValueImpl(TAOS_FIELD* pField, int8_t type, const char* name, int16_t bytes) {
pField->type = type; pField->type = type;
strncpy(pField->name, name, TSDB_COL_NAME_LEN); strncpy(pField->name, name, TSDB_COL_NAME_LEN);
pField->bytes = bytes; pField->bytes = bytes;
...@@ -764,7 +764,7 @@ void tscFieldInfoUpdateVisible(SFieldInfo* pFieldInfo, int32_t index, bool visib ...@@ -764,7 +764,7 @@ void tscFieldInfoUpdateVisible(SFieldInfo* pFieldInfo, int32_t index, bool visib
} }
} }
void tscFieldInfoSetValue(SFieldInfo* pFieldInfo, int32_t index, int8_t type, char* name, int16_t bytes) { void tscFieldInfoSetValue(SFieldInfo* pFieldInfo, int32_t index, int8_t type, const char* name, int16_t bytes) {
ensureSpace(pFieldInfo, pFieldInfo->numOfOutputCols + 1); ensureSpace(pFieldInfo, pFieldInfo->numOfOutputCols + 1);
evic(pFieldInfo, index); evic(pFieldInfo, index);
...@@ -896,6 +896,19 @@ static void _exprEvic(SSqlExprInfo* pExprInfo, int32_t index) { ...@@ -896,6 +896,19 @@ static void _exprEvic(SSqlExprInfo* pExprInfo, int32_t index) {
} }
} }
SSqlExpr* tscSqlExprInsertEmpty(SSqlCmd* pCmd, int32_t index, int16_t functionId) {
SSqlExprInfo* pExprInfo = &pCmd->exprsInfo;
_exprCheckSpace(pExprInfo, pExprInfo->numOfExprs + 1);
_exprEvic(pExprInfo, index);
SSqlExpr* pExpr = &pExprInfo->pExprs[index];
pExpr->functionId = functionId;
pExprInfo->numOfExprs++;
return pExpr;
}
SSqlExpr* tscSqlExprInsert(SSqlCmd* pCmd, int32_t index, int16_t functionId, SColumnIndex* pColIndex, int16_t type, SSqlExpr* tscSqlExprInsert(SSqlCmd* pCmd, int32_t index, int16_t functionId, SColumnIndex* pColIndex, int16_t type,
int16_t size, int16_t interSize) { int16_t size, int16_t interSize) {
SMeterMetaInfo* pMeterMetaInfo = tscGetMeterMetaInfo(pCmd, pColIndex->tableIndex); SMeterMetaInfo* pMeterMetaInfo = tscGetMeterMetaInfo(pCmd, pColIndex->tableIndex);
......
...@@ -349,6 +349,14 @@ select(A) ::= SELECT(T) selcollist(W) from(X) where_opt(Y) interval_opt(K) fill_ ...@@ -349,6 +349,14 @@ select(A) ::= SELECT(T) selcollist(W) from(X) where_opt(Y) interval_opt(K) fill_
A = tSetQuerySQLElems(&T, W, X, Y, P, Z, &K, &S, F, &L, &G); A = tSetQuerySQLElems(&T, W, X, Y, P, Z, &K, &S, F, &L, &G);
} }
// Support for the SQL exprssion without from & where subclauses, e.g.,
// select current_database(),
// select server_version(), select client_version(),
// select server_state();
select(A) ::= SELECT(T) selcollist(W). {
A = tSetQuerySQLElems(&T, W, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
// selcollist is a list of expressions that are to become the return // selcollist is a list of expressions that are to become the return
// values of the SELECT statement. The "*" in statements like // values of the SELECT statement. The "*" in statements like
// "SELECT * FROM ..." is encoded as a special expression with an opcode of TK_ALL. // "SELECT * FROM ..." is encoded as a special expression with an opcode of TK_ALL.
...@@ -391,7 +399,7 @@ tmvar(A) ::= VARIABLE(X). {A = X;} ...@@ -391,7 +399,7 @@ tmvar(A) ::= VARIABLE(X). {A = X;}
%type interval_opt {SSQLToken} %type interval_opt {SSQLToken}
interval_opt(N) ::= INTERVAL LP tmvar(E) RP. {N = E; } interval_opt(N) ::= INTERVAL LP tmvar(E) RP. {N = E; }
interval_opt(N) ::= . {N.n = 0; } interval_opt(N) ::= . {N.n = 0; N.z = NULL; N.type = 0; }
%type fill_opt {tVariantList*} %type fill_opt {tVariantList*}
%destructor fill_opt {tVariantListDestroy($$);} %destructor fill_opt {tVariantListDestroy($$);}
...@@ -412,7 +420,7 @@ fill_opt(N) ::= FILL LP ID(Y) RP. { ...@@ -412,7 +420,7 @@ fill_opt(N) ::= FILL LP ID(Y) RP. {
%type sliding_opt {SSQLToken} %type sliding_opt {SSQLToken}
sliding_opt(K) ::= SLIDING LP tmvar(E) RP. {K = E; } sliding_opt(K) ::= SLIDING LP tmvar(E) RP. {K = E; }
sliding_opt(K) ::= . {K.n = 0; } sliding_opt(K) ::= . {K.n = 0; K.z = NULL; K.type = 0; }
%type orderby_opt {tVariantList*} %type orderby_opt {tVariantList*}
%destructor orderby_opt {tVariantListDestroy($$);} %destructor orderby_opt {tVariantListDestroy($$);}
......
...@@ -123,16 +123,16 @@ typedef union { ...@@ -123,16 +123,16 @@ typedef union {
#define ParseARG_STORE yypParser->pInfo = pInfo #define ParseARG_STORE yypParser->pInfo = pInfo
#define YYFALLBACK 1 #define YYFALLBACK 1
#define YYNSTATE 251 #define YYNSTATE 251
#define YYNRULE 213 #define YYNRULE 214
#define YYNTOKEN 195 #define YYNTOKEN 195
#define YY_MAX_SHIFT 250 #define YY_MAX_SHIFT 250
#define YY_MIN_SHIFTREDUCE 401 #define YY_MIN_SHIFTREDUCE 401
#define YY_MAX_SHIFTREDUCE 613 #define YY_MAX_SHIFTREDUCE 614
#define YY_ERROR_ACTION 614 #define YY_ERROR_ACTION 615
#define YY_ACCEPT_ACTION 615 #define YY_ACCEPT_ACTION 616
#define YY_NO_ACTION 616 #define YY_NO_ACTION 617
#define YY_MIN_REDUCE 617 #define YY_MIN_REDUCE 618
#define YY_MAX_REDUCE 829 #define YY_MAX_REDUCE 831
/************* End control #defines *******************************************/ /************* End control #defines *******************************************/
/* Define the yytestcase() macro to be a no-op if is not already defined /* Define the yytestcase() macro to be a no-op if is not already defined
...@@ -200,59 +200,59 @@ typedef union { ...@@ -200,59 +200,59 @@ typedef union {
*********** Begin parsing tables **********************************************/ *********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (530) #define YY_ACTTAB_COUNT (530)
static const YYACTIONTYPE yy_action[] = { static const YYACTIONTYPE yy_action[] = {
/* 0 */ 97, 439, 135, 101, 101, 156, 615, 250, 135, 440, /* 0 */ 97, 439, 135, 101, 101, 156, 616, 250, 135, 440,
/* 10 */ 135, 159, 812, 43, 45, 21, 37, 38, 811, 158, /* 10 */ 135, 159, 814, 43, 45, 21, 37, 38, 813, 158,
/* 20 */ 812, 31, 439, 726, 205, 41, 39, 42, 40, 10, /* 20 */ 814, 31, 439, 727, 205, 41, 39, 42, 40, 10,
/* 30 */ 440, 153, 249, 36, 35, 743, 725, 34, 33, 32, /* 30 */ 440, 153, 249, 36, 35, 745, 726, 34, 33, 32,
/* 40 */ 43, 45, 736, 37, 38, 166, 132, 167, 31, 723, /* 40 */ 43, 45, 737, 37, 38, 166, 132, 167, 31, 724,
/* 50 */ 193, 205, 41, 39, 42, 40, 202, 767, 59, 200, /* 50 */ 193, 205, 41, 39, 42, 40, 202, 769, 59, 200,
/* 60 */ 36, 35, 21, 726, 34, 33, 32, 43, 45, 134, /* 60 */ 36, 35, 21, 727, 34, 33, 32, 43, 45, 134,
/* 70 */ 37, 38, 74, 78, 244, 31, 85, 77, 205, 41, /* 70 */ 37, 38, 74, 78, 244, 31, 85, 77, 205, 41,
/* 80 */ 39, 42, 40, 80, 740, 220, 498, 36, 35, 439, /* 80 */ 39, 42, 40, 80, 742, 220, 498, 36, 35, 439,
/* 90 */ 21, 34, 33, 32, 168, 101, 723, 440, 101, 57, /* 90 */ 21, 34, 33, 32, 168, 101, 724, 440, 101, 57,
/* 100 */ 114, 115, 224, 726, 65, 68, 45, 7, 37, 38, /* 100 */ 114, 115, 224, 727, 65, 68, 45, 7, 37, 38,
/* 110 */ 62, 111, 241, 31, 230, 229, 205, 41, 39, 42, /* 110 */ 62, 111, 241, 31, 230, 229, 205, 41, 39, 42,
/* 120 */ 40, 232, 228, 564, 723, 36, 35, 21, 139, 34, /* 120 */ 40, 232, 228, 565, 724, 36, 35, 21, 139, 34,
/* 130 */ 33, 32, 21, 402, 403, 404, 405, 406, 407, 408, /* 130 */ 33, 32, 21, 402, 403, 404, 405, 406, 407, 408,
/* 140 */ 409, 410, 411, 412, 413, 808, 37, 38, 243, 766, /* 140 */ 409, 410, 411, 412, 413, 810, 37, 38, 243, 768,
/* 150 */ 724, 31, 60, 178, 205, 41, 39, 42, 40, 233, /* 150 */ 725, 31, 60, 178, 205, 41, 39, 42, 40, 233,
/* 160 */ 186, 723, 183, 36, 35, 807, 722, 34, 33, 32, /* 160 */ 186, 724, 183, 36, 35, 809, 723, 34, 33, 32,
/* 170 */ 653, 171, 806, 124, 17, 219, 242, 218, 217, 216, /* 170 */ 654, 171, 808, 124, 17, 219, 242, 218, 217, 216,
/* 180 */ 215, 214, 213, 212, 211, 708, 151, 697, 698, 699, /* 180 */ 215, 214, 213, 212, 211, 709, 151, 698, 699, 700,
/* 190 */ 700, 701, 702, 703, 704, 705, 706, 707, 163, 577, /* 190 */ 701, 702, 703, 704, 705, 706, 707, 708, 163, 578,
/* 200 */ 11, 133, 568, 133, 571, 76, 574, 662, 163, 577, /* 200 */ 11, 133, 569, 133, 572, 76, 575, 663, 163, 578,
/* 210 */ 124, 241, 568, 154, 571, 155, 574, 148, 34, 33, /* 210 */ 124, 241, 569, 154, 572, 155, 575, 148, 34, 33,
/* 220 */ 32, 248, 247, 422, 87, 86, 142, 243, 545, 546, /* 220 */ 32, 248, 247, 422, 87, 86, 142, 243, 546, 547,
/* 230 */ 160, 161, 147, 522, 204, 172, 18, 152, 227, 226, /* 230 */ 160, 161, 147, 523, 204, 172, 18, 152, 227, 226,
/* 240 */ 160, 161, 163, 577, 525, 711, 568, 710, 571, 140, /* 240 */ 160, 161, 163, 578, 526, 712, 569, 711, 572, 140,
/* 250 */ 574, 41, 39, 42, 40, 242, 141, 61, 27, 36, /* 250 */ 575, 41, 39, 42, 40, 242, 141, 61, 27, 36,
/* 260 */ 35, 73, 72, 34, 33, 32, 514, 654, 28, 511, /* 260 */ 35, 73, 72, 34, 33, 32, 514, 655, 28, 511,
/* 270 */ 124, 512, 143, 513, 160, 161, 192, 36, 35, 188, /* 270 */ 124, 512, 143, 513, 160, 161, 192, 36, 35, 188,
/* 280 */ 600, 34, 33, 32, 29, 570, 150, 573, 566, 128, /* 280 */ 601, 34, 33, 32, 29, 571, 150, 574, 567, 128,
/* 290 */ 126, 245, 44, 89, 88, 601, 536, 169, 170, 29, /* 290 */ 126, 245, 44, 89, 88, 602, 537, 169, 170, 29,
/* 300 */ 47, 576, 44, 162, 537, 594, 578, 144, 15, 14, /* 300 */ 47, 577, 44, 162, 538, 595, 579, 144, 15, 14,
/* 310 */ 14, 576, 569, 49, 572, 504, 575, 52, 503, 47, /* 310 */ 14, 577, 570, 49, 573, 504, 576, 52, 503, 47,
/* 320 */ 145, 209, 22, 146, 567, 22, 575, 518, 826, 519, /* 320 */ 145, 209, 22, 146, 568, 22, 576, 518, 828, 519,
/* 330 */ 50, 516, 53, 517, 84, 83, 44, 9, 8, 717, /* 330 */ 50, 516, 53, 517, 84, 83, 44, 9, 8, 718,
/* 340 */ 137, 2, 131, 138, 136, 576, 777, 742, 776, 164, /* 340 */ 137, 2, 131, 138, 136, 577, 779, 744, 778, 164,
/* 350 */ 773, 772, 165, 231, 98, 759, 758, 112, 113, 664, /* 350 */ 775, 774, 165, 231, 98, 761, 760, 112, 113, 665,
/* 360 */ 575, 110, 189, 210, 129, 515, 25, 223, 91, 225, /* 360 */ 576, 110, 189, 210, 129, 515, 25, 223, 91, 225,
/* 370 */ 825, 70, 824, 822, 116, 682, 26, 23, 130, 651, /* 370 */ 827, 70, 826, 824, 116, 683, 26, 23, 130, 652,
/* 380 */ 532, 79, 649, 54, 81, 647, 646, 173, 125, 644, /* 380 */ 533, 79, 650, 54, 81, 648, 647, 173, 125, 645,
/* 390 */ 643, 642, 640, 633, 127, 637, 191, 635, 737, 194, /* 390 */ 644, 643, 641, 634, 127, 638, 191, 636, 738, 194,
/* 400 */ 198, 95, 746, 747, 760, 51, 102, 46, 203, 103, /* 400 */ 198, 95, 748, 749, 762, 51, 102, 46, 203, 103,
/* 410 */ 201, 199, 197, 195, 30, 27, 222, 75, 234, 235, /* 410 */ 201, 199, 197, 195, 30, 27, 222, 75, 234, 235,
/* 420 */ 207, 55, 236, 240, 238, 237, 239, 63, 66, 149, /* 420 */ 207, 55, 236, 240, 238, 237, 239, 63, 66, 149,
/* 430 */ 246, 613, 175, 174, 176, 645, 612, 90, 639, 119, /* 430 */ 246, 614, 175, 174, 176, 646, 613, 90, 640, 119,
/* 440 */ 123, 177, 683, 117, 118, 120, 106, 104, 721, 122, /* 440 */ 123, 177, 684, 117, 118, 120, 106, 104, 722, 122,
/* 450 */ 92, 121, 108, 105, 107, 109, 1, 24, 180, 179, /* 450 */ 92, 121, 108, 105, 107, 109, 1, 24, 180, 179,
/* 460 */ 181, 182, 611, 184, 185, 604, 58, 12, 13, 99, /* 460 */ 181, 182, 612, 184, 185, 605, 58, 12, 13, 99,
/* 470 */ 190, 187, 96, 533, 157, 538, 196, 100, 19, 64, /* 470 */ 190, 187, 96, 534, 157, 539, 196, 100, 19, 64,
/* 480 */ 479, 579, 3, 20, 4, 16, 206, 6, 208, 478, /* 480 */ 479, 580, 3, 20, 4, 16, 206, 6, 208, 478,
/* 490 */ 477, 476, 475, 5, 474, 473, 472, 470, 47, 443, /* 490 */ 477, 476, 475, 5, 474, 473, 472, 470, 47, 443,
/* 500 */ 67, 445, 22, 221, 500, 48, 499, 497, 56, 464, /* 500 */ 67, 445, 22, 221, 500, 48, 499, 497, 56, 464,
/* 510 */ 462, 454, 460, 69, 456, 71, 458, 452, 450, 471, /* 510 */ 462, 454, 460, 69, 456, 71, 458, 452, 450, 471,
/* 520 */ 469, 82, 441, 425, 93, 415, 617, 616, 616, 94, /* 520 */ 469, 82, 441, 425, 93, 415, 618, 617, 617, 94,
}; };
static const YYCODETYPE yy_lookahead[] = { static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 199, 1, 247, 199, 199, 216, 196, 197, 247, 9, /* 0 */ 199, 1, 247, 199, 199, 216, 196, 197, 247, 9,
...@@ -380,32 +380,32 @@ static const short yy_reduce_ofst[] = { ...@@ -380,32 +380,32 @@ static const short yy_reduce_ofst[] = {
/* 130 */ 255, /* 130 */ 255,
}; };
static const YYACTIONTYPE yy_default[] = { static const YYACTIONTYPE yy_default[] = {
/* 0 */ 614, 663, 814, 814, 614, 614, 614, 614, 614, 614, /* 0 */ 615, 664, 816, 816, 615, 615, 615, 615, 615, 615,
/* 10 */ 744, 630, 614, 614, 814, 614, 614, 614, 614, 614, /* 10 */ 746, 631, 615, 615, 816, 615, 615, 615, 615, 615,
/* 20 */ 614, 614, 614, 665, 652, 665, 665, 739, 614, 614, /* 20 */ 615, 615, 615, 666, 653, 666, 666, 741, 615, 615,
/* 30 */ 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, /* 30 */ 615, 615, 615, 615, 615, 615, 615, 615, 615, 615,
/* 40 */ 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, /* 40 */ 615, 615, 615, 615, 615, 615, 615, 615, 615, 615,
/* 50 */ 614, 614, 614, 614, 614, 614, 614, 614, 614, 763, /* 50 */ 615, 615, 615, 615, 615, 615, 615, 615, 615, 765,
/* 60 */ 763, 614, 614, 614, 614, 614, 614, 614, 614, 614, /* 60 */ 765, 739, 615, 615, 615, 615, 615, 615, 615, 615,
/* 70 */ 614, 614, 614, 614, 614, 614, 614, 614, 614, 650, /* 70 */ 615, 615, 615, 615, 615, 615, 615, 615, 615, 651,
/* 80 */ 614, 648, 614, 614, 614, 614, 614, 614, 614, 614, /* 80 */ 615, 649, 615, 615, 615, 615, 615, 615, 615, 615,
/* 90 */ 614, 614, 614, 614, 614, 614, 632, 632, 632, 614, /* 90 */ 615, 615, 615, 615, 615, 615, 633, 633, 633, 615,
/* 100 */ 614, 632, 770, 774, 768, 756, 764, 755, 751, 750, /* 100 */ 615, 633, 772, 776, 770, 758, 766, 757, 753, 752,
/* 110 */ 778, 614, 632, 632, 660, 660, 632, 681, 679, 677, /* 110 */ 780, 615, 633, 633, 661, 661, 633, 682, 680, 678,
/* 120 */ 669, 675, 671, 673, 667, 632, 658, 632, 658, 696, /* 120 */ 670, 676, 672, 674, 668, 633, 659, 633, 659, 697,
/* 130 */ 709, 614, 818, 819, 779, 813, 769, 797, 796, 809, /* 130 */ 710, 615, 820, 821, 781, 815, 771, 799, 798, 811,
/* 140 */ 803, 802, 614, 801, 800, 799, 798, 614, 614, 614, /* 140 */ 805, 804, 615, 803, 802, 801, 800, 615, 615, 615,
/* 150 */ 614, 805, 804, 614, 614, 614, 614, 614, 614, 614, /* 150 */ 615, 807, 806, 615, 615, 615, 615, 615, 615, 615,
/* 160 */ 614, 614, 614, 781, 775, 771, 614, 614, 614, 614, /* 160 */ 615, 615, 615, 783, 777, 773, 615, 615, 615, 615,
/* 170 */ 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, /* 170 */ 615, 615, 615, 615, 615, 615, 615, 615, 615, 615,
/* 180 */ 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, /* 180 */ 615, 615, 615, 615, 615, 615, 615, 615, 615, 615,
/* 190 */ 614, 815, 614, 745, 614, 614, 614, 614, 614, 614, /* 190 */ 615, 817, 615, 747, 615, 615, 615, 615, 615, 615,
/* 200 */ 765, 614, 757, 614, 614, 614, 614, 614, 614, 718, /* 200 */ 767, 615, 759, 615, 615, 615, 615, 615, 615, 719,
/* 210 */ 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, /* 210 */ 615, 615, 615, 615, 615, 615, 615, 615, 615, 615,
/* 220 */ 684, 614, 614, 614, 614, 614, 614, 614, 823, 614, /* 220 */ 685, 615, 615, 615, 615, 615, 615, 615, 825, 615,
/* 230 */ 614, 614, 712, 821, 614, 614, 614, 614, 614, 614, /* 230 */ 615, 615, 713, 823, 615, 615, 615, 615, 615, 615,
/* 240 */ 614, 614, 614, 614, 614, 614, 614, 636, 634, 614, /* 240 */ 615, 615, 615, 615, 615, 615, 615, 637, 635, 615,
/* 250 */ 614, /* 250 */ 615,
}; };
/********** End of lemon-generated parsing tables *****************************/ /********** End of lemon-generated parsing tables *****************************/
...@@ -1094,98 +1094,99 @@ static const char *const yyRuleName[] = { ...@@ -1094,98 +1094,99 @@ static const char *const yyRuleName[] = {
/* 118 */ "tagitem ::= PLUS FLOAT", /* 118 */ "tagitem ::= PLUS FLOAT",
/* 119 */ "cmd ::= select", /* 119 */ "cmd ::= select",
/* 120 */ "select ::= SELECT selcollist from where_opt interval_opt fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt", /* 120 */ "select ::= SELECT selcollist from where_opt interval_opt fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt",
/* 121 */ "sclp ::= selcollist COMMA", /* 121 */ "select ::= SELECT selcollist",
/* 122 */ "sclp ::=", /* 122 */ "sclp ::= selcollist COMMA",
/* 123 */ "selcollist ::= sclp expr as", /* 123 */ "sclp ::=",
/* 124 */ "selcollist ::= sclp STAR", /* 124 */ "selcollist ::= sclp expr as",
/* 125 */ "as ::= AS ids", /* 125 */ "selcollist ::= sclp STAR",
/* 126 */ "as ::= ids", /* 126 */ "as ::= AS ids",
/* 127 */ "as ::=", /* 127 */ "as ::= ids",
/* 128 */ "from ::= FROM tablelist", /* 128 */ "as ::=",
/* 129 */ "tablelist ::= ids cpxName", /* 129 */ "from ::= FROM tablelist",
/* 130 */ "tablelist ::= tablelist COMMA ids cpxName", /* 130 */ "tablelist ::= ids cpxName",
/* 131 */ "tmvar ::= VARIABLE", /* 131 */ "tablelist ::= tablelist COMMA ids cpxName",
/* 132 */ "interval_opt ::= INTERVAL LP tmvar RP", /* 132 */ "tmvar ::= VARIABLE",
/* 133 */ "interval_opt ::=", /* 133 */ "interval_opt ::= INTERVAL LP tmvar RP",
/* 134 */ "fill_opt ::=", /* 134 */ "interval_opt ::=",
/* 135 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP", /* 135 */ "fill_opt ::=",
/* 136 */ "fill_opt ::= FILL LP ID RP", /* 136 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP",
/* 137 */ "sliding_opt ::= SLIDING LP tmvar RP", /* 137 */ "fill_opt ::= FILL LP ID RP",
/* 138 */ "sliding_opt ::=", /* 138 */ "sliding_opt ::= SLIDING LP tmvar RP",
/* 139 */ "orderby_opt ::=", /* 139 */ "sliding_opt ::=",
/* 140 */ "orderby_opt ::= ORDER BY sortlist", /* 140 */ "orderby_opt ::=",
/* 141 */ "sortlist ::= sortlist COMMA item sortorder", /* 141 */ "orderby_opt ::= ORDER BY sortlist",
/* 142 */ "sortlist ::= item sortorder", /* 142 */ "sortlist ::= sortlist COMMA item sortorder",
/* 143 */ "item ::= ids cpxName", /* 143 */ "sortlist ::= item sortorder",
/* 144 */ "sortorder ::= ASC", /* 144 */ "item ::= ids cpxName",
/* 145 */ "sortorder ::= DESC", /* 145 */ "sortorder ::= ASC",
/* 146 */ "sortorder ::=", /* 146 */ "sortorder ::= DESC",
/* 147 */ "groupby_opt ::=", /* 147 */ "sortorder ::=",
/* 148 */ "groupby_opt ::= GROUP BY grouplist", /* 148 */ "groupby_opt ::=",
/* 149 */ "grouplist ::= grouplist COMMA item", /* 149 */ "groupby_opt ::= GROUP BY grouplist",
/* 150 */ "grouplist ::= item", /* 150 */ "grouplist ::= grouplist COMMA item",
/* 151 */ "having_opt ::=", /* 151 */ "grouplist ::= item",
/* 152 */ "having_opt ::= HAVING expr", /* 152 */ "having_opt ::=",
/* 153 */ "limit_opt ::=", /* 153 */ "having_opt ::= HAVING expr",
/* 154 */ "limit_opt ::= LIMIT signed", /* 154 */ "limit_opt ::=",
/* 155 */ "limit_opt ::= LIMIT signed OFFSET signed", /* 155 */ "limit_opt ::= LIMIT signed",
/* 156 */ "limit_opt ::= LIMIT signed COMMA signed", /* 156 */ "limit_opt ::= LIMIT signed OFFSET signed",
/* 157 */ "slimit_opt ::=", /* 157 */ "limit_opt ::= LIMIT signed COMMA signed",
/* 158 */ "slimit_opt ::= SLIMIT signed", /* 158 */ "slimit_opt ::=",
/* 159 */ "slimit_opt ::= SLIMIT signed SOFFSET signed", /* 159 */ "slimit_opt ::= SLIMIT signed",
/* 160 */ "slimit_opt ::= SLIMIT signed COMMA signed", /* 160 */ "slimit_opt ::= SLIMIT signed SOFFSET signed",
/* 161 */ "where_opt ::=", /* 161 */ "slimit_opt ::= SLIMIT signed COMMA signed",
/* 162 */ "where_opt ::= WHERE expr", /* 162 */ "where_opt ::=",
/* 163 */ "expr ::= LP expr RP", /* 163 */ "where_opt ::= WHERE expr",
/* 164 */ "expr ::= ID", /* 164 */ "expr ::= LP expr RP",
/* 165 */ "expr ::= ID DOT ID", /* 165 */ "expr ::= ID",
/* 166 */ "expr ::= ID DOT STAR", /* 166 */ "expr ::= ID DOT ID",
/* 167 */ "expr ::= INTEGER", /* 167 */ "expr ::= ID DOT STAR",
/* 168 */ "expr ::= MINUS INTEGER", /* 168 */ "expr ::= INTEGER",
/* 169 */ "expr ::= PLUS INTEGER", /* 169 */ "expr ::= MINUS INTEGER",
/* 170 */ "expr ::= FLOAT", /* 170 */ "expr ::= PLUS INTEGER",
/* 171 */ "expr ::= MINUS FLOAT", /* 171 */ "expr ::= FLOAT",
/* 172 */ "expr ::= PLUS FLOAT", /* 172 */ "expr ::= MINUS FLOAT",
/* 173 */ "expr ::= STRING", /* 173 */ "expr ::= PLUS FLOAT",
/* 174 */ "expr ::= NOW", /* 174 */ "expr ::= STRING",
/* 175 */ "expr ::= VARIABLE", /* 175 */ "expr ::= NOW",
/* 176 */ "expr ::= BOOL", /* 176 */ "expr ::= VARIABLE",
/* 177 */ "expr ::= ID LP exprlist RP", /* 177 */ "expr ::= BOOL",
/* 178 */ "expr ::= ID LP STAR RP", /* 178 */ "expr ::= ID LP exprlist RP",
/* 179 */ "expr ::= expr AND expr", /* 179 */ "expr ::= ID LP STAR RP",
/* 180 */ "expr ::= expr OR expr", /* 180 */ "expr ::= expr AND expr",
/* 181 */ "expr ::= expr LT expr", /* 181 */ "expr ::= expr OR expr",
/* 182 */ "expr ::= expr GT expr", /* 182 */ "expr ::= expr LT expr",
/* 183 */ "expr ::= expr LE expr", /* 183 */ "expr ::= expr GT expr",
/* 184 */ "expr ::= expr GE expr", /* 184 */ "expr ::= expr LE expr",
/* 185 */ "expr ::= expr NE expr", /* 185 */ "expr ::= expr GE expr",
/* 186 */ "expr ::= expr EQ expr", /* 186 */ "expr ::= expr NE expr",
/* 187 */ "expr ::= expr PLUS expr", /* 187 */ "expr ::= expr EQ expr",
/* 188 */ "expr ::= expr MINUS expr", /* 188 */ "expr ::= expr PLUS expr",
/* 189 */ "expr ::= expr STAR expr", /* 189 */ "expr ::= expr MINUS expr",
/* 190 */ "expr ::= expr SLASH expr", /* 190 */ "expr ::= expr STAR expr",
/* 191 */ "expr ::= expr REM expr", /* 191 */ "expr ::= expr SLASH expr",
/* 192 */ "expr ::= expr LIKE expr", /* 192 */ "expr ::= expr REM expr",
/* 193 */ "expr ::= expr IN LP exprlist RP", /* 193 */ "expr ::= expr LIKE expr",
/* 194 */ "exprlist ::= exprlist COMMA expritem", /* 194 */ "expr ::= expr IN LP exprlist RP",
/* 195 */ "exprlist ::= expritem", /* 195 */ "exprlist ::= exprlist COMMA expritem",
/* 196 */ "expritem ::= expr", /* 196 */ "exprlist ::= expritem",
/* 197 */ "expritem ::=", /* 197 */ "expritem ::= expr",
/* 198 */ "cmd ::= INSERT INTO cpxName insert_value_list", /* 198 */ "expritem ::=",
/* 199 */ "insert_value_list ::= VALUES LP itemlist RP", /* 199 */ "cmd ::= INSERT INTO cpxName insert_value_list",
/* 200 */ "insert_value_list ::= insert_value_list VALUES LP itemlist RP", /* 200 */ "insert_value_list ::= VALUES LP itemlist RP",
/* 201 */ "itemlist ::= itemlist COMMA expr", /* 201 */ "insert_value_list ::= insert_value_list VALUES LP itemlist RP",
/* 202 */ "itemlist ::= expr", /* 202 */ "itemlist ::= itemlist COMMA expr",
/* 203 */ "cmd ::= RESET QUERY CACHE", /* 203 */ "itemlist ::= expr",
/* 204 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist", /* 204 */ "cmd ::= RESET QUERY CACHE",
/* 205 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids", /* 205 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist",
/* 206 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist", /* 206 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids",
/* 207 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids", /* 207 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist",
/* 208 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids", /* 208 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids",
/* 209 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem", /* 209 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids",
/* 210 */ "cmd ::= KILL CONNECTION IPTOKEN COLON INTEGER", /* 210 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem",
/* 211 */ "cmd ::= KILL STREAM IPTOKEN COLON INTEGER COLON INTEGER", /* 211 */ "cmd ::= KILL CONNECTION IPTOKEN COLON INTEGER",
/* 212 */ "cmd ::= KILL QUERY IPTOKEN COLON INTEGER COLON INTEGER", /* 212 */ "cmd ::= KILL STREAM IPTOKEN COLON INTEGER COLON INTEGER",
/* 213 */ "cmd ::= KILL QUERY IPTOKEN COLON INTEGER COLON INTEGER",
}; };
#endif /* NDEBUG */ #endif /* NDEBUG */
...@@ -1760,98 +1761,99 @@ static const struct { ...@@ -1760,98 +1761,99 @@ static const struct {
{ 234, -2 }, /* (118) tagitem ::= PLUS FLOAT */ { 234, -2 }, /* (118) tagitem ::= PLUS FLOAT */
{ 197, -1 }, /* (119) cmd ::= select */ { 197, -1 }, /* (119) cmd ::= select */
{ 232, -12 }, /* (120) select ::= SELECT selcollist from where_opt interval_opt fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */ { 232, -12 }, /* (120) select ::= SELECT selcollist from where_opt interval_opt fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */
{ 246, -2 }, /* (121) sclp ::= selcollist COMMA */ { 232, -2 }, /* (121) select ::= SELECT selcollist */
{ 246, 0 }, /* (122) sclp ::= */ { 246, -2 }, /* (122) sclp ::= selcollist COMMA */
{ 235, -3 }, /* (123) selcollist ::= sclp expr as */ { 246, 0 }, /* (123) sclp ::= */
{ 235, -2 }, /* (124) selcollist ::= sclp STAR */ { 235, -3 }, /* (124) selcollist ::= sclp expr as */
{ 248, -2 }, /* (125) as ::= AS ids */ { 235, -2 }, /* (125) selcollist ::= sclp STAR */
{ 248, -1 }, /* (126) as ::= ids */ { 248, -2 }, /* (126) as ::= AS ids */
{ 248, 0 }, /* (127) as ::= */ { 248, -1 }, /* (127) as ::= ids */
{ 236, -2 }, /* (128) from ::= FROM tablelist */ { 248, 0 }, /* (128) as ::= */
{ 249, -2 }, /* (129) tablelist ::= ids cpxName */ { 236, -2 }, /* (129) from ::= FROM tablelist */
{ 249, -4 }, /* (130) tablelist ::= tablelist COMMA ids cpxName */ { 249, -2 }, /* (130) tablelist ::= ids cpxName */
{ 250, -1 }, /* (131) tmvar ::= VARIABLE */ { 249, -4 }, /* (131) tablelist ::= tablelist COMMA ids cpxName */
{ 238, -4 }, /* (132) interval_opt ::= INTERVAL LP tmvar RP */ { 250, -1 }, /* (132) tmvar ::= VARIABLE */
{ 238, 0 }, /* (133) interval_opt ::= */ { 238, -4 }, /* (133) interval_opt ::= INTERVAL LP tmvar RP */
{ 239, 0 }, /* (134) fill_opt ::= */ { 238, 0 }, /* (134) interval_opt ::= */
{ 239, -6 }, /* (135) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ { 239, 0 }, /* (135) fill_opt ::= */
{ 239, -4 }, /* (136) fill_opt ::= FILL LP ID RP */ { 239, -6 }, /* (136) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{ 240, -4 }, /* (137) sliding_opt ::= SLIDING LP tmvar RP */ { 239, -4 }, /* (137) fill_opt ::= FILL LP ID RP */
{ 240, 0 }, /* (138) sliding_opt ::= */ { 240, -4 }, /* (138) sliding_opt ::= SLIDING LP tmvar RP */
{ 242, 0 }, /* (139) orderby_opt ::= */ { 240, 0 }, /* (139) sliding_opt ::= */
{ 242, -3 }, /* (140) orderby_opt ::= ORDER BY sortlist */ { 242, 0 }, /* (140) orderby_opt ::= */
{ 251, -4 }, /* (141) sortlist ::= sortlist COMMA item sortorder */ { 242, -3 }, /* (141) orderby_opt ::= ORDER BY sortlist */
{ 251, -2 }, /* (142) sortlist ::= item sortorder */ { 251, -4 }, /* (142) sortlist ::= sortlist COMMA item sortorder */
{ 253, -2 }, /* (143) item ::= ids cpxName */ { 251, -2 }, /* (143) sortlist ::= item sortorder */
{ 254, -1 }, /* (144) sortorder ::= ASC */ { 253, -2 }, /* (144) item ::= ids cpxName */
{ 254, -1 }, /* (145) sortorder ::= DESC */ { 254, -1 }, /* (145) sortorder ::= ASC */
{ 254, 0 }, /* (146) sortorder ::= */ { 254, -1 }, /* (146) sortorder ::= DESC */
{ 241, 0 }, /* (147) groupby_opt ::= */ { 254, 0 }, /* (147) sortorder ::= */
{ 241, -3 }, /* (148) groupby_opt ::= GROUP BY grouplist */ { 241, 0 }, /* (148) groupby_opt ::= */
{ 255, -3 }, /* (149) grouplist ::= grouplist COMMA item */ { 241, -3 }, /* (149) groupby_opt ::= GROUP BY grouplist */
{ 255, -1 }, /* (150) grouplist ::= item */ { 255, -3 }, /* (150) grouplist ::= grouplist COMMA item */
{ 243, 0 }, /* (151) having_opt ::= */ { 255, -1 }, /* (151) grouplist ::= item */
{ 243, -2 }, /* (152) having_opt ::= HAVING expr */ { 243, 0 }, /* (152) having_opt ::= */
{ 245, 0 }, /* (153) limit_opt ::= */ { 243, -2 }, /* (153) having_opt ::= HAVING expr */
{ 245, -2 }, /* (154) limit_opt ::= LIMIT signed */ { 245, 0 }, /* (154) limit_opt ::= */
{ 245, -4 }, /* (155) limit_opt ::= LIMIT signed OFFSET signed */ { 245, -2 }, /* (155) limit_opt ::= LIMIT signed */
{ 245, -4 }, /* (156) limit_opt ::= LIMIT signed COMMA signed */ { 245, -4 }, /* (156) limit_opt ::= LIMIT signed OFFSET signed */
{ 244, 0 }, /* (157) slimit_opt ::= */ { 245, -4 }, /* (157) limit_opt ::= LIMIT signed COMMA signed */
{ 244, -2 }, /* (158) slimit_opt ::= SLIMIT signed */ { 244, 0 }, /* (158) slimit_opt ::= */
{ 244, -4 }, /* (159) slimit_opt ::= SLIMIT signed SOFFSET signed */ { 244, -2 }, /* (159) slimit_opt ::= SLIMIT signed */
{ 244, -4 }, /* (160) slimit_opt ::= SLIMIT signed COMMA signed */ { 244, -4 }, /* (160) slimit_opt ::= SLIMIT signed SOFFSET signed */
{ 237, 0 }, /* (161) where_opt ::= */ { 244, -4 }, /* (161) slimit_opt ::= SLIMIT signed COMMA signed */
{ 237, -2 }, /* (162) where_opt ::= WHERE expr */ { 237, 0 }, /* (162) where_opt ::= */
{ 247, -3 }, /* (163) expr ::= LP expr RP */ { 237, -2 }, /* (163) where_opt ::= WHERE expr */
{ 247, -1 }, /* (164) expr ::= ID */ { 247, -3 }, /* (164) expr ::= LP expr RP */
{ 247, -3 }, /* (165) expr ::= ID DOT ID */ { 247, -1 }, /* (165) expr ::= ID */
{ 247, -3 }, /* (166) expr ::= ID DOT STAR */ { 247, -3 }, /* (166) expr ::= ID DOT ID */
{ 247, -1 }, /* (167) expr ::= INTEGER */ { 247, -3 }, /* (167) expr ::= ID DOT STAR */
{ 247, -2 }, /* (168) expr ::= MINUS INTEGER */ { 247, -1 }, /* (168) expr ::= INTEGER */
{ 247, -2 }, /* (169) expr ::= PLUS INTEGER */ { 247, -2 }, /* (169) expr ::= MINUS INTEGER */
{ 247, -1 }, /* (170) expr ::= FLOAT */ { 247, -2 }, /* (170) expr ::= PLUS INTEGER */
{ 247, -2 }, /* (171) expr ::= MINUS FLOAT */ { 247, -1 }, /* (171) expr ::= FLOAT */
{ 247, -2 }, /* (172) expr ::= PLUS FLOAT */ { 247, -2 }, /* (172) expr ::= MINUS FLOAT */
{ 247, -1 }, /* (173) expr ::= STRING */ { 247, -2 }, /* (173) expr ::= PLUS FLOAT */
{ 247, -1 }, /* (174) expr ::= NOW */ { 247, -1 }, /* (174) expr ::= STRING */
{ 247, -1 }, /* (175) expr ::= VARIABLE */ { 247, -1 }, /* (175) expr ::= NOW */
{ 247, -1 }, /* (176) expr ::= BOOL */ { 247, -1 }, /* (176) expr ::= VARIABLE */
{ 247, -4 }, /* (177) expr ::= ID LP exprlist RP */ { 247, -1 }, /* (177) expr ::= BOOL */
{ 247, -4 }, /* (178) expr ::= ID LP STAR RP */ { 247, -4 }, /* (178) expr ::= ID LP exprlist RP */
{ 247, -3 }, /* (179) expr ::= expr AND expr */ { 247, -4 }, /* (179) expr ::= ID LP STAR RP */
{ 247, -3 }, /* (180) expr ::= expr OR expr */ { 247, -3 }, /* (180) expr ::= expr AND expr */
{ 247, -3 }, /* (181) expr ::= expr LT expr */ { 247, -3 }, /* (181) expr ::= expr OR expr */
{ 247, -3 }, /* (182) expr ::= expr GT expr */ { 247, -3 }, /* (182) expr ::= expr LT expr */
{ 247, -3 }, /* (183) expr ::= expr LE expr */ { 247, -3 }, /* (183) expr ::= expr GT expr */
{ 247, -3 }, /* (184) expr ::= expr GE expr */ { 247, -3 }, /* (184) expr ::= expr LE expr */
{ 247, -3 }, /* (185) expr ::= expr NE expr */ { 247, -3 }, /* (185) expr ::= expr GE expr */
{ 247, -3 }, /* (186) expr ::= expr EQ expr */ { 247, -3 }, /* (186) expr ::= expr NE expr */
{ 247, -3 }, /* (187) expr ::= expr PLUS expr */ { 247, -3 }, /* (187) expr ::= expr EQ expr */
{ 247, -3 }, /* (188) expr ::= expr MINUS expr */ { 247, -3 }, /* (188) expr ::= expr PLUS expr */
{ 247, -3 }, /* (189) expr ::= expr STAR expr */ { 247, -3 }, /* (189) expr ::= expr MINUS expr */
{ 247, -3 }, /* (190) expr ::= expr SLASH expr */ { 247, -3 }, /* (190) expr ::= expr STAR expr */
{ 247, -3 }, /* (191) expr ::= expr REM expr */ { 247, -3 }, /* (191) expr ::= expr SLASH expr */
{ 247, -3 }, /* (192) expr ::= expr LIKE expr */ { 247, -3 }, /* (192) expr ::= expr REM expr */
{ 247, -5 }, /* (193) expr ::= expr IN LP exprlist RP */ { 247, -3 }, /* (193) expr ::= expr LIKE expr */
{ 256, -3 }, /* (194) exprlist ::= exprlist COMMA expritem */ { 247, -5 }, /* (194) expr ::= expr IN LP exprlist RP */
{ 256, -1 }, /* (195) exprlist ::= expritem */ { 256, -3 }, /* (195) exprlist ::= exprlist COMMA expritem */
{ 257, -1 }, /* (196) expritem ::= expr */ { 256, -1 }, /* (196) exprlist ::= expritem */
{ 257, 0 }, /* (197) expritem ::= */ { 257, -1 }, /* (197) expritem ::= expr */
{ 197, -4 }, /* (198) cmd ::= INSERT INTO cpxName insert_value_list */ { 257, 0 }, /* (198) expritem ::= */
{ 258, -4 }, /* (199) insert_value_list ::= VALUES LP itemlist RP */ { 197, -4 }, /* (199) cmd ::= INSERT INTO cpxName insert_value_list */
{ 258, -5 }, /* (200) insert_value_list ::= insert_value_list VALUES LP itemlist RP */ { 258, -4 }, /* (200) insert_value_list ::= VALUES LP itemlist RP */
{ 259, -3 }, /* (201) itemlist ::= itemlist COMMA expr */ { 258, -5 }, /* (201) insert_value_list ::= insert_value_list VALUES LP itemlist RP */
{ 259, -1 }, /* (202) itemlist ::= expr */ { 259, -3 }, /* (202) itemlist ::= itemlist COMMA expr */
{ 197, -3 }, /* (203) cmd ::= RESET QUERY CACHE */ { 259, -1 }, /* (203) itemlist ::= expr */
{ 197, -7 }, /* (204) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ { 197, -3 }, /* (204) cmd ::= RESET QUERY CACHE */
{ 197, -7 }, /* (205) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ { 197, -7 }, /* (205) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{ 197, -7 }, /* (206) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ { 197, -7 }, /* (206) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{ 197, -7 }, /* (207) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ { 197, -7 }, /* (207) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{ 197, -8 }, /* (208) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ { 197, -7 }, /* (208) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{ 197, -9 }, /* (209) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ { 197, -8 }, /* (209) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{ 197, -5 }, /* (210) cmd ::= KILL CONNECTION IPTOKEN COLON INTEGER */ { 197, -9 }, /* (210) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{ 197, -7 }, /* (211) cmd ::= KILL STREAM IPTOKEN COLON INTEGER COLON INTEGER */ { 197, -5 }, /* (211) cmd ::= KILL CONNECTION IPTOKEN COLON INTEGER */
{ 197, -7 }, /* (212) cmd ::= KILL QUERY IPTOKEN COLON INTEGER COLON INTEGER */ { 197, -7 }, /* (212) cmd ::= KILL STREAM IPTOKEN COLON INTEGER COLON INTEGER */
{ 197, -7 }, /* (213) cmd ::= KILL QUERY IPTOKEN COLON INTEGER COLON INTEGER */
}; };
static void yy_accept(yyParser*); /* Forward Declaration */ static void yy_accept(yyParser*); /* Forward Declaration */
...@@ -2101,8 +2103,6 @@ static void yy_reduce( ...@@ -2101,8 +2103,6 @@ static void yy_reduce(
case 60: /* users ::= */ yytestcase(yyruleno==60); case 60: /* users ::= */ yytestcase(yyruleno==60);
case 62: /* conns ::= */ yytestcase(yyruleno==62); case 62: /* conns ::= */ yytestcase(yyruleno==62);
case 64: /* state ::= */ yytestcase(yyruleno==64); case 64: /* state ::= */ yytestcase(yyruleno==64);
case 133: /* interval_opt ::= */ yytestcase(yyruleno==133);
case 138: /* sliding_opt ::= */ yytestcase(yyruleno==138);
{yymsp[1].minor.yy0.n = 0; } {yymsp[1].minor.yy0.n = 0; }
break; break;
case 49: /* pps ::= PPS INTEGER */ case 49: /* pps ::= PPS INTEGER */
...@@ -2307,59 +2307,69 @@ static void yy_reduce( ...@@ -2307,59 +2307,69 @@ static void yy_reduce(
} }
yymsp[-11].minor.yy24 = yylhsminor.yy24; yymsp[-11].minor.yy24 = yylhsminor.yy24;
break; break;
case 121: /* sclp ::= selcollist COMMA */ case 121: /* select ::= SELECT selcollist */
{
yylhsminor.yy24 = tSetQuerySQLElems(&yymsp[-1].minor.yy0, yymsp[0].minor.yy498, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}
yymsp[-1].minor.yy24 = yylhsminor.yy24;
break;
case 122: /* sclp ::= selcollist COMMA */
{yylhsminor.yy498 = yymsp[-1].minor.yy498;} {yylhsminor.yy498 = yymsp[-1].minor.yy498;}
yymsp[-1].minor.yy498 = yylhsminor.yy498; yymsp[-1].minor.yy498 = yylhsminor.yy498;
break; break;
case 122: /* sclp ::= */ case 123: /* sclp ::= */
{yymsp[1].minor.yy498 = 0;} {yymsp[1].minor.yy498 = 0;}
break; break;
case 123: /* selcollist ::= sclp expr as */ case 124: /* selcollist ::= sclp expr as */
{ {
yylhsminor.yy498 = tSQLExprListAppend(yymsp[-2].minor.yy498, yymsp[-1].minor.yy90, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0); yylhsminor.yy498 = tSQLExprListAppend(yymsp[-2].minor.yy498, yymsp[-1].minor.yy90, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
} }
yymsp[-2].minor.yy498 = yylhsminor.yy498; yymsp[-2].minor.yy498 = yylhsminor.yy498;
break; break;
case 124: /* selcollist ::= sclp STAR */ case 125: /* selcollist ::= sclp STAR */
{ {
tSQLExpr *pNode = tSQLExprIdValueCreate(NULL, TK_ALL); tSQLExpr *pNode = tSQLExprIdValueCreate(NULL, TK_ALL);
yylhsminor.yy498 = tSQLExprListAppend(yymsp[-1].minor.yy498, pNode, 0); yylhsminor.yy498 = tSQLExprListAppend(yymsp[-1].minor.yy498, pNode, 0);
} }
yymsp[-1].minor.yy498 = yylhsminor.yy498; yymsp[-1].minor.yy498 = yylhsminor.yy498;
break; break;
case 125: /* as ::= AS ids */ case 126: /* as ::= AS ids */
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; }
break; break;
case 126: /* as ::= ids */ case 127: /* as ::= ids */
{ yylhsminor.yy0 = yymsp[0].minor.yy0; } { yylhsminor.yy0 = yymsp[0].minor.yy0; }
yymsp[0].minor.yy0 = yylhsminor.yy0; yymsp[0].minor.yy0 = yylhsminor.yy0;
break; break;
case 127: /* as ::= */ case 128: /* as ::= */
{ yymsp[1].minor.yy0.n = 0; } { yymsp[1].minor.yy0.n = 0; }
break; break;
case 128: /* from ::= FROM tablelist */ case 129: /* from ::= FROM tablelist */
{yymsp[-1].minor.yy56 = yymsp[0].minor.yy56;} {yymsp[-1].minor.yy56 = yymsp[0].minor.yy56;}
break; break;
case 129: /* tablelist ::= ids cpxName */ case 130: /* tablelist ::= ids cpxName */
{ toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yylhsminor.yy56 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1);} { toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yylhsminor.yy56 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1);}
yymsp[-1].minor.yy56 = yylhsminor.yy56; yymsp[-1].minor.yy56 = yylhsminor.yy56;
break; break;
case 130: /* tablelist ::= tablelist COMMA ids cpxName */ case 131: /* tablelist ::= tablelist COMMA ids cpxName */
{ toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yylhsminor.yy56 = tVariantListAppendToken(yymsp[-3].minor.yy56, &yymsp[-1].minor.yy0, -1); } { toTSDBType(yymsp[-1].minor.yy0.type); yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yylhsminor.yy56 = tVariantListAppendToken(yymsp[-3].minor.yy56, &yymsp[-1].minor.yy0, -1); }
yymsp[-3].minor.yy56 = yylhsminor.yy56; yymsp[-3].minor.yy56 = yylhsminor.yy56;
break; break;
case 131: /* tmvar ::= VARIABLE */ case 132: /* tmvar ::= VARIABLE */
{yylhsminor.yy0 = yymsp[0].minor.yy0;} {yylhsminor.yy0 = yymsp[0].minor.yy0;}
yymsp[0].minor.yy0 = yylhsminor.yy0; yymsp[0].minor.yy0 = yylhsminor.yy0;
break; break;
case 132: /* interval_opt ::= INTERVAL LP tmvar RP */ case 133: /* interval_opt ::= INTERVAL LP tmvar RP */
case 137: /* sliding_opt ::= SLIDING LP tmvar RP */ yytestcase(yyruleno==137); case 138: /* sliding_opt ::= SLIDING LP tmvar RP */ yytestcase(yyruleno==138);
{yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } {yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; }
break; break;
case 134: /* fill_opt ::= */ case 134: /* interval_opt ::= */
case 139: /* sliding_opt ::= */ yytestcase(yyruleno==139);
{yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0; }
break;
case 135: /* fill_opt ::= */
{yymsp[1].minor.yy56 = 0; } {yymsp[1].minor.yy56 = 0; }
break; break;
case 135: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */ case 136: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
{ {
tVariant A = {0}; tVariant A = {0};
toTSDBType(yymsp[-3].minor.yy0.type); toTSDBType(yymsp[-3].minor.yy0.type);
...@@ -2369,33 +2379,33 @@ static void yy_reduce( ...@@ -2369,33 +2379,33 @@ static void yy_reduce(
yymsp[-5].minor.yy56 = yymsp[-1].minor.yy56; yymsp[-5].minor.yy56 = yymsp[-1].minor.yy56;
} }
break; break;
case 136: /* fill_opt ::= FILL LP ID RP */ case 137: /* fill_opt ::= FILL LP ID RP */
{ {
toTSDBType(yymsp[-1].minor.yy0.type); toTSDBType(yymsp[-1].minor.yy0.type);
yymsp[-3].minor.yy56 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1); yymsp[-3].minor.yy56 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1);
} }
break; break;
case 139: /* orderby_opt ::= */ case 140: /* orderby_opt ::= */
case 147: /* groupby_opt ::= */ yytestcase(yyruleno==147); case 148: /* groupby_opt ::= */ yytestcase(yyruleno==148);
{yymsp[1].minor.yy56 = 0;} {yymsp[1].minor.yy56 = 0;}
break; break;
case 140: /* orderby_opt ::= ORDER BY sortlist */ case 141: /* orderby_opt ::= ORDER BY sortlist */
case 148: /* groupby_opt ::= GROUP BY grouplist */ yytestcase(yyruleno==148); case 149: /* groupby_opt ::= GROUP BY grouplist */ yytestcase(yyruleno==149);
{yymsp[-2].minor.yy56 = yymsp[0].minor.yy56;} {yymsp[-2].minor.yy56 = yymsp[0].minor.yy56;}
break; break;
case 141: /* sortlist ::= sortlist COMMA item sortorder */ case 142: /* sortlist ::= sortlist COMMA item sortorder */
{ {
yylhsminor.yy56 = tVariantListAppend(yymsp[-3].minor.yy56, &yymsp[-1].minor.yy186, yymsp[0].minor.yy332); yylhsminor.yy56 = tVariantListAppend(yymsp[-3].minor.yy56, &yymsp[-1].minor.yy186, yymsp[0].minor.yy332);
} }
yymsp[-3].minor.yy56 = yylhsminor.yy56; yymsp[-3].minor.yy56 = yylhsminor.yy56;
break; break;
case 142: /* sortlist ::= item sortorder */ case 143: /* sortlist ::= item sortorder */
{ {
yylhsminor.yy56 = tVariantListAppend(NULL, &yymsp[-1].minor.yy186, yymsp[0].minor.yy332); yylhsminor.yy56 = tVariantListAppend(NULL, &yymsp[-1].minor.yy186, yymsp[0].minor.yy332);
} }
yymsp[-1].minor.yy56 = yylhsminor.yy56; yymsp[-1].minor.yy56 = yylhsminor.yy56;
break; break;
case 143: /* item ::= ids cpxName */ case 144: /* item ::= ids cpxName */
{ {
toTSDBType(yymsp[-1].minor.yy0.type); toTSDBType(yymsp[-1].minor.yy0.type);
yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
...@@ -2404,210 +2414,210 @@ static void yy_reduce( ...@@ -2404,210 +2414,210 @@ static void yy_reduce(
} }
yymsp[-1].minor.yy186 = yylhsminor.yy186; yymsp[-1].minor.yy186 = yylhsminor.yy186;
break; break;
case 144: /* sortorder ::= ASC */ case 145: /* sortorder ::= ASC */
{yymsp[0].minor.yy332 = TSQL_SO_ASC; } {yymsp[0].minor.yy332 = TSQL_SO_ASC; }
break; break;
case 145: /* sortorder ::= DESC */ case 146: /* sortorder ::= DESC */
{yymsp[0].minor.yy332 = TSQL_SO_DESC;} {yymsp[0].minor.yy332 = TSQL_SO_DESC;}
break; break;
case 146: /* sortorder ::= */ case 147: /* sortorder ::= */
{yymsp[1].minor.yy332 = TSQL_SO_ASC;} {yymsp[1].minor.yy332 = TSQL_SO_ASC;}
break; break;
case 149: /* grouplist ::= grouplist COMMA item */ case 150: /* grouplist ::= grouplist COMMA item */
{ {
yylhsminor.yy56 = tVariantListAppend(yymsp[-2].minor.yy56, &yymsp[0].minor.yy186, -1); yylhsminor.yy56 = tVariantListAppend(yymsp[-2].minor.yy56, &yymsp[0].minor.yy186, -1);
} }
yymsp[-2].minor.yy56 = yylhsminor.yy56; yymsp[-2].minor.yy56 = yylhsminor.yy56;
break; break;
case 150: /* grouplist ::= item */ case 151: /* grouplist ::= item */
{ {
yylhsminor.yy56 = tVariantListAppend(NULL, &yymsp[0].minor.yy186, -1); yylhsminor.yy56 = tVariantListAppend(NULL, &yymsp[0].minor.yy186, -1);
} }
yymsp[0].minor.yy56 = yylhsminor.yy56; yymsp[0].minor.yy56 = yylhsminor.yy56;
break; break;
case 151: /* having_opt ::= */ case 152: /* having_opt ::= */
case 161: /* where_opt ::= */ yytestcase(yyruleno==161); case 162: /* where_opt ::= */ yytestcase(yyruleno==162);
case 197: /* expritem ::= */ yytestcase(yyruleno==197); case 198: /* expritem ::= */ yytestcase(yyruleno==198);
{yymsp[1].minor.yy90 = 0;} {yymsp[1].minor.yy90 = 0;}
break; break;
case 152: /* having_opt ::= HAVING expr */ case 153: /* having_opt ::= HAVING expr */
case 162: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==162); case 163: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==163);
{yymsp[-1].minor.yy90 = yymsp[0].minor.yy90;} {yymsp[-1].minor.yy90 = yymsp[0].minor.yy90;}
break; break;
case 153: /* limit_opt ::= */ case 154: /* limit_opt ::= */
case 157: /* slimit_opt ::= */ yytestcase(yyruleno==157); case 158: /* slimit_opt ::= */ yytestcase(yyruleno==158);
{yymsp[1].minor.yy294.limit = -1; yymsp[1].minor.yy294.offset = 0;} {yymsp[1].minor.yy294.limit = -1; yymsp[1].minor.yy294.offset = 0;}
break; break;
case 154: /* limit_opt ::= LIMIT signed */ case 155: /* limit_opt ::= LIMIT signed */
case 158: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==158); case 159: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==159);
{yymsp[-1].minor.yy294.limit = yymsp[0].minor.yy389; yymsp[-1].minor.yy294.offset = 0;} {yymsp[-1].minor.yy294.limit = yymsp[0].minor.yy389; yymsp[-1].minor.yy294.offset = 0;}
break; break;
case 155: /* limit_opt ::= LIMIT signed OFFSET signed */ case 156: /* limit_opt ::= LIMIT signed OFFSET signed */
case 159: /* slimit_opt ::= SLIMIT signed SOFFSET signed */ yytestcase(yyruleno==159); case 160: /* slimit_opt ::= SLIMIT signed SOFFSET signed */ yytestcase(yyruleno==160);
{yymsp[-3].minor.yy294.limit = yymsp[-2].minor.yy389; yymsp[-3].minor.yy294.offset = yymsp[0].minor.yy389;} {yymsp[-3].minor.yy294.limit = yymsp[-2].minor.yy389; yymsp[-3].minor.yy294.offset = yymsp[0].minor.yy389;}
break; break;
case 156: /* limit_opt ::= LIMIT signed COMMA signed */ case 157: /* limit_opt ::= LIMIT signed COMMA signed */
case 160: /* slimit_opt ::= SLIMIT signed COMMA signed */ yytestcase(yyruleno==160); case 161: /* slimit_opt ::= SLIMIT signed COMMA signed */ yytestcase(yyruleno==161);
{yymsp[-3].minor.yy294.limit = yymsp[0].minor.yy389; yymsp[-3].minor.yy294.offset = yymsp[-2].minor.yy389;} {yymsp[-3].minor.yy294.limit = yymsp[0].minor.yy389; yymsp[-3].minor.yy294.offset = yymsp[-2].minor.yy389;}
break; break;
case 163: /* expr ::= LP expr RP */ case 164: /* expr ::= LP expr RP */
{yymsp[-2].minor.yy90 = yymsp[-1].minor.yy90; } {yymsp[-2].minor.yy90 = yymsp[-1].minor.yy90; }
break; break;
case 164: /* expr ::= ID */ case 165: /* expr ::= ID */
{yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_ID);} {yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_ID);}
yymsp[0].minor.yy90 = yylhsminor.yy90; yymsp[0].minor.yy90 = yylhsminor.yy90;
break; break;
case 165: /* expr ::= ID DOT ID */ case 166: /* expr ::= ID DOT ID */
{yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[-2].minor.yy0, TK_ID);} {yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[-2].minor.yy0, TK_ID);}
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 166: /* expr ::= ID DOT STAR */ case 167: /* expr ::= ID DOT STAR */
{yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[-2].minor.yy0, TK_ALL);} {yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[-2].minor.yy0, TK_ALL);}
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 167: /* expr ::= INTEGER */ case 168: /* expr ::= INTEGER */
{yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_INTEGER);} {yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_INTEGER);}
yymsp[0].minor.yy90 = yylhsminor.yy90; yymsp[0].minor.yy90 = yylhsminor.yy90;
break; break;
case 168: /* expr ::= MINUS INTEGER */ case 169: /* expr ::= MINUS INTEGER */
case 169: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==169); case 170: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==170);
{yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[-1].minor.yy0, TK_INTEGER);} {yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[-1].minor.yy0, TK_INTEGER);}
yymsp[-1].minor.yy90 = yylhsminor.yy90; yymsp[-1].minor.yy90 = yylhsminor.yy90;
break; break;
case 170: /* expr ::= FLOAT */ case 171: /* expr ::= FLOAT */
{yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_FLOAT);} {yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_FLOAT);}
yymsp[0].minor.yy90 = yylhsminor.yy90; yymsp[0].minor.yy90 = yylhsminor.yy90;
break; break;
case 171: /* expr ::= MINUS FLOAT */ case 172: /* expr ::= MINUS FLOAT */
case 172: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==172); case 173: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==173);
{yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[-1].minor.yy0, TK_FLOAT);} {yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[-1].minor.yy0, TK_FLOAT);}
yymsp[-1].minor.yy90 = yylhsminor.yy90; yymsp[-1].minor.yy90 = yylhsminor.yy90;
break; break;
case 173: /* expr ::= STRING */ case 174: /* expr ::= STRING */
{yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_STRING);} {yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_STRING);}
yymsp[0].minor.yy90 = yylhsminor.yy90; yymsp[0].minor.yy90 = yylhsminor.yy90;
break; break;
case 174: /* expr ::= NOW */ case 175: /* expr ::= NOW */
{yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_NOW); } {yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_NOW); }
yymsp[0].minor.yy90 = yylhsminor.yy90; yymsp[0].minor.yy90 = yylhsminor.yy90;
break; break;
case 175: /* expr ::= VARIABLE */ case 176: /* expr ::= VARIABLE */
{yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_VARIABLE);} {yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_VARIABLE);}
yymsp[0].minor.yy90 = yylhsminor.yy90; yymsp[0].minor.yy90 = yylhsminor.yy90;
break; break;
case 176: /* expr ::= BOOL */ case 177: /* expr ::= BOOL */
{yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_BOOL);} {yylhsminor.yy90 = tSQLExprIdValueCreate(&yymsp[0].minor.yy0, TK_BOOL);}
yymsp[0].minor.yy90 = yylhsminor.yy90; yymsp[0].minor.yy90 = yylhsminor.yy90;
break; break;
case 177: /* expr ::= ID LP exprlist RP */ case 178: /* expr ::= ID LP exprlist RP */
{ {
yylhsminor.yy90 = tSQLExprCreateFunction(yymsp[-1].minor.yy498, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); yylhsminor.yy90 = tSQLExprCreateFunction(yymsp[-1].minor.yy498, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type);
} }
yymsp[-3].minor.yy90 = yylhsminor.yy90; yymsp[-3].minor.yy90 = yylhsminor.yy90;
break; break;
case 178: /* expr ::= ID LP STAR RP */ case 179: /* expr ::= ID LP STAR RP */
{ {
yylhsminor.yy90 = tSQLExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); yylhsminor.yy90 = tSQLExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type);
} }
yymsp[-3].minor.yy90 = yylhsminor.yy90; yymsp[-3].minor.yy90 = yylhsminor.yy90;
break; break;
case 179: /* expr ::= expr AND expr */ case 180: /* expr ::= expr AND expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_AND);} {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_AND);}
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 180: /* expr ::= expr OR expr */ case 181: /* expr ::= expr OR expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_OR); } {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_OR); }
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 181: /* expr ::= expr LT expr */ case 182: /* expr ::= expr LT expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_LT);} {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_LT);}
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 182: /* expr ::= expr GT expr */ case 183: /* expr ::= expr GT expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_GT);} {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_GT);}
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 183: /* expr ::= expr LE expr */ case 184: /* expr ::= expr LE expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_LE);} {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_LE);}
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 184: /* expr ::= expr GE expr */ case 185: /* expr ::= expr GE expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_GE);} {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_GE);}
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 185: /* expr ::= expr NE expr */ case 186: /* expr ::= expr NE expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_NE);} {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_NE);}
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 186: /* expr ::= expr EQ expr */ case 187: /* expr ::= expr EQ expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_EQ);} {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_EQ);}
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 187: /* expr ::= expr PLUS expr */ case 188: /* expr ::= expr PLUS expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_PLUS); } {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_PLUS); }
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 188: /* expr ::= expr MINUS expr */ case 189: /* expr ::= expr MINUS expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_MINUS); } {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_MINUS); }
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 189: /* expr ::= expr STAR expr */ case 190: /* expr ::= expr STAR expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_STAR); } {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_STAR); }
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 190: /* expr ::= expr SLASH expr */ case 191: /* expr ::= expr SLASH expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_DIVIDE);} {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_DIVIDE);}
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 191: /* expr ::= expr REM expr */ case 192: /* expr ::= expr REM expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_REM); } {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_REM); }
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 192: /* expr ::= expr LIKE expr */ case 193: /* expr ::= expr LIKE expr */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_LIKE); } {yylhsminor.yy90 = tSQLExprCreate(yymsp[-2].minor.yy90, yymsp[0].minor.yy90, TK_LIKE); }
yymsp[-2].minor.yy90 = yylhsminor.yy90; yymsp[-2].minor.yy90 = yylhsminor.yy90;
break; break;
case 193: /* expr ::= expr IN LP exprlist RP */ case 194: /* expr ::= expr IN LP exprlist RP */
{yylhsminor.yy90 = tSQLExprCreate(yymsp[-4].minor.yy90, (tSQLExpr*)yymsp[-1].minor.yy498, TK_IN); } {yylhsminor.yy90 = tSQLExprCreate(yymsp[-4].minor.yy90, (tSQLExpr*)yymsp[-1].minor.yy498, TK_IN); }
yymsp[-4].minor.yy90 = yylhsminor.yy90; yymsp[-4].minor.yy90 = yylhsminor.yy90;
break; break;
case 194: /* exprlist ::= exprlist COMMA expritem */ case 195: /* exprlist ::= exprlist COMMA expritem */
case 201: /* itemlist ::= itemlist COMMA expr */ yytestcase(yyruleno==201); case 202: /* itemlist ::= itemlist COMMA expr */ yytestcase(yyruleno==202);
{yylhsminor.yy498 = tSQLExprListAppend(yymsp[-2].minor.yy498,yymsp[0].minor.yy90,0);} {yylhsminor.yy498 = tSQLExprListAppend(yymsp[-2].minor.yy498,yymsp[0].minor.yy90,0);}
yymsp[-2].minor.yy498 = yylhsminor.yy498; yymsp[-2].minor.yy498 = yylhsminor.yy498;
break; break;
case 195: /* exprlist ::= expritem */ case 196: /* exprlist ::= expritem */
case 202: /* itemlist ::= expr */ yytestcase(yyruleno==202); case 203: /* itemlist ::= expr */ yytestcase(yyruleno==203);
{yylhsminor.yy498 = tSQLExprListAppend(0,yymsp[0].minor.yy90,0);} {yylhsminor.yy498 = tSQLExprListAppend(0,yymsp[0].minor.yy90,0);}
yymsp[0].minor.yy498 = yylhsminor.yy498; yymsp[0].minor.yy498 = yylhsminor.yy498;
break; break;
case 196: /* expritem ::= expr */ case 197: /* expritem ::= expr */
{yylhsminor.yy90 = yymsp[0].minor.yy90;} {yylhsminor.yy90 = yymsp[0].minor.yy90;}
yymsp[0].minor.yy90 = yylhsminor.yy90; yymsp[0].minor.yy90 = yylhsminor.yy90;
break; break;
case 198: /* cmd ::= INSERT INTO cpxName insert_value_list */ case 199: /* cmd ::= INSERT INTO cpxName insert_value_list */
{ {
tSetInsertSQLElems(pInfo, &yymsp[-1].minor.yy0, yymsp[0].minor.yy74); tSetInsertSQLElems(pInfo, &yymsp[-1].minor.yy0, yymsp[0].minor.yy74);
} }
break; break;
case 199: /* insert_value_list ::= VALUES LP itemlist RP */ case 200: /* insert_value_list ::= VALUES LP itemlist RP */
{yymsp[-3].minor.yy74 = tSQLListListAppend(NULL, yymsp[-1].minor.yy498);} {yymsp[-3].minor.yy74 = tSQLListListAppend(NULL, yymsp[-1].minor.yy498);}
break; break;
case 200: /* insert_value_list ::= insert_value_list VALUES LP itemlist RP */ case 201: /* insert_value_list ::= insert_value_list VALUES LP itemlist RP */
{yylhsminor.yy74 = tSQLListListAppend(yymsp[-4].minor.yy74, yymsp[-1].minor.yy498);} {yylhsminor.yy74 = tSQLListListAppend(yymsp[-4].minor.yy74, yymsp[-1].minor.yy498);}
yymsp[-4].minor.yy74 = yylhsminor.yy74; yymsp[-4].minor.yy74 = yylhsminor.yy74;
break; break;
case 203: /* cmd ::= RESET QUERY CACHE */ case 204: /* cmd ::= RESET QUERY CACHE */
{ setDCLSQLElems(pInfo, RESET_QUERY_CACHE, 0);} { setDCLSQLElems(pInfo, RESET_QUERY_CACHE, 0);}
break; break;
case 204: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */ case 205: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableSQL* pAlterTable = tAlterTableSQLElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy471, NULL, ALTER_TABLE_ADD_COLUMN); SAlterTableSQL* pAlterTable = tAlterTableSQLElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy471, NULL, ALTER_TABLE_ADD_COLUMN);
setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_ADD_COLUMN); setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_ADD_COLUMN);
} }
break; break;
case 205: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */ case 206: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
...@@ -2618,14 +2628,14 @@ static void yy_reduce( ...@@ -2618,14 +2628,14 @@ static void yy_reduce(
setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_DROP_COLUMN); setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_DROP_COLUMN);
} }
break; break;
case 206: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */ case 207: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
SAlterTableSQL* pAlterTable = tAlterTableSQLElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy471, NULL, ALTER_TABLE_TAGS_ADD); SAlterTableSQL* pAlterTable = tAlterTableSQLElems(&yymsp[-4].minor.yy0, yymsp[0].minor.yy471, NULL, ALTER_TABLE_TAGS_ADD);
setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_TAGS_ADD); setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_TAGS_ADD);
} }
break; break;
case 207: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */ case 208: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
{ {
yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n; yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
...@@ -2636,7 +2646,7 @@ static void yy_reduce( ...@@ -2636,7 +2646,7 @@ static void yy_reduce(
setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_TAGS_DROP); setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_TAGS_DROP);
} }
break; break;
case 208: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */ case 209: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
{ {
yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n; yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
...@@ -2650,7 +2660,7 @@ static void yy_reduce( ...@@ -2650,7 +2660,7 @@ static void yy_reduce(
setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_TAGS_CHG); setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_TAGS_CHG);
} }
break; break;
case 209: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */ case 210: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
{ {
yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n; yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n;
...@@ -2662,13 +2672,13 @@ static void yy_reduce( ...@@ -2662,13 +2672,13 @@ static void yy_reduce(
setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_TAGS_SET); setSQLInfo(pInfo, pAlterTable, NULL, ALTER_TABLE_TAGS_SET);
} }
break; break;
case 210: /* cmd ::= KILL CONNECTION IPTOKEN COLON INTEGER */ case 211: /* cmd ::= KILL CONNECTION IPTOKEN COLON INTEGER */
{yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setDCLSQLElems(pInfo, KILL_CONNECTION, 1, &yymsp[-2].minor.yy0);} {yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setDCLSQLElems(pInfo, KILL_CONNECTION, 1, &yymsp[-2].minor.yy0);}
break; break;
case 211: /* cmd ::= KILL STREAM IPTOKEN COLON INTEGER COLON INTEGER */ case 212: /* cmd ::= KILL STREAM IPTOKEN COLON INTEGER COLON INTEGER */
{yymsp[-4].minor.yy0.n += (yymsp[-3].minor.yy0.n + yymsp[-2].minor.yy0.n + yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setDCLSQLElems(pInfo, KILL_STREAM, 1, &yymsp[-4].minor.yy0);} {yymsp[-4].minor.yy0.n += (yymsp[-3].minor.yy0.n + yymsp[-2].minor.yy0.n + yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setDCLSQLElems(pInfo, KILL_STREAM, 1, &yymsp[-4].minor.yy0);}
break; break;
case 212: /* cmd ::= KILL QUERY IPTOKEN COLON INTEGER COLON INTEGER */ case 213: /* cmd ::= KILL QUERY IPTOKEN COLON INTEGER COLON INTEGER */
{yymsp[-4].minor.yy0.n += (yymsp[-3].minor.yy0.n + yymsp[-2].minor.yy0.n + yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setDCLSQLElems(pInfo, KILL_QUERY, 1, &yymsp[-4].minor.yy0);} {yymsp[-4].minor.yy0.n += (yymsp[-3].minor.yy0.n + yymsp[-2].minor.yy0.n + yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setDCLSQLElems(pInfo, KILL_QUERY, 1, &yymsp[-4].minor.yy0);}
break; break;
default: default:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册