[td-3299]<enhance>: add logic plan support.
This commit is contained in:
parent
89a15326f0
commit
3e50aef50c
|
@ -84,8 +84,6 @@ int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int1
|
|||
int64_t useconds = 0;
|
||||
char * pTokenEnd = *next;
|
||||
|
||||
index = 0;
|
||||
|
||||
if (pToken->type == TK_NOW) {
|
||||
useconds = taosGetTimestamp(timePrec);
|
||||
} else if (strncmp(pToken->z, "0", 1) == 0 && pToken->n == 1) {
|
||||
|
@ -130,7 +128,8 @@ int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int1
|
|||
return tscInvalidOperationMsg(error, "value expected in timestamp", sToken.z);
|
||||
}
|
||||
|
||||
if (parseAbsoluteDuration(valueToken.z, valueToken.n, &interval, timePrec) != TSDB_CODE_SUCCESS) {
|
||||
char unit = 0;
|
||||
if (parseAbsoluteDuration(valueToken.z, valueToken.n, &interval, &unit, timePrec) != TSDB_CODE_SUCCESS) {
|
||||
return TSDB_CODE_TSC_INVALID_OPERATION;
|
||||
}
|
||||
|
||||
|
|
|
@ -1287,35 +1287,31 @@ int32_t parseSlidingClause(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SStrToken* pSl
|
|||
STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0);
|
||||
STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta);
|
||||
|
||||
SInterval* pInterval = &pQueryInfo->interval;
|
||||
if (pSliding->n == 0) {
|
||||
pQueryInfo->interval.slidingUnit = pQueryInfo->interval.intervalUnit;
|
||||
pQueryInfo->interval.sliding = pQueryInfo->interval.interval;
|
||||
pInterval->slidingUnit = pInterval->intervalUnit;
|
||||
pInterval->sliding = pInterval->interval;
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
if (pQueryInfo->interval.intervalUnit == 'n' || pQueryInfo->interval.intervalUnit == 'y') {
|
||||
if (pInterval->intervalUnit == 'n' || pInterval->intervalUnit == 'y') {
|
||||
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
|
||||
}
|
||||
|
||||
parseAbsoluteDuration(pSliding->z, pSliding->n, &pQueryInfo->interval.sliding, tinfo.precision);
|
||||
parseAbsoluteDuration(pSliding->z, pSliding->n, &pInterval->sliding, &pInterval->slidingUnit, tinfo.precision);
|
||||
|
||||
if (pQueryInfo->interval.sliding <
|
||||
convertTimePrecision(tsMinSlidingTime, TSDB_TIME_PRECISION_MILLI, tinfo.precision)) {
|
||||
if (pInterval->sliding < convertTimePrecision(tsMinSlidingTime, TSDB_TIME_PRECISION_MILLI, tinfo.precision)) {
|
||||
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg0);
|
||||
}
|
||||
|
||||
if (pQueryInfo->interval.sliding > pQueryInfo->interval.interval) {
|
||||
if (pInterval->sliding > pInterval->interval) {
|
||||
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1);
|
||||
}
|
||||
|
||||
if ((pQueryInfo->interval.interval != 0) && (pQueryInfo->interval.interval/pQueryInfo->interval.sliding > INTERVAL_SLIDING_FACTOR)) {
|
||||
if ((pInterval->interval != 0) && (pInterval->interval/pInterval->sliding > INTERVAL_SLIDING_FACTOR)) {
|
||||
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2);
|
||||
}
|
||||
|
||||
// if (pQueryInfo->interval.sliding != pQueryInfo->interval.interval && pSql->pStream == NULL) {
|
||||
// return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg4);
|
||||
// }
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -8752,13 +8748,13 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
|
|||
tfree(p);
|
||||
}
|
||||
|
||||
#if 0
|
||||
//#if 0
|
||||
SQueryNode* p = qCreateQueryPlan(pQueryInfo);
|
||||
char* s = queryPlanToString(p);
|
||||
printf("%s\n", s);
|
||||
tfree(s);
|
||||
|
||||
qDestroyQueryPlan(p);
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
return TSDB_CODE_SUCCESS; // Does not build query message here
|
||||
}
|
||||
|
|
|
@ -392,10 +392,8 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcEpSet *pEpSet) {
|
|||
|
||||
// single table query error need to be handled here.
|
||||
if ((cmd == TSDB_SQL_SELECT || cmd == TSDB_SQL_UPDATE_TAGS_VAL) &&
|
||||
(((rpcMsg->code == TSDB_CODE_TDB_INVALID_TABLE_ID ||
|
||||
rpcMsg->code == TSDB_CODE_VND_INVALID_VGROUP_ID)) ||
|
||||
rpcMsg->code == TSDB_CODE_RPC_NETWORK_UNAVAIL ||
|
||||
rpcMsg->code == TSDB_CODE_APP_NOT_READY)) {
|
||||
(((rpcMsg->code == TSDB_CODE_TDB_INVALID_TABLE_ID || rpcMsg->code == TSDB_CODE_VND_INVALID_VGROUP_ID)) ||
|
||||
rpcMsg->code == TSDB_CODE_RPC_NETWORK_UNAVAIL || rpcMsg->code == TSDB_CODE_APP_NOT_READY)) {
|
||||
|
||||
// 1. super table subquery
|
||||
// 2. nest queries are all not updated the tablemeta and retry parse the sql after cleanup local tablemeta/vgroup id buffer
|
||||
|
|
|
@ -1635,6 +1635,8 @@ void tscFetchDatablockForSubquery(SSqlObj* pSql) {
|
|||
continue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
SSqlRes* pRes1 = &pSql1->res;
|
||||
if (pRes1->row >= pRes1->numOfRows) {
|
||||
subquerySetState(pSql1, &pSql->subState, i, 0);
|
||||
|
|
|
@ -3654,7 +3654,7 @@ SSqlObj* createSubqueryObj(SSqlObj* pSql, int16_t tableIndex, __async_cb_func_t
|
|||
|
||||
if (pQueryInfo->fillType != TSDB_FILL_NONE) {
|
||||
//just make memory memory sanitizer happy
|
||||
//refator later
|
||||
//refactor later
|
||||
pNewQueryInfo->fillVal = calloc(1, pQueryInfo->fieldsInfo.numOfOutput * sizeof(int64_t));
|
||||
if (pNewQueryInfo->fillVal == NULL) {
|
||||
terrno = TSDB_CODE_TSC_OUT_OF_MEMORY;
|
||||
|
|
|
@ -97,7 +97,7 @@ int64_t taosTimeAdd(int64_t t, int64_t duration, char unit, int32_t precision);
|
|||
int64_t taosTimeTruncate(int64_t t, const SInterval* pInterval, int32_t precision);
|
||||
int32_t taosTimeCountInterval(int64_t skey, int64_t ekey, int64_t interval, char unit, int32_t precision);
|
||||
|
||||
int32_t parseAbsoluteDuration(char* token, int32_t tokenlen, int64_t* ts, int32_t timePrecision);
|
||||
int32_t parseAbsoluteDuration(char* token, int32_t tokenlen, int64_t* ts, char* unit, int32_t timePrecision);
|
||||
int32_t parseNatualDuration(const char* token, int32_t tokenLen, int64_t* duration, char* unit, int32_t timePrecision);
|
||||
|
||||
int32_t taosParseTime(char* timestr, int64_t* time, int32_t len, int32_t timePrec, int8_t dayligth);
|
||||
|
|
|
@ -397,7 +397,7 @@ static int32_t getDuration(int64_t val, char unit, int64_t* result, int32_t time
|
|||
* n - Months (30 days)
|
||||
* y - Years (365 days)
|
||||
*/
|
||||
int32_t parseAbsoluteDuration(char* token, int32_t tokenlen, int64_t* duration, int32_t timePrecision) {
|
||||
int32_t parseAbsoluteDuration(char* token, int32_t tokenlen, int64_t* duration, char* unit, int32_t timePrecision) {
|
||||
errno = 0;
|
||||
char* endPtr = NULL;
|
||||
|
||||
|
@ -408,12 +408,12 @@ int32_t parseAbsoluteDuration(char* token, int32_t tokenlen, int64_t* duration,
|
|||
}
|
||||
|
||||
/* natual month/year are not allowed in absolute duration */
|
||||
char unit = token[tokenlen - 1];
|
||||
if (unit == 'n' || unit == 'y') {
|
||||
*unit = token[tokenlen - 1];
|
||||
if (*unit == 'n' || *unit == 'y') {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return getDuration(timestamp, unit, duration, timePrecision);
|
||||
return getDuration(timestamp, *unit, duration, timePrecision);
|
||||
}
|
||||
|
||||
int32_t parseNatualDuration(const char* token, int32_t tokenLen, int64_t* duration, char* unit, int32_t timePrecision) {
|
||||
|
|
|
@ -479,7 +479,7 @@ tagitem(A) ::= PLUS(X) FLOAT(Y). {
|
|||
//////////////////////// The SELECT statement /////////////////////////////////
|
||||
%type select {SSqlNode*}
|
||||
%destructor select {destroySqlNode($$);}
|
||||
select(A) ::= SELECT(T) selcollist(W) from(X) where_opt(Y) interval_opt(K) session_option(H) windowstate_option(D) fill_opt(F) sliding_opt(S) groupby_opt(P) having_opt(N) orderby_opt(Z) slimit_opt(G) limit_opt(L). {
|
||||
select(A) ::= SELECT(T) selcollist(W) from(X) where_opt(Y) interval_opt(K) sliding_opt(S) session_option(H) windowstate_option(D) fill_opt(F)groupby_opt(P) having_opt(N) orderby_opt(Z) slimit_opt(G) limit_opt(L). {
|
||||
A = tSetQuerySqlNode(&T, W, X, Y, P, Z, &K, &H, &D, &S, F, &L, &G, N);
|
||||
}
|
||||
|
||||
|
|
|
@ -32,8 +32,8 @@ typedef struct SJoinCond {
|
|||
SColumn *colCond[2];
|
||||
} SJoinCond;
|
||||
|
||||
static SQueryNode* createQueryNode(int32_t type, const char* name, SQueryNode** prev,
|
||||
int32_t numOfPrev, SExprInfo** pExpr, int32_t numOfOutput, SQueryTableInfo* pTableInfo,
|
||||
static SQueryNode* createQueryNode(int32_t type, const char* name, SQueryNode** prev, int32_t numOfPrev,
|
||||
SExprInfo** pExpr, int32_t numOfOutput, SQueryTableInfo* pTableInfo,
|
||||
void* pExtInfo) {
|
||||
SQueryNode* pNode = calloc(1, sizeof(SQueryNode));
|
||||
|
||||
|
@ -112,8 +112,8 @@ static SQueryNode* doAddTableColumnNode(SQueryInfo* pQueryInfo, STableMetaInfo*
|
|||
}
|
||||
|
||||
STimeWindow* window = &pQueryInfo->window;
|
||||
SQueryNode* pNode = createQueryNode(QNODE_TABLESCAN, "TableScan", NULL, 0, NULL, 0,
|
||||
info, window);
|
||||
SQueryNode* pNode = createQueryNode(QNODE_TABLESCAN, "TableScan", NULL, 0, NULL, 0, info, window);
|
||||
|
||||
if (pQueryInfo->projectionQuery) {
|
||||
int32_t numOfOutput = (int32_t) taosArrayGetSize(pExprs);
|
||||
pNode = createQueryNode(QNODE_PROJECT, "Projection", &pNode, 1, pExprs->pData, numOfOutput, info, NULL);
|
||||
|
@ -153,6 +153,9 @@ static SQueryNode* doCreateQueryPlanForOneTableImpl(SQueryInfo* pQueryInfo, SQue
|
|||
|
||||
pNode = createQueryNode(QNODE_TIMEWINDOW, "TimeWindowAgg", &pNode, 1, pExprs->pData, numOfOutput, info,
|
||||
&pQueryInfo->interval);
|
||||
if (pQueryInfo->groupbyExpr.numOfGroupCols != 0) {
|
||||
pNode = createQueryNode(QNODE_GROUPBY, "Groupby", &pNode, 1, pExprs->pData, numOfOutput, info, &pQueryInfo->groupbyExpr);
|
||||
}
|
||||
} else if (pQueryInfo->groupbyColumn) {
|
||||
int32_t numOfOutput = (int32_t)taosArrayGetSize(pExprs);
|
||||
pNode = createQueryNode(QNODE_GROUPBY, "Groupby", &pNode, 1, pExprs->pData, numOfOutput, info,
|
||||
|
@ -179,7 +182,6 @@ static SQueryNode* doCreateQueryPlanForOneTableImpl(SQueryInfo* pQueryInfo, SQue
|
|||
pNode = createQueryNode(QNODE_FILL, "Fill", &pNode, 1, NULL, 0, info, pInfo);
|
||||
}
|
||||
|
||||
|
||||
if (pQueryInfo->limit.limit != -1 || pQueryInfo->limit.offset != 0) {
|
||||
pNode = createQueryNode(QNODE_LIMIT, "Limit", &pNode, 1, NULL, 0, info, &pQueryInfo->limit);
|
||||
}
|
||||
|
@ -326,7 +328,7 @@ static int32_t doPrintPlan(char* buf, SQueryNode* pQueryNode, int32_t level, int
|
|||
switch(pQueryNode->info.type) {
|
||||
case QNODE_TABLESCAN: {
|
||||
STimeWindow* win = (STimeWindow*)pQueryNode->pExtInfo;
|
||||
len1 = sprintf(buf + len, "%s #0x%" PRIx64 ") time_range: %" PRId64 " - %" PRId64 "\n",
|
||||
len1 = sprintf(buf + len, "%s #%" PRIu64 ") time_range: %" PRId64 " - %" PRId64 "\n",
|
||||
pQueryNode->tableInfo.tableName, pQueryNode->tableInfo.id.uid, win->skey, win->ekey);
|
||||
len += len1;
|
||||
break;
|
||||
|
@ -397,8 +399,8 @@ static int32_t doPrintPlan(char* buf, SQueryNode* pQueryNode, int32_t level, int
|
|||
len += len1;
|
||||
|
||||
SInterval* pInterval = pQueryNode->pExtInfo;
|
||||
len1 = sprintf(buf + len, "interval:%" PRId64 "(%c), sliding:%" PRId64 "(%c), offset:%" PRId64 "\n",
|
||||
pInterval->interval, pInterval->intervalUnit, pInterval->sliding, pInterval->slidingUnit,
|
||||
len1 = sprintf(buf + len, "interval:%" PRId64 "(%s), sliding:%" PRId64 "(%s), offset:%" PRId64 "\n",
|
||||
pInterval->interval, TSDB_TIME_PRECISION_MILLI_STR, pInterval->sliding, TSDB_TIME_PRECISION_MILLI_STR,
|
||||
pInterval->offset);
|
||||
len += len1;
|
||||
|
||||
|
|
|
@ -162,7 +162,8 @@ tSqlExpr *tSqlExprCreateIdValue(SStrToken *pToken, int32_t optrType) {
|
|||
} else if (optrType == TK_VARIABLE) {
|
||||
// use nanosecond by default
|
||||
// TODO set value after getting database precision
|
||||
int32_t ret = parseAbsoluteDuration(pToken->z, pToken->n, &pSqlExpr->value.i64, TSDB_TIME_PRECISION_NANO);
|
||||
char unit = 0;
|
||||
int32_t ret = parseAbsoluteDuration(pToken->z, pToken->n, &pSqlExpr->value.i64, &unit, TSDB_TIME_PRECISION_NANO);
|
||||
if (ret != TSDB_CODE_SUCCESS) {
|
||||
terrno = TSDB_CODE_TSC_SQL_SYNTAX_ERROR;
|
||||
}
|
||||
|
|
|
@ -257,27 +257,27 @@ static const YYACTIONTYPE yy_action[] = {
|
|||
/* 480 */ 208, 211, 205, 212, 213, 217, 218, 219, 216, 202,
|
||||
/* 490 */ 1143, 1082, 1135, 236, 267, 1079, 1078, 237, 338, 151,
|
||||
/* 500 */ 1035, 1046, 47, 1065, 1043, 149, 1064, 1025, 1028, 1044,
|
||||
/* 510 */ 274, 1048, 153, 170, 157, 1009, 278, 283, 171, 1007,
|
||||
/* 510 */ 274, 1048, 153, 170, 158, 1009, 278, 285, 171, 1007,
|
||||
/* 520 */ 172, 233, 166, 280, 161, 757, 160, 173, 162, 922,
|
||||
/* 530 */ 163, 299, 300, 301, 304, 305, 287, 292, 45, 290,
|
||||
/* 530 */ 163, 299, 300, 301, 304, 305, 282, 292, 45, 290,
|
||||
/* 540 */ 75, 200, 288, 813, 272, 41, 72, 49, 316, 164,
|
||||
/* 550 */ 916, 323, 1142, 110, 1141, 1138, 286, 179, 330, 1134,
|
||||
/* 560 */ 284, 116, 1133, 1130, 180, 282, 942, 42, 39, 46,
|
||||
/* 570 */ 201, 904, 279, 126, 48, 902, 128, 129, 900, 899,
|
||||
/* 560 */ 284, 116, 1133, 1130, 180, 281, 942, 42, 39, 46,
|
||||
/* 570 */ 201, 904, 279, 126, 303, 902, 128, 129, 900, 899,
|
||||
/* 580 */ 259, 191, 897, 896, 895, 894, 893, 892, 891, 194,
|
||||
/* 590 */ 196, 888, 886, 884, 882, 198, 879, 199, 303, 81,
|
||||
/* 600 */ 86, 348, 281, 1066, 121, 340, 341, 342, 343, 344,
|
||||
/* 590 */ 196, 888, 886, 884, 882, 198, 879, 199, 48, 81,
|
||||
/* 600 */ 86, 348, 283, 1066, 121, 340, 341, 342, 343, 344,
|
||||
/* 610 */ 223, 345, 346, 356, 855, 243, 298, 260, 261, 854,
|
||||
/* 620 */ 263, 220, 221, 264, 853, 836, 104, 921, 920, 105,
|
||||
/* 630 */ 835, 268, 273, 10, 293, 734, 275, 84, 30, 87,
|
||||
/* 640 */ 898, 890, 182, 943, 186, 181, 184, 140, 183, 187,
|
||||
/* 650 */ 185, 141, 142, 889, 4, 143, 980, 881, 880, 944,
|
||||
/* 660 */ 759, 165, 167, 168, 155, 169, 762, 156, 2, 990,
|
||||
/* 670 */ 88, 235, 764, 89, 285, 31, 768, 158, 11, 12,
|
||||
/* 680 */ 13, 32, 27, 295, 28, 96, 98, 101, 35, 100,
|
||||
/* 630 */ 835, 268, 273, 10, 293, 734, 275, 84, 30, 898,
|
||||
/* 640 */ 890, 183, 182, 943, 187, 181, 184, 185, 2, 140,
|
||||
/* 650 */ 186, 141, 142, 889, 4, 143, 980, 881, 87, 944,
|
||||
/* 660 */ 759, 165, 167, 168, 169, 880, 155, 157, 768, 156,
|
||||
/* 670 */ 235, 762, 88, 89, 990, 764, 287, 31, 11, 32,
|
||||
/* 680 */ 12, 13, 27, 295, 28, 96, 98, 101, 35, 100,
|
||||
/* 690 */ 632, 36, 102, 667, 665, 664, 663, 661, 660, 659,
|
||||
/* 700 */ 656, 314, 622, 106, 7, 320, 812, 814, 8, 321,
|
||||
/* 710 */ 109, 111, 68, 69, 115, 704, 703, 38, 117, 700,
|
||||
/* 700 */ 656, 314, 622, 106, 7, 320, 812, 321, 8, 109,
|
||||
/* 710 */ 814, 111, 68, 69, 115, 704, 703, 38, 117, 700,
|
||||
/* 720 */ 648, 646, 638, 644, 640, 642, 636, 634, 670, 669,
|
||||
/* 730 */ 668, 666, 662, 658, 657, 190, 620, 585, 583, 859,
|
||||
/* 740 */ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
|
||||
|
@ -338,24 +338,24 @@ static const YYCODETYPE yy_lookahead[] = {
|
|||
/* 510 */ 246, 199, 199, 250, 199, 246, 269, 199, 199, 199,
|
||||
/* 520 */ 199, 269, 254, 269, 259, 124, 260, 199, 258, 199,
|
||||
/* 530 */ 257, 199, 199, 199, 199, 199, 269, 130, 199, 134,
|
||||
/* 540 */ 136, 199, 129, 117, 200, 199, 138, 135, 199, 256,
|
||||
/* 550 */ 199, 199, 199, 199, 199, 199, 128, 199, 199, 199,
|
||||
/* 560 */ 127, 199, 199, 199, 199, 126, 199, 199, 199, 199,
|
||||
/* 570 */ 199, 199, 125, 199, 140, 199, 199, 199, 199, 199,
|
||||
/* 540 */ 136, 199, 128, 117, 200, 199, 138, 135, 199, 256,
|
||||
/* 550 */ 199, 199, 199, 199, 199, 199, 127, 199, 199, 199,
|
||||
/* 560 */ 126, 199, 199, 199, 199, 129, 199, 199, 199, 199,
|
||||
/* 570 */ 199, 199, 125, 199, 89, 199, 199, 199, 199, 199,
|
||||
/* 580 */ 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
|
||||
/* 590 */ 199, 199, 199, 199, 199, 199, 199, 199, 89, 200,
|
||||
/* 590 */ 199, 199, 199, 199, 199, 199, 199, 199, 140, 200,
|
||||
/* 600 */ 200, 113, 200, 200, 96, 95, 51, 92, 94, 55,
|
||||
/* 610 */ 200, 93, 91, 84, 5, 200, 200, 153, 5, 5,
|
||||
/* 620 */ 153, 200, 200, 5, 5, 100, 206, 210, 210, 206,
|
||||
/* 630 */ 99, 142, 120, 82, 115, 83, 97, 121, 82, 97,
|
||||
/* 640 */ 200, 200, 217, 219, 215, 218, 216, 201, 213, 212,
|
||||
/* 650 */ 214, 201, 201, 200, 202, 201, 237, 200, 200, 221,
|
||||
/* 660 */ 83, 255, 253, 252, 82, 251, 83, 97, 207, 237,
|
||||
/* 670 */ 82, 1, 83, 82, 82, 97, 83, 82, 131, 131,
|
||||
/* 680 */ 82, 97, 82, 115, 82, 116, 78, 71, 87, 86,
|
||||
/* 630 */ 99, 142, 120, 82, 115, 83, 97, 121, 82, 200,
|
||||
/* 640 */ 200, 213, 217, 219, 212, 218, 216, 214, 207, 201,
|
||||
/* 650 */ 215, 201, 201, 200, 202, 201, 237, 200, 97, 221,
|
||||
/* 660 */ 83, 255, 253, 252, 251, 200, 82, 97, 83, 82,
|
||||
/* 670 */ 1, 83, 82, 82, 237, 83, 82, 97, 131, 97,
|
||||
/* 680 */ 131, 82, 82, 115, 82, 116, 78, 71, 87, 86,
|
||||
/* 690 */ 5, 87, 86, 9, 5, 5, 5, 5, 5, 5,
|
||||
/* 700 */ 5, 15, 85, 78, 82, 24, 83, 117, 82, 59,
|
||||
/* 710 */ 147, 147, 16, 16, 147, 5, 5, 97, 147, 83,
|
||||
/* 700 */ 5, 15, 85, 78, 82, 24, 83, 59, 82, 147,
|
||||
/* 710 */ 117, 147, 16, 16, 147, 5, 5, 97, 147, 83,
|
||||
/* 720 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
/* 730 */ 5, 5, 5, 5, 5, 97, 85, 61, 60, 0,
|
||||
/* 740 */ 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
|
||||
|
@ -399,9 +399,9 @@ static const unsigned short int yy_shift_ofst[] = {
|
|||
/* 120 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
|
||||
/* 130 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
|
||||
/* 140 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
|
||||
/* 150 */ 143, 444, 444, 444, 401, 401, 401, 444, 401, 444,
|
||||
/* 160 */ 404, 408, 407, 412, 405, 413, 428, 433, 439, 447,
|
||||
/* 170 */ 434, 444, 444, 444, 509, 509, 488, 12, 12, 444,
|
||||
/* 150 */ 143, 444, 444, 444, 401, 401, 401, 401, 444, 444,
|
||||
/* 160 */ 404, 408, 407, 412, 405, 414, 429, 434, 436, 447,
|
||||
/* 170 */ 458, 444, 444, 444, 485, 485, 488, 12, 12, 444,
|
||||
/* 180 */ 444, 508, 510, 555, 515, 514, 554, 518, 521, 488,
|
||||
/* 190 */ 13, 444, 529, 529, 444, 529, 444, 529, 444, 444,
|
||||
/* 200 */ 753, 753, 54, 81, 81, 108, 81, 134, 188, 205,
|
||||
|
@ -411,12 +411,12 @@ static const unsigned short int yy_shift_ofst[] = {
|
|||
/* 240 */ 345, 347, 348, 343, 350, 357, 431, 375, 426, 366,
|
||||
/* 250 */ 118, 308, 314, 459, 460, 324, 327, 361, 331, 373,
|
||||
/* 260 */ 609, 464, 613, 614, 467, 618, 619, 525, 531, 489,
|
||||
/* 270 */ 512, 519, 551, 516, 552, 556, 539, 542, 577, 582,
|
||||
/* 280 */ 583, 570, 588, 589, 591, 670, 592, 593, 595, 578,
|
||||
/* 290 */ 547, 584, 548, 598, 519, 600, 568, 602, 569, 608,
|
||||
/* 270 */ 512, 519, 551, 516, 552, 556, 539, 561, 577, 584,
|
||||
/* 280 */ 585, 587, 588, 570, 590, 592, 591, 669, 594, 580,
|
||||
/* 290 */ 547, 582, 549, 599, 519, 600, 568, 602, 569, 608,
|
||||
/* 300 */ 601, 603, 616, 685, 604, 606, 684, 689, 690, 691,
|
||||
/* 310 */ 692, 693, 694, 695, 617, 686, 625, 622, 623, 590,
|
||||
/* 320 */ 626, 681, 650, 696, 563, 564, 620, 620, 620, 620,
|
||||
/* 310 */ 692, 693, 694, 695, 617, 686, 625, 622, 623, 593,
|
||||
/* 320 */ 626, 681, 648, 696, 562, 564, 620, 620, 620, 620,
|
||||
/* 330 */ 697, 567, 571, 620, 620, 620, 710, 711, 636, 620,
|
||||
/* 340 */ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
|
||||
/* 350 */ 725, 726, 727, 728, 729, 638, 651, 730, 731, 676,
|
||||
|
@ -424,7 +424,7 @@ static const unsigned short int yy_shift_ofst[] = {
|
|||
};
|
||||
#define YY_REDUCE_COUNT (201)
|
||||
#define YY_REDUCE_MIN (-265)
|
||||
#define YY_REDUCE_MAX (461)
|
||||
#define YY_REDUCE_MAX (465)
|
||||
static const short yy_reduce_ofst[] = {
|
||||
/* 0 */ -27, -33, -33, -193, -193, -76, -203, -199, -175, -184,
|
||||
/* 10 */ -130, -134, 93, 24, 67, 119, 126, 135, 142, 148,
|
||||
|
@ -441,12 +441,12 @@ static const short yy_reduce_ofst[] = {
|
|||
/* 120 */ 365, 367, 368, 369, 370, 371, 372, 374, 376, 377,
|
||||
/* 130 */ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
|
||||
/* 140 */ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
|
||||
/* 150 */ 398, 344, 399, 400, 247, 252, 254, 402, 267, 403,
|
||||
/* 150 */ 398, 344, 399, 400, 247, 252, 254, 267, 402, 403,
|
||||
/* 160 */ 246, 266, 265, 270, 273, 293, 406, 268, 409, 411,
|
||||
/* 170 */ 414, 410, 415, 416, 417, 418, 419, 420, 423, 421,
|
||||
/* 180 */ 422, 424, 427, 425, 435, 430, 436, 429, 437, 432,
|
||||
/* 190 */ 438, 440, 446, 450, 441, 451, 453, 454, 457, 458,
|
||||
/* 200 */ 461, 452,
|
||||
/* 170 */ 413, 410, 415, 416, 417, 418, 419, 420, 423, 421,
|
||||
/* 180 */ 422, 424, 427, 425, 428, 430, 433, 435, 432, 437,
|
||||
/* 190 */ 438, 439, 448, 450, 440, 451, 453, 454, 457, 465,
|
||||
/* 200 */ 441, 452,
|
||||
};
|
||||
static const YYACTIONTYPE yy_default[] = {
|
||||
/* 0 */ 856, 979, 918, 989, 905, 915, 1126, 1126, 1126, 856,
|
||||
|
@ -464,8 +464,8 @@ static const YYACTIONTYPE yy_default[] = {
|
|||
/* 120 */ 856, 856, 856, 856, 856, 856, 903, 856, 901, 856,
|
||||
/* 130 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 856,
|
||||
/* 140 */ 856, 856, 856, 856, 887, 856, 856, 856, 856, 856,
|
||||
/* 150 */ 856, 878, 878, 878, 856, 856, 856, 878, 856, 878,
|
||||
/* 160 */ 1076, 1080, 1062, 1074, 1070, 1061, 1057, 1055, 1053, 1052,
|
||||
/* 150 */ 856, 878, 878, 878, 856, 856, 856, 856, 878, 878,
|
||||
/* 160 */ 1076, 1080, 1062, 1074, 1070, 1057, 1055, 1053, 1061, 1052,
|
||||
/* 170 */ 1084, 878, 878, 878, 923, 923, 919, 915, 915, 878,
|
||||
/* 180 */ 878, 941, 939, 937, 929, 935, 931, 933, 927, 906,
|
||||
/* 190 */ 856, 878, 913, 913, 878, 913, 878, 913, 878, 878,
|
||||
|
@ -1039,10 +1039,10 @@ static const char *const yyTokenName[] = {
|
|||
/* 250 */ "from",
|
||||
/* 251 */ "where_opt",
|
||||
/* 252 */ "interval_opt",
|
||||
/* 253 */ "session_option",
|
||||
/* 254 */ "windowstate_option",
|
||||
/* 255 */ "fill_opt",
|
||||
/* 256 */ "sliding_opt",
|
||||
/* 253 */ "sliding_opt",
|
||||
/* 254 */ "session_option",
|
||||
/* 255 */ "windowstate_option",
|
||||
/* 256 */ "fill_opt",
|
||||
/* 257 */ "groupby_opt",
|
||||
/* 258 */ "having_opt",
|
||||
/* 259 */ "orderby_opt",
|
||||
|
@ -1235,7 +1235,7 @@ static const char *const yyRuleName[] = {
|
|||
/* 163 */ "tagitem ::= MINUS FLOAT",
|
||||
/* 164 */ "tagitem ::= PLUS INTEGER",
|
||||
/* 165 */ "tagitem ::= PLUS FLOAT",
|
||||
/* 166 */ "select ::= SELECT selcollist from where_opt interval_opt session_option windowstate_option fill_opt sliding_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt",
|
||||
/* 166 */ "select ::= SELECT selcollist from where_opt interval_opt sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt",
|
||||
/* 167 */ "select ::= LP select RP",
|
||||
/* 168 */ "union ::= select",
|
||||
/* 169 */ "union ::= union UNION ALL select",
|
||||
|
@ -1490,7 +1490,7 @@ tSqlExprListDestroy((yypminor->yy525));
|
|||
case 243: /* columnlist */
|
||||
case 244: /* tagitemlist */
|
||||
case 245: /* tagNamelist */
|
||||
case 255: /* fill_opt */
|
||||
case 256: /* fill_opt */
|
||||
case 257: /* groupby_opt */
|
||||
case 259: /* orderby_opt */
|
||||
case 270: /* sortlist */
|
||||
|
@ -1991,7 +1991,7 @@ static const struct {
|
|||
{ 248, -2 }, /* (163) tagitem ::= MINUS FLOAT */
|
||||
{ 248, -2 }, /* (164) tagitem ::= PLUS INTEGER */
|
||||
{ 248, -2 }, /* (165) tagitem ::= PLUS FLOAT */
|
||||
{ 246, -14 }, /* (166) select ::= SELECT selcollist from where_opt interval_opt session_option windowstate_option fill_opt sliding_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
|
||||
{ 246, -14 }, /* (166) select ::= SELECT selcollist from where_opt interval_opt sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
|
||||
{ 246, -3 }, /* (167) select ::= LP select RP */
|
||||
{ 262, -1 }, /* (168) union ::= select */
|
||||
{ 262, -4 }, /* (169) union ::= union UNION ALL select */
|
||||
|
@ -2019,15 +2019,15 @@ static const struct {
|
|||
{ 252, -4 }, /* (191) interval_opt ::= INTERVAL LP tmvar RP */
|
||||
{ 252, -6 }, /* (192) interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */
|
||||
{ 252, 0 }, /* (193) interval_opt ::= */
|
||||
{ 253, 0 }, /* (194) session_option ::= */
|
||||
{ 253, -7 }, /* (195) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
|
||||
{ 254, 0 }, /* (196) windowstate_option ::= */
|
||||
{ 254, -4 }, /* (197) windowstate_option ::= STATE_WINDOW LP ids RP */
|
||||
{ 255, 0 }, /* (198) fill_opt ::= */
|
||||
{ 255, -6 }, /* (199) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
|
||||
{ 255, -4 }, /* (200) fill_opt ::= FILL LP ID RP */
|
||||
{ 256, -4 }, /* (201) sliding_opt ::= SLIDING LP tmvar RP */
|
||||
{ 256, 0 }, /* (202) sliding_opt ::= */
|
||||
{ 254, 0 }, /* (194) session_option ::= */
|
||||
{ 254, -7 }, /* (195) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
|
||||
{ 255, 0 }, /* (196) windowstate_option ::= */
|
||||
{ 255, -4 }, /* (197) windowstate_option ::= STATE_WINDOW LP ids RP */
|
||||
{ 256, 0 }, /* (198) fill_opt ::= */
|
||||
{ 256, -6 }, /* (199) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
|
||||
{ 256, -4 }, /* (200) fill_opt ::= FILL LP ID RP */
|
||||
{ 253, -4 }, /* (201) sliding_opt ::= SLIDING LP tmvar RP */
|
||||
{ 253, 0 }, /* (202) sliding_opt ::= */
|
||||
{ 259, 0 }, /* (203) orderby_opt ::= */
|
||||
{ 259, -3 }, /* (204) orderby_opt ::= ORDER BY sortlist */
|
||||
{ 270, -4 }, /* (205) sortlist ::= sortlist COMMA item sortorder */
|
||||
|
@ -2723,9 +2723,9 @@ static void yy_reduce(
|
|||
}
|
||||
yymsp[-1].minor.yy506 = yylhsminor.yy506;
|
||||
break;
|
||||
case 166: /* select ::= SELECT selcollist from where_opt interval_opt session_option windowstate_option fill_opt sliding_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
|
||||
case 166: /* select ::= SELECT selcollist from where_opt interval_opt sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */
|
||||
{
|
||||
yylhsminor.yy464 = tSetQuerySqlNode(&yymsp[-13].minor.yy0, yymsp[-12].minor.yy525, yymsp[-11].minor.yy412, yymsp[-10].minor.yy370, yymsp[-4].minor.yy525, yymsp[-2].minor.yy525, &yymsp[-9].minor.yy520, &yymsp[-8].minor.yy259, &yymsp[-7].minor.yy144, &yymsp[-5].minor.yy0, yymsp[-6].minor.yy525, &yymsp[0].minor.yy126, &yymsp[-1].minor.yy126, yymsp[-3].minor.yy370);
|
||||
yylhsminor.yy464 = tSetQuerySqlNode(&yymsp[-13].minor.yy0, yymsp[-12].minor.yy525, yymsp[-11].minor.yy412, yymsp[-10].minor.yy370, yymsp[-4].minor.yy525, yymsp[-2].minor.yy525, &yymsp[-9].minor.yy520, &yymsp[-7].minor.yy259, &yymsp[-6].minor.yy144, &yymsp[-8].minor.yy0, yymsp[-5].minor.yy525, &yymsp[0].minor.yy126, &yymsp[-1].minor.yy126, yymsp[-3].minor.yy370);
|
||||
}
|
||||
yymsp[-13].minor.yy464 = yylhsminor.yy464;
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue