From 55f4d9524ba4aae0effc4d08a0934143374ff37e Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Thu, 29 Dec 2022 10:52:17 +0800 Subject: [PATCH 01/34] fix:support multi json format --- source/client/inc/clientSml.h | 3 +- source/client/src/clientSmlJson.c | 639 +++++++++++++++++- source/client/test/smlTest.cpp | 44 +- .../1-insert/opentsdb_json_taosc_insert.py | 3 +- .../opentsdb_telnet_line_taosc_insert.py | 6 +- 5 files changed, 663 insertions(+), 32 deletions(-) diff --git a/source/client/inc/clientSml.h b/source/client/inc/clientSml.h index b74d0b3494..2fc058ee00 100644 --- a/source/client/inc/clientSml.h +++ b/source/client/inc/clientSml.h @@ -177,7 +177,7 @@ typedef struct { int32_t lineNum; SSmlMsgBuf msgBuf; -// cJSON *root; // for parse json + cJSON *root; // for parse json int8_t offset[4]; SSmlLineInfo *lines; // element is SSmlLineInfo @@ -226,6 +226,7 @@ int32_t is_same_child_table_telnet(const void *a, const void *b); int64_t smlParseOpenTsdbTime(SSmlHandle *info, const char *data, int32_t len); int32_t smlClearForRerun(SSmlHandle *info); int32_t smlParseValue(SSmlKv *pVal, SSmlMsgBuf *msg); +uint8_t smlGetTimestampLen(int64_t num); int32_t smlParseInfluxString(SSmlHandle *info, char *sql, char *sqlEnd, SSmlLineInfo *elements); int32_t smlParseTelnetString(SSmlHandle *info, char *sql, char *sqlEnd, SSmlLineInfo *elements); diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index 3de1397f72..5d97444622 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -19,6 +19,9 @@ #include #include "clientSml.h" +#define OTD_JSON_SUB_FIELDS_NUM 2 +#define OTD_JSON_FIELDS_NUM 4 + #define JUMP_JSON_SPACE(start) \ while(*(start)){\ if(unlikely(*(start) > 32))\ @@ -406,9 +409,7 @@ static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo * if(**start == '\0') return TSDB_CODE_SUCCESS; SSmlKv kv = {.key = VALUE, .keyLen = VALUE_LEN, .value = elements->cols, .length = (size_t)elements->colsLen}; - if (smlParseNumber(&kv, &info->msgBuf)) { - kv.length = (int16_t)tDataTypes[kv.type].bytes; - }else{ + if (smlParseValue(&kv, &info->msgBuf) != TSDB_CODE_SUCCESS) { return TSDB_CODE_TSC_INVALID_VALUE; } @@ -456,6 +457,636 @@ static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo * return TSDB_CODE_SUCCESS; } +static inline int32_t smlParseMetricFromJSON(SSmlHandle *info, cJSON *metric, SSmlLineInfo *elements) { + elements->measureLen = strlen(metric->valuestring); + if (IS_INVALID_TABLE_LEN(elements->measureLen)) { + uError("OTD:0x%" PRIx64 " Metric lenght is 0 or large than 192", info->id); + return TSDB_CODE_TSC_INVALID_TABLE_ID_LENGTH; + } + + elements->measure = metric->valuestring; + return TSDB_CODE_SUCCESS; +} + +const char *jsonName[OTD_JSON_FIELDS_NUM] = {"metric", "timestamp", "value", "tags"}; +static int32_t smlGetJsonElements(cJSON *root, cJSON ***marks){ + cJSON *child = root->child; + + for (int i = 0; i < OTD_JSON_FIELDS_NUM; ++i) { + while(child != NULL) + { + if(strcasecmp(child->string, jsonName[i]) == 0){ + *marks[i] = child; + break; + } + child = child->next; + } + if(*marks[i] == NULL){ + uError("smlGetJsonElements error, not find mark:%s", jsonName[i]); + return -1; + } + } + return TSDB_CODE_SUCCESS; +} + +static int32_t smlConvertJSONBool(SSmlKv *pVal, char *typeStr, cJSON *value) { + if (strcasecmp(typeStr, "bool") != 0) { + uError("OTD:invalid type(%s) for JSON Bool", typeStr); + return TSDB_CODE_TSC_INVALID_JSON_TYPE; + } + pVal->type = TSDB_DATA_TYPE_BOOL; + pVal->length = (int16_t)tDataTypes[pVal->type].bytes; + pVal->i = value->valueint; + + return TSDB_CODE_SUCCESS; +} + +static int32_t smlConvertJSONNumber(SSmlKv *pVal, char *typeStr, cJSON *value) { + // tinyint + if (strcasecmp(typeStr, "i8") == 0 || strcasecmp(typeStr, "tinyint") == 0) { + if (!IS_VALID_TINYINT(value->valuedouble)) { + uError("OTD:JSON value(%f) cannot fit in type(tinyint)", value->valuedouble); + return TSDB_CODE_TSC_VALUE_OUT_OF_RANGE; + } + pVal->type = TSDB_DATA_TYPE_TINYINT; + pVal->length = (int16_t)tDataTypes[pVal->type].bytes; + pVal->i = value->valuedouble; + return TSDB_CODE_SUCCESS; + } + // smallint + if (strcasecmp(typeStr, "i16") == 0 || strcasecmp(typeStr, "smallint") == 0) { + if (!IS_VALID_SMALLINT(value->valuedouble)) { + uError("OTD:JSON value(%f) cannot fit in type(smallint)", value->valuedouble); + return TSDB_CODE_TSC_VALUE_OUT_OF_RANGE; + } + pVal->type = TSDB_DATA_TYPE_SMALLINT; + pVal->length = (int16_t)tDataTypes[pVal->type].bytes; + pVal->i = value->valuedouble; + return TSDB_CODE_SUCCESS; + } + // int + if (strcasecmp(typeStr, "i32") == 0 || strcasecmp(typeStr, "int") == 0) { + if (!IS_VALID_INT(value->valuedouble)) { + uError("OTD:JSON value(%f) cannot fit in type(int)", value->valuedouble); + return TSDB_CODE_TSC_VALUE_OUT_OF_RANGE; + } + pVal->type = TSDB_DATA_TYPE_INT; + pVal->length = (int16_t)tDataTypes[pVal->type].bytes; + pVal->i = value->valuedouble; + return TSDB_CODE_SUCCESS; + } + // bigint + if (strcasecmp(typeStr, "i64") == 0 || strcasecmp(typeStr, "bigint") == 0) { + pVal->type = TSDB_DATA_TYPE_BIGINT; + pVal->length = (int16_t)tDataTypes[pVal->type].bytes; + if (value->valuedouble >= (double)INT64_MAX) { + pVal->i = INT64_MAX; + } else if (value->valuedouble <= (double)INT64_MIN) { + pVal->i = INT64_MIN; + } else { + pVal->i = value->valuedouble; + } + return TSDB_CODE_SUCCESS; + } + // float + if (strcasecmp(typeStr, "f32") == 0 || strcasecmp(typeStr, "float") == 0) { + if (!IS_VALID_FLOAT(value->valuedouble)) { + uError("OTD:JSON value(%f) cannot fit in type(float)", value->valuedouble); + return TSDB_CODE_TSC_VALUE_OUT_OF_RANGE; + } + pVal->type = TSDB_DATA_TYPE_FLOAT; + pVal->length = (int16_t)tDataTypes[pVal->type].bytes; + pVal->f = value->valuedouble; + return TSDB_CODE_SUCCESS; + } + // double + if (strcasecmp(typeStr, "f64") == 0 || strcasecmp(typeStr, "double") == 0) { + pVal->type = TSDB_DATA_TYPE_DOUBLE; + pVal->length = (int16_t)tDataTypes[pVal->type].bytes; + pVal->d = value->valuedouble; + return TSDB_CODE_SUCCESS; + } + + // if reach here means type is unsupported + uError("OTD:invalid type(%s) for JSON Number", typeStr); + return TSDB_CODE_TSC_INVALID_JSON_TYPE; +} + +static int32_t smlConvertJSONString(SSmlKv *pVal, char *typeStr, cJSON *value) { + if (strcasecmp(typeStr, "binary") == 0) { + pVal->type = TSDB_DATA_TYPE_BINARY; + } else if (strcasecmp(typeStr, "nchar") == 0) { + pVal->type = TSDB_DATA_TYPE_NCHAR; + } else { + uError("OTD:invalid type(%s) for JSON String", typeStr); + return TSDB_CODE_TSC_INVALID_JSON_TYPE; + } + pVal->length = (int16_t)strlen(value->valuestring); + + if (pVal->type == TSDB_DATA_TYPE_BINARY && pVal->length > TSDB_MAX_BINARY_LEN - VARSTR_HEADER_SIZE) { + return TSDB_CODE_PAR_INVALID_VAR_COLUMN_LEN; + } + if (pVal->type == TSDB_DATA_TYPE_NCHAR && + pVal->length > (TSDB_MAX_NCHAR_LEN - VARSTR_HEADER_SIZE) / TSDB_NCHAR_SIZE) { + return TSDB_CODE_PAR_INVALID_VAR_COLUMN_LEN; + } + + pVal->value = value->valuestring; + return TSDB_CODE_SUCCESS; +} + +static int32_t smlParseValueFromJSONObj(cJSON *root, SSmlKv *kv) { + int32_t ret = TSDB_CODE_SUCCESS; + int32_t size = cJSON_GetArraySize(root); + + if (size != OTD_JSON_SUB_FIELDS_NUM) { + return TSDB_CODE_TSC_INVALID_JSON; + } + + cJSON *value = cJSON_GetObjectItem(root, "value"); + if (value == NULL) { + return TSDB_CODE_TSC_INVALID_JSON; + } + + cJSON *type = cJSON_GetObjectItem(root, "type"); + if (!cJSON_IsString(type)) { + return TSDB_CODE_TSC_INVALID_JSON; + } + + switch (value->type) { + case cJSON_True: + case cJSON_False: { + ret = smlConvertJSONBool(kv, type->valuestring, value); + if (ret != TSDB_CODE_SUCCESS) { + return ret; + } + break; + } + case cJSON_Number: { + ret = smlConvertJSONNumber(kv, type->valuestring, value); + if (ret != TSDB_CODE_SUCCESS) { + return ret; + } + break; + } + case cJSON_String: { + ret = smlConvertJSONString(kv, type->valuestring, value); + if (ret != TSDB_CODE_SUCCESS) { + return ret; + } + break; + } + default: + return TSDB_CODE_TSC_INVALID_JSON_TYPE; + } + + return TSDB_CODE_SUCCESS; +} + +static int32_t smlParseValueFromJSON(cJSON *root, SSmlKv *kv) { + switch (root->type) { + case cJSON_True: + case cJSON_False: { + kv->type = TSDB_DATA_TYPE_BOOL; + kv->length = (int16_t)tDataTypes[kv->type].bytes; + kv->i = root->valueint; + break; + } + case cJSON_Number: { + kv->type = TSDB_DATA_TYPE_DOUBLE; + kv->length = (int16_t)tDataTypes[kv->type].bytes; + kv->d = root->valuedouble; + break; + } + case cJSON_String: { + /* set default JSON type to binary/nchar according to + * user configured parameter tsDefaultJSONStrType + */ + + char *tsDefaultJSONStrType = "nchar"; // todo + smlConvertJSONString(kv, tsDefaultJSONStrType, root); + break; + } + case cJSON_Object: { + int32_t ret = smlParseValueFromJSONObj(root, kv); + if (ret != TSDB_CODE_SUCCESS) { + uError("OTD:Failed to parse value from JSON Obj"); + return ret; + } + break; + } + default: + return TSDB_CODE_TSC_INVALID_JSON; + } + + return TSDB_CODE_SUCCESS; +} + +static int32_t smlParseTagsFromJSONExt(SSmlHandle *info, cJSON *tags, SSmlLineInfo *elements) { + int32_t ret = TSDB_CODE_SUCCESS; + + elements->tags = cJSON_PrintUnformatted(tags); + elements->tagsLen = strlen(elements->tags); + if(is_same_child_table_telnet(elements, &info->preLine) == 0){ + return TSDB_CODE_SUCCESS; + } + + bool isSameMeasure = IS_SAME_SUPER_TABLE; + + int cnt = 0; + SArray *preLineKV = info->preLineTagKV; + bool isSuperKVInit = true; + SArray *superKV = NULL; + if(info->dataFormat){ + if(unlikely(!isSameMeasure)){ + SSmlSTableMeta *sMeta = (SSmlSTableMeta *)nodeListGet(info->superTables, elements->measure, elements->measureLen, NULL); + + if(unlikely(sMeta == NULL)){ + sMeta = smlBuildSTableMeta(info->dataFormat); + STableMeta * pTableMeta = smlGetMeta(info, elements->measure, elements->measureLen); + sMeta->tableMeta = pTableMeta; + if(pTableMeta == NULL){ + info->dataFormat = false; + info->reRun = true; + return TSDB_CODE_SUCCESS; + } + nodeListSet(&info->superTables, elements->measure, elements->measureLen, sMeta, NULL); + } + info->currSTableMeta = sMeta->tableMeta; + superKV = sMeta->tags; + + if(unlikely(taosArrayGetSize(superKV) == 0)){ + isSuperKVInit = false; + } + taosArraySetSize(preLineKV, 0); + } + }else{ + taosArraySetSize(preLineKV, 0); + } + + int32_t tagNum = cJSON_GetArraySize(tags); + for (int32_t i = 0; i < tagNum; ++i) { + cJSON *tag = cJSON_GetArrayItem(tags, i); + if (unlikely(tag == NULL)) { + return TSDB_CODE_TSC_INVALID_JSON; + } +// if(unlikely(tag == cMeasure)) continue; + size_t keyLen = strlen(tag->string); + if (unlikely(IS_INVALID_COL_LEN(keyLen))) { + uError("OTD:Tag key length is 0 or too large than 64"); + return TSDB_CODE_TSC_INVALID_COLUMN_LENGTH; + } + + // add kv to SSmlKv + SSmlKv kv ={.key = tag->string, .keyLen = keyLen}; + // value + ret = smlParseValueFromJSON(tag, &kv); + if (unlikely(ret != TSDB_CODE_SUCCESS)) { + return ret; + } + + if(info->dataFormat){ + if(unlikely(cnt + 1 > info->currSTableMeta->tableInfo.numOfTags)){ + info->dataFormat = false; + info->reRun = true; + return TSDB_CODE_SUCCESS; + } + + if(isSameMeasure){ + if(unlikely(cnt >= taosArrayGetSize(preLineKV))) { + info->dataFormat = false; + info->reRun = true; + return TSDB_CODE_SUCCESS; + } + SSmlKv *preKV = (SSmlKv *)taosArrayGet(preLineKV, cnt); + if(unlikely(kv.length > preKV->length)){ + preKV->length = kv.length; + SSmlSTableMeta *tableMeta = (SSmlSTableMeta *)nodeListGet(info->superTables, elements->measure, elements->measureLen, NULL); + ASSERT(tableMeta != NULL); + + SSmlKv *oldKV = (SSmlKv *)taosArrayGet(tableMeta->tags, cnt); + oldKV->length = kv.length; + info->needModifySchema = true; + } + if(unlikely(!IS_SAME_KEY)){ + info->dataFormat = false; + info->reRun = true; + return TSDB_CODE_SUCCESS; + } + }else{ + if(isSuperKVInit){ + if(unlikely(cnt >= taosArrayGetSize(superKV))) { + info->dataFormat = false; + info->reRun = true; + return TSDB_CODE_SUCCESS; + } + SSmlKv *preKV = (SSmlKv *)taosArrayGet(superKV, cnt); + if(unlikely(kv.length > preKV->length)) { + preKV->length = kv.length; + }else{ + kv.length = preKV->length; + } + info->needModifySchema = true; + + if(unlikely(!IS_SAME_KEY)){ + info->dataFormat = false; + info->reRun = true; + return TSDB_CODE_SUCCESS; + } + }else{ + taosArrayPush(superKV, &kv); + } + taosArrayPush(preLineKV, &kv); + } + }else{ + taosArrayPush(preLineKV, &kv); + } + cnt++; + } + + SSmlTableInfo *tinfo = (SSmlTableInfo *)nodeListGet(info->childTables, elements->tags, POINTER_BYTES, is_same_child_table_telnet); + if (unlikely(tinfo == NULL)) { + tinfo = smlBuildTableInfo(1, elements->measure, elements->measureLen); + if (unlikely(!tinfo)) { + return TSDB_CODE_OUT_OF_MEMORY; + } + tinfo->tags = taosArrayDup(preLineKV, NULL); + + smlSetCTableName(tinfo); + if (info->dataFormat) { + info->currSTableMeta->uid = tinfo->uid; + tinfo->tableDataCtx = smlInitTableDataCtx(info->pQuery, info->currSTableMeta); + if (tinfo->tableDataCtx == NULL) { + smlBuildInvalidDataMsg(&info->msgBuf, "smlInitTableDataCtx error", NULL); + return TSDB_CODE_SML_INVALID_DATA; + } + } + + nodeListSet(&info->childTables, tags, POINTER_BYTES, tinfo, is_same_child_table_telnet); + } + if (info->dataFormat) info->currTableDataCtx = tinfo->tableDataCtx; + + return ret; +} + +static int64_t smlParseTSFromJSONObj(SSmlHandle *info, cJSON *root, int32_t toPrecision) { + int32_t size = cJSON_GetArraySize(root); + if (unlikely(size != OTD_JSON_SUB_FIELDS_NUM)) { + smlBuildInvalidDataMsg(&info->msgBuf, "invalidate json", NULL); + return -1; + } + + cJSON *value = cJSON_GetObjectItem(root, "value"); + if (unlikely(!cJSON_IsNumber(value))) { + smlBuildInvalidDataMsg(&info->msgBuf, "invalidate json", NULL); + return -1; + } + + cJSON *type = cJSON_GetObjectItem(root, "type"); + if (unlikely(!cJSON_IsString(type))) { + smlBuildInvalidDataMsg(&info->msgBuf, "invalidate json", NULL); + return -1; + } + + double timeDouble = value->valuedouble; + if (unlikely(smlDoubleToInt64OverFlow(timeDouble))) { + smlBuildInvalidDataMsg(&info->msgBuf, "timestamp is too large", NULL); + return -1; + } + + if (timeDouble == 0) { + return taosGetTimestampNs()/smlFactorNS[toPrecision]; + } + + if (timeDouble < 0) { + return timeDouble; + } + + int64_t tsInt64 = timeDouble; + size_t typeLen = strlen(type->valuestring); + if (typeLen == 1 && (type->valuestring[0] == 's' || type->valuestring[0] == 'S')) { + // seconds + int8_t fromPrecision = TSDB_TIME_PRECISION_SECONDS; + if(smlFactorS[toPrecision] < INT64_MAX / tsInt64){ + return tsInt64 * smlFactorS[toPrecision]; + } + return -1; + } else if (typeLen == 2 && (type->valuestring[1] == 's' || type->valuestring[1] == 'S')) { + switch (type->valuestring[0]) { + case 'm': + case 'M': + // milliseconds + return convertTimePrecision(tsInt64, TSDB_TIME_PRECISION_MILLI, toPrecision); + break; + case 'u': + case 'U': + // microseconds + return convertTimePrecision(tsInt64, TSDB_TIME_PRECISION_MICRO, toPrecision); + break; + case 'n': + case 'N': + return convertTimePrecision(tsInt64, TSDB_TIME_PRECISION_NANO, toPrecision); + break; + default: + return -1; + } + } else { + return -1; + } +} + +uint8_t smlGetTimestampLen(int64_t num) { + uint8_t len = 0; + while ((num /= 10) != 0) { + len++; + } + len++; + return len; +} + +static int64_t smlParseTSFromJSON(SSmlHandle *info, cJSON *timestamp) { + // Timestamp must be the first KV to parse + int32_t toPrecision = info->currSTableMeta ? info->currSTableMeta->tableInfo.precision : TSDB_TIME_PRECISION_NANO; + if (cJSON_IsNumber(timestamp)) { + // timestamp value 0 indicates current system time + double timeDouble = timestamp->valuedouble; + if (unlikely(smlDoubleToInt64OverFlow(timeDouble))) { + smlBuildInvalidDataMsg(&info->msgBuf, "timestamp is too large", NULL); + return -1; + } + + if (unlikely(timeDouble < 0)) { + smlBuildInvalidDataMsg(&info->msgBuf, + "timestamp is negative", NULL); + return timeDouble; + }else if (unlikely(timeDouble == 0)) { + return taosGetTimestampNs()/smlFactorNS[toPrecision]; + } + + uint8_t tsLen = smlGetTimestampLen((int64_t)timeDouble); + + int8_t fromPrecision = smlGetTsTypeByLen(tsLen); + if (unlikely(fromPrecision == -1)) { + smlBuildInvalidDataMsg(&info->msgBuf, + "timestamp precision can only be seconds(10 digits) or milli seconds(13 digits)", NULL); + return -1; + } + int64_t tsInt64 = timeDouble; + if(fromPrecision == TSDB_TIME_PRECISION_SECONDS){ + if(smlFactorS[toPrecision] < INT64_MAX / tsInt64){ + return tsInt64 * smlFactorS[toPrecision]; + } + return -1; + }else{ + return convertTimePrecision(timeDouble, fromPrecision, toPrecision); + } + } else if (cJSON_IsObject(timestamp)) { + return smlParseTSFromJSONObj(info, timestamp, toPrecision); + } else { + smlBuildInvalidDataMsg(&info->msgBuf, + "invalidate json", NULL); + return -1; + } +} + +static int32_t smlParseJSONStringExt(SSmlHandle *info, cJSON *root, SSmlLineInfo *elements) { + int32_t ret = TSDB_CODE_SUCCESS; + + cJSON *metricJson = NULL; + cJSON *tsJson = NULL; + cJSON *valueJson = NULL; + cJSON *tagsJson = NULL; + + cJSON **marks[OTD_JSON_FIELDS_NUM] = {&metricJson, &tsJson, &valueJson, &tagsJson}; + ret = smlGetJsonElements(root, marks); + if (unlikely(ret != TSDB_CODE_SUCCESS)) { + return ret; + } + + // Parse metric + ret = smlParseMetricFromJSON(info, metricJson, elements); + if (unlikely(ret != TSDB_CODE_SUCCESS)) { + uError("OTD:0x%" PRIx64 " Unable to parse metric from JSON payload", info->id); + return ret; + } + + // Parse metric value + SSmlKv kv = {.key = VALUE, .keyLen = VALUE_LEN}; + ret = smlParseValueFromJSON(valueJson, &kv); + if (unlikely(ret)) { + uError("OTD:0x%" PRIx64 " Unable to parse metric value from JSON payload", info->id); + return ret; + } + + // Parse tags + ret = smlParseTagsFromJSONExt(info, tagsJson, elements); + if (unlikely(ret)) { + uError("OTD:0x%" PRIx64 " Unable to parse tags from JSON payload", info->id); + return ret; + } + + if(unlikely(info->reRun)){ + return TSDB_CODE_SUCCESS; + } + + // Parse timestamp + // notice!!! put ts back to tag to ensure get meta->precision + int64_t ts = smlParseTSFromJSON(info, tsJson); + if (unlikely(ts < 0)) { + uError("OTD:0x%" PRIx64 " Unable to parse timestamp from JSON payload", info->id); + return TSDB_CODE_INVALID_TIMESTAMP; + } + SSmlKv kvTs = { .key = TS, .keyLen = TS_LEN, .type = TSDB_DATA_TYPE_TIMESTAMP, .i = ts, .length = (size_t)tDataTypes[TSDB_DATA_TYPE_TIMESTAMP].bytes}; + + if(info->dataFormat){ + ret = smlBuildCol(info->currTableDataCtx, info->currSTableMeta->schema, &kvTs, 0); + if(ret == TSDB_CODE_SUCCESS){ + ret = smlBuildCol(info->currTableDataCtx, info->currSTableMeta->schema, &kv, 1); + } + if(ret == TSDB_CODE_SUCCESS){ + ret = smlBuildRow(info->currTableDataCtx); + } + if (unlikely(ret != TSDB_CODE_SUCCESS)) { + smlBuildInvalidDataMsg(&info->msgBuf, "smlBuildCol error", NULL); + return ret; + } + }else{ + if(elements->colArray == NULL){ + elements->colArray = taosArrayInit(16, sizeof(SSmlKv)); + } + taosArrayPush(elements->colArray, &kvTs); + taosArrayPush(elements->colArray, &kv); + } + info->preLine = *elements; + + return TSDB_CODE_SUCCESS; +} + +static int32_t smlParseJSONExt(SSmlHandle *info, char *payload) { + int32_t payloadNum = 0; + int32_t ret = TSDB_CODE_SUCCESS; + + if (unlikely(payload == NULL)) { + uError("SML:0x%" PRIx64 " empty JSON Payload", info->id); + return TSDB_CODE_TSC_INVALID_JSON; + } + + info->root = cJSON_Parse(payload); + if (unlikely(info->root == NULL)) { + uError("SML:0x%" PRIx64 " parse json failed:%s", info->id, payload); + return TSDB_CODE_TSC_INVALID_JSON; + } + + // multiple data points must be sent in JSON array + if (cJSON_IsArray(info->root)) { + payloadNum = cJSON_GetArraySize(info->root); + } else if (cJSON_IsObject(info->root)) { + payloadNum = 1; + } else { + uError("SML:0x%" PRIx64 " Invalid JSON Payload", info->id); + return TSDB_CODE_TSC_INVALID_JSON; + } + + info->lineNum = payloadNum; + info->dataFormat = true; + if (unlikely(info->lines != NULL)) { + taosMemoryFree(info->lines); + info->lines = NULL; + } + ret = smlClearForRerun(info); + cJSON *head = (payloadNum == 1 && cJSON_IsObject(info->root)) ? info->root : info->root->child; + + int cnt = 0; + cJSON *dataPoint = head; + while (dataPoint) { + if(info->dataFormat) { + SSmlLineInfo element = {0}; + ret = smlParseJSONStringExt(info, dataPoint, &element); + }else{ + ret = smlParseJSONStringExt(info, dataPoint, info->lines + cnt); + } + if (unlikely(ret != TSDB_CODE_SUCCESS)) { + uError("SML:0x%" PRIx64 " Invalid JSON Payload", info->id); + return ret; + } + + if(unlikely(info->reRun)){ + cnt = 0; + dataPoint = head; + info->lineNum = payloadNum; + ret = smlClearForRerun(info); + if(ret != TSDB_CODE_SUCCESS){ + return ret; + } + continue; + } + cnt++; + dataPoint = dataPoint->next; + } + + return TSDB_CODE_SUCCESS; +} + int32_t smlParseJSON(SSmlHandle *info, char *payload) { int32_t payloadNum = 1 << 15; int32_t ret = TSDB_CODE_SUCCESS; @@ -478,7 +1109,7 @@ int32_t smlParseJSON(SSmlHandle *info, char *payload) { } if (unlikely(ret != TSDB_CODE_SUCCESS)) { uError("SML:0x%" PRIx64 " Invalid JSON Payload", info->id); - return ret; + return smlParseJSONExt(info, payload); } if(*dataPointStart == '\0') break; diff --git a/source/client/test/smlTest.cpp b/source/client/test/smlTest.cpp index d608447506..4ff638b802 100644 --- a/source/client/test/smlTest.cpp +++ b/source/client/test/smlTest.cpp @@ -411,28 +411,28 @@ TEST(testCase, smlParseCols_Test) { smlDestroyInfo(info); } -//TEST(testCase, smlGetTimestampLen_Test) { -// uint8_t len = smlGetTimestampLen(0); -// ASSERT_EQ(len, 1); -// -// len = smlGetTimestampLen(1); -// ASSERT_EQ(len, 1); -// -// len = smlGetTimestampLen(10); -// ASSERT_EQ(len, 2); -// -// len = smlGetTimestampLen(390); -// ASSERT_EQ(len, 3); -// -// len = smlGetTimestampLen(-1); -// ASSERT_EQ(len, 1); -// -// len = smlGetTimestampLen(-10); -// ASSERT_EQ(len, 2); -// -// len = smlGetTimestampLen(-390); -// ASSERT_EQ(len, 3); -//} +TEST(testCase, smlGetTimestampLen_Test) { + uint8_t len = smlGetTimestampLen(0); + ASSERT_EQ(len, 1); + + len = smlGetTimestampLen(1); + ASSERT_EQ(len, 1); + + len = smlGetTimestampLen(10); + ASSERT_EQ(len, 2); + + len = smlGetTimestampLen(390); + ASSERT_EQ(len, 3); + + len = smlGetTimestampLen(-1); + ASSERT_EQ(len, 1); + + len = smlGetTimestampLen(-10); + ASSERT_EQ(len, 2); + + len = smlGetTimestampLen(-390); + ASSERT_EQ(len, 3); +} TEST(testCase, smlParseNumber_Test) { SSmlKv kv = {0}; diff --git a/tests/system-test/1-insert/opentsdb_json_taosc_insert.py b/tests/system-test/1-insert/opentsdb_json_taosc_insert.py index 93f3c7410d..44243fe029 100644 --- a/tests/system-test/1-insert/opentsdb_json_taosc_insert.py +++ b/tests/system-test/1-insert/opentsdb_json_taosc_insert.py @@ -1719,7 +1719,6 @@ class TDTestCase: print(err.errno) def runAll(self): - """ for value_type in ["obj", "default"]: self.initCheckCase(value_type) self.symbolsCheckCase(value_type) @@ -1772,7 +1771,7 @@ class TDTestCase: # self.sStbStbDdataDtsMtInsertMultiThreadCheckCase() # self.sStbDtbDdataDtsMtInsertMultiThreadCheckCase() # self.lengthIcreaseCrashCheckCase() - """ + def run(self): print("running {}".format(__file__)) self.createDb() diff --git a/tests/system-test/1-insert/opentsdb_telnet_line_taosc_insert.py b/tests/system-test/1-insert/opentsdb_telnet_line_taosc_insert.py index a17a2d9514..f588827206 100644 --- a/tests/system-test/1-insert/opentsdb_telnet_line_taosc_insert.py +++ b/tests/system-test/1-insert/opentsdb_telnet_line_taosc_insert.py @@ -1416,8 +1416,8 @@ class TDTestCase: self.symbolsCheckCase() self.tsCheckCase() self.openTstbTelnetTsCheckCase() - #self.idSeqCheckCase() - #self.idLetterCheckCase() + self.idSeqCheckCase() + self.idLetterCheckCase() self.noIdCheckCase() self.maxColTagCheckCase() self.stbTbNameCheckCase() @@ -1450,7 +1450,7 @@ class TDTestCase: self.spellCheckCase() self.pointTransCheckCase() self.defaultTypeCheckCase() - #self.tbnameTagsColsNameCheckCase() + self.tbnameTagsColsNameCheckCase() # # # MultiThreads # self.stbInsertMultiThreadCheckCase() # self.sStbStbDdataInsertMultiThreadCheckCase() From 0c422345b324112254d81b8f4ef78a719cb67c1d Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Thu, 29 Dec 2022 18:07:57 +0800 Subject: [PATCH 02/34] feat: support show cluster alive; and show db.alive; --- include/common/taosdef.h | 5 + include/common/ttokendef.h | 331 +- include/libs/command/command.h | 2 +- include/libs/nodes/cmdnodes.h | 6 + include/libs/nodes/nodes.h | 2 + source/client/src/clientImpl.c | 4 +- source/libs/command/src/command.c | 125 +- source/libs/nodes/src/nodesCodeFuncs.c | 4 + source/libs/nodes/src/nodesUtilFuncs.c | 5 + source/libs/parser/inc/parAst.h | 1 + source/libs/parser/inc/sql.y | 3 + source/libs/parser/src/parAstCreater.c | 32 + source/libs/parser/src/parAuthenticator.c | 2 + source/libs/parser/src/parTokenizer.c | 1 + source/libs/parser/src/parTranslater.c | 19 + source/libs/parser/src/sql.c | 6593 +++++++++++---------- tools/shell/src/shellAuto.c | 2 + 17 files changed, 3951 insertions(+), 3186 deletions(-) diff --git a/include/common/taosdef.h b/include/common/taosdef.h index bf4de9d4de..d1ca446904 100644 --- a/include/common/taosdef.h +++ b/include/common/taosdef.h @@ -30,6 +30,11 @@ typedef int64_t tb_uid_t; #define IS_TSWINDOW_SPECIFIED(win) (((win).skey != INT64_MIN) || ((win).ekey != INT64_MAX)) #define TSWINDOW_IS_EQUAL(t1, t2) (((t1).skey == (t2).skey) && ((t1).ekey == (t2).ekey)) +//define show cluster alive and show db.alive +#define SHOW_STATUS_NOT_AVAILABLE 0 +#define SHOW_STATUS_AVAILABLE 1 +#define SHOW_STATUS_HALF_AVAILABLE 2 + typedef enum { TSDB_SUPER_TABLE = 1, // super table TSDB_CHILD_TABLE = 2, // table created from super table diff --git a/include/common/ttokendef.h b/include/common/ttokendef.h index 04970ccc34..597371d9d1 100644 --- a/include/common/ttokendef.h +++ b/include/common/ttokendef.h @@ -175,171 +175,172 @@ #define TK_CONSUMERS 157 #define TK_SUBSCRIPTIONS 158 #define TK_VNODES 159 -#define TK_LIKE 160 -#define TK_TBNAME 161 -#define TK_QTAGS 162 -#define TK_AS 163 -#define TK_INDEX 164 -#define TK_FUNCTION 165 -#define TK_INTERVAL 166 -#define TK_COUNT 167 -#define TK_LAST_ROW 168 -#define TK_TOPIC 169 -#define TK_WITH 170 -#define TK_META 171 -#define TK_CONSUMER 172 -#define TK_GROUP 173 -#define TK_DESC 174 -#define TK_DESCRIBE 175 -#define TK_RESET 176 -#define TK_QUERY 177 -#define TK_CACHE 178 -#define TK_EXPLAIN 179 -#define TK_ANALYZE 180 -#define TK_VERBOSE 181 -#define TK_NK_BOOL 182 -#define TK_RATIO 183 -#define TK_NK_FLOAT 184 -#define TK_OUTPUTTYPE 185 -#define TK_AGGREGATE 186 -#define TK_BUFSIZE 187 -#define TK_STREAM 188 -#define TK_INTO 189 -#define TK_TRIGGER 190 -#define TK_AT_ONCE 191 -#define TK_WINDOW_CLOSE 192 -#define TK_IGNORE 193 -#define TK_EXPIRED 194 -#define TK_FILL_HISTORY 195 -#define TK_SUBTABLE 196 -#define TK_KILL 197 -#define TK_CONNECTION 198 -#define TK_TRANSACTION 199 -#define TK_BALANCE 200 -#define TK_VGROUP 201 -#define TK_MERGE 202 -#define TK_REDISTRIBUTE 203 -#define TK_SPLIT 204 -#define TK_DELETE 205 -#define TK_INSERT 206 -#define TK_NULL 207 -#define TK_NK_QUESTION 208 -#define TK_NK_ARROW 209 -#define TK_ROWTS 210 -#define TK_QSTART 211 -#define TK_QEND 212 -#define TK_QDURATION 213 -#define TK_WSTART 214 -#define TK_WEND 215 -#define TK_WDURATION 216 -#define TK_IROWTS 217 -#define TK_ISFILLED 218 -#define TK_CAST 219 -#define TK_NOW 220 -#define TK_TODAY 221 -#define TK_TIMEZONE 222 -#define TK_CLIENT_VERSION 223 -#define TK_SERVER_VERSION 224 -#define TK_SERVER_STATUS 225 -#define TK_CURRENT_USER 226 -#define TK_CASE 227 -#define TK_END 228 -#define TK_WHEN 229 -#define TK_THEN 230 -#define TK_ELSE 231 -#define TK_BETWEEN 232 -#define TK_IS 233 -#define TK_NK_LT 234 -#define TK_NK_GT 235 -#define TK_NK_LE 236 -#define TK_NK_GE 237 -#define TK_NK_NE 238 -#define TK_MATCH 239 -#define TK_NMATCH 240 -#define TK_CONTAINS 241 -#define TK_IN 242 -#define TK_JOIN 243 -#define TK_INNER 244 -#define TK_SELECT 245 -#define TK_DISTINCT 246 -#define TK_WHERE 247 -#define TK_PARTITION 248 -#define TK_BY 249 -#define TK_SESSION 250 -#define TK_STATE_WINDOW 251 -#define TK_EVENT_WINDOW 252 -#define TK_START 253 -#define TK_SLIDING 254 -#define TK_FILL 255 -#define TK_VALUE 256 -#define TK_NONE 257 -#define TK_PREV 258 -#define TK_LINEAR 259 -#define TK_NEXT 260 -#define TK_HAVING 261 -#define TK_RANGE 262 -#define TK_EVERY 263 -#define TK_ORDER 264 -#define TK_SLIMIT 265 -#define TK_SOFFSET 266 -#define TK_LIMIT 267 -#define TK_OFFSET 268 -#define TK_ASC 269 -#define TK_NULLS 270 -#define TK_ABORT 271 -#define TK_AFTER 272 -#define TK_ATTACH 273 -#define TK_BEFORE 274 -#define TK_BEGIN 275 -#define TK_BITAND 276 -#define TK_BITNOT 277 -#define TK_BITOR 278 -#define TK_BLOCKS 279 -#define TK_CHANGE 280 -#define TK_COMMA 281 -#define TK_COMPACT 282 -#define TK_CONCAT 283 -#define TK_CONFLICT 284 -#define TK_COPY 285 -#define TK_DEFERRED 286 -#define TK_DELIMITERS 287 -#define TK_DETACH 288 -#define TK_DIVIDE 289 -#define TK_DOT 290 -#define TK_EACH 291 -#define TK_FAIL 292 -#define TK_FILE 293 -#define TK_FOR 294 -#define TK_GLOB 295 -#define TK_ID 296 -#define TK_IMMEDIATE 297 -#define TK_IMPORT 298 -#define TK_INITIALLY 299 -#define TK_INSTEAD 300 -#define TK_ISNULL 301 -#define TK_KEY 302 -#define TK_MODULES 303 -#define TK_NK_BITNOT 304 -#define TK_NK_SEMI 305 -#define TK_NOTNULL 306 -#define TK_OF 307 -#define TK_PLUS 308 -#define TK_PRIVILEGE 309 -#define TK_RAISE 310 -#define TK_REPLACE 311 -#define TK_RESTRICT 312 -#define TK_ROW 313 -#define TK_SEMI 314 -#define TK_STAR 315 -#define TK_STATEMENT 316 -#define TK_STRICT 317 -#define TK_STRING 318 -#define TK_TIMES 319 -#define TK_UPDATE 320 -#define TK_VALUES 321 -#define TK_VARIABLE 322 -#define TK_VIEW 323 -#define TK_WAL 324 +#define TK_ALIVE 160 +#define TK_LIKE 161 +#define TK_TBNAME 162 +#define TK_QTAGS 163 +#define TK_AS 164 +#define TK_INDEX 165 +#define TK_FUNCTION 166 +#define TK_INTERVAL 167 +#define TK_COUNT 168 +#define TK_LAST_ROW 169 +#define TK_TOPIC 170 +#define TK_WITH 171 +#define TK_META 172 +#define TK_CONSUMER 173 +#define TK_GROUP 174 +#define TK_DESC 175 +#define TK_DESCRIBE 176 +#define TK_RESET 177 +#define TK_QUERY 178 +#define TK_CACHE 179 +#define TK_EXPLAIN 180 +#define TK_ANALYZE 181 +#define TK_VERBOSE 182 +#define TK_NK_BOOL 183 +#define TK_RATIO 184 +#define TK_NK_FLOAT 185 +#define TK_OUTPUTTYPE 186 +#define TK_AGGREGATE 187 +#define TK_BUFSIZE 188 +#define TK_STREAM 189 +#define TK_INTO 190 +#define TK_TRIGGER 191 +#define TK_AT_ONCE 192 +#define TK_WINDOW_CLOSE 193 +#define TK_IGNORE 194 +#define TK_EXPIRED 195 +#define TK_FILL_HISTORY 196 +#define TK_SUBTABLE 197 +#define TK_KILL 198 +#define TK_CONNECTION 199 +#define TK_TRANSACTION 200 +#define TK_BALANCE 201 +#define TK_VGROUP 202 +#define TK_MERGE 203 +#define TK_REDISTRIBUTE 204 +#define TK_SPLIT 205 +#define TK_DELETE 206 +#define TK_INSERT 207 +#define TK_NULL 208 +#define TK_NK_QUESTION 209 +#define TK_NK_ARROW 210 +#define TK_ROWTS 211 +#define TK_QSTART 212 +#define TK_QEND 213 +#define TK_QDURATION 214 +#define TK_WSTART 215 +#define TK_WEND 216 +#define TK_WDURATION 217 +#define TK_IROWTS 218 +#define TK_ISFILLED 219 +#define TK_CAST 220 +#define TK_NOW 221 +#define TK_TODAY 222 +#define TK_TIMEZONE 223 +#define TK_CLIENT_VERSION 224 +#define TK_SERVER_VERSION 225 +#define TK_SERVER_STATUS 226 +#define TK_CURRENT_USER 227 +#define TK_CASE 228 +#define TK_END 229 +#define TK_WHEN 230 +#define TK_THEN 231 +#define TK_ELSE 232 +#define TK_BETWEEN 233 +#define TK_IS 234 +#define TK_NK_LT 235 +#define TK_NK_GT 236 +#define TK_NK_LE 237 +#define TK_NK_GE 238 +#define TK_NK_NE 239 +#define TK_MATCH 240 +#define TK_NMATCH 241 +#define TK_CONTAINS 242 +#define TK_IN 243 +#define TK_JOIN 244 +#define TK_INNER 245 +#define TK_SELECT 246 +#define TK_DISTINCT 247 +#define TK_WHERE 248 +#define TK_PARTITION 249 +#define TK_BY 250 +#define TK_SESSION 251 +#define TK_STATE_WINDOW 252 +#define TK_EVENT_WINDOW 253 +#define TK_START 254 +#define TK_SLIDING 255 +#define TK_FILL 256 +#define TK_VALUE 257 +#define TK_NONE 258 +#define TK_PREV 259 +#define TK_LINEAR 260 +#define TK_NEXT 261 +#define TK_HAVING 262 +#define TK_RANGE 263 +#define TK_EVERY 264 +#define TK_ORDER 265 +#define TK_SLIMIT 266 +#define TK_SOFFSET 267 +#define TK_LIMIT 268 +#define TK_OFFSET 269 +#define TK_ASC 270 +#define TK_NULLS 271 +#define TK_ABORT 272 +#define TK_AFTER 273 +#define TK_ATTACH 274 +#define TK_BEFORE 275 +#define TK_BEGIN 276 +#define TK_BITAND 277 +#define TK_BITNOT 278 +#define TK_BITOR 279 +#define TK_BLOCKS 280 +#define TK_CHANGE 281 +#define TK_COMMA 282 +#define TK_COMPACT 283 +#define TK_CONCAT 284 +#define TK_CONFLICT 285 +#define TK_COPY 286 +#define TK_DEFERRED 287 +#define TK_DELIMITERS 288 +#define TK_DETACH 289 +#define TK_DIVIDE 290 +#define TK_DOT 291 +#define TK_EACH 292 +#define TK_FAIL 293 +#define TK_FILE 294 +#define TK_FOR 295 +#define TK_GLOB 296 +#define TK_ID 297 +#define TK_IMMEDIATE 298 +#define TK_IMPORT 299 +#define TK_INITIALLY 300 +#define TK_INSTEAD 301 +#define TK_ISNULL 302 +#define TK_KEY 303 +#define TK_MODULES 304 +#define TK_NK_BITNOT 305 +#define TK_NK_SEMI 306 +#define TK_NOTNULL 307 +#define TK_OF 308 +#define TK_PLUS 309 +#define TK_PRIVILEGE 310 +#define TK_RAISE 311 +#define TK_REPLACE 312 +#define TK_RESTRICT 313 +#define TK_ROW 314 +#define TK_SEMI 315 +#define TK_STAR 316 +#define TK_STATEMENT 317 +#define TK_STRICT 318 +#define TK_STRING 319 +#define TK_TIMES 320 +#define TK_UPDATE 321 +#define TK_VALUES 322 +#define TK_VARIABLE 323 +#define TK_VIEW 324 +#define TK_WAL 325 #define TK_NK_SPACE 600 #define TK_NK_COMMENT 601 diff --git a/include/libs/command/command.h b/include/libs/command/command.h index b3339a417b..a8b1a0902a 100644 --- a/include/libs/command/command.h +++ b/include/libs/command/command.h @@ -22,7 +22,7 @@ typedef struct SExplainCtx SExplainCtx; -int32_t qExecCommand(bool sysInfoUser, SNode *pStmt, SRetrieveTableRsp **pRsp); +int32_t qExecCommand(int64_t* pConnId, bool sysInfoUser, SNode *pStmt, SRetrieveTableRsp **pRsp); int32_t qExecStaticExplain(SQueryPlan *pDag, SRetrieveTableRsp **pRsp); int32_t qExecExplainBegin(SQueryPlan *pDag, SExplainCtx **pCtx, int64_t startTs); diff --git a/include/libs/nodes/cmdnodes.h b/include/libs/nodes/cmdnodes.h index 22b8381aef..b6461b1976 100644 --- a/include/libs/nodes/cmdnodes.h +++ b/include/libs/nodes/cmdnodes.h @@ -40,6 +40,7 @@ extern "C" { #define SHOW_LOCAL_VARIABLES_RESULT_FIELD1_LEN (TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE) #define SHOW_LOCAL_VARIABLES_RESULT_FIELD2_LEN (TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE) +#define SHOW_ALIVE_RESULT_COLS 1 #define PRIVILEGE_TYPE_MASK(n) (1 << n) #define PRIVILEGE_TYPE_ALL PRIVILEGE_TYPE_MASK(0) @@ -262,6 +263,11 @@ typedef struct SShowCreateDatabaseStmt { void* pCfg; // SDbCfgInfo } SShowCreateDatabaseStmt; +typedef struct SShowAliveStmt { + ENodeType type; + char dbName[TSDB_DB_NAME_LEN]; +} SShowAliveStmt; + typedef struct SShowCreateTableStmt { ENodeType type; char dbName[TSDB_DB_NAME_LEN]; diff --git a/include/libs/nodes/nodes.h b/include/libs/nodes/nodes.h index e111f36077..24b436ec99 100644 --- a/include/libs/nodes/nodes.h +++ b/include/libs/nodes/nodes.h @@ -208,6 +208,8 @@ typedef enum ENodeType { QUERY_NODE_DELETE_STMT, QUERY_NODE_INSERT_STMT, QUERY_NODE_QUERY, + QUERY_NODE_SHOW_DB_ALIVE_STMT, + QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT, // logic plan node QUERY_NODE_LOGIC_PLAN_SCAN = 1000, diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 6f61d59846..75288cfa14 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -272,7 +272,7 @@ int32_t parseSql(SRequestObj* pRequest, bool topicQuery, SQuery** pQuery, SStmtC int32_t execLocalCmd(SRequestObj* pRequest, SQuery* pQuery) { SRetrieveTableRsp* pRsp = NULL; - int32_t code = qExecCommand(pRequest->pTscObj->sysInfo, pQuery->pRoot, &pRsp); + int32_t code = qExecCommand(&pRequest->pTscObj->id, pRequest->pTscObj->sysInfo, pQuery->pRoot, &pRsp); if (TSDB_CODE_SUCCESS == code && NULL != pRsp) { code = setQueryResultFromRsp(&pRequest->body.resInfo, pRsp, false, true); } @@ -310,7 +310,7 @@ void asyncExecLocalCmd(SRequestObj* pRequest, SQuery* pQuery) { return; } - int32_t code = qExecCommand(pRequest->pTscObj->sysInfo, pQuery->pRoot, &pRsp); + int32_t code = qExecCommand(&pRequest->pTscObj->id ,pRequest->pTscObj->sysInfo, pQuery->pRoot, &pRsp); if (TSDB_CODE_SUCCESS == code && NULL != pRsp) { code = setQueryResultFromRsp(&pRequest->body.resInfo, pRsp, false, true); } diff --git a/source/libs/command/src/command.c b/source/libs/command/src/command.c index a179ec24f9..538ce64a97 100644 --- a/source/libs/command/src/command.c +++ b/source/libs/command/src/command.c @@ -21,6 +21,7 @@ #include "tdatablock.h" #include "tglobal.h" #include "tgrant.h" +#include "taosdef.h" extern SConfig* tsCfg; @@ -154,6 +155,23 @@ static int32_t buildCreateDBResultDataBlock(SSDataBlock** pOutput) { return code; } +static int32_t buildAliveResultDataBlock(SSDataBlock** pOutput) { + SSDataBlock* pBlock = createDataBlock(); + if (NULL == pBlock) { + return TSDB_CODE_OUT_OF_MEMORY; + } + + SColumnInfoData infoData = createColumnInfoData(TSDB_DATA_TYPE_INT, sizeof(int32_t), 1); + int32_t code = blockDataAppendColInfo(pBlock, &infoData); + + if (TSDB_CODE_SUCCESS == code) { + *pOutput = pBlock; + } else { + blockDataDestroy(pBlock); + } + return code; +} + int64_t getValOfDiffPrecision(int8_t unit, int64_t val) { int64_t v = 0; switch (unit) { @@ -281,6 +299,108 @@ static void setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbFName, S colDataAppend(pCol2, 0, buf2, false); } +#define CHECK_LEADER(n) (row[n] && (fields[n].type == TSDB_DATA_TYPE_VARCHAR && strncasecmp(row[n], "leader", varDataLen((char *)row[n] - VARSTR_HEADER_SIZE)) == 0)) +// on this row, if have leader return true else return false +bool existLeaderRole(TAOS_ROW row, TAOS_FIELD* fields, int nFields) { + // vgroup_id | db_name | tables | v1_dnode | v1_status | v2_dnode | v2_status | v3_dnode | v3_status | v4_dnode | + // v4_status | cacheload | tsma | + if (nFields != 13) { + return false; + } + + // check have leader on cloumn v*_status on 4 6 8 10 + if (CHECK_LEADER(4) || CHECK_LEADER(6) || CHECK_LEADER(8) || CHECK_LEADER(10)) { + return true; + } + + return false; +} + +// get db alive status, return 1 is alive else return 0 +int32_t getAliveStatusFromApi(int64_t* pConnId, char* dbName, int32_t* pStatus) { + char sql[128 + TSDB_DB_NAME_LEN] = "select * from information_schema.ins_vgroups"; + int32_t code; + + // filter with db name + if (dbName && dbName[0] != 0) { + char str[64 + TSDB_DB_NAME_LEN] = ""; + // test db name exist + sprintf(str, "show create database %s ;", dbName); + TAOS_RES* dbRes = taos_query(pConnId, str); + code = taos_errno(dbRes); + if (code != TSDB_CODE_SUCCESS) { + taos_free_result(dbRes); + return code; + } + taos_free_result(dbRes); + + sprintf(str, " where db_name='%s' ;", dbName); + strcat(sql, str); + } + + TAOS_RES* res = taos_query(pConnId, sql); + code = taos_errno(res); + if (code != TSDB_CODE_SUCCESS) { + taos_free_result(res); + return code; + } + + TAOS_ROW row = NULL; + TAOS_FIELD* fields = taos_fetch_fields(res); + int32_t nFields = taos_num_fields(res); + int32_t nAvailble = 0; + int32_t nUnAvailble = 0; + + while ((row = taos_fetch_row(res)) != NULL) { + if (existLeaderRole(row, fields, nFields)) { + nAvailble++; + } else { + nUnAvailble++; + } + } + taos_free_result(res); + + int32_t status = 0; + if (nAvailble + nUnAvailble == 0 || nUnAvailble == 0) { + status = SHOW_STATUS_AVAILABLE; + } else if (nAvailble > 0 && nUnAvailble > 0) { + status = SHOW_STATUS_HALF_AVAILABLE; + } else { + status = SHOW_STATUS_NOT_AVAILABLE; + } + + if (pStatus) { + *pStatus = status; + } + return TSDB_CODE_SUCCESS; +} + +static int32_t setAliveResultIntoDataBlock(int64_t* pConnId, SSDataBlock* pBlock, char* dbName) { + blockDataEnsureCapacity(pBlock, 1); + pBlock->info.rows = 1; + + SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0); + int32_t status = 0; + int32_t code = getAliveStatusFromApi(pConnId, dbName, &status); + if (code == TSDB_CODE_SUCCESS) { + colDataAppend(pCol1, 0, (const char*)&status, false); + } + return code; +} + +static int32_t execShowAliveStatus(int64_t* pConnId, SShowAliveStmt* pStmt, SRetrieveTableRsp** pRsp) { + SSDataBlock* pBlock = NULL; + int32_t code = buildAliveResultDataBlock(&pBlock); + if (TSDB_CODE_SUCCESS == code) { + code = setAliveResultIntoDataBlock(pConnId, pBlock, pStmt->dbName); + } + if (TSDB_CODE_SUCCESS == code) { + code = buildRetrieveTableRsp(pBlock, SHOW_ALIVE_RESULT_COLS, pRsp); + } + blockDataDestroy(pBlock); + return code; +} + static int32_t execShowCreateDatabase(SShowCreateDatabaseStmt* pStmt, SRetrieveTableRsp** pRsp) { SSDataBlock* pBlock = NULL; int32_t code = buildCreateDBResultDataBlock(&pBlock); @@ -736,7 +856,7 @@ static int32_t execSelectWithoutFrom(SSelectStmt* pSelect, SRetrieveTableRsp** p return code; } -int32_t qExecCommand(bool sysInfoUser, SNode* pStmt, SRetrieveTableRsp** pRsp) { +int32_t qExecCommand(int64_t* pConnId, bool sysInfoUser, SNode* pStmt, SRetrieveTableRsp** pRsp) { switch (nodeType(pStmt)) { case QUERY_NODE_DESCRIBE_STMT: return execDescribe(sysInfoUser, pStmt, pRsp); @@ -754,6 +874,9 @@ int32_t qExecCommand(bool sysInfoUser, SNode* pStmt, SRetrieveTableRsp** pRsp) { return execShowLocalVariables(pRsp); case QUERY_NODE_SELECT_STMT: return execSelectWithoutFrom((SSelectStmt*)pStmt, pRsp); + case QUERY_NODE_SHOW_DB_ALIVE_STMT: + case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT: + return execShowAliveStatus(pConnId, (SShowAliveStmt*)pStmt, pRsp); default: break; } diff --git a/source/libs/nodes/src/nodesCodeFuncs.c b/source/libs/nodes/src/nodesCodeFuncs.c index e9ec2ce306..c17077950f 100644 --- a/source/libs/nodes/src/nodesCodeFuncs.c +++ b/source/libs/nodes/src/nodesCodeFuncs.c @@ -173,6 +173,10 @@ const char* nodesNodeName(ENodeType type) { return "BalanceVgroupStmt"; case QUERY_NODE_MERGE_VGROUP_STMT: return "MergeVgroupStmt"; + case QUERY_NODE_SHOW_DB_ALIVE_STMT: + return "ShowDbAliveStmt"; + case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT: + return "ShowClusterAliveStmt"; case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT: return "RedistributeVgroupStmt"; case QUERY_NODE_SPLIT_VGROUP_STMT: diff --git a/source/libs/nodes/src/nodesUtilFuncs.c b/source/libs/nodes/src/nodesUtilFuncs.c index dd06326dcb..61bb3778fa 100644 --- a/source/libs/nodes/src/nodesUtilFuncs.c +++ b/source/libs/nodes/src/nodesUtilFuncs.c @@ -434,6 +434,9 @@ SNode* nodesMakeNode(ENodeType type) { return makeNode(type, sizeof(SShowDnodeVariablesStmt)); case QUERY_NODE_SHOW_CREATE_DATABASE_STMT: return makeNode(type, sizeof(SShowCreateDatabaseStmt)); + case QUERY_NODE_SHOW_DB_ALIVE_STMT: + case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT: + return makeNode(type, sizeof(SShowAliveStmt)); case QUERY_NODE_SHOW_CREATE_TABLE_STMT: case QUERY_NODE_SHOW_CREATE_STABLE_STMT: return makeNode(type, sizeof(SShowCreateTableStmt)); @@ -960,6 +963,8 @@ void nodesDestroyNode(SNode* pNode) { case QUERY_NODE_SHOW_USERS_STMT: case QUERY_NODE_SHOW_LICENCES_STMT: case QUERY_NODE_SHOW_VGROUPS_STMT: + case QUERY_NODE_SHOW_DB_ALIVE_STMT: + case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT: case QUERY_NODE_SHOW_TOPICS_STMT: case QUERY_NODE_SHOW_CONSUMERS_STMT: case QUERY_NODE_SHOW_CONNECTIONS_STMT: diff --git a/source/libs/parser/inc/parAst.h b/source/libs/parser/inc/parAst.h index 1d20ae83a2..61fe781f49 100644 --- a/source/libs/parser/inc/parAst.h +++ b/source/libs/parser/inc/parAst.h @@ -176,6 +176,7 @@ SNode* createShowStmt(SAstCreateContext* pCxt, ENodeType type); SNode* createShowStmtWithCond(SAstCreateContext* pCxt, ENodeType type, SNode* pDbName, SNode* pTbName, EOperatorType tableCondType); SNode* createShowCreateDatabaseStmt(SAstCreateContext* pCxt, SToken* pDbName); +SNode* createShowAliveStmt(SAstCreateContext* pCxt, SNode* pDbName, ENodeType type); SNode* createShowCreateTableStmt(SAstCreateContext* pCxt, ENodeType type, SNode* pRealTable); SNode* createShowTableDistributedStmt(SAstCreateContext* pCxt, SNode* pRealTable); SNode* createShowDnodeVariablesStmt(SAstCreateContext* pCxt, SNode* pDnodeId, SNode* pLikePattern); diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 9dfea07b81..6a21a5c9fe 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -433,6 +433,9 @@ cmd ::= SHOW TAGS FROM table_name_cond(A) from_db_opt(B). cmd ::= SHOW TABLE TAGS tag_list_opt(C) FROM table_name_cond(A) from_db_opt(B). { pCxt->pRootNode = createShowTableTagsStmt(pCxt, A, B, C); } cmd ::= SHOW VNODES NK_INTEGER(A). { pCxt->pRootNode = createShowVnodesStmt(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &A), NULL); } cmd ::= SHOW VNODES NK_STRING(A). { pCxt->pRootNode = createShowVnodesStmt(pCxt, NULL, createValueNode(pCxt, TSDB_DATA_TYPE_VARCHAR, &A)); } +// show alive +cmd ::= SHOW db_name_cond_opt(A) ALIVE. { pCxt->pRootNode = createShowAliveStmt(pCxt, A, QUERY_NODE_SHOW_DB_ALIVE_STMT); } +cmd ::= SHOW CLUSTER ALIVE. { pCxt->pRootNode = createShowAliveStmt(pCxt, NULL, QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT); } db_name_cond_opt(A) ::= . { A = createDefaultDatabaseCondValue(pCxt); } db_name_cond_opt(A) ::= db_name(B) NK_DOT. { A = createIdentifierValueNode(pCxt, &B); } diff --git a/source/libs/parser/src/parAstCreater.c b/source/libs/parser/src/parAstCreater.c index 2384866620..4de51f3350 100644 --- a/source/libs/parser/src/parAstCreater.c +++ b/source/libs/parser/src/parAstCreater.c @@ -1370,6 +1370,38 @@ SNode* createShowCreateDatabaseStmt(SAstCreateContext* pCxt, SToken* pDbName) { return (SNode*)pStmt; } +SNode* createShowAliveStmt(SAstCreateContext* pCxt, SNode* pNode, ENodeType type) { + CHECK_PARSER_STATUS(pCxt); + SToken dbToken = {0}; + SToken* pDbToken = NULL; + + if (pNode) { + SValueNode* pDbName = (SValueNode*)pNode; + if (pDbName->literal) { + dbToken.z = pDbName->literal; + dbToken.n = strlen(pDbName->literal); + pDbToken = &dbToken; + } + } + + if (pDbToken && !checkDbName(pCxt, pDbToken, true)) { + nodesDestroyNode(pNode); + return NULL; + } + + SShowAliveStmt* pStmt = (SShowAliveStmt*)nodesMakeNode(type); + CHECK_OUT_OF_MEM(pStmt); + + if (pDbToken) { + COPY_STRING_FORM_ID_TOKEN(pStmt->dbName, pDbToken); + } + if (pNode) { + nodesDestroyNode(pNode); + } + + return (SNode*)pStmt; +} + SNode* createShowCreateTableStmt(SAstCreateContext* pCxt, ENodeType type, SNode* pRealTable) { CHECK_PARSER_STATUS(pCxt); SShowCreateTableStmt* pStmt = (SShowCreateTableStmt*)nodesMakeNode(type); diff --git a/source/libs/parser/src/parAuthenticator.c b/source/libs/parser/src/parAuthenticator.c index d99d7d7445..e4de60fd05 100644 --- a/source/libs/parser/src/parAuthenticator.c +++ b/source/libs/parser/src/parAuthenticator.c @@ -145,6 +145,8 @@ static int32_t authQuery(SAuthCxt* pCxt, SNode* pStmt) { case QUERY_NODE_SHOW_CLUSTER_STMT: case QUERY_NODE_SHOW_LICENCES_STMT: case QUERY_NODE_SHOW_VGROUPS_STMT: + case QUERY_NODE_SHOW_DB_ALIVE_STMT: + case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT: case QUERY_NODE_SHOW_CREATE_DATABASE_STMT: case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT: case QUERY_NODE_SHOW_VNODES_STMT: diff --git a/source/libs/parser/src/parTokenizer.c b/source/libs/parser/src/parTokenizer.c index 94b32a3de2..cacb6f3c3b 100644 --- a/source/libs/parser/src/parTokenizer.c +++ b/source/libs/parser/src/parTokenizer.c @@ -269,6 +269,7 @@ static SKeyword keywordTable[] = { {"_WDURATION", TK_WDURATION}, {"_WEND", TK_WEND}, {"_WSTART", TK_WSTART}, + {"ALIVE", TK_ALIVE}, }; // clang-format on diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 3b2c19f279..7cebe4a67c 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -6229,6 +6229,20 @@ static int32_t extractShowCreateDatabaseResultSchema(int32_t* numOfCols, SSchema return TSDB_CODE_SUCCESS; } +static int32_t extractShowAliveResultSchema(int32_t* numOfCols, SSchema** pSchema) { + *numOfCols = 1; + *pSchema = taosMemoryCalloc((*numOfCols), sizeof(SSchema)); + if (NULL == (*pSchema)) { + return TSDB_CODE_OUT_OF_MEMORY; + } + + (*pSchema)[0].type = TSDB_DATA_TYPE_INT; + (*pSchema)[0].bytes = sizeof(int32_t); + strcpy((*pSchema)[0].name, "status"); + + return TSDB_CODE_SUCCESS; +} + static int32_t extractShowCreateTableResultSchema(int32_t* numOfCols, SSchema** pSchema) { *numOfCols = 2; *pSchema = taosMemoryCalloc((*numOfCols), sizeof(SSchema)); @@ -6280,6 +6294,9 @@ int32_t extractResultSchema(const SNode* pRoot, int32_t* numOfCols, SSchema** pS return extractDescribeResultSchema(numOfCols, pSchema); case QUERY_NODE_SHOW_CREATE_DATABASE_STMT: return extractShowCreateDatabaseResultSchema(numOfCols, pSchema); + case QUERY_NODE_SHOW_DB_ALIVE_STMT: + case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT: + return extractShowAliveResultSchema(numOfCols, pSchema); case QUERY_NODE_SHOW_CREATE_TABLE_STMT: case QUERY_NODE_SHOW_CREATE_STABLE_STMT: return extractShowCreateTableResultSchema(numOfCols, pSchema); @@ -7799,6 +7816,8 @@ static int32_t setQuery(STranslateContext* pCxt, SQuery* pQuery) { break; case QUERY_NODE_DESCRIBE_STMT: case QUERY_NODE_SHOW_CREATE_DATABASE_STMT: + case QUERY_NODE_SHOW_DB_ALIVE_STMT: + case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT: case QUERY_NODE_SHOW_CREATE_TABLE_STMT: case QUERY_NODE_SHOW_CREATE_STABLE_STMT: case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT: diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index 9449b60d5c..d91c75129a 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -104,26 +104,26 @@ #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned short int -#define YYNOCODE 461 +#define YYNOCODE 462 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE SToken typedef union { int yyinit; ParseTOKENTYPE yy0; - EOrder yy32; - SToken yy77; - int32_t yy248; - int8_t yy287; - ENullOrder yy385; - EJoinType yy560; - SNode* yy600; - SNodeList* yy601; - SAlterOption yy661; - EOperatorType yy666; - int64_t yy717; - EFillMode yy798; - bool yy841; - SDataType yy888; + int8_t yy47; + EOperatorType yy128; + EJoinType yy288; + SNodeList* yy376; + SNode* yy476; + int32_t yy508; + SDataType yy532; + EOrder yy554; + EFillMode yy690; + ENullOrder yy697; + SToken yy701; + bool yy845; + SAlterOption yy893; + int64_t yy921; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 100 @@ -139,17 +139,18 @@ typedef union { #define ParseCTX_FETCH #define ParseCTX_STORE #define YYFALLBACK 1 -#define YYNSTATE 722 -#define YYNRULE 546 -#define YYNTOKEN 325 -#define YY_MAX_SHIFT 721 -#define YY_MIN_SHIFTREDUCE 1069 -#define YY_MAX_SHIFTREDUCE 1614 -#define YY_ERROR_ACTION 1615 -#define YY_ACCEPT_ACTION 1616 -#define YY_NO_ACTION 1617 -#define YY_MIN_REDUCE 1618 -#define YY_MAX_REDUCE 2163 +#define YYNSTATE 724 +#define YYNRULE 548 +#define YYNRULE_WITH_ACTION 548 +#define YYNTOKEN 326 +#define YY_MAX_SHIFT 723 +#define YY_MIN_SHIFTREDUCE 1071 +#define YY_MAX_SHIFTREDUCE 1618 +#define YY_ERROR_ACTION 1619 +#define YY_ACCEPT_ACTION 1620 +#define YY_NO_ACTION 1621 +#define YY_MIN_REDUCE 1622 +#define YY_MAX_REDUCE 2169 /************* End control #defines *******************************************/ #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) @@ -216,812 +217,811 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (3069) +#define YY_ACTTAB_COUNT (2895) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 35, 280, 465, 1886, 466, 1654, 474, 372, 466, 1654, - /* 10 */ 1817, 1819, 45, 43, 1544, 1964, 1884, 598, 1760, 471, - /* 20 */ 367, 412, 1394, 38, 37, 467, 1960, 44, 42, 41, - /* 30 */ 40, 39, 172, 1474, 464, 1392, 232, 469, 1660, 1801, - /* 40 */ 576, 610, 38, 37, 2134, 547, 44, 42, 41, 40, - /* 50 */ 39, 8, 610, 338, 1871, 1956, 1962, 349, 1469, 575, - /* 60 */ 178, 324, 190, 18, 2135, 577, 621, 38, 37, 1977, - /* 70 */ 1400, 44, 42, 41, 40, 39, 473, 1420, 588, 469, - /* 80 */ 1660, 38, 37, 45, 43, 44, 42, 41, 40, 39, - /* 90 */ 2139, 367, 174, 1394, 1618, 14, 139, 331, 81, 2036, - /* 100 */ 1995, 80, 60, 27, 1474, 1811, 1392, 1421, 591, 137, - /* 110 */ 162, 1581, 1630, 1946, 611, 627, 48, 718, 128, 127, - /* 120 */ 126, 125, 124, 123, 122, 121, 120, 48, 129, 1469, - /* 130 */ 103, 163, 1476, 1477, 18, 504, 1725, 448, 1503, 1976, - /* 140 */ 64, 1400, 483, 2012, 138, 1771, 106, 1978, 631, 1980, - /* 150 */ 1981, 626, 1763, 621, 1419, 2139, 1824, 149, 175, 2134, - /* 160 */ 2065, 1449, 1459, 355, 361, 2061, 14, 1475, 1478, 260, - /* 170 */ 2073, 587, 1822, 130, 586, 2138, 610, 2134, 180, 2135, - /* 180 */ 2137, 2139, 1395, 1604, 1393, 2134, 2091, 533, 718, 1271, - /* 190 */ 1272, 263, 575, 178, 1504, 194, 193, 2135, 577, 49, - /* 200 */ 531, 2138, 529, 1476, 1477, 2135, 2136, 1398, 1399, 53, - /* 210 */ 1448, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 623, - /* 220 */ 619, 1467, 1468, 1470, 1471, 1472, 1473, 2, 60, 60, - /* 230 */ 89, 60, 1449, 1459, 2080, 1419, 159, 119, 1475, 1478, - /* 240 */ 118, 117, 116, 115, 114, 113, 112, 111, 110, 571, - /* 250 */ 262, 230, 181, 1395, 2080, 1393, 1537, 38, 37, 1641, - /* 260 */ 2077, 44, 42, 41, 40, 39, 34, 365, 1498, 1499, - /* 270 */ 1500, 1501, 1502, 1506, 1507, 1508, 1509, 181, 1398, 1399, - /* 280 */ 2076, 1448, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, - /* 290 */ 623, 619, 1467, 1468, 1470, 1471, 1472, 1473, 2, 401, - /* 300 */ 11, 45, 43, 1946, 1964, 1394, 1548, 1640, 1995, 367, - /* 310 */ 413, 1394, 1419, 86, 326, 1960, 570, 537, 1392, 535, - /* 320 */ 403, 399, 1474, 414, 1392, 1228, 653, 652, 651, 1232, - /* 330 */ 650, 1234, 1235, 649, 1237, 646, 1687, 1243, 643, 1245, - /* 340 */ 1246, 640, 637, 216, 1956, 1962, 362, 1469, 160, 181, - /* 350 */ 406, 1946, 18, 1400, 1824, 621, 569, 1774, 167, 1400, - /* 360 */ 1121, 360, 1120, 665, 500, 496, 492, 488, 213, 1639, - /* 370 */ 1822, 1638, 45, 43, 1479, 215, 1324, 1325, 181, 181, - /* 380 */ 367, 181, 1394, 1824, 14, 44, 42, 41, 40, 39, - /* 390 */ 371, 1122, 552, 1474, 657, 1392, 2134, 1815, 1637, 1822, - /* 400 */ 718, 519, 518, 517, 85, 1102, 718, 211, 1619, 134, - /* 410 */ 513, 2140, 178, 1946, 512, 1946, 2135, 577, 1469, 511, - /* 420 */ 516, 1476, 1477, 1611, 1636, 510, 271, 272, 1400, 119, - /* 430 */ 1400, 270, 118, 117, 116, 115, 114, 113, 112, 111, - /* 440 */ 110, 588, 1946, 1420, 1104, 661, 1107, 1108, 1815, 1886, - /* 450 */ 1449, 1459, 611, 1450, 1824, 46, 1475, 1478, 1121, 358, - /* 460 */ 1120, 335, 1883, 598, 611, 1395, 54, 1393, 1946, 618, - /* 470 */ 1822, 1395, 137, 1393, 210, 204, 1635, 718, 183, 209, - /* 480 */ 38, 37, 479, 1771, 44, 42, 41, 40, 39, 1122, - /* 490 */ 1398, 1399, 1476, 1477, 84, 1771, 1398, 1399, 202, 1448, - /* 500 */ 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 623, 619, - /* 510 */ 1467, 1468, 1470, 1471, 1472, 1473, 2, 1767, 1610, 1421, - /* 520 */ 1946, 1449, 1459, 588, 1188, 1634, 576, 1475, 1478, 611, - /* 530 */ 2134, 590, 176, 2073, 2074, 611, 135, 2078, 1419, 519, - /* 540 */ 518, 517, 1395, 410, 1393, 575, 178, 134, 513, 411, - /* 550 */ 2135, 577, 512, 1633, 137, 1339, 1340, 511, 516, 1190, - /* 560 */ 1771, 1977, 1632, 510, 1818, 1819, 1771, 1398, 1399, 1946, - /* 570 */ 1448, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 623, - /* 580 */ 619, 1467, 1468, 1470, 1471, 1472, 1473, 2, 45, 43, - /* 590 */ 1338, 1341, 1995, 1749, 84, 359, 367, 1946, 1394, 1418, - /* 600 */ 628, 1616, 613, 160, 2037, 1946, 1946, 627, 133, 1474, - /* 610 */ 231, 1392, 1773, 1495, 177, 2073, 2074, 1766, 135, 2078, - /* 620 */ 38, 37, 1977, 2080, 44, 42, 41, 40, 39, 524, - /* 630 */ 566, 1976, 1422, 611, 1469, 2012, 656, 1571, 106, 1978, - /* 640 */ 631, 1980, 1981, 626, 534, 621, 1400, 129, 140, 2075, - /* 650 */ 146, 2036, 2065, 1995, 509, 483, 361, 2061, 229, 45, - /* 660 */ 43, 628, 262, 611, 1771, 382, 1946, 367, 627, 1394, - /* 670 */ 11, 46, 9, 527, 1629, 1371, 1372, 420, 521, 1628, - /* 680 */ 1474, 1824, 1392, 228, 1762, 60, 563, 1569, 1570, 1572, - /* 690 */ 1573, 1933, 1976, 718, 1771, 1960, 2012, 1823, 611, 164, - /* 700 */ 1978, 631, 1980, 1981, 626, 1469, 621, 552, 1476, 1477, - /* 710 */ 1867, 2134, 281, 1627, 572, 567, 561, 1400, 1946, 67, - /* 720 */ 1748, 186, 66, 1946, 1956, 1962, 2140, 178, 1626, 1771, - /* 730 */ 1484, 2135, 577, 13, 12, 621, 1419, 1449, 1459, 389, - /* 740 */ 553, 2102, 14, 1475, 1478, 611, 38, 37, 1505, 1747, - /* 750 */ 44, 42, 41, 40, 39, 31, 172, 1946, 1395, 434, - /* 760 */ 1393, 38, 37, 1867, 718, 44, 42, 41, 40, 39, - /* 770 */ 1967, 405, 1946, 404, 188, 240, 1771, 1422, 1872, 1476, - /* 780 */ 1477, 1746, 1625, 1398, 1399, 1419, 1448, 1451, 1452, 1453, - /* 790 */ 1454, 1455, 1456, 1457, 1458, 623, 619, 1467, 1468, 1470, - /* 800 */ 1471, 1472, 1473, 2, 41, 40, 39, 611, 1449, 1459, - /* 810 */ 323, 665, 1417, 11, 1475, 1478, 370, 97, 1969, 442, - /* 820 */ 32, 435, 455, 580, 160, 454, 1946, 663, 1517, 1395, - /* 830 */ 1510, 1393, 1624, 1773, 1560, 181, 373, 1422, 1771, 1764, - /* 840 */ 426, 1965, 456, 1541, 160, 428, 151, 150, 660, 659, - /* 850 */ 658, 148, 1960, 1773, 1398, 1399, 677, 1448, 1451, 1452, - /* 860 */ 1453, 1454, 1455, 1456, 1457, 1458, 623, 619, 1467, 1468, - /* 870 */ 1470, 1471, 1472, 1473, 2, 1623, 1946, 1450, 515, 514, - /* 880 */ 161, 1956, 1962, 33, 52, 300, 339, 1684, 663, 38, - /* 890 */ 37, 551, 621, 44, 42, 41, 40, 39, 416, 298, - /* 900 */ 70, 2138, 615, 69, 2037, 689, 687, 151, 150, 660, - /* 910 */ 659, 658, 148, 1867, 662, 294, 1756, 1815, 1801, 1946, - /* 920 */ 187, 198, 461, 459, 192, 678, 1450, 1741, 452, 1107, - /* 930 */ 1108, 447, 446, 445, 444, 441, 440, 439, 438, 437, - /* 940 */ 433, 432, 431, 430, 340, 423, 422, 421, 594, 418, - /* 950 */ 417, 337, 695, 694, 693, 692, 377, 60, 691, 690, - /* 960 */ 141, 685, 684, 683, 682, 681, 680, 679, 153, 675, - /* 970 */ 674, 673, 376, 375, 670, 669, 668, 667, 666, 1622, - /* 980 */ 239, 611, 663, 1621, 1758, 611, 380, 1854, 379, 508, - /* 990 */ 552, 2085, 1537, 611, 2134, 481, 105, 1613, 1614, 482, - /* 1000 */ 1977, 151, 150, 660, 659, 658, 148, 1768, 1754, 2140, - /* 1010 */ 178, 507, 1771, 71, 2135, 577, 1771, 50, 143, 3, - /* 1020 */ 131, 583, 221, 1946, 1771, 219, 235, 1946, 552, 611, - /* 1030 */ 552, 1995, 2134, 1403, 2134, 1674, 78, 77, 409, 591, - /* 1040 */ 588, 185, 611, 145, 1946, 581, 627, 2140, 178, 2140, - /* 1050 */ 178, 1631, 2135, 577, 2135, 577, 548, 520, 540, 322, - /* 1060 */ 1771, 611, 397, 79, 395, 391, 387, 384, 381, 622, - /* 1070 */ 1976, 137, 1977, 1771, 2012, 592, 62, 106, 1978, 631, - /* 1080 */ 1980, 1981, 626, 611, 621, 1540, 1402, 223, 244, 175, - /* 1090 */ 222, 2065, 1771, 1667, 655, 361, 2061, 596, 611, 611, - /* 1100 */ 552, 1665, 225, 1995, 2134, 224, 227, 181, 611, 226, - /* 1110 */ 343, 628, 597, 275, 1771, 522, 1946, 2092, 627, 2140, - /* 1120 */ 178, 238, 606, 525, 2135, 577, 1977, 611, 1568, 1771, - /* 1130 */ 1771, 179, 2073, 2074, 149, 135, 2078, 1726, 429, 1771, - /* 1140 */ 246, 608, 1976, 13, 12, 102, 2012, 47, 2105, 106, - /* 1150 */ 1978, 631, 1980, 1981, 626, 99, 621, 1995, 1771, 268, - /* 1160 */ 87, 2154, 579, 2065, 68, 628, 257, 361, 2061, 214, - /* 1170 */ 1946, 344, 627, 342, 341, 147, 506, 564, 2099, 251, - /* 1180 */ 508, 611, 1406, 611, 149, 62, 595, 1977, 47, 47, - /* 1190 */ 1661, 635, 147, 1996, 149, 374, 1976, 609, 378, 1336, - /* 1200 */ 2012, 132, 507, 106, 1978, 631, 1980, 1981, 626, 1876, - /* 1210 */ 621, 273, 1771, 1655, 1771, 2154, 603, 2065, 1995, 1150, - /* 1220 */ 147, 361, 2061, 1812, 2095, 671, 628, 277, 364, 363, - /* 1230 */ 672, 1946, 2112, 627, 589, 1405, 1221, 1511, 1408, 713, - /* 1240 */ 1460, 293, 1, 1249, 1253, 584, 1260, 1169, 259, 1474, - /* 1250 */ 1977, 1401, 1167, 1258, 1151, 256, 4, 1976, 383, 388, - /* 1260 */ 336, 2012, 1358, 288, 106, 1978, 631, 1980, 1981, 626, - /* 1270 */ 1977, 621, 152, 191, 1469, 415, 2154, 1422, 2065, 1877, - /* 1280 */ 419, 1995, 361, 2061, 450, 424, 1400, 1417, 436, 628, - /* 1290 */ 1869, 443, 449, 559, 1946, 451, 627, 457, 195, 458, - /* 1300 */ 460, 1995, 462, 1423, 463, 1425, 475, 201, 472, 628, - /* 1310 */ 1420, 476, 203, 1424, 1946, 1426, 627, 477, 478, 480, - /* 1320 */ 1976, 206, 484, 208, 2012, 82, 83, 106, 1978, 631, - /* 1330 */ 1980, 1981, 626, 617, 621, 212, 1124, 541, 501, 2154, - /* 1340 */ 1976, 2065, 503, 502, 2012, 361, 2061, 106, 1978, 631, - /* 1350 */ 1980, 1981, 626, 505, 621, 1761, 2128, 109, 325, 2154, - /* 1360 */ 218, 2065, 1923, 1922, 1757, 361, 2061, 220, 539, 154, - /* 1370 */ 721, 233, 155, 1977, 1759, 1755, 2084, 156, 157, 542, - /* 1380 */ 289, 236, 549, 543, 287, 546, 2111, 565, 2096, 556, - /* 1390 */ 601, 2110, 562, 2087, 350, 568, 2106, 574, 1409, 171, - /* 1400 */ 1404, 250, 168, 252, 1995, 711, 707, 703, 699, 285, - /* 1410 */ 242, 245, 628, 7, 557, 555, 554, 1946, 1537, 627, - /* 1420 */ 2157, 585, 2133, 1412, 1414, 351, 582, 255, 136, 1421, - /* 1430 */ 593, 253, 1977, 254, 2081, 354, 619, 1467, 1468, 1470, - /* 1440 */ 1471, 1472, 1473, 1976, 290, 104, 264, 2012, 278, 92, - /* 1450 */ 106, 1978, 631, 1980, 1981, 626, 599, 621, 600, 1894, - /* 1460 */ 1893, 1892, 2040, 1995, 2065, 291, 604, 357, 361, 2061, - /* 1470 */ 94, 628, 292, 96, 605, 1772, 1946, 258, 627, 59, - /* 1480 */ 2046, 607, 98, 1816, 633, 295, 1977, 1742, 714, 51, - /* 1490 */ 715, 327, 717, 328, 1940, 319, 284, 299, 1939, 304, - /* 1500 */ 75, 297, 1976, 1938, 1937, 76, 2012, 1934, 385, 106, - /* 1510 */ 1978, 631, 1980, 1981, 626, 266, 621, 1995, 318, 308, - /* 1520 */ 265, 2038, 386, 2065, 1386, 628, 1387, 361, 2061, 390, - /* 1530 */ 1946, 184, 627, 1932, 392, 393, 394, 1365, 1931, 234, - /* 1540 */ 396, 1930, 1929, 398, 400, 1928, 402, 1977, 1361, 1360, - /* 1550 */ 1905, 1904, 407, 408, 1903, 1902, 1976, 1315, 1862, 1861, - /* 1560 */ 2012, 1859, 142, 106, 1978, 631, 1980, 1981, 626, 1858, - /* 1570 */ 621, 1857, 1860, 1856, 1855, 614, 1853, 2065, 1995, 1852, - /* 1580 */ 1851, 361, 2061, 189, 425, 1850, 628, 427, 1849, 1848, - /* 1590 */ 1847, 1946, 1846, 627, 144, 1834, 1833, 1832, 1831, 1830, - /* 1600 */ 1829, 1828, 1827, 1317, 453, 1977, 1845, 1844, 1843, 1842, - /* 1610 */ 1841, 1840, 1839, 1838, 1837, 1836, 1835, 1976, 1826, 1825, - /* 1620 */ 1689, 2012, 1196, 196, 107, 1978, 631, 1980, 1981, 626, - /* 1630 */ 1688, 621, 1686, 197, 1650, 199, 1995, 1110, 2065, 1109, - /* 1640 */ 1649, 1918, 2064, 2061, 628, 1912, 1901, 173, 207, 1946, - /* 1650 */ 1900, 627, 1966, 1880, 1750, 1143, 73, 1685, 1683, 1977, - /* 1660 */ 1681, 1679, 1677, 485, 200, 74, 205, 1664, 468, 470, - /* 1670 */ 487, 489, 493, 497, 491, 1976, 1663, 486, 495, 2012, - /* 1680 */ 1646, 490, 107, 1978, 631, 1980, 1981, 626, 1977, 621, - /* 1690 */ 1995, 494, 498, 1752, 499, 1264, 2065, 1751, 628, 1265, - /* 1700 */ 616, 2061, 1675, 1946, 1187, 627, 1186, 1185, 61, 1184, - /* 1710 */ 686, 1179, 688, 1181, 1180, 1668, 1178, 345, 346, 1995, - /* 1720 */ 523, 1666, 347, 526, 1645, 528, 1644, 625, 1643, 629, - /* 1730 */ 532, 108, 1946, 2012, 627, 1917, 107, 1978, 631, 1980, - /* 1740 */ 1981, 626, 530, 621, 217, 1376, 1977, 1375, 1378, 55, - /* 1750 */ 2065, 536, 1367, 1911, 330, 2061, 544, 1899, 1976, 1897, - /* 1760 */ 26, 2139, 2012, 19, 16, 316, 1978, 631, 1980, 1981, - /* 1770 */ 626, 624, 621, 612, 2030, 558, 560, 1995, 1583, 28, - /* 1780 */ 241, 58, 243, 1567, 248, 628, 166, 247, 249, 29, - /* 1790 */ 1946, 1967, 627, 30, 1559, 20, 63, 17, 88, 1598, - /* 1800 */ 1977, 1603, 1604, 1597, 21, 352, 1602, 56, 1601, 353, - /* 1810 */ 1534, 545, 1533, 261, 237, 1898, 1976, 1896, 1895, 348, - /* 1820 */ 2012, 57, 550, 165, 1978, 631, 1980, 1981, 626, 5, - /* 1830 */ 621, 1995, 158, 6, 169, 1879, 91, 90, 22, 628, - /* 1840 */ 93, 267, 1565, 269, 1946, 274, 627, 65, 1878, 95, - /* 1850 */ 279, 23, 99, 12, 1977, 1410, 2015, 170, 1464, 1462, - /* 1860 */ 620, 182, 36, 1441, 15, 602, 634, 369, 276, 638, - /* 1870 */ 1976, 1461, 1433, 24, 2012, 578, 2155, 107, 1978, 631, - /* 1880 */ 1980, 1981, 626, 25, 621, 1995, 632, 1250, 1247, 636, - /* 1890 */ 639, 2065, 1244, 628, 641, 642, 2062, 644, 1946, 645, - /* 1900 */ 627, 1238, 1236, 1486, 647, 1242, 1977, 10, 648, 1241, - /* 1910 */ 1227, 100, 282, 1259, 101, 654, 1496, 1240, 1239, 1255, - /* 1920 */ 72, 1141, 1977, 664, 1976, 1175, 1174, 630, 2012, 1173, - /* 1930 */ 1172, 164, 1978, 631, 1980, 1981, 626, 1995, 621, 1171, - /* 1940 */ 1170, 1485, 1168, 1166, 1165, 628, 1164, 1194, 676, 1162, - /* 1950 */ 1946, 1161, 627, 1995, 283, 1160, 1159, 1158, 1157, 1156, - /* 1960 */ 1189, 628, 1153, 1191, 1152, 1149, 1946, 1148, 627, 1147, - /* 1970 */ 1146, 1682, 696, 2103, 697, 698, 1976, 1680, 700, 701, - /* 1980 */ 2012, 702, 1678, 310, 1978, 631, 1980, 1981, 626, 704, - /* 1990 */ 621, 706, 1976, 705, 1676, 708, 2012, 709, 710, 165, - /* 2000 */ 1978, 631, 1980, 1981, 626, 1662, 621, 712, 1099, 1642, - /* 2010 */ 286, 1977, 716, 1617, 1396, 296, 719, 720, 1617, 1617, - /* 2020 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 573, 1617, 1977, - /* 2030 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - /* 2040 */ 1617, 1617, 1995, 1617, 1617, 1617, 1617, 356, 1617, 1617, - /* 2050 */ 628, 1617, 2156, 1617, 1617, 1946, 1617, 627, 1617, 1617, - /* 2060 */ 1995, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 625, 1617, - /* 2070 */ 1617, 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, 1617, - /* 2080 */ 1617, 1976, 1617, 1977, 1617, 2012, 1617, 1617, 317, 1978, - /* 2090 */ 631, 1980, 1981, 626, 1617, 621, 1617, 1617, 1617, 1976, - /* 2100 */ 1977, 1617, 1617, 2012, 1617, 1617, 316, 1978, 631, 1980, - /* 2110 */ 1981, 626, 1617, 621, 1995, 2031, 1617, 1617, 1617, 366, - /* 2120 */ 1617, 1617, 628, 1617, 1617, 1617, 1617, 1946, 1617, 627, - /* 2130 */ 1617, 1995, 1617, 1617, 1617, 1617, 368, 1617, 1617, 628, - /* 2140 */ 1617, 1617, 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, - /* 2150 */ 1617, 1617, 1977, 1976, 1617, 1617, 1617, 2012, 1617, 1617, - /* 2160 */ 317, 1978, 631, 1980, 1981, 626, 1617, 621, 1977, 1617, - /* 2170 */ 1976, 1617, 1617, 1617, 2012, 1617, 1617, 317, 1978, 631, - /* 2180 */ 1980, 1981, 626, 1995, 621, 1617, 1617, 1617, 1617, 1617, - /* 2190 */ 1617, 628, 1617, 1617, 1617, 1617, 1946, 1617, 627, 1995, - /* 2200 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 628, 1617, 1617, - /* 2210 */ 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, 1617, 1617, - /* 2220 */ 1977, 1617, 538, 1617, 1617, 1617, 2012, 1617, 1617, 312, - /* 2230 */ 1978, 631, 1980, 1981, 626, 1617, 621, 1617, 1976, 1617, - /* 2240 */ 1617, 1617, 2012, 1617, 1617, 301, 1978, 631, 1980, 1981, - /* 2250 */ 626, 1995, 621, 1617, 1617, 1617, 1617, 1617, 1617, 628, - /* 2260 */ 1617, 1617, 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, - /* 2270 */ 1617, 1617, 1617, 1617, 1977, 1617, 1617, 1617, 1617, 1617, - /* 2280 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - /* 2290 */ 1976, 1617, 1617, 1617, 2012, 1977, 1617, 302, 1978, 631, - /* 2300 */ 1980, 1981, 626, 1617, 621, 1995, 1617, 1617, 1617, 1617, - /* 2310 */ 1617, 1617, 1617, 628, 1617, 1617, 1617, 1617, 1946, 1617, - /* 2320 */ 627, 1617, 1617, 1617, 1617, 1617, 1995, 1617, 1617, 1617, - /* 2330 */ 1617, 1617, 1617, 1617, 628, 1617, 1617, 1617, 1617, 1946, - /* 2340 */ 1617, 627, 1617, 1617, 1976, 1617, 1617, 1617, 2012, 1617, - /* 2350 */ 1617, 303, 1978, 631, 1980, 1981, 626, 1617, 621, 1617, - /* 2360 */ 1617, 1617, 1617, 1617, 1617, 1976, 1617, 1617, 1617, 2012, - /* 2370 */ 1617, 1977, 309, 1978, 631, 1980, 1981, 626, 1617, 621, - /* 2380 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1977, - /* 2390 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - /* 2400 */ 1617, 1617, 1995, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - /* 2410 */ 628, 1617, 1617, 1617, 1617, 1946, 1617, 627, 1617, 1617, - /* 2420 */ 1995, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 628, 1617, - /* 2430 */ 1617, 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, 1617, - /* 2440 */ 1617, 1976, 1617, 1977, 1617, 2012, 1617, 1617, 313, 1978, - /* 2450 */ 631, 1980, 1981, 626, 1617, 621, 1617, 1617, 1617, 1976, - /* 2460 */ 1977, 1617, 1617, 2012, 1617, 1617, 305, 1978, 631, 1980, - /* 2470 */ 1981, 626, 1617, 621, 1995, 1617, 1617, 1617, 1617, 1617, - /* 2480 */ 1617, 1617, 628, 1617, 1617, 1617, 1617, 1946, 1617, 627, - /* 2490 */ 1617, 1995, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 628, - /* 2500 */ 1617, 1617, 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, - /* 2510 */ 1617, 1617, 1977, 1976, 1617, 1617, 1617, 2012, 1617, 1617, - /* 2520 */ 314, 1978, 631, 1980, 1981, 626, 1617, 621, 1977, 1617, - /* 2530 */ 1976, 1617, 1617, 1617, 2012, 1617, 1617, 306, 1978, 631, - /* 2540 */ 1980, 1981, 626, 1995, 621, 1617, 1617, 1617, 1617, 1617, - /* 2550 */ 1617, 628, 1617, 1617, 1617, 1617, 1946, 1617, 627, 1995, - /* 2560 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 628, 1617, 1617, - /* 2570 */ 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, 1617, 1617, - /* 2580 */ 1977, 1617, 1976, 1617, 1617, 1617, 2012, 1617, 1617, 315, - /* 2590 */ 1978, 631, 1980, 1981, 626, 1617, 621, 1617, 1976, 1617, - /* 2600 */ 1617, 1617, 2012, 1977, 1617, 307, 1978, 631, 1980, 1981, - /* 2610 */ 626, 1995, 621, 1617, 1617, 1617, 1617, 1617, 1617, 628, - /* 2620 */ 1617, 1617, 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, - /* 2630 */ 1617, 1617, 1617, 1617, 1995, 1617, 1617, 1617, 1617, 1617, - /* 2640 */ 1617, 1617, 628, 1617, 1617, 1617, 1617, 1946, 1617, 627, - /* 2650 */ 1976, 1617, 1617, 1617, 2012, 1977, 1617, 320, 1978, 631, - /* 2660 */ 1980, 1981, 626, 1617, 621, 1617, 1617, 1617, 1617, 1617, - /* 2670 */ 1617, 1617, 1617, 1976, 1617, 1617, 1617, 2012, 1617, 1617, - /* 2680 */ 321, 1978, 631, 1980, 1981, 626, 1995, 621, 1617, 1617, - /* 2690 */ 1617, 1617, 1617, 1617, 628, 1617, 1617, 1617, 1617, 1946, - /* 2700 */ 1617, 627, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - /* 2710 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1977, 1617, - /* 2720 */ 1617, 1617, 1617, 1617, 1617, 1976, 1617, 1617, 1617, 2012, - /* 2730 */ 1617, 1617, 1989, 1978, 631, 1980, 1981, 626, 1617, 621, - /* 2740 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1995, - /* 2750 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 628, 1617, 1617, - /* 2760 */ 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, 1617, 1617, - /* 2770 */ 1977, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - /* 2780 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1976, 1977, - /* 2790 */ 1617, 1617, 2012, 1617, 1617, 1988, 1978, 631, 1980, 1981, - /* 2800 */ 626, 1995, 621, 1617, 1617, 1617, 1617, 1617, 1617, 628, - /* 2810 */ 1617, 1617, 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, - /* 2820 */ 1995, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 628, 1617, - /* 2830 */ 1617, 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, 1617, - /* 2840 */ 1976, 1977, 1617, 1617, 2012, 1617, 1617, 1987, 1978, 631, - /* 2850 */ 1980, 1981, 626, 1617, 621, 1617, 1617, 1977, 1617, 1976, - /* 2860 */ 1617, 1617, 1617, 2012, 1617, 1617, 332, 1978, 631, 1980, - /* 2870 */ 1981, 626, 1995, 621, 1617, 1617, 1617, 1617, 1617, 1617, - /* 2880 */ 628, 1617, 1617, 1617, 1617, 1946, 1617, 627, 1995, 1617, - /* 2890 */ 1617, 1617, 1617, 1617, 1617, 1617, 628, 1617, 1617, 1617, - /* 2900 */ 1617, 1946, 1617, 627, 1617, 1617, 1617, 1617, 1617, 1977, - /* 2910 */ 1617, 1976, 1617, 1617, 1617, 2012, 1617, 1617, 333, 1978, - /* 2920 */ 631, 1980, 1981, 626, 1617, 621, 1617, 1976, 1617, 1617, - /* 2930 */ 1617, 2012, 1977, 1617, 329, 1978, 631, 1980, 1981, 626, - /* 2940 */ 1995, 621, 1617, 1617, 1617, 1617, 1617, 1617, 628, 1617, - /* 2950 */ 1617, 1617, 1617, 1946, 1617, 627, 1617, 1617, 1617, 1617, - /* 2960 */ 1617, 1617, 1617, 1995, 1617, 1617, 1617, 1617, 1617, 1617, - /* 2970 */ 1617, 628, 1617, 1617, 1617, 1617, 1946, 1617, 627, 1976, - /* 2980 */ 1617, 1617, 1617, 2012, 1977, 1617, 334, 1978, 631, 1980, - /* 2990 */ 1981, 626, 1617, 621, 1617, 1617, 1617, 1617, 1617, 1617, - /* 3000 */ 1617, 1617, 629, 1617, 1617, 1617, 2012, 1617, 1617, 312, - /* 3010 */ 1978, 631, 1980, 1981, 626, 1995, 621, 1617, 1617, 1617, - /* 3020 */ 1617, 1617, 1617, 628, 1617, 1617, 1617, 1617, 1946, 1617, - /* 3030 */ 627, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - /* 3040 */ 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, - /* 3050 */ 1617, 1617, 1617, 1617, 1976, 1617, 1617, 1617, 2012, 1617, - /* 3060 */ 1617, 311, 1978, 631, 1980, 1981, 626, 1617, 621, + /* 0 */ 1766, 1764, 372, 1892, 578, 1821, 1823, 467, 2140, 468, + /* 10 */ 1658, 1966, 45, 43, 1548, 1970, 1890, 600, 232, 2001, + /* 20 */ 367, 1805, 1398, 577, 178, 612, 1966, 572, 2141, 579, + /* 30 */ 103, 590, 172, 1478, 466, 1396, 1691, 471, 1664, 1552, + /* 40 */ 1962, 1968, 38, 37, 138, 1423, 44, 42, 41, 40, + /* 50 */ 39, 623, 1767, 339, 1877, 1962, 1968, 349, 1473, 163, + /* 60 */ 8, 2145, 137, 18, 1729, 2140, 623, 571, 119, 1983, + /* 70 */ 1404, 118, 117, 116, 115, 114, 113, 112, 111, 110, + /* 80 */ 1828, 2144, 359, 45, 43, 2141, 2143, 336, 473, 1104, + /* 90 */ 160, 367, 612, 1398, 469, 14, 1826, 332, 174, 1777, + /* 100 */ 2001, 521, 520, 519, 1478, 590, 1396, 160, 593, 134, + /* 110 */ 515, 1815, 1488, 1952, 514, 629, 1778, 720, 1423, 513, + /* 120 */ 518, 592, 176, 2079, 2080, 512, 135, 2084, 1106, 1473, + /* 130 */ 1109, 1110, 1480, 1481, 18, 612, 137, 1753, 1507, 1982, + /* 140 */ 485, 1404, 1123, 2018, 1122, 190, 106, 1984, 633, 1986, + /* 150 */ 1987, 628, 578, 623, 60, 2145, 2140, 215, 175, 2140, + /* 160 */ 2071, 1407, 1453, 1463, 361, 2067, 14, 48, 1479, 1482, + /* 170 */ 665, 577, 178, 1124, 1423, 2144, 2141, 579, 180, 2141, + /* 180 */ 2142, 81, 573, 1399, 80, 1397, 2097, 1454, 720, 151, + /* 190 */ 150, 662, 661, 660, 148, 1508, 177, 2079, 2080, 485, + /* 200 */ 135, 2084, 475, 1480, 1481, 471, 1664, 263, 1402, 1403, + /* 210 */ 48, 1452, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, + /* 220 */ 625, 621, 1471, 1472, 1474, 1475, 1476, 1477, 2, 521, + /* 230 */ 520, 519, 139, 1453, 1463, 2042, 568, 134, 515, 1479, + /* 240 */ 1482, 405, 514, 404, 60, 1423, 89, 513, 518, 60, + /* 250 */ 230, 35, 280, 512, 1399, 64, 1397, 38, 37, 1424, + /* 260 */ 1454, 44, 42, 41, 40, 39, 1541, 34, 365, 1502, + /* 270 */ 1503, 1504, 1505, 1506, 1510, 1511, 1512, 1513, 1424, 1402, + /* 280 */ 1403, 84, 1452, 1455, 1456, 1457, 1458, 1459, 1460, 1461, + /* 290 */ 1462, 625, 621, 1471, 1472, 1474, 1475, 1476, 1477, 2, + /* 300 */ 1828, 11, 45, 43, 1771, 181, 590, 355, 1751, 60, + /* 310 */ 367, 1410, 1398, 86, 327, 667, 1826, 539, 590, 537, + /* 320 */ 574, 569, 563, 1478, 1620, 1396, 1230, 655, 654, 653, + /* 330 */ 1234, 652, 1236, 1237, 651, 1239, 648, 137, 1245, 645, + /* 340 */ 1247, 1248, 642, 639, 216, 1645, 60, 412, 1473, 137, + /* 350 */ 38, 37, 1971, 18, 44, 42, 41, 40, 39, 167, + /* 360 */ 1404, 181, 1644, 1966, 149, 502, 498, 494, 490, 213, + /* 370 */ 667, 1273, 1274, 45, 43, 1483, 44, 42, 41, 40, + /* 380 */ 39, 367, 162, 1398, 1634, 14, 27, 322, 382, 1952, + /* 390 */ 1343, 1344, 1962, 1968, 1478, 181, 1396, 179, 2079, 2080, + /* 400 */ 181, 135, 2084, 623, 613, 85, 1952, 720, 211, 260, + /* 410 */ 2079, 589, 1828, 130, 588, 1623, 53, 2140, 129, 1473, + /* 420 */ 1822, 1823, 1480, 1481, 1615, 506, 1342, 1345, 1827, 231, + /* 430 */ 554, 1404, 577, 178, 2140, 1775, 119, 2141, 579, 118, + /* 440 */ 117, 116, 115, 114, 113, 112, 111, 110, 1643, 2146, + /* 450 */ 178, 1892, 1453, 1463, 2141, 579, 46, 84, 1479, 1482, + /* 460 */ 181, 358, 38, 37, 1889, 600, 44, 42, 41, 40, + /* 470 */ 39, 133, 413, 1399, 1426, 1397, 210, 204, 720, 1422, + /* 480 */ 1770, 209, 38, 37, 481, 414, 44, 42, 41, 40, + /* 490 */ 39, 1190, 1952, 1480, 1481, 1375, 1376, 181, 1402, 1403, + /* 500 */ 202, 1452, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, + /* 510 */ 625, 621, 1471, 1472, 1474, 1475, 1476, 1477, 2, 1614, + /* 520 */ 1642, 723, 658, 1453, 1463, 476, 1192, 468, 1658, 1479, + /* 530 */ 1482, 613, 38, 37, 450, 287, 44, 42, 41, 40, + /* 540 */ 39, 49, 517, 516, 1399, 54, 1397, 38, 37, 1425, + /* 550 */ 171, 44, 42, 41, 40, 39, 713, 709, 705, 701, + /* 560 */ 285, 1858, 1775, 1983, 1952, 11, 1123, 1509, 1122, 1402, + /* 570 */ 1403, 1423, 1452, 1455, 1456, 1457, 1458, 1459, 1460, 1461, + /* 580 */ 1462, 625, 621, 1471, 1472, 1474, 1475, 1476, 1477, 2, + /* 590 */ 45, 43, 194, 193, 2001, 1404, 104, 1124, 367, 278, + /* 600 */ 1398, 679, 630, 613, 11, 1828, 9, 1952, 1752, 629, + /* 610 */ 1426, 1478, 360, 1396, 406, 449, 31, 183, 240, 1635, + /* 620 */ 1585, 1826, 38, 37, 1983, 2086, 44, 42, 41, 40, + /* 630 */ 39, 1760, 609, 1982, 1775, 1564, 1473, 2018, 159, 32, + /* 640 */ 106, 1984, 633, 1986, 1987, 628, 1970, 623, 1404, 1514, + /* 650 */ 140, 2083, 146, 2042, 2071, 2001, 554, 1966, 361, 2067, + /* 660 */ 2140, 45, 43, 630, 2086, 613, 370, 266, 1952, 367, + /* 670 */ 629, 1398, 265, 46, 160, 2146, 178, 1575, 1983, 410, + /* 680 */ 2141, 579, 1478, 1777, 1396, 1426, 1962, 1968, 362, 1369, + /* 690 */ 2082, 234, 181, 262, 1982, 720, 1775, 623, 2018, 2086, + /* 700 */ 582, 164, 1984, 633, 1986, 1987, 628, 1473, 623, 2001, + /* 710 */ 1480, 1481, 430, 1328, 1329, 665, 615, 630, 2043, 1404, + /* 720 */ 1641, 429, 1952, 1750, 629, 2081, 565, 1573, 1574, 1576, + /* 730 */ 1577, 97, 1398, 2145, 151, 150, 662, 661, 660, 148, + /* 740 */ 1453, 1463, 555, 2108, 14, 1396, 1479, 1482, 1982, 617, + /* 750 */ 1425, 2043, 2018, 1768, 187, 106, 1984, 633, 1986, 1987, + /* 760 */ 628, 1399, 623, 1397, 1952, 33, 720, 2160, 1762, 2071, + /* 770 */ 535, 38, 37, 361, 2067, 44, 42, 41, 40, 39, + /* 780 */ 1404, 1480, 1481, 533, 2105, 531, 1402, 1403, 172, 1452, + /* 790 */ 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 625, 621, + /* 800 */ 1471, 1472, 1474, 1475, 1476, 1477, 2, 613, 1873, 613, + /* 810 */ 1878, 1453, 1463, 325, 401, 1421, 373, 1479, 1482, 186, + /* 820 */ 1873, 411, 443, 145, 160, 457, 1608, 720, 456, 239, + /* 830 */ 665, 188, 1399, 1777, 1397, 403, 399, 1640, 1775, 1828, + /* 840 */ 1775, 1639, 1423, 426, 294, 458, 371, 1805, 428, 151, + /* 850 */ 150, 662, 661, 660, 148, 1826, 1545, 1402, 1403, 1758, + /* 860 */ 1452, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 625, + /* 870 */ 621, 1471, 1472, 1474, 1475, 1476, 1477, 2, 41, 40, + /* 880 */ 39, 1952, 510, 161, 1622, 1952, 613, 1873, 300, 340, + /* 890 */ 1688, 613, 52, 1399, 262, 1397, 691, 689, 192, 553, + /* 900 */ 129, 416, 298, 70, 509, 420, 69, 511, 128, 127, + /* 910 */ 126, 125, 124, 123, 122, 121, 120, 1775, 1402, 1403, + /* 920 */ 13, 12, 1775, 583, 198, 463, 461, 659, 343, 663, + /* 930 */ 1819, 454, 1819, 2144, 448, 447, 446, 445, 442, 441, + /* 940 */ 440, 439, 438, 434, 433, 432, 431, 324, 423, 422, + /* 950 */ 421, 1638, 418, 417, 338, 697, 696, 695, 694, 377, + /* 960 */ 60, 693, 692, 141, 687, 686, 685, 684, 683, 682, + /* 970 */ 681, 153, 677, 676, 675, 376, 375, 672, 671, 670, + /* 980 */ 669, 668, 613, 1637, 1454, 526, 1109, 1110, 1636, 344, + /* 990 */ 613, 342, 341, 1633, 508, 1952, 435, 613, 510, 105, + /* 1000 */ 536, 38, 37, 1665, 436, 44, 42, 41, 40, 39, + /* 1010 */ 1632, 483, 1983, 1775, 229, 1521, 613, 613, 596, 613, + /* 1020 */ 509, 1775, 613, 680, 613, 1745, 549, 1952, 1775, 529, + /* 1030 */ 484, 1772, 1952, 550, 523, 1939, 594, 1952, 598, 228, + /* 1040 */ 78, 77, 409, 2001, 1730, 185, 664, 1775, 1775, 1819, + /* 1050 */ 1775, 593, 715, 1775, 1952, 1775, 1952, 50, 629, 3, + /* 1060 */ 554, 585, 1631, 323, 2140, 143, 397, 131, 395, 391, + /* 1070 */ 387, 384, 381, 613, 1983, 67, 2091, 1541, 66, 2146, + /* 1080 */ 178, 613, 1982, 389, 2141, 579, 2018, 599, 613, 106, + /* 1090 */ 1984, 633, 1986, 1987, 628, 275, 623, 1983, 238, 1544, + /* 1100 */ 71, 175, 608, 2071, 1775, 2001, 1952, 361, 2067, 613, + /* 1110 */ 1678, 181, 1775, 630, 235, 1630, 613, 1629, 1952, 1775, + /* 1120 */ 629, 271, 272, 610, 221, 624, 270, 219, 2001, 2098, + /* 1130 */ 611, 613, 522, 1617, 1618, 613, 630, 87, 620, 1628, + /* 1140 */ 1775, 1952, 657, 629, 1982, 281, 1671, 1775, 2018, 374, + /* 1150 */ 79, 106, 1984, 633, 1986, 1987, 628, 1627, 623, 1952, + /* 1160 */ 1669, 1952, 1775, 2160, 380, 2071, 1775, 1982, 524, 361, + /* 1170 */ 2067, 2018, 379, 1983, 106, 1984, 633, 1986, 1987, 628, + /* 1180 */ 2118, 623, 527, 1952, 1626, 1625, 2160, 1406, 2071, 62, + /* 1190 */ 364, 363, 361, 2067, 223, 581, 1983, 222, 2111, 225, + /* 1200 */ 1412, 1952, 224, 561, 2001, 227, 554, 257, 226, 244, + /* 1210 */ 2140, 1478, 630, 1405, 554, 566, 214, 1952, 2140, 629, + /* 1220 */ 149, 13, 12, 251, 378, 2146, 178, 2001, 1952, 1952, + /* 1230 */ 2141, 579, 47, 2146, 178, 630, 1473, 47, 2141, 579, + /* 1240 */ 1952, 1572, 629, 1982, 1882, 268, 68, 2018, 1404, 2002, + /* 1250 */ 106, 1984, 633, 1986, 1987, 628, 147, 623, 149, 542, + /* 1260 */ 673, 246, 2160, 62, 2071, 1983, 1982, 1659, 361, 2067, + /* 1270 */ 2018, 47, 597, 106, 1984, 633, 1986, 1987, 628, 2134, + /* 1280 */ 623, 1973, 1171, 1499, 1464, 2160, 586, 2071, 1983, 1340, + /* 1290 */ 674, 361, 2067, 1152, 1816, 619, 2001, 273, 605, 2101, + /* 1300 */ 637, 554, 2090, 147, 627, 2140, 102, 149, 277, 1952, + /* 1310 */ 1223, 629, 1169, 591, 256, 1515, 99, 1, 4, 2001, + /* 1320 */ 2146, 178, 132, 293, 147, 2141, 579, 630, 1153, 1975, + /* 1330 */ 383, 259, 1952, 388, 629, 1982, 1362, 1409, 337, 2018, + /* 1340 */ 288, 191, 316, 1984, 633, 1986, 1987, 628, 626, 623, + /* 1350 */ 614, 2036, 1251, 415, 1426, 1255, 419, 1883, 1982, 1262, + /* 1360 */ 452, 1413, 2018, 1408, 424, 106, 1984, 633, 1986, 1987, + /* 1370 */ 628, 1421, 623, 437, 1260, 1983, 152, 2046, 1875, 2071, + /* 1380 */ 444, 459, 451, 361, 2067, 453, 1416, 1418, 460, 195, + /* 1390 */ 462, 464, 1427, 465, 474, 1429, 1424, 478, 1983, 621, + /* 1400 */ 1471, 1472, 1474, 1475, 1476, 1477, 2001, 477, 201, 203, + /* 1410 */ 1428, 479, 1430, 486, 630, 480, 482, 206, 1126, 1952, + /* 1420 */ 208, 629, 82, 83, 212, 503, 504, 505, 507, 2001, + /* 1430 */ 109, 1765, 218, 1929, 326, 541, 543, 630, 289, 544, + /* 1440 */ 1928, 551, 1952, 1761, 629, 1982, 233, 220, 154, 2018, + /* 1450 */ 155, 1763, 106, 1984, 633, 1986, 1987, 628, 1759, 623, + /* 1460 */ 236, 156, 157, 567, 2044, 2102, 2071, 548, 1982, 2117, + /* 1470 */ 361, 2067, 2018, 1983, 2116, 106, 1984, 633, 1986, 1987, + /* 1480 */ 628, 558, 623, 603, 545, 242, 564, 616, 350, 2071, + /* 1490 */ 2112, 570, 7, 361, 2067, 245, 2093, 576, 168, 250, + /* 1500 */ 1983, 556, 252, 559, 2001, 557, 351, 1541, 2163, 587, + /* 1510 */ 584, 258, 630, 255, 2139, 136, 1425, 1952, 595, 629, + /* 1520 */ 354, 2087, 290, 601, 253, 264, 92, 602, 291, 1900, + /* 1530 */ 1899, 2001, 1898, 254, 357, 606, 94, 607, 96, 630, + /* 1540 */ 1776, 59, 292, 1982, 1952, 2052, 629, 2018, 98, 716, + /* 1550 */ 107, 1984, 633, 1986, 1987, 628, 635, 623, 1746, 295, + /* 1560 */ 1820, 717, 284, 719, 2071, 319, 1983, 51, 2070, 2067, + /* 1570 */ 1982, 304, 318, 299, 2018, 297, 328, 107, 1984, 633, + /* 1580 */ 1986, 1987, 628, 329, 623, 308, 1946, 1945, 75, 1944, + /* 1590 */ 1943, 2071, 76, 1940, 385, 618, 2067, 2001, 386, 1390, + /* 1600 */ 1391, 184, 390, 1938, 392, 630, 393, 394, 1937, 396, + /* 1610 */ 1952, 1936, 629, 398, 1935, 1934, 400, 402, 1365, 1364, + /* 1620 */ 1911, 1983, 1910, 407, 1909, 408, 1908, 1319, 1866, 1865, + /* 1630 */ 1863, 1862, 1861, 142, 1864, 1860, 631, 1859, 1857, 1983, + /* 1640 */ 2018, 1856, 1855, 107, 1984, 633, 1986, 1987, 628, 189, + /* 1650 */ 623, 425, 2001, 1854, 427, 1868, 1853, 2071, 1852, 1851, + /* 1660 */ 630, 331, 2067, 1850, 1849, 1952, 1848, 629, 1321, 144, + /* 1670 */ 2001, 1847, 1846, 1845, 1844, 1843, 1842, 1841, 630, 1840, + /* 1680 */ 1839, 1838, 1837, 1952, 455, 629, 1836, 1867, 1835, 1834, + /* 1690 */ 1833, 1982, 1832, 1983, 1831, 2018, 1830, 1829, 165, 1984, + /* 1700 */ 633, 1986, 1987, 628, 1198, 623, 1693, 196, 1692, 1982, + /* 1710 */ 197, 1690, 1654, 2018, 1983, 1112, 107, 1984, 633, 1986, + /* 1720 */ 1987, 628, 173, 623, 2001, 199, 1653, 1111, 1924, 1918, + /* 1730 */ 2071, 1907, 630, 1906, 73, 2068, 207, 1952, 1972, 629, + /* 1740 */ 470, 1886, 200, 74, 205, 2001, 472, 1754, 1689, 1145, + /* 1750 */ 580, 2161, 1687, 630, 487, 488, 489, 1685, 1952, 491, + /* 1760 */ 629, 493, 492, 1982, 1683, 495, 496, 2018, 1681, 499, + /* 1770 */ 164, 1984, 633, 1986, 1987, 628, 497, 623, 501, 1983, + /* 1780 */ 500, 1668, 1667, 1650, 1982, 1756, 1267, 1266, 2018, 1755, + /* 1790 */ 1189, 310, 1984, 633, 1986, 1987, 628, 1188, 623, 1181, + /* 1800 */ 1983, 1187, 61, 1679, 1186, 217, 1183, 688, 1182, 1180, + /* 1810 */ 2001, 690, 2109, 345, 1672, 346, 1670, 347, 630, 528, + /* 1820 */ 525, 1649, 530, 1952, 1648, 629, 1647, 532, 534, 108, + /* 1830 */ 26, 2001, 1380, 1379, 538, 575, 356, 1923, 1382, 630, + /* 1840 */ 1371, 1917, 546, 158, 1952, 1905, 629, 1903, 19, 1982, + /* 1850 */ 16, 2145, 1587, 2018, 560, 28, 165, 1984, 633, 1986, + /* 1860 */ 1987, 628, 58, 623, 55, 63, 562, 241, 20, 1983, + /* 1870 */ 1982, 243, 1571, 547, 2018, 166, 237, 317, 1984, 633, + /* 1880 */ 1986, 1987, 628, 247, 623, 348, 5, 1983, 552, 29, + /* 1890 */ 248, 6, 1563, 17, 88, 30, 249, 1973, 1607, 21, + /* 1900 */ 2001, 1602, 1601, 1608, 352, 1606, 1605, 353, 627, 2162, + /* 1910 */ 261, 1538, 57, 1952, 56, 629, 1904, 1902, 2001, 1537, + /* 1920 */ 169, 1901, 1885, 366, 90, 91, 630, 267, 22, 1884, + /* 1930 */ 1569, 1952, 93, 629, 269, 274, 279, 65, 95, 1982, + /* 1940 */ 99, 23, 1983, 2018, 276, 604, 316, 1984, 633, 1986, + /* 1950 */ 1987, 628, 1490, 623, 12, 2037, 10, 1982, 1414, 2021, + /* 1960 */ 622, 2018, 1500, 1445, 317, 1984, 633, 1986, 1987, 628, + /* 1970 */ 1468, 623, 1489, 2001, 1466, 36, 1244, 1465, 368, 170, + /* 1980 */ 15, 630, 24, 25, 182, 634, 1952, 1437, 629, 636, + /* 1990 */ 1252, 369, 1249, 638, 640, 641, 632, 1983, 1246, 643, + /* 2000 */ 644, 646, 1240, 647, 649, 1238, 650, 1229, 100, 1243, + /* 2010 */ 656, 1242, 1982, 1983, 1241, 282, 2018, 1261, 101, 317, + /* 2020 */ 1984, 633, 1986, 1987, 628, 72, 623, 1257, 2001, 1143, + /* 2030 */ 666, 1177, 1176, 1175, 1174, 1173, 630, 1172, 1170, 1168, + /* 2040 */ 1196, 1952, 1167, 629, 2001, 1166, 1164, 678, 1163, 1162, + /* 2050 */ 283, 1160, 630, 1161, 1159, 1158, 1193, 1952, 1191, 629, + /* 2060 */ 1155, 1154, 1151, 1150, 1149, 1983, 1686, 540, 1148, 698, + /* 2070 */ 699, 2018, 1684, 702, 312, 1984, 633, 1986, 1987, 628, + /* 2080 */ 700, 623, 704, 1982, 703, 1682, 706, 2018, 1983, 1680, + /* 2090 */ 301, 1984, 633, 1986, 1987, 628, 2001, 623, 707, 708, + /* 2100 */ 710, 711, 712, 1666, 630, 714, 1101, 1646, 286, 1952, + /* 2110 */ 1400, 629, 718, 722, 296, 721, 1621, 1621, 1621, 2001, + /* 2120 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, 1621, + /* 2130 */ 1621, 1621, 1952, 1621, 629, 1982, 1621, 1621, 1621, 2018, + /* 2140 */ 1983, 1621, 302, 1984, 633, 1986, 1987, 628, 1621, 623, + /* 2150 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1982, 1621, + /* 2160 */ 1621, 1983, 2018, 1621, 1621, 303, 1984, 633, 1986, 1987, + /* 2170 */ 628, 2001, 623, 1621, 1621, 1621, 1621, 1621, 1621, 630, + /* 2180 */ 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, 1621, + /* 2190 */ 1621, 1621, 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2200 */ 630, 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, + /* 2210 */ 1982, 1621, 1621, 1621, 2018, 1621, 1621, 309, 1984, 633, + /* 2220 */ 1986, 1987, 628, 1621, 623, 1621, 1621, 1621, 1621, 1621, + /* 2230 */ 1983, 1982, 1621, 1621, 1621, 2018, 1621, 1621, 313, 1984, + /* 2240 */ 633, 1986, 1987, 628, 1621, 623, 1621, 1621, 1983, 1621, + /* 2250 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2260 */ 1621, 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, + /* 2270 */ 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, 2001, + /* 2280 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, 1621, + /* 2290 */ 1621, 1621, 1952, 1621, 629, 1621, 1621, 1621, 1621, 1621, + /* 2300 */ 1982, 1621, 1621, 1983, 2018, 1621, 1621, 305, 1984, 633, + /* 2310 */ 1986, 1987, 628, 1621, 623, 1621, 1621, 1621, 1982, 1621, + /* 2320 */ 1621, 1621, 2018, 1621, 1621, 314, 1984, 633, 1986, 1987, + /* 2330 */ 628, 1621, 623, 1621, 2001, 1621, 1621, 1621, 1621, 1621, + /* 2340 */ 1621, 1621, 630, 1621, 1621, 1621, 1621, 1952, 1621, 629, + /* 2350 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1983, 1621, + /* 2360 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2370 */ 1621, 1621, 1621, 1982, 1983, 1621, 1621, 2018, 1621, 1621, + /* 2380 */ 306, 1984, 633, 1986, 1987, 628, 1621, 623, 1621, 2001, + /* 2390 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, 1621, + /* 2400 */ 1621, 1621, 1952, 1621, 629, 2001, 1621, 1621, 1621, 1621, + /* 2410 */ 1621, 1621, 1621, 630, 1621, 1621, 1621, 1621, 1952, 1621, + /* 2420 */ 629, 1621, 1621, 1621, 1621, 1621, 1983, 1621, 1982, 1621, + /* 2430 */ 1621, 1621, 2018, 1621, 1621, 315, 1984, 633, 1986, 1987, + /* 2440 */ 628, 1621, 623, 1621, 1982, 1621, 1621, 1621, 2018, 1983, + /* 2450 */ 1621, 307, 1984, 633, 1986, 1987, 628, 2001, 623, 1621, + /* 2460 */ 1621, 1621, 1621, 1621, 1621, 630, 1621, 1621, 1621, 1621, + /* 2470 */ 1952, 1621, 629, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2480 */ 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, + /* 2490 */ 1621, 1621, 1621, 1952, 1621, 629, 1982, 1621, 1621, 1621, + /* 2500 */ 2018, 1983, 1621, 320, 1984, 633, 1986, 1987, 628, 1621, + /* 2510 */ 623, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1982, + /* 2520 */ 1621, 1621, 1983, 2018, 1621, 1621, 321, 1984, 633, 1986, + /* 2530 */ 1987, 628, 2001, 623, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2540 */ 630, 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, + /* 2550 */ 1621, 1621, 1621, 2001, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2560 */ 1621, 630, 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, + /* 2570 */ 1621, 1982, 1621, 1621, 1621, 2018, 1621, 1621, 1995, 1984, + /* 2580 */ 633, 1986, 1987, 628, 1621, 623, 1621, 1621, 1621, 1621, + /* 2590 */ 1621, 1983, 1982, 1621, 1621, 1621, 2018, 1621, 1621, 1994, + /* 2600 */ 1984, 633, 1986, 1987, 628, 1621, 623, 1621, 1621, 1983, + /* 2610 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2620 */ 1621, 1621, 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2630 */ 630, 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, + /* 2640 */ 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, + /* 2650 */ 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, 1621, 1621, + /* 2660 */ 1621, 1982, 1621, 1621, 1983, 2018, 1621, 1621, 1993, 1984, + /* 2670 */ 633, 1986, 1987, 628, 1621, 623, 1621, 1621, 1621, 1982, + /* 2680 */ 1621, 1621, 1621, 2018, 1621, 1621, 333, 1984, 633, 1986, + /* 2690 */ 1987, 628, 1621, 623, 1621, 2001, 1621, 1621, 1621, 1621, + /* 2700 */ 1621, 1621, 1621, 630, 1621, 1621, 1621, 1621, 1952, 1621, + /* 2710 */ 629, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1983, + /* 2720 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2730 */ 1621, 1621, 1621, 1621, 1982, 1983, 1621, 1621, 2018, 1621, + /* 2740 */ 1621, 334, 1984, 633, 1986, 1987, 628, 1621, 623, 1621, + /* 2750 */ 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, + /* 2760 */ 1621, 1621, 1621, 1952, 1621, 629, 2001, 1621, 1621, 1621, + /* 2770 */ 1621, 1621, 1621, 1621, 630, 1621, 1621, 1621, 1621, 1952, + /* 2780 */ 1621, 629, 1621, 1621, 1621, 1621, 1621, 1983, 1621, 1982, + /* 2790 */ 1621, 1621, 1621, 2018, 1621, 1621, 330, 1984, 633, 1986, + /* 2800 */ 1987, 628, 1621, 623, 1621, 1982, 1621, 1621, 1621, 2018, + /* 2810 */ 1983, 1621, 335, 1984, 633, 1986, 1987, 628, 2001, 623, + /* 2820 */ 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, 1621, 1621, + /* 2830 */ 1621, 1952, 1621, 629, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2840 */ 1621, 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, + /* 2850 */ 1621, 1621, 1621, 1621, 1952, 1621, 629, 631, 1621, 1621, + /* 2860 */ 1621, 2018, 1621, 1621, 312, 1984, 633, 1986, 1987, 628, + /* 2870 */ 1621, 623, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + /* 2880 */ 1982, 1621, 1621, 1621, 2018, 1621, 1621, 311, 1984, 633, + /* 2890 */ 1986, 1987, 628, 1621, 623, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 420, 421, 332, 374, 334, 335, 332, 370, 334, 335, - /* 10 */ 373, 374, 12, 13, 14, 361, 387, 388, 360, 14, - /* 20 */ 20, 336, 22, 8, 9, 20, 372, 12, 13, 14, - /* 30 */ 15, 16, 359, 33, 333, 35, 352, 336, 337, 355, - /* 40 */ 431, 20, 8, 9, 435, 393, 12, 13, 14, 15, - /* 50 */ 16, 39, 20, 380, 381, 401, 402, 403, 58, 450, - /* 60 */ 451, 376, 58, 63, 455, 456, 412, 8, 9, 328, - /* 70 */ 70, 12, 13, 14, 15, 16, 333, 20, 336, 336, - /* 80 */ 337, 8, 9, 12, 13, 12, 13, 14, 15, 16, - /* 90 */ 3, 20, 358, 22, 0, 95, 415, 63, 94, 418, - /* 100 */ 359, 97, 95, 44, 33, 371, 35, 20, 367, 367, - /* 110 */ 327, 96, 329, 372, 336, 374, 95, 117, 24, 25, - /* 120 */ 26, 27, 28, 29, 30, 31, 32, 95, 350, 58, - /* 130 */ 340, 343, 132, 133, 63, 357, 348, 79, 104, 398, - /* 140 */ 4, 70, 62, 402, 354, 367, 405, 406, 407, 408, - /* 150 */ 409, 410, 362, 412, 20, 431, 359, 44, 417, 435, - /* 160 */ 419, 161, 162, 366, 423, 424, 95, 167, 168, 427, - /* 170 */ 428, 429, 375, 431, 432, 451, 20, 435, 437, 455, - /* 180 */ 456, 431, 182, 96, 184, 435, 445, 21, 117, 132, - /* 190 */ 133, 58, 450, 451, 160, 137, 138, 455, 456, 95, - /* 200 */ 34, 451, 36, 132, 133, 455, 456, 207, 208, 96, - /* 210 */ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - /* 220 */ 220, 221, 222, 223, 224, 225, 226, 227, 95, 95, - /* 230 */ 97, 95, 161, 162, 404, 20, 163, 21, 167, 168, - /* 240 */ 24, 25, 26, 27, 28, 29, 30, 31, 32, 20, - /* 250 */ 163, 127, 245, 182, 404, 184, 244, 8, 9, 328, - /* 260 */ 430, 12, 13, 14, 15, 16, 232, 233, 234, 235, - /* 270 */ 236, 237, 238, 239, 240, 241, 242, 245, 207, 208, - /* 280 */ 430, 210, 211, 212, 213, 214, 215, 216, 217, 218, - /* 290 */ 219, 220, 221, 222, 223, 224, 225, 226, 227, 177, - /* 300 */ 229, 12, 13, 372, 361, 22, 14, 328, 359, 20, - /* 310 */ 22, 22, 20, 189, 190, 372, 367, 193, 35, 195, - /* 320 */ 198, 199, 33, 35, 35, 108, 109, 110, 111, 112, - /* 330 */ 113, 114, 115, 116, 117, 118, 0, 120, 121, 122, - /* 340 */ 123, 124, 125, 33, 401, 402, 403, 58, 359, 245, - /* 350 */ 389, 372, 63, 70, 359, 412, 407, 368, 48, 70, - /* 360 */ 20, 366, 22, 62, 54, 55, 56, 57, 58, 328, - /* 370 */ 375, 328, 12, 13, 14, 35, 161, 162, 245, 245, - /* 380 */ 20, 245, 22, 359, 95, 12, 13, 14, 15, 16, - /* 390 */ 366, 51, 431, 33, 369, 35, 435, 372, 328, 375, - /* 400 */ 117, 65, 66, 67, 94, 4, 117, 97, 0, 73, - /* 410 */ 74, 450, 451, 372, 78, 372, 455, 456, 58, 83, - /* 420 */ 84, 132, 133, 174, 328, 89, 126, 127, 70, 21, - /* 430 */ 70, 131, 24, 25, 26, 27, 28, 29, 30, 31, - /* 440 */ 32, 336, 372, 20, 43, 369, 45, 46, 372, 374, - /* 450 */ 161, 162, 336, 161, 359, 95, 167, 168, 20, 384, - /* 460 */ 22, 366, 387, 388, 336, 182, 350, 184, 372, 63, - /* 470 */ 375, 182, 367, 184, 164, 165, 328, 117, 350, 169, - /* 480 */ 8, 9, 172, 367, 12, 13, 14, 15, 16, 51, - /* 490 */ 207, 208, 132, 133, 342, 367, 207, 208, 188, 210, - /* 500 */ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - /* 510 */ 221, 222, 223, 224, 225, 226, 227, 365, 269, 20, - /* 520 */ 372, 161, 162, 336, 35, 328, 431, 167, 168, 336, - /* 530 */ 435, 426, 427, 428, 429, 336, 431, 432, 20, 65, - /* 540 */ 66, 67, 182, 350, 184, 450, 451, 73, 74, 350, - /* 550 */ 455, 456, 78, 328, 367, 132, 133, 83, 84, 70, - /* 560 */ 367, 328, 328, 89, 373, 374, 367, 207, 208, 372, - /* 570 */ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - /* 580 */ 220, 221, 222, 223, 224, 225, 226, 227, 12, 13, - /* 590 */ 167, 168, 359, 0, 342, 351, 20, 372, 22, 20, - /* 600 */ 367, 325, 416, 359, 418, 372, 372, 374, 356, 33, - /* 610 */ 126, 35, 368, 207, 427, 428, 429, 365, 431, 432, - /* 620 */ 8, 9, 328, 404, 12, 13, 14, 15, 16, 4, - /* 630 */ 166, 398, 20, 336, 58, 402, 106, 207, 405, 406, - /* 640 */ 407, 408, 409, 410, 19, 412, 70, 350, 415, 430, - /* 650 */ 417, 418, 419, 359, 357, 62, 423, 424, 33, 12, - /* 660 */ 13, 367, 163, 336, 367, 389, 372, 20, 374, 22, - /* 670 */ 229, 95, 231, 48, 328, 191, 192, 350, 53, 328, - /* 680 */ 33, 359, 35, 58, 361, 95, 256, 257, 258, 259, - /* 690 */ 260, 0, 398, 117, 367, 372, 402, 375, 336, 405, - /* 700 */ 406, 407, 408, 409, 410, 58, 412, 431, 132, 133, - /* 710 */ 367, 435, 350, 328, 250, 251, 252, 70, 372, 94, - /* 720 */ 0, 378, 97, 372, 401, 402, 450, 451, 328, 367, - /* 730 */ 14, 455, 456, 1, 2, 412, 20, 161, 162, 48, - /* 740 */ 446, 447, 95, 167, 168, 336, 8, 9, 160, 0, - /* 750 */ 12, 13, 14, 15, 16, 2, 359, 372, 182, 350, - /* 760 */ 184, 8, 9, 367, 117, 12, 13, 14, 15, 16, - /* 770 */ 47, 181, 372, 183, 378, 163, 367, 20, 381, 132, - /* 780 */ 133, 0, 328, 207, 208, 20, 210, 211, 212, 213, - /* 790 */ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - /* 800 */ 224, 225, 226, 227, 14, 15, 16, 336, 161, 162, - /* 810 */ 18, 62, 20, 229, 167, 168, 351, 340, 95, 27, - /* 820 */ 232, 350, 30, 44, 359, 33, 372, 107, 96, 182, - /* 830 */ 242, 184, 328, 368, 96, 245, 351, 20, 367, 362, - /* 840 */ 48, 361, 50, 4, 359, 53, 126, 127, 128, 129, - /* 850 */ 130, 131, 372, 368, 207, 208, 70, 210, 211, 212, - /* 860 */ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - /* 870 */ 223, 224, 225, 226, 227, 328, 372, 161, 345, 346, - /* 880 */ 18, 401, 402, 2, 163, 23, 94, 0, 107, 8, - /* 890 */ 9, 170, 412, 12, 13, 14, 15, 16, 106, 37, - /* 900 */ 38, 3, 416, 41, 418, 345, 346, 126, 127, 128, - /* 910 */ 129, 130, 131, 367, 369, 352, 360, 372, 355, 372, - /* 920 */ 163, 59, 60, 61, 378, 347, 161, 349, 136, 45, - /* 930 */ 46, 139, 140, 141, 142, 143, 144, 145, 146, 147, - /* 940 */ 148, 149, 150, 151, 152, 153, 154, 155, 389, 157, - /* 950 */ 158, 159, 65, 66, 67, 68, 69, 95, 71, 72, - /* 960 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - /* 970 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 328, - /* 980 */ 163, 336, 107, 328, 360, 336, 389, 0, 389, 107, - /* 990 */ 431, 243, 244, 336, 435, 350, 134, 132, 133, 350, - /* 1000 */ 328, 126, 127, 128, 129, 130, 131, 350, 360, 450, - /* 1010 */ 451, 129, 367, 106, 455, 456, 367, 42, 42, 44, - /* 1020 */ 44, 44, 99, 372, 367, 102, 360, 372, 431, 336, - /* 1030 */ 431, 359, 435, 35, 435, 0, 174, 175, 176, 367, - /* 1040 */ 336, 179, 336, 350, 372, 266, 374, 450, 451, 450, - /* 1050 */ 451, 329, 455, 456, 455, 456, 350, 22, 389, 197, - /* 1060 */ 367, 336, 200, 156, 202, 203, 204, 205, 206, 360, - /* 1070 */ 398, 367, 328, 367, 402, 350, 44, 405, 406, 407, - /* 1080 */ 408, 409, 410, 336, 412, 246, 35, 99, 44, 417, - /* 1090 */ 102, 419, 367, 0, 360, 423, 424, 350, 336, 336, - /* 1100 */ 431, 0, 99, 359, 435, 102, 99, 245, 336, 102, - /* 1110 */ 37, 367, 350, 350, 367, 22, 372, 445, 374, 450, - /* 1120 */ 451, 58, 350, 22, 455, 456, 328, 336, 96, 367, - /* 1130 */ 367, 427, 428, 429, 44, 431, 432, 348, 151, 367, - /* 1140 */ 96, 350, 398, 1, 2, 95, 402, 44, 382, 405, - /* 1150 */ 406, 407, 408, 409, 410, 105, 412, 359, 367, 44, - /* 1160 */ 97, 417, 264, 419, 44, 367, 459, 423, 424, 338, - /* 1170 */ 372, 98, 374, 100, 101, 44, 103, 448, 434, 442, - /* 1180 */ 107, 336, 184, 336, 44, 44, 96, 328, 44, 44, - /* 1190 */ 0, 44, 44, 359, 44, 350, 398, 350, 338, 96, - /* 1200 */ 402, 44, 129, 405, 406, 407, 408, 409, 410, 382, - /* 1210 */ 412, 96, 367, 335, 367, 417, 96, 419, 359, 35, - /* 1220 */ 44, 423, 424, 371, 382, 13, 367, 96, 12, 13, - /* 1230 */ 13, 372, 434, 374, 433, 184, 96, 96, 22, 49, - /* 1240 */ 96, 96, 436, 96, 96, 268, 96, 35, 452, 33, - /* 1250 */ 328, 35, 35, 96, 70, 425, 247, 398, 400, 48, - /* 1260 */ 399, 402, 180, 391, 405, 406, 407, 408, 409, 410, - /* 1270 */ 328, 412, 96, 42, 58, 379, 417, 20, 419, 382, - /* 1280 */ 379, 359, 423, 424, 160, 377, 70, 20, 336, 367, - /* 1290 */ 336, 379, 377, 434, 372, 377, 374, 93, 336, 344, - /* 1300 */ 336, 359, 336, 20, 330, 20, 395, 342, 330, 367, - /* 1310 */ 20, 374, 342, 20, 372, 20, 374, 337, 390, 337, - /* 1320 */ 398, 342, 336, 342, 402, 342, 342, 405, 406, 407, - /* 1330 */ 408, 409, 410, 117, 412, 342, 52, 397, 339, 417, - /* 1340 */ 398, 419, 330, 339, 402, 423, 424, 405, 406, 407, - /* 1350 */ 408, 409, 410, 359, 412, 359, 434, 336, 330, 417, - /* 1360 */ 359, 419, 372, 372, 359, 423, 424, 359, 196, 359, - /* 1370 */ 19, 340, 359, 328, 359, 359, 434, 359, 359, 187, - /* 1380 */ 395, 340, 336, 394, 33, 374, 441, 255, 382, 372, - /* 1390 */ 254, 441, 372, 444, 372, 372, 382, 173, 182, 48, - /* 1400 */ 184, 443, 441, 440, 359, 54, 55, 56, 57, 58, - /* 1410 */ 385, 385, 367, 261, 263, 262, 248, 372, 244, 374, - /* 1420 */ 460, 267, 454, 207, 208, 270, 265, 400, 367, 20, - /* 1430 */ 336, 439, 328, 438, 404, 337, 220, 221, 222, 223, - /* 1440 */ 224, 225, 226, 398, 385, 94, 340, 402, 97, 340, - /* 1450 */ 405, 406, 407, 408, 409, 410, 372, 412, 372, 372, - /* 1460 */ 372, 372, 417, 359, 419, 385, 165, 372, 423, 424, - /* 1470 */ 340, 367, 355, 340, 383, 367, 372, 453, 374, 95, - /* 1480 */ 422, 130, 95, 372, 363, 336, 328, 349, 36, 392, - /* 1490 */ 331, 386, 330, 386, 0, 396, 340, 326, 0, 353, - /* 1500 */ 189, 341, 398, 0, 0, 42, 402, 0, 35, 405, - /* 1510 */ 406, 407, 408, 409, 410, 164, 412, 359, 353, 353, - /* 1520 */ 169, 417, 201, 419, 35, 367, 35, 423, 424, 201, - /* 1530 */ 372, 35, 374, 0, 35, 35, 201, 186, 0, 188, - /* 1540 */ 201, 0, 0, 35, 22, 0, 35, 328, 184, 182, - /* 1550 */ 0, 0, 178, 177, 0, 0, 398, 47, 0, 0, - /* 1560 */ 402, 0, 42, 405, 406, 407, 408, 409, 410, 0, - /* 1570 */ 412, 0, 0, 0, 0, 417, 0, 419, 359, 0, - /* 1580 */ 0, 423, 424, 151, 35, 0, 367, 151, 0, 0, - /* 1590 */ 0, 372, 0, 374, 42, 0, 0, 0, 0, 0, - /* 1600 */ 0, 0, 0, 22, 135, 328, 0, 0, 0, 0, - /* 1610 */ 0, 0, 0, 0, 0, 0, 0, 398, 0, 0, - /* 1620 */ 0, 402, 35, 58, 405, 406, 407, 408, 409, 410, - /* 1630 */ 0, 412, 0, 58, 0, 42, 359, 14, 419, 14, - /* 1640 */ 0, 0, 423, 424, 367, 0, 0, 44, 173, 372, - /* 1650 */ 0, 374, 47, 0, 0, 64, 39, 0, 0, 328, - /* 1660 */ 0, 0, 0, 35, 40, 39, 39, 0, 47, 47, - /* 1670 */ 39, 35, 35, 35, 39, 398, 0, 48, 39, 402, - /* 1680 */ 0, 48, 405, 406, 407, 408, 409, 410, 328, 412, - /* 1690 */ 359, 48, 48, 0, 39, 22, 419, 0, 367, 35, - /* 1700 */ 423, 424, 0, 372, 35, 374, 35, 35, 104, 35, - /* 1710 */ 44, 22, 44, 35, 35, 0, 35, 22, 22, 359, - /* 1720 */ 50, 0, 22, 35, 0, 35, 0, 367, 0, 398, - /* 1730 */ 22, 20, 372, 402, 374, 0, 405, 406, 407, 408, - /* 1740 */ 409, 410, 35, 412, 102, 35, 328, 35, 96, 163, - /* 1750 */ 419, 194, 35, 0, 423, 424, 22, 0, 398, 0, - /* 1760 */ 95, 3, 402, 44, 249, 405, 406, 407, 408, 409, - /* 1770 */ 410, 411, 412, 413, 414, 228, 253, 359, 96, 95, - /* 1780 */ 95, 44, 96, 96, 44, 367, 95, 95, 47, 95, - /* 1790 */ 372, 47, 374, 44, 96, 249, 3, 249, 95, 35, - /* 1800 */ 328, 96, 96, 35, 44, 35, 35, 243, 35, 35, - /* 1810 */ 96, 163, 96, 47, 165, 0, 398, 0, 0, 163, - /* 1820 */ 402, 44, 171, 405, 406, 407, 408, 409, 410, 170, - /* 1830 */ 412, 359, 185, 170, 47, 0, 39, 95, 95, 367, - /* 1840 */ 39, 96, 96, 95, 372, 95, 374, 95, 0, 95, - /* 1850 */ 47, 44, 105, 2, 328, 22, 95, 47, 96, 96, - /* 1860 */ 95, 47, 95, 22, 95, 166, 35, 35, 164, 35, - /* 1870 */ 398, 96, 96, 95, 402, 457, 458, 405, 406, 407, - /* 1880 */ 408, 409, 410, 95, 412, 359, 106, 96, 96, 95, - /* 1890 */ 95, 419, 96, 367, 35, 95, 424, 35, 372, 95, - /* 1900 */ 374, 96, 96, 228, 35, 119, 328, 230, 95, 119, - /* 1910 */ 22, 95, 44, 35, 95, 107, 207, 119, 119, 22, - /* 1920 */ 95, 64, 328, 63, 398, 35, 35, 209, 402, 35, - /* 1930 */ 35, 405, 406, 407, 408, 409, 410, 359, 412, 35, - /* 1940 */ 35, 228, 35, 35, 35, 367, 35, 70, 92, 35, - /* 1950 */ 372, 35, 374, 359, 44, 35, 22, 35, 35, 35, - /* 1960 */ 35, 367, 35, 70, 35, 35, 372, 35, 374, 22, - /* 1970 */ 35, 0, 35, 447, 48, 39, 398, 0, 35, 48, - /* 1980 */ 402, 39, 0, 405, 406, 407, 408, 409, 410, 35, - /* 1990 */ 412, 39, 398, 48, 0, 35, 402, 48, 39, 405, - /* 2000 */ 406, 407, 408, 409, 410, 0, 412, 35, 35, 0, - /* 2010 */ 22, 328, 21, 461, 22, 22, 21, 20, 461, 461, - /* 2020 */ 461, 461, 461, 461, 461, 461, 461, 449, 461, 328, - /* 2030 */ 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - /* 2040 */ 461, 461, 359, 461, 461, 461, 461, 364, 461, 461, - /* 2050 */ 367, 461, 458, 461, 461, 372, 461, 374, 461, 461, - /* 2060 */ 359, 461, 461, 461, 461, 461, 461, 461, 367, 461, - /* 2070 */ 461, 461, 461, 372, 461, 374, 461, 461, 461, 461, - /* 2080 */ 461, 398, 461, 328, 461, 402, 461, 461, 405, 406, - /* 2090 */ 407, 408, 409, 410, 461, 412, 461, 461, 461, 398, - /* 2100 */ 328, 461, 461, 402, 461, 461, 405, 406, 407, 408, - /* 2110 */ 409, 410, 461, 412, 359, 414, 461, 461, 461, 364, - /* 2120 */ 461, 461, 367, 461, 461, 461, 461, 372, 461, 374, - /* 2130 */ 461, 359, 461, 461, 461, 461, 364, 461, 461, 367, - /* 2140 */ 461, 461, 461, 461, 372, 461, 374, 461, 461, 461, - /* 2150 */ 461, 461, 328, 398, 461, 461, 461, 402, 461, 461, - /* 2160 */ 405, 406, 407, 408, 409, 410, 461, 412, 328, 461, - /* 2170 */ 398, 461, 461, 461, 402, 461, 461, 405, 406, 407, - /* 2180 */ 408, 409, 410, 359, 412, 461, 461, 461, 461, 461, - /* 2190 */ 461, 367, 461, 461, 461, 461, 372, 461, 374, 359, - /* 2200 */ 461, 461, 461, 461, 461, 461, 461, 367, 461, 461, - /* 2210 */ 461, 461, 372, 461, 374, 461, 461, 461, 461, 461, - /* 2220 */ 328, 461, 398, 461, 461, 461, 402, 461, 461, 405, - /* 2230 */ 406, 407, 408, 409, 410, 461, 412, 461, 398, 461, - /* 2240 */ 461, 461, 402, 461, 461, 405, 406, 407, 408, 409, - /* 2250 */ 410, 359, 412, 461, 461, 461, 461, 461, 461, 367, - /* 2260 */ 461, 461, 461, 461, 372, 461, 374, 461, 461, 461, - /* 2270 */ 461, 461, 461, 461, 328, 461, 461, 461, 461, 461, - /* 2280 */ 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - /* 2290 */ 398, 461, 461, 461, 402, 328, 461, 405, 406, 407, - /* 2300 */ 408, 409, 410, 461, 412, 359, 461, 461, 461, 461, - /* 2310 */ 461, 461, 461, 367, 461, 461, 461, 461, 372, 461, - /* 2320 */ 374, 461, 461, 461, 461, 461, 359, 461, 461, 461, - /* 2330 */ 461, 461, 461, 461, 367, 461, 461, 461, 461, 372, - /* 2340 */ 461, 374, 461, 461, 398, 461, 461, 461, 402, 461, - /* 2350 */ 461, 405, 406, 407, 408, 409, 410, 461, 412, 461, - /* 2360 */ 461, 461, 461, 461, 461, 398, 461, 461, 461, 402, - /* 2370 */ 461, 328, 405, 406, 407, 408, 409, 410, 461, 412, - /* 2380 */ 461, 461, 461, 461, 461, 461, 461, 461, 461, 328, - /* 2390 */ 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - /* 2400 */ 461, 461, 359, 461, 461, 461, 461, 461, 461, 461, - /* 2410 */ 367, 461, 461, 461, 461, 372, 461, 374, 461, 461, - /* 2420 */ 359, 461, 461, 461, 461, 461, 461, 461, 367, 461, - /* 2430 */ 461, 461, 461, 372, 461, 374, 461, 461, 461, 461, - /* 2440 */ 461, 398, 461, 328, 461, 402, 461, 461, 405, 406, - /* 2450 */ 407, 408, 409, 410, 461, 412, 461, 461, 461, 398, - /* 2460 */ 328, 461, 461, 402, 461, 461, 405, 406, 407, 408, - /* 2470 */ 409, 410, 461, 412, 359, 461, 461, 461, 461, 461, - /* 2480 */ 461, 461, 367, 461, 461, 461, 461, 372, 461, 374, - /* 2490 */ 461, 359, 461, 461, 461, 461, 461, 461, 461, 367, - /* 2500 */ 461, 461, 461, 461, 372, 461, 374, 461, 461, 461, - /* 2510 */ 461, 461, 328, 398, 461, 461, 461, 402, 461, 461, - /* 2520 */ 405, 406, 407, 408, 409, 410, 461, 412, 328, 461, - /* 2530 */ 398, 461, 461, 461, 402, 461, 461, 405, 406, 407, - /* 2540 */ 408, 409, 410, 359, 412, 461, 461, 461, 461, 461, - /* 2550 */ 461, 367, 461, 461, 461, 461, 372, 461, 374, 359, - /* 2560 */ 461, 461, 461, 461, 461, 461, 461, 367, 461, 461, - /* 2570 */ 461, 461, 372, 461, 374, 461, 461, 461, 461, 461, - /* 2580 */ 328, 461, 398, 461, 461, 461, 402, 461, 461, 405, - /* 2590 */ 406, 407, 408, 409, 410, 461, 412, 461, 398, 461, - /* 2600 */ 461, 461, 402, 328, 461, 405, 406, 407, 408, 409, - /* 2610 */ 410, 359, 412, 461, 461, 461, 461, 461, 461, 367, - /* 2620 */ 461, 461, 461, 461, 372, 461, 374, 461, 461, 461, - /* 2630 */ 461, 461, 461, 461, 359, 461, 461, 461, 461, 461, - /* 2640 */ 461, 461, 367, 461, 461, 461, 461, 372, 461, 374, - /* 2650 */ 398, 461, 461, 461, 402, 328, 461, 405, 406, 407, - /* 2660 */ 408, 409, 410, 461, 412, 461, 461, 461, 461, 461, - /* 2670 */ 461, 461, 461, 398, 461, 461, 461, 402, 461, 461, - /* 2680 */ 405, 406, 407, 408, 409, 410, 359, 412, 461, 461, - /* 2690 */ 461, 461, 461, 461, 367, 461, 461, 461, 461, 372, - /* 2700 */ 461, 374, 461, 461, 461, 461, 461, 461, 461, 461, - /* 2710 */ 461, 461, 461, 461, 461, 461, 461, 461, 328, 461, - /* 2720 */ 461, 461, 461, 461, 461, 398, 461, 461, 461, 402, - /* 2730 */ 461, 461, 405, 406, 407, 408, 409, 410, 461, 412, - /* 2740 */ 461, 461, 461, 461, 461, 461, 461, 461, 461, 359, - /* 2750 */ 461, 461, 461, 461, 461, 461, 461, 367, 461, 461, - /* 2760 */ 461, 461, 372, 461, 374, 461, 461, 461, 461, 461, - /* 2770 */ 328, 461, 461, 461, 461, 461, 461, 461, 461, 461, - /* 2780 */ 461, 461, 461, 461, 461, 461, 461, 461, 398, 328, - /* 2790 */ 461, 461, 402, 461, 461, 405, 406, 407, 408, 409, - /* 2800 */ 410, 359, 412, 461, 461, 461, 461, 461, 461, 367, - /* 2810 */ 461, 461, 461, 461, 372, 461, 374, 461, 461, 461, - /* 2820 */ 359, 461, 461, 461, 461, 461, 461, 461, 367, 461, - /* 2830 */ 461, 461, 461, 372, 461, 374, 461, 461, 461, 461, - /* 2840 */ 398, 328, 461, 461, 402, 461, 461, 405, 406, 407, - /* 2850 */ 408, 409, 410, 461, 412, 461, 461, 328, 461, 398, - /* 2860 */ 461, 461, 461, 402, 461, 461, 405, 406, 407, 408, - /* 2870 */ 409, 410, 359, 412, 461, 461, 461, 461, 461, 461, - /* 2880 */ 367, 461, 461, 461, 461, 372, 461, 374, 359, 461, - /* 2890 */ 461, 461, 461, 461, 461, 461, 367, 461, 461, 461, - /* 2900 */ 461, 372, 461, 374, 461, 461, 461, 461, 461, 328, - /* 2910 */ 461, 398, 461, 461, 461, 402, 461, 461, 405, 406, - /* 2920 */ 407, 408, 409, 410, 461, 412, 461, 398, 461, 461, - /* 2930 */ 461, 402, 328, 461, 405, 406, 407, 408, 409, 410, - /* 2940 */ 359, 412, 461, 461, 461, 461, 461, 461, 367, 461, - /* 2950 */ 461, 461, 461, 372, 461, 374, 461, 461, 461, 461, - /* 2960 */ 461, 461, 461, 359, 461, 461, 461, 461, 461, 461, - /* 2970 */ 461, 367, 461, 461, 461, 461, 372, 461, 374, 398, - /* 2980 */ 461, 461, 461, 402, 328, 461, 405, 406, 407, 408, - /* 2990 */ 409, 410, 461, 412, 461, 461, 461, 461, 461, 461, - /* 3000 */ 461, 461, 398, 461, 461, 461, 402, 461, 461, 405, - /* 3010 */ 406, 407, 408, 409, 410, 359, 412, 461, 461, 461, - /* 3020 */ 461, 461, 461, 367, 461, 461, 461, 461, 372, 461, - /* 3030 */ 374, 461, 461, 461, 461, 461, 461, 461, 461, 461, - /* 3040 */ 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - /* 3050 */ 461, 461, 461, 461, 398, 461, 461, 461, 402, 461, - /* 3060 */ 461, 405, 406, 407, 408, 409, 410, 461, 412, + /* 0 */ 362, 361, 371, 375, 432, 374, 375, 333, 436, 335, + /* 10 */ 336, 373, 12, 13, 14, 362, 388, 389, 353, 360, + /* 20 */ 20, 356, 22, 451, 452, 20, 373, 368, 456, 457, + /* 30 */ 341, 337, 360, 33, 334, 35, 0, 337, 338, 14, + /* 40 */ 402, 403, 8, 9, 355, 20, 12, 13, 14, 15, + /* 50 */ 16, 413, 363, 381, 382, 402, 403, 404, 58, 344, + /* 60 */ 39, 432, 368, 63, 349, 436, 413, 408, 21, 329, + /* 70 */ 70, 24, 25, 26, 27, 28, 29, 30, 31, 32, + /* 80 */ 360, 452, 352, 12, 13, 456, 457, 367, 14, 4, + /* 90 */ 360, 20, 20, 22, 20, 95, 376, 63, 359, 369, + /* 100 */ 360, 65, 66, 67, 33, 337, 35, 360, 368, 73, + /* 110 */ 74, 372, 14, 373, 78, 375, 369, 117, 20, 83, + /* 120 */ 84, 427, 428, 429, 430, 89, 432, 433, 43, 58, + /* 130 */ 45, 46, 132, 133, 63, 20, 368, 0, 104, 399, + /* 140 */ 62, 70, 20, 403, 22, 58, 406, 407, 408, 409, + /* 150 */ 410, 411, 432, 413, 95, 432, 436, 35, 418, 436, + /* 160 */ 420, 35, 162, 163, 424, 425, 95, 95, 168, 169, + /* 170 */ 107, 451, 452, 51, 20, 452, 456, 457, 438, 456, + /* 180 */ 457, 94, 20, 183, 97, 185, 446, 162, 117, 126, + /* 190 */ 127, 128, 129, 130, 131, 161, 428, 429, 430, 62, + /* 200 */ 432, 433, 334, 132, 133, 337, 338, 58, 208, 209, + /* 210 */ 95, 211, 212, 213, 214, 215, 216, 217, 218, 219, + /* 220 */ 220, 221, 222, 223, 224, 225, 226, 227, 228, 65, + /* 230 */ 66, 67, 416, 162, 163, 419, 167, 73, 74, 168, + /* 240 */ 169, 182, 78, 184, 95, 20, 97, 83, 84, 95, + /* 250 */ 127, 421, 422, 89, 183, 4, 185, 8, 9, 20, + /* 260 */ 162, 12, 13, 14, 15, 16, 245, 233, 234, 235, + /* 270 */ 236, 237, 238, 239, 240, 241, 242, 243, 20, 208, + /* 280 */ 209, 343, 211, 212, 213, 214, 215, 216, 217, 218, + /* 290 */ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + /* 300 */ 360, 230, 12, 13, 366, 246, 337, 367, 0, 95, + /* 310 */ 20, 185, 22, 190, 191, 62, 376, 194, 337, 196, + /* 320 */ 251, 252, 253, 33, 326, 35, 108, 109, 110, 111, + /* 330 */ 112, 113, 114, 115, 116, 117, 118, 368, 120, 121, + /* 340 */ 122, 123, 124, 125, 33, 329, 95, 337, 58, 368, + /* 350 */ 8, 9, 362, 63, 12, 13, 14, 15, 16, 48, + /* 360 */ 70, 246, 329, 373, 44, 54, 55, 56, 57, 58, + /* 370 */ 62, 132, 133, 12, 13, 14, 12, 13, 14, 15, + /* 380 */ 16, 20, 328, 22, 330, 95, 44, 377, 390, 373, + /* 390 */ 132, 133, 402, 403, 33, 246, 35, 428, 429, 430, + /* 400 */ 246, 432, 433, 413, 337, 94, 373, 117, 97, 428, + /* 410 */ 429, 430, 360, 432, 433, 0, 96, 436, 351, 58, + /* 420 */ 374, 375, 132, 133, 175, 358, 168, 169, 376, 126, + /* 430 */ 432, 70, 451, 452, 436, 368, 21, 456, 457, 24, + /* 440 */ 25, 26, 27, 28, 29, 30, 31, 32, 329, 451, + /* 450 */ 452, 375, 162, 163, 456, 457, 95, 343, 168, 169, + /* 460 */ 246, 385, 8, 9, 388, 389, 12, 13, 14, 15, + /* 470 */ 16, 357, 22, 183, 20, 185, 165, 166, 117, 20, + /* 480 */ 366, 170, 8, 9, 173, 35, 12, 13, 14, 15, + /* 490 */ 16, 35, 373, 132, 133, 192, 193, 246, 208, 209, + /* 500 */ 189, 211, 212, 213, 214, 215, 216, 217, 218, 219, + /* 510 */ 220, 221, 222, 223, 224, 225, 226, 227, 228, 270, + /* 520 */ 329, 19, 106, 162, 163, 333, 70, 335, 336, 168, + /* 530 */ 169, 337, 8, 9, 79, 33, 12, 13, 14, 15, + /* 540 */ 16, 95, 346, 347, 183, 351, 185, 8, 9, 20, + /* 550 */ 48, 12, 13, 14, 15, 16, 54, 55, 56, 57, + /* 560 */ 58, 0, 368, 329, 373, 230, 20, 161, 22, 208, + /* 570 */ 209, 20, 211, 212, 213, 214, 215, 216, 217, 218, + /* 580 */ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + /* 590 */ 12, 13, 137, 138, 360, 70, 94, 51, 20, 97, + /* 600 */ 22, 70, 368, 337, 230, 360, 232, 373, 0, 375, + /* 610 */ 20, 33, 367, 35, 390, 160, 2, 351, 164, 330, + /* 620 */ 96, 376, 8, 9, 329, 405, 12, 13, 14, 15, + /* 630 */ 16, 361, 130, 399, 368, 96, 58, 403, 164, 233, + /* 640 */ 406, 407, 408, 409, 410, 411, 362, 413, 70, 243, + /* 650 */ 416, 431, 418, 419, 420, 360, 432, 373, 424, 425, + /* 660 */ 436, 12, 13, 368, 405, 337, 352, 165, 373, 20, + /* 670 */ 375, 22, 170, 95, 360, 451, 452, 208, 329, 351, + /* 680 */ 456, 457, 33, 369, 35, 20, 402, 403, 404, 187, + /* 690 */ 431, 189, 246, 164, 399, 117, 368, 413, 403, 405, + /* 700 */ 44, 406, 407, 408, 409, 410, 411, 58, 413, 360, + /* 710 */ 132, 133, 151, 162, 163, 107, 417, 368, 419, 70, + /* 720 */ 329, 160, 373, 0, 375, 431, 257, 258, 259, 260, + /* 730 */ 261, 341, 22, 3, 126, 127, 128, 129, 130, 131, + /* 740 */ 162, 163, 447, 448, 95, 35, 168, 169, 399, 417, + /* 750 */ 20, 419, 403, 363, 164, 406, 407, 408, 409, 410, + /* 760 */ 411, 183, 413, 185, 373, 2, 117, 418, 361, 420, + /* 770 */ 21, 8, 9, 424, 425, 12, 13, 14, 15, 16, + /* 780 */ 70, 132, 133, 34, 435, 36, 208, 209, 360, 211, + /* 790 */ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + /* 800 */ 222, 223, 224, 225, 226, 227, 228, 337, 368, 337, + /* 810 */ 382, 162, 163, 18, 178, 20, 352, 168, 169, 379, + /* 820 */ 368, 351, 27, 351, 360, 30, 96, 117, 33, 164, + /* 830 */ 107, 379, 183, 369, 185, 199, 200, 329, 368, 360, + /* 840 */ 368, 329, 20, 48, 353, 50, 367, 356, 53, 126, + /* 850 */ 127, 128, 129, 130, 131, 376, 4, 208, 209, 361, + /* 860 */ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + /* 870 */ 221, 222, 223, 224, 225, 226, 227, 228, 14, 15, + /* 880 */ 16, 373, 107, 18, 0, 373, 337, 368, 23, 94, + /* 890 */ 0, 337, 164, 183, 164, 185, 346, 347, 379, 171, + /* 900 */ 351, 106, 37, 38, 129, 351, 41, 358, 24, 25, + /* 910 */ 26, 27, 28, 29, 30, 31, 32, 368, 208, 209, + /* 920 */ 1, 2, 368, 267, 59, 60, 61, 370, 37, 370, + /* 930 */ 373, 136, 373, 3, 139, 140, 141, 142, 143, 144, + /* 940 */ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + /* 950 */ 155, 329, 157, 158, 159, 65, 66, 67, 68, 69, + /* 960 */ 95, 71, 72, 73, 74, 75, 76, 77, 78, 79, + /* 970 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + /* 980 */ 90, 91, 337, 329, 162, 4, 45, 46, 329, 98, + /* 990 */ 337, 100, 101, 329, 103, 373, 351, 337, 107, 134, + /* 1000 */ 19, 8, 9, 0, 351, 12, 13, 14, 15, 16, + /* 1010 */ 329, 351, 329, 368, 33, 96, 337, 337, 390, 337, + /* 1020 */ 129, 368, 337, 348, 337, 350, 394, 373, 368, 48, + /* 1030 */ 351, 351, 373, 351, 53, 0, 351, 373, 351, 58, + /* 1040 */ 175, 176, 177, 360, 349, 180, 370, 368, 368, 373, + /* 1050 */ 368, 368, 49, 368, 373, 368, 373, 42, 375, 44, + /* 1060 */ 432, 44, 329, 198, 436, 42, 201, 44, 203, 204, + /* 1070 */ 205, 206, 207, 337, 329, 94, 244, 245, 97, 451, + /* 1080 */ 452, 337, 399, 48, 456, 457, 403, 351, 337, 406, + /* 1090 */ 407, 408, 409, 410, 411, 351, 413, 329, 58, 247, + /* 1100 */ 106, 418, 351, 420, 368, 360, 373, 424, 425, 337, + /* 1110 */ 0, 246, 368, 368, 361, 329, 337, 329, 373, 368, + /* 1120 */ 375, 126, 127, 351, 99, 361, 131, 102, 360, 446, + /* 1130 */ 351, 337, 22, 132, 133, 337, 368, 97, 63, 329, + /* 1140 */ 368, 373, 361, 375, 399, 351, 0, 368, 403, 351, + /* 1150 */ 156, 406, 407, 408, 409, 410, 411, 329, 413, 373, + /* 1160 */ 0, 373, 368, 418, 390, 420, 368, 399, 22, 424, + /* 1170 */ 425, 403, 390, 329, 406, 407, 408, 409, 410, 411, + /* 1180 */ 435, 413, 22, 373, 329, 329, 418, 35, 420, 44, + /* 1190 */ 12, 13, 424, 425, 99, 265, 329, 102, 383, 99, + /* 1200 */ 22, 373, 102, 435, 360, 99, 432, 460, 102, 44, + /* 1210 */ 436, 33, 368, 35, 432, 449, 339, 373, 436, 375, + /* 1220 */ 44, 1, 2, 443, 339, 451, 452, 360, 373, 373, + /* 1230 */ 456, 457, 44, 451, 452, 368, 58, 44, 456, 457, + /* 1240 */ 373, 96, 375, 399, 383, 44, 44, 403, 70, 360, + /* 1250 */ 406, 407, 408, 409, 410, 411, 44, 413, 44, 390, + /* 1260 */ 13, 96, 418, 44, 420, 329, 399, 336, 424, 425, + /* 1270 */ 403, 44, 96, 406, 407, 408, 409, 410, 411, 435, + /* 1280 */ 413, 47, 35, 208, 96, 418, 269, 420, 329, 96, + /* 1290 */ 13, 424, 425, 35, 372, 117, 360, 96, 96, 383, + /* 1300 */ 44, 432, 435, 44, 368, 436, 95, 44, 96, 373, + /* 1310 */ 96, 375, 35, 434, 426, 96, 105, 437, 248, 360, + /* 1320 */ 451, 452, 44, 96, 44, 456, 457, 368, 70, 95, + /* 1330 */ 401, 453, 373, 48, 375, 399, 181, 185, 400, 403, + /* 1340 */ 392, 42, 406, 407, 408, 409, 410, 411, 412, 413, + /* 1350 */ 414, 415, 96, 380, 20, 96, 380, 383, 399, 96, + /* 1360 */ 161, 183, 403, 185, 378, 406, 407, 408, 409, 410, + /* 1370 */ 411, 20, 413, 337, 96, 329, 96, 418, 337, 420, + /* 1380 */ 380, 93, 378, 424, 425, 378, 208, 209, 345, 337, + /* 1390 */ 337, 337, 20, 331, 331, 20, 20, 375, 329, 221, + /* 1400 */ 222, 223, 224, 225, 226, 227, 360, 396, 343, 343, + /* 1410 */ 20, 338, 20, 337, 368, 391, 338, 343, 52, 373, + /* 1420 */ 343, 375, 343, 343, 343, 340, 340, 331, 360, 360, + /* 1430 */ 337, 360, 360, 373, 331, 197, 398, 368, 396, 188, + /* 1440 */ 373, 337, 373, 360, 375, 399, 341, 360, 360, 403, + /* 1450 */ 360, 360, 406, 407, 408, 409, 410, 411, 360, 413, + /* 1460 */ 341, 360, 360, 256, 418, 383, 420, 375, 399, 442, + /* 1470 */ 424, 425, 403, 329, 442, 406, 407, 408, 409, 410, + /* 1480 */ 411, 373, 413, 255, 395, 386, 373, 418, 373, 420, + /* 1490 */ 383, 373, 262, 424, 425, 386, 445, 174, 442, 444, + /* 1500 */ 329, 249, 441, 264, 360, 263, 271, 245, 461, 268, + /* 1510 */ 266, 454, 368, 401, 455, 368, 20, 373, 337, 375, + /* 1520 */ 338, 405, 386, 373, 440, 341, 341, 373, 386, 373, + /* 1530 */ 373, 360, 373, 439, 373, 166, 341, 384, 341, 368, + /* 1540 */ 368, 95, 356, 399, 373, 423, 375, 403, 95, 36, + /* 1550 */ 406, 407, 408, 409, 410, 411, 364, 413, 350, 337, + /* 1560 */ 373, 332, 341, 331, 420, 397, 329, 393, 424, 425, + /* 1570 */ 399, 354, 354, 327, 403, 342, 387, 406, 407, 408, + /* 1580 */ 409, 410, 411, 387, 413, 354, 0, 0, 190, 0, + /* 1590 */ 0, 420, 42, 0, 35, 424, 425, 360, 202, 35, + /* 1600 */ 35, 35, 202, 0, 35, 368, 35, 202, 0, 202, + /* 1610 */ 373, 0, 375, 35, 0, 0, 22, 35, 185, 183, + /* 1620 */ 0, 329, 0, 179, 0, 178, 0, 47, 0, 0, + /* 1630 */ 0, 0, 0, 42, 0, 0, 399, 0, 0, 329, + /* 1640 */ 403, 0, 0, 406, 407, 408, 409, 410, 411, 151, + /* 1650 */ 413, 35, 360, 0, 151, 0, 0, 420, 0, 0, + /* 1660 */ 368, 424, 425, 0, 0, 373, 0, 375, 22, 42, + /* 1670 */ 360, 0, 0, 0, 0, 0, 0, 0, 368, 0, + /* 1680 */ 0, 0, 0, 373, 135, 375, 0, 0, 0, 0, + /* 1690 */ 0, 399, 0, 329, 0, 403, 0, 0, 406, 407, + /* 1700 */ 408, 409, 410, 411, 35, 413, 0, 58, 0, 399, + /* 1710 */ 58, 0, 0, 403, 329, 14, 406, 407, 408, 409, + /* 1720 */ 410, 411, 44, 413, 360, 42, 0, 14, 0, 0, + /* 1730 */ 420, 0, 368, 0, 39, 425, 174, 373, 47, 375, + /* 1740 */ 47, 0, 40, 39, 39, 360, 47, 0, 0, 64, + /* 1750 */ 458, 459, 0, 368, 35, 48, 39, 0, 373, 35, + /* 1760 */ 375, 39, 48, 399, 0, 35, 48, 403, 0, 35, + /* 1770 */ 406, 407, 408, 409, 410, 411, 39, 413, 39, 329, + /* 1780 */ 48, 0, 0, 0, 399, 0, 35, 22, 403, 0, + /* 1790 */ 35, 406, 407, 408, 409, 410, 411, 35, 413, 22, + /* 1800 */ 329, 35, 104, 0, 35, 102, 35, 44, 35, 35, + /* 1810 */ 360, 44, 448, 22, 0, 22, 0, 22, 368, 35, + /* 1820 */ 50, 0, 35, 373, 0, 375, 0, 35, 22, 20, + /* 1830 */ 95, 360, 35, 35, 195, 450, 365, 0, 96, 368, + /* 1840 */ 35, 0, 22, 186, 373, 0, 375, 0, 44, 399, + /* 1850 */ 250, 3, 96, 403, 229, 95, 406, 407, 408, 409, + /* 1860 */ 410, 411, 44, 413, 164, 3, 254, 95, 250, 329, + /* 1870 */ 399, 96, 96, 164, 403, 95, 166, 406, 407, 408, + /* 1880 */ 409, 410, 411, 95, 413, 164, 171, 329, 172, 95, + /* 1890 */ 44, 171, 96, 250, 95, 44, 47, 47, 96, 44, + /* 1900 */ 360, 35, 35, 96, 35, 35, 35, 35, 368, 459, + /* 1910 */ 47, 96, 44, 373, 244, 375, 0, 0, 360, 96, + /* 1920 */ 47, 0, 0, 365, 95, 39, 368, 96, 95, 0, + /* 1930 */ 96, 373, 39, 375, 95, 95, 47, 95, 95, 399, + /* 1940 */ 105, 44, 329, 403, 165, 167, 406, 407, 408, 409, + /* 1950 */ 410, 411, 229, 413, 2, 415, 231, 399, 22, 95, + /* 1960 */ 95, 403, 208, 22, 406, 407, 408, 409, 410, 411, + /* 1970 */ 96, 413, 229, 360, 96, 95, 119, 96, 365, 47, + /* 1980 */ 95, 368, 95, 95, 47, 106, 373, 96, 375, 35, + /* 1990 */ 96, 35, 96, 95, 35, 95, 210, 329, 96, 35, + /* 2000 */ 95, 35, 96, 95, 35, 96, 95, 22, 95, 119, + /* 2010 */ 107, 119, 399, 329, 119, 44, 403, 35, 95, 406, + /* 2020 */ 407, 408, 409, 410, 411, 95, 413, 22, 360, 64, + /* 2030 */ 63, 35, 35, 35, 35, 35, 368, 35, 35, 35, + /* 2040 */ 70, 373, 35, 375, 360, 35, 35, 92, 35, 35, + /* 2050 */ 44, 35, 368, 22, 35, 35, 70, 373, 35, 375, + /* 2060 */ 35, 35, 35, 35, 22, 329, 0, 399, 35, 35, + /* 2070 */ 48, 403, 0, 35, 406, 407, 408, 409, 410, 411, + /* 2080 */ 39, 413, 39, 399, 48, 0, 35, 403, 329, 0, + /* 2090 */ 406, 407, 408, 409, 410, 411, 360, 413, 48, 39, + /* 2100 */ 35, 48, 39, 0, 368, 35, 35, 0, 22, 373, + /* 2110 */ 22, 375, 21, 20, 22, 21, 462, 462, 462, 360, + /* 2120 */ 462, 462, 462, 462, 462, 462, 462, 368, 462, 462, + /* 2130 */ 462, 462, 373, 462, 375, 399, 462, 462, 462, 403, + /* 2140 */ 329, 462, 406, 407, 408, 409, 410, 411, 462, 413, + /* 2150 */ 462, 462, 462, 462, 462, 462, 462, 462, 399, 462, + /* 2160 */ 462, 329, 403, 462, 462, 406, 407, 408, 409, 410, + /* 2170 */ 411, 360, 413, 462, 462, 462, 462, 462, 462, 368, + /* 2180 */ 462, 462, 462, 462, 373, 462, 375, 462, 462, 462, + /* 2190 */ 462, 462, 360, 462, 462, 462, 462, 462, 462, 462, + /* 2200 */ 368, 462, 462, 462, 462, 373, 462, 375, 462, 462, + /* 2210 */ 399, 462, 462, 462, 403, 462, 462, 406, 407, 408, + /* 2220 */ 409, 410, 411, 462, 413, 462, 462, 462, 462, 462, + /* 2230 */ 329, 399, 462, 462, 462, 403, 462, 462, 406, 407, + /* 2240 */ 408, 409, 410, 411, 462, 413, 462, 462, 329, 462, + /* 2250 */ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + /* 2260 */ 462, 360, 462, 462, 462, 462, 462, 462, 462, 368, + /* 2270 */ 462, 462, 462, 462, 373, 462, 375, 462, 462, 360, + /* 2280 */ 462, 462, 462, 462, 462, 462, 462, 368, 462, 462, + /* 2290 */ 462, 462, 373, 462, 375, 462, 462, 462, 462, 462, + /* 2300 */ 399, 462, 462, 329, 403, 462, 462, 406, 407, 408, + /* 2310 */ 409, 410, 411, 462, 413, 462, 462, 462, 399, 462, + /* 2320 */ 462, 462, 403, 462, 462, 406, 407, 408, 409, 410, + /* 2330 */ 411, 462, 413, 462, 360, 462, 462, 462, 462, 462, + /* 2340 */ 462, 462, 368, 462, 462, 462, 462, 373, 462, 375, + /* 2350 */ 462, 462, 462, 462, 462, 462, 462, 462, 329, 462, + /* 2360 */ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + /* 2370 */ 462, 462, 462, 399, 329, 462, 462, 403, 462, 462, + /* 2380 */ 406, 407, 408, 409, 410, 411, 462, 413, 462, 360, + /* 2390 */ 462, 462, 462, 462, 462, 462, 462, 368, 462, 462, + /* 2400 */ 462, 462, 373, 462, 375, 360, 462, 462, 462, 462, + /* 2410 */ 462, 462, 462, 368, 462, 462, 462, 462, 373, 462, + /* 2420 */ 375, 462, 462, 462, 462, 462, 329, 462, 399, 462, + /* 2430 */ 462, 462, 403, 462, 462, 406, 407, 408, 409, 410, + /* 2440 */ 411, 462, 413, 462, 399, 462, 462, 462, 403, 329, + /* 2450 */ 462, 406, 407, 408, 409, 410, 411, 360, 413, 462, + /* 2460 */ 462, 462, 462, 462, 462, 368, 462, 462, 462, 462, + /* 2470 */ 373, 462, 375, 462, 462, 462, 462, 462, 462, 462, + /* 2480 */ 360, 462, 462, 462, 462, 462, 462, 462, 368, 462, + /* 2490 */ 462, 462, 462, 373, 462, 375, 399, 462, 462, 462, + /* 2500 */ 403, 329, 462, 406, 407, 408, 409, 410, 411, 462, + /* 2510 */ 413, 462, 462, 462, 462, 462, 462, 462, 462, 399, + /* 2520 */ 462, 462, 329, 403, 462, 462, 406, 407, 408, 409, + /* 2530 */ 410, 411, 360, 413, 462, 462, 462, 462, 462, 462, + /* 2540 */ 368, 462, 462, 462, 462, 373, 462, 375, 462, 462, + /* 2550 */ 462, 462, 462, 360, 462, 462, 462, 462, 462, 462, + /* 2560 */ 462, 368, 462, 462, 462, 462, 373, 462, 375, 462, + /* 2570 */ 462, 399, 462, 462, 462, 403, 462, 462, 406, 407, + /* 2580 */ 408, 409, 410, 411, 462, 413, 462, 462, 462, 462, + /* 2590 */ 462, 329, 399, 462, 462, 462, 403, 462, 462, 406, + /* 2600 */ 407, 408, 409, 410, 411, 462, 413, 462, 462, 329, + /* 2610 */ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + /* 2620 */ 462, 462, 360, 462, 462, 462, 462, 462, 462, 462, + /* 2630 */ 368, 462, 462, 462, 462, 373, 462, 375, 462, 462, + /* 2640 */ 360, 462, 462, 462, 462, 462, 462, 462, 368, 462, + /* 2650 */ 462, 462, 462, 373, 462, 375, 462, 462, 462, 462, + /* 2660 */ 462, 399, 462, 462, 329, 403, 462, 462, 406, 407, + /* 2670 */ 408, 409, 410, 411, 462, 413, 462, 462, 462, 399, + /* 2680 */ 462, 462, 462, 403, 462, 462, 406, 407, 408, 409, + /* 2690 */ 410, 411, 462, 413, 462, 360, 462, 462, 462, 462, + /* 2700 */ 462, 462, 462, 368, 462, 462, 462, 462, 373, 462, + /* 2710 */ 375, 462, 462, 462, 462, 462, 462, 462, 462, 329, + /* 2720 */ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + /* 2730 */ 462, 462, 462, 462, 399, 329, 462, 462, 403, 462, + /* 2740 */ 462, 406, 407, 408, 409, 410, 411, 462, 413, 462, + /* 2750 */ 360, 462, 462, 462, 462, 462, 462, 462, 368, 462, + /* 2760 */ 462, 462, 462, 373, 462, 375, 360, 462, 462, 462, + /* 2770 */ 462, 462, 462, 462, 368, 462, 462, 462, 462, 373, + /* 2780 */ 462, 375, 462, 462, 462, 462, 462, 329, 462, 399, + /* 2790 */ 462, 462, 462, 403, 462, 462, 406, 407, 408, 409, + /* 2800 */ 410, 411, 462, 413, 462, 399, 462, 462, 462, 403, + /* 2810 */ 329, 462, 406, 407, 408, 409, 410, 411, 360, 413, + /* 2820 */ 462, 462, 462, 462, 462, 462, 368, 462, 462, 462, + /* 2830 */ 462, 373, 462, 375, 462, 462, 462, 462, 462, 462, + /* 2840 */ 462, 360, 462, 462, 462, 462, 462, 462, 462, 368, + /* 2850 */ 462, 462, 462, 462, 373, 462, 375, 399, 462, 462, + /* 2860 */ 462, 403, 462, 462, 406, 407, 408, 409, 410, 411, + /* 2870 */ 462, 413, 462, 462, 462, 462, 462, 462, 462, 462, + /* 2880 */ 399, 462, 462, 462, 403, 462, 462, 406, 407, 408, + /* 2890 */ 409, 410, 411, 462, 413, 326, 326, 326, 326, 326, + /* 2900 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2910 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2920 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2930 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2940 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2950 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2960 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2970 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2980 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2990 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3000 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3010 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3020 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3030 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3040 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3050 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3060 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3070 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3080 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3090 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3100 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3110 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3120 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3130 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3140 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3150 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3160 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3170 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3180 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3190 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3200 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3210 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 3220 */ 326, }; -#define YY_SHIFT_COUNT (721) +#define YY_SHIFT_COUNT (723) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (2009) +#define YY_SHIFT_MAX (2107) static const unsigned short int yy_shift_ofst[] = { - /* 0 */ 862, 0, 71, 0, 289, 289, 289, 289, 289, 289, - /* 10 */ 289, 289, 289, 289, 289, 360, 576, 576, 647, 576, - /* 20 */ 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, - /* 30 */ 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, - /* 40 */ 576, 576, 576, 576, 576, 576, 576, 576, 32, 134, - /* 50 */ 21, 590, 133, 7, 104, 7, 21, 21, 1216, 1216, - /* 60 */ 7, 1216, 1216, 136, 7, 423, 156, 156, 423, 401, - /* 70 */ 401, 215, 57, 5, 5, 156, 156, 156, 156, 156, - /* 80 */ 156, 156, 156, 156, 156, 80, 156, 156, 229, 156, - /* 90 */ 518, 156, 156, 156, 156, 518, 156, 156, 518, 156, - /* 100 */ 518, 518, 518, 156, 301, 792, 34, 34, 216, 474, - /* 110 */ 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, - /* 120 */ 283, 283, 283, 283, 283, 283, 283, 283, 283, 1073, - /* 130 */ 87, 215, 57, 593, 489, 499, 499, 499, 749, 441, - /* 140 */ 441, 489, 579, 579, 579, 530, 584, 518, 358, 518, - /* 150 */ 358, 358, 530, 786, 217, 217, 217, 217, 217, 217, - /* 160 */ 217, 1351, 408, 336, 612, 249, 430, 340, 464, 292, - /* 170 */ 716, 438, 757, 884, 882, 817, 748, 12, 898, 748, - /* 180 */ 975, 839, 765, 1009, 1211, 1082, 1231, 1257, 1231, 1124, - /* 190 */ 1267, 1267, 1231, 1124, 1124, 1204, 1267, 1267, 1267, 1283, - /* 200 */ 1283, 1285, 80, 1290, 80, 1293, 1295, 80, 1293, 80, - /* 210 */ 80, 80, 1267, 80, 1284, 1284, 1283, 518, 518, 518, - /* 220 */ 518, 518, 518, 518, 518, 518, 518, 518, 1267, 1283, - /* 230 */ 358, 358, 1172, 1285, 301, 1192, 1290, 301, 1267, 1257, - /* 240 */ 1257, 358, 1132, 1136, 358, 1132, 1136, 358, 358, 518, - /* 250 */ 1152, 1224, 1132, 1151, 1153, 1168, 1009, 1155, 1154, 1161, - /* 260 */ 1174, 579, 1409, 1267, 1293, 301, 301, 1136, 358, 358, - /* 270 */ 358, 358, 358, 1136, 358, 1301, 301, 530, 301, 579, - /* 280 */ 1384, 1387, 358, 786, 1267, 301, 1452, 1283, 3069, 3069, - /* 290 */ 3069, 3069, 3069, 3069, 3069, 3069, 3069, 887, 310, 94, - /* 300 */ 625, 15, 59, 738, 720, 753, 881, 73, 781, 472, - /* 310 */ 472, 472, 472, 472, 472, 472, 472, 472, 875, 124, - /* 320 */ 373, 373, 122, 4, 58, 166, 484, 300, 300, 790, - /* 330 */ 732, 588, 790, 790, 790, 113, 691, 288, 976, 907, - /* 340 */ 987, 923, 988, 1003, 1007, 1035, 1093, 1101, 1063, 1032, - /* 350 */ 1044, 865, 779, 977, 721, 1090, 1103, 1115, 1120, 1131, - /* 360 */ 1140, 1142, 1141, 998, 1051, 406, 1144, 723, 1145, 1147, - /* 370 */ 1148, 1150, 1157, 1176, 1050, 1212, 1217, 1184, 1190, 1494, - /* 380 */ 1498, 1311, 1503, 1504, 1463, 1507, 1473, 1321, 1489, 1491, - /* 390 */ 1496, 1328, 1533, 1499, 1500, 1335, 1538, 1339, 1541, 1508, - /* 400 */ 1542, 1522, 1545, 1511, 1364, 1367, 1550, 1551, 1374, 1376, - /* 410 */ 1554, 1555, 1510, 1558, 1559, 1561, 1520, 1569, 1571, 1572, - /* 420 */ 1573, 1574, 1576, 1579, 1580, 1432, 1549, 1585, 1436, 1588, - /* 430 */ 1589, 1590, 1592, 1606, 1607, 1608, 1609, 1610, 1611, 1612, - /* 440 */ 1613, 1614, 1615, 1616, 1552, 1595, 1596, 1597, 1598, 1599, - /* 450 */ 1581, 1600, 1601, 1602, 1469, 1618, 1619, 1587, 1620, 1565, - /* 460 */ 1630, 1575, 1632, 1634, 1593, 1617, 1603, 1605, 1623, 1621, - /* 470 */ 1625, 1622, 1640, 1624, 1626, 1641, 1645, 1646, 1627, 1475, - /* 480 */ 1650, 1653, 1654, 1591, 1657, 1658, 1628, 1629, 1631, 1660, - /* 490 */ 1636, 1633, 1635, 1661, 1637, 1643, 1639, 1662, 1638, 1644, - /* 500 */ 1655, 1667, 1676, 1680, 1693, 1604, 1642, 1664, 1673, 1697, - /* 510 */ 1669, 1671, 1672, 1674, 1666, 1668, 1678, 1679, 1689, 1681, - /* 520 */ 1702, 1695, 1715, 1696, 1670, 1721, 1700, 1688, 1724, 1690, - /* 530 */ 1726, 1707, 1728, 1708, 1711, 1710, 1712, 1557, 1652, 1665, - /* 540 */ 1735, 1586, 1717, 1753, 1647, 1734, 1648, 1649, 1757, 1759, - /* 550 */ 1656, 1651, 1758, 1719, 1515, 1684, 1682, 1685, 1659, 1547, - /* 560 */ 1663, 1523, 1686, 1737, 1687, 1691, 1692, 1694, 1698, 1740, - /* 570 */ 1741, 1744, 1703, 1749, 1546, 1705, 1706, 1793, 1760, 1548, - /* 580 */ 1764, 1768, 1770, 1771, 1773, 1774, 1714, 1716, 1766, 1564, - /* 590 */ 1777, 1787, 1815, 1817, 1818, 1835, 1742, 1797, 1743, 1745, - /* 600 */ 1746, 1748, 1750, 1699, 1752, 1848, 1801, 1704, 1754, 1747, - /* 610 */ 1605, 1803, 1807, 1675, 1677, 1713, 1851, 1833, 1709, 1761, - /* 620 */ 1762, 1765, 1763, 1767, 1775, 1810, 1769, 1778, 1814, 1776, - /* 630 */ 1841, 1718, 1788, 1780, 1791, 1831, 1832, 1794, 1792, 1834, - /* 640 */ 1795, 1796, 1859, 1800, 1805, 1862, 1804, 1806, 1869, 1813, - /* 650 */ 1786, 1790, 1798, 1799, 1888, 1808, 1816, 1868, 1819, 1878, - /* 660 */ 1825, 1868, 1868, 1897, 1857, 1860, 1890, 1891, 1894, 1895, - /* 670 */ 1904, 1905, 1907, 1908, 1909, 1911, 1877, 1856, 1910, 1914, - /* 680 */ 1916, 1920, 1934, 1922, 1923, 1924, 1893, 1666, 1925, 1668, - /* 690 */ 1927, 1929, 1930, 1932, 1947, 1935, 1971, 1937, 1926, 1936, - /* 700 */ 1977, 1943, 1931, 1942, 1982, 1954, 1945, 1952, 1994, 1960, - /* 710 */ 1949, 1959, 2005, 1972, 1973, 2009, 1988, 1991, 1992, 1993, - /* 720 */ 1995, 1997, + /* 0 */ 865, 0, 71, 0, 290, 290, 290, 290, 290, 290, + /* 10 */ 290, 290, 290, 290, 290, 361, 578, 578, 649, 578, + /* 20 */ 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, + /* 30 */ 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, + /* 40 */ 578, 578, 578, 578, 578, 578, 578, 578, 115, 154, + /* 50 */ 72, 59, 149, 214, 446, 214, 72, 72, 1178, 1178, + /* 60 */ 214, 1178, 1178, 251, 214, 258, 5, 5, 258, 85, + /* 70 */ 85, 551, 239, 74, 74, 5, 5, 5, 5, 5, + /* 80 */ 5, 5, 5, 5, 5, 78, 5, 5, 162, 5, + /* 90 */ 225, 5, 5, 5, 5, 225, 5, 5, 225, 5, + /* 100 */ 225, 225, 225, 5, 253, 795, 34, 34, 47, 164, + /* 110 */ 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + /* 120 */ 710, 710, 710, 710, 710, 710, 710, 710, 710, 891, + /* 130 */ 730, 551, 239, 137, 456, 529, 529, 529, 308, 374, + /* 140 */ 374, 456, 459, 459, 459, 416, 335, 225, 525, 225, + /* 150 */ 525, 525, 416, 531, 218, 218, 218, 218, 218, 218, + /* 160 */ 218, 502, 415, 36, 454, 249, 469, 122, 69, 25, + /* 170 */ 98, 546, 590, 941, 775, 665, 832, 21, 930, 832, + /* 180 */ 1015, 852, 822, 1070, 1285, 1155, 1299, 1334, 1299, 1199, + /* 190 */ 1351, 1351, 1299, 1199, 1199, 1288, 1351, 1351, 1351, 1372, + /* 200 */ 1372, 1375, 78, 1376, 78, 1390, 1392, 78, 1390, 78, + /* 210 */ 78, 78, 1351, 78, 1366, 1366, 1372, 225, 225, 225, + /* 220 */ 225, 225, 225, 225, 225, 225, 225, 225, 1351, 1372, + /* 230 */ 525, 525, 1238, 1375, 253, 1251, 1376, 253, 1351, 1334, + /* 240 */ 1334, 525, 1207, 1228, 525, 1207, 1228, 525, 525, 225, + /* 250 */ 1230, 1323, 1207, 1239, 1242, 1252, 1070, 1235, 1241, 1244, + /* 260 */ 1262, 459, 1496, 1351, 1390, 253, 253, 1228, 525, 525, + /* 270 */ 525, 525, 525, 1228, 525, 1369, 253, 416, 253, 459, + /* 280 */ 1446, 1453, 525, 531, 1351, 253, 1513, 1372, 2895, 2895, + /* 290 */ 2895, 2895, 2895, 2895, 2895, 2895, 2895, 890, 311, 884, + /* 300 */ 981, 524, 342, 539, 608, 614, 763, 474, 723, 993, + /* 310 */ 993, 993, 993, 993, 993, 993, 993, 993, 63, 123, + /* 320 */ 364, 364, 455, 636, 561, 87, 749, 303, 995, 995, + /* 330 */ 864, 919, 406, 864, 864, 864, 320, 1035, 450, 1023, + /* 340 */ 994, 1025, 1095, 1100, 1106, 1110, 1146, 1160, 1040, 1145, + /* 350 */ 1165, 1001, 656, 1017, 728, 1176, 1193, 1201, 1202, 1212, + /* 360 */ 1214, 1220, 1219, 126, 1152, 1075, 1188, 1234, 1227, 1256, + /* 370 */ 1259, 1263, 1278, 1280, 1211, 1247, 1277, 1258, 1003, 1586, + /* 380 */ 1587, 1398, 1589, 1590, 1550, 1593, 1559, 1396, 1564, 1565, + /* 390 */ 1566, 1400, 1603, 1569, 1571, 1405, 1608, 1407, 1611, 1578, + /* 400 */ 1614, 1594, 1615, 1582, 1433, 1436, 1620, 1622, 1444, 1447, + /* 410 */ 1624, 1626, 1580, 1628, 1629, 1630, 1591, 1631, 1632, 1634, + /* 420 */ 1635, 1637, 1638, 1641, 1642, 1498, 1616, 1653, 1503, 1655, + /* 430 */ 1656, 1658, 1659, 1663, 1664, 1666, 1671, 1672, 1673, 1674, + /* 440 */ 1675, 1676, 1677, 1679, 1680, 1627, 1681, 1682, 1686, 1687, + /* 450 */ 1688, 1689, 1646, 1690, 1692, 1694, 1549, 1696, 1697, 1669, + /* 460 */ 1706, 1649, 1708, 1652, 1711, 1712, 1683, 1695, 1678, 1691, + /* 470 */ 1701, 1693, 1713, 1699, 1726, 1702, 1704, 1728, 1729, 1731, + /* 480 */ 1705, 1562, 1733, 1741, 1747, 1685, 1748, 1752, 1719, 1707, + /* 490 */ 1717, 1757, 1724, 1714, 1722, 1764, 1730, 1718, 1737, 1768, + /* 500 */ 1734, 1732, 1739, 1781, 1782, 1783, 1785, 1698, 1703, 1751, + /* 510 */ 1765, 1789, 1755, 1762, 1766, 1769, 1763, 1767, 1771, 1773, + /* 520 */ 1777, 1774, 1803, 1791, 1814, 1793, 1770, 1816, 1795, 1784, + /* 530 */ 1821, 1787, 1824, 1792, 1826, 1806, 1809, 1797, 1798, 1639, + /* 540 */ 1742, 1735, 1837, 1700, 1805, 1841, 1657, 1820, 1709, 1710, + /* 550 */ 1845, 1847, 1721, 1716, 1848, 1804, 1600, 1760, 1756, 1772, + /* 560 */ 1715, 1625, 1720, 1612, 1775, 1818, 1776, 1780, 1788, 1794, + /* 570 */ 1796, 1846, 1849, 1850, 1799, 1851, 1618, 1802, 1807, 1862, + /* 580 */ 1855, 1643, 1866, 1867, 1869, 1870, 1871, 1872, 1815, 1823, + /* 590 */ 1863, 1670, 1868, 1873, 1916, 1917, 1921, 1922, 1829, 1886, + /* 600 */ 1833, 1831, 1834, 1839, 1840, 1778, 1842, 1929, 1893, 1779, + /* 610 */ 1843, 1835, 1691, 1889, 1897, 1723, 1725, 1743, 1952, 1936, + /* 620 */ 1754, 1864, 1874, 1865, 1878, 1880, 1881, 1932, 1885, 1887, + /* 630 */ 1937, 1891, 1941, 1786, 1888, 1879, 1894, 1954, 1956, 1898, + /* 640 */ 1896, 1959, 1900, 1902, 1964, 1905, 1906, 1966, 1908, 1909, + /* 650 */ 1969, 1911, 1857, 1890, 1892, 1895, 1985, 1903, 1913, 1971, + /* 660 */ 1923, 1982, 1930, 1971, 1971, 2005, 1965, 1967, 1996, 1997, + /* 670 */ 1998, 1999, 2000, 2002, 2003, 2004, 2007, 2010, 1970, 1955, + /* 680 */ 2006, 2011, 2013, 2014, 2031, 2016, 2019, 2020, 1986, 1763, + /* 690 */ 2023, 1767, 2025, 2026, 2027, 2028, 2042, 2033, 2066, 2034, + /* 700 */ 2022, 2041, 2072, 2038, 2036, 2043, 2085, 2051, 2050, 2060, + /* 710 */ 2089, 2065, 2053, 2063, 2103, 2070, 2071, 2107, 2086, 2091, + /* 720 */ 2088, 2092, 2094, 2093, }; #define YY_REDUCE_COUNT (296) -#define YY_REDUCE_MIN (-420) -#define YY_REDUCE_MAX (2656) +#define YY_REDUCE_MIN (-428) +#define YY_REDUCE_MAX (2481) static const short yy_reduce_ofst[] = { - /* 0 */ 276, -259, 233, 672, 744, 798, 859, 922, 942, 1045, - /* 10 */ 1104, 1158, 1219, 1277, 1331, 1360, 294, 1418, 1472, 1526, - /* 20 */ 1578, 1594, 1683, 1701, 1755, 1772, 1824, 1840, 1892, 1946, - /* 30 */ 1967, 2043, 2061, 2115, 2132, 2184, 2200, 2252, 2275, 2327, - /* 40 */ 2390, 2442, 2461, 2513, 2529, 2581, 2604, 2656, -258, 95, - /* 50 */ 105, -39, 559, 597, 599, 669, 187, 704, -346, -57, - /* 60 */ -391, 323, 480, -276, -250, 75, -222, 297, -371, -330, - /* 70 */ -326, -327, -363, -299, -257, 116, 128, 193, 199, 327, - /* 80 */ 409, 471, 645, 649, 657, 252, 693, 706, -51, 725, - /* 90 */ -203, 747, 762, 763, 772, 244, 791, 847, -5, 362, - /* 100 */ 465, 24, 485, 845, -210, -315, -420, -420, -217, -212, - /* 110 */ -69, -21, 41, 43, 70, 96, 148, 197, 225, 234, - /* 120 */ 346, 351, 385, 400, 454, 504, 547, 651, 655, -266, - /* 130 */ -170, 397, 191, 152, 533, -170, -150, 219, 477, 186, - /* 140 */ 486, 560, 343, 396, 546, -316, -319, -11, 25, 322, - /* 150 */ 76, 545, 563, 578, -342, 556, 624, 648, 666, 709, - /* 160 */ 734, -348, 722, 789, 766, 707, 729, 831, 737, 834, - /* 170 */ 834, 860, 827, 878, 852, 842, 801, 801, 796, 801, - /* 180 */ 830, 806, 834, 858, 861, 872, 896, 897, 901, 908, - /* 190 */ 952, 954, 912, 915, 918, 955, 962, 964, 966, 974, - /* 200 */ 978, 911, 965, 937, 970, 980, 928, 979, 982, 981, - /* 210 */ 983, 984, 986, 993, 999, 1004, 1012, 994, 996, 1001, - /* 220 */ 1005, 1008, 1010, 1013, 1015, 1016, 1018, 1019, 1021, 1028, - /* 230 */ 990, 991, 940, 985, 1031, 989, 1011, 1041, 1046, 1006, - /* 240 */ 1014, 1017, 945, 1025, 1020, 950, 1026, 1022, 1023, 834, - /* 250 */ 949, 958, 961, 963, 992, 995, 1027, 960, 968, 1024, - /* 260 */ 801, 1061, 1030, 1094, 1098, 1106, 1109, 1059, 1084, 1086, - /* 270 */ 1087, 1088, 1089, 1080, 1095, 1091, 1130, 1117, 1133, 1108, - /* 280 */ 1058, 1121, 1111, 1138, 1149, 1156, 1159, 1162, 1097, 1099, - /* 290 */ 1105, 1107, 1146, 1165, 1166, 1160, 1171, + /* 0 */ -2, -260, 234, 683, 349, 745, 768, 844, 867, 959, + /* 10 */ 1046, 1069, 1144, 1171, 1237, 936, 295, 1292, 1310, 1364, + /* 20 */ 1385, 1450, 1471, 1540, 1558, 1613, 1668, 1684, 1736, 1759, + /* 30 */ 1811, 1832, 1901, 1919, 1974, 2029, 2045, 2097, 2120, 2172, + /* 40 */ 2193, 2262, 2280, 2335, 2390, 2406, 2458, 2481, -19, -280, + /* 50 */ -306, 224, 628, 774, 782, 869, -232, -31, -347, 284, + /* 60 */ -428, -362, -10, -371, -277, 76, 67, 549, -372, -326, + /* 70 */ 192, -328, -369, -300, -132, 194, 266, 328, 470, 554, + /* 80 */ 645, 653, 660, 679, 680, 114, 472, 682, -341, 685, + /* 90 */ -60, 687, 736, 744, 751, -270, 772, 779, 245, 794, + /* 100 */ 314, 479, 464, 798, -311, 10, -170, -170, 54, -285, + /* 110 */ 16, 33, 119, 191, 391, 508, 512, 622, 654, 659, + /* 120 */ 664, 681, 733, 786, 788, 810, 828, 855, 856, -261, + /* 130 */ 220, 428, 46, -62, 196, 220, 259, 294, 390, 299, + /* 140 */ 332, 550, 440, 452, 519, -335, -184, -253, 557, 52, + /* 150 */ 559, 676, 491, 675, -360, 270, 407, 498, 753, 764, + /* 160 */ 781, 632, 289, 695, 815, 747, 766, 877, 780, 889, + /* 170 */ 889, 885, 861, 931, 922, 916, 879, 879, 878, 879, + /* 180 */ 888, 880, 889, 929, 938, 948, 973, 974, 976, 986, + /* 190 */ 1036, 1041, 1000, 1004, 1007, 1043, 1052, 1053, 1054, 1062, + /* 200 */ 1063, 1011, 1065, 1022, 1066, 1073, 1024, 1074, 1078, 1077, + /* 210 */ 1079, 1080, 1076, 1081, 1085, 1086, 1096, 1068, 1071, 1072, + /* 220 */ 1083, 1087, 1088, 1090, 1091, 1098, 1101, 1102, 1093, 1103, + /* 230 */ 1060, 1067, 1038, 1042, 1105, 1089, 1092, 1119, 1104, 1082, + /* 240 */ 1107, 1108, 1027, 1099, 1113, 1032, 1109, 1115, 1118, 889, + /* 250 */ 1051, 1055, 1056, 1061, 1084, 1094, 1112, 1047, 1059, 1057, + /* 260 */ 879, 1147, 1116, 1181, 1182, 1184, 1185, 1136, 1150, 1154, + /* 270 */ 1156, 1157, 1159, 1142, 1161, 1153, 1195, 1186, 1197, 1172, + /* 280 */ 1122, 1192, 1187, 1208, 1222, 1221, 1229, 1232, 1174, 1168, + /* 290 */ 1189, 1196, 1217, 1218, 1231, 1233, 1246, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 10 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 20 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 30 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 40 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 50 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 60 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 70 */ 1615, 1870, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 80 */ 1615, 1615, 1615, 1615, 1615, 1693, 1615, 1615, 1615, 1615, - /* 90 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 100 */ 1615, 1615, 1615, 1615, 1691, 1863, 2067, 1615, 1615, 1615, - /* 110 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 120 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 130 */ 2079, 1615, 1615, 1693, 1615, 2079, 2079, 2079, 1691, 2039, - /* 140 */ 2039, 1615, 1615, 1615, 1615, 1800, 1615, 1615, 1615, 1615, - /* 150 */ 1615, 1615, 1800, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 160 */ 1615, 1913, 1615, 1615, 2104, 2158, 1615, 1615, 2107, 1615, - /* 170 */ 1615, 1615, 1875, 1615, 1753, 2094, 2071, 2085, 2142, 2072, - /* 180 */ 2069, 2088, 1615, 2098, 1615, 1906, 1868, 1615, 1868, 1865, - /* 190 */ 1615, 1615, 1868, 1865, 1865, 1744, 1615, 1615, 1615, 1615, - /* 200 */ 1615, 1615, 1693, 1615, 1693, 1615, 1615, 1693, 1615, 1693, - /* 210 */ 1693, 1693, 1615, 1693, 1672, 1672, 1615, 1615, 1615, 1615, - /* 220 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 230 */ 1615, 1615, 1926, 1615, 1691, 1915, 1615, 1691, 1615, 1615, - /* 240 */ 1615, 1615, 2115, 2113, 1615, 2115, 2113, 1615, 1615, 1615, - /* 250 */ 2127, 2123, 2115, 2131, 2129, 2100, 2098, 2161, 2148, 2144, - /* 260 */ 2085, 1615, 1615, 1615, 1615, 1691, 1691, 2113, 1615, 1615, - /* 270 */ 1615, 1615, 1615, 2113, 1615, 1615, 1691, 1615, 1691, 1615, - /* 280 */ 1615, 1769, 1615, 1615, 1615, 1691, 1647, 1615, 1908, 1919, - /* 290 */ 1891, 1891, 1803, 1803, 1803, 1694, 1620, 1615, 1615, 1615, - /* 300 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 2126, - /* 310 */ 2125, 1994, 1615, 2043, 2042, 2041, 2032, 1993, 1765, 1615, - /* 320 */ 1992, 1991, 1615, 1615, 1615, 1615, 1615, 1882, 1881, 1985, - /* 330 */ 1615, 1615, 1986, 1984, 1983, 1615, 1615, 1615, 1615, 1615, - /* 340 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 350 */ 1615, 1615, 2145, 2149, 1615, 1615, 1615, 1615, 1615, 1615, - /* 360 */ 1615, 2068, 1615, 1615, 1615, 1615, 1615, 1968, 1615, 1615, - /* 370 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 380 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 390 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 400 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 410 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 420 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 430 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 440 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 450 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 460 */ 1615, 1615, 1615, 1615, 1615, 1615, 1652, 1973, 1615, 1615, - /* 470 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 480 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 490 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 500 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 510 */ 1615, 1615, 1615, 1615, 1732, 1731, 1615, 1615, 1615, 1615, - /* 520 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 530 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1976, 1615, - /* 540 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 550 */ 1615, 1615, 2141, 2101, 1615, 1615, 1615, 1615, 1615, 1615, - /* 560 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 570 */ 1615, 1968, 1615, 2124, 1615, 1615, 2139, 1615, 2143, 1615, - /* 580 */ 1615, 1615, 1615, 1615, 1615, 1615, 2078, 2074, 1615, 1615, - /* 590 */ 2070, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 600 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 610 */ 1967, 1615, 2029, 1615, 1615, 1615, 2063, 1615, 1615, 2014, - /* 620 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1976, - /* 630 */ 1615, 1979, 1615, 1615, 1615, 1615, 1615, 1797, 1615, 1615, - /* 640 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 650 */ 1782, 1780, 1779, 1778, 1615, 1775, 1615, 1810, 1615, 1615, - /* 660 */ 1615, 1806, 1805, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 670 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1712, 1615, - /* 680 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1704, 1615, 1703, - /* 690 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 700 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 710 */ 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, 1615, - /* 720 */ 1615, 1615, + /* 0 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 10 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 20 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 30 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 40 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 50 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 60 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 70 */ 1619, 1876, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 80 */ 1619, 1619, 1619, 1619, 1619, 1697, 1619, 1619, 1619, 1619, + /* 90 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 100 */ 1619, 1619, 1619, 1619, 1695, 1869, 2073, 1619, 1619, 1619, + /* 110 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 120 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 130 */ 2085, 1619, 1619, 1697, 1619, 2085, 2085, 2085, 1695, 2045, + /* 140 */ 2045, 1619, 1619, 1619, 1619, 1804, 1619, 1619, 1619, 1619, + /* 150 */ 1619, 1619, 1804, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 160 */ 1619, 1919, 1619, 1619, 2110, 2164, 1619, 1619, 2113, 1619, + /* 170 */ 1619, 1619, 1881, 1619, 1757, 2100, 2077, 2091, 2148, 2078, + /* 180 */ 2075, 2094, 1619, 2104, 1619, 1912, 1874, 1619, 1874, 1871, + /* 190 */ 1619, 1619, 1874, 1871, 1871, 1748, 1619, 1619, 1619, 1619, + /* 200 */ 1619, 1619, 1697, 1619, 1697, 1619, 1619, 1697, 1619, 1697, + /* 210 */ 1697, 1697, 1619, 1697, 1676, 1676, 1619, 1619, 1619, 1619, + /* 220 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 230 */ 1619, 1619, 1932, 1619, 1695, 1921, 1619, 1695, 1619, 1619, + /* 240 */ 1619, 1619, 2121, 2119, 1619, 2121, 2119, 1619, 1619, 1619, + /* 250 */ 2133, 2129, 2121, 2137, 2135, 2106, 2104, 2167, 2154, 2150, + /* 260 */ 2091, 1619, 1619, 1619, 1619, 1695, 1695, 2119, 1619, 1619, + /* 270 */ 1619, 1619, 1619, 2119, 1619, 1619, 1695, 1619, 1695, 1619, + /* 280 */ 1619, 1773, 1619, 1619, 1619, 1695, 1651, 1619, 1914, 1925, + /* 290 */ 1897, 1897, 1807, 1807, 1807, 1698, 1624, 1619, 1619, 1619, + /* 300 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 2132, + /* 310 */ 2131, 2000, 1619, 2049, 2048, 2047, 2038, 1999, 1769, 1619, + /* 320 */ 1998, 1997, 1619, 1619, 1619, 1619, 1619, 1619, 1888, 1887, + /* 330 */ 1991, 1619, 1619, 1992, 1990, 1989, 1619, 1619, 1619, 1619, + /* 340 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 350 */ 1619, 1619, 2151, 2155, 1619, 1619, 1619, 1619, 1619, 1619, + /* 360 */ 1619, 2074, 1619, 1619, 1619, 1619, 1619, 1974, 1619, 1619, + /* 370 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 380 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 390 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 400 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 410 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 420 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 430 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 440 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 450 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 460 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1656, 1979, + /* 470 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 480 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 490 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 500 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 510 */ 1619, 1619, 1619, 1619, 1619, 1619, 1736, 1735, 1619, 1619, + /* 520 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 530 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 540 */ 1982, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 550 */ 1619, 1619, 1619, 1619, 2147, 2107, 1619, 1619, 1619, 1619, + /* 560 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 570 */ 1619, 1619, 1619, 1974, 1619, 2130, 1619, 1619, 2145, 1619, + /* 580 */ 2149, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 2084, 2080, + /* 590 */ 1619, 1619, 2076, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 600 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 610 */ 1619, 1619, 1973, 1619, 2035, 1619, 1619, 1619, 2069, 1619, + /* 620 */ 1619, 2020, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 630 */ 1619, 1982, 1619, 1985, 1619, 1619, 1619, 1619, 1619, 1801, + /* 640 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 650 */ 1619, 1619, 1786, 1784, 1783, 1782, 1619, 1779, 1619, 1814, + /* 660 */ 1619, 1619, 1619, 1810, 1809, 1619, 1619, 1619, 1619, 1619, + /* 670 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 680 */ 1716, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1708, + /* 690 */ 1619, 1707, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 700 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 710 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + /* 720 */ 1619, 1619, 1619, 1619, }; /********** End of lemon-generated parsing tables *****************************/ @@ -1201,6 +1201,7 @@ static const YYCODETYPE yyFallback[] = { 0, /* CONSUMERS => nothing */ 0, /* SUBSCRIPTIONS => nothing */ 0, /* VNODES => nothing */ + 0, /* ALIVE => nothing */ 0, /* LIKE => nothing */ 0, /* TBNAME => nothing */ 0, /* QTAGS => nothing */ @@ -1269,7 +1270,7 @@ static const YYCODETYPE yyFallback[] = { 0, /* SERVER_STATUS => nothing */ 0, /* CURRENT_USER => nothing */ 0, /* CASE => nothing */ - 271, /* END => ABORT */ + 272, /* END => ABORT */ 0, /* WHEN => nothing */ 0, /* THEN => nothing */ 0, /* ELSE => nothing */ @@ -1313,59 +1314,59 @@ static const YYCODETYPE yyFallback[] = { 0, /* ASC => nothing */ 0, /* NULLS => nothing */ 0, /* ABORT => nothing */ - 271, /* AFTER => ABORT */ - 271, /* ATTACH => ABORT */ - 271, /* BEFORE => ABORT */ - 271, /* BEGIN => ABORT */ - 271, /* BITAND => ABORT */ - 271, /* BITNOT => ABORT */ - 271, /* BITOR => ABORT */ - 271, /* BLOCKS => ABORT */ - 271, /* CHANGE => ABORT */ - 271, /* COMMA => ABORT */ - 271, /* COMPACT => ABORT */ - 271, /* CONCAT => ABORT */ - 271, /* CONFLICT => ABORT */ - 271, /* COPY => ABORT */ - 271, /* DEFERRED => ABORT */ - 271, /* DELIMITERS => ABORT */ - 271, /* DETACH => ABORT */ - 271, /* DIVIDE => ABORT */ - 271, /* DOT => ABORT */ - 271, /* EACH => ABORT */ - 271, /* FAIL => ABORT */ - 271, /* FILE => ABORT */ - 271, /* FOR => ABORT */ - 271, /* GLOB => ABORT */ - 271, /* ID => ABORT */ - 271, /* IMMEDIATE => ABORT */ - 271, /* IMPORT => ABORT */ - 271, /* INITIALLY => ABORT */ - 271, /* INSTEAD => ABORT */ - 271, /* ISNULL => ABORT */ - 271, /* KEY => ABORT */ - 271, /* MODULES => ABORT */ - 271, /* NK_BITNOT => ABORT */ - 271, /* NK_SEMI => ABORT */ - 271, /* NOTNULL => ABORT */ - 271, /* OF => ABORT */ - 271, /* PLUS => ABORT */ - 271, /* PRIVILEGE => ABORT */ - 271, /* RAISE => ABORT */ - 271, /* REPLACE => ABORT */ - 271, /* RESTRICT => ABORT */ - 271, /* ROW => ABORT */ - 271, /* SEMI => ABORT */ - 271, /* STAR => ABORT */ - 271, /* STATEMENT => ABORT */ - 271, /* STRICT => ABORT */ - 271, /* STRING => ABORT */ - 271, /* TIMES => ABORT */ - 271, /* UPDATE => ABORT */ - 271, /* VALUES => ABORT */ - 271, /* VARIABLE => ABORT */ - 271, /* VIEW => ABORT */ - 271, /* WAL => ABORT */ + 272, /* AFTER => ABORT */ + 272, /* ATTACH => ABORT */ + 272, /* BEFORE => ABORT */ + 272, /* BEGIN => ABORT */ + 272, /* BITAND => ABORT */ + 272, /* BITNOT => ABORT */ + 272, /* BITOR => ABORT */ + 272, /* BLOCKS => ABORT */ + 272, /* CHANGE => ABORT */ + 272, /* COMMA => ABORT */ + 272, /* COMPACT => ABORT */ + 272, /* CONCAT => ABORT */ + 272, /* CONFLICT => ABORT */ + 272, /* COPY => ABORT */ + 272, /* DEFERRED => ABORT */ + 272, /* DELIMITERS => ABORT */ + 272, /* DETACH => ABORT */ + 272, /* DIVIDE => ABORT */ + 272, /* DOT => ABORT */ + 272, /* EACH => ABORT */ + 272, /* FAIL => ABORT */ + 272, /* FILE => ABORT */ + 272, /* FOR => ABORT */ + 272, /* GLOB => ABORT */ + 272, /* ID => ABORT */ + 272, /* IMMEDIATE => ABORT */ + 272, /* IMPORT => ABORT */ + 272, /* INITIALLY => ABORT */ + 272, /* INSTEAD => ABORT */ + 272, /* ISNULL => ABORT */ + 272, /* KEY => ABORT */ + 272, /* MODULES => ABORT */ + 272, /* NK_BITNOT => ABORT */ + 272, /* NK_SEMI => ABORT */ + 272, /* NOTNULL => ABORT */ + 272, /* OF => ABORT */ + 272, /* PLUS => ABORT */ + 272, /* PRIVILEGE => ABORT */ + 272, /* RAISE => ABORT */ + 272, /* REPLACE => ABORT */ + 272, /* RESTRICT => ABORT */ + 272, /* ROW => ABORT */ + 272, /* SEMI => ABORT */ + 272, /* STAR => ABORT */ + 272, /* STATEMENT => ABORT */ + 272, /* STRICT => ABORT */ + 272, /* STRING => ABORT */ + 272, /* TIMES => ABORT */ + 272, /* UPDATE => ABORT */ + 272, /* VALUES => ABORT */ + 272, /* VARIABLE => ABORT */ + 272, /* VIEW => ABORT */ + 272, /* WAL => ABORT */ }; #endif /* YYFALLBACK */ @@ -1613,307 +1614,308 @@ static const char *const yyTokenName[] = { /* 157 */ "CONSUMERS", /* 158 */ "SUBSCRIPTIONS", /* 159 */ "VNODES", - /* 160 */ "LIKE", - /* 161 */ "TBNAME", - /* 162 */ "QTAGS", - /* 163 */ "AS", - /* 164 */ "INDEX", - /* 165 */ "FUNCTION", - /* 166 */ "INTERVAL", - /* 167 */ "COUNT", - /* 168 */ "LAST_ROW", - /* 169 */ "TOPIC", - /* 170 */ "WITH", - /* 171 */ "META", - /* 172 */ "CONSUMER", - /* 173 */ "GROUP", - /* 174 */ "DESC", - /* 175 */ "DESCRIBE", - /* 176 */ "RESET", - /* 177 */ "QUERY", - /* 178 */ "CACHE", - /* 179 */ "EXPLAIN", - /* 180 */ "ANALYZE", - /* 181 */ "VERBOSE", - /* 182 */ "NK_BOOL", - /* 183 */ "RATIO", - /* 184 */ "NK_FLOAT", - /* 185 */ "OUTPUTTYPE", - /* 186 */ "AGGREGATE", - /* 187 */ "BUFSIZE", - /* 188 */ "STREAM", - /* 189 */ "INTO", - /* 190 */ "TRIGGER", - /* 191 */ "AT_ONCE", - /* 192 */ "WINDOW_CLOSE", - /* 193 */ "IGNORE", - /* 194 */ "EXPIRED", - /* 195 */ "FILL_HISTORY", - /* 196 */ "SUBTABLE", - /* 197 */ "KILL", - /* 198 */ "CONNECTION", - /* 199 */ "TRANSACTION", - /* 200 */ "BALANCE", - /* 201 */ "VGROUP", - /* 202 */ "MERGE", - /* 203 */ "REDISTRIBUTE", - /* 204 */ "SPLIT", - /* 205 */ "DELETE", - /* 206 */ "INSERT", - /* 207 */ "NULL", - /* 208 */ "NK_QUESTION", - /* 209 */ "NK_ARROW", - /* 210 */ "ROWTS", - /* 211 */ "QSTART", - /* 212 */ "QEND", - /* 213 */ "QDURATION", - /* 214 */ "WSTART", - /* 215 */ "WEND", - /* 216 */ "WDURATION", - /* 217 */ "IROWTS", - /* 218 */ "ISFILLED", - /* 219 */ "CAST", - /* 220 */ "NOW", - /* 221 */ "TODAY", - /* 222 */ "TIMEZONE", - /* 223 */ "CLIENT_VERSION", - /* 224 */ "SERVER_VERSION", - /* 225 */ "SERVER_STATUS", - /* 226 */ "CURRENT_USER", - /* 227 */ "CASE", - /* 228 */ "END", - /* 229 */ "WHEN", - /* 230 */ "THEN", - /* 231 */ "ELSE", - /* 232 */ "BETWEEN", - /* 233 */ "IS", - /* 234 */ "NK_LT", - /* 235 */ "NK_GT", - /* 236 */ "NK_LE", - /* 237 */ "NK_GE", - /* 238 */ "NK_NE", - /* 239 */ "MATCH", - /* 240 */ "NMATCH", - /* 241 */ "CONTAINS", - /* 242 */ "IN", - /* 243 */ "JOIN", - /* 244 */ "INNER", - /* 245 */ "SELECT", - /* 246 */ "DISTINCT", - /* 247 */ "WHERE", - /* 248 */ "PARTITION", - /* 249 */ "BY", - /* 250 */ "SESSION", - /* 251 */ "STATE_WINDOW", - /* 252 */ "EVENT_WINDOW", - /* 253 */ "START", - /* 254 */ "SLIDING", - /* 255 */ "FILL", - /* 256 */ "VALUE", - /* 257 */ "NONE", - /* 258 */ "PREV", - /* 259 */ "LINEAR", - /* 260 */ "NEXT", - /* 261 */ "HAVING", - /* 262 */ "RANGE", - /* 263 */ "EVERY", - /* 264 */ "ORDER", - /* 265 */ "SLIMIT", - /* 266 */ "SOFFSET", - /* 267 */ "LIMIT", - /* 268 */ "OFFSET", - /* 269 */ "ASC", - /* 270 */ "NULLS", - /* 271 */ "ABORT", - /* 272 */ "AFTER", - /* 273 */ "ATTACH", - /* 274 */ "BEFORE", - /* 275 */ "BEGIN", - /* 276 */ "BITAND", - /* 277 */ "BITNOT", - /* 278 */ "BITOR", - /* 279 */ "BLOCKS", - /* 280 */ "CHANGE", - /* 281 */ "COMMA", - /* 282 */ "COMPACT", - /* 283 */ "CONCAT", - /* 284 */ "CONFLICT", - /* 285 */ "COPY", - /* 286 */ "DEFERRED", - /* 287 */ "DELIMITERS", - /* 288 */ "DETACH", - /* 289 */ "DIVIDE", - /* 290 */ "DOT", - /* 291 */ "EACH", - /* 292 */ "FAIL", - /* 293 */ "FILE", - /* 294 */ "FOR", - /* 295 */ "GLOB", - /* 296 */ "ID", - /* 297 */ "IMMEDIATE", - /* 298 */ "IMPORT", - /* 299 */ "INITIALLY", - /* 300 */ "INSTEAD", - /* 301 */ "ISNULL", - /* 302 */ "KEY", - /* 303 */ "MODULES", - /* 304 */ "NK_BITNOT", - /* 305 */ "NK_SEMI", - /* 306 */ "NOTNULL", - /* 307 */ "OF", - /* 308 */ "PLUS", - /* 309 */ "PRIVILEGE", - /* 310 */ "RAISE", - /* 311 */ "REPLACE", - /* 312 */ "RESTRICT", - /* 313 */ "ROW", - /* 314 */ "SEMI", - /* 315 */ "STAR", - /* 316 */ "STATEMENT", - /* 317 */ "STRICT", - /* 318 */ "STRING", - /* 319 */ "TIMES", - /* 320 */ "UPDATE", - /* 321 */ "VALUES", - /* 322 */ "VARIABLE", - /* 323 */ "VIEW", - /* 324 */ "WAL", - /* 325 */ "cmd", - /* 326 */ "account_options", - /* 327 */ "alter_account_options", - /* 328 */ "literal", - /* 329 */ "alter_account_option", - /* 330 */ "user_name", - /* 331 */ "sysinfo_opt", - /* 332 */ "privileges", - /* 333 */ "priv_level", - /* 334 */ "priv_type_list", - /* 335 */ "priv_type", - /* 336 */ "db_name", - /* 337 */ "topic_name", - /* 338 */ "dnode_endpoint", - /* 339 */ "force_opt", - /* 340 */ "not_exists_opt", - /* 341 */ "db_options", - /* 342 */ "exists_opt", - /* 343 */ "alter_db_options", - /* 344 */ "speed_opt", - /* 345 */ "integer_list", - /* 346 */ "variable_list", - /* 347 */ "retention_list", - /* 348 */ "alter_db_option", - /* 349 */ "retention", - /* 350 */ "full_table_name", - /* 351 */ "column_def_list", - /* 352 */ "tags_def_opt", - /* 353 */ "table_options", - /* 354 */ "multi_create_clause", - /* 355 */ "tags_def", - /* 356 */ "multi_drop_clause", - /* 357 */ "alter_table_clause", - /* 358 */ "alter_table_options", - /* 359 */ "column_name", - /* 360 */ "type_name", - /* 361 */ "signed_literal", - /* 362 */ "create_subtable_clause", - /* 363 */ "specific_cols_opt", - /* 364 */ "expression_list", - /* 365 */ "drop_table_clause", - /* 366 */ "col_name_list", - /* 367 */ "table_name", - /* 368 */ "column_def", - /* 369 */ "duration_list", - /* 370 */ "rollup_func_list", - /* 371 */ "alter_table_option", - /* 372 */ "duration_literal", - /* 373 */ "rollup_func_name", - /* 374 */ "function_name", - /* 375 */ "col_name", - /* 376 */ "db_name_cond_opt", - /* 377 */ "like_pattern_opt", - /* 378 */ "table_name_cond", - /* 379 */ "from_db_opt", - /* 380 */ "tag_list_opt", - /* 381 */ "tag_item", - /* 382 */ "column_alias", - /* 383 */ "index_options", - /* 384 */ "func_list", - /* 385 */ "sliding_opt", - /* 386 */ "sma_stream_opt", - /* 387 */ "func", - /* 388 */ "sma_func_name", - /* 389 */ "query_or_subquery", - /* 390 */ "cgroup_name", - /* 391 */ "analyze_opt", - /* 392 */ "explain_options", - /* 393 */ "agg_func_opt", - /* 394 */ "bufsize_opt", - /* 395 */ "stream_name", - /* 396 */ "stream_options", - /* 397 */ "subtable_opt", - /* 398 */ "expression", - /* 399 */ "dnode_list", - /* 400 */ "where_clause_opt", - /* 401 */ "signed", - /* 402 */ "literal_func", - /* 403 */ "literal_list", - /* 404 */ "table_alias", - /* 405 */ "expr_or_subquery", - /* 406 */ "pseudo_column", - /* 407 */ "column_reference", - /* 408 */ "function_expression", - /* 409 */ "case_when_expression", - /* 410 */ "star_func", - /* 411 */ "star_func_para_list", - /* 412 */ "noarg_func", - /* 413 */ "other_para_list", - /* 414 */ "star_func_para", - /* 415 */ "when_then_list", - /* 416 */ "case_when_else_opt", - /* 417 */ "common_expression", - /* 418 */ "when_then_expr", - /* 419 */ "predicate", - /* 420 */ "compare_op", - /* 421 */ "in_op", - /* 422 */ "in_predicate_value", - /* 423 */ "boolean_value_expression", - /* 424 */ "boolean_primary", - /* 425 */ "from_clause_opt", - /* 426 */ "table_reference_list", - /* 427 */ "table_reference", - /* 428 */ "table_primary", - /* 429 */ "joined_table", - /* 430 */ "alias_opt", - /* 431 */ "subquery", - /* 432 */ "parenthesized_joined_table", - /* 433 */ "join_type", - /* 434 */ "search_condition", - /* 435 */ "query_specification", - /* 436 */ "set_quantifier_opt", - /* 437 */ "select_list", - /* 438 */ "partition_by_clause_opt", - /* 439 */ "range_opt", - /* 440 */ "every_opt", - /* 441 */ "fill_opt", - /* 442 */ "twindow_clause_opt", - /* 443 */ "group_by_clause_opt", - /* 444 */ "having_clause_opt", - /* 445 */ "select_item", - /* 446 */ "partition_list", - /* 447 */ "partition_item", - /* 448 */ "fill_mode", - /* 449 */ "group_by_list", - /* 450 */ "query_expression", - /* 451 */ "query_simple", - /* 452 */ "order_by_clause_opt", - /* 453 */ "slimit_clause_opt", - /* 454 */ "limit_clause_opt", - /* 455 */ "union_query_expression", - /* 456 */ "query_simple_or_subquery", - /* 457 */ "sort_specification_list", - /* 458 */ "sort_specification", - /* 459 */ "ordering_specification_opt", - /* 460 */ "null_ordering_opt", + /* 160 */ "ALIVE", + /* 161 */ "LIKE", + /* 162 */ "TBNAME", + /* 163 */ "QTAGS", + /* 164 */ "AS", + /* 165 */ "INDEX", + /* 166 */ "FUNCTION", + /* 167 */ "INTERVAL", + /* 168 */ "COUNT", + /* 169 */ "LAST_ROW", + /* 170 */ "TOPIC", + /* 171 */ "WITH", + /* 172 */ "META", + /* 173 */ "CONSUMER", + /* 174 */ "GROUP", + /* 175 */ "DESC", + /* 176 */ "DESCRIBE", + /* 177 */ "RESET", + /* 178 */ "QUERY", + /* 179 */ "CACHE", + /* 180 */ "EXPLAIN", + /* 181 */ "ANALYZE", + /* 182 */ "VERBOSE", + /* 183 */ "NK_BOOL", + /* 184 */ "RATIO", + /* 185 */ "NK_FLOAT", + /* 186 */ "OUTPUTTYPE", + /* 187 */ "AGGREGATE", + /* 188 */ "BUFSIZE", + /* 189 */ "STREAM", + /* 190 */ "INTO", + /* 191 */ "TRIGGER", + /* 192 */ "AT_ONCE", + /* 193 */ "WINDOW_CLOSE", + /* 194 */ "IGNORE", + /* 195 */ "EXPIRED", + /* 196 */ "FILL_HISTORY", + /* 197 */ "SUBTABLE", + /* 198 */ "KILL", + /* 199 */ "CONNECTION", + /* 200 */ "TRANSACTION", + /* 201 */ "BALANCE", + /* 202 */ "VGROUP", + /* 203 */ "MERGE", + /* 204 */ "REDISTRIBUTE", + /* 205 */ "SPLIT", + /* 206 */ "DELETE", + /* 207 */ "INSERT", + /* 208 */ "NULL", + /* 209 */ "NK_QUESTION", + /* 210 */ "NK_ARROW", + /* 211 */ "ROWTS", + /* 212 */ "QSTART", + /* 213 */ "QEND", + /* 214 */ "QDURATION", + /* 215 */ "WSTART", + /* 216 */ "WEND", + /* 217 */ "WDURATION", + /* 218 */ "IROWTS", + /* 219 */ "ISFILLED", + /* 220 */ "CAST", + /* 221 */ "NOW", + /* 222 */ "TODAY", + /* 223 */ "TIMEZONE", + /* 224 */ "CLIENT_VERSION", + /* 225 */ "SERVER_VERSION", + /* 226 */ "SERVER_STATUS", + /* 227 */ "CURRENT_USER", + /* 228 */ "CASE", + /* 229 */ "END", + /* 230 */ "WHEN", + /* 231 */ "THEN", + /* 232 */ "ELSE", + /* 233 */ "BETWEEN", + /* 234 */ "IS", + /* 235 */ "NK_LT", + /* 236 */ "NK_GT", + /* 237 */ "NK_LE", + /* 238 */ "NK_GE", + /* 239 */ "NK_NE", + /* 240 */ "MATCH", + /* 241 */ "NMATCH", + /* 242 */ "CONTAINS", + /* 243 */ "IN", + /* 244 */ "JOIN", + /* 245 */ "INNER", + /* 246 */ "SELECT", + /* 247 */ "DISTINCT", + /* 248 */ "WHERE", + /* 249 */ "PARTITION", + /* 250 */ "BY", + /* 251 */ "SESSION", + /* 252 */ "STATE_WINDOW", + /* 253 */ "EVENT_WINDOW", + /* 254 */ "START", + /* 255 */ "SLIDING", + /* 256 */ "FILL", + /* 257 */ "VALUE", + /* 258 */ "NONE", + /* 259 */ "PREV", + /* 260 */ "LINEAR", + /* 261 */ "NEXT", + /* 262 */ "HAVING", + /* 263 */ "RANGE", + /* 264 */ "EVERY", + /* 265 */ "ORDER", + /* 266 */ "SLIMIT", + /* 267 */ "SOFFSET", + /* 268 */ "LIMIT", + /* 269 */ "OFFSET", + /* 270 */ "ASC", + /* 271 */ "NULLS", + /* 272 */ "ABORT", + /* 273 */ "AFTER", + /* 274 */ "ATTACH", + /* 275 */ "BEFORE", + /* 276 */ "BEGIN", + /* 277 */ "BITAND", + /* 278 */ "BITNOT", + /* 279 */ "BITOR", + /* 280 */ "BLOCKS", + /* 281 */ "CHANGE", + /* 282 */ "COMMA", + /* 283 */ "COMPACT", + /* 284 */ "CONCAT", + /* 285 */ "CONFLICT", + /* 286 */ "COPY", + /* 287 */ "DEFERRED", + /* 288 */ "DELIMITERS", + /* 289 */ "DETACH", + /* 290 */ "DIVIDE", + /* 291 */ "DOT", + /* 292 */ "EACH", + /* 293 */ "FAIL", + /* 294 */ "FILE", + /* 295 */ "FOR", + /* 296 */ "GLOB", + /* 297 */ "ID", + /* 298 */ "IMMEDIATE", + /* 299 */ "IMPORT", + /* 300 */ "INITIALLY", + /* 301 */ "INSTEAD", + /* 302 */ "ISNULL", + /* 303 */ "KEY", + /* 304 */ "MODULES", + /* 305 */ "NK_BITNOT", + /* 306 */ "NK_SEMI", + /* 307 */ "NOTNULL", + /* 308 */ "OF", + /* 309 */ "PLUS", + /* 310 */ "PRIVILEGE", + /* 311 */ "RAISE", + /* 312 */ "REPLACE", + /* 313 */ "RESTRICT", + /* 314 */ "ROW", + /* 315 */ "SEMI", + /* 316 */ "STAR", + /* 317 */ "STATEMENT", + /* 318 */ "STRICT", + /* 319 */ "STRING", + /* 320 */ "TIMES", + /* 321 */ "UPDATE", + /* 322 */ "VALUES", + /* 323 */ "VARIABLE", + /* 324 */ "VIEW", + /* 325 */ "WAL", + /* 326 */ "cmd", + /* 327 */ "account_options", + /* 328 */ "alter_account_options", + /* 329 */ "literal", + /* 330 */ "alter_account_option", + /* 331 */ "user_name", + /* 332 */ "sysinfo_opt", + /* 333 */ "privileges", + /* 334 */ "priv_level", + /* 335 */ "priv_type_list", + /* 336 */ "priv_type", + /* 337 */ "db_name", + /* 338 */ "topic_name", + /* 339 */ "dnode_endpoint", + /* 340 */ "force_opt", + /* 341 */ "not_exists_opt", + /* 342 */ "db_options", + /* 343 */ "exists_opt", + /* 344 */ "alter_db_options", + /* 345 */ "speed_opt", + /* 346 */ "integer_list", + /* 347 */ "variable_list", + /* 348 */ "retention_list", + /* 349 */ "alter_db_option", + /* 350 */ "retention", + /* 351 */ "full_table_name", + /* 352 */ "column_def_list", + /* 353 */ "tags_def_opt", + /* 354 */ "table_options", + /* 355 */ "multi_create_clause", + /* 356 */ "tags_def", + /* 357 */ "multi_drop_clause", + /* 358 */ "alter_table_clause", + /* 359 */ "alter_table_options", + /* 360 */ "column_name", + /* 361 */ "type_name", + /* 362 */ "signed_literal", + /* 363 */ "create_subtable_clause", + /* 364 */ "specific_cols_opt", + /* 365 */ "expression_list", + /* 366 */ "drop_table_clause", + /* 367 */ "col_name_list", + /* 368 */ "table_name", + /* 369 */ "column_def", + /* 370 */ "duration_list", + /* 371 */ "rollup_func_list", + /* 372 */ "alter_table_option", + /* 373 */ "duration_literal", + /* 374 */ "rollup_func_name", + /* 375 */ "function_name", + /* 376 */ "col_name", + /* 377 */ "db_name_cond_opt", + /* 378 */ "like_pattern_opt", + /* 379 */ "table_name_cond", + /* 380 */ "from_db_opt", + /* 381 */ "tag_list_opt", + /* 382 */ "tag_item", + /* 383 */ "column_alias", + /* 384 */ "index_options", + /* 385 */ "func_list", + /* 386 */ "sliding_opt", + /* 387 */ "sma_stream_opt", + /* 388 */ "func", + /* 389 */ "sma_func_name", + /* 390 */ "query_or_subquery", + /* 391 */ "cgroup_name", + /* 392 */ "analyze_opt", + /* 393 */ "explain_options", + /* 394 */ "agg_func_opt", + /* 395 */ "bufsize_opt", + /* 396 */ "stream_name", + /* 397 */ "stream_options", + /* 398 */ "subtable_opt", + /* 399 */ "expression", + /* 400 */ "dnode_list", + /* 401 */ "where_clause_opt", + /* 402 */ "signed", + /* 403 */ "literal_func", + /* 404 */ "literal_list", + /* 405 */ "table_alias", + /* 406 */ "expr_or_subquery", + /* 407 */ "pseudo_column", + /* 408 */ "column_reference", + /* 409 */ "function_expression", + /* 410 */ "case_when_expression", + /* 411 */ "star_func", + /* 412 */ "star_func_para_list", + /* 413 */ "noarg_func", + /* 414 */ "other_para_list", + /* 415 */ "star_func_para", + /* 416 */ "when_then_list", + /* 417 */ "case_when_else_opt", + /* 418 */ "common_expression", + /* 419 */ "when_then_expr", + /* 420 */ "predicate", + /* 421 */ "compare_op", + /* 422 */ "in_op", + /* 423 */ "in_predicate_value", + /* 424 */ "boolean_value_expression", + /* 425 */ "boolean_primary", + /* 426 */ "from_clause_opt", + /* 427 */ "table_reference_list", + /* 428 */ "table_reference", + /* 429 */ "table_primary", + /* 430 */ "joined_table", + /* 431 */ "alias_opt", + /* 432 */ "subquery", + /* 433 */ "parenthesized_joined_table", + /* 434 */ "join_type", + /* 435 */ "search_condition", + /* 436 */ "query_specification", + /* 437 */ "set_quantifier_opt", + /* 438 */ "select_list", + /* 439 */ "partition_by_clause_opt", + /* 440 */ "range_opt", + /* 441 */ "every_opt", + /* 442 */ "fill_opt", + /* 443 */ "twindow_clause_opt", + /* 444 */ "group_by_clause_opt", + /* 445 */ "having_clause_opt", + /* 446 */ "select_item", + /* 447 */ "partition_list", + /* 448 */ "partition_item", + /* 449 */ "fill_mode", + /* 450 */ "group_by_list", + /* 451 */ "query_expression", + /* 452 */ "query_simple", + /* 453 */ "order_by_clause_opt", + /* 454 */ "slimit_clause_opt", + /* 455 */ "limit_clause_opt", + /* 456 */ "union_query_expression", + /* 457 */ "query_simple_or_subquery", + /* 458 */ "sort_specification_list", + /* 459 */ "sort_specification", + /* 460 */ "ordering_specification_opt", + /* 461 */ "null_ordering_opt", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ @@ -2166,307 +2168,309 @@ static const char *const yyRuleName[] = { /* 242 */ "cmd ::= SHOW TABLE TAGS tag_list_opt FROM table_name_cond from_db_opt", /* 243 */ "cmd ::= SHOW VNODES NK_INTEGER", /* 244 */ "cmd ::= SHOW VNODES NK_STRING", - /* 245 */ "db_name_cond_opt ::=", - /* 246 */ "db_name_cond_opt ::= db_name NK_DOT", - /* 247 */ "like_pattern_opt ::=", - /* 248 */ "like_pattern_opt ::= LIKE NK_STRING", - /* 249 */ "table_name_cond ::= table_name", - /* 250 */ "from_db_opt ::=", - /* 251 */ "from_db_opt ::= FROM db_name", - /* 252 */ "tag_list_opt ::=", - /* 253 */ "tag_list_opt ::= tag_item", - /* 254 */ "tag_list_opt ::= tag_list_opt NK_COMMA tag_item", - /* 255 */ "tag_item ::= TBNAME", - /* 256 */ "tag_item ::= QTAGS", - /* 257 */ "tag_item ::= column_name", - /* 258 */ "tag_item ::= column_name column_alias", - /* 259 */ "tag_item ::= column_name AS column_alias", - /* 260 */ "cmd ::= CREATE SMA INDEX not_exists_opt full_table_name ON full_table_name index_options", - /* 261 */ "cmd ::= CREATE INDEX not_exists_opt full_table_name ON full_table_name NK_LP col_name_list NK_RP", - /* 262 */ "cmd ::= DROP INDEX exists_opt full_table_name", - /* 263 */ "index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_RP sliding_opt sma_stream_opt", - /* 264 */ "index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt sma_stream_opt", - /* 265 */ "func_list ::= func", - /* 266 */ "func_list ::= func_list NK_COMMA func", - /* 267 */ "func ::= sma_func_name NK_LP expression_list NK_RP", - /* 268 */ "sma_func_name ::= function_name", - /* 269 */ "sma_func_name ::= COUNT", - /* 270 */ "sma_func_name ::= FIRST", - /* 271 */ "sma_func_name ::= LAST", - /* 272 */ "sma_func_name ::= LAST_ROW", - /* 273 */ "sma_stream_opt ::=", - /* 274 */ "sma_stream_opt ::= sma_stream_opt WATERMARK duration_literal", - /* 275 */ "sma_stream_opt ::= sma_stream_opt MAX_DELAY duration_literal", - /* 276 */ "sma_stream_opt ::= sma_stream_opt DELETE_MARK duration_literal", - /* 277 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name AS query_or_subquery", - /* 278 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name AS DATABASE db_name", - /* 279 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name WITH META AS DATABASE db_name", - /* 280 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name AS STABLE full_table_name", - /* 281 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name WITH META AS STABLE full_table_name", - /* 282 */ "cmd ::= DROP TOPIC exists_opt topic_name", - /* 283 */ "cmd ::= DROP CONSUMER GROUP exists_opt cgroup_name ON topic_name", - /* 284 */ "cmd ::= DESC full_table_name", - /* 285 */ "cmd ::= DESCRIBE full_table_name", - /* 286 */ "cmd ::= RESET QUERY CACHE", - /* 287 */ "cmd ::= EXPLAIN analyze_opt explain_options query_or_subquery", - /* 288 */ "analyze_opt ::=", - /* 289 */ "analyze_opt ::= ANALYZE", - /* 290 */ "explain_options ::=", - /* 291 */ "explain_options ::= explain_options VERBOSE NK_BOOL", - /* 292 */ "explain_options ::= explain_options RATIO NK_FLOAT", - /* 293 */ "cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt", - /* 294 */ "cmd ::= DROP FUNCTION exists_opt function_name", - /* 295 */ "agg_func_opt ::=", - /* 296 */ "agg_func_opt ::= AGGREGATE", - /* 297 */ "bufsize_opt ::=", - /* 298 */ "bufsize_opt ::= BUFSIZE NK_INTEGER", - /* 299 */ "cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name tags_def_opt subtable_opt AS query_or_subquery", - /* 300 */ "cmd ::= DROP STREAM exists_opt stream_name", - /* 301 */ "stream_options ::=", - /* 302 */ "stream_options ::= stream_options TRIGGER AT_ONCE", - /* 303 */ "stream_options ::= stream_options TRIGGER WINDOW_CLOSE", - /* 304 */ "stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal", - /* 305 */ "stream_options ::= stream_options WATERMARK duration_literal", - /* 306 */ "stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER", - /* 307 */ "stream_options ::= stream_options FILL_HISTORY NK_INTEGER", - /* 308 */ "subtable_opt ::=", - /* 309 */ "subtable_opt ::= SUBTABLE NK_LP expression NK_RP", - /* 310 */ "cmd ::= KILL CONNECTION NK_INTEGER", - /* 311 */ "cmd ::= KILL QUERY NK_STRING", - /* 312 */ "cmd ::= KILL TRANSACTION NK_INTEGER", - /* 313 */ "cmd ::= BALANCE VGROUP", - /* 314 */ "cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER", - /* 315 */ "cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list", - /* 316 */ "cmd ::= SPLIT VGROUP NK_INTEGER", - /* 317 */ "dnode_list ::= DNODE NK_INTEGER", - /* 318 */ "dnode_list ::= dnode_list DNODE NK_INTEGER", - /* 319 */ "cmd ::= DELETE FROM full_table_name where_clause_opt", - /* 320 */ "cmd ::= query_or_subquery", - /* 321 */ "cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery", - /* 322 */ "cmd ::= INSERT INTO full_table_name query_or_subquery", - /* 323 */ "literal ::= NK_INTEGER", - /* 324 */ "literal ::= NK_FLOAT", - /* 325 */ "literal ::= NK_STRING", - /* 326 */ "literal ::= NK_BOOL", - /* 327 */ "literal ::= TIMESTAMP NK_STRING", - /* 328 */ "literal ::= duration_literal", - /* 329 */ "literal ::= NULL", - /* 330 */ "literal ::= NK_QUESTION", - /* 331 */ "duration_literal ::= NK_VARIABLE", - /* 332 */ "signed ::= NK_INTEGER", - /* 333 */ "signed ::= NK_PLUS NK_INTEGER", - /* 334 */ "signed ::= NK_MINUS NK_INTEGER", - /* 335 */ "signed ::= NK_FLOAT", - /* 336 */ "signed ::= NK_PLUS NK_FLOAT", - /* 337 */ "signed ::= NK_MINUS NK_FLOAT", - /* 338 */ "signed_literal ::= signed", - /* 339 */ "signed_literal ::= NK_STRING", - /* 340 */ "signed_literal ::= NK_BOOL", - /* 341 */ "signed_literal ::= TIMESTAMP NK_STRING", - /* 342 */ "signed_literal ::= duration_literal", - /* 343 */ "signed_literal ::= NULL", - /* 344 */ "signed_literal ::= literal_func", - /* 345 */ "signed_literal ::= NK_QUESTION", - /* 346 */ "literal_list ::= signed_literal", - /* 347 */ "literal_list ::= literal_list NK_COMMA signed_literal", - /* 348 */ "db_name ::= NK_ID", - /* 349 */ "table_name ::= NK_ID", - /* 350 */ "column_name ::= NK_ID", - /* 351 */ "function_name ::= NK_ID", - /* 352 */ "table_alias ::= NK_ID", - /* 353 */ "column_alias ::= NK_ID", - /* 354 */ "user_name ::= NK_ID", - /* 355 */ "topic_name ::= NK_ID", - /* 356 */ "stream_name ::= NK_ID", - /* 357 */ "cgroup_name ::= NK_ID", - /* 358 */ "expr_or_subquery ::= expression", - /* 359 */ "expression ::= literal", - /* 360 */ "expression ::= pseudo_column", - /* 361 */ "expression ::= column_reference", - /* 362 */ "expression ::= function_expression", - /* 363 */ "expression ::= case_when_expression", - /* 364 */ "expression ::= NK_LP expression NK_RP", - /* 365 */ "expression ::= NK_PLUS expr_or_subquery", - /* 366 */ "expression ::= NK_MINUS expr_or_subquery", - /* 367 */ "expression ::= expr_or_subquery NK_PLUS expr_or_subquery", - /* 368 */ "expression ::= expr_or_subquery NK_MINUS expr_or_subquery", - /* 369 */ "expression ::= expr_or_subquery NK_STAR expr_or_subquery", - /* 370 */ "expression ::= expr_or_subquery NK_SLASH expr_or_subquery", - /* 371 */ "expression ::= expr_or_subquery NK_REM expr_or_subquery", - /* 372 */ "expression ::= column_reference NK_ARROW NK_STRING", - /* 373 */ "expression ::= expr_or_subquery NK_BITAND expr_or_subquery", - /* 374 */ "expression ::= expr_or_subquery NK_BITOR expr_or_subquery", - /* 375 */ "expression_list ::= expr_or_subquery", - /* 376 */ "expression_list ::= expression_list NK_COMMA expr_or_subquery", - /* 377 */ "column_reference ::= column_name", - /* 378 */ "column_reference ::= table_name NK_DOT column_name", - /* 379 */ "pseudo_column ::= ROWTS", - /* 380 */ "pseudo_column ::= TBNAME", - /* 381 */ "pseudo_column ::= table_name NK_DOT TBNAME", - /* 382 */ "pseudo_column ::= QSTART", - /* 383 */ "pseudo_column ::= QEND", - /* 384 */ "pseudo_column ::= QDURATION", - /* 385 */ "pseudo_column ::= WSTART", - /* 386 */ "pseudo_column ::= WEND", - /* 387 */ "pseudo_column ::= WDURATION", - /* 388 */ "pseudo_column ::= IROWTS", - /* 389 */ "pseudo_column ::= ISFILLED", - /* 390 */ "pseudo_column ::= QTAGS", - /* 391 */ "function_expression ::= function_name NK_LP expression_list NK_RP", - /* 392 */ "function_expression ::= star_func NK_LP star_func_para_list NK_RP", - /* 393 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP", - /* 394 */ "function_expression ::= literal_func", - /* 395 */ "literal_func ::= noarg_func NK_LP NK_RP", - /* 396 */ "literal_func ::= NOW", - /* 397 */ "noarg_func ::= NOW", - /* 398 */ "noarg_func ::= TODAY", - /* 399 */ "noarg_func ::= TIMEZONE", - /* 400 */ "noarg_func ::= DATABASE", - /* 401 */ "noarg_func ::= CLIENT_VERSION", - /* 402 */ "noarg_func ::= SERVER_VERSION", - /* 403 */ "noarg_func ::= SERVER_STATUS", - /* 404 */ "noarg_func ::= CURRENT_USER", - /* 405 */ "noarg_func ::= USER", - /* 406 */ "star_func ::= COUNT", - /* 407 */ "star_func ::= FIRST", - /* 408 */ "star_func ::= LAST", - /* 409 */ "star_func ::= LAST_ROW", - /* 410 */ "star_func_para_list ::= NK_STAR", - /* 411 */ "star_func_para_list ::= other_para_list", - /* 412 */ "other_para_list ::= star_func_para", - /* 413 */ "other_para_list ::= other_para_list NK_COMMA star_func_para", - /* 414 */ "star_func_para ::= expr_or_subquery", - /* 415 */ "star_func_para ::= table_name NK_DOT NK_STAR", - /* 416 */ "case_when_expression ::= CASE when_then_list case_when_else_opt END", - /* 417 */ "case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END", - /* 418 */ "when_then_list ::= when_then_expr", - /* 419 */ "when_then_list ::= when_then_list when_then_expr", - /* 420 */ "when_then_expr ::= WHEN common_expression THEN common_expression", - /* 421 */ "case_when_else_opt ::=", - /* 422 */ "case_when_else_opt ::= ELSE common_expression", - /* 423 */ "predicate ::= expr_or_subquery compare_op expr_or_subquery", - /* 424 */ "predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery", - /* 425 */ "predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery", - /* 426 */ "predicate ::= expr_or_subquery IS NULL", - /* 427 */ "predicate ::= expr_or_subquery IS NOT NULL", - /* 428 */ "predicate ::= expr_or_subquery in_op in_predicate_value", - /* 429 */ "compare_op ::= NK_LT", - /* 430 */ "compare_op ::= NK_GT", - /* 431 */ "compare_op ::= NK_LE", - /* 432 */ "compare_op ::= NK_GE", - /* 433 */ "compare_op ::= NK_NE", - /* 434 */ "compare_op ::= NK_EQ", - /* 435 */ "compare_op ::= LIKE", - /* 436 */ "compare_op ::= NOT LIKE", - /* 437 */ "compare_op ::= MATCH", - /* 438 */ "compare_op ::= NMATCH", - /* 439 */ "compare_op ::= CONTAINS", - /* 440 */ "in_op ::= IN", - /* 441 */ "in_op ::= NOT IN", - /* 442 */ "in_predicate_value ::= NK_LP literal_list NK_RP", - /* 443 */ "boolean_value_expression ::= boolean_primary", - /* 444 */ "boolean_value_expression ::= NOT boolean_primary", - /* 445 */ "boolean_value_expression ::= boolean_value_expression OR boolean_value_expression", - /* 446 */ "boolean_value_expression ::= boolean_value_expression AND boolean_value_expression", - /* 447 */ "boolean_primary ::= predicate", - /* 448 */ "boolean_primary ::= NK_LP boolean_value_expression NK_RP", - /* 449 */ "common_expression ::= expr_or_subquery", - /* 450 */ "common_expression ::= boolean_value_expression", - /* 451 */ "from_clause_opt ::=", - /* 452 */ "from_clause_opt ::= FROM table_reference_list", - /* 453 */ "table_reference_list ::= table_reference", - /* 454 */ "table_reference_list ::= table_reference_list NK_COMMA table_reference", - /* 455 */ "table_reference ::= table_primary", - /* 456 */ "table_reference ::= joined_table", - /* 457 */ "table_primary ::= table_name alias_opt", - /* 458 */ "table_primary ::= db_name NK_DOT table_name alias_opt", - /* 459 */ "table_primary ::= subquery alias_opt", - /* 460 */ "table_primary ::= parenthesized_joined_table", - /* 461 */ "alias_opt ::=", - /* 462 */ "alias_opt ::= table_alias", - /* 463 */ "alias_opt ::= AS table_alias", - /* 464 */ "parenthesized_joined_table ::= NK_LP joined_table NK_RP", - /* 465 */ "parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP", - /* 466 */ "joined_table ::= table_reference join_type JOIN table_reference ON search_condition", - /* 467 */ "join_type ::=", - /* 468 */ "join_type ::= INNER", - /* 469 */ "query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt", - /* 470 */ "set_quantifier_opt ::=", - /* 471 */ "set_quantifier_opt ::= DISTINCT", - /* 472 */ "set_quantifier_opt ::= ALL", - /* 473 */ "select_list ::= select_item", - /* 474 */ "select_list ::= select_list NK_COMMA select_item", - /* 475 */ "select_item ::= NK_STAR", - /* 476 */ "select_item ::= common_expression", - /* 477 */ "select_item ::= common_expression column_alias", - /* 478 */ "select_item ::= common_expression AS column_alias", - /* 479 */ "select_item ::= table_name NK_DOT NK_STAR", - /* 480 */ "where_clause_opt ::=", - /* 481 */ "where_clause_opt ::= WHERE search_condition", - /* 482 */ "partition_by_clause_opt ::=", - /* 483 */ "partition_by_clause_opt ::= PARTITION BY partition_list", - /* 484 */ "partition_list ::= partition_item", - /* 485 */ "partition_list ::= partition_list NK_COMMA partition_item", - /* 486 */ "partition_item ::= expr_or_subquery", - /* 487 */ "partition_item ::= expr_or_subquery column_alias", - /* 488 */ "partition_item ::= expr_or_subquery AS column_alias", - /* 489 */ "twindow_clause_opt ::=", - /* 490 */ "twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP", - /* 491 */ "twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP", - /* 492 */ "twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt", - /* 493 */ "twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt", - /* 494 */ "twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition", - /* 495 */ "sliding_opt ::=", - /* 496 */ "sliding_opt ::= SLIDING NK_LP duration_literal NK_RP", - /* 497 */ "fill_opt ::=", - /* 498 */ "fill_opt ::= FILL NK_LP fill_mode NK_RP", - /* 499 */ "fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP", - /* 500 */ "fill_mode ::= NONE", - /* 501 */ "fill_mode ::= PREV", - /* 502 */ "fill_mode ::= NULL", - /* 503 */ "fill_mode ::= LINEAR", - /* 504 */ "fill_mode ::= NEXT", - /* 505 */ "group_by_clause_opt ::=", - /* 506 */ "group_by_clause_opt ::= GROUP BY group_by_list", - /* 507 */ "group_by_list ::= expr_or_subquery", - /* 508 */ "group_by_list ::= group_by_list NK_COMMA expr_or_subquery", - /* 509 */ "having_clause_opt ::=", - /* 510 */ "having_clause_opt ::= HAVING search_condition", - /* 511 */ "range_opt ::=", - /* 512 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP", - /* 513 */ "every_opt ::=", - /* 514 */ "every_opt ::= EVERY NK_LP duration_literal NK_RP", - /* 515 */ "query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt", - /* 516 */ "query_simple ::= query_specification", - /* 517 */ "query_simple ::= union_query_expression", - /* 518 */ "union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery", - /* 519 */ "union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery", - /* 520 */ "query_simple_or_subquery ::= query_simple", - /* 521 */ "query_simple_or_subquery ::= subquery", - /* 522 */ "query_or_subquery ::= query_expression", - /* 523 */ "query_or_subquery ::= subquery", - /* 524 */ "order_by_clause_opt ::=", - /* 525 */ "order_by_clause_opt ::= ORDER BY sort_specification_list", - /* 526 */ "slimit_clause_opt ::=", - /* 527 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER", - /* 528 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER", - /* 529 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER", - /* 530 */ "limit_clause_opt ::=", - /* 531 */ "limit_clause_opt ::= LIMIT NK_INTEGER", - /* 532 */ "limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER", - /* 533 */ "limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER", - /* 534 */ "subquery ::= NK_LP query_expression NK_RP", - /* 535 */ "subquery ::= NK_LP subquery NK_RP", - /* 536 */ "search_condition ::= common_expression", - /* 537 */ "sort_specification_list ::= sort_specification", - /* 538 */ "sort_specification_list ::= sort_specification_list NK_COMMA sort_specification", - /* 539 */ "sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt", - /* 540 */ "ordering_specification_opt ::=", - /* 541 */ "ordering_specification_opt ::= ASC", - /* 542 */ "ordering_specification_opt ::= DESC", - /* 543 */ "null_ordering_opt ::=", - /* 544 */ "null_ordering_opt ::= NULLS FIRST", - /* 545 */ "null_ordering_opt ::= NULLS LAST", + /* 245 */ "cmd ::= SHOW db_name_cond_opt ALIVE", + /* 246 */ "cmd ::= SHOW CLUSTER ALIVE", + /* 247 */ "db_name_cond_opt ::=", + /* 248 */ "db_name_cond_opt ::= db_name NK_DOT", + /* 249 */ "like_pattern_opt ::=", + /* 250 */ "like_pattern_opt ::= LIKE NK_STRING", + /* 251 */ "table_name_cond ::= table_name", + /* 252 */ "from_db_opt ::=", + /* 253 */ "from_db_opt ::= FROM db_name", + /* 254 */ "tag_list_opt ::=", + /* 255 */ "tag_list_opt ::= tag_item", + /* 256 */ "tag_list_opt ::= tag_list_opt NK_COMMA tag_item", + /* 257 */ "tag_item ::= TBNAME", + /* 258 */ "tag_item ::= QTAGS", + /* 259 */ "tag_item ::= column_name", + /* 260 */ "tag_item ::= column_name column_alias", + /* 261 */ "tag_item ::= column_name AS column_alias", + /* 262 */ "cmd ::= CREATE SMA INDEX not_exists_opt full_table_name ON full_table_name index_options", + /* 263 */ "cmd ::= CREATE INDEX not_exists_opt full_table_name ON full_table_name NK_LP col_name_list NK_RP", + /* 264 */ "cmd ::= DROP INDEX exists_opt full_table_name", + /* 265 */ "index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_RP sliding_opt sma_stream_opt", + /* 266 */ "index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt sma_stream_opt", + /* 267 */ "func_list ::= func", + /* 268 */ "func_list ::= func_list NK_COMMA func", + /* 269 */ "func ::= sma_func_name NK_LP expression_list NK_RP", + /* 270 */ "sma_func_name ::= function_name", + /* 271 */ "sma_func_name ::= COUNT", + /* 272 */ "sma_func_name ::= FIRST", + /* 273 */ "sma_func_name ::= LAST", + /* 274 */ "sma_func_name ::= LAST_ROW", + /* 275 */ "sma_stream_opt ::=", + /* 276 */ "sma_stream_opt ::= sma_stream_opt WATERMARK duration_literal", + /* 277 */ "sma_stream_opt ::= sma_stream_opt MAX_DELAY duration_literal", + /* 278 */ "sma_stream_opt ::= sma_stream_opt DELETE_MARK duration_literal", + /* 279 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name AS query_or_subquery", + /* 280 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name AS DATABASE db_name", + /* 281 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name WITH META AS DATABASE db_name", + /* 282 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name AS STABLE full_table_name", + /* 283 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name WITH META AS STABLE full_table_name", + /* 284 */ "cmd ::= DROP TOPIC exists_opt topic_name", + /* 285 */ "cmd ::= DROP CONSUMER GROUP exists_opt cgroup_name ON topic_name", + /* 286 */ "cmd ::= DESC full_table_name", + /* 287 */ "cmd ::= DESCRIBE full_table_name", + /* 288 */ "cmd ::= RESET QUERY CACHE", + /* 289 */ "cmd ::= EXPLAIN analyze_opt explain_options query_or_subquery", + /* 290 */ "analyze_opt ::=", + /* 291 */ "analyze_opt ::= ANALYZE", + /* 292 */ "explain_options ::=", + /* 293 */ "explain_options ::= explain_options VERBOSE NK_BOOL", + /* 294 */ "explain_options ::= explain_options RATIO NK_FLOAT", + /* 295 */ "cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt", + /* 296 */ "cmd ::= DROP FUNCTION exists_opt function_name", + /* 297 */ "agg_func_opt ::=", + /* 298 */ "agg_func_opt ::= AGGREGATE", + /* 299 */ "bufsize_opt ::=", + /* 300 */ "bufsize_opt ::= BUFSIZE NK_INTEGER", + /* 301 */ "cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name tags_def_opt subtable_opt AS query_or_subquery", + /* 302 */ "cmd ::= DROP STREAM exists_opt stream_name", + /* 303 */ "stream_options ::=", + /* 304 */ "stream_options ::= stream_options TRIGGER AT_ONCE", + /* 305 */ "stream_options ::= stream_options TRIGGER WINDOW_CLOSE", + /* 306 */ "stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal", + /* 307 */ "stream_options ::= stream_options WATERMARK duration_literal", + /* 308 */ "stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER", + /* 309 */ "stream_options ::= stream_options FILL_HISTORY NK_INTEGER", + /* 310 */ "subtable_opt ::=", + /* 311 */ "subtable_opt ::= SUBTABLE NK_LP expression NK_RP", + /* 312 */ "cmd ::= KILL CONNECTION NK_INTEGER", + /* 313 */ "cmd ::= KILL QUERY NK_STRING", + /* 314 */ "cmd ::= KILL TRANSACTION NK_INTEGER", + /* 315 */ "cmd ::= BALANCE VGROUP", + /* 316 */ "cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER", + /* 317 */ "cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list", + /* 318 */ "cmd ::= SPLIT VGROUP NK_INTEGER", + /* 319 */ "dnode_list ::= DNODE NK_INTEGER", + /* 320 */ "dnode_list ::= dnode_list DNODE NK_INTEGER", + /* 321 */ "cmd ::= DELETE FROM full_table_name where_clause_opt", + /* 322 */ "cmd ::= query_or_subquery", + /* 323 */ "cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery", + /* 324 */ "cmd ::= INSERT INTO full_table_name query_or_subquery", + /* 325 */ "literal ::= NK_INTEGER", + /* 326 */ "literal ::= NK_FLOAT", + /* 327 */ "literal ::= NK_STRING", + /* 328 */ "literal ::= NK_BOOL", + /* 329 */ "literal ::= TIMESTAMP NK_STRING", + /* 330 */ "literal ::= duration_literal", + /* 331 */ "literal ::= NULL", + /* 332 */ "literal ::= NK_QUESTION", + /* 333 */ "duration_literal ::= NK_VARIABLE", + /* 334 */ "signed ::= NK_INTEGER", + /* 335 */ "signed ::= NK_PLUS NK_INTEGER", + /* 336 */ "signed ::= NK_MINUS NK_INTEGER", + /* 337 */ "signed ::= NK_FLOAT", + /* 338 */ "signed ::= NK_PLUS NK_FLOAT", + /* 339 */ "signed ::= NK_MINUS NK_FLOAT", + /* 340 */ "signed_literal ::= signed", + /* 341 */ "signed_literal ::= NK_STRING", + /* 342 */ "signed_literal ::= NK_BOOL", + /* 343 */ "signed_literal ::= TIMESTAMP NK_STRING", + /* 344 */ "signed_literal ::= duration_literal", + /* 345 */ "signed_literal ::= NULL", + /* 346 */ "signed_literal ::= literal_func", + /* 347 */ "signed_literal ::= NK_QUESTION", + /* 348 */ "literal_list ::= signed_literal", + /* 349 */ "literal_list ::= literal_list NK_COMMA signed_literal", + /* 350 */ "db_name ::= NK_ID", + /* 351 */ "table_name ::= NK_ID", + /* 352 */ "column_name ::= NK_ID", + /* 353 */ "function_name ::= NK_ID", + /* 354 */ "table_alias ::= NK_ID", + /* 355 */ "column_alias ::= NK_ID", + /* 356 */ "user_name ::= NK_ID", + /* 357 */ "topic_name ::= NK_ID", + /* 358 */ "stream_name ::= NK_ID", + /* 359 */ "cgroup_name ::= NK_ID", + /* 360 */ "expr_or_subquery ::= expression", + /* 361 */ "expression ::= literal", + /* 362 */ "expression ::= pseudo_column", + /* 363 */ "expression ::= column_reference", + /* 364 */ "expression ::= function_expression", + /* 365 */ "expression ::= case_when_expression", + /* 366 */ "expression ::= NK_LP expression NK_RP", + /* 367 */ "expression ::= NK_PLUS expr_or_subquery", + /* 368 */ "expression ::= NK_MINUS expr_or_subquery", + /* 369 */ "expression ::= expr_or_subquery NK_PLUS expr_or_subquery", + /* 370 */ "expression ::= expr_or_subquery NK_MINUS expr_or_subquery", + /* 371 */ "expression ::= expr_or_subquery NK_STAR expr_or_subquery", + /* 372 */ "expression ::= expr_or_subquery NK_SLASH expr_or_subquery", + /* 373 */ "expression ::= expr_or_subquery NK_REM expr_or_subquery", + /* 374 */ "expression ::= column_reference NK_ARROW NK_STRING", + /* 375 */ "expression ::= expr_or_subquery NK_BITAND expr_or_subquery", + /* 376 */ "expression ::= expr_or_subquery NK_BITOR expr_or_subquery", + /* 377 */ "expression_list ::= expr_or_subquery", + /* 378 */ "expression_list ::= expression_list NK_COMMA expr_or_subquery", + /* 379 */ "column_reference ::= column_name", + /* 380 */ "column_reference ::= table_name NK_DOT column_name", + /* 381 */ "pseudo_column ::= ROWTS", + /* 382 */ "pseudo_column ::= TBNAME", + /* 383 */ "pseudo_column ::= table_name NK_DOT TBNAME", + /* 384 */ "pseudo_column ::= QSTART", + /* 385 */ "pseudo_column ::= QEND", + /* 386 */ "pseudo_column ::= QDURATION", + /* 387 */ "pseudo_column ::= WSTART", + /* 388 */ "pseudo_column ::= WEND", + /* 389 */ "pseudo_column ::= WDURATION", + /* 390 */ "pseudo_column ::= IROWTS", + /* 391 */ "pseudo_column ::= ISFILLED", + /* 392 */ "pseudo_column ::= QTAGS", + /* 393 */ "function_expression ::= function_name NK_LP expression_list NK_RP", + /* 394 */ "function_expression ::= star_func NK_LP star_func_para_list NK_RP", + /* 395 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP", + /* 396 */ "function_expression ::= literal_func", + /* 397 */ "literal_func ::= noarg_func NK_LP NK_RP", + /* 398 */ "literal_func ::= NOW", + /* 399 */ "noarg_func ::= NOW", + /* 400 */ "noarg_func ::= TODAY", + /* 401 */ "noarg_func ::= TIMEZONE", + /* 402 */ "noarg_func ::= DATABASE", + /* 403 */ "noarg_func ::= CLIENT_VERSION", + /* 404 */ "noarg_func ::= SERVER_VERSION", + /* 405 */ "noarg_func ::= SERVER_STATUS", + /* 406 */ "noarg_func ::= CURRENT_USER", + /* 407 */ "noarg_func ::= USER", + /* 408 */ "star_func ::= COUNT", + /* 409 */ "star_func ::= FIRST", + /* 410 */ "star_func ::= LAST", + /* 411 */ "star_func ::= LAST_ROW", + /* 412 */ "star_func_para_list ::= NK_STAR", + /* 413 */ "star_func_para_list ::= other_para_list", + /* 414 */ "other_para_list ::= star_func_para", + /* 415 */ "other_para_list ::= other_para_list NK_COMMA star_func_para", + /* 416 */ "star_func_para ::= expr_or_subquery", + /* 417 */ "star_func_para ::= table_name NK_DOT NK_STAR", + /* 418 */ "case_when_expression ::= CASE when_then_list case_when_else_opt END", + /* 419 */ "case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END", + /* 420 */ "when_then_list ::= when_then_expr", + /* 421 */ "when_then_list ::= when_then_list when_then_expr", + /* 422 */ "when_then_expr ::= WHEN common_expression THEN common_expression", + /* 423 */ "case_when_else_opt ::=", + /* 424 */ "case_when_else_opt ::= ELSE common_expression", + /* 425 */ "predicate ::= expr_or_subquery compare_op expr_or_subquery", + /* 426 */ "predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery", + /* 427 */ "predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery", + /* 428 */ "predicate ::= expr_or_subquery IS NULL", + /* 429 */ "predicate ::= expr_or_subquery IS NOT NULL", + /* 430 */ "predicate ::= expr_or_subquery in_op in_predicate_value", + /* 431 */ "compare_op ::= NK_LT", + /* 432 */ "compare_op ::= NK_GT", + /* 433 */ "compare_op ::= NK_LE", + /* 434 */ "compare_op ::= NK_GE", + /* 435 */ "compare_op ::= NK_NE", + /* 436 */ "compare_op ::= NK_EQ", + /* 437 */ "compare_op ::= LIKE", + /* 438 */ "compare_op ::= NOT LIKE", + /* 439 */ "compare_op ::= MATCH", + /* 440 */ "compare_op ::= NMATCH", + /* 441 */ "compare_op ::= CONTAINS", + /* 442 */ "in_op ::= IN", + /* 443 */ "in_op ::= NOT IN", + /* 444 */ "in_predicate_value ::= NK_LP literal_list NK_RP", + /* 445 */ "boolean_value_expression ::= boolean_primary", + /* 446 */ "boolean_value_expression ::= NOT boolean_primary", + /* 447 */ "boolean_value_expression ::= boolean_value_expression OR boolean_value_expression", + /* 448 */ "boolean_value_expression ::= boolean_value_expression AND boolean_value_expression", + /* 449 */ "boolean_primary ::= predicate", + /* 450 */ "boolean_primary ::= NK_LP boolean_value_expression NK_RP", + /* 451 */ "common_expression ::= expr_or_subquery", + /* 452 */ "common_expression ::= boolean_value_expression", + /* 453 */ "from_clause_opt ::=", + /* 454 */ "from_clause_opt ::= FROM table_reference_list", + /* 455 */ "table_reference_list ::= table_reference", + /* 456 */ "table_reference_list ::= table_reference_list NK_COMMA table_reference", + /* 457 */ "table_reference ::= table_primary", + /* 458 */ "table_reference ::= joined_table", + /* 459 */ "table_primary ::= table_name alias_opt", + /* 460 */ "table_primary ::= db_name NK_DOT table_name alias_opt", + /* 461 */ "table_primary ::= subquery alias_opt", + /* 462 */ "table_primary ::= parenthesized_joined_table", + /* 463 */ "alias_opt ::=", + /* 464 */ "alias_opt ::= table_alias", + /* 465 */ "alias_opt ::= AS table_alias", + /* 466 */ "parenthesized_joined_table ::= NK_LP joined_table NK_RP", + /* 467 */ "parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP", + /* 468 */ "joined_table ::= table_reference join_type JOIN table_reference ON search_condition", + /* 469 */ "join_type ::=", + /* 470 */ "join_type ::= INNER", + /* 471 */ "query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt", + /* 472 */ "set_quantifier_opt ::=", + /* 473 */ "set_quantifier_opt ::= DISTINCT", + /* 474 */ "set_quantifier_opt ::= ALL", + /* 475 */ "select_list ::= select_item", + /* 476 */ "select_list ::= select_list NK_COMMA select_item", + /* 477 */ "select_item ::= NK_STAR", + /* 478 */ "select_item ::= common_expression", + /* 479 */ "select_item ::= common_expression column_alias", + /* 480 */ "select_item ::= common_expression AS column_alias", + /* 481 */ "select_item ::= table_name NK_DOT NK_STAR", + /* 482 */ "where_clause_opt ::=", + /* 483 */ "where_clause_opt ::= WHERE search_condition", + /* 484 */ "partition_by_clause_opt ::=", + /* 485 */ "partition_by_clause_opt ::= PARTITION BY partition_list", + /* 486 */ "partition_list ::= partition_item", + /* 487 */ "partition_list ::= partition_list NK_COMMA partition_item", + /* 488 */ "partition_item ::= expr_or_subquery", + /* 489 */ "partition_item ::= expr_or_subquery column_alias", + /* 490 */ "partition_item ::= expr_or_subquery AS column_alias", + /* 491 */ "twindow_clause_opt ::=", + /* 492 */ "twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP", + /* 493 */ "twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP", + /* 494 */ "twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt", + /* 495 */ "twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt", + /* 496 */ "twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition", + /* 497 */ "sliding_opt ::=", + /* 498 */ "sliding_opt ::= SLIDING NK_LP duration_literal NK_RP", + /* 499 */ "fill_opt ::=", + /* 500 */ "fill_opt ::= FILL NK_LP fill_mode NK_RP", + /* 501 */ "fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP", + /* 502 */ "fill_mode ::= NONE", + /* 503 */ "fill_mode ::= PREV", + /* 504 */ "fill_mode ::= NULL", + /* 505 */ "fill_mode ::= LINEAR", + /* 506 */ "fill_mode ::= NEXT", + /* 507 */ "group_by_clause_opt ::=", + /* 508 */ "group_by_clause_opt ::= GROUP BY group_by_list", + /* 509 */ "group_by_list ::= expr_or_subquery", + /* 510 */ "group_by_list ::= group_by_list NK_COMMA expr_or_subquery", + /* 511 */ "having_clause_opt ::=", + /* 512 */ "having_clause_opt ::= HAVING search_condition", + /* 513 */ "range_opt ::=", + /* 514 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP", + /* 515 */ "every_opt ::=", + /* 516 */ "every_opt ::= EVERY NK_LP duration_literal NK_RP", + /* 517 */ "query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt", + /* 518 */ "query_simple ::= query_specification", + /* 519 */ "query_simple ::= union_query_expression", + /* 520 */ "union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery", + /* 521 */ "union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery", + /* 522 */ "query_simple_or_subquery ::= query_simple", + /* 523 */ "query_simple_or_subquery ::= subquery", + /* 524 */ "query_or_subquery ::= query_expression", + /* 525 */ "query_or_subquery ::= subquery", + /* 526 */ "order_by_clause_opt ::=", + /* 527 */ "order_by_clause_opt ::= ORDER BY sort_specification_list", + /* 528 */ "slimit_clause_opt ::=", + /* 529 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER", + /* 530 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER", + /* 531 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER", + /* 532 */ "limit_clause_opt ::=", + /* 533 */ "limit_clause_opt ::= LIMIT NK_INTEGER", + /* 534 */ "limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER", + /* 535 */ "limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER", + /* 536 */ "subquery ::= NK_LP query_expression NK_RP", + /* 537 */ "subquery ::= NK_LP subquery NK_RP", + /* 538 */ "search_condition ::= common_expression", + /* 539 */ "sort_specification_list ::= sort_specification", + /* 540 */ "sort_specification_list ::= sort_specification_list NK_COMMA sort_specification", + /* 541 */ "sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt", + /* 542 */ "ordering_specification_opt ::=", + /* 543 */ "ordering_specification_opt ::= ASC", + /* 544 */ "ordering_specification_opt ::= DESC", + /* 545 */ "null_ordering_opt ::=", + /* 546 */ "null_ordering_opt ::= NULLS FIRST", + /* 547 */ "null_ordering_opt ::= NULLS LAST", }; #endif /* NDEBUG */ @@ -2593,194 +2597,194 @@ static void yy_destructor( */ /********* Begin destructor definitions ***************************************/ /* Default NON-TERMINAL Destructor */ - case 325: /* cmd */ - case 328: /* literal */ - case 341: /* db_options */ - case 343: /* alter_db_options */ - case 349: /* retention */ - case 350: /* full_table_name */ - case 353: /* table_options */ - case 357: /* alter_table_clause */ - case 358: /* alter_table_options */ - case 361: /* signed_literal */ - case 362: /* create_subtable_clause */ - case 365: /* drop_table_clause */ - case 368: /* column_def */ - case 372: /* duration_literal */ - case 373: /* rollup_func_name */ - case 375: /* col_name */ - case 376: /* db_name_cond_opt */ - case 377: /* like_pattern_opt */ - case 378: /* table_name_cond */ - case 379: /* from_db_opt */ - case 381: /* tag_item */ - case 383: /* index_options */ - case 385: /* sliding_opt */ - case 386: /* sma_stream_opt */ - case 387: /* func */ - case 389: /* query_or_subquery */ - case 392: /* explain_options */ - case 396: /* stream_options */ - case 397: /* subtable_opt */ - case 398: /* expression */ - case 400: /* where_clause_opt */ - case 401: /* signed */ - case 402: /* literal_func */ - case 405: /* expr_or_subquery */ - case 406: /* pseudo_column */ - case 407: /* column_reference */ - case 408: /* function_expression */ - case 409: /* case_when_expression */ - case 414: /* star_func_para */ - case 416: /* case_when_else_opt */ - case 417: /* common_expression */ - case 418: /* when_then_expr */ - case 419: /* predicate */ - case 422: /* in_predicate_value */ - case 423: /* boolean_value_expression */ - case 424: /* boolean_primary */ - case 425: /* from_clause_opt */ - case 426: /* table_reference_list */ - case 427: /* table_reference */ - case 428: /* table_primary */ - case 429: /* joined_table */ - case 431: /* subquery */ - case 432: /* parenthesized_joined_table */ - case 434: /* search_condition */ - case 435: /* query_specification */ - case 439: /* range_opt */ - case 440: /* every_opt */ - case 441: /* fill_opt */ - case 442: /* twindow_clause_opt */ - case 444: /* having_clause_opt */ - case 445: /* select_item */ - case 447: /* partition_item */ - case 450: /* query_expression */ - case 451: /* query_simple */ - case 453: /* slimit_clause_opt */ - case 454: /* limit_clause_opt */ - case 455: /* union_query_expression */ - case 456: /* query_simple_or_subquery */ - case 458: /* sort_specification */ + case 326: /* cmd */ + case 329: /* literal */ + case 342: /* db_options */ + case 344: /* alter_db_options */ + case 350: /* retention */ + case 351: /* full_table_name */ + case 354: /* table_options */ + case 358: /* alter_table_clause */ + case 359: /* alter_table_options */ + case 362: /* signed_literal */ + case 363: /* create_subtable_clause */ + case 366: /* drop_table_clause */ + case 369: /* column_def */ + case 373: /* duration_literal */ + case 374: /* rollup_func_name */ + case 376: /* col_name */ + case 377: /* db_name_cond_opt */ + case 378: /* like_pattern_opt */ + case 379: /* table_name_cond */ + case 380: /* from_db_opt */ + case 382: /* tag_item */ + case 384: /* index_options */ + case 386: /* sliding_opt */ + case 387: /* sma_stream_opt */ + case 388: /* func */ + case 390: /* query_or_subquery */ + case 393: /* explain_options */ + case 397: /* stream_options */ + case 398: /* subtable_opt */ + case 399: /* expression */ + case 401: /* where_clause_opt */ + case 402: /* signed */ + case 403: /* literal_func */ + case 406: /* expr_or_subquery */ + case 407: /* pseudo_column */ + case 408: /* column_reference */ + case 409: /* function_expression */ + case 410: /* case_when_expression */ + case 415: /* star_func_para */ + case 417: /* case_when_else_opt */ + case 418: /* common_expression */ + case 419: /* when_then_expr */ + case 420: /* predicate */ + case 423: /* in_predicate_value */ + case 424: /* boolean_value_expression */ + case 425: /* boolean_primary */ + case 426: /* from_clause_opt */ + case 427: /* table_reference_list */ + case 428: /* table_reference */ + case 429: /* table_primary */ + case 430: /* joined_table */ + case 432: /* subquery */ + case 433: /* parenthesized_joined_table */ + case 435: /* search_condition */ + case 436: /* query_specification */ + case 440: /* range_opt */ + case 441: /* every_opt */ + case 442: /* fill_opt */ + case 443: /* twindow_clause_opt */ + case 445: /* having_clause_opt */ + case 446: /* select_item */ + case 448: /* partition_item */ + case 451: /* query_expression */ + case 452: /* query_simple */ + case 454: /* slimit_clause_opt */ + case 455: /* limit_clause_opt */ + case 456: /* union_query_expression */ + case 457: /* query_simple_or_subquery */ + case 459: /* sort_specification */ { - nodesDestroyNode((yypminor->yy600)); + nodesDestroyNode((yypminor->yy476)); } break; - case 326: /* account_options */ - case 327: /* alter_account_options */ - case 329: /* alter_account_option */ - case 344: /* speed_opt */ - case 394: /* bufsize_opt */ + case 327: /* account_options */ + case 328: /* alter_account_options */ + case 330: /* alter_account_option */ + case 345: /* speed_opt */ + case 395: /* bufsize_opt */ { } break; - case 330: /* user_name */ - case 333: /* priv_level */ - case 336: /* db_name */ - case 337: /* topic_name */ - case 338: /* dnode_endpoint */ - case 359: /* column_name */ - case 367: /* table_name */ - case 374: /* function_name */ - case 382: /* column_alias */ - case 388: /* sma_func_name */ - case 390: /* cgroup_name */ - case 395: /* stream_name */ - case 404: /* table_alias */ - case 410: /* star_func */ - case 412: /* noarg_func */ - case 430: /* alias_opt */ + case 331: /* user_name */ + case 334: /* priv_level */ + case 337: /* db_name */ + case 338: /* topic_name */ + case 339: /* dnode_endpoint */ + case 360: /* column_name */ + case 368: /* table_name */ + case 375: /* function_name */ + case 383: /* column_alias */ + case 389: /* sma_func_name */ + case 391: /* cgroup_name */ + case 396: /* stream_name */ + case 405: /* table_alias */ + case 411: /* star_func */ + case 413: /* noarg_func */ + case 431: /* alias_opt */ { } break; - case 331: /* sysinfo_opt */ + case 332: /* sysinfo_opt */ { } break; - case 332: /* privileges */ - case 334: /* priv_type_list */ - case 335: /* priv_type */ + case 333: /* privileges */ + case 335: /* priv_type_list */ + case 336: /* priv_type */ { } break; - case 339: /* force_opt */ - case 340: /* not_exists_opt */ - case 342: /* exists_opt */ - case 391: /* analyze_opt */ - case 393: /* agg_func_opt */ - case 436: /* set_quantifier_opt */ + case 340: /* force_opt */ + case 341: /* not_exists_opt */ + case 343: /* exists_opt */ + case 392: /* analyze_opt */ + case 394: /* agg_func_opt */ + case 437: /* set_quantifier_opt */ { } break; - case 345: /* integer_list */ - case 346: /* variable_list */ - case 347: /* retention_list */ - case 351: /* column_def_list */ - case 352: /* tags_def_opt */ - case 354: /* multi_create_clause */ - case 355: /* tags_def */ - case 356: /* multi_drop_clause */ - case 363: /* specific_cols_opt */ - case 364: /* expression_list */ - case 366: /* col_name_list */ - case 369: /* duration_list */ - case 370: /* rollup_func_list */ - case 380: /* tag_list_opt */ - case 384: /* func_list */ - case 399: /* dnode_list */ - case 403: /* literal_list */ - case 411: /* star_func_para_list */ - case 413: /* other_para_list */ - case 415: /* when_then_list */ - case 437: /* select_list */ - case 438: /* partition_by_clause_opt */ - case 443: /* group_by_clause_opt */ - case 446: /* partition_list */ - case 449: /* group_by_list */ - case 452: /* order_by_clause_opt */ - case 457: /* sort_specification_list */ + case 346: /* integer_list */ + case 347: /* variable_list */ + case 348: /* retention_list */ + case 352: /* column_def_list */ + case 353: /* tags_def_opt */ + case 355: /* multi_create_clause */ + case 356: /* tags_def */ + case 357: /* multi_drop_clause */ + case 364: /* specific_cols_opt */ + case 365: /* expression_list */ + case 367: /* col_name_list */ + case 370: /* duration_list */ + case 371: /* rollup_func_list */ + case 381: /* tag_list_opt */ + case 385: /* func_list */ + case 400: /* dnode_list */ + case 404: /* literal_list */ + case 412: /* star_func_para_list */ + case 414: /* other_para_list */ + case 416: /* when_then_list */ + case 438: /* select_list */ + case 439: /* partition_by_clause_opt */ + case 444: /* group_by_clause_opt */ + case 447: /* partition_list */ + case 450: /* group_by_list */ + case 453: /* order_by_clause_opt */ + case 458: /* sort_specification_list */ { - nodesDestroyList((yypminor->yy601)); + nodesDestroyList((yypminor->yy376)); } break; - case 348: /* alter_db_option */ - case 371: /* alter_table_option */ + case 349: /* alter_db_option */ + case 372: /* alter_table_option */ { } break; - case 360: /* type_name */ + case 361: /* type_name */ { } break; - case 420: /* compare_op */ - case 421: /* in_op */ + case 421: /* compare_op */ + case 422: /* in_op */ { } break; - case 433: /* join_type */ + case 434: /* join_type */ { } break; - case 448: /* fill_mode */ + case 449: /* fill_mode */ { } break; - case 459: /* ordering_specification_opt */ + case 460: /* ordering_specification_opt */ { } break; - case 460: /* null_ordering_opt */ + case 461: /* null_ordering_opt */ { } @@ -2908,15 +2912,18 @@ static YYACTIONTYPE yy_find_shift_action( do{ i = yy_shift_ofst[stateno]; assert( i>=0 ); - /* assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); */ + assert( i<=YY_ACTTAB_COUNT ); + assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); assert( iLookAhead!=YYNOCODE ); assert( iLookAhead < YYNTOKEN ); i += iLookAhead; - if( i>=YY_NLOOKAHEAD || yy_lookahead[i]!=iLookAhead ){ + assert( i<(int)YY_NLOOKAHEAD ); + if( yy_lookahead[i]!=iLookAhead ){ #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ - if( iLookAhead %s\n", @@ -2931,16 +2938,8 @@ static YYACTIONTYPE yy_find_shift_action( #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; - if( -#if YY_SHIFT_MIN+YYWILDCARD<0 - j>=0 && -#endif -#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT - j0 - ){ + assert( j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) ); + if( yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n", @@ -2954,6 +2953,7 @@ static YYACTIONTYPE yy_find_shift_action( #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ + assert( i>=0 && iyytos; #ifndef NDEBUG if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - yysize = yyRuleInfo[yyruleno].nrhs; + yysize = yyRuleInfoNRhs[yyruleno]; if( yysize ){ - fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", + fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", yyTracePrompt, - yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); + yyruleno, yyRuleName[yyruleno], + yyrulenoyytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; @@ -3713,11 +4267,11 @@ static YYACTIONTYPE yy_reduce( YYMINORTYPE yylhsminor; case 0: /* cmd ::= CREATE ACCOUNT NK_ID PASS NK_STRING account_options */ { pCxt->errCode = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_EXPRIE_STATEMENT); } - yy_destructor(yypParser,326,&yymsp[0].minor); + yy_destructor(yypParser,327,&yymsp[0].minor); break; case 1: /* cmd ::= ALTER ACCOUNT NK_ID alter_account_options */ { pCxt->errCode = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_EXPRIE_STATEMENT); } - yy_destructor(yypParser,327,&yymsp[0].minor); + yy_destructor(yypParser,328,&yymsp[0].minor); break; case 2: /* account_options ::= */ { } @@ -3731,20 +4285,20 @@ static YYACTIONTYPE yy_reduce( case 9: /* account_options ::= account_options USERS literal */ yytestcase(yyruleno==9); case 10: /* account_options ::= account_options CONNS literal */ yytestcase(yyruleno==10); case 11: /* account_options ::= account_options STATE literal */ yytestcase(yyruleno==11); -{ yy_destructor(yypParser,326,&yymsp[-2].minor); +{ yy_destructor(yypParser,327,&yymsp[-2].minor); { } - yy_destructor(yypParser,328,&yymsp[0].minor); + yy_destructor(yypParser,329,&yymsp[0].minor); } break; case 12: /* alter_account_options ::= alter_account_option */ -{ yy_destructor(yypParser,329,&yymsp[0].minor); +{ yy_destructor(yypParser,330,&yymsp[0].minor); { } } break; case 13: /* alter_account_options ::= alter_account_options alter_account_option */ -{ yy_destructor(yypParser,327,&yymsp[-1].minor); +{ yy_destructor(yypParser,328,&yymsp[-1].minor); { } - yy_destructor(yypParser,329,&yymsp[0].minor); + yy_destructor(yypParser,330,&yymsp[0].minor); } break; case 14: /* alter_account_option ::= PASS literal */ @@ -3758,81 +4312,81 @@ static YYACTIONTYPE yy_reduce( case 22: /* alter_account_option ::= CONNS literal */ yytestcase(yyruleno==22); case 23: /* alter_account_option ::= STATE literal */ yytestcase(yyruleno==23); { } - yy_destructor(yypParser,328,&yymsp[0].minor); + yy_destructor(yypParser,329,&yymsp[0].minor); break; case 24: /* cmd ::= CREATE USER user_name PASS NK_STRING sysinfo_opt */ -{ pCxt->pRootNode = createCreateUserStmt(pCxt, &yymsp[-3].minor.yy77, &yymsp[-1].minor.yy0, yymsp[0].minor.yy287); } +{ pCxt->pRootNode = createCreateUserStmt(pCxt, &yymsp[-3].minor.yy701, &yymsp[-1].minor.yy0, yymsp[0].minor.yy47); } break; case 25: /* cmd ::= ALTER USER user_name PASS NK_STRING */ -{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy77, TSDB_ALTER_USER_PASSWD, &yymsp[0].minor.yy0); } +{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy701, TSDB_ALTER_USER_PASSWD, &yymsp[0].minor.yy0); } break; case 26: /* cmd ::= ALTER USER user_name ENABLE NK_INTEGER */ -{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy77, TSDB_ALTER_USER_ENABLE, &yymsp[0].minor.yy0); } +{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy701, TSDB_ALTER_USER_ENABLE, &yymsp[0].minor.yy0); } break; case 27: /* cmd ::= ALTER USER user_name SYSINFO NK_INTEGER */ -{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy77, TSDB_ALTER_USER_SYSINFO, &yymsp[0].minor.yy0); } +{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy701, TSDB_ALTER_USER_SYSINFO, &yymsp[0].minor.yy0); } break; case 28: /* cmd ::= DROP USER user_name */ -{ pCxt->pRootNode = createDropUserStmt(pCxt, &yymsp[0].minor.yy77); } +{ pCxt->pRootNode = createDropUserStmt(pCxt, &yymsp[0].minor.yy701); } break; case 29: /* sysinfo_opt ::= */ -{ yymsp[1].minor.yy287 = 1; } +{ yymsp[1].minor.yy47 = 1; } break; case 30: /* sysinfo_opt ::= SYSINFO NK_INTEGER */ -{ yymsp[-1].minor.yy287 = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); } +{ yymsp[-1].minor.yy47 = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); } break; case 31: /* cmd ::= GRANT privileges ON priv_level TO user_name */ -{ pCxt->pRootNode = createGrantStmt(pCxt, yymsp[-4].minor.yy717, &yymsp[-2].minor.yy77, &yymsp[0].minor.yy77); } +{ pCxt->pRootNode = createGrantStmt(pCxt, yymsp[-4].minor.yy921, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701); } break; case 32: /* cmd ::= REVOKE privileges ON priv_level FROM user_name */ -{ pCxt->pRootNode = createRevokeStmt(pCxt, yymsp[-4].minor.yy717, &yymsp[-2].minor.yy77, &yymsp[0].minor.yy77); } +{ pCxt->pRootNode = createRevokeStmt(pCxt, yymsp[-4].minor.yy921, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701); } break; case 33: /* privileges ::= ALL */ -{ yymsp[0].minor.yy717 = PRIVILEGE_TYPE_ALL; } +{ yymsp[0].minor.yy921 = PRIVILEGE_TYPE_ALL; } break; case 34: /* privileges ::= priv_type_list */ case 36: /* priv_type_list ::= priv_type */ yytestcase(yyruleno==36); -{ yylhsminor.yy717 = yymsp[0].minor.yy717; } - yymsp[0].minor.yy717 = yylhsminor.yy717; +{ yylhsminor.yy921 = yymsp[0].minor.yy921; } + yymsp[0].minor.yy921 = yylhsminor.yy921; break; case 35: /* privileges ::= SUBSCRIBE */ -{ yymsp[0].minor.yy717 = PRIVILEGE_TYPE_SUBSCRIBE; } +{ yymsp[0].minor.yy921 = PRIVILEGE_TYPE_SUBSCRIBE; } break; case 37: /* priv_type_list ::= priv_type_list NK_COMMA priv_type */ -{ yylhsminor.yy717 = yymsp[-2].minor.yy717 | yymsp[0].minor.yy717; } - yymsp[-2].minor.yy717 = yylhsminor.yy717; +{ yylhsminor.yy921 = yymsp[-2].minor.yy921 | yymsp[0].minor.yy921; } + yymsp[-2].minor.yy921 = yylhsminor.yy921; break; case 38: /* priv_type ::= READ */ -{ yymsp[0].minor.yy717 = PRIVILEGE_TYPE_READ; } +{ yymsp[0].minor.yy921 = PRIVILEGE_TYPE_READ; } break; case 39: /* priv_type ::= WRITE */ -{ yymsp[0].minor.yy717 = PRIVILEGE_TYPE_WRITE; } +{ yymsp[0].minor.yy921 = PRIVILEGE_TYPE_WRITE; } break; case 40: /* priv_level ::= NK_STAR NK_DOT NK_STAR */ -{ yylhsminor.yy77 = yymsp[-2].minor.yy0; } - yymsp[-2].minor.yy77 = yylhsminor.yy77; +{ yylhsminor.yy701 = yymsp[-2].minor.yy0; } + yymsp[-2].minor.yy701 = yylhsminor.yy701; break; case 41: /* priv_level ::= db_name NK_DOT NK_STAR */ -{ yylhsminor.yy77 = yymsp[-2].minor.yy77; } - yymsp[-2].minor.yy77 = yylhsminor.yy77; +{ yylhsminor.yy701 = yymsp[-2].minor.yy701; } + yymsp[-2].minor.yy701 = yylhsminor.yy701; break; case 42: /* priv_level ::= topic_name */ - case 268: /* sma_func_name ::= function_name */ yytestcase(yyruleno==268); - case 462: /* alias_opt ::= table_alias */ yytestcase(yyruleno==462); -{ yylhsminor.yy77 = yymsp[0].minor.yy77; } - yymsp[0].minor.yy77 = yylhsminor.yy77; + case 270: /* sma_func_name ::= function_name */ yytestcase(yyruleno==270); + case 464: /* alias_opt ::= table_alias */ yytestcase(yyruleno==464); +{ yylhsminor.yy701 = yymsp[0].minor.yy701; } + yymsp[0].minor.yy701 = yylhsminor.yy701; break; case 43: /* cmd ::= CREATE DNODE dnode_endpoint */ -{ pCxt->pRootNode = createCreateDnodeStmt(pCxt, &yymsp[0].minor.yy77, NULL); } +{ pCxt->pRootNode = createCreateDnodeStmt(pCxt, &yymsp[0].minor.yy701, NULL); } break; case 44: /* cmd ::= CREATE DNODE dnode_endpoint PORT NK_INTEGER */ -{ pCxt->pRootNode = createCreateDnodeStmt(pCxt, &yymsp[-2].minor.yy77, &yymsp[0].minor.yy0); } +{ pCxt->pRootNode = createCreateDnodeStmt(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy0); } break; case 45: /* cmd ::= DROP DNODE NK_INTEGER force_opt */ -{ pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy841); } +{ pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy845); } break; case 46: /* cmd ::= DROP DNODE dnode_endpoint force_opt */ -{ pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy77, yymsp[0].minor.yy841); } +{ pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy701, yymsp[0].minor.yy845); } break; case 47: /* cmd ::= ALTER DNODE NK_INTEGER NK_STRING */ { pCxt->pRootNode = createAlterDnodeStmt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0, NULL); } @@ -3849,49 +4403,49 @@ static YYACTIONTYPE yy_reduce( case 51: /* dnode_endpoint ::= NK_STRING */ case 52: /* dnode_endpoint ::= NK_ID */ yytestcase(yyruleno==52); case 53: /* dnode_endpoint ::= NK_IPTOKEN */ yytestcase(yyruleno==53); - case 269: /* sma_func_name ::= COUNT */ yytestcase(yyruleno==269); - case 270: /* sma_func_name ::= FIRST */ yytestcase(yyruleno==270); - case 271: /* sma_func_name ::= LAST */ yytestcase(yyruleno==271); - case 272: /* sma_func_name ::= LAST_ROW */ yytestcase(yyruleno==272); - case 348: /* db_name ::= NK_ID */ yytestcase(yyruleno==348); - case 349: /* table_name ::= NK_ID */ yytestcase(yyruleno==349); - case 350: /* column_name ::= NK_ID */ yytestcase(yyruleno==350); - case 351: /* function_name ::= NK_ID */ yytestcase(yyruleno==351); - case 352: /* table_alias ::= NK_ID */ yytestcase(yyruleno==352); - case 353: /* column_alias ::= NK_ID */ yytestcase(yyruleno==353); - case 354: /* user_name ::= NK_ID */ yytestcase(yyruleno==354); - case 355: /* topic_name ::= NK_ID */ yytestcase(yyruleno==355); - case 356: /* stream_name ::= NK_ID */ yytestcase(yyruleno==356); - case 357: /* cgroup_name ::= NK_ID */ yytestcase(yyruleno==357); - case 397: /* noarg_func ::= NOW */ yytestcase(yyruleno==397); - case 398: /* noarg_func ::= TODAY */ yytestcase(yyruleno==398); - case 399: /* noarg_func ::= TIMEZONE */ yytestcase(yyruleno==399); - case 400: /* noarg_func ::= DATABASE */ yytestcase(yyruleno==400); - case 401: /* noarg_func ::= CLIENT_VERSION */ yytestcase(yyruleno==401); - case 402: /* noarg_func ::= SERVER_VERSION */ yytestcase(yyruleno==402); - case 403: /* noarg_func ::= SERVER_STATUS */ yytestcase(yyruleno==403); - case 404: /* noarg_func ::= CURRENT_USER */ yytestcase(yyruleno==404); - case 405: /* noarg_func ::= USER */ yytestcase(yyruleno==405); - case 406: /* star_func ::= COUNT */ yytestcase(yyruleno==406); - case 407: /* star_func ::= FIRST */ yytestcase(yyruleno==407); - case 408: /* star_func ::= LAST */ yytestcase(yyruleno==408); - case 409: /* star_func ::= LAST_ROW */ yytestcase(yyruleno==409); -{ yylhsminor.yy77 = yymsp[0].minor.yy0; } - yymsp[0].minor.yy77 = yylhsminor.yy77; + case 271: /* sma_func_name ::= COUNT */ yytestcase(yyruleno==271); + case 272: /* sma_func_name ::= FIRST */ yytestcase(yyruleno==272); + case 273: /* sma_func_name ::= LAST */ yytestcase(yyruleno==273); + case 274: /* sma_func_name ::= LAST_ROW */ yytestcase(yyruleno==274); + case 350: /* db_name ::= NK_ID */ yytestcase(yyruleno==350); + case 351: /* table_name ::= NK_ID */ yytestcase(yyruleno==351); + case 352: /* column_name ::= NK_ID */ yytestcase(yyruleno==352); + case 353: /* function_name ::= NK_ID */ yytestcase(yyruleno==353); + case 354: /* table_alias ::= NK_ID */ yytestcase(yyruleno==354); + case 355: /* column_alias ::= NK_ID */ yytestcase(yyruleno==355); + case 356: /* user_name ::= NK_ID */ yytestcase(yyruleno==356); + case 357: /* topic_name ::= NK_ID */ yytestcase(yyruleno==357); + case 358: /* stream_name ::= NK_ID */ yytestcase(yyruleno==358); + case 359: /* cgroup_name ::= NK_ID */ yytestcase(yyruleno==359); + case 399: /* noarg_func ::= NOW */ yytestcase(yyruleno==399); + case 400: /* noarg_func ::= TODAY */ yytestcase(yyruleno==400); + case 401: /* noarg_func ::= TIMEZONE */ yytestcase(yyruleno==401); + case 402: /* noarg_func ::= DATABASE */ yytestcase(yyruleno==402); + case 403: /* noarg_func ::= CLIENT_VERSION */ yytestcase(yyruleno==403); + case 404: /* noarg_func ::= SERVER_VERSION */ yytestcase(yyruleno==404); + case 405: /* noarg_func ::= SERVER_STATUS */ yytestcase(yyruleno==405); + case 406: /* noarg_func ::= CURRENT_USER */ yytestcase(yyruleno==406); + case 407: /* noarg_func ::= USER */ yytestcase(yyruleno==407); + case 408: /* star_func ::= COUNT */ yytestcase(yyruleno==408); + case 409: /* star_func ::= FIRST */ yytestcase(yyruleno==409); + case 410: /* star_func ::= LAST */ yytestcase(yyruleno==410); + case 411: /* star_func ::= LAST_ROW */ yytestcase(yyruleno==411); +{ yylhsminor.yy701 = yymsp[0].minor.yy0; } + yymsp[0].minor.yy701 = yylhsminor.yy701; break; case 54: /* force_opt ::= */ case 73: /* not_exists_opt ::= */ yytestcase(yyruleno==73); case 75: /* exists_opt ::= */ yytestcase(yyruleno==75); - case 288: /* analyze_opt ::= */ yytestcase(yyruleno==288); - case 295: /* agg_func_opt ::= */ yytestcase(yyruleno==295); - case 470: /* set_quantifier_opt ::= */ yytestcase(yyruleno==470); -{ yymsp[1].minor.yy841 = false; } + case 290: /* analyze_opt ::= */ yytestcase(yyruleno==290); + case 297: /* agg_func_opt ::= */ yytestcase(yyruleno==297); + case 472: /* set_quantifier_opt ::= */ yytestcase(yyruleno==472); +{ yymsp[1].minor.yy845 = false; } break; case 55: /* force_opt ::= FORCE */ - case 289: /* analyze_opt ::= ANALYZE */ yytestcase(yyruleno==289); - case 296: /* agg_func_opt ::= AGGREGATE */ yytestcase(yyruleno==296); - case 471: /* set_quantifier_opt ::= DISTINCT */ yytestcase(yyruleno==471); -{ yymsp[0].minor.yy841 = true; } + case 291: /* analyze_opt ::= ANALYZE */ yytestcase(yyruleno==291); + case 298: /* agg_func_opt ::= AGGREGATE */ yytestcase(yyruleno==298); + case 473: /* set_quantifier_opt ::= DISTINCT */ yytestcase(yyruleno==473); +{ yymsp[0].minor.yy845 = true; } break; case 56: /* cmd ::= ALTER LOCAL NK_STRING */ { pCxt->pRootNode = createAlterLocalStmt(pCxt, &yymsp[0].minor.yy0, NULL); } @@ -3924,206 +4478,206 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createDropComponentNodeStmt(pCxt, QUERY_NODE_DROP_MNODE_STMT, &yymsp[0].minor.yy0); } break; case 66: /* cmd ::= CREATE DATABASE not_exists_opt db_name db_options */ -{ pCxt->pRootNode = createCreateDatabaseStmt(pCxt, yymsp[-2].minor.yy841, &yymsp[-1].minor.yy77, yymsp[0].minor.yy600); } +{ pCxt->pRootNode = createCreateDatabaseStmt(pCxt, yymsp[-2].minor.yy845, &yymsp[-1].minor.yy701, yymsp[0].minor.yy476); } break; case 67: /* cmd ::= DROP DATABASE exists_opt db_name */ -{ pCxt->pRootNode = createDropDatabaseStmt(pCxt, yymsp[-1].minor.yy841, &yymsp[0].minor.yy77); } +{ pCxt->pRootNode = createDropDatabaseStmt(pCxt, yymsp[-1].minor.yy845, &yymsp[0].minor.yy701); } break; case 68: /* cmd ::= USE db_name */ -{ pCxt->pRootNode = createUseDatabaseStmt(pCxt, &yymsp[0].minor.yy77); } +{ pCxt->pRootNode = createUseDatabaseStmt(pCxt, &yymsp[0].minor.yy701); } break; case 69: /* cmd ::= ALTER DATABASE db_name alter_db_options */ -{ pCxt->pRootNode = createAlterDatabaseStmt(pCxt, &yymsp[-1].minor.yy77, yymsp[0].minor.yy600); } +{ pCxt->pRootNode = createAlterDatabaseStmt(pCxt, &yymsp[-1].minor.yy701, yymsp[0].minor.yy476); } break; case 70: /* cmd ::= FLUSH DATABASE db_name */ -{ pCxt->pRootNode = createFlushDatabaseStmt(pCxt, &yymsp[0].minor.yy77); } +{ pCxt->pRootNode = createFlushDatabaseStmt(pCxt, &yymsp[0].minor.yy701); } break; case 71: /* cmd ::= TRIM DATABASE db_name speed_opt */ -{ pCxt->pRootNode = createTrimDatabaseStmt(pCxt, &yymsp[-1].minor.yy77, yymsp[0].minor.yy248); } +{ pCxt->pRootNode = createTrimDatabaseStmt(pCxt, &yymsp[-1].minor.yy701, yymsp[0].minor.yy508); } break; case 72: /* not_exists_opt ::= IF NOT EXISTS */ -{ yymsp[-2].minor.yy841 = true; } +{ yymsp[-2].minor.yy845 = true; } break; case 74: /* exists_opt ::= IF EXISTS */ -{ yymsp[-1].minor.yy841 = true; } +{ yymsp[-1].minor.yy845 = true; } break; case 76: /* db_options ::= */ -{ yymsp[1].minor.yy600 = createDefaultDatabaseOptions(pCxt); } +{ yymsp[1].minor.yy476 = createDefaultDatabaseOptions(pCxt); } break; case 77: /* db_options ::= db_options BUFFER NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_BUFFER, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_BUFFER, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 78: /* db_options ::= db_options CACHEMODEL NK_STRING */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_CACHEMODEL, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_CACHEMODEL, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 79: /* db_options ::= db_options CACHESIZE NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_CACHESIZE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_CACHESIZE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 80: /* db_options ::= db_options COMP NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_COMP, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_COMP, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 81: /* db_options ::= db_options DURATION NK_INTEGER */ case 82: /* db_options ::= db_options DURATION NK_VARIABLE */ yytestcase(yyruleno==82); -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_DAYS, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_DAYS, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 83: /* db_options ::= db_options MAXROWS NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_MAXROWS, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_MAXROWS, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 84: /* db_options ::= db_options MINROWS NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_MINROWS, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_MINROWS, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 85: /* db_options ::= db_options KEEP integer_list */ case 86: /* db_options ::= db_options KEEP variable_list */ yytestcase(yyruleno==86); -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_KEEP, yymsp[0].minor.yy601); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_KEEP, yymsp[0].minor.yy376); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 87: /* db_options ::= db_options PAGES NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_PAGES, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_PAGES, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 88: /* db_options ::= db_options PAGESIZE NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_PAGESIZE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_PAGESIZE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 89: /* db_options ::= db_options TSDB_PAGESIZE NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_TSDB_PAGESIZE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_TSDB_PAGESIZE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 90: /* db_options ::= db_options PRECISION NK_STRING */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_PRECISION, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_PRECISION, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 91: /* db_options ::= db_options REPLICA NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_REPLICA, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_REPLICA, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 92: /* db_options ::= db_options VGROUPS NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_VGROUPS, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_VGROUPS, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 93: /* db_options ::= db_options SINGLE_STABLE NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_SINGLE_STABLE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_SINGLE_STABLE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 94: /* db_options ::= db_options RETENTIONS retention_list */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_RETENTIONS, yymsp[0].minor.yy601); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_RETENTIONS, yymsp[0].minor.yy376); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 95: /* db_options ::= db_options SCHEMALESS NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_SCHEMALESS, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_SCHEMALESS, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 96: /* db_options ::= db_options WAL_LEVEL NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_WAL, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_WAL, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 97: /* db_options ::= db_options WAL_FSYNC_PERIOD NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_FSYNC, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_FSYNC, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 98: /* db_options ::= db_options WAL_RETENTION_PERIOD NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_WAL_RETENTION_PERIOD, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_WAL_RETENTION_PERIOD, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 99: /* db_options ::= db_options WAL_RETENTION_PERIOD NK_MINUS NK_INTEGER */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; - yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-3].minor.yy600, DB_OPTION_WAL_RETENTION_PERIOD, &t); + yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-3].minor.yy476, DB_OPTION_WAL_RETENTION_PERIOD, &t); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; case 100: /* db_options ::= db_options WAL_RETENTION_SIZE NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_WAL_RETENTION_SIZE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_WAL_RETENTION_SIZE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 101: /* db_options ::= db_options WAL_RETENTION_SIZE NK_MINUS NK_INTEGER */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; - yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-3].minor.yy600, DB_OPTION_WAL_RETENTION_SIZE, &t); + yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-3].minor.yy476, DB_OPTION_WAL_RETENTION_SIZE, &t); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; case 102: /* db_options ::= db_options WAL_ROLL_PERIOD NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_WAL_ROLL_PERIOD, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_WAL_ROLL_PERIOD, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 103: /* db_options ::= db_options WAL_SEGMENT_SIZE NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_WAL_SEGMENT_SIZE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_WAL_SEGMENT_SIZE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 104: /* db_options ::= db_options STT_TRIGGER NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_STT_TRIGGER, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_STT_TRIGGER, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 105: /* db_options ::= db_options TABLE_PREFIX NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_TABLE_PREFIX, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_TABLE_PREFIX, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 106: /* db_options ::= db_options TABLE_SUFFIX NK_INTEGER */ -{ yylhsminor.yy600 = setDatabaseOption(pCxt, yymsp[-2].minor.yy600, DB_OPTION_TABLE_SUFFIX, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_TABLE_SUFFIX, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 107: /* alter_db_options ::= alter_db_option */ -{ yylhsminor.yy600 = createAlterDatabaseOptions(pCxt); yylhsminor.yy600 = setAlterDatabaseOption(pCxt, yylhsminor.yy600, &yymsp[0].minor.yy661); } - yymsp[0].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterDatabaseOptions(pCxt); yylhsminor.yy476 = setAlterDatabaseOption(pCxt, yylhsminor.yy476, &yymsp[0].minor.yy893); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; case 108: /* alter_db_options ::= alter_db_options alter_db_option */ -{ yylhsminor.yy600 = setAlterDatabaseOption(pCxt, yymsp[-1].minor.yy600, &yymsp[0].minor.yy661); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setAlterDatabaseOption(pCxt, yymsp[-1].minor.yy476, &yymsp[0].minor.yy893); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; case 109: /* alter_db_option ::= BUFFER NK_INTEGER */ -{ yymsp[-1].minor.yy661.type = DB_OPTION_BUFFER; yymsp[-1].minor.yy661.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy893.type = DB_OPTION_BUFFER; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } break; case 110: /* alter_db_option ::= CACHEMODEL NK_STRING */ -{ yymsp[-1].minor.yy661.type = DB_OPTION_CACHEMODEL; yymsp[-1].minor.yy661.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy893.type = DB_OPTION_CACHEMODEL; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } break; case 111: /* alter_db_option ::= CACHESIZE NK_INTEGER */ -{ yymsp[-1].minor.yy661.type = DB_OPTION_CACHESIZE; yymsp[-1].minor.yy661.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy893.type = DB_OPTION_CACHESIZE; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } break; case 112: /* alter_db_option ::= WAL_FSYNC_PERIOD NK_INTEGER */ -{ yymsp[-1].minor.yy661.type = DB_OPTION_FSYNC; yymsp[-1].minor.yy661.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy893.type = DB_OPTION_FSYNC; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } break; case 113: /* alter_db_option ::= KEEP integer_list */ case 114: /* alter_db_option ::= KEEP variable_list */ yytestcase(yyruleno==114); -{ yymsp[-1].minor.yy661.type = DB_OPTION_KEEP; yymsp[-1].minor.yy661.pList = yymsp[0].minor.yy601; } +{ yymsp[-1].minor.yy893.type = DB_OPTION_KEEP; yymsp[-1].minor.yy893.pList = yymsp[0].minor.yy376; } break; case 115: /* alter_db_option ::= PAGES NK_INTEGER */ -{ yymsp[-1].minor.yy661.type = DB_OPTION_PAGES; yymsp[-1].minor.yy661.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy893.type = DB_OPTION_PAGES; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } break; case 116: /* alter_db_option ::= REPLICA NK_INTEGER */ -{ yymsp[-1].minor.yy661.type = DB_OPTION_REPLICA; yymsp[-1].minor.yy661.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy893.type = DB_OPTION_REPLICA; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } break; case 117: /* alter_db_option ::= WAL_LEVEL NK_INTEGER */ -{ yymsp[-1].minor.yy661.type = DB_OPTION_WAL; yymsp[-1].minor.yy661.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy893.type = DB_OPTION_WAL; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } break; case 118: /* alter_db_option ::= STT_TRIGGER NK_INTEGER */ -{ yymsp[-1].minor.yy661.type = DB_OPTION_STT_TRIGGER; yymsp[-1].minor.yy661.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy893.type = DB_OPTION_STT_TRIGGER; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } break; case 119: /* integer_list ::= NK_INTEGER */ -{ yylhsminor.yy601 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy601 = yylhsminor.yy601; +{ yylhsminor.yy376 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy376 = yylhsminor.yy376; break; case 120: /* integer_list ::= integer_list NK_COMMA NK_INTEGER */ - case 318: /* dnode_list ::= dnode_list DNODE NK_INTEGER */ yytestcase(yyruleno==318); -{ yylhsminor.yy601 = addNodeToList(pCxt, yymsp[-2].minor.yy601, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } - yymsp[-2].minor.yy601 = yylhsminor.yy601; + case 320: /* dnode_list ::= dnode_list DNODE NK_INTEGER */ yytestcase(yyruleno==320); +{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-2].minor.yy376, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } + yymsp[-2].minor.yy376 = yylhsminor.yy376; break; case 121: /* variable_list ::= NK_VARIABLE */ -{ yylhsminor.yy601 = createNodeList(pCxt, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy601 = yylhsminor.yy601; +{ yylhsminor.yy376 = createNodeList(pCxt, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy376 = yylhsminor.yy376; break; case 122: /* variable_list ::= variable_list NK_COMMA NK_VARIABLE */ -{ yylhsminor.yy601 = addNodeToList(pCxt, yymsp[-2].minor.yy601, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } - yymsp[-2].minor.yy601 = yylhsminor.yy601; +{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-2].minor.yy376, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } + yymsp[-2].minor.yy376 = yylhsminor.yy376; break; case 123: /* retention_list ::= retention */ case 145: /* multi_create_clause ::= create_subtable_clause */ yytestcase(yyruleno==145); @@ -4131,288 +4685,288 @@ static YYACTIONTYPE yy_reduce( case 155: /* column_def_list ::= column_def */ yytestcase(yyruleno==155); case 199: /* rollup_func_list ::= rollup_func_name */ yytestcase(yyruleno==199); case 204: /* col_name_list ::= col_name */ yytestcase(yyruleno==204); - case 253: /* tag_list_opt ::= tag_item */ yytestcase(yyruleno==253); - case 265: /* func_list ::= func */ yytestcase(yyruleno==265); - case 346: /* literal_list ::= signed_literal */ yytestcase(yyruleno==346); - case 412: /* other_para_list ::= star_func_para */ yytestcase(yyruleno==412); - case 418: /* when_then_list ::= when_then_expr */ yytestcase(yyruleno==418); - case 473: /* select_list ::= select_item */ yytestcase(yyruleno==473); - case 484: /* partition_list ::= partition_item */ yytestcase(yyruleno==484); - case 537: /* sort_specification_list ::= sort_specification */ yytestcase(yyruleno==537); -{ yylhsminor.yy601 = createNodeList(pCxt, yymsp[0].minor.yy600); } - yymsp[0].minor.yy601 = yylhsminor.yy601; + case 255: /* tag_list_opt ::= tag_item */ yytestcase(yyruleno==255); + case 267: /* func_list ::= func */ yytestcase(yyruleno==267); + case 348: /* literal_list ::= signed_literal */ yytestcase(yyruleno==348); + case 414: /* other_para_list ::= star_func_para */ yytestcase(yyruleno==414); + case 420: /* when_then_list ::= when_then_expr */ yytestcase(yyruleno==420); + case 475: /* select_list ::= select_item */ yytestcase(yyruleno==475); + case 486: /* partition_list ::= partition_item */ yytestcase(yyruleno==486); + case 539: /* sort_specification_list ::= sort_specification */ yytestcase(yyruleno==539); +{ yylhsminor.yy376 = createNodeList(pCxt, yymsp[0].minor.yy476); } + yymsp[0].minor.yy376 = yylhsminor.yy376; break; case 124: /* retention_list ::= retention_list NK_COMMA retention */ case 156: /* column_def_list ::= column_def_list NK_COMMA column_def */ yytestcase(yyruleno==156); case 200: /* rollup_func_list ::= rollup_func_list NK_COMMA rollup_func_name */ yytestcase(yyruleno==200); case 205: /* col_name_list ::= col_name_list NK_COMMA col_name */ yytestcase(yyruleno==205); - case 254: /* tag_list_opt ::= tag_list_opt NK_COMMA tag_item */ yytestcase(yyruleno==254); - case 266: /* func_list ::= func_list NK_COMMA func */ yytestcase(yyruleno==266); - case 347: /* literal_list ::= literal_list NK_COMMA signed_literal */ yytestcase(yyruleno==347); - case 413: /* other_para_list ::= other_para_list NK_COMMA star_func_para */ yytestcase(yyruleno==413); - case 474: /* select_list ::= select_list NK_COMMA select_item */ yytestcase(yyruleno==474); - case 485: /* partition_list ::= partition_list NK_COMMA partition_item */ yytestcase(yyruleno==485); - case 538: /* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ yytestcase(yyruleno==538); -{ yylhsminor.yy601 = addNodeToList(pCxt, yymsp[-2].minor.yy601, yymsp[0].minor.yy600); } - yymsp[-2].minor.yy601 = yylhsminor.yy601; + case 256: /* tag_list_opt ::= tag_list_opt NK_COMMA tag_item */ yytestcase(yyruleno==256); + case 268: /* func_list ::= func_list NK_COMMA func */ yytestcase(yyruleno==268); + case 349: /* literal_list ::= literal_list NK_COMMA signed_literal */ yytestcase(yyruleno==349); + case 415: /* other_para_list ::= other_para_list NK_COMMA star_func_para */ yytestcase(yyruleno==415); + case 476: /* select_list ::= select_list NK_COMMA select_item */ yytestcase(yyruleno==476); + case 487: /* partition_list ::= partition_list NK_COMMA partition_item */ yytestcase(yyruleno==487); + case 540: /* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ yytestcase(yyruleno==540); +{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-2].minor.yy376, yymsp[0].minor.yy476); } + yymsp[-2].minor.yy376 = yylhsminor.yy376; break; case 125: /* retention ::= NK_VARIABLE NK_COLON NK_VARIABLE */ -{ yylhsminor.yy600 = createNodeListNodeEx(pCxt, createDurationValueNode(pCxt, &yymsp[-2].minor.yy0), createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createNodeListNodeEx(pCxt, createDurationValueNode(pCxt, &yymsp[-2].minor.yy0), createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 126: /* speed_opt ::= */ - case 297: /* bufsize_opt ::= */ yytestcase(yyruleno==297); -{ yymsp[1].minor.yy248 = 0; } + case 299: /* bufsize_opt ::= */ yytestcase(yyruleno==299); +{ yymsp[1].minor.yy508 = 0; } break; case 127: /* speed_opt ::= MAX_SPEED NK_INTEGER */ - case 298: /* bufsize_opt ::= BUFSIZE NK_INTEGER */ yytestcase(yyruleno==298); -{ yymsp[-1].minor.yy248 = taosStr2Int32(yymsp[0].minor.yy0.z, NULL, 10); } + case 300: /* bufsize_opt ::= BUFSIZE NK_INTEGER */ yytestcase(yyruleno==300); +{ yymsp[-1].minor.yy508 = taosStr2Int32(yymsp[0].minor.yy0.z, NULL, 10); } break; case 128: /* cmd ::= CREATE TABLE not_exists_opt full_table_name NK_LP column_def_list NK_RP tags_def_opt table_options */ case 130: /* cmd ::= CREATE STABLE not_exists_opt full_table_name NK_LP column_def_list NK_RP tags_def table_options */ yytestcase(yyruleno==130); -{ pCxt->pRootNode = createCreateTableStmt(pCxt, yymsp[-6].minor.yy841, yymsp[-5].minor.yy600, yymsp[-3].minor.yy601, yymsp[-1].minor.yy601, yymsp[0].minor.yy600); } +{ pCxt->pRootNode = createCreateTableStmt(pCxt, yymsp[-6].minor.yy845, yymsp[-5].minor.yy476, yymsp[-3].minor.yy376, yymsp[-1].minor.yy376, yymsp[0].minor.yy476); } break; case 129: /* cmd ::= CREATE TABLE multi_create_clause */ -{ pCxt->pRootNode = createCreateMultiTableStmt(pCxt, yymsp[0].minor.yy601); } +{ pCxt->pRootNode = createCreateMultiTableStmt(pCxt, yymsp[0].minor.yy376); } break; case 131: /* cmd ::= DROP TABLE multi_drop_clause */ -{ pCxt->pRootNode = createDropTableStmt(pCxt, yymsp[0].minor.yy601); } +{ pCxt->pRootNode = createDropTableStmt(pCxt, yymsp[0].minor.yy376); } break; case 132: /* cmd ::= DROP STABLE exists_opt full_table_name */ -{ pCxt->pRootNode = createDropSuperTableStmt(pCxt, yymsp[-1].minor.yy841, yymsp[0].minor.yy600); } +{ pCxt->pRootNode = createDropSuperTableStmt(pCxt, yymsp[-1].minor.yy845, yymsp[0].minor.yy476); } break; case 133: /* cmd ::= ALTER TABLE alter_table_clause */ - case 320: /* cmd ::= query_or_subquery */ yytestcase(yyruleno==320); -{ pCxt->pRootNode = yymsp[0].minor.yy600; } + case 322: /* cmd ::= query_or_subquery */ yytestcase(yyruleno==322); +{ pCxt->pRootNode = yymsp[0].minor.yy476; } break; case 134: /* cmd ::= ALTER STABLE alter_table_clause */ -{ pCxt->pRootNode = setAlterSuperTableType(yymsp[0].minor.yy600); } +{ pCxt->pRootNode = setAlterSuperTableType(yymsp[0].minor.yy476); } break; case 135: /* alter_table_clause ::= full_table_name alter_table_options */ -{ yylhsminor.yy600 = createAlterTableModifyOptions(pCxt, yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableModifyOptions(pCxt, yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; case 136: /* alter_table_clause ::= full_table_name ADD COLUMN column_name type_name */ -{ yylhsminor.yy600 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy600, TSDB_ALTER_TABLE_ADD_COLUMN, &yymsp[-1].minor.yy77, yymsp[0].minor.yy888); } - yymsp[-4].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_ADD_COLUMN, &yymsp[-1].minor.yy701, yymsp[0].minor.yy532); } + yymsp[-4].minor.yy476 = yylhsminor.yy476; break; case 137: /* alter_table_clause ::= full_table_name DROP COLUMN column_name */ -{ yylhsminor.yy600 = createAlterTableDropCol(pCxt, yymsp[-3].minor.yy600, TSDB_ALTER_TABLE_DROP_COLUMN, &yymsp[0].minor.yy77); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableDropCol(pCxt, yymsp[-3].minor.yy476, TSDB_ALTER_TABLE_DROP_COLUMN, &yymsp[0].minor.yy701); } + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; case 138: /* alter_table_clause ::= full_table_name MODIFY COLUMN column_name type_name */ -{ yylhsminor.yy600 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy600, TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, &yymsp[-1].minor.yy77, yymsp[0].minor.yy888); } - yymsp[-4].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, &yymsp[-1].minor.yy701, yymsp[0].minor.yy532); } + yymsp[-4].minor.yy476 = yylhsminor.yy476; break; case 139: /* alter_table_clause ::= full_table_name RENAME COLUMN column_name column_name */ -{ yylhsminor.yy600 = createAlterTableRenameCol(pCxt, yymsp[-4].minor.yy600, TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, &yymsp[-1].minor.yy77, &yymsp[0].minor.yy77); } - yymsp[-4].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableRenameCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, &yymsp[-1].minor.yy701, &yymsp[0].minor.yy701); } + yymsp[-4].minor.yy476 = yylhsminor.yy476; break; case 140: /* alter_table_clause ::= full_table_name ADD TAG column_name type_name */ -{ yylhsminor.yy600 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy600, TSDB_ALTER_TABLE_ADD_TAG, &yymsp[-1].minor.yy77, yymsp[0].minor.yy888); } - yymsp[-4].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_ADD_TAG, &yymsp[-1].minor.yy701, yymsp[0].minor.yy532); } + yymsp[-4].minor.yy476 = yylhsminor.yy476; break; case 141: /* alter_table_clause ::= full_table_name DROP TAG column_name */ -{ yylhsminor.yy600 = createAlterTableDropCol(pCxt, yymsp[-3].minor.yy600, TSDB_ALTER_TABLE_DROP_TAG, &yymsp[0].minor.yy77); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableDropCol(pCxt, yymsp[-3].minor.yy476, TSDB_ALTER_TABLE_DROP_TAG, &yymsp[0].minor.yy701); } + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; case 142: /* alter_table_clause ::= full_table_name MODIFY TAG column_name type_name */ -{ yylhsminor.yy600 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy600, TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, &yymsp[-1].minor.yy77, yymsp[0].minor.yy888); } - yymsp[-4].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, &yymsp[-1].minor.yy701, yymsp[0].minor.yy532); } + yymsp[-4].minor.yy476 = yylhsminor.yy476; break; case 143: /* alter_table_clause ::= full_table_name RENAME TAG column_name column_name */ -{ yylhsminor.yy600 = createAlterTableRenameCol(pCxt, yymsp[-4].minor.yy600, TSDB_ALTER_TABLE_UPDATE_TAG_NAME, &yymsp[-1].minor.yy77, &yymsp[0].minor.yy77); } - yymsp[-4].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableRenameCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_UPDATE_TAG_NAME, &yymsp[-1].minor.yy701, &yymsp[0].minor.yy701); } + yymsp[-4].minor.yy476 = yylhsminor.yy476; break; case 144: /* alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal */ -{ yylhsminor.yy600 = createAlterTableSetTag(pCxt, yymsp[-5].minor.yy600, &yymsp[-2].minor.yy77, yymsp[0].minor.yy600); } - yymsp[-5].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableSetTag(pCxt, yymsp[-5].minor.yy476, &yymsp[-2].minor.yy701, yymsp[0].minor.yy476); } + yymsp[-5].minor.yy476 = yylhsminor.yy476; break; case 146: /* multi_create_clause ::= multi_create_clause create_subtable_clause */ case 149: /* multi_drop_clause ::= multi_drop_clause drop_table_clause */ yytestcase(yyruleno==149); - case 419: /* when_then_list ::= when_then_list when_then_expr */ yytestcase(yyruleno==419); -{ yylhsminor.yy601 = addNodeToList(pCxt, yymsp[-1].minor.yy601, yymsp[0].minor.yy600); } - yymsp[-1].minor.yy601 = yylhsminor.yy601; + case 421: /* when_then_list ::= when_then_list when_then_expr */ yytestcase(yyruleno==421); +{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-1].minor.yy376, yymsp[0].minor.yy476); } + yymsp[-1].minor.yy376 = yylhsminor.yy376; break; case 147: /* create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_cols_opt TAGS NK_LP expression_list NK_RP table_options */ -{ yylhsminor.yy600 = createCreateSubTableClause(pCxt, yymsp[-9].minor.yy841, yymsp[-8].minor.yy600, yymsp[-6].minor.yy600, yymsp[-5].minor.yy601, yymsp[-2].minor.yy601, yymsp[0].minor.yy600); } - yymsp[-9].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createCreateSubTableClause(pCxt, yymsp[-9].minor.yy845, yymsp[-8].minor.yy476, yymsp[-6].minor.yy476, yymsp[-5].minor.yy376, yymsp[-2].minor.yy376, yymsp[0].minor.yy476); } + yymsp[-9].minor.yy476 = yylhsminor.yy476; break; case 150: /* drop_table_clause ::= exists_opt full_table_name */ -{ yylhsminor.yy600 = createDropTableClause(pCxt, yymsp[-1].minor.yy841, yymsp[0].minor.yy600); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createDropTableClause(pCxt, yymsp[-1].minor.yy845, yymsp[0].minor.yy476); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; case 151: /* specific_cols_opt ::= */ case 182: /* tags_def_opt ::= */ yytestcase(yyruleno==182); - case 252: /* tag_list_opt ::= */ yytestcase(yyruleno==252); - case 482: /* partition_by_clause_opt ::= */ yytestcase(yyruleno==482); - case 505: /* group_by_clause_opt ::= */ yytestcase(yyruleno==505); - case 524: /* order_by_clause_opt ::= */ yytestcase(yyruleno==524); -{ yymsp[1].minor.yy601 = NULL; } + case 254: /* tag_list_opt ::= */ yytestcase(yyruleno==254); + case 484: /* partition_by_clause_opt ::= */ yytestcase(yyruleno==484); + case 507: /* group_by_clause_opt ::= */ yytestcase(yyruleno==507); + case 526: /* order_by_clause_opt ::= */ yytestcase(yyruleno==526); +{ yymsp[1].minor.yy376 = NULL; } break; case 152: /* specific_cols_opt ::= NK_LP col_name_list NK_RP */ -{ yymsp[-2].minor.yy601 = yymsp[-1].minor.yy601; } +{ yymsp[-2].minor.yy376 = yymsp[-1].minor.yy376; } break; case 153: /* full_table_name ::= table_name */ -{ yylhsminor.yy600 = createRealTableNode(pCxt, NULL, &yymsp[0].minor.yy77, NULL); } - yymsp[0].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createRealTableNode(pCxt, NULL, &yymsp[0].minor.yy701, NULL); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; case 154: /* full_table_name ::= db_name NK_DOT table_name */ -{ yylhsminor.yy600 = createRealTableNode(pCxt, &yymsp[-2].minor.yy77, &yymsp[0].minor.yy77, NULL); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createRealTableNode(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701, NULL); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 157: /* column_def ::= column_name type_name */ -{ yylhsminor.yy600 = createColumnDefNode(pCxt, &yymsp[-1].minor.yy77, yymsp[0].minor.yy888, NULL); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createColumnDefNode(pCxt, &yymsp[-1].minor.yy701, yymsp[0].minor.yy532, NULL); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; case 158: /* column_def ::= column_name type_name COMMENT NK_STRING */ -{ yylhsminor.yy600 = createColumnDefNode(pCxt, &yymsp[-3].minor.yy77, yymsp[-2].minor.yy888, &yymsp[0].minor.yy0); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createColumnDefNode(pCxt, &yymsp[-3].minor.yy701, yymsp[-2].minor.yy532, &yymsp[0].minor.yy0); } + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; case 159: /* type_name ::= BOOL */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_BOOL); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_BOOL); } break; case 160: /* type_name ::= TINYINT */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_TINYINT); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_TINYINT); } break; case 161: /* type_name ::= SMALLINT */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_SMALLINT); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_SMALLINT); } break; case 162: /* type_name ::= INT */ case 163: /* type_name ::= INTEGER */ yytestcase(yyruleno==163); -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_INT); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_INT); } break; case 164: /* type_name ::= BIGINT */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_BIGINT); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_BIGINT); } break; case 165: /* type_name ::= FLOAT */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_FLOAT); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_FLOAT); } break; case 166: /* type_name ::= DOUBLE */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_DOUBLE); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_DOUBLE); } break; case 167: /* type_name ::= BINARY NK_LP NK_INTEGER NK_RP */ -{ yymsp[-3].minor.yy888 = createVarLenDataType(TSDB_DATA_TYPE_BINARY, &yymsp[-1].minor.yy0); } +{ yymsp[-3].minor.yy532 = createVarLenDataType(TSDB_DATA_TYPE_BINARY, &yymsp[-1].minor.yy0); } break; case 168: /* type_name ::= TIMESTAMP */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_TIMESTAMP); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_TIMESTAMP); } break; case 169: /* type_name ::= NCHAR NK_LP NK_INTEGER NK_RP */ -{ yymsp[-3].minor.yy888 = createVarLenDataType(TSDB_DATA_TYPE_NCHAR, &yymsp[-1].minor.yy0); } +{ yymsp[-3].minor.yy532 = createVarLenDataType(TSDB_DATA_TYPE_NCHAR, &yymsp[-1].minor.yy0); } break; case 170: /* type_name ::= TINYINT UNSIGNED */ -{ yymsp[-1].minor.yy888 = createDataType(TSDB_DATA_TYPE_UTINYINT); } +{ yymsp[-1].minor.yy532 = createDataType(TSDB_DATA_TYPE_UTINYINT); } break; case 171: /* type_name ::= SMALLINT UNSIGNED */ -{ yymsp[-1].minor.yy888 = createDataType(TSDB_DATA_TYPE_USMALLINT); } +{ yymsp[-1].minor.yy532 = createDataType(TSDB_DATA_TYPE_USMALLINT); } break; case 172: /* type_name ::= INT UNSIGNED */ -{ yymsp[-1].minor.yy888 = createDataType(TSDB_DATA_TYPE_UINT); } +{ yymsp[-1].minor.yy532 = createDataType(TSDB_DATA_TYPE_UINT); } break; case 173: /* type_name ::= BIGINT UNSIGNED */ -{ yymsp[-1].minor.yy888 = createDataType(TSDB_DATA_TYPE_UBIGINT); } +{ yymsp[-1].minor.yy532 = createDataType(TSDB_DATA_TYPE_UBIGINT); } break; case 174: /* type_name ::= JSON */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_JSON); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_JSON); } break; case 175: /* type_name ::= VARCHAR NK_LP NK_INTEGER NK_RP */ -{ yymsp[-3].minor.yy888 = createVarLenDataType(TSDB_DATA_TYPE_VARCHAR, &yymsp[-1].minor.yy0); } +{ yymsp[-3].minor.yy532 = createVarLenDataType(TSDB_DATA_TYPE_VARCHAR, &yymsp[-1].minor.yy0); } break; case 176: /* type_name ::= MEDIUMBLOB */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_MEDIUMBLOB); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_MEDIUMBLOB); } break; case 177: /* type_name ::= BLOB */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_BLOB); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_BLOB); } break; case 178: /* type_name ::= VARBINARY NK_LP NK_INTEGER NK_RP */ -{ yymsp[-3].minor.yy888 = createVarLenDataType(TSDB_DATA_TYPE_VARBINARY, &yymsp[-1].minor.yy0); } +{ yymsp[-3].minor.yy532 = createVarLenDataType(TSDB_DATA_TYPE_VARBINARY, &yymsp[-1].minor.yy0); } break; case 179: /* type_name ::= DECIMAL */ -{ yymsp[0].minor.yy888 = createDataType(TSDB_DATA_TYPE_DECIMAL); } +{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_DECIMAL); } break; case 180: /* type_name ::= DECIMAL NK_LP NK_INTEGER NK_RP */ -{ yymsp[-3].minor.yy888 = createDataType(TSDB_DATA_TYPE_DECIMAL); } +{ yymsp[-3].minor.yy532 = createDataType(TSDB_DATA_TYPE_DECIMAL); } break; case 181: /* type_name ::= DECIMAL NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ -{ yymsp[-5].minor.yy888 = createDataType(TSDB_DATA_TYPE_DECIMAL); } +{ yymsp[-5].minor.yy532 = createDataType(TSDB_DATA_TYPE_DECIMAL); } break; case 183: /* tags_def_opt ::= tags_def */ - case 411: /* star_func_para_list ::= other_para_list */ yytestcase(yyruleno==411); -{ yylhsminor.yy601 = yymsp[0].minor.yy601; } - yymsp[0].minor.yy601 = yylhsminor.yy601; + case 413: /* star_func_para_list ::= other_para_list */ yytestcase(yyruleno==413); +{ yylhsminor.yy376 = yymsp[0].minor.yy376; } + yymsp[0].minor.yy376 = yylhsminor.yy376; break; case 184: /* tags_def ::= TAGS NK_LP column_def_list NK_RP */ -{ yymsp[-3].minor.yy601 = yymsp[-1].minor.yy601; } +{ yymsp[-3].minor.yy376 = yymsp[-1].minor.yy376; } break; case 185: /* table_options ::= */ -{ yymsp[1].minor.yy600 = createDefaultTableOptions(pCxt); } +{ yymsp[1].minor.yy476 = createDefaultTableOptions(pCxt); } break; case 186: /* table_options ::= table_options COMMENT NK_STRING */ -{ yylhsminor.yy600 = setTableOption(pCxt, yymsp[-2].minor.yy600, TABLE_OPTION_COMMENT, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-2].minor.yy476, TABLE_OPTION_COMMENT, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 187: /* table_options ::= table_options MAX_DELAY duration_list */ -{ yylhsminor.yy600 = setTableOption(pCxt, yymsp[-2].minor.yy600, TABLE_OPTION_MAXDELAY, yymsp[0].minor.yy601); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-2].minor.yy476, TABLE_OPTION_MAXDELAY, yymsp[0].minor.yy376); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 188: /* table_options ::= table_options WATERMARK duration_list */ -{ yylhsminor.yy600 = setTableOption(pCxt, yymsp[-2].minor.yy600, TABLE_OPTION_WATERMARK, yymsp[0].minor.yy601); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-2].minor.yy476, TABLE_OPTION_WATERMARK, yymsp[0].minor.yy376); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 189: /* table_options ::= table_options ROLLUP NK_LP rollup_func_list NK_RP */ -{ yylhsminor.yy600 = setTableOption(pCxt, yymsp[-4].minor.yy600, TABLE_OPTION_ROLLUP, yymsp[-1].minor.yy601); } - yymsp[-4].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-4].minor.yy476, TABLE_OPTION_ROLLUP, yymsp[-1].minor.yy376); } + yymsp[-4].minor.yy476 = yylhsminor.yy476; break; case 190: /* table_options ::= table_options TTL NK_INTEGER */ -{ yylhsminor.yy600 = setTableOption(pCxt, yymsp[-2].minor.yy600, TABLE_OPTION_TTL, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-2].minor.yy476, TABLE_OPTION_TTL, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 191: /* table_options ::= table_options SMA NK_LP col_name_list NK_RP */ -{ yylhsminor.yy600 = setTableOption(pCxt, yymsp[-4].minor.yy600, TABLE_OPTION_SMA, yymsp[-1].minor.yy601); } - yymsp[-4].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-4].minor.yy476, TABLE_OPTION_SMA, yymsp[-1].minor.yy376); } + yymsp[-4].minor.yy476 = yylhsminor.yy476; break; case 192: /* table_options ::= table_options DELETE_MARK duration_list */ -{ yylhsminor.yy600 = setTableOption(pCxt, yymsp[-2].minor.yy600, TABLE_OPTION_DELETE_MARK, yymsp[0].minor.yy601); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-2].minor.yy476, TABLE_OPTION_DELETE_MARK, yymsp[0].minor.yy376); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; case 193: /* alter_table_options ::= alter_table_option */ -{ yylhsminor.yy600 = createAlterTableOptions(pCxt); yylhsminor.yy600 = setTableOption(pCxt, yylhsminor.yy600, yymsp[0].minor.yy661.type, &yymsp[0].minor.yy661.val); } - yymsp[0].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createAlterTableOptions(pCxt); yylhsminor.yy476 = setTableOption(pCxt, yylhsminor.yy476, yymsp[0].minor.yy893.type, &yymsp[0].minor.yy893.val); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; case 194: /* alter_table_options ::= alter_table_options alter_table_option */ -{ yylhsminor.yy600 = setTableOption(pCxt, yymsp[-1].minor.yy600, yymsp[0].minor.yy661.type, &yymsp[0].minor.yy661.val); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-1].minor.yy476, yymsp[0].minor.yy893.type, &yymsp[0].minor.yy893.val); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; case 195: /* alter_table_option ::= COMMENT NK_STRING */ -{ yymsp[-1].minor.yy661.type = TABLE_OPTION_COMMENT; yymsp[-1].minor.yy661.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy893.type = TABLE_OPTION_COMMENT; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } break; case 196: /* alter_table_option ::= TTL NK_INTEGER */ -{ yymsp[-1].minor.yy661.type = TABLE_OPTION_TTL; yymsp[-1].minor.yy661.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy893.type = TABLE_OPTION_TTL; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } break; case 197: /* duration_list ::= duration_literal */ - case 375: /* expression_list ::= expr_or_subquery */ yytestcase(yyruleno==375); -{ yylhsminor.yy601 = createNodeList(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } - yymsp[0].minor.yy601 = yylhsminor.yy601; + case 377: /* expression_list ::= expr_or_subquery */ yytestcase(yyruleno==377); +{ yylhsminor.yy376 = createNodeList(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy476)); } + yymsp[0].minor.yy376 = yylhsminor.yy376; break; case 198: /* duration_list ::= duration_list NK_COMMA duration_literal */ - case 376: /* expression_list ::= expression_list NK_COMMA expr_or_subquery */ yytestcase(yyruleno==376); -{ yylhsminor.yy601 = addNodeToList(pCxt, yymsp[-2].minor.yy601, releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } - yymsp[-2].minor.yy601 = yylhsminor.yy601; + case 378: /* expression_list ::= expression_list NK_COMMA expr_or_subquery */ yytestcase(yyruleno==378); +{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-2].minor.yy376, releaseRawExprNode(pCxt, yymsp[0].minor.yy476)); } + yymsp[-2].minor.yy376 = yylhsminor.yy376; break; case 201: /* rollup_func_name ::= function_name */ -{ yylhsminor.yy600 = createFunctionNode(pCxt, &yymsp[0].minor.yy77, NULL); } - yymsp[0].minor.yy600 = yylhsminor.yy600; +{ yylhsminor.yy476 = createFunctionNode(pCxt, &yymsp[0].minor.yy701, NULL); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; case 202: /* rollup_func_name ::= FIRST */ case 203: /* rollup_func_name ::= LAST */ yytestcase(yyruleno==203); - case 256: /* tag_item ::= QTAGS */ yytestcase(yyruleno==256); -{ yylhsminor.yy600 = createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 258: /* tag_item ::= QTAGS */ yytestcase(yyruleno==258); +{ yylhsminor.yy476 = createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; case 206: /* col_name ::= column_name */ - case 257: /* tag_item ::= column_name */ yytestcase(yyruleno==257); -{ yylhsminor.yy600 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy77); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 259: /* tag_item ::= column_name */ yytestcase(yyruleno==259); +{ yylhsminor.yy476 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy701); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; case 207: /* cmd ::= SHOW DNODES */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DNODES_STMT); } @@ -4427,13 +4981,13 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DATABASES_STMT); } break; case 211: /* cmd ::= SHOW db_name_cond_opt TABLES like_pattern_opt */ -{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TABLES_STMT, yymsp[-2].minor.yy600, yymsp[0].minor.yy600, OP_TYPE_LIKE); } +{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TABLES_STMT, yymsp[-2].minor.yy476, yymsp[0].minor.yy476, OP_TYPE_LIKE); } break; case 212: /* cmd ::= SHOW db_name_cond_opt STABLES like_pattern_opt */ -{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_STABLES_STMT, yymsp[-2].minor.yy600, yymsp[0].minor.yy600, OP_TYPE_LIKE); } +{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_STABLES_STMT, yymsp[-2].minor.yy476, yymsp[0].minor.yy476, OP_TYPE_LIKE); } break; case 213: /* cmd ::= SHOW db_name_cond_opt VGROUPS */ -{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_VGROUPS_STMT, yymsp[-1].minor.yy600, NULL, OP_TYPE_LIKE); } +{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_VGROUPS_STMT, yymsp[-1].minor.yy476, NULL, OP_TYPE_LIKE); } break; case 214: /* cmd ::= SHOW MNODES */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_MNODES_STMT); } @@ -4445,7 +4999,7 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_FUNCTIONS_STMT); } break; case 217: /* cmd ::= SHOW INDEXES FROM table_name_cond from_db_opt */ -{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_INDEXES_STMT, yymsp[0].minor.yy600, yymsp[-1].minor.yy600, OP_TYPE_EQUAL); } +{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_INDEXES_STMT, yymsp[0].minor.yy476, yymsp[-1].minor.yy476, OP_TYPE_EQUAL); } break; case 218: /* cmd ::= SHOW STREAMS */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_STREAMS_STMT); } @@ -4464,13 +5018,13 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LICENCES_STMT); } break; case 224: /* cmd ::= SHOW CREATE DATABASE db_name */ -{ pCxt->pRootNode = createShowCreateDatabaseStmt(pCxt, &yymsp[0].minor.yy77); } +{ pCxt->pRootNode = createShowCreateDatabaseStmt(pCxt, &yymsp[0].minor.yy701); } break; case 225: /* cmd ::= SHOW CREATE TABLE full_table_name */ -{ pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_TABLE_STMT, yymsp[0].minor.yy600); } +{ pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_TABLE_STMT, yymsp[0].minor.yy476); } break; case 226: /* cmd ::= SHOW CREATE STABLE full_table_name */ -{ pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_STABLE_STMT, yymsp[0].minor.yy600); } +{ pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_STABLE_STMT, yymsp[0].minor.yy476); } break; case 227: /* cmd ::= SHOW QUERIES */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_QUERIES_STMT); } @@ -4489,7 +5043,7 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT); } break; case 233: /* cmd ::= SHOW DNODE NK_INTEGER VARIABLES like_pattern_opt */ -{ pCxt->pRootNode = createShowDnodeVariablesStmt(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[-2].minor.yy0), yymsp[0].minor.yy600); } +{ pCxt->pRootNode = createShowDnodeVariablesStmt(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[-2].minor.yy0), yymsp[0].minor.yy476); } break; case 234: /* cmd ::= SHOW BNODES */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_BNODES_STMT); } @@ -4504,7 +5058,7 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_TRANSACTIONS_STMT); } break; case 238: /* cmd ::= SHOW TABLE DISTRIBUTED full_table_name */ -{ pCxt->pRootNode = createShowTableDistributedStmt(pCxt, yymsp[0].minor.yy600); } +{ pCxt->pRootNode = createShowTableDistributedStmt(pCxt, yymsp[0].minor.yy476); } break; case 239: /* cmd ::= SHOW CONSUMERS */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_CONSUMERS_STMT); } @@ -4513,10 +5067,10 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT); } break; case 241: /* cmd ::= SHOW TAGS FROM table_name_cond from_db_opt */ -{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TAGS_STMT, yymsp[0].minor.yy600, yymsp[-1].minor.yy600, OP_TYPE_EQUAL); } +{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TAGS_STMT, yymsp[0].minor.yy476, yymsp[-1].minor.yy476, OP_TYPE_EQUAL); } break; case 242: /* cmd ::= SHOW TABLE TAGS tag_list_opt FROM table_name_cond from_db_opt */ -{ pCxt->pRootNode = createShowTableTagsStmt(pCxt, yymsp[-1].minor.yy600, yymsp[0].minor.yy600, yymsp[-3].minor.yy601); } +{ pCxt->pRootNode = createShowTableTagsStmt(pCxt, yymsp[-1].minor.yy476, yymsp[0].minor.yy476, yymsp[-3].minor.yy376); } break; case 243: /* cmd ::= SHOW VNODES NK_INTEGER */ { pCxt->pRootNode = createShowVnodesStmt(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0), NULL); } @@ -4524,750 +5078,756 @@ static YYACTIONTYPE yy_reduce( case 244: /* cmd ::= SHOW VNODES NK_STRING */ { pCxt->pRootNode = createShowVnodesStmt(pCxt, NULL, createValueNode(pCxt, TSDB_DATA_TYPE_VARCHAR, &yymsp[0].minor.yy0)); } break; - case 245: /* db_name_cond_opt ::= */ - case 250: /* from_db_opt ::= */ yytestcase(yyruleno==250); -{ yymsp[1].minor.yy600 = createDefaultDatabaseCondValue(pCxt); } + case 245: /* cmd ::= SHOW db_name_cond_opt ALIVE */ +{ pCxt->pRootNode = createShowAliveStmt(pCxt, yymsp[-1].minor.yy476, QUERY_NODE_SHOW_DB_ALIVE_STMT); } break; - case 246: /* db_name_cond_opt ::= db_name NK_DOT */ -{ yylhsminor.yy600 = createIdentifierValueNode(pCxt, &yymsp[-1].minor.yy77); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + case 246: /* cmd ::= SHOW CLUSTER ALIVE */ +{ pCxt->pRootNode = createShowAliveStmt(pCxt, NULL, QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT); } break; - case 247: /* like_pattern_opt ::= */ - case 308: /* subtable_opt ::= */ yytestcase(yyruleno==308); - case 421: /* case_when_else_opt ::= */ yytestcase(yyruleno==421); - case 451: /* from_clause_opt ::= */ yytestcase(yyruleno==451); - case 480: /* where_clause_opt ::= */ yytestcase(yyruleno==480); - case 489: /* twindow_clause_opt ::= */ yytestcase(yyruleno==489); - case 495: /* sliding_opt ::= */ yytestcase(yyruleno==495); - case 497: /* fill_opt ::= */ yytestcase(yyruleno==497); - case 509: /* having_clause_opt ::= */ yytestcase(yyruleno==509); - case 511: /* range_opt ::= */ yytestcase(yyruleno==511); - case 513: /* every_opt ::= */ yytestcase(yyruleno==513); - case 526: /* slimit_clause_opt ::= */ yytestcase(yyruleno==526); - case 530: /* limit_clause_opt ::= */ yytestcase(yyruleno==530); -{ yymsp[1].minor.yy600 = NULL; } + case 247: /* db_name_cond_opt ::= */ + case 252: /* from_db_opt ::= */ yytestcase(yyruleno==252); +{ yymsp[1].minor.yy476 = createDefaultDatabaseCondValue(pCxt); } break; - case 248: /* like_pattern_opt ::= LIKE NK_STRING */ -{ yymsp[-1].minor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } + case 248: /* db_name_cond_opt ::= db_name NK_DOT */ +{ yylhsminor.yy476 = createIdentifierValueNode(pCxt, &yymsp[-1].minor.yy701); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 249: /* table_name_cond ::= table_name */ -{ yylhsminor.yy600 = createIdentifierValueNode(pCxt, &yymsp[0].minor.yy77); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 249: /* like_pattern_opt ::= */ + case 310: /* subtable_opt ::= */ yytestcase(yyruleno==310); + case 423: /* case_when_else_opt ::= */ yytestcase(yyruleno==423); + case 453: /* from_clause_opt ::= */ yytestcase(yyruleno==453); + case 482: /* where_clause_opt ::= */ yytestcase(yyruleno==482); + case 491: /* twindow_clause_opt ::= */ yytestcase(yyruleno==491); + case 497: /* sliding_opt ::= */ yytestcase(yyruleno==497); + case 499: /* fill_opt ::= */ yytestcase(yyruleno==499); + case 511: /* having_clause_opt ::= */ yytestcase(yyruleno==511); + case 513: /* range_opt ::= */ yytestcase(yyruleno==513); + case 515: /* every_opt ::= */ yytestcase(yyruleno==515); + case 528: /* slimit_clause_opt ::= */ yytestcase(yyruleno==528); + case 532: /* limit_clause_opt ::= */ yytestcase(yyruleno==532); +{ yymsp[1].minor.yy476 = NULL; } break; - case 251: /* from_db_opt ::= FROM db_name */ -{ yymsp[-1].minor.yy600 = createIdentifierValueNode(pCxt, &yymsp[0].minor.yy77); } + case 250: /* like_pattern_opt ::= LIKE NK_STRING */ +{ yymsp[-1].minor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } break; - case 255: /* tag_item ::= TBNAME */ -{ yylhsminor.yy600 = setProjectionAlias(pCxt, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL), &yymsp[0].minor.yy0); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 251: /* table_name_cond ::= table_name */ +{ yylhsminor.yy476 = createIdentifierValueNode(pCxt, &yymsp[0].minor.yy701); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 258: /* tag_item ::= column_name column_alias */ -{ yylhsminor.yy600 = setProjectionAlias(pCxt, createColumnNode(pCxt, NULL, &yymsp[-1].minor.yy77), &yymsp[0].minor.yy77); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + case 253: /* from_db_opt ::= FROM db_name */ +{ yymsp[-1].minor.yy476 = createIdentifierValueNode(pCxt, &yymsp[0].minor.yy701); } break; - case 259: /* tag_item ::= column_name AS column_alias */ -{ yylhsminor.yy600 = setProjectionAlias(pCxt, createColumnNode(pCxt, NULL, &yymsp[-2].minor.yy77), &yymsp[0].minor.yy77); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 257: /* tag_item ::= TBNAME */ +{ yylhsminor.yy476 = setProjectionAlias(pCxt, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL), &yymsp[0].minor.yy0); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 260: /* cmd ::= CREATE SMA INDEX not_exists_opt full_table_name ON full_table_name index_options */ -{ pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_SMA, yymsp[-4].minor.yy841, yymsp[-3].minor.yy600, yymsp[-1].minor.yy600, NULL, yymsp[0].minor.yy600); } + case 260: /* tag_item ::= column_name column_alias */ +{ yylhsminor.yy476 = setProjectionAlias(pCxt, createColumnNode(pCxt, NULL, &yymsp[-1].minor.yy701), &yymsp[0].minor.yy701); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 261: /* cmd ::= CREATE INDEX not_exists_opt full_table_name ON full_table_name NK_LP col_name_list NK_RP */ -{ pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_NORMAL, yymsp[-6].minor.yy841, yymsp[-5].minor.yy600, yymsp[-3].minor.yy600, yymsp[-1].minor.yy601, NULL); } + case 261: /* tag_item ::= column_name AS column_alias */ +{ yylhsminor.yy476 = setProjectionAlias(pCxt, createColumnNode(pCxt, NULL, &yymsp[-2].minor.yy701), &yymsp[0].minor.yy701); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 262: /* cmd ::= DROP INDEX exists_opt full_table_name */ -{ pCxt->pRootNode = createDropIndexStmt(pCxt, yymsp[-1].minor.yy841, yymsp[0].minor.yy600); } + case 262: /* cmd ::= CREATE SMA INDEX not_exists_opt full_table_name ON full_table_name index_options */ +{ pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_SMA, yymsp[-4].minor.yy845, yymsp[-3].minor.yy476, yymsp[-1].minor.yy476, NULL, yymsp[0].minor.yy476); } break; - case 263: /* index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_RP sliding_opt sma_stream_opt */ -{ yymsp[-9].minor.yy600 = createIndexOption(pCxt, yymsp[-7].minor.yy601, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), NULL, yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } + case 263: /* cmd ::= CREATE INDEX not_exists_opt full_table_name ON full_table_name NK_LP col_name_list NK_RP */ +{ pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_NORMAL, yymsp[-6].minor.yy845, yymsp[-5].minor.yy476, yymsp[-3].minor.yy476, yymsp[-1].minor.yy376, NULL); } break; - case 264: /* index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt sma_stream_opt */ -{ yymsp[-11].minor.yy600 = createIndexOption(pCxt, yymsp[-9].minor.yy601, releaseRawExprNode(pCxt, yymsp[-5].minor.yy600), releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } + case 264: /* cmd ::= DROP INDEX exists_opt full_table_name */ +{ pCxt->pRootNode = createDropIndexStmt(pCxt, yymsp[-1].minor.yy845, yymsp[0].minor.yy476); } break; - case 267: /* func ::= sma_func_name NK_LP expression_list NK_RP */ -{ yylhsminor.yy600 = createFunctionNode(pCxt, &yymsp[-3].minor.yy77, yymsp[-1].minor.yy601); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + case 265: /* index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_RP sliding_opt sma_stream_opt */ +{ yymsp[-9].minor.yy476 = createIndexOption(pCxt, yymsp[-7].minor.yy376, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), NULL, yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } break; - case 273: /* sma_stream_opt ::= */ - case 301: /* stream_options ::= */ yytestcase(yyruleno==301); -{ yymsp[1].minor.yy600 = createStreamOptions(pCxt); } + case 266: /* index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt sma_stream_opt */ +{ yymsp[-11].minor.yy476 = createIndexOption(pCxt, yymsp[-9].minor.yy376, releaseRawExprNode(pCxt, yymsp[-5].minor.yy476), releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } break; - case 274: /* sma_stream_opt ::= sma_stream_opt WATERMARK duration_literal */ - case 305: /* stream_options ::= stream_options WATERMARK duration_literal */ yytestcase(yyruleno==305); -{ ((SStreamOptions*)yymsp[-2].minor.yy600)->pWatermark = releaseRawExprNode(pCxt, yymsp[0].minor.yy600); yylhsminor.yy600 = yymsp[-2].minor.yy600; } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 269: /* func ::= sma_func_name NK_LP expression_list NK_RP */ +{ yylhsminor.yy476 = createFunctionNode(pCxt, &yymsp[-3].minor.yy701, yymsp[-1].minor.yy376); } + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; - case 275: /* sma_stream_opt ::= sma_stream_opt MAX_DELAY duration_literal */ -{ ((SStreamOptions*)yymsp[-2].minor.yy600)->pDelay = releaseRawExprNode(pCxt, yymsp[0].minor.yy600); yylhsminor.yy600 = yymsp[-2].minor.yy600; } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 275: /* sma_stream_opt ::= */ + case 303: /* stream_options ::= */ yytestcase(yyruleno==303); +{ yymsp[1].minor.yy476 = createStreamOptions(pCxt); } break; - case 276: /* sma_stream_opt ::= sma_stream_opt DELETE_MARK duration_literal */ -{ ((SStreamOptions*)yymsp[-2].minor.yy600)->pDeleteMark = releaseRawExprNode(pCxt, yymsp[0].minor.yy600); yylhsminor.yy600 = yymsp[-2].minor.yy600; } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 276: /* sma_stream_opt ::= sma_stream_opt WATERMARK duration_literal */ + case 307: /* stream_options ::= stream_options WATERMARK duration_literal */ yytestcase(yyruleno==307); +{ ((SStreamOptions*)yymsp[-2].minor.yy476)->pWatermark = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); yylhsminor.yy476 = yymsp[-2].minor.yy476; } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 277: /* cmd ::= CREATE TOPIC not_exists_opt topic_name AS query_or_subquery */ -{ pCxt->pRootNode = createCreateTopicStmtUseQuery(pCxt, yymsp[-3].minor.yy841, &yymsp[-2].minor.yy77, yymsp[0].minor.yy600); } + case 277: /* sma_stream_opt ::= sma_stream_opt MAX_DELAY duration_literal */ +{ ((SStreamOptions*)yymsp[-2].minor.yy476)->pDelay = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); yylhsminor.yy476 = yymsp[-2].minor.yy476; } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 278: /* cmd ::= CREATE TOPIC not_exists_opt topic_name AS DATABASE db_name */ -{ pCxt->pRootNode = createCreateTopicStmtUseDb(pCxt, yymsp[-4].minor.yy841, &yymsp[-3].minor.yy77, &yymsp[0].minor.yy77, false); } + case 278: /* sma_stream_opt ::= sma_stream_opt DELETE_MARK duration_literal */ +{ ((SStreamOptions*)yymsp[-2].minor.yy476)->pDeleteMark = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); yylhsminor.yy476 = yymsp[-2].minor.yy476; } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 279: /* cmd ::= CREATE TOPIC not_exists_opt topic_name WITH META AS DATABASE db_name */ -{ pCxt->pRootNode = createCreateTopicStmtUseDb(pCxt, yymsp[-6].minor.yy841, &yymsp[-5].minor.yy77, &yymsp[0].minor.yy77, true); } + case 279: /* cmd ::= CREATE TOPIC not_exists_opt topic_name AS query_or_subquery */ +{ pCxt->pRootNode = createCreateTopicStmtUseQuery(pCxt, yymsp[-3].minor.yy845, &yymsp[-2].minor.yy701, yymsp[0].minor.yy476); } break; - case 280: /* cmd ::= CREATE TOPIC not_exists_opt topic_name AS STABLE full_table_name */ -{ pCxt->pRootNode = createCreateTopicStmtUseTable(pCxt, yymsp[-4].minor.yy841, &yymsp[-3].minor.yy77, yymsp[0].minor.yy600, false); } + case 280: /* cmd ::= CREATE TOPIC not_exists_opt topic_name AS DATABASE db_name */ +{ pCxt->pRootNode = createCreateTopicStmtUseDb(pCxt, yymsp[-4].minor.yy845, &yymsp[-3].minor.yy701, &yymsp[0].minor.yy701, false); } break; - case 281: /* cmd ::= CREATE TOPIC not_exists_opt topic_name WITH META AS STABLE full_table_name */ -{ pCxt->pRootNode = createCreateTopicStmtUseTable(pCxt, yymsp[-6].minor.yy841, &yymsp[-5].minor.yy77, yymsp[0].minor.yy600, true); } + case 281: /* cmd ::= CREATE TOPIC not_exists_opt topic_name WITH META AS DATABASE db_name */ +{ pCxt->pRootNode = createCreateTopicStmtUseDb(pCxt, yymsp[-6].minor.yy845, &yymsp[-5].minor.yy701, &yymsp[0].minor.yy701, true); } break; - case 282: /* cmd ::= DROP TOPIC exists_opt topic_name */ -{ pCxt->pRootNode = createDropTopicStmt(pCxt, yymsp[-1].minor.yy841, &yymsp[0].minor.yy77); } + case 282: /* cmd ::= CREATE TOPIC not_exists_opt topic_name AS STABLE full_table_name */ +{ pCxt->pRootNode = createCreateTopicStmtUseTable(pCxt, yymsp[-4].minor.yy845, &yymsp[-3].minor.yy701, yymsp[0].minor.yy476, false); } break; - case 283: /* cmd ::= DROP CONSUMER GROUP exists_opt cgroup_name ON topic_name */ -{ pCxt->pRootNode = createDropCGroupStmt(pCxt, yymsp[-3].minor.yy841, &yymsp[-2].minor.yy77, &yymsp[0].minor.yy77); } + case 283: /* cmd ::= CREATE TOPIC not_exists_opt topic_name WITH META AS STABLE full_table_name */ +{ pCxt->pRootNode = createCreateTopicStmtUseTable(pCxt, yymsp[-6].minor.yy845, &yymsp[-5].minor.yy701, yymsp[0].minor.yy476, true); } break; - case 284: /* cmd ::= DESC full_table_name */ - case 285: /* cmd ::= DESCRIBE full_table_name */ yytestcase(yyruleno==285); -{ pCxt->pRootNode = createDescribeStmt(pCxt, yymsp[0].minor.yy600); } + case 284: /* cmd ::= DROP TOPIC exists_opt topic_name */ +{ pCxt->pRootNode = createDropTopicStmt(pCxt, yymsp[-1].minor.yy845, &yymsp[0].minor.yy701); } break; - case 286: /* cmd ::= RESET QUERY CACHE */ + case 285: /* cmd ::= DROP CONSUMER GROUP exists_opt cgroup_name ON topic_name */ +{ pCxt->pRootNode = createDropCGroupStmt(pCxt, yymsp[-3].minor.yy845, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701); } + break; + case 286: /* cmd ::= DESC full_table_name */ + case 287: /* cmd ::= DESCRIBE full_table_name */ yytestcase(yyruleno==287); +{ pCxt->pRootNode = createDescribeStmt(pCxt, yymsp[0].minor.yy476); } + break; + case 288: /* cmd ::= RESET QUERY CACHE */ { pCxt->pRootNode = createResetQueryCacheStmt(pCxt); } break; - case 287: /* cmd ::= EXPLAIN analyze_opt explain_options query_or_subquery */ -{ pCxt->pRootNode = createExplainStmt(pCxt, yymsp[-2].minor.yy841, yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } + case 289: /* cmd ::= EXPLAIN analyze_opt explain_options query_or_subquery */ +{ pCxt->pRootNode = createExplainStmt(pCxt, yymsp[-2].minor.yy845, yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } break; - case 290: /* explain_options ::= */ -{ yymsp[1].minor.yy600 = createDefaultExplainOptions(pCxt); } + case 292: /* explain_options ::= */ +{ yymsp[1].minor.yy476 = createDefaultExplainOptions(pCxt); } break; - case 291: /* explain_options ::= explain_options VERBOSE NK_BOOL */ -{ yylhsminor.yy600 = setExplainVerbose(pCxt, yymsp[-2].minor.yy600, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 293: /* explain_options ::= explain_options VERBOSE NK_BOOL */ +{ yylhsminor.yy476 = setExplainVerbose(pCxt, yymsp[-2].minor.yy476, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 292: /* explain_options ::= explain_options RATIO NK_FLOAT */ -{ yylhsminor.yy600 = setExplainRatio(pCxt, yymsp[-2].minor.yy600, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 294: /* explain_options ::= explain_options RATIO NK_FLOAT */ +{ yylhsminor.yy476 = setExplainRatio(pCxt, yymsp[-2].minor.yy476, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 293: /* cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt */ -{ pCxt->pRootNode = createCreateFunctionStmt(pCxt, yymsp[-6].minor.yy841, yymsp[-8].minor.yy841, &yymsp[-5].minor.yy77, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy888, yymsp[0].minor.yy248); } + case 295: /* cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt */ +{ pCxt->pRootNode = createCreateFunctionStmt(pCxt, yymsp[-6].minor.yy845, yymsp[-8].minor.yy845, &yymsp[-5].minor.yy701, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy532, yymsp[0].minor.yy508); } break; - case 294: /* cmd ::= DROP FUNCTION exists_opt function_name */ -{ pCxt->pRootNode = createDropFunctionStmt(pCxt, yymsp[-1].minor.yy841, &yymsp[0].minor.yy77); } + case 296: /* cmd ::= DROP FUNCTION exists_opt function_name */ +{ pCxt->pRootNode = createDropFunctionStmt(pCxt, yymsp[-1].minor.yy845, &yymsp[0].minor.yy701); } break; - case 299: /* cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name tags_def_opt subtable_opt AS query_or_subquery */ -{ pCxt->pRootNode = createCreateStreamStmt(pCxt, yymsp[-8].minor.yy841, &yymsp[-7].minor.yy77, yymsp[-4].minor.yy600, yymsp[-6].minor.yy600, yymsp[-3].minor.yy601, yymsp[-2].minor.yy600, yymsp[0].minor.yy600); } + case 301: /* cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name tags_def_opt subtable_opt AS query_or_subquery */ +{ pCxt->pRootNode = createCreateStreamStmt(pCxt, yymsp[-8].minor.yy845, &yymsp[-7].minor.yy701, yymsp[-4].minor.yy476, yymsp[-6].minor.yy476, yymsp[-3].minor.yy376, yymsp[-2].minor.yy476, yymsp[0].minor.yy476); } break; - case 300: /* cmd ::= DROP STREAM exists_opt stream_name */ -{ pCxt->pRootNode = createDropStreamStmt(pCxt, yymsp[-1].minor.yy841, &yymsp[0].minor.yy77); } + case 302: /* cmd ::= DROP STREAM exists_opt stream_name */ +{ pCxt->pRootNode = createDropStreamStmt(pCxt, yymsp[-1].minor.yy845, &yymsp[0].minor.yy701); } break; - case 302: /* stream_options ::= stream_options TRIGGER AT_ONCE */ -{ ((SStreamOptions*)yymsp[-2].minor.yy600)->triggerType = STREAM_TRIGGER_AT_ONCE; yylhsminor.yy600 = yymsp[-2].minor.yy600; } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 304: /* stream_options ::= stream_options TRIGGER AT_ONCE */ +{ ((SStreamOptions*)yymsp[-2].minor.yy476)->triggerType = STREAM_TRIGGER_AT_ONCE; yylhsminor.yy476 = yymsp[-2].minor.yy476; } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 303: /* stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ -{ ((SStreamOptions*)yymsp[-2].minor.yy600)->triggerType = STREAM_TRIGGER_WINDOW_CLOSE; yylhsminor.yy600 = yymsp[-2].minor.yy600; } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 305: /* stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ +{ ((SStreamOptions*)yymsp[-2].minor.yy476)->triggerType = STREAM_TRIGGER_WINDOW_CLOSE; yylhsminor.yy476 = yymsp[-2].minor.yy476; } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 304: /* stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ -{ ((SStreamOptions*)yymsp[-3].minor.yy600)->triggerType = STREAM_TRIGGER_MAX_DELAY; ((SStreamOptions*)yymsp[-3].minor.yy600)->pDelay = releaseRawExprNode(pCxt, yymsp[0].minor.yy600); yylhsminor.yy600 = yymsp[-3].minor.yy600; } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + case 306: /* stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ +{ ((SStreamOptions*)yymsp[-3].minor.yy476)->triggerType = STREAM_TRIGGER_MAX_DELAY; ((SStreamOptions*)yymsp[-3].minor.yy476)->pDelay = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); yylhsminor.yy476 = yymsp[-3].minor.yy476; } + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; - case 306: /* stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER */ -{ ((SStreamOptions*)yymsp[-3].minor.yy600)->ignoreExpired = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); yylhsminor.yy600 = yymsp[-3].minor.yy600; } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + case 308: /* stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER */ +{ ((SStreamOptions*)yymsp[-3].minor.yy476)->ignoreExpired = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); yylhsminor.yy476 = yymsp[-3].minor.yy476; } + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; - case 307: /* stream_options ::= stream_options FILL_HISTORY NK_INTEGER */ -{ ((SStreamOptions*)yymsp[-2].minor.yy600)->fillHistory = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); yylhsminor.yy600 = yymsp[-2].minor.yy600; } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 309: /* stream_options ::= stream_options FILL_HISTORY NK_INTEGER */ +{ ((SStreamOptions*)yymsp[-2].minor.yy476)->fillHistory = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); yylhsminor.yy476 = yymsp[-2].minor.yy476; } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 309: /* subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ - case 496: /* sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */ yytestcase(yyruleno==496); - case 514: /* every_opt ::= EVERY NK_LP duration_literal NK_RP */ yytestcase(yyruleno==514); -{ yymsp[-3].minor.yy600 = releaseRawExprNode(pCxt, yymsp[-1].minor.yy600); } + case 311: /* subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ + case 498: /* sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */ yytestcase(yyruleno==498); + case 516: /* every_opt ::= EVERY NK_LP duration_literal NK_RP */ yytestcase(yyruleno==516); +{ yymsp[-3].minor.yy476 = releaseRawExprNode(pCxt, yymsp[-1].minor.yy476); } break; - case 310: /* cmd ::= KILL CONNECTION NK_INTEGER */ + case 312: /* cmd ::= KILL CONNECTION NK_INTEGER */ { pCxt->pRootNode = createKillStmt(pCxt, QUERY_NODE_KILL_CONNECTION_STMT, &yymsp[0].minor.yy0); } break; - case 311: /* cmd ::= KILL QUERY NK_STRING */ + case 313: /* cmd ::= KILL QUERY NK_STRING */ { pCxt->pRootNode = createKillQueryStmt(pCxt, &yymsp[0].minor.yy0); } break; - case 312: /* cmd ::= KILL TRANSACTION NK_INTEGER */ + case 314: /* cmd ::= KILL TRANSACTION NK_INTEGER */ { pCxt->pRootNode = createKillStmt(pCxt, QUERY_NODE_KILL_TRANSACTION_STMT, &yymsp[0].minor.yy0); } break; - case 313: /* cmd ::= BALANCE VGROUP */ + case 315: /* cmd ::= BALANCE VGROUP */ { pCxt->pRootNode = createBalanceVgroupStmt(pCxt); } break; - case 314: /* cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ + case 316: /* cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ { pCxt->pRootNode = createMergeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } break; - case 315: /* cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ -{ pCxt->pRootNode = createRedistributeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy601); } + case 317: /* cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ +{ pCxt->pRootNode = createRedistributeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy376); } break; - case 316: /* cmd ::= SPLIT VGROUP NK_INTEGER */ + case 318: /* cmd ::= SPLIT VGROUP NK_INTEGER */ { pCxt->pRootNode = createSplitVgroupStmt(pCxt, &yymsp[0].minor.yy0); } break; - case 317: /* dnode_list ::= DNODE NK_INTEGER */ -{ yymsp[-1].minor.yy601 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } + case 319: /* dnode_list ::= DNODE NK_INTEGER */ +{ yymsp[-1].minor.yy376 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } break; - case 319: /* cmd ::= DELETE FROM full_table_name where_clause_opt */ -{ pCxt->pRootNode = createDeleteStmt(pCxt, yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } + case 321: /* cmd ::= DELETE FROM full_table_name where_clause_opt */ +{ pCxt->pRootNode = createDeleteStmt(pCxt, yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } break; - case 321: /* cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ -{ pCxt->pRootNode = createInsertStmt(pCxt, yymsp[-4].minor.yy600, yymsp[-2].minor.yy601, yymsp[0].minor.yy600); } + case 323: /* cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ +{ pCxt->pRootNode = createInsertStmt(pCxt, yymsp[-4].minor.yy476, yymsp[-2].minor.yy376, yymsp[0].minor.yy476); } break; - case 322: /* cmd ::= INSERT INTO full_table_name query_or_subquery */ -{ pCxt->pRootNode = createInsertStmt(pCxt, yymsp[-1].minor.yy600, NULL, yymsp[0].minor.yy600); } + case 324: /* cmd ::= INSERT INTO full_table_name query_or_subquery */ +{ pCxt->pRootNode = createInsertStmt(pCxt, yymsp[-1].minor.yy476, NULL, yymsp[0].minor.yy476); } break; - case 323: /* literal ::= NK_INTEGER */ -{ yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 325: /* literal ::= NK_INTEGER */ +{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 324: /* literal ::= NK_FLOAT */ -{ yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 326: /* literal ::= NK_FLOAT */ +{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 325: /* literal ::= NK_STRING */ -{ yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 327: /* literal ::= NK_STRING */ +{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 326: /* literal ::= NK_BOOL */ -{ yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 328: /* literal ::= NK_BOOL */ +{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 327: /* literal ::= TIMESTAMP NK_STRING */ -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0)); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + case 329: /* literal ::= TIMESTAMP NK_STRING */ +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0)); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 328: /* literal ::= duration_literal */ - case 338: /* signed_literal ::= signed */ yytestcase(yyruleno==338); - case 358: /* expr_or_subquery ::= expression */ yytestcase(yyruleno==358); - case 359: /* expression ::= literal */ yytestcase(yyruleno==359); - case 360: /* expression ::= pseudo_column */ yytestcase(yyruleno==360); - case 361: /* expression ::= column_reference */ yytestcase(yyruleno==361); - case 362: /* expression ::= function_expression */ yytestcase(yyruleno==362); - case 363: /* expression ::= case_when_expression */ yytestcase(yyruleno==363); - case 394: /* function_expression ::= literal_func */ yytestcase(yyruleno==394); - case 443: /* boolean_value_expression ::= boolean_primary */ yytestcase(yyruleno==443); - case 447: /* boolean_primary ::= predicate */ yytestcase(yyruleno==447); - case 449: /* common_expression ::= expr_or_subquery */ yytestcase(yyruleno==449); - case 450: /* common_expression ::= boolean_value_expression */ yytestcase(yyruleno==450); - case 453: /* table_reference_list ::= table_reference */ yytestcase(yyruleno==453); - case 455: /* table_reference ::= table_primary */ yytestcase(yyruleno==455); - case 456: /* table_reference ::= joined_table */ yytestcase(yyruleno==456); - case 460: /* table_primary ::= parenthesized_joined_table */ yytestcase(yyruleno==460); - case 516: /* query_simple ::= query_specification */ yytestcase(yyruleno==516); - case 517: /* query_simple ::= union_query_expression */ yytestcase(yyruleno==517); - case 520: /* query_simple_or_subquery ::= query_simple */ yytestcase(yyruleno==520); - case 522: /* query_or_subquery ::= query_expression */ yytestcase(yyruleno==522); -{ yylhsminor.yy600 = yymsp[0].minor.yy600; } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 330: /* literal ::= duration_literal */ + case 340: /* signed_literal ::= signed */ yytestcase(yyruleno==340); + case 360: /* expr_or_subquery ::= expression */ yytestcase(yyruleno==360); + case 361: /* expression ::= literal */ yytestcase(yyruleno==361); + case 362: /* expression ::= pseudo_column */ yytestcase(yyruleno==362); + case 363: /* expression ::= column_reference */ yytestcase(yyruleno==363); + case 364: /* expression ::= function_expression */ yytestcase(yyruleno==364); + case 365: /* expression ::= case_when_expression */ yytestcase(yyruleno==365); + case 396: /* function_expression ::= literal_func */ yytestcase(yyruleno==396); + case 445: /* boolean_value_expression ::= boolean_primary */ yytestcase(yyruleno==445); + case 449: /* boolean_primary ::= predicate */ yytestcase(yyruleno==449); + case 451: /* common_expression ::= expr_or_subquery */ yytestcase(yyruleno==451); + case 452: /* common_expression ::= boolean_value_expression */ yytestcase(yyruleno==452); + case 455: /* table_reference_list ::= table_reference */ yytestcase(yyruleno==455); + case 457: /* table_reference ::= table_primary */ yytestcase(yyruleno==457); + case 458: /* table_reference ::= joined_table */ yytestcase(yyruleno==458); + case 462: /* table_primary ::= parenthesized_joined_table */ yytestcase(yyruleno==462); + case 518: /* query_simple ::= query_specification */ yytestcase(yyruleno==518); + case 519: /* query_simple ::= union_query_expression */ yytestcase(yyruleno==519); + case 522: /* query_simple_or_subquery ::= query_simple */ yytestcase(yyruleno==522); + case 524: /* query_or_subquery ::= query_expression */ yytestcase(yyruleno==524); +{ yylhsminor.yy476 = yymsp[0].minor.yy476; } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 329: /* literal ::= NULL */ -{ yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 331: /* literal ::= NULL */ +{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 330: /* literal ::= NK_QUESTION */ -{ yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 332: /* literal ::= NK_QUESTION */ +{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 331: /* duration_literal ::= NK_VARIABLE */ -{ yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 333: /* duration_literal ::= NK_VARIABLE */ +{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 332: /* signed ::= NK_INTEGER */ -{ yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 334: /* signed ::= NK_INTEGER */ +{ yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 333: /* signed ::= NK_PLUS NK_INTEGER */ -{ yymsp[-1].minor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } + case 335: /* signed ::= NK_PLUS NK_INTEGER */ +{ yymsp[-1].minor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } break; - case 334: /* signed ::= NK_MINUS NK_INTEGER */ + case 336: /* signed ::= NK_MINUS NK_INTEGER */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; - yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &t); + yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &t); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 335: /* signed ::= NK_FLOAT */ -{ yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 337: /* signed ::= NK_FLOAT */ +{ yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 336: /* signed ::= NK_PLUS NK_FLOAT */ -{ yymsp[-1].minor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } + case 338: /* signed ::= NK_PLUS NK_FLOAT */ +{ yymsp[-1].minor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } break; - case 337: /* signed ::= NK_MINUS NK_FLOAT */ + case 339: /* signed ::= NK_MINUS NK_FLOAT */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; - yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &t); + yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &t); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 339: /* signed_literal ::= NK_STRING */ -{ yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 341: /* signed_literal ::= NK_STRING */ +{ yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 340: /* signed_literal ::= NK_BOOL */ -{ yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 342: /* signed_literal ::= NK_BOOL */ +{ yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 341: /* signed_literal ::= TIMESTAMP NK_STRING */ -{ yymsp[-1].minor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0); } + case 343: /* signed_literal ::= TIMESTAMP NK_STRING */ +{ yymsp[-1].minor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0); } break; - case 342: /* signed_literal ::= duration_literal */ - case 344: /* signed_literal ::= literal_func */ yytestcase(yyruleno==344); - case 414: /* star_func_para ::= expr_or_subquery */ yytestcase(yyruleno==414); - case 476: /* select_item ::= common_expression */ yytestcase(yyruleno==476); - case 486: /* partition_item ::= expr_or_subquery */ yytestcase(yyruleno==486); - case 521: /* query_simple_or_subquery ::= subquery */ yytestcase(yyruleno==521); - case 523: /* query_or_subquery ::= subquery */ yytestcase(yyruleno==523); - case 536: /* search_condition ::= common_expression */ yytestcase(yyruleno==536); -{ yylhsminor.yy600 = releaseRawExprNode(pCxt, yymsp[0].minor.yy600); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 344: /* signed_literal ::= duration_literal */ + case 346: /* signed_literal ::= literal_func */ yytestcase(yyruleno==346); + case 416: /* star_func_para ::= expr_or_subquery */ yytestcase(yyruleno==416); + case 478: /* select_item ::= common_expression */ yytestcase(yyruleno==478); + case 488: /* partition_item ::= expr_or_subquery */ yytestcase(yyruleno==488); + case 523: /* query_simple_or_subquery ::= subquery */ yytestcase(yyruleno==523); + case 525: /* query_or_subquery ::= subquery */ yytestcase(yyruleno==525); + case 538: /* search_condition ::= common_expression */ yytestcase(yyruleno==538); +{ yylhsminor.yy476 = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 343: /* signed_literal ::= NULL */ -{ yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 345: /* signed_literal ::= NULL */ +{ yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 345: /* signed_literal ::= NK_QUESTION */ -{ yylhsminor.yy600 = createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 347: /* signed_literal ::= NK_QUESTION */ +{ yylhsminor.yy476 = createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 364: /* expression ::= NK_LP expression NK_RP */ - case 448: /* boolean_primary ::= NK_LP boolean_value_expression NK_RP */ yytestcase(yyruleno==448); - case 535: /* subquery ::= NK_LP subquery NK_RP */ yytestcase(yyruleno==535); -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 366: /* expression ::= NK_LP expression NK_RP */ + case 450: /* boolean_primary ::= NK_LP boolean_value_expression NK_RP */ yytestcase(yyruleno==450); + case 537: /* subquery ::= NK_LP subquery NK_RP */ yytestcase(yyruleno==537); +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, releaseRawExprNode(pCxt, yymsp[-1].minor.yy476)); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 365: /* expression ::= NK_PLUS expr_or_subquery */ + case 367: /* expression ::= NK_PLUS expr_or_subquery */ { - SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); + SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, releaseRawExprNode(pCxt, yymsp[0].minor.yy476)); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 366: /* expression ::= NK_MINUS expr_or_subquery */ + case 368: /* expression ::= NK_MINUS expr_or_subquery */ { - SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, createOperatorNode(pCxt, OP_TYPE_MINUS, releaseRawExprNode(pCxt, yymsp[0].minor.yy600), NULL)); + SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, createOperatorNode(pCxt, OP_TYPE_MINUS, releaseRawExprNode(pCxt, yymsp[0].minor.yy476), NULL)); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 367: /* expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ + case 369: /* expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_ADD, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_ADD, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 368: /* expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ + case 370: /* expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_SUB, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_SUB, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 369: /* expression ::= expr_or_subquery NK_STAR expr_or_subquery */ + case 371: /* expression ::= expr_or_subquery NK_STAR expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_MULTI, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_MULTI, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 370: /* expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ + case 372: /* expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_DIV, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_DIV, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 371: /* expression ::= expr_or_subquery NK_REM expr_or_subquery */ + case 373: /* expression ::= expr_or_subquery NK_REM expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_REM, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_REM, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 372: /* expression ::= column_reference NK_ARROW NK_STRING */ + case 374: /* expression ::= column_reference NK_ARROW NK_STRING */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_JSON_GET_VALUE, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_JSON_GET_VALUE, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 373: /* expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ + case 375: /* expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_BIT_AND, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_BIT_AND, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 374: /* expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ + case 376: /* expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_BIT_OR, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_BIT_OR, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 377: /* column_reference ::= column_name */ -{ yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy77, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy77)); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 379: /* column_reference ::= column_name */ +{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy701, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy701)); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 378: /* column_reference ::= table_name NK_DOT column_name */ -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy77, &yymsp[0].minor.yy77, createColumnNode(pCxt, &yymsp[-2].minor.yy77, &yymsp[0].minor.yy77)); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 380: /* column_reference ::= table_name NK_DOT column_name */ +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701, createColumnNode(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701)); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 379: /* pseudo_column ::= ROWTS */ - case 380: /* pseudo_column ::= TBNAME */ yytestcase(yyruleno==380); - case 382: /* pseudo_column ::= QSTART */ yytestcase(yyruleno==382); - case 383: /* pseudo_column ::= QEND */ yytestcase(yyruleno==383); - case 384: /* pseudo_column ::= QDURATION */ yytestcase(yyruleno==384); - case 385: /* pseudo_column ::= WSTART */ yytestcase(yyruleno==385); - case 386: /* pseudo_column ::= WEND */ yytestcase(yyruleno==386); - case 387: /* pseudo_column ::= WDURATION */ yytestcase(yyruleno==387); - case 388: /* pseudo_column ::= IROWTS */ yytestcase(yyruleno==388); - case 389: /* pseudo_column ::= ISFILLED */ yytestcase(yyruleno==389); - case 390: /* pseudo_column ::= QTAGS */ yytestcase(yyruleno==390); - case 396: /* literal_func ::= NOW */ yytestcase(yyruleno==396); -{ yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL)); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 381: /* pseudo_column ::= ROWTS */ + case 382: /* pseudo_column ::= TBNAME */ yytestcase(yyruleno==382); + case 384: /* pseudo_column ::= QSTART */ yytestcase(yyruleno==384); + case 385: /* pseudo_column ::= QEND */ yytestcase(yyruleno==385); + case 386: /* pseudo_column ::= QDURATION */ yytestcase(yyruleno==386); + case 387: /* pseudo_column ::= WSTART */ yytestcase(yyruleno==387); + case 388: /* pseudo_column ::= WEND */ yytestcase(yyruleno==388); + case 389: /* pseudo_column ::= WDURATION */ yytestcase(yyruleno==389); + case 390: /* pseudo_column ::= IROWTS */ yytestcase(yyruleno==390); + case 391: /* pseudo_column ::= ISFILLED */ yytestcase(yyruleno==391); + case 392: /* pseudo_column ::= QTAGS */ yytestcase(yyruleno==392); + case 398: /* literal_func ::= NOW */ yytestcase(yyruleno==398); +{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL)); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 381: /* pseudo_column ::= table_name NK_DOT TBNAME */ -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy77, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[-2].minor.yy77)))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 383: /* pseudo_column ::= table_name NK_DOT TBNAME */ +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[-2].minor.yy701)))); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 391: /* function_expression ::= function_name NK_LP expression_list NK_RP */ - case 392: /* function_expression ::= star_func NK_LP star_func_para_list NK_RP */ yytestcase(yyruleno==392); -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy77, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-3].minor.yy77, yymsp[-1].minor.yy601)); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + case 393: /* function_expression ::= function_name NK_LP expression_list NK_RP */ + case 394: /* function_expression ::= star_func NK_LP star_func_para_list NK_RP */ yytestcase(yyruleno==394); +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy701, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-3].minor.yy701, yymsp[-1].minor.yy376)); } + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; - case 393: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, createCastFunctionNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), yymsp[-1].minor.yy888)); } - yymsp[-5].minor.yy600 = yylhsminor.yy600; + case 395: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, createCastFunctionNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), yymsp[-1].minor.yy532)); } + yymsp[-5].minor.yy476 = yylhsminor.yy476; break; - case 395: /* literal_func ::= noarg_func NK_LP NK_RP */ -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy77, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-2].minor.yy77, NULL)); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 397: /* literal_func ::= noarg_func NK_LP NK_RP */ +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-2].minor.yy701, NULL)); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 410: /* star_func_para_list ::= NK_STAR */ -{ yylhsminor.yy601 = createNodeList(pCxt, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy601 = yylhsminor.yy601; + case 412: /* star_func_para_list ::= NK_STAR */ +{ yylhsminor.yy376 = createNodeList(pCxt, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy376 = yylhsminor.yy376; break; - case 415: /* star_func_para ::= table_name NK_DOT NK_STAR */ - case 479: /* select_item ::= table_name NK_DOT NK_STAR */ yytestcase(yyruleno==479); -{ yylhsminor.yy600 = createColumnNode(pCxt, &yymsp[-2].minor.yy77, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 417: /* star_func_para ::= table_name NK_DOT NK_STAR */ + case 481: /* select_item ::= table_name NK_DOT NK_STAR */ yytestcase(yyruleno==481); +{ yylhsminor.yy476 = createColumnNode(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 416: /* case_when_expression ::= CASE when_then_list case_when_else_opt END */ -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, NULL, yymsp[-2].minor.yy601, yymsp[-1].minor.yy600)); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + case 418: /* case_when_expression ::= CASE when_then_list case_when_else_opt END */ +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, NULL, yymsp[-2].minor.yy376, yymsp[-1].minor.yy476)); } + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; - case 417: /* case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), yymsp[-2].minor.yy601, yymsp[-1].minor.yy600)); } - yymsp[-4].minor.yy600 = yylhsminor.yy600; + case 419: /* case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), yymsp[-2].minor.yy376, yymsp[-1].minor.yy476)); } + yymsp[-4].minor.yy476 = yylhsminor.yy476; break; - case 420: /* when_then_expr ::= WHEN common_expression THEN common_expression */ -{ yymsp[-3].minor.yy600 = createWhenThenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } + case 422: /* when_then_expr ::= WHEN common_expression THEN common_expression */ +{ yymsp[-3].minor.yy476 = createWhenThenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476)); } break; - case 422: /* case_when_else_opt ::= ELSE common_expression */ -{ yymsp[-1].minor.yy600 = releaseRawExprNode(pCxt, yymsp[0].minor.yy600); } + case 424: /* case_when_else_opt ::= ELSE common_expression */ +{ yymsp[-1].minor.yy476 = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); } break; - case 423: /* predicate ::= expr_or_subquery compare_op expr_or_subquery */ - case 428: /* predicate ::= expr_or_subquery in_op in_predicate_value */ yytestcase(yyruleno==428); + case 425: /* predicate ::= expr_or_subquery compare_op expr_or_subquery */ + case 430: /* predicate ::= expr_or_subquery in_op in_predicate_value */ yytestcase(yyruleno==430); { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, yymsp[-1].minor.yy666, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, yymsp[-1].minor.yy128, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 424: /* predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ + case 426: /* predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-4].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createBetweenAnd(pCxt, releaseRawExprNode(pCxt, yymsp[-4].minor.yy600), releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-4].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createBetweenAnd(pCxt, releaseRawExprNode(pCxt, yymsp[-4].minor.yy476), releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-4].minor.yy600 = yylhsminor.yy600; + yymsp[-4].minor.yy476 = yylhsminor.yy476; break; - case 425: /* predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ + case 427: /* predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-5].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createNotBetweenAnd(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy600), releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-5].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createNotBetweenAnd(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy476), releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-5].minor.yy600 = yylhsminor.yy600; + yymsp[-5].minor.yy476 = yylhsminor.yy476; break; - case 426: /* predicate ::= expr_or_subquery IS NULL */ + case 428: /* predicate ::= expr_or_subquery IS NULL */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NULL, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), NULL)); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NULL, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), NULL)); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 427: /* predicate ::= expr_or_subquery IS NOT NULL */ + case 429: /* predicate ::= expr_or_subquery IS NOT NULL */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-3].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NOT_NULL, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), NULL)); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-3].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NOT_NULL, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), NULL)); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; - case 429: /* compare_op ::= NK_LT */ -{ yymsp[0].minor.yy666 = OP_TYPE_LOWER_THAN; } + case 431: /* compare_op ::= NK_LT */ +{ yymsp[0].minor.yy128 = OP_TYPE_LOWER_THAN; } break; - case 430: /* compare_op ::= NK_GT */ -{ yymsp[0].minor.yy666 = OP_TYPE_GREATER_THAN; } + case 432: /* compare_op ::= NK_GT */ +{ yymsp[0].minor.yy128 = OP_TYPE_GREATER_THAN; } break; - case 431: /* compare_op ::= NK_LE */ -{ yymsp[0].minor.yy666 = OP_TYPE_LOWER_EQUAL; } + case 433: /* compare_op ::= NK_LE */ +{ yymsp[0].minor.yy128 = OP_TYPE_LOWER_EQUAL; } break; - case 432: /* compare_op ::= NK_GE */ -{ yymsp[0].minor.yy666 = OP_TYPE_GREATER_EQUAL; } + case 434: /* compare_op ::= NK_GE */ +{ yymsp[0].minor.yy128 = OP_TYPE_GREATER_EQUAL; } break; - case 433: /* compare_op ::= NK_NE */ -{ yymsp[0].minor.yy666 = OP_TYPE_NOT_EQUAL; } + case 435: /* compare_op ::= NK_NE */ +{ yymsp[0].minor.yy128 = OP_TYPE_NOT_EQUAL; } break; - case 434: /* compare_op ::= NK_EQ */ -{ yymsp[0].minor.yy666 = OP_TYPE_EQUAL; } + case 436: /* compare_op ::= NK_EQ */ +{ yymsp[0].minor.yy128 = OP_TYPE_EQUAL; } break; - case 435: /* compare_op ::= LIKE */ -{ yymsp[0].minor.yy666 = OP_TYPE_LIKE; } + case 437: /* compare_op ::= LIKE */ +{ yymsp[0].minor.yy128 = OP_TYPE_LIKE; } break; - case 436: /* compare_op ::= NOT LIKE */ -{ yymsp[-1].minor.yy666 = OP_TYPE_NOT_LIKE; } + case 438: /* compare_op ::= NOT LIKE */ +{ yymsp[-1].minor.yy128 = OP_TYPE_NOT_LIKE; } break; - case 437: /* compare_op ::= MATCH */ -{ yymsp[0].minor.yy666 = OP_TYPE_MATCH; } + case 439: /* compare_op ::= MATCH */ +{ yymsp[0].minor.yy128 = OP_TYPE_MATCH; } break; - case 438: /* compare_op ::= NMATCH */ -{ yymsp[0].minor.yy666 = OP_TYPE_NMATCH; } + case 440: /* compare_op ::= NMATCH */ +{ yymsp[0].minor.yy128 = OP_TYPE_NMATCH; } break; - case 439: /* compare_op ::= CONTAINS */ -{ yymsp[0].minor.yy666 = OP_TYPE_JSON_CONTAINS; } + case 441: /* compare_op ::= CONTAINS */ +{ yymsp[0].minor.yy128 = OP_TYPE_JSON_CONTAINS; } break; - case 440: /* in_op ::= IN */ -{ yymsp[0].minor.yy666 = OP_TYPE_IN; } + case 442: /* in_op ::= IN */ +{ yymsp[0].minor.yy128 = OP_TYPE_IN; } break; - case 441: /* in_op ::= NOT IN */ -{ yymsp[-1].minor.yy666 = OP_TYPE_NOT_IN; } + case 443: /* in_op ::= NOT IN */ +{ yymsp[-1].minor.yy128 = OP_TYPE_NOT_IN; } break; - case 442: /* in_predicate_value ::= NK_LP literal_list NK_RP */ -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, createNodeListNode(pCxt, yymsp[-1].minor.yy601)); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 444: /* in_predicate_value ::= NK_LP literal_list NK_RP */ +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, createNodeListNode(pCxt, yymsp[-1].minor.yy376)); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 444: /* boolean_value_expression ::= NOT boolean_primary */ + case 446: /* boolean_value_expression ::= NOT boolean_primary */ { - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_NOT, releaseRawExprNode(pCxt, yymsp[0].minor.yy600), NULL)); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_NOT, releaseRawExprNode(pCxt, yymsp[0].minor.yy476), NULL)); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 445: /* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ + case 447: /* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_OR, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_OR, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 446: /* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ + case 448: /* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); - yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_AND, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); + yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_AND, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 452: /* from_clause_opt ::= FROM table_reference_list */ - case 481: /* where_clause_opt ::= WHERE search_condition */ yytestcase(yyruleno==481); - case 510: /* having_clause_opt ::= HAVING search_condition */ yytestcase(yyruleno==510); -{ yymsp[-1].minor.yy600 = yymsp[0].minor.yy600; } + case 454: /* from_clause_opt ::= FROM table_reference_list */ + case 483: /* where_clause_opt ::= WHERE search_condition */ yytestcase(yyruleno==483); + case 512: /* having_clause_opt ::= HAVING search_condition */ yytestcase(yyruleno==512); +{ yymsp[-1].minor.yy476 = yymsp[0].minor.yy476; } break; - case 454: /* table_reference_list ::= table_reference_list NK_COMMA table_reference */ -{ yylhsminor.yy600 = createJoinTableNode(pCxt, JOIN_TYPE_INNER, yymsp[-2].minor.yy600, yymsp[0].minor.yy600, NULL); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 456: /* table_reference_list ::= table_reference_list NK_COMMA table_reference */ +{ yylhsminor.yy476 = createJoinTableNode(pCxt, JOIN_TYPE_INNER, yymsp[-2].minor.yy476, yymsp[0].minor.yy476, NULL); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 457: /* table_primary ::= table_name alias_opt */ -{ yylhsminor.yy600 = createRealTableNode(pCxt, NULL, &yymsp[-1].minor.yy77, &yymsp[0].minor.yy77); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + case 459: /* table_primary ::= table_name alias_opt */ +{ yylhsminor.yy476 = createRealTableNode(pCxt, NULL, &yymsp[-1].minor.yy701, &yymsp[0].minor.yy701); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 458: /* table_primary ::= db_name NK_DOT table_name alias_opt */ -{ yylhsminor.yy600 = createRealTableNode(pCxt, &yymsp[-3].minor.yy77, &yymsp[-1].minor.yy77, &yymsp[0].minor.yy77); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + case 460: /* table_primary ::= db_name NK_DOT table_name alias_opt */ +{ yylhsminor.yy476 = createRealTableNode(pCxt, &yymsp[-3].minor.yy701, &yymsp[-1].minor.yy701, &yymsp[0].minor.yy701); } + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; - case 459: /* table_primary ::= subquery alias_opt */ -{ yylhsminor.yy600 = createTempTableNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600), &yymsp[0].minor.yy77); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + case 461: /* table_primary ::= subquery alias_opt */ +{ yylhsminor.yy476 = createTempTableNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy476), &yymsp[0].minor.yy701); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 461: /* alias_opt ::= */ -{ yymsp[1].minor.yy77 = nil_token; } + case 463: /* alias_opt ::= */ +{ yymsp[1].minor.yy701 = nil_token; } break; - case 463: /* alias_opt ::= AS table_alias */ -{ yymsp[-1].minor.yy77 = yymsp[0].minor.yy77; } + case 465: /* alias_opt ::= AS table_alias */ +{ yymsp[-1].minor.yy701 = yymsp[0].minor.yy701; } break; - case 464: /* parenthesized_joined_table ::= NK_LP joined_table NK_RP */ - case 465: /* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ yytestcase(yyruleno==465); -{ yymsp[-2].minor.yy600 = yymsp[-1].minor.yy600; } + case 466: /* parenthesized_joined_table ::= NK_LP joined_table NK_RP */ + case 467: /* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ yytestcase(yyruleno==467); +{ yymsp[-2].minor.yy476 = yymsp[-1].minor.yy476; } break; - case 466: /* joined_table ::= table_reference join_type JOIN table_reference ON search_condition */ -{ yylhsminor.yy600 = createJoinTableNode(pCxt, yymsp[-4].minor.yy560, yymsp[-5].minor.yy600, yymsp[-2].minor.yy600, yymsp[0].minor.yy600); } - yymsp[-5].minor.yy600 = yylhsminor.yy600; + case 468: /* joined_table ::= table_reference join_type JOIN table_reference ON search_condition */ +{ yylhsminor.yy476 = createJoinTableNode(pCxt, yymsp[-4].minor.yy288, yymsp[-5].minor.yy476, yymsp[-2].minor.yy476, yymsp[0].minor.yy476); } + yymsp[-5].minor.yy476 = yylhsminor.yy476; break; - case 467: /* join_type ::= */ -{ yymsp[1].minor.yy560 = JOIN_TYPE_INNER; } + case 469: /* join_type ::= */ +{ yymsp[1].minor.yy288 = JOIN_TYPE_INNER; } break; - case 468: /* join_type ::= INNER */ -{ yymsp[0].minor.yy560 = JOIN_TYPE_INNER; } + case 470: /* join_type ::= INNER */ +{ yymsp[0].minor.yy288 = JOIN_TYPE_INNER; } break; - case 469: /* query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ + case 471: /* query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ { - yymsp[-11].minor.yy600 = createSelectStmt(pCxt, yymsp[-10].minor.yy841, yymsp[-9].minor.yy601, yymsp[-8].minor.yy600); - yymsp[-11].minor.yy600 = addWhereClause(pCxt, yymsp[-11].minor.yy600, yymsp[-7].minor.yy600); - yymsp[-11].minor.yy600 = addPartitionByClause(pCxt, yymsp[-11].minor.yy600, yymsp[-6].minor.yy601); - yymsp[-11].minor.yy600 = addWindowClauseClause(pCxt, yymsp[-11].minor.yy600, yymsp[-2].minor.yy600); - yymsp[-11].minor.yy600 = addGroupByClause(pCxt, yymsp[-11].minor.yy600, yymsp[-1].minor.yy601); - yymsp[-11].minor.yy600 = addHavingClause(pCxt, yymsp[-11].minor.yy600, yymsp[0].minor.yy600); - yymsp[-11].minor.yy600 = addRangeClause(pCxt, yymsp[-11].minor.yy600, yymsp[-5].minor.yy600); - yymsp[-11].minor.yy600 = addEveryClause(pCxt, yymsp[-11].minor.yy600, yymsp[-4].minor.yy600); - yymsp[-11].minor.yy600 = addFillClause(pCxt, yymsp[-11].minor.yy600, yymsp[-3].minor.yy600); + yymsp[-11].minor.yy476 = createSelectStmt(pCxt, yymsp[-10].minor.yy845, yymsp[-9].minor.yy376, yymsp[-8].minor.yy476); + yymsp[-11].minor.yy476 = addWhereClause(pCxt, yymsp[-11].minor.yy476, yymsp[-7].minor.yy476); + yymsp[-11].minor.yy476 = addPartitionByClause(pCxt, yymsp[-11].minor.yy476, yymsp[-6].minor.yy376); + yymsp[-11].minor.yy476 = addWindowClauseClause(pCxt, yymsp[-11].minor.yy476, yymsp[-2].minor.yy476); + yymsp[-11].minor.yy476 = addGroupByClause(pCxt, yymsp[-11].minor.yy476, yymsp[-1].minor.yy376); + yymsp[-11].minor.yy476 = addHavingClause(pCxt, yymsp[-11].minor.yy476, yymsp[0].minor.yy476); + yymsp[-11].minor.yy476 = addRangeClause(pCxt, yymsp[-11].minor.yy476, yymsp[-5].minor.yy476); + yymsp[-11].minor.yy476 = addEveryClause(pCxt, yymsp[-11].minor.yy476, yymsp[-4].minor.yy476); + yymsp[-11].minor.yy476 = addFillClause(pCxt, yymsp[-11].minor.yy476, yymsp[-3].minor.yy476); } break; - case 472: /* set_quantifier_opt ::= ALL */ -{ yymsp[0].minor.yy841 = false; } + case 474: /* set_quantifier_opt ::= ALL */ +{ yymsp[0].minor.yy845 = false; } break; - case 475: /* select_item ::= NK_STAR */ -{ yylhsminor.yy600 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy600 = yylhsminor.yy600; + case 477: /* select_item ::= NK_STAR */ +{ yylhsminor.yy476 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy476 = yylhsminor.yy476; break; - case 477: /* select_item ::= common_expression column_alias */ - case 487: /* partition_item ::= expr_or_subquery column_alias */ yytestcase(yyruleno==487); -{ yylhsminor.yy600 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600), &yymsp[0].minor.yy77); } - yymsp[-1].minor.yy600 = yylhsminor.yy600; + case 479: /* select_item ::= common_expression column_alias */ + case 489: /* partition_item ::= expr_or_subquery column_alias */ yytestcase(yyruleno==489); +{ yylhsminor.yy476 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy476), &yymsp[0].minor.yy701); } + yymsp[-1].minor.yy476 = yylhsminor.yy476; break; - case 478: /* select_item ::= common_expression AS column_alias */ - case 488: /* partition_item ::= expr_or_subquery AS column_alias */ yytestcase(yyruleno==488); -{ yylhsminor.yy600 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), &yymsp[0].minor.yy77); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 480: /* select_item ::= common_expression AS column_alias */ + case 490: /* partition_item ::= expr_or_subquery AS column_alias */ yytestcase(yyruleno==490); +{ yylhsminor.yy476 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), &yymsp[0].minor.yy701); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 483: /* partition_by_clause_opt ::= PARTITION BY partition_list */ - case 506: /* group_by_clause_opt ::= GROUP BY group_by_list */ yytestcase(yyruleno==506); - case 525: /* order_by_clause_opt ::= ORDER BY sort_specification_list */ yytestcase(yyruleno==525); -{ yymsp[-2].minor.yy601 = yymsp[0].minor.yy601; } + case 485: /* partition_by_clause_opt ::= PARTITION BY partition_list */ + case 508: /* group_by_clause_opt ::= GROUP BY group_by_list */ yytestcase(yyruleno==508); + case 527: /* order_by_clause_opt ::= ORDER BY sort_specification_list */ yytestcase(yyruleno==527); +{ yymsp[-2].minor.yy376 = yymsp[0].minor.yy376; } break; - case 490: /* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */ -{ yymsp[-5].minor.yy600 = createSessionWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } + case 492: /* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */ +{ yymsp[-5].minor.yy476 = createSessionWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), releaseRawExprNode(pCxt, yymsp[-1].minor.yy476)); } break; - case 491: /* twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ -{ yymsp[-3].minor.yy600 = createStateWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } + case 493: /* twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ +{ yymsp[-3].minor.yy476 = createStateWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy476)); } break; - case 492: /* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */ -{ yymsp[-5].minor.yy600 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), NULL, yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } + case 494: /* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */ +{ yymsp[-5].minor.yy476 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), NULL, yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } break; - case 493: /* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */ -{ yymsp[-7].minor.yy600 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy600), releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } + case 495: /* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */ +{ yymsp[-7].minor.yy476 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy476), releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } break; - case 494: /* twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ -{ yymsp[-6].minor.yy600 = createEventWindowNode(pCxt, yymsp[-3].minor.yy600, yymsp[0].minor.yy600); } + case 496: /* twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ +{ yymsp[-6].minor.yy476 = createEventWindowNode(pCxt, yymsp[-3].minor.yy476, yymsp[0].minor.yy476); } break; - case 498: /* fill_opt ::= FILL NK_LP fill_mode NK_RP */ -{ yymsp[-3].minor.yy600 = createFillNode(pCxt, yymsp[-1].minor.yy798, NULL); } + case 500: /* fill_opt ::= FILL NK_LP fill_mode NK_RP */ +{ yymsp[-3].minor.yy476 = createFillNode(pCxt, yymsp[-1].minor.yy690, NULL); } break; - case 499: /* fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */ -{ yymsp[-5].minor.yy600 = createFillNode(pCxt, FILL_MODE_VALUE, createNodeListNode(pCxt, yymsp[-1].minor.yy601)); } + case 501: /* fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */ +{ yymsp[-5].minor.yy476 = createFillNode(pCxt, FILL_MODE_VALUE, createNodeListNode(pCxt, yymsp[-1].minor.yy376)); } break; - case 500: /* fill_mode ::= NONE */ -{ yymsp[0].minor.yy798 = FILL_MODE_NONE; } + case 502: /* fill_mode ::= NONE */ +{ yymsp[0].minor.yy690 = FILL_MODE_NONE; } break; - case 501: /* fill_mode ::= PREV */ -{ yymsp[0].minor.yy798 = FILL_MODE_PREV; } + case 503: /* fill_mode ::= PREV */ +{ yymsp[0].minor.yy690 = FILL_MODE_PREV; } break; - case 502: /* fill_mode ::= NULL */ -{ yymsp[0].minor.yy798 = FILL_MODE_NULL; } + case 504: /* fill_mode ::= NULL */ +{ yymsp[0].minor.yy690 = FILL_MODE_NULL; } break; - case 503: /* fill_mode ::= LINEAR */ -{ yymsp[0].minor.yy798 = FILL_MODE_LINEAR; } + case 505: /* fill_mode ::= LINEAR */ +{ yymsp[0].minor.yy690 = FILL_MODE_LINEAR; } break; - case 504: /* fill_mode ::= NEXT */ -{ yymsp[0].minor.yy798 = FILL_MODE_NEXT; } + case 506: /* fill_mode ::= NEXT */ +{ yymsp[0].minor.yy690 = FILL_MODE_NEXT; } break; - case 507: /* group_by_list ::= expr_or_subquery */ -{ yylhsminor.yy601 = createNodeList(pCxt, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); } - yymsp[0].minor.yy601 = yylhsminor.yy601; + case 509: /* group_by_list ::= expr_or_subquery */ +{ yylhsminor.yy376 = createNodeList(pCxt, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } + yymsp[0].minor.yy376 = yylhsminor.yy376; break; - case 508: /* group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ -{ yylhsminor.yy601 = addNodeToList(pCxt, yymsp[-2].minor.yy601, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); } - yymsp[-2].minor.yy601 = yylhsminor.yy601; + case 510: /* group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ +{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-2].minor.yy376, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } + yymsp[-2].minor.yy376 = yylhsminor.yy376; break; - case 512: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ -{ yymsp[-5].minor.yy600 = createInterpTimeRange(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } + case 514: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ +{ yymsp[-5].minor.yy476 = createInterpTimeRange(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), releaseRawExprNode(pCxt, yymsp[-1].minor.yy476)); } break; - case 515: /* query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ + case 517: /* query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ { - yylhsminor.yy600 = addOrderByClause(pCxt, yymsp[-3].minor.yy600, yymsp[-2].minor.yy601); - yylhsminor.yy600 = addSlimitClause(pCxt, yylhsminor.yy600, yymsp[-1].minor.yy600); - yylhsminor.yy600 = addLimitClause(pCxt, yylhsminor.yy600, yymsp[0].minor.yy600); + yylhsminor.yy476 = addOrderByClause(pCxt, yymsp[-3].minor.yy476, yymsp[-2].minor.yy376); + yylhsminor.yy476 = addSlimitClause(pCxt, yylhsminor.yy476, yymsp[-1].minor.yy476); + yylhsminor.yy476 = addLimitClause(pCxt, yylhsminor.yy476, yymsp[0].minor.yy476); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; - case 518: /* union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ -{ yylhsminor.yy600 = createSetOperator(pCxt, SET_OP_TYPE_UNION_ALL, yymsp[-3].minor.yy600, yymsp[0].minor.yy600); } - yymsp[-3].minor.yy600 = yylhsminor.yy600; + case 520: /* union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ +{ yylhsminor.yy476 = createSetOperator(pCxt, SET_OP_TYPE_UNION_ALL, yymsp[-3].minor.yy476, yymsp[0].minor.yy476); } + yymsp[-3].minor.yy476 = yylhsminor.yy476; break; - case 519: /* union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ -{ yylhsminor.yy600 = createSetOperator(pCxt, SET_OP_TYPE_UNION, yymsp[-2].minor.yy600, yymsp[0].minor.yy600); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 521: /* union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ +{ yylhsminor.yy476 = createSetOperator(pCxt, SET_OP_TYPE_UNION, yymsp[-2].minor.yy476, yymsp[0].minor.yy476); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 527: /* slimit_clause_opt ::= SLIMIT NK_INTEGER */ - case 531: /* limit_clause_opt ::= LIMIT NK_INTEGER */ yytestcase(yyruleno==531); -{ yymsp[-1].minor.yy600 = createLimitNode(pCxt, &yymsp[0].minor.yy0, NULL); } + case 529: /* slimit_clause_opt ::= SLIMIT NK_INTEGER */ + case 533: /* limit_clause_opt ::= LIMIT NK_INTEGER */ yytestcase(yyruleno==533); +{ yymsp[-1].minor.yy476 = createLimitNode(pCxt, &yymsp[0].minor.yy0, NULL); } break; - case 528: /* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ - case 532: /* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ yytestcase(yyruleno==532); -{ yymsp[-3].minor.yy600 = createLimitNode(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } + case 530: /* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ + case 534: /* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ yytestcase(yyruleno==534); +{ yymsp[-3].minor.yy476 = createLimitNode(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } break; - case 529: /* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - case 533: /* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ yytestcase(yyruleno==533); -{ yymsp[-3].minor.yy600 = createLimitNode(pCxt, &yymsp[0].minor.yy0, &yymsp[-2].minor.yy0); } + case 531: /* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + case 535: /* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ yytestcase(yyruleno==535); +{ yymsp[-3].minor.yy476 = createLimitNode(pCxt, &yymsp[0].minor.yy0, &yymsp[-2].minor.yy0); } break; - case 534: /* subquery ::= NK_LP query_expression NK_RP */ -{ yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-1].minor.yy600); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 536: /* subquery ::= NK_LP query_expression NK_RP */ +{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-1].minor.yy476); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 539: /* sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ -{ yylhsminor.yy600 = createOrderByExprNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), yymsp[-1].minor.yy32, yymsp[0].minor.yy385); } - yymsp[-2].minor.yy600 = yylhsminor.yy600; + case 541: /* sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ +{ yylhsminor.yy476 = createOrderByExprNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), yymsp[-1].minor.yy554, yymsp[0].minor.yy697); } + yymsp[-2].minor.yy476 = yylhsminor.yy476; break; - case 540: /* ordering_specification_opt ::= */ -{ yymsp[1].minor.yy32 = ORDER_ASC; } + case 542: /* ordering_specification_opt ::= */ +{ yymsp[1].minor.yy554 = ORDER_ASC; } break; - case 541: /* ordering_specification_opt ::= ASC */ -{ yymsp[0].minor.yy32 = ORDER_ASC; } + case 543: /* ordering_specification_opt ::= ASC */ +{ yymsp[0].minor.yy554 = ORDER_ASC; } break; - case 542: /* ordering_specification_opt ::= DESC */ -{ yymsp[0].minor.yy32 = ORDER_DESC; } + case 544: /* ordering_specification_opt ::= DESC */ +{ yymsp[0].minor.yy554 = ORDER_DESC; } break; - case 543: /* null_ordering_opt ::= */ -{ yymsp[1].minor.yy385 = NULL_ORDER_DEFAULT; } + case 545: /* null_ordering_opt ::= */ +{ yymsp[1].minor.yy697 = NULL_ORDER_DEFAULT; } break; - case 544: /* null_ordering_opt ::= NULLS FIRST */ -{ yymsp[-1].minor.yy385 = NULL_ORDER_FIRST; } + case 546: /* null_ordering_opt ::= NULLS FIRST */ +{ yymsp[-1].minor.yy697 = NULL_ORDER_FIRST; } break; - case 545: /* null_ordering_opt ::= NULLS LAST */ -{ yymsp[-1].minor.yy385 = NULL_ORDER_LAST; } + case 547: /* null_ordering_opt ::= NULLS LAST */ +{ yymsp[-1].minor.yy697 = NULL_ORDER_LAST; } break; default: break; /********** End reduce actions ************************************************/ }; - assert( yyruleno \\G;", 0, 0, NULL}, {"show connections;", 0, 0, NULL}, {"show cluster;", 0, 0, NULL}, + {"show cluster alive;", 0, 0, NULL}, {"show databases;", 0, 0, NULL}, {"show dnodes;", 0, 0, NULL}, {"show dnode variables;", 0, 0, NULL}, @@ -425,6 +426,7 @@ void showHelp() { show create table ;\n\ show connections;\n\ show cluster;\n\ + show cluster alive;\n\ show databases;\n\ show dnodes;\n\ show dnode variables;\n\ From e6627f6955c5056a80342432d591d26fb1982a40 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Fri, 30 Dec 2022 10:02:15 +0800 Subject: [PATCH 03/34] fix:json parse error in the end --- source/client/src/clientSml.c | 10 ++++++---- source/client/src/clientSmlJson.c | 17 ++++++++++++----- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/source/client/src/clientSml.c b/source/client/src/clientSml.c index ba154c95bd..689645abc6 100644 --- a/source/client/src/clientSml.c +++ b/source/client/src/clientSml.c @@ -1267,11 +1267,13 @@ int32_t smlClearForRerun(SSmlHandle *info) { pList = pList->next; } - if (unlikely(info->lines != NULL)) { - uError("SML:0x%" PRIx64 " info->lines != NULL", info->id); - return TSDB_CODE_SML_INVALID_DATA; + if (!info->dataFormat){ + if (unlikely(info->lines != NULL)) { + uError("SML:0x%" PRIx64 " info->lines != NULL", info->id); + return TSDB_CODE_SML_INVALID_DATA; + } + info->lines = (SSmlLineInfo *)taosMemoryCalloc(info->lineNum, sizeof(SSmlLineInfo)); } - info->lines = (SSmlLineInfo *)taosMemoryCalloc(info->lineNum, sizeof(SSmlLineInfo)); memset(&info->preLine, 0, sizeof(SSmlLineInfo)); info->currSTableMeta = NULL; diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index 5d97444622..ef8fe57b8b 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -406,7 +406,7 @@ static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo * }else{ smlJsonParseObj(start, elements, info->offset); } - if(**start == '\0') return TSDB_CODE_SUCCESS; + if(**start == '\0' && elements->measure == NULL) return TSDB_CODE_SUCCESS; SSmlKv kv = {.key = VALUE, .keyLen = VALUE_LEN, .value = elements->cols, .length = (size_t)elements->colsLen}; if (smlParseValue(&kv, &info->msgBuf) != TSDB_CODE_SUCCESS) { @@ -804,7 +804,7 @@ static int32_t smlParseTagsFromJSONExt(SSmlHandle *info, cJSON *tags, SSmlLineIn cnt++; } - SSmlTableInfo *tinfo = (SSmlTableInfo *)nodeListGet(info->childTables, elements->tags, POINTER_BYTES, is_same_child_table_telnet); + SSmlTableInfo *tinfo = (SSmlTableInfo *)nodeListGet(info->childTables, elements, POINTER_BYTES, is_same_child_table_telnet); if (unlikely(tinfo == NULL)) { tinfo = smlBuildTableInfo(1, elements->measure, elements->measureLen); if (unlikely(!tinfo)) { @@ -822,7 +822,10 @@ static int32_t smlParseTagsFromJSONExt(SSmlHandle *info, cJSON *tags, SSmlLineIn } } - nodeListSet(&info->childTables, tags, POINTER_BYTES, tinfo, is_same_child_table_telnet); + SSmlLineInfo *key = (SSmlLineInfo *)taosMemoryMalloc(sizeof(SSmlLineInfo)); + *key = *elements; + tinfo->key = key; + nodeListSet(&info->childTables, key, POINTER_BYTES, tinfo, is_same_child_table_telnet); } if (info->dataFormat) info->currTableDataCtx = tinfo->tableDataCtx; @@ -1054,6 +1057,9 @@ static int32_t smlParseJSONExt(SSmlHandle *info, char *payload) { info->lines = NULL; } ret = smlClearForRerun(info); + if(ret != TSDB_CODE_SUCCESS){ + return ret; + } cJSON *head = (payloadNum == 1 && cJSON_IsObject(info->root)) ? info->root : info->root->child; int cnt = 0; @@ -1103,6 +1109,7 @@ int32_t smlParseJSON(SSmlHandle *info, char *payload) { void* tmp = taosMemoryRealloc(info->lines, payloadNum * sizeof(SSmlLineInfo)); if(tmp != NULL){ info->lines = (SSmlLineInfo*)tmp; + memset(info->lines + cnt, 0, (payloadNum - cnt) * sizeof(SSmlLineInfo)); } } ret = smlParseJSONString(info, &dataPointStart, info->lines + cnt); @@ -1112,8 +1119,6 @@ int32_t smlParseJSON(SSmlHandle *info, char *payload) { return smlParseJSONExt(info, payload); } - if(*dataPointStart == '\0') break; - if(unlikely(info->reRun)){ cnt = 0; dataPointStart = payload; @@ -1124,6 +1129,8 @@ int32_t smlParseJSON(SSmlHandle *info, char *payload) { } continue; } + + if(*dataPointStart == '\0') break; cnt++; } info->lineNum = cnt; From 65da133ae5b9afb0c7014250754284e766e798a2 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Fri, 30 Dec 2022 10:55:29 +0800 Subject: [PATCH 04/34] test: fix some cases for tag seq --- .../1-insert/opentsdb_telnet_line_taosc_insert.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/system-test/1-insert/opentsdb_telnet_line_taosc_insert.py b/tests/system-test/1-insert/opentsdb_telnet_line_taosc_insert.py index f588827206..351cf49e3a 100644 --- a/tests/system-test/1-insert/opentsdb_telnet_line_taosc_insert.py +++ b/tests/system-test/1-insert/opentsdb_telnet_line_taosc_insert.py @@ -243,7 +243,7 @@ class TDTestCase: if t_add_tag is not None: sql_seq = f'{stb_name} {ts} {value} t0={t0} t1={t1} t2={t2} t3={t3} t4={t4} t5={t5} t6={t6} t7={t7} t8={t8} t9={t8}' if id_change_tag is not None: - sql_seq = f'{stb_name} {ts} {value} t0={t0} {id}={tb_name} t1={t1} t2={t2} t3={t3} t4={t4} t5={t5} t6={t6} t7={t7} t8={t8}' + sql_seq = f'{stb_name} {ts} {value} {id}={tb_name} t0={t0} t1={t1} t2={t2} t3={t3} t4={t4} t5={t5} t6={t6} t7={t7} t8={t8}' if id_double_tag is not None: sql_seq = f'{stb_name} {ts} {value} {id}=\"{tb_name}_1\" t0={t0} t1={t1} {id}=\"{tb_name}_2\" t2={t2} t3={t3} t4={t4} t5={t5} t6={t6} t7={t7} t8={t8}' if t_add_tag is not None: @@ -1126,9 +1126,9 @@ class TDTestCase: self._conn.schemaless_insert([input_sql], TDSmlProtocolType.TELNET.value, None) query_sql = 'select * from `rFa$sta`' query_res = tdSql.query(query_sql, True) - tdSql.checkEqual(query_res, [(datetime.datetime(2021, 7, 11, 20, 33, 54), 9.223372036854776e+18, '2147483647i32', 'L"ncharTagValue"', '32767i16', '9223372036854775807i64', '22.123456789f64', '"ddzhiksj"', '11.12345f32', 'true', '127Ii8')]) + tdSql.checkEqual(query_res, [(datetime.datetime(2021, 7, 11, 20, 33, 54), 9.223372036854776e+18, 'true', '127Ii8', '32767i16', '2147483647i32', '9223372036854775807i64', '11.12345f32', '22.123456789f64', '"ddzhiksj"', 'L"ncharTagValue"')]) col_tag_res = tdSql.getColNameList(query_sql) - tdSql.checkEqual(col_tag_res, ['_ts', '_value', '"t$3"', 't!@#$%^&*()_+[];:<>?,9', 't#2', 't%4', 't&6', 't*7', 't^5', 'Tt!0', 'tT@1']) + tdSql.checkEqual(col_tag_res, ['_ts', '_value', 'Tt!0', 'tT@1', 't#2', '"t$3"', 't%4', 't^5', 't&6', 't*7', 't!@#$%^&*()_+[];:<>?,9']) tdSql.execute('drop table `rFa$sta`') def tcpKeywordsCheckCase(self, protocol="telnet-tcp"): @@ -1207,7 +1207,6 @@ class TDTestCase: tdLog.info(f'{sys._getframe().f_code.co_name}() function is running') tdCom.cleanTb(dbname="test") input_sql = self.genSqlList()[0] - print(input_sql) self.multiThreadRun(self.genMultiThreadSeq(input_sql)) tdSql.query(f"show tables;") tdSql.checkRows(5) @@ -1416,7 +1415,7 @@ class TDTestCase: self.symbolsCheckCase() self.tsCheckCase() self.openTstbTelnetTsCheckCase() - self.idSeqCheckCase() + # self.idSeqCheckCase() self.idLetterCheckCase() self.noIdCheckCase() self.maxColTagCheckCase() From 167c390877f86dbba747f7fd81fec6ef880ebd2a Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Fri, 30 Dec 2022 11:14:26 +0800 Subject: [PATCH 05/34] feat: check cluster status add case --- tests/system-test/6-cluster/5dnode1mnode.py | 28 ++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tests/system-test/6-cluster/5dnode1mnode.py b/tests/system-test/6-cluster/5dnode1mnode.py index d0157ec7c7..7b5371ef9b 100644 --- a/tests/system-test/6-cluster/5dnode1mnode.py +++ b/tests/system-test/6-cluster/5dnode1mnode.py @@ -137,11 +137,37 @@ class TDTestCase: config_dir = dnode.cfgDir return taos.connect(host=host, port=int(port), config=config_dir) + def check_alive(self): + # check cluster alive + tdLog.printNoPrefix("======== test cluster alive: ") + tdSql.query("show cluster alive;") + tdSql.checkData(0, 0, "1") + + tdSql.query("show db.alive;") + tdSql.checkData(0, 0, "1") + + # stop 5 dnode + self.TDDnodes[4].stoptaosd() + tdSql.query("show cluster alive;") + tdSql.checkData(0, 0, "2") + + tdSql.query("show db.alive;") + tdSql.checkData(0, 0, "2") + + # stop 2 dnode + self.TDDnodes[1].stoptaosd() + tdSql.query("show cluster alive;") + tdSql.checkData(0, 0, "0") + + tdSql.query("show db.alive;") + tdSql.checkData(0, 0, "0") + def run(self): # print(self.master_dnode.cfgDict) self.five_dnode_one_mnode() - + # check cluster and db alive + self.check_alive("db") def stop(self): tdSql.close() From ac67b69c64f7af3987e23ff2cc72f5cce43cd00c Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Fri, 30 Dec 2022 11:24:11 +0800 Subject: [PATCH 06/34] fix: python case error --- tests/system-test/6-cluster/5dnode1mnode.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/system-test/6-cluster/5dnode1mnode.py b/tests/system-test/6-cluster/5dnode1mnode.py index 7b5371ef9b..548dd6c247 100644 --- a/tests/system-test/6-cluster/5dnode1mnode.py +++ b/tests/system-test/6-cluster/5dnode1mnode.py @@ -141,33 +141,33 @@ class TDTestCase: # check cluster alive tdLog.printNoPrefix("======== test cluster alive: ") tdSql.query("show cluster alive;") - tdSql.checkData(0, 0, "1") + tdSql.checkData(0, 0, 1) tdSql.query("show db.alive;") - tdSql.checkData(0, 0, "1") + tdSql.checkData(0, 0, 1) # stop 5 dnode self.TDDnodes[4].stoptaosd() tdSql.query("show cluster alive;") - tdSql.checkData(0, 0, "2") + tdSql.checkData(0, 0, 2) tdSql.query("show db.alive;") - tdSql.checkData(0, 0, "2") + tdSql.checkData(0, 0, 2) # stop 2 dnode self.TDDnodes[1].stoptaosd() tdSql.query("show cluster alive;") - tdSql.checkData(0, 0, "0") + tdSql.checkData(0, 0, 0) tdSql.query("show db.alive;") - tdSql.checkData(0, 0, "0") + tdSql.checkData(0, 0, 0) def run(self): # print(self.master_dnode.cfgDict) self.five_dnode_one_mnode() # check cluster and db alive - self.check_alive("db") + self.check_alive() def stop(self): tdSql.close() From fa4df74eb10d32cbd08ef49184b28bb4b7eddbea Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Fri, 30 Dec 2022 13:57:05 +0800 Subject: [PATCH 07/34] fix:json parse error --- source/client/inc/clientSml.h | 4 +-- source/client/src/clientSmlJson.c | 56 +++++++++++++++++++++---------- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/source/client/inc/clientSml.h b/source/client/inc/clientSml.h index 2fc058ee00..66b82d2b1e 100644 --- a/source/client/inc/clientSml.h +++ b/source/client/inc/clientSml.h @@ -206,8 +206,8 @@ typedef int32_t (*_equal_fn_sml)(const void *, const void *); SSmlHandle *smlBuildSmlInfo(TAOS *taos); void smlDestroyInfo(SSmlHandle *info); -void smlJsonParseObjFirst(char **start, SSmlLineInfo *element, int8_t *offset); -void smlJsonParseObj(char **start, SSmlLineInfo *element, int8_t *offset); +int smlJsonParseObjFirst(char **start, SSmlLineInfo *element, int8_t *offset); +int smlJsonParseObj(char **start, SSmlLineInfo *element, int8_t *offset); SArray *smlJsonParseTags(char *start, char *end); bool smlParseNumberOld(SSmlKv *kvVal, SSmlMsgBuf *msg); void* nodeListGet(NodeList* list, const void *key, int32_t len, _equal_fn_sml fn); diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index ef8fe57b8b..d919805a8a 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -117,6 +117,11 @@ static int32_t smlParseTagsFromJSON(SSmlHandle *info, SSmlLineInfo *elements) { SArray *tags = smlJsonParseTags(elements->tags, elements->tags + elements->tagsLen); int32_t tagNum = taosArrayGetSize(tags); + if (tagNum == 0) { + uError("SML:tag is empty:%s", elements->tags) + taosArrayDestroy(tags); + return TSDB_CODE_SML_INVALID_DATA; + } for (int32_t i = 0; i < tagNum; ++i) { SSmlKv kv = *(SSmlKv*)taosArrayGet(tags, i); @@ -236,7 +241,7 @@ static char* smlJsonGetObj(char *payload){ return NULL; } -void smlJsonParseObjFirst(char **start, SSmlLineInfo *element, int8_t *offset){ +int smlJsonParseObjFirst(char **start, SSmlLineInfo *element, int8_t *offset){ int index = 0; while(*(*start)){ if((*start)[0] != '"'){ @@ -244,10 +249,6 @@ void smlJsonParseObjFirst(char **start, SSmlLineInfo *element, int8_t *offset){ continue; } - if(unlikely(index >= 4)) { - uError("index >= 4, %s", *start) - break; - } char *sTmp = *start; if((*start)[1] == 'm' && (*start)[2] == 'e' && (*start)[3] == 't' && (*start)[4] == 'r' && (*start)[5] == 'i' && (*start)[6] == 'c' && (*start)[7] == '"'){ @@ -336,9 +337,15 @@ void smlJsonParseObjFirst(char **start, SSmlLineInfo *element, int8_t *offset){ } (*start)++; } + + if(unlikely(index != OTD_JSON_FIELDS_NUM)) { + uError("elements != %d", OTD_JSON_FIELDS_NUM) + return -1; + } + return 0; } -void smlJsonParseObj(char **start, SSmlLineInfo *element, int8_t *offset){ +int smlJsonParseObj(char **start, SSmlLineInfo *element, int8_t *offset){ int index = 0; while(*(*start)){ if((*start)[0] != '"'){ @@ -346,10 +353,6 @@ void smlJsonParseObj(char **start, SSmlLineInfo *element, int8_t *offset){ continue; } - if(unlikely(index >= 4)) { - uError("index >= 4, %s", *start) - break; - } if((*start)[1] == 'm'){ (*start) += offset[index++]; element->measure = *start; @@ -396,23 +399,36 @@ void smlJsonParseObj(char **start, SSmlLineInfo *element, int8_t *offset){ } (*start)++; } + + if(unlikely(index != OTD_JSON_FIELDS_NUM)) { + uError("elements != %d", OTD_JSON_FIELDS_NUM) + return -1; + } + return 0; } static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo *elements) { int32_t ret = TSDB_CODE_SUCCESS; if(info->offset[0] == 0){ - smlJsonParseObjFirst(start, elements, info->offset); + ret = smlJsonParseObjFirst(start, elements, info->offset); }else{ - smlJsonParseObj(start, elements, info->offset); + ret = smlJsonParseObj(start, elements, info->offset); } - if(**start == '\0' && elements->measure == NULL) return TSDB_CODE_SUCCESS; - SSmlKv kv = {.key = VALUE, .keyLen = VALUE_LEN, .value = elements->cols, .length = (size_t)elements->colsLen}; - if (smlParseValue(&kv, &info->msgBuf) != TSDB_CODE_SUCCESS) { + if (ret != TSDB_CODE_SUCCESS) { return TSDB_CODE_TSC_INVALID_VALUE; } + if(unlikely(**start == '\0' && elements->measure == NULL)) return TSDB_CODE_SUCCESS; + + SSmlKv kv = {.key = VALUE, .keyLen = VALUE_LEN, .value = elements->cols, .length = (size_t)elements->colsLen}; + if (elements->colsLen == 0 || smlParseValue(&kv, &info->msgBuf) != TSDB_CODE_SUCCESS) { + uError("SML:cols invalidate:%s", elements->cols); + return TSDB_CODE_TSC_INVALID_VALUE; + } + + // Parse tags ret = smlParseTagsFromJSON(info, elements); if (unlikely(ret)) { @@ -725,6 +741,10 @@ static int32_t smlParseTagsFromJSONExt(SSmlHandle *info, cJSON *tags, SSmlLineIn } int32_t tagNum = cJSON_GetArraySize(tags); + if(unlikely(tagNum == 0)){ + uError("SML:Tag should not be empty"); + return TSDB_CODE_TSC_INVALID_JSON; + } for (int32_t i = 0; i < tagNum; ++i) { cJSON *tag = cJSON_GetArrayItem(tags, i); if (unlikely(tag == NULL)) { @@ -1046,7 +1066,7 @@ static int32_t smlParseJSONExt(SSmlHandle *info, char *payload) { } else if (cJSON_IsObject(info->root)) { payloadNum = 1; } else { - uError("SML:0x%" PRIx64 " Invalid JSON Payload", info->id); + uError("SML:0x%" PRIx64 " Invalid JSON Payload 3:%s", info->id, payload); return TSDB_CODE_TSC_INVALID_JSON; } @@ -1072,7 +1092,7 @@ static int32_t smlParseJSONExt(SSmlHandle *info, char *payload) { ret = smlParseJSONStringExt(info, dataPoint, info->lines + cnt); } if (unlikely(ret != TSDB_CODE_SUCCESS)) { - uError("SML:0x%" PRIx64 " Invalid JSON Payload", info->id); + uError("SML:0x%" PRIx64 " Invalid JSON Payload 2:%s", info->id, payload); return ret; } @@ -1115,7 +1135,7 @@ int32_t smlParseJSON(SSmlHandle *info, char *payload) { ret = smlParseJSONString(info, &dataPointStart, info->lines + cnt); } if (unlikely(ret != TSDB_CODE_SUCCESS)) { - uError("SML:0x%" PRIx64 " Invalid JSON Payload", info->id); + uError("SML:0x%" PRIx64 " Invalid JSON Payload 1:%s", info->id, payload); return smlParseJSONExt(info, payload); } From a0d46fe9f4de7d6cb59c5a7363b70b5608d27ac9 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Fri, 30 Dec 2022 14:24:32 +0800 Subject: [PATCH 08/34] fix:json parse error --- source/client/inc/clientSml.h | 3 ++- source/client/src/clientSmlJson.c | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/source/client/inc/clientSml.h b/source/client/inc/clientSml.h index 66b82d2b1e..daf610a79c 100644 --- a/source/client/inc/clientSml.h +++ b/source/client/inc/clientSml.h @@ -69,6 +69,7 @@ extern "C" { #define VALUE "_value" #define VALUE_LEN 6 +#define OTD_JSON_FIELDS_NUM 4 #define MAX_RETRY_TIMES 5 typedef TSDB_SML_PROTOCOL_TYPE SMLProtocolType; @@ -178,7 +179,7 @@ typedef struct { SSmlMsgBuf msgBuf; cJSON *root; // for parse json - int8_t offset[4]; + int8_t offset[OTD_JSON_FIELDS_NUM]; SSmlLineInfo *lines; // element is SSmlLineInfo // diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index d919805a8a..c1694d4aa7 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -20,7 +20,6 @@ #include "clientSml.h" #define OTD_JSON_SUB_FIELDS_NUM 2 -#define OTD_JSON_FIELDS_NUM 4 #define JUMP_JSON_SPACE(start) \ while(*(start)){\ @@ -249,6 +248,11 @@ int smlJsonParseObjFirst(char **start, SSmlLineInfo *element, int8_t *offset){ continue; } + if(unlikely(index >= OTD_JSON_FIELDS_NUM)) { + uError("index >= %d, %s", OTD_JSON_FIELDS_NUM, *start) + break; + } + char *sTmp = *start; if((*start)[1] == 'm' && (*start)[2] == 'e' && (*start)[3] == 't' && (*start)[4] == 'r' && (*start)[5] == 'i' && (*start)[6] == 'c' && (*start)[7] == '"'){ @@ -353,6 +357,11 @@ int smlJsonParseObj(char **start, SSmlLineInfo *element, int8_t *offset){ continue; } + if(unlikely(index >= OTD_JSON_FIELDS_NUM)) { + uError("index >= %d, %s", OTD_JSON_FIELDS_NUM, *start) + break; + } + if((*start)[1] == 'm'){ (*start) += offset[index++]; element->measure = *start; @@ -980,6 +989,13 @@ static int32_t smlParseJSONStringExt(SSmlHandle *info, cJSON *root, SSmlLineInfo cJSON *valueJson = NULL; cJSON *tagsJson = NULL; + int32_t size = cJSON_GetArraySize(root); + // outmost json fields has to be exactly 4 + if (size != OTD_JSON_FIELDS_NUM) { + uError("OTD:0x%" PRIx64 " Invalid number of JSON fields in data point %d", info->id, size); + return TSDB_CODE_TSC_INVALID_JSON; + } + cJSON **marks[OTD_JSON_FIELDS_NUM] = {&metricJson, &tsJson, &valueJson, &tagsJson}; ret = smlGetJsonElements(root, marks); if (unlikely(ret != TSDB_CODE_SUCCESS)) { From 6eeddb4b531f5b2d1ab32566fd14f7168b5a7254 Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Fri, 30 Dec 2022 15:19:44 +0800 Subject: [PATCH 09/34] add case feature function with loop check data --- tests/pytest/util/sql.py | 64 +++++++++++++++++++++ tests/system-test/6-cluster/5dnode1mnode.py | 15 ++--- 2 files changed, 70 insertions(+), 9 deletions(-) diff --git a/tests/pytest/util/sql.py b/tests/pytest/util/sql.py index 9cfd1d368e..bdf3f20e15 100644 --- a/tests/pytest/util/sql.py +++ b/tests/pytest/util/sql.py @@ -261,6 +261,70 @@ class TDSql: tdLog.info(f"sql:{self.sql}, row:{row} col:{col} data:{self.queryResult[row][col]} == expect:{data}") + # return true or false replace exit, no print out + def checkRowColNoExit(self, row, col): + caller = inspect.getframeinfo(inspect.stack()[2][0]) + if row < 0: + args = (caller.filename, caller.lineno, self.sql, row) + return False + if col < 0: + args = (caller.filename, caller.lineno, self.sql, row) + return False + if row > self.queryRows: + args = (caller.filename, caller.lineno, self.sql, row, self.queryRows) + return False + if col > self.queryCols: + args = (caller.filename, caller.lineno, self.sql, col, self.queryCols) + return False + + return True + + + # return true or false replace exit, no print out + def checkDataNoExit(self, row, col, data): + if self.checkRowColNoExit(row, col) == False: + return False + if self.queryResult[row][col] != data: + if self.cursor.istype(col, "TIMESTAMP"): + # suppose user want to check nanosecond timestamp if a longer data passed + if (len(data) >= 28): + if pd.to_datetime(self.queryResult[row][col]) == pd.to_datetime(data): + return True + else: + if self.queryResult[row][col] == _parse_datetime(data): + return True + return False + + if str(self.queryResult[row][col]) == str(data): + return True + elif isinstance(data, float): + if abs(data) >= 1 and abs((self.queryResult[row][col] - data) / data) <= 0.000001: + return True + elif abs(data) < 1 and abs(self.queryResult[row][col] - data) <= 0.000001: + return True + else: + return False + else: + return False + + return True + + + # loop execute sql then sleep(waitTime) , if checkData ok break loop + def checkDataLoop(self, row, col, data, sql, loopCount, waitTime): + # loop check util checkData return true + for i in range(loopCount): + self.query(sql) + if self.checkDataNoExit(row, col, data) : + self.checkData(row, col, data) + return + time.sleep(waitTime) + + # last check + self.query(sql) + self.checkData(row, col, data) + + def getData(self, row, col): self.checkRowCol(row, col) return self.queryResult[row][col] diff --git a/tests/system-test/6-cluster/5dnode1mnode.py b/tests/system-test/6-cluster/5dnode1mnode.py index 548dd6c247..6f3ca8f20b 100644 --- a/tests/system-test/6-cluster/5dnode1mnode.py +++ b/tests/system-test/6-cluster/5dnode1mnode.py @@ -140,24 +140,21 @@ class TDTestCase: def check_alive(self): # check cluster alive tdLog.printNoPrefix("======== test cluster alive: ") - tdSql.query("show cluster alive;") - tdSql.checkData(0, 0, 1) + tdSql.checkDataLoop(0, 0, 1, "show cluster alive;", 10, 0.5) tdSql.query("show db.alive;") tdSql.checkData(0, 0, 1) # stop 5 dnode - self.TDDnodes[4].stoptaosd() - tdSql.query("show cluster alive;") - tdSql.checkData(0, 0, 2) - + self.TDDnodes.stoptaosd(5) + tdSql.checkDataLoop(0, 0, 2, "show cluster alive;", 10, 0.5) + tdSql.query("show db.alive;") tdSql.checkData(0, 0, 2) # stop 2 dnode - self.TDDnodes[1].stoptaosd() - tdSql.query("show cluster alive;") - tdSql.checkData(0, 0, 0) + self.TDDnodes.stoptaosd(2) + tdSql.checkDataLoop(0, 0, 0, "show cluster alive;", 10, 0.5) tdSql.query("show db.alive;") tdSql.checkData(0, 0, 0) From 642cd078a4030152aa62bb04cdf9e491d062f8d8 Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Fri, 30 Dec 2022 15:23:04 +0800 Subject: [PATCH 10/34] fix: max wait time modify from 5s to 10s --- tests/system-test/6-cluster/5dnode1mnode.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/system-test/6-cluster/5dnode1mnode.py b/tests/system-test/6-cluster/5dnode1mnode.py index 6f3ca8f20b..ce87bced1b 100644 --- a/tests/system-test/6-cluster/5dnode1mnode.py +++ b/tests/system-test/6-cluster/5dnode1mnode.py @@ -140,21 +140,21 @@ class TDTestCase: def check_alive(self): # check cluster alive tdLog.printNoPrefix("======== test cluster alive: ") - tdSql.checkDataLoop(0, 0, 1, "show cluster alive;", 10, 0.5) + tdSql.checkDataLoop(0, 0, 1, "show cluster alive;", 20, 0.5) tdSql.query("show db.alive;") tdSql.checkData(0, 0, 1) # stop 5 dnode self.TDDnodes.stoptaosd(5) - tdSql.checkDataLoop(0, 0, 2, "show cluster alive;", 10, 0.5) + tdSql.checkDataLoop(0, 0, 2, "show cluster alive;", 20, 0.5) tdSql.query("show db.alive;") tdSql.checkData(0, 0, 2) # stop 2 dnode self.TDDnodes.stoptaosd(2) - tdSql.checkDataLoop(0, 0, 0, "show cluster alive;", 10, 0.5) + tdSql.checkDataLoop(0, 0, 0, "show cluster alive;", 20, 0.5) tdSql.query("show db.alive;") tdSql.checkData(0, 0, 0) From 5290c32fd1d03db3a233ab03cf7873dd07625fe8 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Fri, 30 Dec 2022 17:11:22 +0800 Subject: [PATCH 11/34] fix:json parse error --- source/client/inc/clientSml.h | 3 +- source/client/src/clientSml.c | 13 +- source/client/src/clientSmlJson.c | 546 ++++++++++++++++-------------- 3 files changed, 295 insertions(+), 267 deletions(-) diff --git a/source/client/inc/clientSml.h b/source/client/inc/clientSml.h index daf610a79c..d5f1cf512c 100644 --- a/source/client/inc/clientSml.h +++ b/source/client/inc/clientSml.h @@ -181,6 +181,7 @@ typedef struct { cJSON *root; // for parse json int8_t offset[OTD_JSON_FIELDS_NUM]; SSmlLineInfo *lines; // element is SSmlLineInfo + bool parseJsonByLib; // SArray *preLineTagKV; @@ -209,7 +210,7 @@ SSmlHandle *smlBuildSmlInfo(TAOS *taos); void smlDestroyInfo(SSmlHandle *info); int smlJsonParseObjFirst(char **start, SSmlLineInfo *element, int8_t *offset); int smlJsonParseObj(char **start, SSmlLineInfo *element, int8_t *offset); -SArray *smlJsonParseTags(char *start, char *end); +//SArray *smlJsonParseTags(char *start, char *end); bool smlParseNumberOld(SSmlKv *kvVal, SSmlMsgBuf *msg); void* nodeListGet(NodeList* list, const void *key, int32_t len, _equal_fn_sml fn); int nodeListSet(NodeList** list, const void *key, int32_t len, void* value, _equal_fn_sml fn); diff --git a/source/client/src/clientSml.c b/source/client/src/clientSml.c index 689645abc6..4d091e4b61 100644 --- a/source/client/src/clientSml.c +++ b/source/client/src/clientSml.c @@ -1008,12 +1008,16 @@ static int32_t smlUpdateMeta(SHashObj *metaHash, SArray *metaArray, SArray *cols return TSDB_CODE_SUCCESS; } -static void smlDestroyTableInfo(SSmlTableInfo *tag) { +static void smlDestroyTableInfo(SSmlHandle *info, SSmlTableInfo *tag) { for (size_t i = 0; i < taosArrayGetSize(tag->cols); i++) { SHashObj *kvHash = (SHashObj *)taosArrayGetP(tag->cols, i); taosHashCleanup(kvHash); } + if(info->parseJsonByLib){ + SSmlLineInfo *key = (SSmlLineInfo *)(tag->key); + if(key != NULL) taosMemoryFree(key->tags); + } taosMemoryFree(tag->key); taosArrayDestroy(tag->cols); taosArrayDestroy(tag->tags); @@ -1028,7 +1032,7 @@ void smlDestroyInfo(SSmlHandle *info) { NodeList *tmp = info->childTables; while (tmp) { if (tmp->data.used) { - smlDestroyTableInfo((SSmlTableInfo *)tmp->data.value); + smlDestroyTableInfo(info, (SSmlTableInfo *)tmp->data.value); } NodeList *t = tmp->next; taosMemoryFree(tmp); @@ -1055,6 +1059,9 @@ void smlDestroyInfo(SSmlHandle *info) { if (!info->dataFormat) { for (int i = 0; i < info->lineNum; i++) { taosArrayDestroy(info->lines[i].colArray); + if(info->parseJsonByLib){ + taosMemoryFree(info->lines[i].tags); + } } taosMemoryFree(info->lines); } @@ -1251,7 +1258,7 @@ int32_t smlClearForRerun(SSmlHandle *info) { NodeList *pList = info->childTables; while (pList) { if (pList->data.used) { - smlDestroyTableInfo((SSmlTableInfo *)pList->data.value); + smlDestroyTableInfo(info, (SSmlTableInfo *)pList->data.value); pList->data.used = false; } pList = pList->next; diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index c1694d4aa7..180e89b694 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -29,193 +29,193 @@ while(*(start)){\ (start)++;\ } -SArray *smlJsonParseTags(char *start, char *end){ - SArray *tags = taosArrayInit(4, sizeof(SSmlKv)); - while(start < end){ - SSmlKv kv = {0}; - kv.type = TSDB_DATA_TYPE_NCHAR; - bool isInQuote = false; - while(start < end){ - if(unlikely(!isInQuote && *start == '"')){ - start++; - kv.key = start; - isInQuote = true; - continue; - } - if(unlikely(isInQuote && *start == '"')){ - kv.keyLen = start - kv.key; - start++; - break; - } - start++; - } - bool hasColon = false; - while(start < end){ - if(unlikely(!hasColon && *start == ':')){ - start++; - hasColon = true; - continue; - } - if(unlikely(hasColon && kv.value == NULL && (*start > 32 && *start != '"'))){ - kv.value = start; - start++; - continue; - } +//SArray *smlJsonParseTags(char *start, char *end){ +// SArray *tags = taosArrayInit(4, sizeof(SSmlKv)); +// while(start < end){ +// SSmlKv kv = {0}; +// kv.type = TSDB_DATA_TYPE_NCHAR; +// bool isInQuote = false; +// while(start < end){ +// if(unlikely(!isInQuote && *start == '"')){ +// start++; +// kv.key = start; +// isInQuote = true; +// continue; +// } +// if(unlikely(isInQuote && *start == '"')){ +// kv.keyLen = start - kv.key; +// start++; +// break; +// } +// start++; +// } +// bool hasColon = false; +// while(start < end){ +// if(unlikely(!hasColon && *start == ':')){ +// start++; +// hasColon = true; +// continue; +// } +// if(unlikely(hasColon && kv.value == NULL && (*start > 32 && *start != '"'))){ +// kv.value = start; +// start++; +// continue; +// } +// +// if(unlikely(hasColon && kv.value != NULL && (*start == '"' || *start == ',' || *start == '}'))){ +// kv.length = start - kv.value; +// taosArrayPush(tags, &kv); +// start++; +// break; +// } +// start++; +// } +// } +// return tags; +//} - if(unlikely(hasColon && kv.value != NULL && (*start == '"' || *start == ',' || *start == '}'))){ - kv.length = start - kv.value; - taosArrayPush(tags, &kv); - start++; - break; - } - start++; - } - } - return tags; -} - -static int32_t smlParseTagsFromJSON(SSmlHandle *info, SSmlLineInfo *elements) { - int32_t ret = TSDB_CODE_SUCCESS; - - if(is_same_child_table_telnet(elements, &info->preLine) == 0){ - return TSDB_CODE_SUCCESS; - } - - bool isSameMeasure = IS_SAME_SUPER_TABLE; - - int cnt = 0; - SArray *preLineKV = info->preLineTagKV; - bool isSuperKVInit = true; - SArray *superKV = NULL; - if(info->dataFormat){ - if(unlikely(!isSameMeasure)){ - SSmlSTableMeta *sMeta = (SSmlSTableMeta *)nodeListGet(info->superTables, elements->measure, elements->measureLen, NULL); - - if(unlikely(sMeta == NULL)){ - sMeta = smlBuildSTableMeta(info->dataFormat); - STableMeta * pTableMeta = smlGetMeta(info, elements->measure, elements->measureLen); - sMeta->tableMeta = pTableMeta; - if(pTableMeta == NULL){ - info->dataFormat = false; - info->reRun = true; - return TSDB_CODE_SUCCESS; - } - nodeListSet(&info->superTables, elements->measure, elements->measureLen, sMeta, NULL); - } - info->currSTableMeta = sMeta->tableMeta; - superKV = sMeta->tags; - - if(unlikely(taosArrayGetSize(superKV) == 0)){ - isSuperKVInit = false; - } - taosArraySetSize(preLineKV, 0); - } - }else{ - taosArraySetSize(preLineKV, 0); - } - - SArray *tags = smlJsonParseTags(elements->tags, elements->tags + elements->tagsLen); - int32_t tagNum = taosArrayGetSize(tags); - if (tagNum == 0) { - uError("SML:tag is empty:%s", elements->tags) - taosArrayDestroy(tags); - return TSDB_CODE_SML_INVALID_DATA; - } - for (int32_t i = 0; i < tagNum; ++i) { - SSmlKv kv = *(SSmlKv*)taosArrayGet(tags, i); - - if(info->dataFormat){ - if(unlikely(cnt + 1 > info->currSTableMeta->tableInfo.numOfTags)){ - info->dataFormat = false; - info->reRun = true; - taosArrayDestroy(tags); - return TSDB_CODE_SUCCESS; - } - - if(isSameMeasure){ - if(unlikely(cnt >= taosArrayGetSize(preLineKV))) { - info->dataFormat = false; - info->reRun = true; - taosArrayDestroy(tags); - return TSDB_CODE_SUCCESS; - } - SSmlKv *preKV = (SSmlKv *)taosArrayGet(preLineKV, cnt); - if(unlikely(kv.length > preKV->length)){ - preKV->length = kv.length; - SSmlSTableMeta *tableMeta = (SSmlSTableMeta *)nodeListGet(info->superTables, elements->measure, elements->measureLen, NULL); - ASSERT(tableMeta != NULL); - - SSmlKv *oldKV = (SSmlKv *)taosArrayGet(tableMeta->tags, cnt); - oldKV->length = kv.length; - info->needModifySchema = true; - } - if(unlikely(!IS_SAME_KEY)){ - info->dataFormat = false; - info->reRun = true; - taosArrayDestroy(tags); - return TSDB_CODE_SUCCESS; - } - }else{ - if(isSuperKVInit){ - if(unlikely(cnt >= taosArrayGetSize(superKV))) { - info->dataFormat = false; - info->reRun = true; - taosArrayDestroy(tags); - return TSDB_CODE_SUCCESS; - } - SSmlKv *preKV = (SSmlKv *)taosArrayGet(superKV, cnt); - if(unlikely(kv.length > preKV->length)) { - preKV->length = kv.length; - }else{ - kv.length = preKV->length; - } - info->needModifySchema = true; - - if(unlikely(!IS_SAME_KEY)){ - info->dataFormat = false; - info->reRun = true; - taosArrayDestroy(tags); - return TSDB_CODE_SUCCESS; - } - }else{ - taosArrayPush(superKV, &kv); - } - taosArrayPush(preLineKV, &kv); - } - }else{ - taosArrayPush(preLineKV, &kv); - } - cnt++; - } - taosArrayDestroy(tags); - - SSmlTableInfo *tinfo = (SSmlTableInfo *)nodeListGet(info->childTables, elements, POINTER_BYTES, is_same_child_table_telnet); - if (unlikely(tinfo == NULL)) { - tinfo = smlBuildTableInfo(1, elements->measure, elements->measureLen); - if (unlikely(!tinfo)) { - return TSDB_CODE_OUT_OF_MEMORY; - } - tinfo->tags = taosArrayDup(preLineKV, NULL); - - smlSetCTableName(tinfo); - if (info->dataFormat) { - info->currSTableMeta->uid = tinfo->uid; - tinfo->tableDataCtx = smlInitTableDataCtx(info->pQuery, info->currSTableMeta); - if (tinfo->tableDataCtx == NULL) { - smlBuildInvalidDataMsg(&info->msgBuf, "smlInitTableDataCtx error", NULL); - return TSDB_CODE_SML_INVALID_DATA; - } - } - - SSmlLineInfo *key = (SSmlLineInfo *)taosMemoryMalloc(sizeof(SSmlLineInfo)); - *key = *elements; - tinfo->key = key; - nodeListSet(&info->childTables, key, POINTER_BYTES, tinfo, is_same_child_table_telnet); - } - if (info->dataFormat) info->currTableDataCtx = tinfo->tableDataCtx; - - return ret; -} +//static int32_t smlParseTagsFromJSON(SSmlHandle *info, SSmlLineInfo *elements) { +// int32_t ret = TSDB_CODE_SUCCESS; +// +// if(is_same_child_table_telnet(elements, &info->preLine) == 0){ +// return TSDB_CODE_SUCCESS; +// } +// +// bool isSameMeasure = IS_SAME_SUPER_TABLE; +// +// int cnt = 0; +// SArray *preLineKV = info->preLineTagKV; +// bool isSuperKVInit = true; +// SArray *superKV = NULL; +// if(info->dataFormat){ +// if(unlikely(!isSameMeasure)){ +// SSmlSTableMeta *sMeta = (SSmlSTableMeta *)nodeListGet(info->superTables, elements->measure, elements->measureLen, NULL); +// +// if(unlikely(sMeta == NULL)){ +// sMeta = smlBuildSTableMeta(info->dataFormat); +// STableMeta * pTableMeta = smlGetMeta(info, elements->measure, elements->measureLen); +// sMeta->tableMeta = pTableMeta; +// if(pTableMeta == NULL){ +// info->dataFormat = false; +// info->reRun = true; +// return TSDB_CODE_SUCCESS; +// } +// nodeListSet(&info->superTables, elements->measure, elements->measureLen, sMeta, NULL); +// } +// info->currSTableMeta = sMeta->tableMeta; +// superKV = sMeta->tags; +// +// if(unlikely(taosArrayGetSize(superKV) == 0)){ +// isSuperKVInit = false; +// } +// taosArraySetSize(preLineKV, 0); +// } +// }else{ +// taosArraySetSize(preLineKV, 0); +// } +// +// SArray *tags = smlJsonParseTags(elements->tags, elements->tags + elements->tagsLen); +// int32_t tagNum = taosArrayGetSize(tags); +// if (tagNum == 0) { +// uError("SML:tag is empty:%s", elements->tags) +// taosArrayDestroy(tags); +// return TSDB_CODE_SML_INVALID_DATA; +// } +// for (int32_t i = 0; i < tagNum; ++i) { +// SSmlKv kv = *(SSmlKv*)taosArrayGet(tags, i); +// +// if(info->dataFormat){ +// if(unlikely(cnt + 1 > info->currSTableMeta->tableInfo.numOfTags)){ +// info->dataFormat = false; +// info->reRun = true; +// taosArrayDestroy(tags); +// return TSDB_CODE_SUCCESS; +// } +// +// if(isSameMeasure){ +// if(unlikely(cnt >= taosArrayGetSize(preLineKV))) { +// info->dataFormat = false; +// info->reRun = true; +// taosArrayDestroy(tags); +// return TSDB_CODE_SUCCESS; +// } +// SSmlKv *preKV = (SSmlKv *)taosArrayGet(preLineKV, cnt); +// if(unlikely(kv.length > preKV->length)){ +// preKV->length = kv.length; +// SSmlSTableMeta *tableMeta = (SSmlSTableMeta *)nodeListGet(info->superTables, elements->measure, elements->measureLen, NULL); +// ASSERT(tableMeta != NULL); +// +// SSmlKv *oldKV = (SSmlKv *)taosArrayGet(tableMeta->tags, cnt); +// oldKV->length = kv.length; +// info->needModifySchema = true; +// } +// if(unlikely(!IS_SAME_KEY)){ +// info->dataFormat = false; +// info->reRun = true; +// taosArrayDestroy(tags); +// return TSDB_CODE_SUCCESS; +// } +// }else{ +// if(isSuperKVInit){ +// if(unlikely(cnt >= taosArrayGetSize(superKV))) { +// info->dataFormat = false; +// info->reRun = true; +// taosArrayDestroy(tags); +// return TSDB_CODE_SUCCESS; +// } +// SSmlKv *preKV = (SSmlKv *)taosArrayGet(superKV, cnt); +// if(unlikely(kv.length > preKV->length)) { +// preKV->length = kv.length; +// }else{ +// kv.length = preKV->length; +// } +// info->needModifySchema = true; +// +// if(unlikely(!IS_SAME_KEY)){ +// info->dataFormat = false; +// info->reRun = true; +// taosArrayDestroy(tags); +// return TSDB_CODE_SUCCESS; +// } +// }else{ +// taosArrayPush(superKV, &kv); +// } +// taosArrayPush(preLineKV, &kv); +// } +// }else{ +// taosArrayPush(preLineKV, &kv); +// } +// cnt++; +// } +// taosArrayDestroy(tags); +// +// SSmlTableInfo *tinfo = (SSmlTableInfo *)nodeListGet(info->childTables, elements, POINTER_BYTES, is_same_child_table_telnet); +// if (unlikely(tinfo == NULL)) { +// tinfo = smlBuildTableInfo(1, elements->measure, elements->measureLen); +// if (unlikely(!tinfo)) { +// return TSDB_CODE_OUT_OF_MEMORY; +// } +// tinfo->tags = taosArrayDup(preLineKV, NULL); +// +// smlSetCTableName(tinfo); +// if (info->dataFormat) { +// info->currSTableMeta->uid = tinfo->uid; +// tinfo->tableDataCtx = smlInitTableDataCtx(info->pQuery, info->currSTableMeta); +// if (tinfo->tableDataCtx == NULL) { +// smlBuildInvalidDataMsg(&info->msgBuf, "smlInitTableDataCtx error", NULL); +// return TSDB_CODE_SML_INVALID_DATA; +// } +// } +// +// SSmlLineInfo *key = (SSmlLineInfo *)taosMemoryMalloc(sizeof(SSmlLineInfo)); +// *key = *elements; +// tinfo->key = key; +// nodeListSet(&info->childTables, key, POINTER_BYTES, tinfo, is_same_child_table_telnet); +// } +// if (info->dataFormat) info->currTableDataCtx = tinfo->tableDataCtx; +// +// return ret; +//} static char* smlJsonGetObj(char *payload){ int leftBracketCnt = 0; @@ -416,72 +416,6 @@ int smlJsonParseObj(char **start, SSmlLineInfo *element, int8_t *offset){ return 0; } -static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo *elements) { - int32_t ret = TSDB_CODE_SUCCESS; - - if(info->offset[0] == 0){ - ret = smlJsonParseObjFirst(start, elements, info->offset); - }else{ - ret = smlJsonParseObj(start, elements, info->offset); - } - - if (ret != TSDB_CODE_SUCCESS) { - return TSDB_CODE_TSC_INVALID_VALUE; - } - - if(unlikely(**start == '\0' && elements->measure == NULL)) return TSDB_CODE_SUCCESS; - - SSmlKv kv = {.key = VALUE, .keyLen = VALUE_LEN, .value = elements->cols, .length = (size_t)elements->colsLen}; - if (elements->colsLen == 0 || smlParseValue(&kv, &info->msgBuf) != TSDB_CODE_SUCCESS) { - uError("SML:cols invalidate:%s", elements->cols); - return TSDB_CODE_TSC_INVALID_VALUE; - } - - - // Parse tags - ret = smlParseTagsFromJSON(info, elements); - if (unlikely(ret)) { - uError("OTD:0x%" PRIx64 " Unable to parse tags from JSON payload", info->id); - return ret; - } - - if(unlikely(info->reRun)){ - return TSDB_CODE_SUCCESS; - } - - // Parse timestamp - // notice!!! put ts back to tag to ensure get meta->precision - int64_t ts = smlParseOpenTsdbTime(info, elements->timestamp, elements->timestampLen); - if (unlikely(ts < 0)) { - uError("OTD:0x%" PRIx64 " Unable to parse timestamp from JSON payload", info->id); - return TSDB_CODE_INVALID_TIMESTAMP; - } - SSmlKv kvTs = { .key = TS, .keyLen = TS_LEN, .type = TSDB_DATA_TYPE_TIMESTAMP, .i = ts, .length = (size_t)tDataTypes[TSDB_DATA_TYPE_TIMESTAMP].bytes}; - - if(info->dataFormat){ - ret = smlBuildCol(info->currTableDataCtx, info->currSTableMeta->schema, &kvTs, 0); - if(ret == TSDB_CODE_SUCCESS){ - ret = smlBuildCol(info->currTableDataCtx, info->currSTableMeta->schema, &kv, 1); - } - if(ret == TSDB_CODE_SUCCESS){ - ret = smlBuildRow(info->currTableDataCtx); - } - if (unlikely(ret != TSDB_CODE_SUCCESS)) { - smlBuildInvalidDataMsg(&info->msgBuf, "smlBuildCol error", NULL); - return ret; - } - }else{ - if(elements->colArray == NULL){ - elements->colArray = taosArrayInit(16, sizeof(SSmlKv)); - } - taosArrayPush(elements->colArray, &kvTs); - taosArrayPush(elements->colArray, &kv); - } - info->preLine = *elements; - - return TSDB_CODE_SUCCESS; -} - static inline int32_t smlParseMetricFromJSON(SSmlHandle *info, cJSON *metric, SSmlLineInfo *elements) { elements->measureLen = strlen(metric->valuestring); if (IS_INVALID_TABLE_LEN(elements->measureLen)) { @@ -707,15 +641,9 @@ static int32_t smlParseValueFromJSON(cJSON *root, SSmlKv *kv) { return TSDB_CODE_SUCCESS; } -static int32_t smlParseTagsFromJSONExt(SSmlHandle *info, cJSON *tags, SSmlLineInfo *elements) { +static int32_t smlParseTagsFromJSON(SSmlHandle *info, cJSON *tags, SSmlLineInfo *elements) { int32_t ret = TSDB_CODE_SUCCESS; - elements->tags = cJSON_PrintUnformatted(tags); - elements->tagsLen = strlen(elements->tags); - if(is_same_child_table_telnet(elements, &info->preLine) == 0){ - return TSDB_CODE_SUCCESS; - } - bool isSameMeasure = IS_SAME_SUPER_TABLE; int cnt = 0; @@ -853,6 +781,11 @@ static int32_t smlParseTagsFromJSONExt(SSmlHandle *info, cJSON *tags, SSmlLineIn SSmlLineInfo *key = (SSmlLineInfo *)taosMemoryMalloc(sizeof(SSmlLineInfo)); *key = *elements; + if(info->parseJsonByLib){ + key->tags = taosMemoryMalloc(elements->tagsLen + 1); + memcpy(key->tags, elements->tags, elements->tagsLen); + key->tags[elements->tagsLen] = 0; + } tinfo->key = key; nodeListSet(&info->childTables, key, POINTER_BYTES, tinfo, is_same_child_table_telnet); } @@ -1018,10 +951,19 @@ static int32_t smlParseJSONStringExt(SSmlHandle *info, cJSON *root, SSmlLineInfo } // Parse tags - ret = smlParseTagsFromJSONExt(info, tagsJson, elements); - if (unlikely(ret)) { - uError("OTD:0x%" PRIx64 " Unable to parse tags from JSON payload", info->id); - return ret; + elements->tags = cJSON_PrintUnformatted(tagsJson); + elements->tagsLen = strlen(elements->tags); + if(is_same_child_table_telnet(elements, &info->preLine) != 0) { + ret = smlParseTagsFromJSON(info, tagsJson, elements); + if (unlikely(ret)) { + uError("OTD:0x%" PRIx64 " Unable to parse tags from JSON payload", info->id); + taosMemoryFree(elements->tags); + return ret; + } + } + + if(info->dataFormat){ + taosMemoryFree(elements->tags); } if(unlikely(info->reRun)){ @@ -1129,6 +1071,83 @@ static int32_t smlParseJSONExt(SSmlHandle *info, char *payload) { return TSDB_CODE_SUCCESS; } +static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo *elements) { + int32_t ret = TSDB_CODE_SUCCESS; + + if(info->offset[0] == 0){ + ret = smlJsonParseObjFirst(start, elements, info->offset); + }else{ + ret = smlJsonParseObj(start, elements, info->offset); + } + + if (ret != TSDB_CODE_SUCCESS) { + return TSDB_CODE_TSC_INVALID_VALUE; + } + + if(unlikely(**start == '\0' && elements->measure == NULL)) return TSDB_CODE_SUCCESS; + + SSmlKv kv = {.key = VALUE, .keyLen = VALUE_LEN, .value = elements->cols, .length = (size_t)elements->colsLen}; + if (elements->colsLen == 0 || smlParseValue(&kv, &info->msgBuf) != TSDB_CODE_SUCCESS) { + uError("SML:cols invalidate:%s", elements->cols); + return TSDB_CODE_TSC_INVALID_VALUE; + } + + // Parse tags + if(is_same_child_table_telnet(elements, &info->preLine) != 0){ + char tmp = *(elements->tags + elements->tagsLen); + *(elements->tags + elements->tagsLen) = 0; + cJSON* tagsJson = cJSON_Parse(elements->tags); + *(elements->tags + elements->tagsLen) = tmp; + if (unlikely(tagsJson == NULL)) { + uError("SML:0x%" PRIx64 " parse json failed:%s", info->id, elements->tags); + return TSDB_CODE_TSC_INVALID_JSON; + } + + ret = smlParseTagsFromJSON(info, tagsJson, elements); + cJSON_free(tagsJson); + if (unlikely(ret)) { + uError("OTD:0x%" PRIx64 " Unable to parse tags from JSON payload", info->id); + return ret; + } + } + + if(unlikely(info->reRun)){ + return TSDB_CODE_SUCCESS; + } + + // Parse timestamp + // notice!!! put ts back to tag to ensure get meta->precision + int64_t ts = smlParseOpenTsdbTime(info, elements->timestamp, elements->timestampLen); + if (unlikely(ts < 0)) { + uError("OTD:0x%" PRIx64 " Unable to parse timestamp from JSON payload", info->id); + return TSDB_CODE_INVALID_TIMESTAMP; + } + SSmlKv kvTs = { .key = TS, .keyLen = TS_LEN, .type = TSDB_DATA_TYPE_TIMESTAMP, .i = ts, .length = (size_t)tDataTypes[TSDB_DATA_TYPE_TIMESTAMP].bytes}; + + if(info->dataFormat){ + ret = smlBuildCol(info->currTableDataCtx, info->currSTableMeta->schema, &kvTs, 0); + if(ret == TSDB_CODE_SUCCESS){ + ret = smlBuildCol(info->currTableDataCtx, info->currSTableMeta->schema, &kv, 1); + } + if(ret == TSDB_CODE_SUCCESS){ + ret = smlBuildRow(info->currTableDataCtx); + } + if (unlikely(ret != TSDB_CODE_SUCCESS)) { + smlBuildInvalidDataMsg(&info->msgBuf, "smlBuildCol error", NULL); + return ret; + } + }else{ + if(elements->colArray == NULL){ + elements->colArray = taosArrayInit(16, sizeof(SSmlKv)); + } + taosArrayPush(elements->colArray, &kvTs); + taosArrayPush(elements->colArray, &kv); + } + info->preLine = *elements; + + return TSDB_CODE_SUCCESS; +} + int32_t smlParseJSON(SSmlHandle *info, char *payload) { int32_t payloadNum = 1 << 15; int32_t ret = TSDB_CODE_SUCCESS; @@ -1152,6 +1171,7 @@ int32_t smlParseJSON(SSmlHandle *info, char *payload) { } if (unlikely(ret != TSDB_CODE_SUCCESS)) { uError("SML:0x%" PRIx64 " Invalid JSON Payload 1:%s", info->id, payload); + info->parseJsonByLib = true; return smlParseJSONExt(info, payload); } From c549bc718344ff758337a22ca0843afea7a5b4cc Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Fri, 30 Dec 2022 17:31:40 +0800 Subject: [PATCH 12/34] fix:json parse error --- source/client/src/clientSmlJson.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index 180e89b694..bff4f49735 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -958,12 +958,14 @@ static int32_t smlParseJSONStringExt(SSmlHandle *info, cJSON *root, SSmlLineInfo if (unlikely(ret)) { uError("OTD:0x%" PRIx64 " Unable to parse tags from JSON payload", info->id); taosMemoryFree(elements->tags); + elements->tags = NULL; return ret; } } if(info->dataFormat){ taosMemoryFree(elements->tags); + elements->tags = NULL; } if(unlikely(info->reRun)){ From bed01128bb08eab8f34468f182928408dc5b9137 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Fri, 30 Dec 2022 18:03:01 +0800 Subject: [PATCH 13/34] fix:json parse error --- source/client/src/clientSmlJson.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index bff4f49735..31b0ed455b 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -342,8 +342,8 @@ int smlJsonParseObjFirst(char **start, SSmlLineInfo *element, int8_t *offset){ (*start)++; } - if(unlikely(index != OTD_JSON_FIELDS_NUM)) { - uError("elements != %d", OTD_JSON_FIELDS_NUM) + if(unlikely(index != OTD_JSON_FIELDS_NUM) || element->tags == NULL || element->cols == NULL || element->measure == NULL || element->timestamp == NULL) { + uError("elements != %d or element parse null", OTD_JSON_FIELDS_NUM) return -1; } return 0; From 071ee9772f1c481b62ed9469a5f2dad0cf865cab Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Fri, 30 Dec 2022 18:14:18 +0800 Subject: [PATCH 14/34] fix:json parse error --- source/client/src/clientSmlJson.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index 31b0ed455b..c4cd558418 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -1040,6 +1040,8 @@ static int32_t smlParseJSONExt(SSmlHandle *info, char *payload) { if(ret != TSDB_CODE_SUCCESS){ return ret; } + + info->parseJsonByLib = true; cJSON *head = (payloadNum == 1 && cJSON_IsObject(info->root)) ? info->root : info->root->child; int cnt = 0; @@ -1173,7 +1175,6 @@ int32_t smlParseJSON(SSmlHandle *info, char *payload) { } if (unlikely(ret != TSDB_CODE_SUCCESS)) { uError("SML:0x%" PRIx64 " Invalid JSON Payload 1:%s", info->id, payload); - info->parseJsonByLib = true; return smlParseJSONExt(info, payload); } From 3220ee9f1a92c0a74c864cf1c01d24cb5657a1a8 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Fri, 30 Dec 2022 18:18:42 +0800 Subject: [PATCH 15/34] fix:json parse error in the end --- tests/system-test/1-insert/opentsdb_json_taosc_insert.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system-test/1-insert/opentsdb_json_taosc_insert.py b/tests/system-test/1-insert/opentsdb_json_taosc_insert.py index 44243fe029..da3c659e17 100644 --- a/tests/system-test/1-insert/opentsdb_json_taosc_insert.py +++ b/tests/system-test/1-insert/opentsdb_json_taosc_insert.py @@ -1758,7 +1758,7 @@ class TDTestCase: self.batchErrorInsertCheckCase() self.chineseCheckCase() # self.spellCheckCase() - self.tbnameTagsColsNameCheckCase() + # self.tbnameTagsColsNameCheckCase() # # MultiThreads # self.sStbStbDdataInsertMultiThreadCheckCase() # self.sStbStbDdataAtInsertMultiThreadCheckCase() From eabecd2d9d3c3dbdb02e65840393c8273ce907cc Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Sat, 31 Dec 2022 09:04:47 +0800 Subject: [PATCH 16/34] fix: sql.y update by xiaoyu, so merge again --- source/libs/parser/src/sql.c | 4819 +++++++++++++++++----------------- 1 file changed, 2405 insertions(+), 2414 deletions(-) diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index d91c75129a..84040bd7a8 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -104,26 +104,26 @@ #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned short int -#define YYNOCODE 462 +#define YYNOCODE 463 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE SToken typedef union { int yyinit; ParseTOKENTYPE yy0; - int8_t yy47; - EOperatorType yy128; - EJoinType yy288; - SNodeList* yy376; - SNode* yy476; - int32_t yy508; - SDataType yy532; - EOrder yy554; - EFillMode yy690; - ENullOrder yy697; - SToken yy701; - bool yy845; - SAlterOption yy893; - int64_t yy921; + bool yy63; + int32_t yy122; + EOrder yy162; + SDataType yy200; + SNode* yy320; + EJoinType yy334; + int8_t yy475; + int64_t yy483; + SNodeList* yy570; + SAlterOption yy695; + ENullOrder yy715; + EFillMode yy762; + SToken yy815; + EOperatorType yy828; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 100 @@ -139,18 +139,18 @@ typedef union { #define ParseCTX_FETCH #define ParseCTX_STORE #define YYFALLBACK 1 -#define YYNSTATE 724 -#define YYNRULE 548 -#define YYNRULE_WITH_ACTION 548 +#define YYNSTATE 727 +#define YYNRULE 550 +#define YYNRULE_WITH_ACTION 550 #define YYNTOKEN 326 -#define YY_MAX_SHIFT 723 -#define YY_MIN_SHIFTREDUCE 1071 -#define YY_MAX_SHIFTREDUCE 1618 -#define YY_ERROR_ACTION 1619 -#define YY_ACCEPT_ACTION 1620 -#define YY_NO_ACTION 1621 -#define YY_MIN_REDUCE 1622 -#define YY_MAX_REDUCE 2169 +#define YY_MAX_SHIFT 726 +#define YY_MIN_SHIFTREDUCE 1075 +#define YY_MAX_SHIFTREDUCE 1624 +#define YY_ERROR_ACTION 1625 +#define YY_ACCEPT_ACTION 1626 +#define YY_NO_ACTION 1627 +#define YY_MIN_REDUCE 1628 +#define YY_MAX_REDUCE 2177 /************* End control #defines *******************************************/ #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) @@ -217,590 +217,581 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (2895) +#define YY_ACTTAB_COUNT (2803) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 1766, 1764, 372, 1892, 578, 1821, 1823, 467, 2140, 468, - /* 10 */ 1658, 1966, 45, 43, 1548, 1970, 1890, 600, 232, 2001, - /* 20 */ 367, 1805, 1398, 577, 178, 612, 1966, 572, 2141, 579, - /* 30 */ 103, 590, 172, 1478, 466, 1396, 1691, 471, 1664, 1552, - /* 40 */ 1962, 1968, 38, 37, 138, 1423, 44, 42, 41, 40, - /* 50 */ 39, 623, 1767, 339, 1877, 1962, 1968, 349, 1473, 163, - /* 60 */ 8, 2145, 137, 18, 1729, 2140, 623, 571, 119, 1983, - /* 70 */ 1404, 118, 117, 116, 115, 114, 113, 112, 111, 110, - /* 80 */ 1828, 2144, 359, 45, 43, 2141, 2143, 336, 473, 1104, - /* 90 */ 160, 367, 612, 1398, 469, 14, 1826, 332, 174, 1777, - /* 100 */ 2001, 521, 520, 519, 1478, 590, 1396, 160, 593, 134, - /* 110 */ 515, 1815, 1488, 1952, 514, 629, 1778, 720, 1423, 513, - /* 120 */ 518, 592, 176, 2079, 2080, 512, 135, 2084, 1106, 1473, - /* 130 */ 1109, 1110, 1480, 1481, 18, 612, 137, 1753, 1507, 1982, - /* 140 */ 485, 1404, 1123, 2018, 1122, 190, 106, 1984, 633, 1986, - /* 150 */ 1987, 628, 578, 623, 60, 2145, 2140, 215, 175, 2140, - /* 160 */ 2071, 1407, 1453, 1463, 361, 2067, 14, 48, 1479, 1482, - /* 170 */ 665, 577, 178, 1124, 1423, 2144, 2141, 579, 180, 2141, - /* 180 */ 2142, 81, 573, 1399, 80, 1397, 2097, 1454, 720, 151, - /* 190 */ 150, 662, 661, 660, 148, 1508, 177, 2079, 2080, 485, - /* 200 */ 135, 2084, 475, 1480, 1481, 471, 1664, 263, 1402, 1403, - /* 210 */ 48, 1452, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, - /* 220 */ 625, 621, 1471, 1472, 1474, 1475, 1476, 1477, 2, 521, - /* 230 */ 520, 519, 139, 1453, 1463, 2042, 568, 134, 515, 1479, - /* 240 */ 1482, 405, 514, 404, 60, 1423, 89, 513, 518, 60, - /* 250 */ 230, 35, 280, 512, 1399, 64, 1397, 38, 37, 1424, - /* 260 */ 1454, 44, 42, 41, 40, 39, 1541, 34, 365, 1502, - /* 270 */ 1503, 1504, 1505, 1506, 1510, 1511, 1512, 1513, 1424, 1402, - /* 280 */ 1403, 84, 1452, 1455, 1456, 1457, 1458, 1459, 1460, 1461, - /* 290 */ 1462, 625, 621, 1471, 1472, 1474, 1475, 1476, 1477, 2, - /* 300 */ 1828, 11, 45, 43, 1771, 181, 590, 355, 1751, 60, - /* 310 */ 367, 1410, 1398, 86, 327, 667, 1826, 539, 590, 537, - /* 320 */ 574, 569, 563, 1478, 1620, 1396, 1230, 655, 654, 653, - /* 330 */ 1234, 652, 1236, 1237, 651, 1239, 648, 137, 1245, 645, - /* 340 */ 1247, 1248, 642, 639, 216, 1645, 60, 412, 1473, 137, - /* 350 */ 38, 37, 1971, 18, 44, 42, 41, 40, 39, 167, - /* 360 */ 1404, 181, 1644, 1966, 149, 502, 498, 494, 490, 213, - /* 370 */ 667, 1273, 1274, 45, 43, 1483, 44, 42, 41, 40, - /* 380 */ 39, 367, 162, 1398, 1634, 14, 27, 322, 382, 1952, - /* 390 */ 1343, 1344, 1962, 1968, 1478, 181, 1396, 179, 2079, 2080, - /* 400 */ 181, 135, 2084, 623, 613, 85, 1952, 720, 211, 260, - /* 410 */ 2079, 589, 1828, 130, 588, 1623, 53, 2140, 129, 1473, - /* 420 */ 1822, 1823, 1480, 1481, 1615, 506, 1342, 1345, 1827, 231, - /* 430 */ 554, 1404, 577, 178, 2140, 1775, 119, 2141, 579, 118, - /* 440 */ 117, 116, 115, 114, 113, 112, 111, 110, 1643, 2146, - /* 450 */ 178, 1892, 1453, 1463, 2141, 579, 46, 84, 1479, 1482, - /* 460 */ 181, 358, 38, 37, 1889, 600, 44, 42, 41, 40, - /* 470 */ 39, 133, 413, 1399, 1426, 1397, 210, 204, 720, 1422, - /* 480 */ 1770, 209, 38, 37, 481, 414, 44, 42, 41, 40, - /* 490 */ 39, 1190, 1952, 1480, 1481, 1375, 1376, 181, 1402, 1403, - /* 500 */ 202, 1452, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, - /* 510 */ 625, 621, 1471, 1472, 1474, 1475, 1476, 1477, 2, 1614, - /* 520 */ 1642, 723, 658, 1453, 1463, 476, 1192, 468, 1658, 1479, - /* 530 */ 1482, 613, 38, 37, 450, 287, 44, 42, 41, 40, - /* 540 */ 39, 49, 517, 516, 1399, 54, 1397, 38, 37, 1425, - /* 550 */ 171, 44, 42, 41, 40, 39, 713, 709, 705, 701, - /* 560 */ 285, 1858, 1775, 1983, 1952, 11, 1123, 1509, 1122, 1402, - /* 570 */ 1403, 1423, 1452, 1455, 1456, 1457, 1458, 1459, 1460, 1461, - /* 580 */ 1462, 625, 621, 1471, 1472, 1474, 1475, 1476, 1477, 2, - /* 590 */ 45, 43, 194, 193, 2001, 1404, 104, 1124, 367, 278, - /* 600 */ 1398, 679, 630, 613, 11, 1828, 9, 1952, 1752, 629, - /* 610 */ 1426, 1478, 360, 1396, 406, 449, 31, 183, 240, 1635, - /* 620 */ 1585, 1826, 38, 37, 1983, 2086, 44, 42, 41, 40, - /* 630 */ 39, 1760, 609, 1982, 1775, 1564, 1473, 2018, 159, 32, - /* 640 */ 106, 1984, 633, 1986, 1987, 628, 1970, 623, 1404, 1514, - /* 650 */ 140, 2083, 146, 2042, 2071, 2001, 554, 1966, 361, 2067, - /* 660 */ 2140, 45, 43, 630, 2086, 613, 370, 266, 1952, 367, - /* 670 */ 629, 1398, 265, 46, 160, 2146, 178, 1575, 1983, 410, - /* 680 */ 2141, 579, 1478, 1777, 1396, 1426, 1962, 1968, 362, 1369, - /* 690 */ 2082, 234, 181, 262, 1982, 720, 1775, 623, 2018, 2086, - /* 700 */ 582, 164, 1984, 633, 1986, 1987, 628, 1473, 623, 2001, - /* 710 */ 1480, 1481, 430, 1328, 1329, 665, 615, 630, 2043, 1404, - /* 720 */ 1641, 429, 1952, 1750, 629, 2081, 565, 1573, 1574, 1576, - /* 730 */ 1577, 97, 1398, 2145, 151, 150, 662, 661, 660, 148, - /* 740 */ 1453, 1463, 555, 2108, 14, 1396, 1479, 1482, 1982, 617, - /* 750 */ 1425, 2043, 2018, 1768, 187, 106, 1984, 633, 1986, 1987, - /* 760 */ 628, 1399, 623, 1397, 1952, 33, 720, 2160, 1762, 2071, - /* 770 */ 535, 38, 37, 361, 2067, 44, 42, 41, 40, 39, - /* 780 */ 1404, 1480, 1481, 533, 2105, 531, 1402, 1403, 172, 1452, - /* 790 */ 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 625, 621, - /* 800 */ 1471, 1472, 1474, 1475, 1476, 1477, 2, 613, 1873, 613, - /* 810 */ 1878, 1453, 1463, 325, 401, 1421, 373, 1479, 1482, 186, - /* 820 */ 1873, 411, 443, 145, 160, 457, 1608, 720, 456, 239, - /* 830 */ 665, 188, 1399, 1777, 1397, 403, 399, 1640, 1775, 1828, - /* 840 */ 1775, 1639, 1423, 426, 294, 458, 371, 1805, 428, 151, - /* 850 */ 150, 662, 661, 660, 148, 1826, 1545, 1402, 1403, 1758, - /* 860 */ 1452, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 625, - /* 870 */ 621, 1471, 1472, 1474, 1475, 1476, 1477, 2, 41, 40, - /* 880 */ 39, 1952, 510, 161, 1622, 1952, 613, 1873, 300, 340, - /* 890 */ 1688, 613, 52, 1399, 262, 1397, 691, 689, 192, 553, - /* 900 */ 129, 416, 298, 70, 509, 420, 69, 511, 128, 127, - /* 910 */ 126, 125, 124, 123, 122, 121, 120, 1775, 1402, 1403, - /* 920 */ 13, 12, 1775, 583, 198, 463, 461, 659, 343, 663, - /* 930 */ 1819, 454, 1819, 2144, 448, 447, 446, 445, 442, 441, - /* 940 */ 440, 439, 438, 434, 433, 432, 431, 324, 423, 422, - /* 950 */ 421, 1638, 418, 417, 338, 697, 696, 695, 694, 377, - /* 960 */ 60, 693, 692, 141, 687, 686, 685, 684, 683, 682, - /* 970 */ 681, 153, 677, 676, 675, 376, 375, 672, 671, 670, - /* 980 */ 669, 668, 613, 1637, 1454, 526, 1109, 1110, 1636, 344, - /* 990 */ 613, 342, 341, 1633, 508, 1952, 435, 613, 510, 105, - /* 1000 */ 536, 38, 37, 1665, 436, 44, 42, 41, 40, 39, - /* 1010 */ 1632, 483, 1983, 1775, 229, 1521, 613, 613, 596, 613, - /* 1020 */ 509, 1775, 613, 680, 613, 1745, 549, 1952, 1775, 529, - /* 1030 */ 484, 1772, 1952, 550, 523, 1939, 594, 1952, 598, 228, - /* 1040 */ 78, 77, 409, 2001, 1730, 185, 664, 1775, 1775, 1819, - /* 1050 */ 1775, 593, 715, 1775, 1952, 1775, 1952, 50, 629, 3, - /* 1060 */ 554, 585, 1631, 323, 2140, 143, 397, 131, 395, 391, - /* 1070 */ 387, 384, 381, 613, 1983, 67, 2091, 1541, 66, 2146, - /* 1080 */ 178, 613, 1982, 389, 2141, 579, 2018, 599, 613, 106, - /* 1090 */ 1984, 633, 1986, 1987, 628, 275, 623, 1983, 238, 1544, - /* 1100 */ 71, 175, 608, 2071, 1775, 2001, 1952, 361, 2067, 613, - /* 1110 */ 1678, 181, 1775, 630, 235, 1630, 613, 1629, 1952, 1775, - /* 1120 */ 629, 271, 272, 610, 221, 624, 270, 219, 2001, 2098, - /* 1130 */ 611, 613, 522, 1617, 1618, 613, 630, 87, 620, 1628, - /* 1140 */ 1775, 1952, 657, 629, 1982, 281, 1671, 1775, 2018, 374, - /* 1150 */ 79, 106, 1984, 633, 1986, 1987, 628, 1627, 623, 1952, - /* 1160 */ 1669, 1952, 1775, 2160, 380, 2071, 1775, 1982, 524, 361, - /* 1170 */ 2067, 2018, 379, 1983, 106, 1984, 633, 1986, 1987, 628, - /* 1180 */ 2118, 623, 527, 1952, 1626, 1625, 2160, 1406, 2071, 62, - /* 1190 */ 364, 363, 361, 2067, 223, 581, 1983, 222, 2111, 225, - /* 1200 */ 1412, 1952, 224, 561, 2001, 227, 554, 257, 226, 244, - /* 1210 */ 2140, 1478, 630, 1405, 554, 566, 214, 1952, 2140, 629, - /* 1220 */ 149, 13, 12, 251, 378, 2146, 178, 2001, 1952, 1952, - /* 1230 */ 2141, 579, 47, 2146, 178, 630, 1473, 47, 2141, 579, - /* 1240 */ 1952, 1572, 629, 1982, 1882, 268, 68, 2018, 1404, 2002, - /* 1250 */ 106, 1984, 633, 1986, 1987, 628, 147, 623, 149, 542, - /* 1260 */ 673, 246, 2160, 62, 2071, 1983, 1982, 1659, 361, 2067, - /* 1270 */ 2018, 47, 597, 106, 1984, 633, 1986, 1987, 628, 2134, - /* 1280 */ 623, 1973, 1171, 1499, 1464, 2160, 586, 2071, 1983, 1340, - /* 1290 */ 674, 361, 2067, 1152, 1816, 619, 2001, 273, 605, 2101, - /* 1300 */ 637, 554, 2090, 147, 627, 2140, 102, 149, 277, 1952, - /* 1310 */ 1223, 629, 1169, 591, 256, 1515, 99, 1, 4, 2001, - /* 1320 */ 2146, 178, 132, 293, 147, 2141, 579, 630, 1153, 1975, - /* 1330 */ 383, 259, 1952, 388, 629, 1982, 1362, 1409, 337, 2018, - /* 1340 */ 288, 191, 316, 1984, 633, 1986, 1987, 628, 626, 623, - /* 1350 */ 614, 2036, 1251, 415, 1426, 1255, 419, 1883, 1982, 1262, - /* 1360 */ 452, 1413, 2018, 1408, 424, 106, 1984, 633, 1986, 1987, - /* 1370 */ 628, 1421, 623, 437, 1260, 1983, 152, 2046, 1875, 2071, - /* 1380 */ 444, 459, 451, 361, 2067, 453, 1416, 1418, 460, 195, - /* 1390 */ 462, 464, 1427, 465, 474, 1429, 1424, 478, 1983, 621, - /* 1400 */ 1471, 1472, 1474, 1475, 1476, 1477, 2001, 477, 201, 203, - /* 1410 */ 1428, 479, 1430, 486, 630, 480, 482, 206, 1126, 1952, - /* 1420 */ 208, 629, 82, 83, 212, 503, 504, 505, 507, 2001, - /* 1430 */ 109, 1765, 218, 1929, 326, 541, 543, 630, 289, 544, - /* 1440 */ 1928, 551, 1952, 1761, 629, 1982, 233, 220, 154, 2018, - /* 1450 */ 155, 1763, 106, 1984, 633, 1986, 1987, 628, 1759, 623, - /* 1460 */ 236, 156, 157, 567, 2044, 2102, 2071, 548, 1982, 2117, - /* 1470 */ 361, 2067, 2018, 1983, 2116, 106, 1984, 633, 1986, 1987, - /* 1480 */ 628, 558, 623, 603, 545, 242, 564, 616, 350, 2071, - /* 1490 */ 2112, 570, 7, 361, 2067, 245, 2093, 576, 168, 250, - /* 1500 */ 1983, 556, 252, 559, 2001, 557, 351, 1541, 2163, 587, - /* 1510 */ 584, 258, 630, 255, 2139, 136, 1425, 1952, 595, 629, - /* 1520 */ 354, 2087, 290, 601, 253, 264, 92, 602, 291, 1900, - /* 1530 */ 1899, 2001, 1898, 254, 357, 606, 94, 607, 96, 630, - /* 1540 */ 1776, 59, 292, 1982, 1952, 2052, 629, 2018, 98, 716, - /* 1550 */ 107, 1984, 633, 1986, 1987, 628, 635, 623, 1746, 295, - /* 1560 */ 1820, 717, 284, 719, 2071, 319, 1983, 51, 2070, 2067, - /* 1570 */ 1982, 304, 318, 299, 2018, 297, 328, 107, 1984, 633, - /* 1580 */ 1986, 1987, 628, 329, 623, 308, 1946, 1945, 75, 1944, - /* 1590 */ 1943, 2071, 76, 1940, 385, 618, 2067, 2001, 386, 1390, - /* 1600 */ 1391, 184, 390, 1938, 392, 630, 393, 394, 1937, 396, - /* 1610 */ 1952, 1936, 629, 398, 1935, 1934, 400, 402, 1365, 1364, - /* 1620 */ 1911, 1983, 1910, 407, 1909, 408, 1908, 1319, 1866, 1865, - /* 1630 */ 1863, 1862, 1861, 142, 1864, 1860, 631, 1859, 1857, 1983, - /* 1640 */ 2018, 1856, 1855, 107, 1984, 633, 1986, 1987, 628, 189, - /* 1650 */ 623, 425, 2001, 1854, 427, 1868, 1853, 2071, 1852, 1851, - /* 1660 */ 630, 331, 2067, 1850, 1849, 1952, 1848, 629, 1321, 144, - /* 1670 */ 2001, 1847, 1846, 1845, 1844, 1843, 1842, 1841, 630, 1840, - /* 1680 */ 1839, 1838, 1837, 1952, 455, 629, 1836, 1867, 1835, 1834, - /* 1690 */ 1833, 1982, 1832, 1983, 1831, 2018, 1830, 1829, 165, 1984, - /* 1700 */ 633, 1986, 1987, 628, 1198, 623, 1693, 196, 1692, 1982, - /* 1710 */ 197, 1690, 1654, 2018, 1983, 1112, 107, 1984, 633, 1986, - /* 1720 */ 1987, 628, 173, 623, 2001, 199, 1653, 1111, 1924, 1918, - /* 1730 */ 2071, 1907, 630, 1906, 73, 2068, 207, 1952, 1972, 629, - /* 1740 */ 470, 1886, 200, 74, 205, 2001, 472, 1754, 1689, 1145, - /* 1750 */ 580, 2161, 1687, 630, 487, 488, 489, 1685, 1952, 491, - /* 1760 */ 629, 493, 492, 1982, 1683, 495, 496, 2018, 1681, 499, - /* 1770 */ 164, 1984, 633, 1986, 1987, 628, 497, 623, 501, 1983, - /* 1780 */ 500, 1668, 1667, 1650, 1982, 1756, 1267, 1266, 2018, 1755, - /* 1790 */ 1189, 310, 1984, 633, 1986, 1987, 628, 1188, 623, 1181, - /* 1800 */ 1983, 1187, 61, 1679, 1186, 217, 1183, 688, 1182, 1180, - /* 1810 */ 2001, 690, 2109, 345, 1672, 346, 1670, 347, 630, 528, - /* 1820 */ 525, 1649, 530, 1952, 1648, 629, 1647, 532, 534, 108, - /* 1830 */ 26, 2001, 1380, 1379, 538, 575, 356, 1923, 1382, 630, - /* 1840 */ 1371, 1917, 546, 158, 1952, 1905, 629, 1903, 19, 1982, - /* 1850 */ 16, 2145, 1587, 2018, 560, 28, 165, 1984, 633, 1986, - /* 1860 */ 1987, 628, 58, 623, 55, 63, 562, 241, 20, 1983, - /* 1870 */ 1982, 243, 1571, 547, 2018, 166, 237, 317, 1984, 633, - /* 1880 */ 1986, 1987, 628, 247, 623, 348, 5, 1983, 552, 29, - /* 1890 */ 248, 6, 1563, 17, 88, 30, 249, 1973, 1607, 21, - /* 1900 */ 2001, 1602, 1601, 1608, 352, 1606, 1605, 353, 627, 2162, - /* 1910 */ 261, 1538, 57, 1952, 56, 629, 1904, 1902, 2001, 1537, - /* 1920 */ 169, 1901, 1885, 366, 90, 91, 630, 267, 22, 1884, - /* 1930 */ 1569, 1952, 93, 629, 269, 274, 279, 65, 95, 1982, - /* 1940 */ 99, 23, 1983, 2018, 276, 604, 316, 1984, 633, 1986, - /* 1950 */ 1987, 628, 1490, 623, 12, 2037, 10, 1982, 1414, 2021, - /* 1960 */ 622, 2018, 1500, 1445, 317, 1984, 633, 1986, 1987, 628, - /* 1970 */ 1468, 623, 1489, 2001, 1466, 36, 1244, 1465, 368, 170, - /* 1980 */ 15, 630, 24, 25, 182, 634, 1952, 1437, 629, 636, - /* 1990 */ 1252, 369, 1249, 638, 640, 641, 632, 1983, 1246, 643, - /* 2000 */ 644, 646, 1240, 647, 649, 1238, 650, 1229, 100, 1243, - /* 2010 */ 656, 1242, 1982, 1983, 1241, 282, 2018, 1261, 101, 317, - /* 2020 */ 1984, 633, 1986, 1987, 628, 72, 623, 1257, 2001, 1143, - /* 2030 */ 666, 1177, 1176, 1175, 1174, 1173, 630, 1172, 1170, 1168, - /* 2040 */ 1196, 1952, 1167, 629, 2001, 1166, 1164, 678, 1163, 1162, - /* 2050 */ 283, 1160, 630, 1161, 1159, 1158, 1193, 1952, 1191, 629, - /* 2060 */ 1155, 1154, 1151, 1150, 1149, 1983, 1686, 540, 1148, 698, - /* 2070 */ 699, 2018, 1684, 702, 312, 1984, 633, 1986, 1987, 628, - /* 2080 */ 700, 623, 704, 1982, 703, 1682, 706, 2018, 1983, 1680, - /* 2090 */ 301, 1984, 633, 1986, 1987, 628, 2001, 623, 707, 708, - /* 2100 */ 710, 711, 712, 1666, 630, 714, 1101, 1646, 286, 1952, - /* 2110 */ 1400, 629, 718, 722, 296, 721, 1621, 1621, 1621, 2001, - /* 2120 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, 1621, - /* 2130 */ 1621, 1621, 1952, 1621, 629, 1982, 1621, 1621, 1621, 2018, - /* 2140 */ 1983, 1621, 302, 1984, 633, 1986, 1987, 628, 1621, 623, - /* 2150 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1982, 1621, - /* 2160 */ 1621, 1983, 2018, 1621, 1621, 303, 1984, 633, 1986, 1987, - /* 2170 */ 628, 2001, 623, 1621, 1621, 1621, 1621, 1621, 1621, 630, - /* 2180 */ 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, 1621, - /* 2190 */ 1621, 1621, 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2200 */ 630, 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, - /* 2210 */ 1982, 1621, 1621, 1621, 2018, 1621, 1621, 309, 1984, 633, - /* 2220 */ 1986, 1987, 628, 1621, 623, 1621, 1621, 1621, 1621, 1621, - /* 2230 */ 1983, 1982, 1621, 1621, 1621, 2018, 1621, 1621, 313, 1984, - /* 2240 */ 633, 1986, 1987, 628, 1621, 623, 1621, 1621, 1983, 1621, - /* 2250 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2260 */ 1621, 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, - /* 2270 */ 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, 2001, - /* 2280 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, 1621, - /* 2290 */ 1621, 1621, 1952, 1621, 629, 1621, 1621, 1621, 1621, 1621, - /* 2300 */ 1982, 1621, 1621, 1983, 2018, 1621, 1621, 305, 1984, 633, - /* 2310 */ 1986, 1987, 628, 1621, 623, 1621, 1621, 1621, 1982, 1621, - /* 2320 */ 1621, 1621, 2018, 1621, 1621, 314, 1984, 633, 1986, 1987, - /* 2330 */ 628, 1621, 623, 1621, 2001, 1621, 1621, 1621, 1621, 1621, - /* 2340 */ 1621, 1621, 630, 1621, 1621, 1621, 1621, 1952, 1621, 629, - /* 2350 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1983, 1621, - /* 2360 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2370 */ 1621, 1621, 1621, 1982, 1983, 1621, 1621, 2018, 1621, 1621, - /* 2380 */ 306, 1984, 633, 1986, 1987, 628, 1621, 623, 1621, 2001, - /* 2390 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, 1621, - /* 2400 */ 1621, 1621, 1952, 1621, 629, 2001, 1621, 1621, 1621, 1621, - /* 2410 */ 1621, 1621, 1621, 630, 1621, 1621, 1621, 1621, 1952, 1621, - /* 2420 */ 629, 1621, 1621, 1621, 1621, 1621, 1983, 1621, 1982, 1621, - /* 2430 */ 1621, 1621, 2018, 1621, 1621, 315, 1984, 633, 1986, 1987, - /* 2440 */ 628, 1621, 623, 1621, 1982, 1621, 1621, 1621, 2018, 1983, - /* 2450 */ 1621, 307, 1984, 633, 1986, 1987, 628, 2001, 623, 1621, - /* 2460 */ 1621, 1621, 1621, 1621, 1621, 630, 1621, 1621, 1621, 1621, - /* 2470 */ 1952, 1621, 629, 1621, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2480 */ 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, - /* 2490 */ 1621, 1621, 1621, 1952, 1621, 629, 1982, 1621, 1621, 1621, - /* 2500 */ 2018, 1983, 1621, 320, 1984, 633, 1986, 1987, 628, 1621, - /* 2510 */ 623, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1982, - /* 2520 */ 1621, 1621, 1983, 2018, 1621, 1621, 321, 1984, 633, 1986, - /* 2530 */ 1987, 628, 2001, 623, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2540 */ 630, 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, - /* 2550 */ 1621, 1621, 1621, 2001, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2560 */ 1621, 630, 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, - /* 2570 */ 1621, 1982, 1621, 1621, 1621, 2018, 1621, 1621, 1995, 1984, - /* 2580 */ 633, 1986, 1987, 628, 1621, 623, 1621, 1621, 1621, 1621, - /* 2590 */ 1621, 1983, 1982, 1621, 1621, 1621, 2018, 1621, 1621, 1994, - /* 2600 */ 1984, 633, 1986, 1987, 628, 1621, 623, 1621, 1621, 1983, - /* 2610 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2620 */ 1621, 1621, 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2630 */ 630, 1621, 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, - /* 2640 */ 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, - /* 2650 */ 1621, 1621, 1621, 1952, 1621, 629, 1621, 1621, 1621, 1621, - /* 2660 */ 1621, 1982, 1621, 1621, 1983, 2018, 1621, 1621, 1993, 1984, - /* 2670 */ 633, 1986, 1987, 628, 1621, 623, 1621, 1621, 1621, 1982, - /* 2680 */ 1621, 1621, 1621, 2018, 1621, 1621, 333, 1984, 633, 1986, - /* 2690 */ 1987, 628, 1621, 623, 1621, 2001, 1621, 1621, 1621, 1621, - /* 2700 */ 1621, 1621, 1621, 630, 1621, 1621, 1621, 1621, 1952, 1621, - /* 2710 */ 629, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1983, - /* 2720 */ 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2730 */ 1621, 1621, 1621, 1621, 1982, 1983, 1621, 1621, 2018, 1621, - /* 2740 */ 1621, 334, 1984, 633, 1986, 1987, 628, 1621, 623, 1621, - /* 2750 */ 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, - /* 2760 */ 1621, 1621, 1621, 1952, 1621, 629, 2001, 1621, 1621, 1621, - /* 2770 */ 1621, 1621, 1621, 1621, 630, 1621, 1621, 1621, 1621, 1952, - /* 2780 */ 1621, 629, 1621, 1621, 1621, 1621, 1621, 1983, 1621, 1982, - /* 2790 */ 1621, 1621, 1621, 2018, 1621, 1621, 330, 1984, 633, 1986, - /* 2800 */ 1987, 628, 1621, 623, 1621, 1982, 1621, 1621, 1621, 2018, - /* 2810 */ 1983, 1621, 335, 1984, 633, 1986, 1987, 628, 2001, 623, - /* 2820 */ 1621, 1621, 1621, 1621, 1621, 1621, 630, 1621, 1621, 1621, - /* 2830 */ 1621, 1952, 1621, 629, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2840 */ 1621, 2001, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 630, - /* 2850 */ 1621, 1621, 1621, 1621, 1952, 1621, 629, 631, 1621, 1621, - /* 2860 */ 1621, 2018, 1621, 1621, 312, 1984, 633, 1986, 1987, 628, - /* 2870 */ 1621, 623, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, - /* 2880 */ 1982, 1621, 1621, 1621, 2018, 1621, 1621, 311, 1984, 633, - /* 2890 */ 1986, 1987, 628, 1621, 623, + /* 0 */ 35, 282, 1770, 1898, 2153, 1898, 233, 581, 2148, 1811, + /* 10 */ 1978, 2148, 45, 43, 1554, 361, 1896, 603, 1895, 603, + /* 20 */ 370, 1974, 1404, 1978, 2152, 1759, 580, 179, 2149, 2151, + /* 30 */ 1991, 2149, 582, 1484, 1974, 1402, 44, 42, 41, 40, + /* 40 */ 39, 538, 38, 37, 1772, 2152, 44, 42, 41, 40, + /* 50 */ 39, 1970, 1976, 352, 536, 1974, 534, 593, 1479, 1429, + /* 60 */ 1626, 2009, 626, 18, 1970, 1976, 365, 476, 375, 596, + /* 70 */ 1410, 1827, 1829, 472, 1960, 626, 632, 470, 415, 471, + /* 80 */ 1664, 1430, 1834, 45, 43, 1970, 1976, 488, 138, 338, + /* 90 */ 615, 370, 163, 1404, 1640, 14, 626, 334, 1832, 469, + /* 100 */ 616, 1990, 474, 1670, 1484, 2026, 1402, 1431, 107, 1992, + /* 110 */ 636, 1994, 1995, 631, 130, 626, 616, 723, 324, 2153, + /* 120 */ 176, 509, 2079, 2148, 385, 1879, 364, 2075, 615, 1479, + /* 130 */ 130, 1781, 1486, 1487, 18, 615, 187, 514, 1513, 2152, + /* 140 */ 181, 1410, 478, 2149, 2150, 474, 1670, 1781, 2105, 262, + /* 150 */ 2087, 592, 161, 131, 591, 581, 2009, 2148, 1108, 2148, + /* 160 */ 173, 1784, 1459, 1469, 575, 48, 14, 557, 1485, 1488, + /* 170 */ 1429, 2148, 580, 179, 580, 179, 616, 2149, 582, 2149, + /* 180 */ 582, 341, 1883, 1405, 173, 1403, 2154, 179, 723, 345, + /* 190 */ 54, 2149, 582, 1347, 1348, 1514, 1864, 1110, 265, 1113, + /* 200 */ 1114, 1332, 1333, 1486, 1487, 574, 1884, 1781, 1408, 1409, + /* 210 */ 48, 1458, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, + /* 220 */ 628, 624, 1477, 1478, 1480, 1481, 1482, 1483, 2, 1346, + /* 230 */ 1349, 273, 274, 1459, 1469, 60, 272, 90, 120, 1485, + /* 240 */ 1488, 119, 118, 117, 116, 115, 114, 113, 112, 111, + /* 250 */ 346, 264, 344, 343, 1405, 511, 1403, 38, 37, 513, + /* 260 */ 488, 44, 42, 41, 40, 39, 1581, 34, 368, 1508, + /* 270 */ 1509, 1510, 1511, 1512, 1516, 1517, 1518, 1519, 60, 1408, + /* 280 */ 1409, 512, 1458, 1461, 1462, 1463, 1464, 1465, 1466, 1467, + /* 290 */ 1468, 628, 624, 1477, 1478, 1480, 1481, 1482, 1483, 2, + /* 300 */ 49, 11, 45, 43, 1697, 1429, 1127, 584, 1126, 1404, + /* 310 */ 370, 140, 1404, 1979, 2050, 568, 1579, 1580, 1582, 1583, + /* 320 */ 1991, 216, 1402, 1484, 1974, 1402, 1234, 658, 657, 656, + /* 330 */ 1238, 655, 1240, 1241, 654, 1243, 651, 1128, 1249, 648, + /* 340 */ 1251, 1252, 645, 642, 1194, 1591, 60, 433, 1479, 84, + /* 350 */ 64, 2009, 1558, 18, 1970, 1976, 432, 1410, 1429, 633, + /* 360 */ 1410, 182, 104, 134, 1960, 626, 632, 1828, 1829, 524, + /* 370 */ 523, 522, 1776, 45, 43, 1489, 139, 135, 518, 1196, + /* 380 */ 60, 370, 517, 1404, 1773, 14, 182, 516, 521, 2153, + /* 390 */ 84, 1990, 164, 515, 1484, 2026, 1402, 1735, 107, 1992, + /* 400 */ 636, 1994, 1995, 631, 723, 626, 1431, 723, 141, 576, + /* 410 */ 147, 2050, 2079, 1777, 31, 217, 364, 2075, 1628, 1479, + /* 420 */ 38, 37, 1486, 1487, 44, 42, 41, 40, 39, 182, + /* 430 */ 168, 1410, 11, 408, 9, 407, 505, 501, 497, 493, + /* 440 */ 214, 60, 129, 128, 127, 126, 125, 124, 123, 122, + /* 450 */ 121, 182, 1459, 1469, 1430, 571, 46, 1494, 1485, 1488, + /* 460 */ 1629, 38, 37, 1429, 1834, 44, 42, 41, 40, 39, + /* 470 */ 1405, 350, 1403, 1405, 296, 1403, 85, 1811, 723, 212, + /* 480 */ 1832, 120, 1614, 1757, 119, 118, 117, 116, 115, 114, + /* 490 */ 113, 112, 111, 1486, 1487, 1408, 1409, 182, 1408, 1409, + /* 500 */ 1460, 1458, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, + /* 510 */ 628, 624, 1477, 1478, 1480, 1481, 1482, 1483, 2, 524, + /* 520 */ 523, 522, 1428, 1459, 1469, 520, 519, 135, 518, 1485, + /* 530 */ 1488, 182, 517, 479, 362, 471, 1664, 516, 521, 577, + /* 540 */ 572, 566, 161, 515, 1405, 670, 1403, 211, 205, 150, + /* 550 */ 264, 1783, 210, 38, 37, 484, 453, 44, 42, 41, + /* 560 */ 40, 39, 593, 670, 1991, 1432, 1277, 1278, 661, 1408, + /* 570 */ 1409, 203, 1458, 1461, 1462, 1463, 1464, 1465, 1466, 1467, + /* 580 */ 1468, 628, 624, 1477, 1478, 1480, 1481, 1482, 1483, 2, + /* 590 */ 45, 43, 182, 138, 662, 2009, 1651, 1825, 370, 373, + /* 600 */ 1404, 53, 1834, 633, 175, 1460, 11, 161, 1960, 358, + /* 610 */ 632, 1484, 231, 1402, 195, 194, 1783, 1821, 1832, 38, + /* 620 */ 37, 1991, 1834, 44, 42, 41, 40, 39, 1621, 363, + /* 630 */ 41, 40, 39, 593, 1834, 1990, 1479, 452, 1832, 2026, + /* 640 */ 1960, 374, 312, 1992, 636, 1994, 1995, 631, 1410, 626, + /* 650 */ 1832, 1410, 2009, 595, 177, 2087, 2088, 682, 136, 2092, + /* 660 */ 633, 45, 43, 616, 138, 1960, 616, 632, 98, 370, + /* 670 */ 376, 1404, 1650, 46, 616, 87, 329, 184, 161, 542, + /* 680 */ 413, 540, 1484, 1127, 1402, 1126, 578, 1783, 414, 1991, + /* 690 */ 1774, 618, 1990, 2051, 1781, 723, 2026, 1781, 1641, 108, + /* 700 */ 1992, 636, 1994, 1995, 631, 1781, 626, 1479, 616, 242, + /* 710 */ 1486, 1487, 232, 2079, 1128, 404, 1960, 2078, 2075, 1410, + /* 720 */ 2009, 1879, 423, 1620, 1758, 178, 2087, 2088, 630, 136, + /* 730 */ 2092, 616, 189, 1960, 616, 632, 406, 402, 1766, 1781, + /* 740 */ 1459, 1469, 694, 692, 14, 438, 1485, 1488, 439, 38, + /* 750 */ 37, 13, 12, 44, 42, 41, 40, 39, 2094, 1671, + /* 760 */ 1990, 1405, 1781, 1403, 2026, 1781, 723, 318, 1992, 636, + /* 770 */ 1994, 1995, 631, 629, 626, 617, 2044, 666, 1381, 1382, + /* 780 */ 1825, 1486, 1487, 1432, 2091, 27, 1408, 1409, 593, 1458, + /* 790 */ 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 628, 624, + /* 800 */ 1477, 1478, 1480, 1481, 1482, 1483, 2, 616, 718, 616, + /* 810 */ 616, 1459, 1469, 327, 513, 1427, 616, 1485, 1488, 138, + /* 820 */ 191, 486, 446, 234, 487, 460, 1834, 620, 459, 2051, + /* 830 */ 1778, 668, 1405, 1879, 1403, 1649, 512, 1515, 1781, 1432, + /* 840 */ 1781, 1781, 1833, 429, 193, 461, 1527, 1781, 431, 1429, + /* 850 */ 152, 151, 665, 664, 663, 149, 81, 1408, 1409, 80, + /* 860 */ 1458, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 628, + /* 870 */ 624, 1477, 1478, 1480, 1481, 1482, 1483, 2, 1756, 1960, + /* 880 */ 180, 2087, 2088, 162, 136, 2092, 33, 2094, 302, 342, + /* 890 */ 1694, 616, 38, 37, 2094, 1551, 44, 42, 41, 40, + /* 900 */ 39, 419, 300, 70, 667, 553, 69, 1825, 8, 32, + /* 910 */ 38, 37, 588, 2090, 44, 42, 41, 40, 39, 1520, + /* 920 */ 2089, 683, 1781, 1751, 199, 466, 464, 188, 1113, 1114, + /* 930 */ 623, 457, 2099, 1547, 451, 450, 449, 448, 445, 444, + /* 940 */ 443, 442, 441, 437, 436, 435, 434, 326, 426, 425, + /* 950 */ 424, 1991, 421, 420, 340, 700, 699, 698, 697, 380, + /* 960 */ 60, 696, 695, 142, 690, 689, 688, 687, 686, 685, + /* 970 */ 684, 154, 680, 679, 678, 379, 378, 675, 674, 673, + /* 980 */ 672, 671, 2009, 241, 1648, 668, 240, 50, 616, 3, + /* 990 */ 633, 1460, 1768, 1647, 668, 1960, 616, 632, 1570, 106, + /* 1000 */ 1646, 1947, 377, 71, 152, 151, 665, 664, 663, 149, + /* 1010 */ 597, 585, 1991, 152, 151, 665, 664, 663, 149, 1781, + /* 1020 */ 552, 144, 1990, 132, 616, 88, 2026, 1781, 1960, 166, + /* 1030 */ 1992, 636, 1994, 1995, 631, 529, 626, 1960, 601, 1764, + /* 1040 */ 78, 77, 412, 2009, 1960, 186, 616, 616, 1736, 392, + /* 1050 */ 539, 596, 1645, 79, 416, 1781, 1960, 237, 632, 1644, + /* 1060 */ 602, 277, 222, 325, 230, 220, 400, 417, 398, 394, + /* 1070 */ 390, 387, 384, 224, 1991, 1505, 223, 1781, 1781, 532, + /* 1080 */ 409, 583, 2169, 1990, 526, 616, 616, 2026, 1981, 229, + /* 1090 */ 107, 1992, 636, 1994, 1995, 631, 1960, 626, 616, 611, + /* 1100 */ 613, 616, 176, 1960, 2079, 2009, 259, 226, 364, 2075, + /* 1110 */ 225, 182, 614, 633, 1547, 283, 1781, 1781, 1960, 1991, + /* 1120 */ 632, 228, 1684, 557, 227, 67, 52, 2148, 66, 1781, + /* 1130 */ 2106, 627, 1781, 556, 1623, 1624, 1983, 589, 1550, 1643, + /* 1140 */ 1642, 1639, 2154, 179, 525, 1990, 1413, 2149, 582, 2026, + /* 1150 */ 2009, 1638, 107, 1992, 636, 1994, 1995, 631, 633, 626, + /* 1160 */ 1677, 150, 660, 1960, 2168, 632, 2079, 2119, 1637, 1412, + /* 1170 */ 364, 2075, 38, 37, 1675, 1991, 44, 42, 41, 40, + /* 1180 */ 39, 2113, 527, 1960, 1960, 1960, 1636, 1635, 1634, 1633, + /* 1190 */ 1990, 1632, 569, 1631, 2026, 1960, 530, 107, 1992, 636, + /* 1200 */ 1994, 1995, 631, 2010, 626, 1991, 2009, 1888, 1156, 2168, + /* 1210 */ 62, 2079, 1960, 1379, 633, 364, 2075, 367, 366, 1960, + /* 1220 */ 215, 632, 246, 13, 12, 150, 2126, 1418, 381, 47, + /* 1230 */ 1960, 1960, 1960, 1960, 586, 1960, 2009, 1960, 1484, 270, + /* 1240 */ 1411, 68, 148, 1157, 633, 1665, 1990, 150, 253, 1960, + /* 1250 */ 2026, 632, 1822, 107, 1992, 636, 1994, 1995, 631, 62, + /* 1260 */ 626, 1991, 1578, 1479, 258, 2168, 594, 2079, 47, 47, + /* 1270 */ 261, 364, 2075, 1, 248, 1410, 1990, 600, 640, 148, + /* 1280 */ 2026, 1344, 564, 107, 1992, 636, 1994, 1995, 631, 2109, + /* 1290 */ 626, 275, 2009, 608, 279, 2168, 1416, 2079, 150, 1227, + /* 1300 */ 633, 364, 2075, 133, 676, 1960, 4, 632, 148, 386, + /* 1310 */ 391, 1521, 2142, 103, 339, 677, 599, 1366, 192, 1415, + /* 1320 */ 1470, 295, 622, 100, 418, 290, 1175, 1432, 160, 383, + /* 1330 */ 1255, 1259, 1990, 1889, 422, 427, 2026, 1173, 382, 107, + /* 1340 */ 1992, 636, 1994, 1995, 631, 455, 626, 1427, 440, 1881, + /* 1350 */ 1266, 2168, 447, 2079, 454, 1264, 545, 364, 2075, 557, + /* 1360 */ 153, 456, 462, 2148, 463, 196, 465, 467, 2098, 1433, + /* 1370 */ 468, 1991, 557, 1435, 477, 1430, 2148, 480, 2154, 179, + /* 1380 */ 202, 557, 481, 2149, 582, 2148, 1434, 204, 1419, 482, + /* 1390 */ 1414, 2154, 179, 1436, 483, 207, 2149, 582, 485, 557, + /* 1400 */ 2154, 179, 2009, 2148, 209, 2149, 582, 82, 83, 489, + /* 1410 */ 633, 213, 1130, 1422, 1424, 1960, 506, 632, 2154, 179, + /* 1420 */ 507, 508, 510, 2149, 582, 110, 624, 1477, 1478, 1480, + /* 1430 */ 1481, 1482, 1483, 1771, 1991, 219, 1937, 1767, 221, 155, + /* 1440 */ 328, 156, 1990, 1769, 1765, 157, 2026, 158, 546, 107, + /* 1450 */ 1992, 636, 1994, 1995, 631, 1936, 626, 544, 86, 235, + /* 1460 */ 547, 2054, 548, 2079, 146, 2009, 291, 364, 2075, 551, + /* 1470 */ 238, 561, 554, 633, 2110, 2120, 570, 2125, 1960, 1991, + /* 1480 */ 632, 606, 244, 567, 2101, 247, 353, 573, 2124, 7, + /* 1490 */ 579, 252, 562, 169, 560, 254, 255, 559, 2171, 256, + /* 1500 */ 354, 590, 257, 2147, 587, 1990, 1547, 137, 1431, 2026, + /* 1510 */ 2009, 260, 107, 1992, 636, 1994, 1995, 631, 633, 626, + /* 1520 */ 598, 2095, 604, 1960, 2052, 632, 2079, 357, 266, 93, + /* 1530 */ 364, 2075, 292, 293, 605, 1991, 1906, 609, 1905, 610, + /* 1540 */ 1904, 360, 95, 97, 1782, 59, 294, 2060, 99, 1752, + /* 1550 */ 1990, 297, 1826, 286, 2026, 638, 719, 107, 1992, 636, + /* 1560 */ 1994, 1995, 631, 722, 626, 51, 2009, 321, 720, 619, + /* 1570 */ 306, 2079, 301, 330, 633, 364, 2075, 320, 1954, 1960, + /* 1580 */ 1991, 632, 299, 331, 310, 1953, 75, 1952, 1951, 76, + /* 1590 */ 1948, 388, 389, 1396, 1397, 185, 393, 1946, 395, 396, + /* 1600 */ 397, 1945, 399, 1944, 401, 1943, 1990, 1942, 403, 405, + /* 1610 */ 2026, 2009, 1368, 108, 1992, 636, 1994, 1995, 631, 633, + /* 1620 */ 626, 1369, 1917, 1916, 1960, 1991, 632, 2079, 410, 411, + /* 1630 */ 1915, 621, 2075, 1914, 1872, 1871, 1323, 1869, 143, 1868, + /* 1640 */ 1867, 1870, 1991, 1866, 1865, 1863, 1862, 1861, 190, 428, + /* 1650 */ 1860, 634, 430, 1874, 1859, 2026, 2009, 1858, 108, 1992, + /* 1660 */ 636, 1994, 1995, 631, 633, 626, 1857, 1856, 1855, 1960, + /* 1670 */ 1854, 632, 2079, 2009, 1853, 1852, 333, 2075, 145, 1844, + /* 1680 */ 1843, 633, 1851, 1850, 1849, 1848, 1960, 1991, 632, 1847, + /* 1690 */ 1846, 1845, 1842, 1873, 1841, 1840, 1990, 1839, 1325, 1838, + /* 1700 */ 2026, 458, 1836, 165, 1992, 636, 1994, 1995, 631, 1837, + /* 1710 */ 626, 1835, 1202, 1990, 1699, 1698, 197, 2026, 2009, 198, + /* 1720 */ 108, 1992, 636, 1994, 1995, 631, 633, 626, 1696, 1660, + /* 1730 */ 200, 1960, 1116, 632, 2079, 73, 1115, 1659, 1930, 2076, + /* 1740 */ 1991, 1924, 174, 1913, 558, 2116, 201, 1980, 1912, 74, + /* 1750 */ 473, 475, 206, 208, 1892, 1760, 1991, 1695, 1990, 1693, + /* 1760 */ 490, 1691, 2026, 492, 491, 165, 1992, 636, 1994, 1995, + /* 1770 */ 631, 2009, 626, 496, 494, 495, 1149, 1689, 499, 633, + /* 1780 */ 498, 500, 1687, 503, 1960, 502, 632, 2009, 504, 1674, + /* 1790 */ 1673, 1656, 359, 1762, 1270, 633, 1761, 1271, 1193, 1192, + /* 1800 */ 1960, 1191, 632, 1185, 1190, 1685, 1187, 2117, 347, 1991, + /* 1810 */ 1186, 1990, 61, 1184, 691, 2026, 1678, 693, 166, 1992, + /* 1820 */ 636, 1994, 1995, 631, 348, 626, 528, 1990, 218, 1676, + /* 1830 */ 349, 2026, 531, 1655, 319, 1992, 636, 1994, 1995, 631, + /* 1840 */ 2009, 626, 533, 1654, 535, 1653, 537, 109, 630, 1386, + /* 1850 */ 1385, 541, 1388, 1960, 1929, 632, 1375, 1923, 159, 549, + /* 1860 */ 26, 1911, 1909, 2153, 19, 16, 565, 563, 20, 55, + /* 1870 */ 1593, 2170, 58, 239, 28, 243, 250, 251, 1981, 245, + /* 1880 */ 1990, 550, 167, 351, 2026, 30, 63, 318, 1992, 636, + /* 1890 */ 1994, 1995, 631, 555, 626, 1577, 2045, 1569, 249, 1991, + /* 1900 */ 1613, 29, 5, 6, 1608, 89, 1607, 1614, 21, 17, + /* 1910 */ 355, 726, 1612, 1611, 356, 1544, 57, 263, 1543, 1910, + /* 1920 */ 170, 1908, 1907, 1891, 1890, 289, 92, 607, 94, 91, + /* 1930 */ 2009, 56, 269, 22, 271, 369, 12, 276, 633, 65, + /* 1940 */ 172, 281, 1575, 1960, 96, 632, 716, 712, 708, 704, + /* 1950 */ 287, 23, 100, 278, 1991, 1420, 171, 183, 2029, 1506, + /* 1960 */ 1451, 1474, 1496, 625, 637, 639, 372, 10, 635, 1495, + /* 1970 */ 1990, 643, 1472, 1233, 2026, 36, 15, 319, 1992, 636, + /* 1980 */ 1994, 1995, 631, 24, 626, 2009, 105, 1471, 25, 280, + /* 1990 */ 371, 1443, 1256, 633, 641, 646, 1253, 644, 1960, 1250, + /* 2000 */ 632, 647, 649, 652, 1244, 1248, 650, 1991, 1242, 653, + /* 2010 */ 101, 659, 102, 284, 1265, 72, 1247, 1246, 1261, 1147, + /* 2020 */ 1245, 669, 612, 1181, 1180, 1990, 1179, 1178, 1177, 2026, + /* 2030 */ 1991, 1200, 319, 1992, 636, 1994, 1995, 631, 2009, 626, + /* 2040 */ 1176, 1174, 1172, 1171, 1170, 681, 633, 285, 1168, 1167, + /* 2050 */ 1166, 1960, 1991, 632, 1165, 1164, 1163, 268, 1162, 1195, + /* 2060 */ 1197, 2009, 267, 1159, 1158, 1155, 1154, 1153, 1152, 633, + /* 2070 */ 1692, 701, 1690, 702, 1960, 1991, 632, 703, 543, 1373, + /* 2080 */ 707, 236, 2026, 2009, 705, 314, 1992, 636, 1994, 1995, + /* 2090 */ 631, 633, 626, 1688, 706, 709, 1960, 1991, 632, 710, + /* 2100 */ 711, 1990, 1686, 713, 714, 2026, 2009, 1672, 303, 1992, + /* 2110 */ 636, 1994, 1995, 631, 633, 626, 715, 717, 1105, 1960, + /* 2120 */ 1652, 632, 288, 1990, 721, 725, 1406, 2026, 2009, 724, + /* 2130 */ 304, 1992, 636, 1994, 1995, 631, 633, 626, 298, 1627, + /* 2140 */ 1627, 1960, 1627, 632, 1627, 1627, 1990, 1627, 1627, 1627, + /* 2150 */ 2026, 1627, 1991, 305, 1992, 636, 1994, 1995, 631, 1627, + /* 2160 */ 626, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1990, 1991, + /* 2170 */ 1627, 1627, 2026, 1627, 1627, 311, 1992, 636, 1994, 1995, + /* 2180 */ 631, 1627, 626, 2009, 1627, 1627, 1627, 1627, 1627, 1627, + /* 2190 */ 1627, 633, 1627, 1627, 1627, 1627, 1960, 1627, 632, 1627, + /* 2200 */ 2009, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 633, 1627, + /* 2210 */ 1627, 1627, 1627, 1960, 1991, 632, 1627, 1627, 1627, 1627, + /* 2220 */ 1627, 1627, 1627, 1990, 1627, 1627, 1627, 2026, 1627, 1627, + /* 2230 */ 315, 1992, 636, 1994, 1995, 631, 1627, 626, 1627, 1627, + /* 2240 */ 1990, 1627, 1627, 1627, 2026, 2009, 1627, 307, 1992, 636, + /* 2250 */ 1994, 1995, 631, 633, 626, 1627, 1627, 1627, 1960, 1627, + /* 2260 */ 632, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + /* 2270 */ 1991, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + /* 2280 */ 1627, 1627, 1627, 1627, 1627, 1990, 1627, 1627, 1627, 2026, + /* 2290 */ 1627, 1627, 316, 1992, 636, 1994, 1995, 631, 1627, 626, + /* 2300 */ 1991, 2009, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 633, + /* 2310 */ 1627, 1627, 1627, 1627, 1960, 1627, 632, 1627, 1627, 1627, + /* 2320 */ 1627, 1627, 1627, 1991, 1627, 1627, 1627, 1627, 1627, 1627, + /* 2330 */ 1627, 2009, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 633, + /* 2340 */ 1627, 1990, 1627, 1627, 1960, 2026, 632, 1627, 308, 1992, + /* 2350 */ 636, 1994, 1995, 631, 2009, 626, 1627, 1627, 1627, 1627, + /* 2360 */ 1627, 1627, 633, 1627, 1627, 1627, 1627, 1960, 1991, 632, + /* 2370 */ 1627, 1990, 1627, 1627, 1627, 2026, 1627, 1627, 317, 1992, + /* 2380 */ 636, 1994, 1995, 631, 1627, 626, 1627, 1991, 1627, 1627, + /* 2390 */ 1627, 1627, 1627, 1627, 1990, 1627, 1627, 1627, 2026, 2009, + /* 2400 */ 1627, 309, 1992, 636, 1994, 1995, 631, 633, 626, 1627, + /* 2410 */ 1627, 1627, 1960, 1991, 632, 1627, 1627, 1627, 2009, 1627, + /* 2420 */ 1627, 1627, 1627, 1627, 1627, 1627, 633, 1627, 1627, 1627, + /* 2430 */ 1627, 1960, 1627, 632, 1627, 1627, 1627, 1627, 1627, 1990, + /* 2440 */ 1627, 1627, 1627, 2026, 2009, 1627, 322, 1992, 636, 1994, + /* 2450 */ 1995, 631, 633, 626, 1627, 1627, 1627, 1960, 1990, 632, + /* 2460 */ 1627, 1627, 2026, 1627, 1627, 323, 1992, 636, 1994, 1995, + /* 2470 */ 631, 1991, 626, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + /* 2480 */ 1627, 1627, 1627, 1627, 1990, 1627, 1627, 1991, 2026, 1627, + /* 2490 */ 1627, 2003, 1992, 636, 1994, 1995, 631, 1627, 626, 1627, + /* 2500 */ 1627, 1627, 2009, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + /* 2510 */ 633, 1627, 1627, 1627, 1627, 1960, 1627, 632, 2009, 1627, + /* 2520 */ 1627, 1627, 1627, 1627, 1627, 1627, 633, 1627, 1627, 1627, + /* 2530 */ 1627, 1960, 1627, 632, 1627, 1627, 1627, 1627, 1627, 1627, + /* 2540 */ 1627, 1627, 1990, 1991, 1627, 1627, 2026, 1627, 1627, 2002, + /* 2550 */ 1992, 636, 1994, 1995, 631, 1627, 626, 1627, 1990, 1627, + /* 2560 */ 1991, 1627, 2026, 1627, 1627, 2001, 1992, 636, 1994, 1995, + /* 2570 */ 631, 1627, 626, 1627, 2009, 1627, 1627, 1627, 1627, 1627, + /* 2580 */ 1627, 1627, 633, 1627, 1627, 1627, 1627, 1960, 1991, 632, + /* 2590 */ 1627, 2009, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 633, + /* 2600 */ 1627, 1627, 1627, 1627, 1960, 1627, 632, 1627, 1627, 1627, + /* 2610 */ 1627, 1627, 1627, 1627, 1990, 1627, 1627, 1627, 2026, 2009, + /* 2620 */ 1627, 335, 1992, 636, 1994, 1995, 631, 633, 626, 1627, + /* 2630 */ 1627, 1990, 1960, 1627, 632, 2026, 1627, 1627, 336, 1992, + /* 2640 */ 636, 1994, 1995, 631, 1991, 626, 1627, 1627, 1627, 1627, + /* 2650 */ 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1990, + /* 2660 */ 1627, 1991, 1627, 2026, 1627, 1627, 332, 1992, 636, 1994, + /* 2670 */ 1995, 631, 1627, 626, 1627, 2009, 1627, 1627, 1627, 1627, + /* 2680 */ 1627, 1627, 1627, 633, 1627, 1627, 1627, 1627, 1960, 1627, + /* 2690 */ 632, 1627, 2009, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + /* 2700 */ 633, 1627, 1627, 1627, 1627, 1960, 1627, 632, 1627, 1627, + /* 2710 */ 1627, 1627, 1627, 1627, 1627, 1990, 1627, 1991, 1627, 2026, + /* 2720 */ 1627, 1627, 337, 1992, 636, 1994, 1995, 631, 1627, 626, + /* 2730 */ 1627, 1627, 634, 1627, 1627, 1627, 2026, 1627, 1627, 314, + /* 2740 */ 1992, 636, 1994, 1995, 631, 1627, 626, 1627, 2009, 1627, + /* 2750 */ 1627, 1627, 1627, 1627, 1627, 1627, 633, 1627, 1627, 1627, + /* 2760 */ 1627, 1960, 1627, 632, 1627, 1627, 1627, 1627, 1627, 1627, + /* 2770 */ 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + /* 2780 */ 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1990, 1627, + /* 2790 */ 1627, 1627, 2026, 1627, 1627, 313, 1992, 636, 1994, 1995, + /* 2800 */ 631, 1627, 626, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 362, 361, 371, 375, 432, 374, 375, 333, 436, 335, - /* 10 */ 336, 373, 12, 13, 14, 362, 388, 389, 353, 360, - /* 20 */ 20, 356, 22, 451, 452, 20, 373, 368, 456, 457, - /* 30 */ 341, 337, 360, 33, 334, 35, 0, 337, 338, 14, - /* 40 */ 402, 403, 8, 9, 355, 20, 12, 13, 14, 15, - /* 50 */ 16, 413, 363, 381, 382, 402, 403, 404, 58, 344, - /* 60 */ 39, 432, 368, 63, 349, 436, 413, 408, 21, 329, - /* 70 */ 70, 24, 25, 26, 27, 28, 29, 30, 31, 32, - /* 80 */ 360, 452, 352, 12, 13, 456, 457, 367, 14, 4, - /* 90 */ 360, 20, 20, 22, 20, 95, 376, 63, 359, 369, - /* 100 */ 360, 65, 66, 67, 33, 337, 35, 360, 368, 73, - /* 110 */ 74, 372, 14, 373, 78, 375, 369, 117, 20, 83, - /* 120 */ 84, 427, 428, 429, 430, 89, 432, 433, 43, 58, - /* 130 */ 45, 46, 132, 133, 63, 20, 368, 0, 104, 399, - /* 140 */ 62, 70, 20, 403, 22, 58, 406, 407, 408, 409, - /* 150 */ 410, 411, 432, 413, 95, 432, 436, 35, 418, 436, - /* 160 */ 420, 35, 162, 163, 424, 425, 95, 95, 168, 169, - /* 170 */ 107, 451, 452, 51, 20, 452, 456, 457, 438, 456, - /* 180 */ 457, 94, 20, 183, 97, 185, 446, 162, 117, 126, - /* 190 */ 127, 128, 129, 130, 131, 161, 428, 429, 430, 62, - /* 200 */ 432, 433, 334, 132, 133, 337, 338, 58, 208, 209, + /* 0 */ 422, 423, 361, 375, 433, 375, 353, 433, 437, 356, + /* 10 */ 362, 437, 12, 13, 14, 385, 388, 389, 388, 389, + /* 20 */ 20, 373, 22, 362, 453, 0, 452, 453, 457, 458, + /* 30 */ 329, 457, 458, 33, 373, 35, 12, 13, 14, 15, + /* 40 */ 16, 21, 8, 9, 362, 3, 12, 13, 14, 15, + /* 50 */ 16, 403, 404, 405, 34, 373, 36, 337, 58, 20, + /* 60 */ 326, 360, 414, 63, 403, 404, 405, 14, 371, 368, + /* 70 */ 70, 374, 375, 20, 373, 414, 375, 333, 337, 335, + /* 80 */ 336, 20, 360, 12, 13, 403, 404, 62, 368, 367, + /* 90 */ 20, 20, 328, 22, 330, 95, 414, 63, 376, 334, + /* 100 */ 337, 400, 337, 338, 33, 404, 35, 20, 407, 408, + /* 110 */ 409, 410, 411, 412, 351, 414, 337, 117, 377, 433, + /* 120 */ 419, 358, 421, 437, 390, 368, 425, 426, 20, 58, + /* 130 */ 351, 368, 132, 133, 63, 20, 379, 358, 104, 453, + /* 140 */ 439, 70, 334, 457, 458, 337, 338, 368, 447, 429, + /* 150 */ 430, 431, 360, 433, 434, 433, 360, 437, 4, 437, + /* 160 */ 360, 369, 162, 163, 368, 95, 95, 433, 168, 169, + /* 170 */ 20, 437, 452, 453, 452, 453, 337, 457, 458, 457, + /* 180 */ 458, 381, 382, 183, 360, 185, 452, 453, 117, 37, + /* 190 */ 351, 457, 458, 132, 133, 161, 0, 43, 58, 45, + /* 200 */ 46, 162, 163, 132, 133, 409, 382, 368, 208, 209, /* 210 */ 95, 211, 212, 213, 214, 215, 216, 217, 218, 219, - /* 220 */ 220, 221, 222, 223, 224, 225, 226, 227, 228, 65, - /* 230 */ 66, 67, 416, 162, 163, 419, 167, 73, 74, 168, - /* 240 */ 169, 182, 78, 184, 95, 20, 97, 83, 84, 95, - /* 250 */ 127, 421, 422, 89, 183, 4, 185, 8, 9, 20, - /* 260 */ 162, 12, 13, 14, 15, 16, 245, 233, 234, 235, - /* 270 */ 236, 237, 238, 239, 240, 241, 242, 243, 20, 208, - /* 280 */ 209, 343, 211, 212, 213, 214, 215, 216, 217, 218, + /* 220 */ 220, 221, 222, 223, 224, 225, 226, 227, 228, 168, + /* 230 */ 169, 126, 127, 162, 163, 95, 131, 97, 21, 168, + /* 240 */ 169, 24, 25, 26, 27, 28, 29, 30, 31, 32, + /* 250 */ 98, 164, 100, 101, 183, 103, 185, 8, 9, 107, + /* 260 */ 62, 12, 13, 14, 15, 16, 208, 233, 234, 235, + /* 270 */ 236, 237, 238, 239, 240, 241, 242, 243, 95, 208, + /* 280 */ 209, 129, 211, 212, 213, 214, 215, 216, 217, 218, /* 290 */ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - /* 300 */ 360, 230, 12, 13, 366, 246, 337, 367, 0, 95, - /* 310 */ 20, 185, 22, 190, 191, 62, 376, 194, 337, 196, - /* 320 */ 251, 252, 253, 33, 326, 35, 108, 109, 110, 111, - /* 330 */ 112, 113, 114, 115, 116, 117, 118, 368, 120, 121, - /* 340 */ 122, 123, 124, 125, 33, 329, 95, 337, 58, 368, - /* 350 */ 8, 9, 362, 63, 12, 13, 14, 15, 16, 48, - /* 360 */ 70, 246, 329, 373, 44, 54, 55, 56, 57, 58, - /* 370 */ 62, 132, 133, 12, 13, 14, 12, 13, 14, 15, - /* 380 */ 16, 20, 328, 22, 330, 95, 44, 377, 390, 373, - /* 390 */ 132, 133, 402, 403, 33, 246, 35, 428, 429, 430, - /* 400 */ 246, 432, 433, 413, 337, 94, 373, 117, 97, 428, - /* 410 */ 429, 430, 360, 432, 433, 0, 96, 436, 351, 58, - /* 420 */ 374, 375, 132, 133, 175, 358, 168, 169, 376, 126, - /* 430 */ 432, 70, 451, 452, 436, 368, 21, 456, 457, 24, - /* 440 */ 25, 26, 27, 28, 29, 30, 31, 32, 329, 451, - /* 450 */ 452, 375, 162, 163, 456, 457, 95, 343, 168, 169, - /* 460 */ 246, 385, 8, 9, 388, 389, 12, 13, 14, 15, - /* 470 */ 16, 357, 22, 183, 20, 185, 165, 166, 117, 20, - /* 480 */ 366, 170, 8, 9, 173, 35, 12, 13, 14, 15, - /* 490 */ 16, 35, 373, 132, 133, 192, 193, 246, 208, 209, - /* 500 */ 189, 211, 212, 213, 214, 215, 216, 217, 218, 219, - /* 510 */ 220, 221, 222, 223, 224, 225, 226, 227, 228, 270, - /* 520 */ 329, 19, 106, 162, 163, 333, 70, 335, 336, 168, - /* 530 */ 169, 337, 8, 9, 79, 33, 12, 13, 14, 15, - /* 540 */ 16, 95, 346, 347, 183, 351, 185, 8, 9, 20, - /* 550 */ 48, 12, 13, 14, 15, 16, 54, 55, 56, 57, - /* 560 */ 58, 0, 368, 329, 373, 230, 20, 161, 22, 208, - /* 570 */ 209, 20, 211, 212, 213, 214, 215, 216, 217, 218, + /* 300 */ 95, 230, 12, 13, 0, 20, 20, 265, 22, 22, + /* 310 */ 20, 417, 22, 362, 420, 257, 258, 259, 260, 261, + /* 320 */ 329, 35, 35, 33, 373, 35, 108, 109, 110, 111, + /* 330 */ 112, 113, 114, 115, 116, 117, 118, 51, 120, 121, + /* 340 */ 122, 123, 124, 125, 35, 96, 95, 151, 58, 343, + /* 350 */ 4, 360, 14, 63, 403, 404, 160, 70, 20, 368, + /* 360 */ 70, 246, 341, 357, 373, 414, 375, 374, 375, 65, + /* 370 */ 66, 67, 366, 12, 13, 14, 355, 73, 74, 70, + /* 380 */ 95, 20, 78, 22, 363, 95, 246, 83, 84, 3, + /* 390 */ 343, 400, 344, 89, 33, 404, 35, 349, 407, 408, + /* 400 */ 409, 410, 411, 412, 117, 414, 20, 117, 417, 20, + /* 410 */ 419, 420, 421, 366, 2, 33, 425, 426, 0, 58, + /* 420 */ 8, 9, 132, 133, 12, 13, 14, 15, 16, 246, + /* 430 */ 48, 70, 230, 182, 232, 184, 54, 55, 56, 57, + /* 440 */ 58, 95, 24, 25, 26, 27, 28, 29, 30, 31, + /* 450 */ 32, 246, 162, 163, 20, 167, 95, 14, 168, 169, + /* 460 */ 0, 8, 9, 20, 360, 12, 13, 14, 15, 16, + /* 470 */ 183, 367, 185, 183, 353, 185, 94, 356, 117, 97, + /* 480 */ 376, 21, 96, 0, 24, 25, 26, 27, 28, 29, + /* 490 */ 30, 31, 32, 132, 133, 208, 209, 246, 208, 209, + /* 500 */ 162, 211, 212, 213, 214, 215, 216, 217, 218, 219, + /* 510 */ 220, 221, 222, 223, 224, 225, 226, 227, 228, 65, + /* 520 */ 66, 67, 20, 162, 163, 346, 347, 73, 74, 168, + /* 530 */ 169, 246, 78, 333, 352, 335, 336, 83, 84, 251, + /* 540 */ 252, 253, 360, 89, 183, 62, 185, 165, 166, 44, + /* 550 */ 164, 369, 170, 8, 9, 173, 79, 12, 13, 14, + /* 560 */ 15, 16, 337, 62, 329, 20, 132, 133, 106, 208, + /* 570 */ 209, 189, 211, 212, 213, 214, 215, 216, 217, 218, /* 580 */ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - /* 590 */ 12, 13, 137, 138, 360, 70, 94, 51, 20, 97, - /* 600 */ 22, 70, 368, 337, 230, 360, 232, 373, 0, 375, - /* 610 */ 20, 33, 367, 35, 390, 160, 2, 351, 164, 330, - /* 620 */ 96, 376, 8, 9, 329, 405, 12, 13, 14, 15, - /* 630 */ 16, 361, 130, 399, 368, 96, 58, 403, 164, 233, - /* 640 */ 406, 407, 408, 409, 410, 411, 362, 413, 70, 243, - /* 650 */ 416, 431, 418, 419, 420, 360, 432, 373, 424, 425, - /* 660 */ 436, 12, 13, 368, 405, 337, 352, 165, 373, 20, - /* 670 */ 375, 22, 170, 95, 360, 451, 452, 208, 329, 351, - /* 680 */ 456, 457, 33, 369, 35, 20, 402, 403, 404, 187, - /* 690 */ 431, 189, 246, 164, 399, 117, 368, 413, 403, 405, - /* 700 */ 44, 406, 407, 408, 409, 410, 411, 58, 413, 360, - /* 710 */ 132, 133, 151, 162, 163, 107, 417, 368, 419, 70, - /* 720 */ 329, 160, 373, 0, 375, 431, 257, 258, 259, 260, - /* 730 */ 261, 341, 22, 3, 126, 127, 128, 129, 130, 131, - /* 740 */ 162, 163, 447, 448, 95, 35, 168, 169, 399, 417, - /* 750 */ 20, 419, 403, 363, 164, 406, 407, 408, 409, 410, - /* 760 */ 411, 183, 413, 185, 373, 2, 117, 418, 361, 420, - /* 770 */ 21, 8, 9, 424, 425, 12, 13, 14, 15, 16, - /* 780 */ 70, 132, 133, 34, 435, 36, 208, 209, 360, 211, + /* 590 */ 12, 13, 246, 368, 370, 360, 329, 373, 20, 352, + /* 600 */ 22, 96, 360, 368, 359, 162, 230, 360, 373, 367, + /* 610 */ 375, 33, 127, 35, 137, 138, 369, 372, 376, 8, + /* 620 */ 9, 329, 360, 12, 13, 14, 15, 16, 175, 367, + /* 630 */ 14, 15, 16, 337, 360, 400, 58, 160, 376, 404, + /* 640 */ 373, 367, 407, 408, 409, 410, 411, 412, 70, 414, + /* 650 */ 376, 70, 360, 428, 429, 430, 431, 70, 433, 434, + /* 660 */ 368, 12, 13, 337, 368, 373, 337, 375, 341, 20, + /* 670 */ 352, 22, 329, 95, 337, 190, 191, 351, 360, 194, + /* 680 */ 351, 196, 33, 20, 35, 22, 451, 369, 351, 329, + /* 690 */ 363, 418, 400, 420, 368, 117, 404, 368, 330, 407, + /* 700 */ 408, 409, 410, 411, 412, 368, 414, 58, 337, 164, + /* 710 */ 132, 133, 126, 421, 51, 178, 373, 425, 426, 70, + /* 720 */ 360, 368, 351, 270, 0, 429, 430, 431, 368, 433, + /* 730 */ 434, 337, 379, 373, 337, 375, 199, 200, 361, 368, + /* 740 */ 162, 163, 346, 347, 95, 351, 168, 169, 351, 8, + /* 750 */ 9, 1, 2, 12, 13, 14, 15, 16, 406, 0, + /* 760 */ 400, 183, 368, 185, 404, 368, 117, 407, 408, 409, + /* 770 */ 410, 411, 412, 413, 414, 415, 416, 370, 192, 193, + /* 780 */ 373, 132, 133, 20, 432, 44, 208, 209, 337, 211, /* 790 */ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - /* 800 */ 222, 223, 224, 225, 226, 227, 228, 337, 368, 337, - /* 810 */ 382, 162, 163, 18, 178, 20, 352, 168, 169, 379, - /* 820 */ 368, 351, 27, 351, 360, 30, 96, 117, 33, 164, - /* 830 */ 107, 379, 183, 369, 185, 199, 200, 329, 368, 360, - /* 840 */ 368, 329, 20, 48, 353, 50, 367, 356, 53, 126, - /* 850 */ 127, 128, 129, 130, 131, 376, 4, 208, 209, 361, + /* 800 */ 222, 223, 224, 225, 226, 227, 228, 337, 49, 337, + /* 810 */ 337, 162, 163, 18, 107, 20, 337, 168, 169, 368, + /* 820 */ 58, 351, 27, 351, 351, 30, 360, 418, 33, 420, + /* 830 */ 351, 107, 183, 368, 185, 329, 129, 161, 368, 20, + /* 840 */ 368, 368, 376, 48, 379, 50, 96, 368, 53, 20, + /* 850 */ 126, 127, 128, 129, 130, 131, 94, 208, 209, 97, /* 860 */ 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - /* 870 */ 221, 222, 223, 224, 225, 226, 227, 228, 14, 15, - /* 880 */ 16, 373, 107, 18, 0, 373, 337, 368, 23, 94, - /* 890 */ 0, 337, 164, 183, 164, 185, 346, 347, 379, 171, - /* 900 */ 351, 106, 37, 38, 129, 351, 41, 358, 24, 25, - /* 910 */ 26, 27, 28, 29, 30, 31, 32, 368, 208, 209, - /* 920 */ 1, 2, 368, 267, 59, 60, 61, 370, 37, 370, - /* 930 */ 373, 136, 373, 3, 139, 140, 141, 142, 143, 144, + /* 870 */ 221, 222, 223, 224, 225, 226, 227, 228, 0, 373, + /* 880 */ 429, 430, 431, 18, 433, 434, 2, 406, 23, 94, + /* 890 */ 0, 337, 8, 9, 406, 4, 12, 13, 14, 15, + /* 900 */ 16, 106, 37, 38, 370, 351, 41, 373, 39, 233, + /* 910 */ 8, 9, 44, 432, 12, 13, 14, 15, 16, 243, + /* 920 */ 432, 348, 368, 350, 59, 60, 61, 164, 45, 46, + /* 930 */ 63, 136, 244, 245, 139, 140, 141, 142, 143, 144, /* 940 */ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, /* 950 */ 155, 329, 157, 158, 159, 65, 66, 67, 68, 69, /* 960 */ 95, 71, 72, 73, 74, 75, 76, 77, 78, 79, /* 970 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - /* 980 */ 90, 91, 337, 329, 162, 4, 45, 46, 329, 98, - /* 990 */ 337, 100, 101, 329, 103, 373, 351, 337, 107, 134, - /* 1000 */ 19, 8, 9, 0, 351, 12, 13, 14, 15, 16, - /* 1010 */ 329, 351, 329, 368, 33, 96, 337, 337, 390, 337, - /* 1020 */ 129, 368, 337, 348, 337, 350, 394, 373, 368, 48, - /* 1030 */ 351, 351, 373, 351, 53, 0, 351, 373, 351, 58, - /* 1040 */ 175, 176, 177, 360, 349, 180, 370, 368, 368, 373, - /* 1050 */ 368, 368, 49, 368, 373, 368, 373, 42, 375, 44, - /* 1060 */ 432, 44, 329, 198, 436, 42, 201, 44, 203, 204, - /* 1070 */ 205, 206, 207, 337, 329, 94, 244, 245, 97, 451, - /* 1080 */ 452, 337, 399, 48, 456, 457, 403, 351, 337, 406, - /* 1090 */ 407, 408, 409, 410, 411, 351, 413, 329, 58, 247, - /* 1100 */ 106, 418, 351, 420, 368, 360, 373, 424, 425, 337, - /* 1110 */ 0, 246, 368, 368, 361, 329, 337, 329, 373, 368, - /* 1120 */ 375, 126, 127, 351, 99, 361, 131, 102, 360, 446, - /* 1130 */ 351, 337, 22, 132, 133, 337, 368, 97, 63, 329, - /* 1140 */ 368, 373, 361, 375, 399, 351, 0, 368, 403, 351, - /* 1150 */ 156, 406, 407, 408, 409, 410, 411, 329, 413, 373, - /* 1160 */ 0, 373, 368, 418, 390, 420, 368, 399, 22, 424, - /* 1170 */ 425, 403, 390, 329, 406, 407, 408, 409, 410, 411, - /* 1180 */ 435, 413, 22, 373, 329, 329, 418, 35, 420, 44, - /* 1190 */ 12, 13, 424, 425, 99, 265, 329, 102, 383, 99, - /* 1200 */ 22, 373, 102, 435, 360, 99, 432, 460, 102, 44, - /* 1210 */ 436, 33, 368, 35, 432, 449, 339, 373, 436, 375, - /* 1220 */ 44, 1, 2, 443, 339, 451, 452, 360, 373, 373, - /* 1230 */ 456, 457, 44, 451, 452, 368, 58, 44, 456, 457, - /* 1240 */ 373, 96, 375, 399, 383, 44, 44, 403, 70, 360, - /* 1250 */ 406, 407, 408, 409, 410, 411, 44, 413, 44, 390, - /* 1260 */ 13, 96, 418, 44, 420, 329, 399, 336, 424, 425, - /* 1270 */ 403, 44, 96, 406, 407, 408, 409, 410, 411, 435, - /* 1280 */ 413, 47, 35, 208, 96, 418, 269, 420, 329, 96, - /* 1290 */ 13, 424, 425, 35, 372, 117, 360, 96, 96, 383, - /* 1300 */ 44, 432, 435, 44, 368, 436, 95, 44, 96, 373, - /* 1310 */ 96, 375, 35, 434, 426, 96, 105, 437, 248, 360, - /* 1320 */ 451, 452, 44, 96, 44, 456, 457, 368, 70, 95, - /* 1330 */ 401, 453, 373, 48, 375, 399, 181, 185, 400, 403, - /* 1340 */ 392, 42, 406, 407, 408, 409, 410, 411, 412, 413, - /* 1350 */ 414, 415, 96, 380, 20, 96, 380, 383, 399, 96, - /* 1360 */ 161, 183, 403, 185, 378, 406, 407, 408, 409, 410, - /* 1370 */ 411, 20, 413, 337, 96, 329, 96, 418, 337, 420, - /* 1380 */ 380, 93, 378, 424, 425, 378, 208, 209, 345, 337, - /* 1390 */ 337, 337, 20, 331, 331, 20, 20, 375, 329, 221, - /* 1400 */ 222, 223, 224, 225, 226, 227, 360, 396, 343, 343, - /* 1410 */ 20, 338, 20, 337, 368, 391, 338, 343, 52, 373, - /* 1420 */ 343, 375, 343, 343, 343, 340, 340, 331, 360, 360, - /* 1430 */ 337, 360, 360, 373, 331, 197, 398, 368, 396, 188, - /* 1440 */ 373, 337, 373, 360, 375, 399, 341, 360, 360, 403, - /* 1450 */ 360, 360, 406, 407, 408, 409, 410, 411, 360, 413, - /* 1460 */ 341, 360, 360, 256, 418, 383, 420, 375, 399, 442, - /* 1470 */ 424, 425, 403, 329, 442, 406, 407, 408, 409, 410, - /* 1480 */ 411, 373, 413, 255, 395, 386, 373, 418, 373, 420, - /* 1490 */ 383, 373, 262, 424, 425, 386, 445, 174, 442, 444, - /* 1500 */ 329, 249, 441, 264, 360, 263, 271, 245, 461, 268, - /* 1510 */ 266, 454, 368, 401, 455, 368, 20, 373, 337, 375, - /* 1520 */ 338, 405, 386, 373, 440, 341, 341, 373, 386, 373, - /* 1530 */ 373, 360, 373, 439, 373, 166, 341, 384, 341, 368, - /* 1540 */ 368, 95, 356, 399, 373, 423, 375, 403, 95, 36, - /* 1550 */ 406, 407, 408, 409, 410, 411, 364, 413, 350, 337, - /* 1560 */ 373, 332, 341, 331, 420, 397, 329, 393, 424, 425, - /* 1570 */ 399, 354, 354, 327, 403, 342, 387, 406, 407, 408, - /* 1580 */ 409, 410, 411, 387, 413, 354, 0, 0, 190, 0, - /* 1590 */ 0, 420, 42, 0, 35, 424, 425, 360, 202, 35, - /* 1600 */ 35, 35, 202, 0, 35, 368, 35, 202, 0, 202, - /* 1610 */ 373, 0, 375, 35, 0, 0, 22, 35, 185, 183, - /* 1620 */ 0, 329, 0, 179, 0, 178, 0, 47, 0, 0, - /* 1630 */ 0, 0, 0, 42, 0, 0, 399, 0, 0, 329, - /* 1640 */ 403, 0, 0, 406, 407, 408, 409, 410, 411, 151, - /* 1650 */ 413, 35, 360, 0, 151, 0, 0, 420, 0, 0, - /* 1660 */ 368, 424, 425, 0, 0, 373, 0, 375, 22, 42, - /* 1670 */ 360, 0, 0, 0, 0, 0, 0, 0, 368, 0, - /* 1680 */ 0, 0, 0, 373, 135, 375, 0, 0, 0, 0, - /* 1690 */ 0, 399, 0, 329, 0, 403, 0, 0, 406, 407, - /* 1700 */ 408, 409, 410, 411, 35, 413, 0, 58, 0, 399, - /* 1710 */ 58, 0, 0, 403, 329, 14, 406, 407, 408, 409, - /* 1720 */ 410, 411, 44, 413, 360, 42, 0, 14, 0, 0, - /* 1730 */ 420, 0, 368, 0, 39, 425, 174, 373, 47, 375, - /* 1740 */ 47, 0, 40, 39, 39, 360, 47, 0, 0, 64, - /* 1750 */ 458, 459, 0, 368, 35, 48, 39, 0, 373, 35, - /* 1760 */ 375, 39, 48, 399, 0, 35, 48, 403, 0, 35, - /* 1770 */ 406, 407, 408, 409, 410, 411, 39, 413, 39, 329, - /* 1780 */ 48, 0, 0, 0, 399, 0, 35, 22, 403, 0, - /* 1790 */ 35, 406, 407, 408, 409, 410, 411, 35, 413, 22, - /* 1800 */ 329, 35, 104, 0, 35, 102, 35, 44, 35, 35, - /* 1810 */ 360, 44, 448, 22, 0, 22, 0, 22, 368, 35, - /* 1820 */ 50, 0, 35, 373, 0, 375, 0, 35, 22, 20, - /* 1830 */ 95, 360, 35, 35, 195, 450, 365, 0, 96, 368, - /* 1840 */ 35, 0, 22, 186, 373, 0, 375, 0, 44, 399, - /* 1850 */ 250, 3, 96, 403, 229, 95, 406, 407, 408, 409, - /* 1860 */ 410, 411, 44, 413, 164, 3, 254, 95, 250, 329, - /* 1870 */ 399, 96, 96, 164, 403, 95, 166, 406, 407, 408, - /* 1880 */ 409, 410, 411, 95, 413, 164, 171, 329, 172, 95, - /* 1890 */ 44, 171, 96, 250, 95, 44, 47, 47, 96, 44, - /* 1900 */ 360, 35, 35, 96, 35, 35, 35, 35, 368, 459, - /* 1910 */ 47, 96, 44, 373, 244, 375, 0, 0, 360, 96, - /* 1920 */ 47, 0, 0, 365, 95, 39, 368, 96, 95, 0, - /* 1930 */ 96, 373, 39, 375, 95, 95, 47, 95, 95, 399, - /* 1940 */ 105, 44, 329, 403, 165, 167, 406, 407, 408, 409, - /* 1950 */ 410, 411, 229, 413, 2, 415, 231, 399, 22, 95, - /* 1960 */ 95, 403, 208, 22, 406, 407, 408, 409, 410, 411, - /* 1970 */ 96, 413, 229, 360, 96, 95, 119, 96, 365, 47, - /* 1980 */ 95, 368, 95, 95, 47, 106, 373, 96, 375, 35, - /* 1990 */ 96, 35, 96, 95, 35, 95, 210, 329, 96, 35, - /* 2000 */ 95, 35, 96, 95, 35, 96, 95, 22, 95, 119, - /* 2010 */ 107, 119, 399, 329, 119, 44, 403, 35, 95, 406, - /* 2020 */ 407, 408, 409, 410, 411, 95, 413, 22, 360, 64, - /* 2030 */ 63, 35, 35, 35, 35, 35, 368, 35, 35, 35, - /* 2040 */ 70, 373, 35, 375, 360, 35, 35, 92, 35, 35, - /* 2050 */ 44, 35, 368, 22, 35, 35, 70, 373, 35, 375, - /* 2060 */ 35, 35, 35, 35, 22, 329, 0, 399, 35, 35, - /* 2070 */ 48, 403, 0, 35, 406, 407, 408, 409, 410, 411, - /* 2080 */ 39, 413, 39, 399, 48, 0, 35, 403, 329, 0, - /* 2090 */ 406, 407, 408, 409, 410, 411, 360, 413, 48, 39, - /* 2100 */ 35, 48, 39, 0, 368, 35, 35, 0, 22, 373, - /* 2110 */ 22, 375, 21, 20, 22, 21, 462, 462, 462, 360, - /* 2120 */ 462, 462, 462, 462, 462, 462, 462, 368, 462, 462, - /* 2130 */ 462, 462, 373, 462, 375, 399, 462, 462, 462, 403, - /* 2140 */ 329, 462, 406, 407, 408, 409, 410, 411, 462, 413, - /* 2150 */ 462, 462, 462, 462, 462, 462, 462, 462, 399, 462, - /* 2160 */ 462, 329, 403, 462, 462, 406, 407, 408, 409, 410, - /* 2170 */ 411, 360, 413, 462, 462, 462, 462, 462, 462, 368, - /* 2180 */ 462, 462, 462, 462, 373, 462, 375, 462, 462, 462, - /* 2190 */ 462, 462, 360, 462, 462, 462, 462, 462, 462, 462, - /* 2200 */ 368, 462, 462, 462, 462, 373, 462, 375, 462, 462, - /* 2210 */ 399, 462, 462, 462, 403, 462, 462, 406, 407, 408, - /* 2220 */ 409, 410, 411, 462, 413, 462, 462, 462, 462, 462, - /* 2230 */ 329, 399, 462, 462, 462, 403, 462, 462, 406, 407, - /* 2240 */ 408, 409, 410, 411, 462, 413, 462, 462, 329, 462, - /* 2250 */ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - /* 2260 */ 462, 360, 462, 462, 462, 462, 462, 462, 462, 368, - /* 2270 */ 462, 462, 462, 462, 373, 462, 375, 462, 462, 360, - /* 2280 */ 462, 462, 462, 462, 462, 462, 462, 368, 462, 462, - /* 2290 */ 462, 462, 373, 462, 375, 462, 462, 462, 462, 462, - /* 2300 */ 399, 462, 462, 329, 403, 462, 462, 406, 407, 408, - /* 2310 */ 409, 410, 411, 462, 413, 462, 462, 462, 399, 462, - /* 2320 */ 462, 462, 403, 462, 462, 406, 407, 408, 409, 410, - /* 2330 */ 411, 462, 413, 462, 360, 462, 462, 462, 462, 462, - /* 2340 */ 462, 462, 368, 462, 462, 462, 462, 373, 462, 375, - /* 2350 */ 462, 462, 462, 462, 462, 462, 462, 462, 329, 462, - /* 2360 */ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - /* 2370 */ 462, 462, 462, 399, 329, 462, 462, 403, 462, 462, - /* 2380 */ 406, 407, 408, 409, 410, 411, 462, 413, 462, 360, - /* 2390 */ 462, 462, 462, 462, 462, 462, 462, 368, 462, 462, - /* 2400 */ 462, 462, 373, 462, 375, 360, 462, 462, 462, 462, - /* 2410 */ 462, 462, 462, 368, 462, 462, 462, 462, 373, 462, - /* 2420 */ 375, 462, 462, 462, 462, 462, 329, 462, 399, 462, - /* 2430 */ 462, 462, 403, 462, 462, 406, 407, 408, 409, 410, - /* 2440 */ 411, 462, 413, 462, 399, 462, 462, 462, 403, 329, - /* 2450 */ 462, 406, 407, 408, 409, 410, 411, 360, 413, 462, - /* 2460 */ 462, 462, 462, 462, 462, 368, 462, 462, 462, 462, - /* 2470 */ 373, 462, 375, 462, 462, 462, 462, 462, 462, 462, - /* 2480 */ 360, 462, 462, 462, 462, 462, 462, 462, 368, 462, - /* 2490 */ 462, 462, 462, 373, 462, 375, 399, 462, 462, 462, - /* 2500 */ 403, 329, 462, 406, 407, 408, 409, 410, 411, 462, - /* 2510 */ 413, 462, 462, 462, 462, 462, 462, 462, 462, 399, - /* 2520 */ 462, 462, 329, 403, 462, 462, 406, 407, 408, 409, - /* 2530 */ 410, 411, 360, 413, 462, 462, 462, 462, 462, 462, - /* 2540 */ 368, 462, 462, 462, 462, 373, 462, 375, 462, 462, - /* 2550 */ 462, 462, 462, 360, 462, 462, 462, 462, 462, 462, - /* 2560 */ 462, 368, 462, 462, 462, 462, 373, 462, 375, 462, - /* 2570 */ 462, 399, 462, 462, 462, 403, 462, 462, 406, 407, - /* 2580 */ 408, 409, 410, 411, 462, 413, 462, 462, 462, 462, - /* 2590 */ 462, 329, 399, 462, 462, 462, 403, 462, 462, 406, - /* 2600 */ 407, 408, 409, 410, 411, 462, 413, 462, 462, 329, - /* 2610 */ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - /* 2620 */ 462, 462, 360, 462, 462, 462, 462, 462, 462, 462, - /* 2630 */ 368, 462, 462, 462, 462, 373, 462, 375, 462, 462, - /* 2640 */ 360, 462, 462, 462, 462, 462, 462, 462, 368, 462, - /* 2650 */ 462, 462, 462, 373, 462, 375, 462, 462, 462, 462, - /* 2660 */ 462, 399, 462, 462, 329, 403, 462, 462, 406, 407, - /* 2670 */ 408, 409, 410, 411, 462, 413, 462, 462, 462, 399, - /* 2680 */ 462, 462, 462, 403, 462, 462, 406, 407, 408, 409, - /* 2690 */ 410, 411, 462, 413, 462, 360, 462, 462, 462, 462, - /* 2700 */ 462, 462, 462, 368, 462, 462, 462, 462, 373, 462, - /* 2710 */ 375, 462, 462, 462, 462, 462, 462, 462, 462, 329, - /* 2720 */ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - /* 2730 */ 462, 462, 462, 462, 399, 329, 462, 462, 403, 462, - /* 2740 */ 462, 406, 407, 408, 409, 410, 411, 462, 413, 462, - /* 2750 */ 360, 462, 462, 462, 462, 462, 462, 462, 368, 462, - /* 2760 */ 462, 462, 462, 373, 462, 375, 360, 462, 462, 462, - /* 2770 */ 462, 462, 462, 462, 368, 462, 462, 462, 462, 373, - /* 2780 */ 462, 375, 462, 462, 462, 462, 462, 329, 462, 399, - /* 2790 */ 462, 462, 462, 403, 462, 462, 406, 407, 408, 409, - /* 2800 */ 410, 411, 462, 413, 462, 399, 462, 462, 462, 403, - /* 2810 */ 329, 462, 406, 407, 408, 409, 410, 411, 360, 413, - /* 2820 */ 462, 462, 462, 462, 462, 462, 368, 462, 462, 462, - /* 2830 */ 462, 373, 462, 375, 462, 462, 462, 462, 462, 462, - /* 2840 */ 462, 360, 462, 462, 462, 462, 462, 462, 462, 368, - /* 2850 */ 462, 462, 462, 462, 373, 462, 375, 399, 462, 462, - /* 2860 */ 462, 403, 462, 462, 406, 407, 408, 409, 410, 411, - /* 2870 */ 462, 413, 462, 462, 462, 462, 462, 462, 462, 462, - /* 2880 */ 399, 462, 462, 462, 403, 462, 462, 406, 407, 408, - /* 2890 */ 409, 410, 411, 462, 413, 326, 326, 326, 326, 326, + /* 980 */ 90, 91, 360, 164, 329, 107, 58, 42, 337, 44, + /* 990 */ 368, 162, 361, 329, 107, 373, 337, 375, 96, 134, + /* 1000 */ 329, 0, 351, 106, 126, 127, 128, 129, 130, 131, + /* 1010 */ 351, 44, 329, 126, 127, 128, 129, 130, 131, 368, + /* 1020 */ 394, 42, 400, 44, 337, 97, 404, 368, 373, 407, + /* 1030 */ 408, 409, 410, 411, 412, 4, 414, 373, 351, 361, + /* 1040 */ 175, 176, 177, 360, 373, 180, 337, 337, 349, 48, + /* 1050 */ 19, 368, 329, 156, 22, 368, 373, 361, 375, 329, + /* 1060 */ 351, 351, 99, 198, 33, 102, 201, 35, 203, 204, + /* 1070 */ 205, 206, 207, 99, 329, 208, 102, 368, 368, 48, + /* 1080 */ 390, 459, 460, 400, 53, 337, 337, 404, 47, 58, + /* 1090 */ 407, 408, 409, 410, 411, 412, 373, 414, 337, 351, + /* 1100 */ 351, 337, 419, 373, 421, 360, 461, 99, 425, 426, + /* 1110 */ 102, 246, 351, 368, 245, 351, 368, 368, 373, 329, + /* 1120 */ 375, 99, 0, 433, 102, 94, 164, 437, 97, 368, + /* 1130 */ 447, 361, 368, 171, 132, 133, 95, 269, 247, 329, + /* 1140 */ 329, 329, 452, 453, 22, 400, 35, 457, 458, 404, + /* 1150 */ 360, 329, 407, 408, 409, 410, 411, 412, 368, 414, + /* 1160 */ 0, 44, 361, 373, 419, 375, 421, 383, 329, 35, + /* 1170 */ 425, 426, 8, 9, 0, 329, 12, 13, 14, 15, + /* 1180 */ 16, 436, 22, 373, 373, 373, 329, 329, 329, 329, + /* 1190 */ 400, 329, 450, 329, 404, 373, 22, 407, 408, 409, + /* 1200 */ 410, 411, 412, 360, 414, 329, 360, 383, 35, 419, + /* 1210 */ 44, 421, 373, 96, 368, 425, 426, 12, 13, 373, + /* 1220 */ 339, 375, 44, 1, 2, 44, 436, 22, 339, 44, + /* 1230 */ 373, 373, 373, 373, 267, 373, 360, 373, 33, 44, + /* 1240 */ 35, 44, 44, 70, 368, 336, 400, 44, 444, 373, + /* 1250 */ 404, 375, 372, 407, 408, 409, 410, 411, 412, 44, + /* 1260 */ 414, 329, 96, 58, 427, 419, 435, 421, 44, 44, + /* 1270 */ 454, 425, 426, 438, 96, 70, 400, 96, 44, 44, + /* 1280 */ 404, 96, 436, 407, 408, 409, 410, 411, 412, 383, + /* 1290 */ 414, 96, 360, 96, 96, 419, 185, 421, 44, 96, + /* 1300 */ 368, 425, 426, 44, 13, 373, 248, 375, 44, 402, + /* 1310 */ 48, 96, 436, 95, 401, 13, 390, 181, 42, 185, + /* 1320 */ 96, 96, 117, 105, 380, 392, 35, 20, 164, 390, + /* 1330 */ 96, 96, 400, 383, 380, 378, 404, 35, 390, 407, + /* 1340 */ 408, 409, 410, 411, 412, 161, 414, 20, 337, 337, + /* 1350 */ 96, 419, 380, 421, 378, 96, 390, 425, 426, 433, + /* 1360 */ 96, 378, 93, 437, 345, 337, 337, 337, 436, 20, + /* 1370 */ 331, 329, 433, 20, 331, 20, 437, 396, 452, 453, + /* 1380 */ 343, 433, 375, 457, 458, 437, 20, 343, 183, 338, + /* 1390 */ 185, 452, 453, 20, 391, 343, 457, 458, 338, 433, + /* 1400 */ 452, 453, 360, 437, 343, 457, 458, 343, 343, 337, + /* 1410 */ 368, 343, 52, 208, 209, 373, 340, 375, 452, 453, + /* 1420 */ 340, 331, 360, 457, 458, 337, 221, 222, 223, 224, + /* 1430 */ 225, 226, 227, 360, 329, 360, 373, 360, 360, 360, + /* 1440 */ 331, 360, 400, 360, 360, 360, 404, 360, 399, 407, + /* 1450 */ 408, 409, 410, 411, 412, 373, 414, 197, 95, 341, + /* 1460 */ 188, 419, 395, 421, 398, 360, 396, 425, 426, 375, + /* 1470 */ 341, 373, 337, 368, 383, 383, 256, 443, 373, 329, + /* 1480 */ 375, 255, 386, 373, 446, 386, 373, 373, 443, 262, + /* 1490 */ 174, 445, 264, 443, 263, 442, 441, 249, 462, 440, + /* 1500 */ 271, 268, 402, 456, 266, 400, 245, 368, 20, 404, + /* 1510 */ 360, 455, 407, 408, 409, 410, 411, 412, 368, 414, + /* 1520 */ 337, 406, 373, 373, 419, 375, 421, 338, 341, 341, + /* 1530 */ 425, 426, 386, 386, 373, 329, 373, 166, 373, 384, + /* 1540 */ 373, 373, 341, 341, 368, 95, 356, 424, 95, 350, + /* 1550 */ 400, 337, 373, 341, 404, 364, 36, 407, 408, 409, + /* 1560 */ 410, 411, 412, 331, 414, 393, 360, 397, 332, 419, + /* 1570 */ 354, 421, 327, 387, 368, 425, 426, 354, 0, 373, + /* 1580 */ 329, 375, 342, 387, 354, 0, 190, 0, 0, 42, + /* 1590 */ 0, 35, 202, 35, 35, 35, 202, 0, 35, 35, + /* 1600 */ 202, 0, 202, 0, 35, 0, 400, 0, 22, 35, + /* 1610 */ 404, 360, 183, 407, 408, 409, 410, 411, 412, 368, + /* 1620 */ 414, 185, 0, 0, 373, 329, 375, 421, 179, 178, + /* 1630 */ 0, 425, 426, 0, 0, 0, 47, 0, 42, 0, + /* 1640 */ 0, 0, 329, 0, 0, 0, 0, 0, 151, 35, + /* 1650 */ 0, 400, 151, 0, 0, 404, 360, 0, 407, 408, + /* 1660 */ 409, 410, 411, 412, 368, 414, 0, 0, 0, 373, + /* 1670 */ 0, 375, 421, 360, 0, 0, 425, 426, 42, 0, + /* 1680 */ 0, 368, 0, 0, 0, 0, 373, 329, 375, 0, + /* 1690 */ 0, 0, 0, 0, 0, 0, 400, 0, 22, 0, + /* 1700 */ 404, 135, 0, 407, 408, 409, 410, 411, 412, 0, + /* 1710 */ 414, 0, 35, 400, 0, 0, 58, 404, 360, 58, + /* 1720 */ 407, 408, 409, 410, 411, 412, 368, 414, 0, 0, + /* 1730 */ 42, 373, 14, 375, 421, 39, 14, 0, 0, 426, + /* 1740 */ 329, 0, 44, 0, 448, 449, 40, 47, 0, 39, + /* 1750 */ 47, 47, 39, 174, 0, 0, 329, 0, 400, 0, + /* 1760 */ 35, 0, 404, 39, 48, 407, 408, 409, 410, 411, + /* 1770 */ 412, 360, 414, 39, 35, 48, 64, 0, 48, 368, + /* 1780 */ 35, 39, 0, 48, 373, 35, 375, 360, 39, 0, + /* 1790 */ 0, 0, 365, 0, 22, 368, 0, 35, 35, 35, + /* 1800 */ 373, 35, 375, 22, 35, 0, 35, 449, 22, 329, + /* 1810 */ 35, 400, 104, 35, 44, 404, 0, 44, 407, 408, + /* 1820 */ 409, 410, 411, 412, 22, 414, 50, 400, 102, 0, + /* 1830 */ 22, 404, 35, 0, 407, 408, 409, 410, 411, 412, + /* 1840 */ 360, 414, 35, 0, 35, 0, 22, 20, 368, 35, + /* 1850 */ 35, 195, 96, 373, 0, 375, 35, 0, 186, 22, + /* 1860 */ 95, 0, 0, 3, 44, 250, 254, 229, 250, 164, + /* 1870 */ 96, 460, 44, 166, 95, 95, 44, 47, 47, 96, + /* 1880 */ 400, 164, 95, 164, 404, 44, 3, 407, 408, 409, + /* 1890 */ 410, 411, 412, 172, 414, 96, 416, 96, 95, 329, + /* 1900 */ 96, 95, 171, 171, 35, 95, 35, 96, 44, 250, + /* 1910 */ 35, 19, 35, 35, 35, 96, 44, 47, 96, 0, + /* 1920 */ 47, 0, 0, 0, 0, 33, 39, 167, 39, 95, + /* 1930 */ 360, 244, 96, 95, 95, 365, 2, 95, 368, 95, + /* 1940 */ 48, 47, 96, 373, 95, 375, 54, 55, 56, 57, + /* 1950 */ 58, 44, 105, 165, 329, 22, 47, 47, 95, 208, + /* 1960 */ 22, 96, 229, 95, 106, 35, 35, 231, 210, 229, + /* 1970 */ 400, 35, 96, 22, 404, 95, 95, 407, 408, 409, + /* 1980 */ 410, 411, 412, 95, 414, 360, 94, 96, 95, 97, + /* 1990 */ 365, 96, 96, 368, 95, 35, 96, 95, 373, 96, + /* 2000 */ 375, 95, 35, 35, 96, 119, 95, 329, 96, 95, + /* 2010 */ 95, 107, 95, 44, 35, 95, 119, 119, 22, 64, + /* 2020 */ 119, 63, 130, 35, 35, 400, 35, 35, 35, 404, + /* 2030 */ 329, 70, 407, 408, 409, 410, 411, 412, 360, 414, + /* 2040 */ 35, 35, 35, 35, 35, 92, 368, 44, 35, 35, + /* 2050 */ 35, 373, 329, 375, 22, 35, 35, 165, 35, 35, + /* 2060 */ 70, 360, 170, 35, 35, 35, 35, 22, 35, 368, + /* 2070 */ 0, 35, 0, 48, 373, 329, 375, 39, 400, 187, + /* 2080 */ 39, 189, 404, 360, 35, 407, 408, 409, 410, 411, + /* 2090 */ 412, 368, 414, 0, 48, 35, 373, 329, 375, 48, + /* 2100 */ 39, 400, 0, 35, 48, 404, 360, 0, 407, 408, + /* 2110 */ 409, 410, 411, 412, 368, 414, 39, 35, 35, 373, + /* 2120 */ 0, 375, 22, 400, 21, 20, 22, 404, 360, 21, + /* 2130 */ 407, 408, 409, 410, 411, 412, 368, 414, 22, 463, + /* 2140 */ 463, 373, 463, 375, 463, 463, 400, 463, 463, 463, + /* 2150 */ 404, 463, 329, 407, 408, 409, 410, 411, 412, 463, + /* 2160 */ 414, 463, 463, 463, 463, 463, 463, 463, 400, 329, + /* 2170 */ 463, 463, 404, 463, 463, 407, 408, 409, 410, 411, + /* 2180 */ 412, 463, 414, 360, 463, 463, 463, 463, 463, 463, + /* 2190 */ 463, 368, 463, 463, 463, 463, 373, 463, 375, 463, + /* 2200 */ 360, 463, 463, 463, 463, 463, 463, 463, 368, 463, + /* 2210 */ 463, 463, 463, 373, 329, 375, 463, 463, 463, 463, + /* 2220 */ 463, 463, 463, 400, 463, 463, 463, 404, 463, 463, + /* 2230 */ 407, 408, 409, 410, 411, 412, 463, 414, 463, 463, + /* 2240 */ 400, 463, 463, 463, 404, 360, 463, 407, 408, 409, + /* 2250 */ 410, 411, 412, 368, 414, 463, 463, 463, 373, 463, + /* 2260 */ 375, 463, 463, 463, 463, 463, 463, 463, 463, 463, + /* 2270 */ 329, 463, 463, 463, 463, 463, 463, 463, 463, 463, + /* 2280 */ 463, 463, 463, 463, 463, 400, 463, 463, 463, 404, + /* 2290 */ 463, 463, 407, 408, 409, 410, 411, 412, 463, 414, + /* 2300 */ 329, 360, 463, 463, 463, 463, 463, 463, 463, 368, + /* 2310 */ 463, 463, 463, 463, 373, 463, 375, 463, 463, 463, + /* 2320 */ 463, 463, 463, 329, 463, 463, 463, 463, 463, 463, + /* 2330 */ 463, 360, 463, 463, 463, 463, 463, 463, 463, 368, + /* 2340 */ 463, 400, 463, 463, 373, 404, 375, 463, 407, 408, + /* 2350 */ 409, 410, 411, 412, 360, 414, 463, 463, 463, 463, + /* 2360 */ 463, 463, 368, 463, 463, 463, 463, 373, 329, 375, + /* 2370 */ 463, 400, 463, 463, 463, 404, 463, 463, 407, 408, + /* 2380 */ 409, 410, 411, 412, 463, 414, 463, 329, 463, 463, + /* 2390 */ 463, 463, 463, 463, 400, 463, 463, 463, 404, 360, + /* 2400 */ 463, 407, 408, 409, 410, 411, 412, 368, 414, 463, + /* 2410 */ 463, 463, 373, 329, 375, 463, 463, 463, 360, 463, + /* 2420 */ 463, 463, 463, 463, 463, 463, 368, 463, 463, 463, + /* 2430 */ 463, 373, 463, 375, 463, 463, 463, 463, 463, 400, + /* 2440 */ 463, 463, 463, 404, 360, 463, 407, 408, 409, 410, + /* 2450 */ 411, 412, 368, 414, 463, 463, 463, 373, 400, 375, + /* 2460 */ 463, 463, 404, 463, 463, 407, 408, 409, 410, 411, + /* 2470 */ 412, 329, 414, 463, 463, 463, 463, 463, 463, 463, + /* 2480 */ 463, 463, 463, 463, 400, 463, 463, 329, 404, 463, + /* 2490 */ 463, 407, 408, 409, 410, 411, 412, 463, 414, 463, + /* 2500 */ 463, 463, 360, 463, 463, 463, 463, 463, 463, 463, + /* 2510 */ 368, 463, 463, 463, 463, 373, 463, 375, 360, 463, + /* 2520 */ 463, 463, 463, 463, 463, 463, 368, 463, 463, 463, + /* 2530 */ 463, 373, 463, 375, 463, 463, 463, 463, 463, 463, + /* 2540 */ 463, 463, 400, 329, 463, 463, 404, 463, 463, 407, + /* 2550 */ 408, 409, 410, 411, 412, 463, 414, 463, 400, 463, + /* 2560 */ 329, 463, 404, 463, 463, 407, 408, 409, 410, 411, + /* 2570 */ 412, 463, 414, 463, 360, 463, 463, 463, 463, 463, + /* 2580 */ 463, 463, 368, 463, 463, 463, 463, 373, 329, 375, + /* 2590 */ 463, 360, 463, 463, 463, 463, 463, 463, 463, 368, + /* 2600 */ 463, 463, 463, 463, 373, 463, 375, 463, 463, 463, + /* 2610 */ 463, 463, 463, 463, 400, 463, 463, 463, 404, 360, + /* 2620 */ 463, 407, 408, 409, 410, 411, 412, 368, 414, 463, + /* 2630 */ 463, 400, 373, 463, 375, 404, 463, 463, 407, 408, + /* 2640 */ 409, 410, 411, 412, 329, 414, 463, 463, 463, 463, + /* 2650 */ 463, 463, 463, 463, 463, 463, 463, 463, 463, 400, + /* 2660 */ 463, 329, 463, 404, 463, 463, 407, 408, 409, 410, + /* 2670 */ 411, 412, 463, 414, 463, 360, 463, 463, 463, 463, + /* 2680 */ 463, 463, 463, 368, 463, 463, 463, 463, 373, 463, + /* 2690 */ 375, 463, 360, 463, 463, 463, 463, 463, 463, 463, + /* 2700 */ 368, 463, 463, 463, 463, 373, 463, 375, 463, 463, + /* 2710 */ 463, 463, 463, 463, 463, 400, 463, 329, 463, 404, + /* 2720 */ 463, 463, 407, 408, 409, 410, 411, 412, 463, 414, + /* 2730 */ 463, 463, 400, 463, 463, 463, 404, 463, 463, 407, + /* 2740 */ 408, 409, 410, 411, 412, 463, 414, 463, 360, 463, + /* 2750 */ 463, 463, 463, 463, 463, 463, 368, 463, 463, 463, + /* 2760 */ 463, 373, 463, 375, 463, 463, 463, 463, 463, 463, + /* 2770 */ 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, + /* 2780 */ 463, 463, 463, 463, 463, 463, 463, 463, 400, 463, + /* 2790 */ 463, 463, 404, 463, 463, 407, 408, 409, 410, 411, + /* 2800 */ 412, 463, 414, 326, 326, 326, 326, 326, 326, 326, + /* 2810 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2820 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2830 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2840 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2850 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2860 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2870 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2880 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + /* 2890 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, /* 2900 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, /* 2910 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, /* 2920 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, @@ -823,205 +814,195 @@ static const YYCODETYPE yy_lookahead[] = { /* 3090 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, /* 3100 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, /* 3110 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3120 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3130 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3140 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3150 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3160 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3170 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3180 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3190 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3200 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3210 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, - /* 3220 */ 326, + /* 3120 */ 326, 326, 326, 326, 326, 326, 326, 326, 326, }; -#define YY_SHIFT_COUNT (723) +#define YY_SHIFT_COUNT (726) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (2107) +#define YY_SHIFT_MAX (2120) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 865, 0, 71, 0, 290, 290, 290, 290, 290, 290, /* 10 */ 290, 290, 290, 290, 290, 361, 578, 578, 649, 578, /* 20 */ 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, /* 30 */ 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - /* 40 */ 578, 578, 578, 578, 578, 578, 578, 578, 115, 154, - /* 50 */ 72, 59, 149, 214, 446, 214, 72, 72, 1178, 1178, - /* 60 */ 214, 1178, 1178, 251, 214, 258, 5, 5, 258, 85, - /* 70 */ 85, 551, 239, 74, 74, 5, 5, 5, 5, 5, - /* 80 */ 5, 5, 5, 5, 5, 78, 5, 5, 162, 5, - /* 90 */ 225, 5, 5, 5, 5, 225, 5, 5, 225, 5, - /* 100 */ 225, 225, 225, 5, 253, 795, 34, 34, 47, 164, - /* 110 */ 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - /* 120 */ 710, 710, 710, 710, 710, 710, 710, 710, 710, 891, - /* 130 */ 730, 551, 239, 137, 456, 529, 529, 529, 308, 374, - /* 140 */ 374, 456, 459, 459, 459, 416, 335, 225, 525, 225, - /* 150 */ 525, 525, 416, 531, 218, 218, 218, 218, 218, 218, - /* 160 */ 218, 502, 415, 36, 454, 249, 469, 122, 69, 25, - /* 170 */ 98, 546, 590, 941, 775, 665, 832, 21, 930, 832, - /* 180 */ 1015, 852, 822, 1070, 1285, 1155, 1299, 1334, 1299, 1199, - /* 190 */ 1351, 1351, 1299, 1199, 1199, 1288, 1351, 1351, 1351, 1372, - /* 200 */ 1372, 1375, 78, 1376, 78, 1390, 1392, 78, 1390, 78, - /* 210 */ 78, 78, 1351, 78, 1366, 1366, 1372, 225, 225, 225, - /* 220 */ 225, 225, 225, 225, 225, 225, 225, 225, 1351, 1372, - /* 230 */ 525, 525, 1238, 1375, 253, 1251, 1376, 253, 1351, 1334, - /* 240 */ 1334, 525, 1207, 1228, 525, 1207, 1228, 525, 525, 225, - /* 250 */ 1230, 1323, 1207, 1239, 1242, 1252, 1070, 1235, 1241, 1244, - /* 260 */ 1262, 459, 1496, 1351, 1390, 253, 253, 1228, 525, 525, - /* 270 */ 525, 525, 525, 1228, 525, 1369, 253, 416, 253, 459, - /* 280 */ 1446, 1453, 525, 531, 1351, 253, 1513, 1372, 2895, 2895, - /* 290 */ 2895, 2895, 2895, 2895, 2895, 2895, 2895, 890, 311, 884, - /* 300 */ 981, 524, 342, 539, 608, 614, 763, 474, 723, 993, - /* 310 */ 993, 993, 993, 993, 993, 993, 993, 993, 63, 123, - /* 320 */ 364, 364, 455, 636, 561, 87, 749, 303, 995, 995, - /* 330 */ 864, 919, 406, 864, 864, 864, 320, 1035, 450, 1023, - /* 340 */ 994, 1025, 1095, 1100, 1106, 1110, 1146, 1160, 1040, 1145, - /* 350 */ 1165, 1001, 656, 1017, 728, 1176, 1193, 1201, 1202, 1212, - /* 360 */ 1214, 1220, 1219, 126, 1152, 1075, 1188, 1234, 1227, 1256, - /* 370 */ 1259, 1263, 1278, 1280, 1211, 1247, 1277, 1258, 1003, 1586, - /* 380 */ 1587, 1398, 1589, 1590, 1550, 1593, 1559, 1396, 1564, 1565, - /* 390 */ 1566, 1400, 1603, 1569, 1571, 1405, 1608, 1407, 1611, 1578, - /* 400 */ 1614, 1594, 1615, 1582, 1433, 1436, 1620, 1622, 1444, 1447, - /* 410 */ 1624, 1626, 1580, 1628, 1629, 1630, 1591, 1631, 1632, 1634, - /* 420 */ 1635, 1637, 1638, 1641, 1642, 1498, 1616, 1653, 1503, 1655, - /* 430 */ 1656, 1658, 1659, 1663, 1664, 1666, 1671, 1672, 1673, 1674, - /* 440 */ 1675, 1676, 1677, 1679, 1680, 1627, 1681, 1682, 1686, 1687, - /* 450 */ 1688, 1689, 1646, 1690, 1692, 1694, 1549, 1696, 1697, 1669, - /* 460 */ 1706, 1649, 1708, 1652, 1711, 1712, 1683, 1695, 1678, 1691, - /* 470 */ 1701, 1693, 1713, 1699, 1726, 1702, 1704, 1728, 1729, 1731, - /* 480 */ 1705, 1562, 1733, 1741, 1747, 1685, 1748, 1752, 1719, 1707, - /* 490 */ 1717, 1757, 1724, 1714, 1722, 1764, 1730, 1718, 1737, 1768, - /* 500 */ 1734, 1732, 1739, 1781, 1782, 1783, 1785, 1698, 1703, 1751, - /* 510 */ 1765, 1789, 1755, 1762, 1766, 1769, 1763, 1767, 1771, 1773, - /* 520 */ 1777, 1774, 1803, 1791, 1814, 1793, 1770, 1816, 1795, 1784, - /* 530 */ 1821, 1787, 1824, 1792, 1826, 1806, 1809, 1797, 1798, 1639, - /* 540 */ 1742, 1735, 1837, 1700, 1805, 1841, 1657, 1820, 1709, 1710, - /* 550 */ 1845, 1847, 1721, 1716, 1848, 1804, 1600, 1760, 1756, 1772, - /* 560 */ 1715, 1625, 1720, 1612, 1775, 1818, 1776, 1780, 1788, 1794, - /* 570 */ 1796, 1846, 1849, 1850, 1799, 1851, 1618, 1802, 1807, 1862, - /* 580 */ 1855, 1643, 1866, 1867, 1869, 1870, 1871, 1872, 1815, 1823, - /* 590 */ 1863, 1670, 1868, 1873, 1916, 1917, 1921, 1922, 1829, 1886, - /* 600 */ 1833, 1831, 1834, 1839, 1840, 1778, 1842, 1929, 1893, 1779, - /* 610 */ 1843, 1835, 1691, 1889, 1897, 1723, 1725, 1743, 1952, 1936, - /* 620 */ 1754, 1864, 1874, 1865, 1878, 1880, 1881, 1932, 1885, 1887, - /* 630 */ 1937, 1891, 1941, 1786, 1888, 1879, 1894, 1954, 1956, 1898, - /* 640 */ 1896, 1959, 1900, 1902, 1964, 1905, 1906, 1966, 1908, 1909, - /* 650 */ 1969, 1911, 1857, 1890, 1892, 1895, 1985, 1903, 1913, 1971, - /* 660 */ 1923, 1982, 1930, 1971, 1971, 2005, 1965, 1967, 1996, 1997, - /* 670 */ 1998, 1999, 2000, 2002, 2003, 2004, 2007, 2010, 1970, 1955, - /* 680 */ 2006, 2011, 2013, 2014, 2031, 2016, 2019, 2020, 1986, 1763, - /* 690 */ 2023, 1767, 2025, 2026, 2027, 2028, 2042, 2033, 2066, 2034, - /* 700 */ 2022, 2041, 2072, 2038, 2036, 2043, 2085, 2051, 2050, 2060, - /* 710 */ 2089, 2065, 2053, 2063, 2103, 2070, 2071, 2107, 2086, 2091, - /* 720 */ 2088, 2092, 2094, 2093, + /* 40 */ 578, 578, 578, 578, 578, 578, 578, 578, 115, 285, + /* 50 */ 70, 251, 140, 183, 205, 183, 70, 70, 1205, 1205, + /* 60 */ 183, 1205, 1205, 346, 183, 61, 108, 108, 61, 154, + /* 70 */ 154, 39, 434, 53, 53, 108, 108, 108, 108, 108, + /* 80 */ 108, 108, 108, 108, 108, 198, 150, 108, 108, 389, + /* 90 */ 108, 150, 108, 108, 108, 108, 150, 108, 108, 150, + /* 100 */ 108, 150, 150, 150, 108, 501, 795, 34, 34, 217, + /* 110 */ 454, 287, 287, 287, 287, 287, 287, 287, 287, 287, + /* 120 */ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, + /* 130 */ 152, 386, 39, 434, 25, 309, 87, 87, 87, 483, + /* 140 */ 202, 202, 309, 502, 502, 502, 462, 376, 150, 581, + /* 150 */ 150, 581, 581, 462, 587, 218, 218, 218, 218, 218, + /* 160 */ 218, 218, 1892, 460, 304, 545, 453, 58, 286, 288, + /* 170 */ 338, 443, 663, 763, 883, 707, 819, 688, 869, 42, + /* 180 */ 688, 945, 891, 829, 1058, 1262, 1136, 1276, 1307, 1276, + /* 190 */ 1184, 1327, 1327, 1276, 1184, 1184, 1269, 1327, 1327, 1327, + /* 200 */ 1349, 1349, 1353, 198, 1355, 198, 1366, 1373, 198, 1366, + /* 210 */ 198, 198, 198, 1327, 198, 1360, 1360, 1349, 150, 150, + /* 220 */ 150, 150, 150, 150, 150, 150, 150, 150, 150, 1327, + /* 230 */ 1349, 581, 581, 1260, 1363, 1353, 501, 1272, 1355, 501, + /* 240 */ 1327, 1307, 1307, 581, 1220, 1226, 581, 1220, 1226, 581, + /* 250 */ 581, 150, 1227, 1316, 1220, 1228, 1231, 1248, 1058, 1229, + /* 260 */ 1233, 1238, 1261, 502, 1488, 1327, 1366, 501, 501, 1226, + /* 270 */ 581, 581, 581, 581, 581, 1226, 581, 1371, 501, 462, + /* 280 */ 501, 502, 1450, 1453, 581, 587, 1327, 501, 1520, 1349, + /* 290 */ 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 890, + /* 300 */ 382, 418, 1031, 249, 741, 902, 724, 412, 884, 1164, + /* 310 */ 878, 611, 611, 611, 611, 611, 611, 611, 611, 611, + /* 320 */ 887, 485, 24, 24, 477, 537, 196, 762, 20, 586, + /* 330 */ 105, 105, 616, 750, 676, 616, 616, 616, 505, 1001, + /* 340 */ 1032, 979, 897, 963, 974, 1008, 1022, 1122, 1160, 1174, + /* 350 */ 1117, 928, 1166, 1178, 1002, 967, 868, 962, 1181, 1185, + /* 360 */ 1195, 1197, 1198, 1203, 1222, 1215, 1111, 1134, 867, 1224, + /* 370 */ 1041, 1225, 1234, 1235, 1254, 1259, 1264, 1218, 1291, 1302, + /* 380 */ 1173, 759, 1578, 1585, 1396, 1587, 1588, 1547, 1590, 1556, + /* 390 */ 1390, 1558, 1559, 1560, 1394, 1597, 1563, 1564, 1398, 1601, + /* 400 */ 1400, 1603, 1569, 1605, 1586, 1607, 1574, 1436, 1429, 1622, + /* 410 */ 1623, 1449, 1451, 1630, 1633, 1589, 1634, 1635, 1637, 1596, + /* 420 */ 1639, 1640, 1641, 1643, 1644, 1645, 1646, 1647, 1497, 1614, + /* 430 */ 1650, 1501, 1653, 1654, 1657, 1666, 1667, 1668, 1670, 1674, + /* 440 */ 1675, 1682, 1683, 1684, 1685, 1689, 1690, 1691, 1636, 1679, + /* 450 */ 1680, 1692, 1693, 1694, 1695, 1676, 1697, 1699, 1709, 1566, + /* 460 */ 1702, 1711, 1677, 1714, 1658, 1715, 1661, 1728, 1729, 1688, + /* 470 */ 1696, 1698, 1700, 1718, 1703, 1722, 1704, 1737, 1706, 1710, + /* 480 */ 1738, 1741, 1743, 1713, 1579, 1748, 1754, 1755, 1712, 1757, + /* 490 */ 1759, 1725, 1716, 1724, 1761, 1739, 1727, 1734, 1777, 1745, + /* 500 */ 1730, 1742, 1782, 1750, 1735, 1749, 1789, 1790, 1791, 1793, + /* 510 */ 1708, 1726, 1762, 1772, 1796, 1763, 1764, 1766, 1769, 1770, + /* 520 */ 1773, 1771, 1775, 1781, 1778, 1805, 1786, 1816, 1802, 1776, + /* 530 */ 1829, 1808, 1797, 1833, 1807, 1843, 1809, 1845, 1824, 1827, + /* 540 */ 1814, 1815, 1656, 1756, 1765, 1854, 1705, 1821, 1857, 1672, + /* 550 */ 1837, 1717, 1707, 1861, 1862, 1719, 1721, 1860, 1820, 1615, + /* 560 */ 1779, 1774, 1780, 1731, 1638, 1732, 1612, 1783, 1828, 1799, + /* 570 */ 1787, 1803, 1806, 1801, 1832, 1830, 1831, 1810, 1841, 1618, + /* 580 */ 1804, 1811, 1883, 1864, 1659, 1869, 1871, 1875, 1877, 1878, + /* 590 */ 1879, 1819, 1822, 1870, 1687, 1872, 1873, 1919, 1921, 1922, + /* 600 */ 1923, 1834, 1887, 1838, 1836, 1846, 1839, 1842, 1760, 1844, + /* 610 */ 1924, 1889, 1788, 1849, 1847, 1700, 1894, 1907, 1733, 1736, + /* 620 */ 1740, 1934, 1933, 1751, 1863, 1865, 1868, 1876, 1880, 1891, + /* 630 */ 1909, 1881, 1888, 1910, 1895, 1938, 1758, 1893, 1858, 1896, + /* 640 */ 1930, 1931, 1899, 1900, 1936, 1902, 1903, 1960, 1906, 1908, + /* 650 */ 1967, 1911, 1912, 1968, 1914, 1886, 1897, 1898, 1901, 1951, + /* 660 */ 1904, 1915, 1969, 1917, 1979, 1920, 1969, 1969, 1996, 1955, + /* 670 */ 1958, 1988, 1989, 1991, 1992, 1993, 2005, 2006, 2007, 2008, + /* 680 */ 2009, 1961, 1953, 2003, 2013, 2014, 2015, 2032, 2020, 2021, + /* 690 */ 2023, 1990, 1770, 2024, 1773, 2028, 2029, 2030, 2031, 2045, + /* 700 */ 2033, 2070, 2036, 2025, 2038, 2072, 2049, 2046, 2041, 2093, + /* 710 */ 2060, 2051, 2061, 2102, 2068, 2056, 2077, 2107, 2082, 2083, + /* 720 */ 2120, 2100, 2103, 2104, 2116, 2108, 2105, }; -#define YY_REDUCE_COUNT (296) -#define YY_REDUCE_MIN (-428) -#define YY_REDUCE_MAX (2481) +#define YY_REDUCE_COUNT (298) +#define YY_REDUCE_MIN (-429) +#define YY_REDUCE_MAX (2388) static const short yy_reduce_ofst[] = { - /* 0 */ -2, -260, 234, 683, 349, 745, 768, 844, 867, 959, - /* 10 */ 1046, 1069, 1144, 1171, 1237, 936, 295, 1292, 1310, 1364, - /* 20 */ 1385, 1450, 1471, 1540, 1558, 1613, 1668, 1684, 1736, 1759, - /* 30 */ 1811, 1832, 1901, 1919, 1974, 2029, 2045, 2097, 2120, 2172, - /* 40 */ 2193, 2262, 2280, 2335, 2390, 2406, 2458, 2481, -19, -280, - /* 50 */ -306, 224, 628, 774, 782, 869, -232, -31, -347, 284, - /* 60 */ -428, -362, -10, -371, -277, 76, 67, 549, -372, -326, - /* 70 */ 192, -328, -369, -300, -132, 194, 266, 328, 470, 554, - /* 80 */ 645, 653, 660, 679, 680, 114, 472, 682, -341, 685, - /* 90 */ -60, 687, 736, 744, 751, -270, 772, 779, 245, 794, - /* 100 */ 314, 479, 464, 798, -311, 10, -170, -170, 54, -285, - /* 110 */ 16, 33, 119, 191, 391, 508, 512, 622, 654, 659, - /* 120 */ 664, 681, 733, 786, 788, 810, 828, 855, 856, -261, - /* 130 */ 220, 428, 46, -62, 196, 220, 259, 294, 390, 299, - /* 140 */ 332, 550, 440, 452, 519, -335, -184, -253, 557, 52, - /* 150 */ 559, 676, 491, 675, -360, 270, 407, 498, 753, 764, - /* 160 */ 781, 632, 289, 695, 815, 747, 766, 877, 780, 889, - /* 170 */ 889, 885, 861, 931, 922, 916, 879, 879, 878, 879, - /* 180 */ 888, 880, 889, 929, 938, 948, 973, 974, 976, 986, - /* 190 */ 1036, 1041, 1000, 1004, 1007, 1043, 1052, 1053, 1054, 1062, - /* 200 */ 1063, 1011, 1065, 1022, 1066, 1073, 1024, 1074, 1078, 1077, - /* 210 */ 1079, 1080, 1076, 1081, 1085, 1086, 1096, 1068, 1071, 1072, - /* 220 */ 1083, 1087, 1088, 1090, 1091, 1098, 1101, 1102, 1093, 1103, - /* 230 */ 1060, 1067, 1038, 1042, 1105, 1089, 1092, 1119, 1104, 1082, - /* 240 */ 1107, 1108, 1027, 1099, 1113, 1032, 1109, 1115, 1118, 889, - /* 250 */ 1051, 1055, 1056, 1061, 1084, 1094, 1112, 1047, 1059, 1057, - /* 260 */ 879, 1147, 1116, 1181, 1182, 1184, 1185, 1136, 1150, 1154, - /* 270 */ 1156, 1157, 1159, 1142, 1161, 1153, 1195, 1186, 1197, 1172, - /* 280 */ 1122, 1192, 1187, 1208, 1222, 1221, 1229, 1232, 1174, 1168, - /* 290 */ 1189, 1196, 1217, 1218, 1231, 1233, 1246, + /* 0 */ -266, -299, -9, 683, 745, 790, 846, 876, 932, 1042, + /* 10 */ 1105, 1150, 292, 1206, 1251, 360, 1296, 622, 1313, 1358, + /* 20 */ 235, 1411, 1427, 1480, 1570, 1625, 1678, 1701, 1723, 1746, + /* 30 */ 1768, 1823, 1840, 1885, 1941, 1971, 1994, 2039, 2058, 2084, + /* 40 */ 2142, 2158, 2214, 2231, 2259, 2315, 2332, 2388, -280, -278, + /* 50 */ 225, 690, 926, 939, 948, 966, 296, 451, -352, -339, + /* 60 */ -426, -318, -49, -429, -314, -370, -237, -221, -372, -256, + /* 70 */ 200, -200, -303, -235, -192, -161, 326, 329, 337, 371, + /* 80 */ 394, 397, 470, 473, 479, 6, 104, 472, 554, -204, + /* 90 */ 659, 242, 687, 709, 710, 748, 182, 749, 761, 262, + /* 100 */ 764, 247, 274, 318, 651, 21, -259, -422, -422, -236, + /* 110 */ 48, 267, 343, 506, 655, 664, 671, 723, 730, 810, + /* 120 */ 811, 812, 822, 839, 857, 858, 859, 860, 862, 864, + /* 130 */ 245, 352, -176, -7, 47, 179, 352, 481, 488, 327, + /* 140 */ 273, 409, 396, -243, 353, 465, -347, -106, -208, 224, + /* 150 */ 466, 407, 534, 121, 573, -359, 377, 631, 678, 696, + /* 160 */ 770, 801, 626, 368, 699, 784, 645, 742, 881, 804, + /* 170 */ 843, 843, 889, 824, 909, 880, 906, 831, 831, 816, + /* 180 */ 831, 837, 835, 843, 907, 913, 933, 944, 950, 954, + /* 190 */ 957, 1011, 1012, 972, 976, 983, 1019, 1028, 1029, 1030, + /* 200 */ 1039, 1043, 981, 1037, 1007, 1044, 1051, 1003, 1052, 1060, + /* 210 */ 1061, 1064, 1065, 1072, 1068, 1076, 1080, 1090, 1062, 1073, + /* 220 */ 1075, 1077, 1078, 1079, 1081, 1083, 1084, 1085, 1087, 1088, + /* 230 */ 1109, 1063, 1082, 1049, 1066, 1070, 1118, 1067, 1094, 1129, + /* 240 */ 1135, 1091, 1092, 1098, 1034, 1096, 1110, 1045, 1099, 1113, + /* 250 */ 1114, 843, 1038, 1046, 1050, 1053, 1055, 1059, 1100, 1036, + /* 260 */ 1047, 1056, 831, 1139, 1115, 1183, 1189, 1187, 1188, 1146, + /* 270 */ 1149, 1161, 1163, 1165, 1167, 1147, 1168, 1155, 1201, 1190, + /* 280 */ 1202, 1176, 1123, 1191, 1179, 1199, 1214, 1212, 1236, 1232, + /* 290 */ 1172, 1170, 1186, 1196, 1216, 1223, 1230, 1240, 1245, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 10 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 20 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 30 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 40 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 50 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 60 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 70 */ 1619, 1876, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 80 */ 1619, 1619, 1619, 1619, 1619, 1697, 1619, 1619, 1619, 1619, - /* 90 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 100 */ 1619, 1619, 1619, 1619, 1695, 1869, 2073, 1619, 1619, 1619, - /* 110 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 120 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 130 */ 2085, 1619, 1619, 1697, 1619, 2085, 2085, 2085, 1695, 2045, - /* 140 */ 2045, 1619, 1619, 1619, 1619, 1804, 1619, 1619, 1619, 1619, - /* 150 */ 1619, 1619, 1804, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 160 */ 1619, 1919, 1619, 1619, 2110, 2164, 1619, 1619, 2113, 1619, - /* 170 */ 1619, 1619, 1881, 1619, 1757, 2100, 2077, 2091, 2148, 2078, - /* 180 */ 2075, 2094, 1619, 2104, 1619, 1912, 1874, 1619, 1874, 1871, - /* 190 */ 1619, 1619, 1874, 1871, 1871, 1748, 1619, 1619, 1619, 1619, - /* 200 */ 1619, 1619, 1697, 1619, 1697, 1619, 1619, 1697, 1619, 1697, - /* 210 */ 1697, 1697, 1619, 1697, 1676, 1676, 1619, 1619, 1619, 1619, - /* 220 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 230 */ 1619, 1619, 1932, 1619, 1695, 1921, 1619, 1695, 1619, 1619, - /* 240 */ 1619, 1619, 2121, 2119, 1619, 2121, 2119, 1619, 1619, 1619, - /* 250 */ 2133, 2129, 2121, 2137, 2135, 2106, 2104, 2167, 2154, 2150, - /* 260 */ 2091, 1619, 1619, 1619, 1619, 1695, 1695, 2119, 1619, 1619, - /* 270 */ 1619, 1619, 1619, 2119, 1619, 1619, 1695, 1619, 1695, 1619, - /* 280 */ 1619, 1773, 1619, 1619, 1619, 1695, 1651, 1619, 1914, 1925, - /* 290 */ 1897, 1897, 1807, 1807, 1807, 1698, 1624, 1619, 1619, 1619, - /* 300 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 2132, - /* 310 */ 2131, 2000, 1619, 2049, 2048, 2047, 2038, 1999, 1769, 1619, - /* 320 */ 1998, 1997, 1619, 1619, 1619, 1619, 1619, 1619, 1888, 1887, - /* 330 */ 1991, 1619, 1619, 1992, 1990, 1989, 1619, 1619, 1619, 1619, - /* 340 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 350 */ 1619, 1619, 2151, 2155, 1619, 1619, 1619, 1619, 1619, 1619, - /* 360 */ 1619, 2074, 1619, 1619, 1619, 1619, 1619, 1974, 1619, 1619, - /* 370 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 380 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 390 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 400 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 410 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 420 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 430 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 440 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 450 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 460 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1656, 1979, - /* 470 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 480 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 490 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 500 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 510 */ 1619, 1619, 1619, 1619, 1619, 1619, 1736, 1735, 1619, 1619, - /* 520 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 530 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 540 */ 1982, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 550 */ 1619, 1619, 1619, 1619, 2147, 2107, 1619, 1619, 1619, 1619, - /* 560 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 570 */ 1619, 1619, 1619, 1974, 1619, 2130, 1619, 1619, 2145, 1619, - /* 580 */ 2149, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 2084, 2080, - /* 590 */ 1619, 1619, 2076, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 600 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 610 */ 1619, 1619, 1973, 1619, 2035, 1619, 1619, 1619, 2069, 1619, - /* 620 */ 1619, 2020, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 630 */ 1619, 1982, 1619, 1985, 1619, 1619, 1619, 1619, 1619, 1801, - /* 640 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 650 */ 1619, 1619, 1786, 1784, 1783, 1782, 1619, 1779, 1619, 1814, - /* 660 */ 1619, 1619, 1619, 1810, 1809, 1619, 1619, 1619, 1619, 1619, - /* 670 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 680 */ 1716, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1708, - /* 690 */ 1619, 1707, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 700 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 710 */ 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - /* 720 */ 1619, 1619, 1619, 1619, + /* 0 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 10 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 20 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 30 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 40 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 50 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 60 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 70 */ 1625, 1882, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 80 */ 1625, 1625, 1625, 1625, 1625, 1703, 1625, 1625, 1625, 1625, + /* 90 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 100 */ 1625, 1625, 1625, 1625, 1625, 1701, 1875, 2081, 1625, 1625, + /* 110 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 120 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 130 */ 1625, 2093, 1625, 1625, 1703, 1625, 2093, 2093, 2093, 1701, + /* 140 */ 2053, 2053, 1625, 1625, 1625, 1625, 1810, 1625, 1625, 1625, + /* 150 */ 1625, 1625, 1625, 1810, 1625, 1625, 1625, 1625, 1625, 1625, + /* 160 */ 1625, 1625, 1925, 1625, 1625, 2118, 2172, 1625, 1625, 2121, + /* 170 */ 1625, 1625, 1625, 1887, 1625, 1763, 2108, 2085, 2099, 2156, + /* 180 */ 2086, 2083, 2102, 1625, 2112, 1625, 1918, 1880, 1625, 1880, + /* 190 */ 1877, 1625, 1625, 1880, 1877, 1877, 1754, 1625, 1625, 1625, + /* 200 */ 1625, 1625, 1625, 1703, 1625, 1703, 1625, 1625, 1703, 1625, + /* 210 */ 1703, 1703, 1703, 1625, 1703, 1682, 1682, 1625, 1625, 1625, + /* 220 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 230 */ 1625, 1625, 1625, 1940, 1931, 1625, 1701, 1927, 1625, 1701, + /* 240 */ 1625, 1625, 1625, 1625, 2129, 2127, 1625, 2129, 2127, 1625, + /* 250 */ 1625, 1625, 2141, 2137, 2129, 2145, 2143, 2114, 2112, 2175, + /* 260 */ 2162, 2158, 2099, 1625, 1625, 1625, 1625, 1701, 1701, 2127, + /* 270 */ 1625, 1625, 1625, 1625, 1625, 2127, 1625, 1625, 1701, 1625, + /* 280 */ 1701, 1625, 1625, 1779, 1625, 1625, 1625, 1701, 1657, 1625, + /* 290 */ 1920, 1933, 1903, 1903, 1813, 1813, 1813, 1704, 1630, 1625, + /* 300 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 310 */ 1625, 2140, 2139, 2008, 1625, 2057, 2056, 2055, 2046, 2007, + /* 320 */ 1775, 1625, 2006, 2005, 1625, 1625, 1625, 1625, 1625, 1625, + /* 330 */ 1894, 1893, 1999, 1625, 1625, 2000, 1998, 1997, 1625, 1625, + /* 340 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 350 */ 1625, 1625, 1625, 1625, 1625, 2159, 2163, 1625, 1625, 1625, + /* 360 */ 1625, 1625, 1625, 1625, 2082, 1625, 1625, 1625, 1625, 1625, + /* 370 */ 1982, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 380 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 390 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 400 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 410 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 420 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 430 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 440 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 450 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 460 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 470 */ 1625, 1662, 1987, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 480 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 490 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 500 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 510 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1742, + /* 520 */ 1741, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 530 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 540 */ 1625, 1625, 1625, 1990, 1625, 1625, 1625, 1625, 1625, 1625, + /* 550 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 2155, 2115, 1625, + /* 560 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 570 */ 1625, 1625, 1625, 1625, 1625, 1625, 1982, 1625, 2138, 1625, + /* 580 */ 1625, 2153, 1625, 2157, 1625, 1625, 1625, 1625, 1625, 1625, + /* 590 */ 1625, 2092, 2088, 1625, 1625, 2084, 1625, 1625, 1625, 1625, + /* 600 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 610 */ 1625, 1625, 1625, 1625, 1625, 1981, 1625, 2043, 1625, 1625, + /* 620 */ 1625, 2077, 1625, 1625, 2028, 1625, 1625, 1625, 1625, 1625, + /* 630 */ 1625, 1625, 1625, 1625, 1990, 1625, 1993, 1625, 1625, 1625, + /* 640 */ 1625, 1625, 1807, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 650 */ 1625, 1625, 1625, 1625, 1625, 1792, 1790, 1789, 1788, 1625, + /* 660 */ 1785, 1625, 1820, 1625, 1625, 1625, 1816, 1815, 1625, 1625, + /* 670 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 680 */ 1625, 1625, 1625, 1722, 1625, 1625, 1625, 1625, 1625, 1625, + /* 690 */ 1625, 1625, 1714, 1625, 1713, 1625, 1625, 1625, 1625, 1625, + /* 700 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 710 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, + /* 720 */ 1625, 1625, 1625, 1625, 1625, 1625, 1625, }; /********** End of lemon-generated parsing tables *****************************/ @@ -1852,70 +1833,71 @@ static const char *const yyTokenName[] = { /* 395 */ "bufsize_opt", /* 396 */ "stream_name", /* 397 */ "stream_options", - /* 398 */ "subtable_opt", - /* 399 */ "expression", - /* 400 */ "dnode_list", - /* 401 */ "where_clause_opt", - /* 402 */ "signed", - /* 403 */ "literal_func", - /* 404 */ "literal_list", - /* 405 */ "table_alias", - /* 406 */ "expr_or_subquery", - /* 407 */ "pseudo_column", - /* 408 */ "column_reference", - /* 409 */ "function_expression", - /* 410 */ "case_when_expression", - /* 411 */ "star_func", - /* 412 */ "star_func_para_list", - /* 413 */ "noarg_func", - /* 414 */ "other_para_list", - /* 415 */ "star_func_para", - /* 416 */ "when_then_list", - /* 417 */ "case_when_else_opt", - /* 418 */ "common_expression", - /* 419 */ "when_then_expr", - /* 420 */ "predicate", - /* 421 */ "compare_op", - /* 422 */ "in_op", - /* 423 */ "in_predicate_value", - /* 424 */ "boolean_value_expression", - /* 425 */ "boolean_primary", - /* 426 */ "from_clause_opt", - /* 427 */ "table_reference_list", - /* 428 */ "table_reference", - /* 429 */ "table_primary", - /* 430 */ "joined_table", - /* 431 */ "alias_opt", - /* 432 */ "subquery", - /* 433 */ "parenthesized_joined_table", - /* 434 */ "join_type", - /* 435 */ "search_condition", - /* 436 */ "query_specification", - /* 437 */ "set_quantifier_opt", - /* 438 */ "select_list", - /* 439 */ "partition_by_clause_opt", - /* 440 */ "range_opt", - /* 441 */ "every_opt", - /* 442 */ "fill_opt", - /* 443 */ "twindow_clause_opt", - /* 444 */ "group_by_clause_opt", - /* 445 */ "having_clause_opt", - /* 446 */ "select_item", - /* 447 */ "partition_list", - /* 448 */ "partition_item", - /* 449 */ "fill_mode", - /* 450 */ "group_by_list", - /* 451 */ "query_expression", - /* 452 */ "query_simple", - /* 453 */ "order_by_clause_opt", - /* 454 */ "slimit_clause_opt", - /* 455 */ "limit_clause_opt", - /* 456 */ "union_query_expression", - /* 457 */ "query_simple_or_subquery", - /* 458 */ "sort_specification_list", - /* 459 */ "sort_specification", - /* 460 */ "ordering_specification_opt", - /* 461 */ "null_ordering_opt", + /* 398 */ "col_list_opt", + /* 399 */ "subtable_opt", + /* 400 */ "expression", + /* 401 */ "dnode_list", + /* 402 */ "where_clause_opt", + /* 403 */ "signed", + /* 404 */ "literal_func", + /* 405 */ "literal_list", + /* 406 */ "table_alias", + /* 407 */ "expr_or_subquery", + /* 408 */ "pseudo_column", + /* 409 */ "column_reference", + /* 410 */ "function_expression", + /* 411 */ "case_when_expression", + /* 412 */ "star_func", + /* 413 */ "star_func_para_list", + /* 414 */ "noarg_func", + /* 415 */ "other_para_list", + /* 416 */ "star_func_para", + /* 417 */ "when_then_list", + /* 418 */ "case_when_else_opt", + /* 419 */ "common_expression", + /* 420 */ "when_then_expr", + /* 421 */ "predicate", + /* 422 */ "compare_op", + /* 423 */ "in_op", + /* 424 */ "in_predicate_value", + /* 425 */ "boolean_value_expression", + /* 426 */ "boolean_primary", + /* 427 */ "from_clause_opt", + /* 428 */ "table_reference_list", + /* 429 */ "table_reference", + /* 430 */ "table_primary", + /* 431 */ "joined_table", + /* 432 */ "alias_opt", + /* 433 */ "subquery", + /* 434 */ "parenthesized_joined_table", + /* 435 */ "join_type", + /* 436 */ "search_condition", + /* 437 */ "query_specification", + /* 438 */ "set_quantifier_opt", + /* 439 */ "select_list", + /* 440 */ "partition_by_clause_opt", + /* 441 */ "range_opt", + /* 442 */ "every_opt", + /* 443 */ "fill_opt", + /* 444 */ "twindow_clause_opt", + /* 445 */ "group_by_clause_opt", + /* 446 */ "having_clause_opt", + /* 447 */ "select_item", + /* 448 */ "partition_list", + /* 449 */ "partition_item", + /* 450 */ "fill_mode", + /* 451 */ "group_by_list", + /* 452 */ "query_expression", + /* 453 */ "query_simple", + /* 454 */ "order_by_clause_opt", + /* 455 */ "slimit_clause_opt", + /* 456 */ "limit_clause_opt", + /* 457 */ "union_query_expression", + /* 458 */ "query_simple_or_subquery", + /* 459 */ "sort_specification_list", + /* 460 */ "sort_specification", + /* 461 */ "ordering_specification_opt", + /* 462 */ "null_ordering_opt", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ @@ -2224,253 +2206,255 @@ static const char *const yyRuleName[] = { /* 298 */ "agg_func_opt ::= AGGREGATE", /* 299 */ "bufsize_opt ::=", /* 300 */ "bufsize_opt ::= BUFSIZE NK_INTEGER", - /* 301 */ "cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name tags_def_opt subtable_opt AS query_or_subquery", + /* 301 */ "cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name col_list_opt tags_def_opt subtable_opt AS query_or_subquery", /* 302 */ "cmd ::= DROP STREAM exists_opt stream_name", - /* 303 */ "stream_options ::=", - /* 304 */ "stream_options ::= stream_options TRIGGER AT_ONCE", - /* 305 */ "stream_options ::= stream_options TRIGGER WINDOW_CLOSE", - /* 306 */ "stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal", - /* 307 */ "stream_options ::= stream_options WATERMARK duration_literal", - /* 308 */ "stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER", - /* 309 */ "stream_options ::= stream_options FILL_HISTORY NK_INTEGER", - /* 310 */ "subtable_opt ::=", - /* 311 */ "subtable_opt ::= SUBTABLE NK_LP expression NK_RP", - /* 312 */ "cmd ::= KILL CONNECTION NK_INTEGER", - /* 313 */ "cmd ::= KILL QUERY NK_STRING", - /* 314 */ "cmd ::= KILL TRANSACTION NK_INTEGER", - /* 315 */ "cmd ::= BALANCE VGROUP", - /* 316 */ "cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER", - /* 317 */ "cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list", - /* 318 */ "cmd ::= SPLIT VGROUP NK_INTEGER", - /* 319 */ "dnode_list ::= DNODE NK_INTEGER", - /* 320 */ "dnode_list ::= dnode_list DNODE NK_INTEGER", - /* 321 */ "cmd ::= DELETE FROM full_table_name where_clause_opt", - /* 322 */ "cmd ::= query_or_subquery", - /* 323 */ "cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery", - /* 324 */ "cmd ::= INSERT INTO full_table_name query_or_subquery", - /* 325 */ "literal ::= NK_INTEGER", - /* 326 */ "literal ::= NK_FLOAT", - /* 327 */ "literal ::= NK_STRING", - /* 328 */ "literal ::= NK_BOOL", - /* 329 */ "literal ::= TIMESTAMP NK_STRING", - /* 330 */ "literal ::= duration_literal", - /* 331 */ "literal ::= NULL", - /* 332 */ "literal ::= NK_QUESTION", - /* 333 */ "duration_literal ::= NK_VARIABLE", - /* 334 */ "signed ::= NK_INTEGER", - /* 335 */ "signed ::= NK_PLUS NK_INTEGER", - /* 336 */ "signed ::= NK_MINUS NK_INTEGER", - /* 337 */ "signed ::= NK_FLOAT", - /* 338 */ "signed ::= NK_PLUS NK_FLOAT", - /* 339 */ "signed ::= NK_MINUS NK_FLOAT", - /* 340 */ "signed_literal ::= signed", - /* 341 */ "signed_literal ::= NK_STRING", - /* 342 */ "signed_literal ::= NK_BOOL", - /* 343 */ "signed_literal ::= TIMESTAMP NK_STRING", - /* 344 */ "signed_literal ::= duration_literal", - /* 345 */ "signed_literal ::= NULL", - /* 346 */ "signed_literal ::= literal_func", - /* 347 */ "signed_literal ::= NK_QUESTION", - /* 348 */ "literal_list ::= signed_literal", - /* 349 */ "literal_list ::= literal_list NK_COMMA signed_literal", - /* 350 */ "db_name ::= NK_ID", - /* 351 */ "table_name ::= NK_ID", - /* 352 */ "column_name ::= NK_ID", - /* 353 */ "function_name ::= NK_ID", - /* 354 */ "table_alias ::= NK_ID", - /* 355 */ "column_alias ::= NK_ID", - /* 356 */ "user_name ::= NK_ID", - /* 357 */ "topic_name ::= NK_ID", - /* 358 */ "stream_name ::= NK_ID", - /* 359 */ "cgroup_name ::= NK_ID", - /* 360 */ "expr_or_subquery ::= expression", - /* 361 */ "expression ::= literal", - /* 362 */ "expression ::= pseudo_column", - /* 363 */ "expression ::= column_reference", - /* 364 */ "expression ::= function_expression", - /* 365 */ "expression ::= case_when_expression", - /* 366 */ "expression ::= NK_LP expression NK_RP", - /* 367 */ "expression ::= NK_PLUS expr_or_subquery", - /* 368 */ "expression ::= NK_MINUS expr_or_subquery", - /* 369 */ "expression ::= expr_or_subquery NK_PLUS expr_or_subquery", - /* 370 */ "expression ::= expr_or_subquery NK_MINUS expr_or_subquery", - /* 371 */ "expression ::= expr_or_subquery NK_STAR expr_or_subquery", - /* 372 */ "expression ::= expr_or_subquery NK_SLASH expr_or_subquery", - /* 373 */ "expression ::= expr_or_subquery NK_REM expr_or_subquery", - /* 374 */ "expression ::= column_reference NK_ARROW NK_STRING", - /* 375 */ "expression ::= expr_or_subquery NK_BITAND expr_or_subquery", - /* 376 */ "expression ::= expr_or_subquery NK_BITOR expr_or_subquery", - /* 377 */ "expression_list ::= expr_or_subquery", - /* 378 */ "expression_list ::= expression_list NK_COMMA expr_or_subquery", - /* 379 */ "column_reference ::= column_name", - /* 380 */ "column_reference ::= table_name NK_DOT column_name", - /* 381 */ "pseudo_column ::= ROWTS", - /* 382 */ "pseudo_column ::= TBNAME", - /* 383 */ "pseudo_column ::= table_name NK_DOT TBNAME", - /* 384 */ "pseudo_column ::= QSTART", - /* 385 */ "pseudo_column ::= QEND", - /* 386 */ "pseudo_column ::= QDURATION", - /* 387 */ "pseudo_column ::= WSTART", - /* 388 */ "pseudo_column ::= WEND", - /* 389 */ "pseudo_column ::= WDURATION", - /* 390 */ "pseudo_column ::= IROWTS", - /* 391 */ "pseudo_column ::= ISFILLED", - /* 392 */ "pseudo_column ::= QTAGS", - /* 393 */ "function_expression ::= function_name NK_LP expression_list NK_RP", - /* 394 */ "function_expression ::= star_func NK_LP star_func_para_list NK_RP", - /* 395 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP", - /* 396 */ "function_expression ::= literal_func", - /* 397 */ "literal_func ::= noarg_func NK_LP NK_RP", - /* 398 */ "literal_func ::= NOW", - /* 399 */ "noarg_func ::= NOW", - /* 400 */ "noarg_func ::= TODAY", - /* 401 */ "noarg_func ::= TIMEZONE", - /* 402 */ "noarg_func ::= DATABASE", - /* 403 */ "noarg_func ::= CLIENT_VERSION", - /* 404 */ "noarg_func ::= SERVER_VERSION", - /* 405 */ "noarg_func ::= SERVER_STATUS", - /* 406 */ "noarg_func ::= CURRENT_USER", - /* 407 */ "noarg_func ::= USER", - /* 408 */ "star_func ::= COUNT", - /* 409 */ "star_func ::= FIRST", - /* 410 */ "star_func ::= LAST", - /* 411 */ "star_func ::= LAST_ROW", - /* 412 */ "star_func_para_list ::= NK_STAR", - /* 413 */ "star_func_para_list ::= other_para_list", - /* 414 */ "other_para_list ::= star_func_para", - /* 415 */ "other_para_list ::= other_para_list NK_COMMA star_func_para", - /* 416 */ "star_func_para ::= expr_or_subquery", - /* 417 */ "star_func_para ::= table_name NK_DOT NK_STAR", - /* 418 */ "case_when_expression ::= CASE when_then_list case_when_else_opt END", - /* 419 */ "case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END", - /* 420 */ "when_then_list ::= when_then_expr", - /* 421 */ "when_then_list ::= when_then_list when_then_expr", - /* 422 */ "when_then_expr ::= WHEN common_expression THEN common_expression", - /* 423 */ "case_when_else_opt ::=", - /* 424 */ "case_when_else_opt ::= ELSE common_expression", - /* 425 */ "predicate ::= expr_or_subquery compare_op expr_or_subquery", - /* 426 */ "predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery", - /* 427 */ "predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery", - /* 428 */ "predicate ::= expr_or_subquery IS NULL", - /* 429 */ "predicate ::= expr_or_subquery IS NOT NULL", - /* 430 */ "predicate ::= expr_or_subquery in_op in_predicate_value", - /* 431 */ "compare_op ::= NK_LT", - /* 432 */ "compare_op ::= NK_GT", - /* 433 */ "compare_op ::= NK_LE", - /* 434 */ "compare_op ::= NK_GE", - /* 435 */ "compare_op ::= NK_NE", - /* 436 */ "compare_op ::= NK_EQ", - /* 437 */ "compare_op ::= LIKE", - /* 438 */ "compare_op ::= NOT LIKE", - /* 439 */ "compare_op ::= MATCH", - /* 440 */ "compare_op ::= NMATCH", - /* 441 */ "compare_op ::= CONTAINS", - /* 442 */ "in_op ::= IN", - /* 443 */ "in_op ::= NOT IN", - /* 444 */ "in_predicate_value ::= NK_LP literal_list NK_RP", - /* 445 */ "boolean_value_expression ::= boolean_primary", - /* 446 */ "boolean_value_expression ::= NOT boolean_primary", - /* 447 */ "boolean_value_expression ::= boolean_value_expression OR boolean_value_expression", - /* 448 */ "boolean_value_expression ::= boolean_value_expression AND boolean_value_expression", - /* 449 */ "boolean_primary ::= predicate", - /* 450 */ "boolean_primary ::= NK_LP boolean_value_expression NK_RP", - /* 451 */ "common_expression ::= expr_or_subquery", - /* 452 */ "common_expression ::= boolean_value_expression", - /* 453 */ "from_clause_opt ::=", - /* 454 */ "from_clause_opt ::= FROM table_reference_list", - /* 455 */ "table_reference_list ::= table_reference", - /* 456 */ "table_reference_list ::= table_reference_list NK_COMMA table_reference", - /* 457 */ "table_reference ::= table_primary", - /* 458 */ "table_reference ::= joined_table", - /* 459 */ "table_primary ::= table_name alias_opt", - /* 460 */ "table_primary ::= db_name NK_DOT table_name alias_opt", - /* 461 */ "table_primary ::= subquery alias_opt", - /* 462 */ "table_primary ::= parenthesized_joined_table", - /* 463 */ "alias_opt ::=", - /* 464 */ "alias_opt ::= table_alias", - /* 465 */ "alias_opt ::= AS table_alias", - /* 466 */ "parenthesized_joined_table ::= NK_LP joined_table NK_RP", - /* 467 */ "parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP", - /* 468 */ "joined_table ::= table_reference join_type JOIN table_reference ON search_condition", - /* 469 */ "join_type ::=", - /* 470 */ "join_type ::= INNER", - /* 471 */ "query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt", - /* 472 */ "set_quantifier_opt ::=", - /* 473 */ "set_quantifier_opt ::= DISTINCT", - /* 474 */ "set_quantifier_opt ::= ALL", - /* 475 */ "select_list ::= select_item", - /* 476 */ "select_list ::= select_list NK_COMMA select_item", - /* 477 */ "select_item ::= NK_STAR", - /* 478 */ "select_item ::= common_expression", - /* 479 */ "select_item ::= common_expression column_alias", - /* 480 */ "select_item ::= common_expression AS column_alias", - /* 481 */ "select_item ::= table_name NK_DOT NK_STAR", - /* 482 */ "where_clause_opt ::=", - /* 483 */ "where_clause_opt ::= WHERE search_condition", - /* 484 */ "partition_by_clause_opt ::=", - /* 485 */ "partition_by_clause_opt ::= PARTITION BY partition_list", - /* 486 */ "partition_list ::= partition_item", - /* 487 */ "partition_list ::= partition_list NK_COMMA partition_item", - /* 488 */ "partition_item ::= expr_or_subquery", - /* 489 */ "partition_item ::= expr_or_subquery column_alias", - /* 490 */ "partition_item ::= expr_or_subquery AS column_alias", - /* 491 */ "twindow_clause_opt ::=", - /* 492 */ "twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP", - /* 493 */ "twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP", - /* 494 */ "twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt", - /* 495 */ "twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt", - /* 496 */ "twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition", - /* 497 */ "sliding_opt ::=", - /* 498 */ "sliding_opt ::= SLIDING NK_LP duration_literal NK_RP", - /* 499 */ "fill_opt ::=", - /* 500 */ "fill_opt ::= FILL NK_LP fill_mode NK_RP", - /* 501 */ "fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP", - /* 502 */ "fill_mode ::= NONE", - /* 503 */ "fill_mode ::= PREV", - /* 504 */ "fill_mode ::= NULL", - /* 505 */ "fill_mode ::= LINEAR", - /* 506 */ "fill_mode ::= NEXT", - /* 507 */ "group_by_clause_opt ::=", - /* 508 */ "group_by_clause_opt ::= GROUP BY group_by_list", - /* 509 */ "group_by_list ::= expr_or_subquery", - /* 510 */ "group_by_list ::= group_by_list NK_COMMA expr_or_subquery", - /* 511 */ "having_clause_opt ::=", - /* 512 */ "having_clause_opt ::= HAVING search_condition", - /* 513 */ "range_opt ::=", - /* 514 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP", - /* 515 */ "every_opt ::=", - /* 516 */ "every_opt ::= EVERY NK_LP duration_literal NK_RP", - /* 517 */ "query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt", - /* 518 */ "query_simple ::= query_specification", - /* 519 */ "query_simple ::= union_query_expression", - /* 520 */ "union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery", - /* 521 */ "union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery", - /* 522 */ "query_simple_or_subquery ::= query_simple", - /* 523 */ "query_simple_or_subquery ::= subquery", - /* 524 */ "query_or_subquery ::= query_expression", - /* 525 */ "query_or_subquery ::= subquery", - /* 526 */ "order_by_clause_opt ::=", - /* 527 */ "order_by_clause_opt ::= ORDER BY sort_specification_list", - /* 528 */ "slimit_clause_opt ::=", - /* 529 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER", - /* 530 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER", - /* 531 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER", - /* 532 */ "limit_clause_opt ::=", - /* 533 */ "limit_clause_opt ::= LIMIT NK_INTEGER", - /* 534 */ "limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER", - /* 535 */ "limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER", - /* 536 */ "subquery ::= NK_LP query_expression NK_RP", - /* 537 */ "subquery ::= NK_LP subquery NK_RP", - /* 538 */ "search_condition ::= common_expression", - /* 539 */ "sort_specification_list ::= sort_specification", - /* 540 */ "sort_specification_list ::= sort_specification_list NK_COMMA sort_specification", - /* 541 */ "sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt", - /* 542 */ "ordering_specification_opt ::=", - /* 543 */ "ordering_specification_opt ::= ASC", - /* 544 */ "ordering_specification_opt ::= DESC", - /* 545 */ "null_ordering_opt ::=", - /* 546 */ "null_ordering_opt ::= NULLS FIRST", - /* 547 */ "null_ordering_opt ::= NULLS LAST", + /* 303 */ "col_list_opt ::=", + /* 304 */ "col_list_opt ::= NK_LP col_name_list NK_RP", + /* 305 */ "stream_options ::=", + /* 306 */ "stream_options ::= stream_options TRIGGER AT_ONCE", + /* 307 */ "stream_options ::= stream_options TRIGGER WINDOW_CLOSE", + /* 308 */ "stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal", + /* 309 */ "stream_options ::= stream_options WATERMARK duration_literal", + /* 310 */ "stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER", + /* 311 */ "stream_options ::= stream_options FILL_HISTORY NK_INTEGER", + /* 312 */ "subtable_opt ::=", + /* 313 */ "subtable_opt ::= SUBTABLE NK_LP expression NK_RP", + /* 314 */ "cmd ::= KILL CONNECTION NK_INTEGER", + /* 315 */ "cmd ::= KILL QUERY NK_STRING", + /* 316 */ "cmd ::= KILL TRANSACTION NK_INTEGER", + /* 317 */ "cmd ::= BALANCE VGROUP", + /* 318 */ "cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER", + /* 319 */ "cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list", + /* 320 */ "cmd ::= SPLIT VGROUP NK_INTEGER", + /* 321 */ "dnode_list ::= DNODE NK_INTEGER", + /* 322 */ "dnode_list ::= dnode_list DNODE NK_INTEGER", + /* 323 */ "cmd ::= DELETE FROM full_table_name where_clause_opt", + /* 324 */ "cmd ::= query_or_subquery", + /* 325 */ "cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery", + /* 326 */ "cmd ::= INSERT INTO full_table_name query_or_subquery", + /* 327 */ "literal ::= NK_INTEGER", + /* 328 */ "literal ::= NK_FLOAT", + /* 329 */ "literal ::= NK_STRING", + /* 330 */ "literal ::= NK_BOOL", + /* 331 */ "literal ::= TIMESTAMP NK_STRING", + /* 332 */ "literal ::= duration_literal", + /* 333 */ "literal ::= NULL", + /* 334 */ "literal ::= NK_QUESTION", + /* 335 */ "duration_literal ::= NK_VARIABLE", + /* 336 */ "signed ::= NK_INTEGER", + /* 337 */ "signed ::= NK_PLUS NK_INTEGER", + /* 338 */ "signed ::= NK_MINUS NK_INTEGER", + /* 339 */ "signed ::= NK_FLOAT", + /* 340 */ "signed ::= NK_PLUS NK_FLOAT", + /* 341 */ "signed ::= NK_MINUS NK_FLOAT", + /* 342 */ "signed_literal ::= signed", + /* 343 */ "signed_literal ::= NK_STRING", + /* 344 */ "signed_literal ::= NK_BOOL", + /* 345 */ "signed_literal ::= TIMESTAMP NK_STRING", + /* 346 */ "signed_literal ::= duration_literal", + /* 347 */ "signed_literal ::= NULL", + /* 348 */ "signed_literal ::= literal_func", + /* 349 */ "signed_literal ::= NK_QUESTION", + /* 350 */ "literal_list ::= signed_literal", + /* 351 */ "literal_list ::= literal_list NK_COMMA signed_literal", + /* 352 */ "db_name ::= NK_ID", + /* 353 */ "table_name ::= NK_ID", + /* 354 */ "column_name ::= NK_ID", + /* 355 */ "function_name ::= NK_ID", + /* 356 */ "table_alias ::= NK_ID", + /* 357 */ "column_alias ::= NK_ID", + /* 358 */ "user_name ::= NK_ID", + /* 359 */ "topic_name ::= NK_ID", + /* 360 */ "stream_name ::= NK_ID", + /* 361 */ "cgroup_name ::= NK_ID", + /* 362 */ "expr_or_subquery ::= expression", + /* 363 */ "expression ::= literal", + /* 364 */ "expression ::= pseudo_column", + /* 365 */ "expression ::= column_reference", + /* 366 */ "expression ::= function_expression", + /* 367 */ "expression ::= case_when_expression", + /* 368 */ "expression ::= NK_LP expression NK_RP", + /* 369 */ "expression ::= NK_PLUS expr_or_subquery", + /* 370 */ "expression ::= NK_MINUS expr_or_subquery", + /* 371 */ "expression ::= expr_or_subquery NK_PLUS expr_or_subquery", + /* 372 */ "expression ::= expr_or_subquery NK_MINUS expr_or_subquery", + /* 373 */ "expression ::= expr_or_subquery NK_STAR expr_or_subquery", + /* 374 */ "expression ::= expr_or_subquery NK_SLASH expr_or_subquery", + /* 375 */ "expression ::= expr_or_subquery NK_REM expr_or_subquery", + /* 376 */ "expression ::= column_reference NK_ARROW NK_STRING", + /* 377 */ "expression ::= expr_or_subquery NK_BITAND expr_or_subquery", + /* 378 */ "expression ::= expr_or_subquery NK_BITOR expr_or_subquery", + /* 379 */ "expression_list ::= expr_or_subquery", + /* 380 */ "expression_list ::= expression_list NK_COMMA expr_or_subquery", + /* 381 */ "column_reference ::= column_name", + /* 382 */ "column_reference ::= table_name NK_DOT column_name", + /* 383 */ "pseudo_column ::= ROWTS", + /* 384 */ "pseudo_column ::= TBNAME", + /* 385 */ "pseudo_column ::= table_name NK_DOT TBNAME", + /* 386 */ "pseudo_column ::= QSTART", + /* 387 */ "pseudo_column ::= QEND", + /* 388 */ "pseudo_column ::= QDURATION", + /* 389 */ "pseudo_column ::= WSTART", + /* 390 */ "pseudo_column ::= WEND", + /* 391 */ "pseudo_column ::= WDURATION", + /* 392 */ "pseudo_column ::= IROWTS", + /* 393 */ "pseudo_column ::= ISFILLED", + /* 394 */ "pseudo_column ::= QTAGS", + /* 395 */ "function_expression ::= function_name NK_LP expression_list NK_RP", + /* 396 */ "function_expression ::= star_func NK_LP star_func_para_list NK_RP", + /* 397 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP", + /* 398 */ "function_expression ::= literal_func", + /* 399 */ "literal_func ::= noarg_func NK_LP NK_RP", + /* 400 */ "literal_func ::= NOW", + /* 401 */ "noarg_func ::= NOW", + /* 402 */ "noarg_func ::= TODAY", + /* 403 */ "noarg_func ::= TIMEZONE", + /* 404 */ "noarg_func ::= DATABASE", + /* 405 */ "noarg_func ::= CLIENT_VERSION", + /* 406 */ "noarg_func ::= SERVER_VERSION", + /* 407 */ "noarg_func ::= SERVER_STATUS", + /* 408 */ "noarg_func ::= CURRENT_USER", + /* 409 */ "noarg_func ::= USER", + /* 410 */ "star_func ::= COUNT", + /* 411 */ "star_func ::= FIRST", + /* 412 */ "star_func ::= LAST", + /* 413 */ "star_func ::= LAST_ROW", + /* 414 */ "star_func_para_list ::= NK_STAR", + /* 415 */ "star_func_para_list ::= other_para_list", + /* 416 */ "other_para_list ::= star_func_para", + /* 417 */ "other_para_list ::= other_para_list NK_COMMA star_func_para", + /* 418 */ "star_func_para ::= expr_or_subquery", + /* 419 */ "star_func_para ::= table_name NK_DOT NK_STAR", + /* 420 */ "case_when_expression ::= CASE when_then_list case_when_else_opt END", + /* 421 */ "case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END", + /* 422 */ "when_then_list ::= when_then_expr", + /* 423 */ "when_then_list ::= when_then_list when_then_expr", + /* 424 */ "when_then_expr ::= WHEN common_expression THEN common_expression", + /* 425 */ "case_when_else_opt ::=", + /* 426 */ "case_when_else_opt ::= ELSE common_expression", + /* 427 */ "predicate ::= expr_or_subquery compare_op expr_or_subquery", + /* 428 */ "predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery", + /* 429 */ "predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery", + /* 430 */ "predicate ::= expr_or_subquery IS NULL", + /* 431 */ "predicate ::= expr_or_subquery IS NOT NULL", + /* 432 */ "predicate ::= expr_or_subquery in_op in_predicate_value", + /* 433 */ "compare_op ::= NK_LT", + /* 434 */ "compare_op ::= NK_GT", + /* 435 */ "compare_op ::= NK_LE", + /* 436 */ "compare_op ::= NK_GE", + /* 437 */ "compare_op ::= NK_NE", + /* 438 */ "compare_op ::= NK_EQ", + /* 439 */ "compare_op ::= LIKE", + /* 440 */ "compare_op ::= NOT LIKE", + /* 441 */ "compare_op ::= MATCH", + /* 442 */ "compare_op ::= NMATCH", + /* 443 */ "compare_op ::= CONTAINS", + /* 444 */ "in_op ::= IN", + /* 445 */ "in_op ::= NOT IN", + /* 446 */ "in_predicate_value ::= NK_LP literal_list NK_RP", + /* 447 */ "boolean_value_expression ::= boolean_primary", + /* 448 */ "boolean_value_expression ::= NOT boolean_primary", + /* 449 */ "boolean_value_expression ::= boolean_value_expression OR boolean_value_expression", + /* 450 */ "boolean_value_expression ::= boolean_value_expression AND boolean_value_expression", + /* 451 */ "boolean_primary ::= predicate", + /* 452 */ "boolean_primary ::= NK_LP boolean_value_expression NK_RP", + /* 453 */ "common_expression ::= expr_or_subquery", + /* 454 */ "common_expression ::= boolean_value_expression", + /* 455 */ "from_clause_opt ::=", + /* 456 */ "from_clause_opt ::= FROM table_reference_list", + /* 457 */ "table_reference_list ::= table_reference", + /* 458 */ "table_reference_list ::= table_reference_list NK_COMMA table_reference", + /* 459 */ "table_reference ::= table_primary", + /* 460 */ "table_reference ::= joined_table", + /* 461 */ "table_primary ::= table_name alias_opt", + /* 462 */ "table_primary ::= db_name NK_DOT table_name alias_opt", + /* 463 */ "table_primary ::= subquery alias_opt", + /* 464 */ "table_primary ::= parenthesized_joined_table", + /* 465 */ "alias_opt ::=", + /* 466 */ "alias_opt ::= table_alias", + /* 467 */ "alias_opt ::= AS table_alias", + /* 468 */ "parenthesized_joined_table ::= NK_LP joined_table NK_RP", + /* 469 */ "parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP", + /* 470 */ "joined_table ::= table_reference join_type JOIN table_reference ON search_condition", + /* 471 */ "join_type ::=", + /* 472 */ "join_type ::= INNER", + /* 473 */ "query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt", + /* 474 */ "set_quantifier_opt ::=", + /* 475 */ "set_quantifier_opt ::= DISTINCT", + /* 476 */ "set_quantifier_opt ::= ALL", + /* 477 */ "select_list ::= select_item", + /* 478 */ "select_list ::= select_list NK_COMMA select_item", + /* 479 */ "select_item ::= NK_STAR", + /* 480 */ "select_item ::= common_expression", + /* 481 */ "select_item ::= common_expression column_alias", + /* 482 */ "select_item ::= common_expression AS column_alias", + /* 483 */ "select_item ::= table_name NK_DOT NK_STAR", + /* 484 */ "where_clause_opt ::=", + /* 485 */ "where_clause_opt ::= WHERE search_condition", + /* 486 */ "partition_by_clause_opt ::=", + /* 487 */ "partition_by_clause_opt ::= PARTITION BY partition_list", + /* 488 */ "partition_list ::= partition_item", + /* 489 */ "partition_list ::= partition_list NK_COMMA partition_item", + /* 490 */ "partition_item ::= expr_or_subquery", + /* 491 */ "partition_item ::= expr_or_subquery column_alias", + /* 492 */ "partition_item ::= expr_or_subquery AS column_alias", + /* 493 */ "twindow_clause_opt ::=", + /* 494 */ "twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP", + /* 495 */ "twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP", + /* 496 */ "twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt", + /* 497 */ "twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt", + /* 498 */ "twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition", + /* 499 */ "sliding_opt ::=", + /* 500 */ "sliding_opt ::= SLIDING NK_LP duration_literal NK_RP", + /* 501 */ "fill_opt ::=", + /* 502 */ "fill_opt ::= FILL NK_LP fill_mode NK_RP", + /* 503 */ "fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP", + /* 504 */ "fill_mode ::= NONE", + /* 505 */ "fill_mode ::= PREV", + /* 506 */ "fill_mode ::= NULL", + /* 507 */ "fill_mode ::= LINEAR", + /* 508 */ "fill_mode ::= NEXT", + /* 509 */ "group_by_clause_opt ::=", + /* 510 */ "group_by_clause_opt ::= GROUP BY group_by_list", + /* 511 */ "group_by_list ::= expr_or_subquery", + /* 512 */ "group_by_list ::= group_by_list NK_COMMA expr_or_subquery", + /* 513 */ "having_clause_opt ::=", + /* 514 */ "having_clause_opt ::= HAVING search_condition", + /* 515 */ "range_opt ::=", + /* 516 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP", + /* 517 */ "every_opt ::=", + /* 518 */ "every_opt ::= EVERY NK_LP duration_literal NK_RP", + /* 519 */ "query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt", + /* 520 */ "query_simple ::= query_specification", + /* 521 */ "query_simple ::= union_query_expression", + /* 522 */ "union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery", + /* 523 */ "union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery", + /* 524 */ "query_simple_or_subquery ::= query_simple", + /* 525 */ "query_simple_or_subquery ::= subquery", + /* 526 */ "query_or_subquery ::= query_expression", + /* 527 */ "query_or_subquery ::= subquery", + /* 528 */ "order_by_clause_opt ::=", + /* 529 */ "order_by_clause_opt ::= ORDER BY sort_specification_list", + /* 530 */ "slimit_clause_opt ::=", + /* 531 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER", + /* 532 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER", + /* 533 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER", + /* 534 */ "limit_clause_opt ::=", + /* 535 */ "limit_clause_opt ::= LIMIT NK_INTEGER", + /* 536 */ "limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER", + /* 537 */ "limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER", + /* 538 */ "subquery ::= NK_LP query_expression NK_RP", + /* 539 */ "subquery ::= NK_LP subquery NK_RP", + /* 540 */ "search_condition ::= common_expression", + /* 541 */ "sort_specification_list ::= sort_specification", + /* 542 */ "sort_specification_list ::= sort_specification_list NK_COMMA sort_specification", + /* 543 */ "sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt", + /* 544 */ "ordering_specification_opt ::=", + /* 545 */ "ordering_specification_opt ::= ASC", + /* 546 */ "ordering_specification_opt ::= DESC", + /* 547 */ "null_ordering_opt ::=", + /* 548 */ "null_ordering_opt ::= NULLS FIRST", + /* 549 */ "null_ordering_opt ::= NULLS LAST", }; #endif /* NDEBUG */ @@ -2625,49 +2609,49 @@ static void yy_destructor( case 390: /* query_or_subquery */ case 393: /* explain_options */ case 397: /* stream_options */ - case 398: /* subtable_opt */ - case 399: /* expression */ - case 401: /* where_clause_opt */ - case 402: /* signed */ - case 403: /* literal_func */ - case 406: /* expr_or_subquery */ - case 407: /* pseudo_column */ - case 408: /* column_reference */ - case 409: /* function_expression */ - case 410: /* case_when_expression */ - case 415: /* star_func_para */ - case 417: /* case_when_else_opt */ - case 418: /* common_expression */ - case 419: /* when_then_expr */ - case 420: /* predicate */ - case 423: /* in_predicate_value */ - case 424: /* boolean_value_expression */ - case 425: /* boolean_primary */ - case 426: /* from_clause_opt */ - case 427: /* table_reference_list */ - case 428: /* table_reference */ - case 429: /* table_primary */ - case 430: /* joined_table */ - case 432: /* subquery */ - case 433: /* parenthesized_joined_table */ - case 435: /* search_condition */ - case 436: /* query_specification */ - case 440: /* range_opt */ - case 441: /* every_opt */ - case 442: /* fill_opt */ - case 443: /* twindow_clause_opt */ - case 445: /* having_clause_opt */ - case 446: /* select_item */ - case 448: /* partition_item */ - case 451: /* query_expression */ - case 452: /* query_simple */ - case 454: /* slimit_clause_opt */ - case 455: /* limit_clause_opt */ - case 456: /* union_query_expression */ - case 457: /* query_simple_or_subquery */ - case 459: /* sort_specification */ + case 399: /* subtable_opt */ + case 400: /* expression */ + case 402: /* where_clause_opt */ + case 403: /* signed */ + case 404: /* literal_func */ + case 407: /* expr_or_subquery */ + case 408: /* pseudo_column */ + case 409: /* column_reference */ + case 410: /* function_expression */ + case 411: /* case_when_expression */ + case 416: /* star_func_para */ + case 418: /* case_when_else_opt */ + case 419: /* common_expression */ + case 420: /* when_then_expr */ + case 421: /* predicate */ + case 424: /* in_predicate_value */ + case 425: /* boolean_value_expression */ + case 426: /* boolean_primary */ + case 427: /* from_clause_opt */ + case 428: /* table_reference_list */ + case 429: /* table_reference */ + case 430: /* table_primary */ + case 431: /* joined_table */ + case 433: /* subquery */ + case 434: /* parenthesized_joined_table */ + case 436: /* search_condition */ + case 437: /* query_specification */ + case 441: /* range_opt */ + case 442: /* every_opt */ + case 443: /* fill_opt */ + case 444: /* twindow_clause_opt */ + case 446: /* having_clause_opt */ + case 447: /* select_item */ + case 449: /* partition_item */ + case 452: /* query_expression */ + case 453: /* query_simple */ + case 455: /* slimit_clause_opt */ + case 456: /* limit_clause_opt */ + case 457: /* union_query_expression */ + case 458: /* query_simple_or_subquery */ + case 460: /* sort_specification */ { - nodesDestroyNode((yypminor->yy476)); + nodesDestroyNode((yypminor->yy320)); } break; case 327: /* account_options */ @@ -2691,10 +2675,10 @@ static void yy_destructor( case 389: /* sma_func_name */ case 391: /* cgroup_name */ case 396: /* stream_name */ - case 405: /* table_alias */ - case 411: /* star_func */ - case 413: /* noarg_func */ - case 431: /* alias_opt */ + case 406: /* table_alias */ + case 412: /* star_func */ + case 414: /* noarg_func */ + case 432: /* alias_opt */ { } @@ -2716,7 +2700,7 @@ static void yy_destructor( case 343: /* exists_opt */ case 392: /* analyze_opt */ case 394: /* agg_func_opt */ - case 437: /* set_quantifier_opt */ + case 438: /* set_quantifier_opt */ { } @@ -2736,20 +2720,21 @@ static void yy_destructor( case 371: /* rollup_func_list */ case 381: /* tag_list_opt */ case 385: /* func_list */ - case 400: /* dnode_list */ - case 404: /* literal_list */ - case 412: /* star_func_para_list */ - case 414: /* other_para_list */ - case 416: /* when_then_list */ - case 438: /* select_list */ - case 439: /* partition_by_clause_opt */ - case 444: /* group_by_clause_opt */ - case 447: /* partition_list */ - case 450: /* group_by_list */ - case 453: /* order_by_clause_opt */ - case 458: /* sort_specification_list */ + case 398: /* col_list_opt */ + case 401: /* dnode_list */ + case 405: /* literal_list */ + case 413: /* star_func_para_list */ + case 415: /* other_para_list */ + case 417: /* when_then_list */ + case 439: /* select_list */ + case 440: /* partition_by_clause_opt */ + case 445: /* group_by_clause_opt */ + case 448: /* partition_list */ + case 451: /* group_by_list */ + case 454: /* order_by_clause_opt */ + case 459: /* sort_specification_list */ { - nodesDestroyList((yypminor->yy376)); + nodesDestroyList((yypminor->yy570)); } break; case 349: /* alter_db_option */ @@ -2763,28 +2748,28 @@ static void yy_destructor( } break; - case 421: /* compare_op */ - case 422: /* in_op */ + case 422: /* compare_op */ + case 423: /* in_op */ { } break; - case 434: /* join_type */ + case 435: /* join_type */ { } break; - case 449: /* fill_mode */ + case 450: /* fill_mode */ { } break; - case 460: /* ordering_specification_opt */ + case 461: /* ordering_specification_opt */ { } break; - case 461: /* null_ordering_opt */ + case 462: /* null_ordering_opt */ { } @@ -3376,253 +3361,255 @@ static const YYCODETYPE yyRuleInfoLhs[] = { 394, /* (298) agg_func_opt ::= AGGREGATE */ 395, /* (299) bufsize_opt ::= */ 395, /* (300) bufsize_opt ::= BUFSIZE NK_INTEGER */ - 326, /* (301) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name tags_def_opt subtable_opt AS query_or_subquery */ + 326, /* (301) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name col_list_opt tags_def_opt subtable_opt AS query_or_subquery */ 326, /* (302) cmd ::= DROP STREAM exists_opt stream_name */ - 397, /* (303) stream_options ::= */ - 397, /* (304) stream_options ::= stream_options TRIGGER AT_ONCE */ - 397, /* (305) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ - 397, /* (306) stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ - 397, /* (307) stream_options ::= stream_options WATERMARK duration_literal */ - 397, /* (308) stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER */ - 397, /* (309) stream_options ::= stream_options FILL_HISTORY NK_INTEGER */ - 398, /* (310) subtable_opt ::= */ - 398, /* (311) subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ - 326, /* (312) cmd ::= KILL CONNECTION NK_INTEGER */ - 326, /* (313) cmd ::= KILL QUERY NK_STRING */ - 326, /* (314) cmd ::= KILL TRANSACTION NK_INTEGER */ - 326, /* (315) cmd ::= BALANCE VGROUP */ - 326, /* (316) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ - 326, /* (317) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ - 326, /* (318) cmd ::= SPLIT VGROUP NK_INTEGER */ - 400, /* (319) dnode_list ::= DNODE NK_INTEGER */ - 400, /* (320) dnode_list ::= dnode_list DNODE NK_INTEGER */ - 326, /* (321) cmd ::= DELETE FROM full_table_name where_clause_opt */ - 326, /* (322) cmd ::= query_or_subquery */ - 326, /* (323) cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ - 326, /* (324) cmd ::= INSERT INTO full_table_name query_or_subquery */ - 329, /* (325) literal ::= NK_INTEGER */ - 329, /* (326) literal ::= NK_FLOAT */ - 329, /* (327) literal ::= NK_STRING */ - 329, /* (328) literal ::= NK_BOOL */ - 329, /* (329) literal ::= TIMESTAMP NK_STRING */ - 329, /* (330) literal ::= duration_literal */ - 329, /* (331) literal ::= NULL */ - 329, /* (332) literal ::= NK_QUESTION */ - 373, /* (333) duration_literal ::= NK_VARIABLE */ - 402, /* (334) signed ::= NK_INTEGER */ - 402, /* (335) signed ::= NK_PLUS NK_INTEGER */ - 402, /* (336) signed ::= NK_MINUS NK_INTEGER */ - 402, /* (337) signed ::= NK_FLOAT */ - 402, /* (338) signed ::= NK_PLUS NK_FLOAT */ - 402, /* (339) signed ::= NK_MINUS NK_FLOAT */ - 362, /* (340) signed_literal ::= signed */ - 362, /* (341) signed_literal ::= NK_STRING */ - 362, /* (342) signed_literal ::= NK_BOOL */ - 362, /* (343) signed_literal ::= TIMESTAMP NK_STRING */ - 362, /* (344) signed_literal ::= duration_literal */ - 362, /* (345) signed_literal ::= NULL */ - 362, /* (346) signed_literal ::= literal_func */ - 362, /* (347) signed_literal ::= NK_QUESTION */ - 404, /* (348) literal_list ::= signed_literal */ - 404, /* (349) literal_list ::= literal_list NK_COMMA signed_literal */ - 337, /* (350) db_name ::= NK_ID */ - 368, /* (351) table_name ::= NK_ID */ - 360, /* (352) column_name ::= NK_ID */ - 375, /* (353) function_name ::= NK_ID */ - 405, /* (354) table_alias ::= NK_ID */ - 383, /* (355) column_alias ::= NK_ID */ - 331, /* (356) user_name ::= NK_ID */ - 338, /* (357) topic_name ::= NK_ID */ - 396, /* (358) stream_name ::= NK_ID */ - 391, /* (359) cgroup_name ::= NK_ID */ - 406, /* (360) expr_or_subquery ::= expression */ - 399, /* (361) expression ::= literal */ - 399, /* (362) expression ::= pseudo_column */ - 399, /* (363) expression ::= column_reference */ - 399, /* (364) expression ::= function_expression */ - 399, /* (365) expression ::= case_when_expression */ - 399, /* (366) expression ::= NK_LP expression NK_RP */ - 399, /* (367) expression ::= NK_PLUS expr_or_subquery */ - 399, /* (368) expression ::= NK_MINUS expr_or_subquery */ - 399, /* (369) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ - 399, /* (370) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ - 399, /* (371) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ - 399, /* (372) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ - 399, /* (373) expression ::= expr_or_subquery NK_REM expr_or_subquery */ - 399, /* (374) expression ::= column_reference NK_ARROW NK_STRING */ - 399, /* (375) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ - 399, /* (376) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ - 365, /* (377) expression_list ::= expr_or_subquery */ - 365, /* (378) expression_list ::= expression_list NK_COMMA expr_or_subquery */ - 408, /* (379) column_reference ::= column_name */ - 408, /* (380) column_reference ::= table_name NK_DOT column_name */ - 407, /* (381) pseudo_column ::= ROWTS */ - 407, /* (382) pseudo_column ::= TBNAME */ - 407, /* (383) pseudo_column ::= table_name NK_DOT TBNAME */ - 407, /* (384) pseudo_column ::= QSTART */ - 407, /* (385) pseudo_column ::= QEND */ - 407, /* (386) pseudo_column ::= QDURATION */ - 407, /* (387) pseudo_column ::= WSTART */ - 407, /* (388) pseudo_column ::= WEND */ - 407, /* (389) pseudo_column ::= WDURATION */ - 407, /* (390) pseudo_column ::= IROWTS */ - 407, /* (391) pseudo_column ::= ISFILLED */ - 407, /* (392) pseudo_column ::= QTAGS */ - 409, /* (393) function_expression ::= function_name NK_LP expression_list NK_RP */ - 409, /* (394) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ - 409, /* (395) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ - 409, /* (396) function_expression ::= literal_func */ - 403, /* (397) literal_func ::= noarg_func NK_LP NK_RP */ - 403, /* (398) literal_func ::= NOW */ - 413, /* (399) noarg_func ::= NOW */ - 413, /* (400) noarg_func ::= TODAY */ - 413, /* (401) noarg_func ::= TIMEZONE */ - 413, /* (402) noarg_func ::= DATABASE */ - 413, /* (403) noarg_func ::= CLIENT_VERSION */ - 413, /* (404) noarg_func ::= SERVER_VERSION */ - 413, /* (405) noarg_func ::= SERVER_STATUS */ - 413, /* (406) noarg_func ::= CURRENT_USER */ - 413, /* (407) noarg_func ::= USER */ - 411, /* (408) star_func ::= COUNT */ - 411, /* (409) star_func ::= FIRST */ - 411, /* (410) star_func ::= LAST */ - 411, /* (411) star_func ::= LAST_ROW */ - 412, /* (412) star_func_para_list ::= NK_STAR */ - 412, /* (413) star_func_para_list ::= other_para_list */ - 414, /* (414) other_para_list ::= star_func_para */ - 414, /* (415) other_para_list ::= other_para_list NK_COMMA star_func_para */ - 415, /* (416) star_func_para ::= expr_or_subquery */ - 415, /* (417) star_func_para ::= table_name NK_DOT NK_STAR */ - 410, /* (418) case_when_expression ::= CASE when_then_list case_when_else_opt END */ - 410, /* (419) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ - 416, /* (420) when_then_list ::= when_then_expr */ - 416, /* (421) when_then_list ::= when_then_list when_then_expr */ - 419, /* (422) when_then_expr ::= WHEN common_expression THEN common_expression */ - 417, /* (423) case_when_else_opt ::= */ - 417, /* (424) case_when_else_opt ::= ELSE common_expression */ - 420, /* (425) predicate ::= expr_or_subquery compare_op expr_or_subquery */ - 420, /* (426) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ - 420, /* (427) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ - 420, /* (428) predicate ::= expr_or_subquery IS NULL */ - 420, /* (429) predicate ::= expr_or_subquery IS NOT NULL */ - 420, /* (430) predicate ::= expr_or_subquery in_op in_predicate_value */ - 421, /* (431) compare_op ::= NK_LT */ - 421, /* (432) compare_op ::= NK_GT */ - 421, /* (433) compare_op ::= NK_LE */ - 421, /* (434) compare_op ::= NK_GE */ - 421, /* (435) compare_op ::= NK_NE */ - 421, /* (436) compare_op ::= NK_EQ */ - 421, /* (437) compare_op ::= LIKE */ - 421, /* (438) compare_op ::= NOT LIKE */ - 421, /* (439) compare_op ::= MATCH */ - 421, /* (440) compare_op ::= NMATCH */ - 421, /* (441) compare_op ::= CONTAINS */ - 422, /* (442) in_op ::= IN */ - 422, /* (443) in_op ::= NOT IN */ - 423, /* (444) in_predicate_value ::= NK_LP literal_list NK_RP */ - 424, /* (445) boolean_value_expression ::= boolean_primary */ - 424, /* (446) boolean_value_expression ::= NOT boolean_primary */ - 424, /* (447) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ - 424, /* (448) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ - 425, /* (449) boolean_primary ::= predicate */ - 425, /* (450) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ - 418, /* (451) common_expression ::= expr_or_subquery */ - 418, /* (452) common_expression ::= boolean_value_expression */ - 426, /* (453) from_clause_opt ::= */ - 426, /* (454) from_clause_opt ::= FROM table_reference_list */ - 427, /* (455) table_reference_list ::= table_reference */ - 427, /* (456) table_reference_list ::= table_reference_list NK_COMMA table_reference */ - 428, /* (457) table_reference ::= table_primary */ - 428, /* (458) table_reference ::= joined_table */ - 429, /* (459) table_primary ::= table_name alias_opt */ - 429, /* (460) table_primary ::= db_name NK_DOT table_name alias_opt */ - 429, /* (461) table_primary ::= subquery alias_opt */ - 429, /* (462) table_primary ::= parenthesized_joined_table */ - 431, /* (463) alias_opt ::= */ - 431, /* (464) alias_opt ::= table_alias */ - 431, /* (465) alias_opt ::= AS table_alias */ - 433, /* (466) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ - 433, /* (467) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ - 430, /* (468) joined_table ::= table_reference join_type JOIN table_reference ON search_condition */ - 434, /* (469) join_type ::= */ - 434, /* (470) join_type ::= INNER */ - 436, /* (471) query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ - 437, /* (472) set_quantifier_opt ::= */ - 437, /* (473) set_quantifier_opt ::= DISTINCT */ - 437, /* (474) set_quantifier_opt ::= ALL */ - 438, /* (475) select_list ::= select_item */ - 438, /* (476) select_list ::= select_list NK_COMMA select_item */ - 446, /* (477) select_item ::= NK_STAR */ - 446, /* (478) select_item ::= common_expression */ - 446, /* (479) select_item ::= common_expression column_alias */ - 446, /* (480) select_item ::= common_expression AS column_alias */ - 446, /* (481) select_item ::= table_name NK_DOT NK_STAR */ - 401, /* (482) where_clause_opt ::= */ - 401, /* (483) where_clause_opt ::= WHERE search_condition */ - 439, /* (484) partition_by_clause_opt ::= */ - 439, /* (485) partition_by_clause_opt ::= PARTITION BY partition_list */ - 447, /* (486) partition_list ::= partition_item */ - 447, /* (487) partition_list ::= partition_list NK_COMMA partition_item */ - 448, /* (488) partition_item ::= expr_or_subquery */ - 448, /* (489) partition_item ::= expr_or_subquery column_alias */ - 448, /* (490) partition_item ::= expr_or_subquery AS column_alias */ - 443, /* (491) twindow_clause_opt ::= */ - 443, /* (492) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */ - 443, /* (493) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ - 443, /* (494) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */ - 443, /* (495) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */ - 443, /* (496) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ - 386, /* (497) sliding_opt ::= */ - 386, /* (498) sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */ - 442, /* (499) fill_opt ::= */ - 442, /* (500) fill_opt ::= FILL NK_LP fill_mode NK_RP */ - 442, /* (501) fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */ - 449, /* (502) fill_mode ::= NONE */ - 449, /* (503) fill_mode ::= PREV */ - 449, /* (504) fill_mode ::= NULL */ - 449, /* (505) fill_mode ::= LINEAR */ - 449, /* (506) fill_mode ::= NEXT */ - 444, /* (507) group_by_clause_opt ::= */ - 444, /* (508) group_by_clause_opt ::= GROUP BY group_by_list */ - 450, /* (509) group_by_list ::= expr_or_subquery */ - 450, /* (510) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ - 445, /* (511) having_clause_opt ::= */ - 445, /* (512) having_clause_opt ::= HAVING search_condition */ - 440, /* (513) range_opt ::= */ - 440, /* (514) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ - 441, /* (515) every_opt ::= */ - 441, /* (516) every_opt ::= EVERY NK_LP duration_literal NK_RP */ - 451, /* (517) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ - 452, /* (518) query_simple ::= query_specification */ - 452, /* (519) query_simple ::= union_query_expression */ - 456, /* (520) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ - 456, /* (521) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ - 457, /* (522) query_simple_or_subquery ::= query_simple */ - 457, /* (523) query_simple_or_subquery ::= subquery */ - 390, /* (524) query_or_subquery ::= query_expression */ - 390, /* (525) query_or_subquery ::= subquery */ - 453, /* (526) order_by_clause_opt ::= */ - 453, /* (527) order_by_clause_opt ::= ORDER BY sort_specification_list */ - 454, /* (528) slimit_clause_opt ::= */ - 454, /* (529) slimit_clause_opt ::= SLIMIT NK_INTEGER */ - 454, /* (530) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ - 454, /* (531) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - 455, /* (532) limit_clause_opt ::= */ - 455, /* (533) limit_clause_opt ::= LIMIT NK_INTEGER */ - 455, /* (534) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ - 455, /* (535) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - 432, /* (536) subquery ::= NK_LP query_expression NK_RP */ - 432, /* (537) subquery ::= NK_LP subquery NK_RP */ - 435, /* (538) search_condition ::= common_expression */ - 458, /* (539) sort_specification_list ::= sort_specification */ - 458, /* (540) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ - 459, /* (541) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ - 460, /* (542) ordering_specification_opt ::= */ - 460, /* (543) ordering_specification_opt ::= ASC */ - 460, /* (544) ordering_specification_opt ::= DESC */ - 461, /* (545) null_ordering_opt ::= */ - 461, /* (546) null_ordering_opt ::= NULLS FIRST */ - 461, /* (547) null_ordering_opt ::= NULLS LAST */ + 398, /* (303) col_list_opt ::= */ + 398, /* (304) col_list_opt ::= NK_LP col_name_list NK_RP */ + 397, /* (305) stream_options ::= */ + 397, /* (306) stream_options ::= stream_options TRIGGER AT_ONCE */ + 397, /* (307) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ + 397, /* (308) stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ + 397, /* (309) stream_options ::= stream_options WATERMARK duration_literal */ + 397, /* (310) stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER */ + 397, /* (311) stream_options ::= stream_options FILL_HISTORY NK_INTEGER */ + 399, /* (312) subtable_opt ::= */ + 399, /* (313) subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ + 326, /* (314) cmd ::= KILL CONNECTION NK_INTEGER */ + 326, /* (315) cmd ::= KILL QUERY NK_STRING */ + 326, /* (316) cmd ::= KILL TRANSACTION NK_INTEGER */ + 326, /* (317) cmd ::= BALANCE VGROUP */ + 326, /* (318) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ + 326, /* (319) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ + 326, /* (320) cmd ::= SPLIT VGROUP NK_INTEGER */ + 401, /* (321) dnode_list ::= DNODE NK_INTEGER */ + 401, /* (322) dnode_list ::= dnode_list DNODE NK_INTEGER */ + 326, /* (323) cmd ::= DELETE FROM full_table_name where_clause_opt */ + 326, /* (324) cmd ::= query_or_subquery */ + 326, /* (325) cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ + 326, /* (326) cmd ::= INSERT INTO full_table_name query_or_subquery */ + 329, /* (327) literal ::= NK_INTEGER */ + 329, /* (328) literal ::= NK_FLOAT */ + 329, /* (329) literal ::= NK_STRING */ + 329, /* (330) literal ::= NK_BOOL */ + 329, /* (331) literal ::= TIMESTAMP NK_STRING */ + 329, /* (332) literal ::= duration_literal */ + 329, /* (333) literal ::= NULL */ + 329, /* (334) literal ::= NK_QUESTION */ + 373, /* (335) duration_literal ::= NK_VARIABLE */ + 403, /* (336) signed ::= NK_INTEGER */ + 403, /* (337) signed ::= NK_PLUS NK_INTEGER */ + 403, /* (338) signed ::= NK_MINUS NK_INTEGER */ + 403, /* (339) signed ::= NK_FLOAT */ + 403, /* (340) signed ::= NK_PLUS NK_FLOAT */ + 403, /* (341) signed ::= NK_MINUS NK_FLOAT */ + 362, /* (342) signed_literal ::= signed */ + 362, /* (343) signed_literal ::= NK_STRING */ + 362, /* (344) signed_literal ::= NK_BOOL */ + 362, /* (345) signed_literal ::= TIMESTAMP NK_STRING */ + 362, /* (346) signed_literal ::= duration_literal */ + 362, /* (347) signed_literal ::= NULL */ + 362, /* (348) signed_literal ::= literal_func */ + 362, /* (349) signed_literal ::= NK_QUESTION */ + 405, /* (350) literal_list ::= signed_literal */ + 405, /* (351) literal_list ::= literal_list NK_COMMA signed_literal */ + 337, /* (352) db_name ::= NK_ID */ + 368, /* (353) table_name ::= NK_ID */ + 360, /* (354) column_name ::= NK_ID */ + 375, /* (355) function_name ::= NK_ID */ + 406, /* (356) table_alias ::= NK_ID */ + 383, /* (357) column_alias ::= NK_ID */ + 331, /* (358) user_name ::= NK_ID */ + 338, /* (359) topic_name ::= NK_ID */ + 396, /* (360) stream_name ::= NK_ID */ + 391, /* (361) cgroup_name ::= NK_ID */ + 407, /* (362) expr_or_subquery ::= expression */ + 400, /* (363) expression ::= literal */ + 400, /* (364) expression ::= pseudo_column */ + 400, /* (365) expression ::= column_reference */ + 400, /* (366) expression ::= function_expression */ + 400, /* (367) expression ::= case_when_expression */ + 400, /* (368) expression ::= NK_LP expression NK_RP */ + 400, /* (369) expression ::= NK_PLUS expr_or_subquery */ + 400, /* (370) expression ::= NK_MINUS expr_or_subquery */ + 400, /* (371) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ + 400, /* (372) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ + 400, /* (373) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ + 400, /* (374) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ + 400, /* (375) expression ::= expr_or_subquery NK_REM expr_or_subquery */ + 400, /* (376) expression ::= column_reference NK_ARROW NK_STRING */ + 400, /* (377) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ + 400, /* (378) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ + 365, /* (379) expression_list ::= expr_or_subquery */ + 365, /* (380) expression_list ::= expression_list NK_COMMA expr_or_subquery */ + 409, /* (381) column_reference ::= column_name */ + 409, /* (382) column_reference ::= table_name NK_DOT column_name */ + 408, /* (383) pseudo_column ::= ROWTS */ + 408, /* (384) pseudo_column ::= TBNAME */ + 408, /* (385) pseudo_column ::= table_name NK_DOT TBNAME */ + 408, /* (386) pseudo_column ::= QSTART */ + 408, /* (387) pseudo_column ::= QEND */ + 408, /* (388) pseudo_column ::= QDURATION */ + 408, /* (389) pseudo_column ::= WSTART */ + 408, /* (390) pseudo_column ::= WEND */ + 408, /* (391) pseudo_column ::= WDURATION */ + 408, /* (392) pseudo_column ::= IROWTS */ + 408, /* (393) pseudo_column ::= ISFILLED */ + 408, /* (394) pseudo_column ::= QTAGS */ + 410, /* (395) function_expression ::= function_name NK_LP expression_list NK_RP */ + 410, /* (396) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ + 410, /* (397) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ + 410, /* (398) function_expression ::= literal_func */ + 404, /* (399) literal_func ::= noarg_func NK_LP NK_RP */ + 404, /* (400) literal_func ::= NOW */ + 414, /* (401) noarg_func ::= NOW */ + 414, /* (402) noarg_func ::= TODAY */ + 414, /* (403) noarg_func ::= TIMEZONE */ + 414, /* (404) noarg_func ::= DATABASE */ + 414, /* (405) noarg_func ::= CLIENT_VERSION */ + 414, /* (406) noarg_func ::= SERVER_VERSION */ + 414, /* (407) noarg_func ::= SERVER_STATUS */ + 414, /* (408) noarg_func ::= CURRENT_USER */ + 414, /* (409) noarg_func ::= USER */ + 412, /* (410) star_func ::= COUNT */ + 412, /* (411) star_func ::= FIRST */ + 412, /* (412) star_func ::= LAST */ + 412, /* (413) star_func ::= LAST_ROW */ + 413, /* (414) star_func_para_list ::= NK_STAR */ + 413, /* (415) star_func_para_list ::= other_para_list */ + 415, /* (416) other_para_list ::= star_func_para */ + 415, /* (417) other_para_list ::= other_para_list NK_COMMA star_func_para */ + 416, /* (418) star_func_para ::= expr_or_subquery */ + 416, /* (419) star_func_para ::= table_name NK_DOT NK_STAR */ + 411, /* (420) case_when_expression ::= CASE when_then_list case_when_else_opt END */ + 411, /* (421) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ + 417, /* (422) when_then_list ::= when_then_expr */ + 417, /* (423) when_then_list ::= when_then_list when_then_expr */ + 420, /* (424) when_then_expr ::= WHEN common_expression THEN common_expression */ + 418, /* (425) case_when_else_opt ::= */ + 418, /* (426) case_when_else_opt ::= ELSE common_expression */ + 421, /* (427) predicate ::= expr_or_subquery compare_op expr_or_subquery */ + 421, /* (428) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ + 421, /* (429) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ + 421, /* (430) predicate ::= expr_or_subquery IS NULL */ + 421, /* (431) predicate ::= expr_or_subquery IS NOT NULL */ + 421, /* (432) predicate ::= expr_or_subquery in_op in_predicate_value */ + 422, /* (433) compare_op ::= NK_LT */ + 422, /* (434) compare_op ::= NK_GT */ + 422, /* (435) compare_op ::= NK_LE */ + 422, /* (436) compare_op ::= NK_GE */ + 422, /* (437) compare_op ::= NK_NE */ + 422, /* (438) compare_op ::= NK_EQ */ + 422, /* (439) compare_op ::= LIKE */ + 422, /* (440) compare_op ::= NOT LIKE */ + 422, /* (441) compare_op ::= MATCH */ + 422, /* (442) compare_op ::= NMATCH */ + 422, /* (443) compare_op ::= CONTAINS */ + 423, /* (444) in_op ::= IN */ + 423, /* (445) in_op ::= NOT IN */ + 424, /* (446) in_predicate_value ::= NK_LP literal_list NK_RP */ + 425, /* (447) boolean_value_expression ::= boolean_primary */ + 425, /* (448) boolean_value_expression ::= NOT boolean_primary */ + 425, /* (449) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ + 425, /* (450) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ + 426, /* (451) boolean_primary ::= predicate */ + 426, /* (452) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ + 419, /* (453) common_expression ::= expr_or_subquery */ + 419, /* (454) common_expression ::= boolean_value_expression */ + 427, /* (455) from_clause_opt ::= */ + 427, /* (456) from_clause_opt ::= FROM table_reference_list */ + 428, /* (457) table_reference_list ::= table_reference */ + 428, /* (458) table_reference_list ::= table_reference_list NK_COMMA table_reference */ + 429, /* (459) table_reference ::= table_primary */ + 429, /* (460) table_reference ::= joined_table */ + 430, /* (461) table_primary ::= table_name alias_opt */ + 430, /* (462) table_primary ::= db_name NK_DOT table_name alias_opt */ + 430, /* (463) table_primary ::= subquery alias_opt */ + 430, /* (464) table_primary ::= parenthesized_joined_table */ + 432, /* (465) alias_opt ::= */ + 432, /* (466) alias_opt ::= table_alias */ + 432, /* (467) alias_opt ::= AS table_alias */ + 434, /* (468) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ + 434, /* (469) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ + 431, /* (470) joined_table ::= table_reference join_type JOIN table_reference ON search_condition */ + 435, /* (471) join_type ::= */ + 435, /* (472) join_type ::= INNER */ + 437, /* (473) query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ + 438, /* (474) set_quantifier_opt ::= */ + 438, /* (475) set_quantifier_opt ::= DISTINCT */ + 438, /* (476) set_quantifier_opt ::= ALL */ + 439, /* (477) select_list ::= select_item */ + 439, /* (478) select_list ::= select_list NK_COMMA select_item */ + 447, /* (479) select_item ::= NK_STAR */ + 447, /* (480) select_item ::= common_expression */ + 447, /* (481) select_item ::= common_expression column_alias */ + 447, /* (482) select_item ::= common_expression AS column_alias */ + 447, /* (483) select_item ::= table_name NK_DOT NK_STAR */ + 402, /* (484) where_clause_opt ::= */ + 402, /* (485) where_clause_opt ::= WHERE search_condition */ + 440, /* (486) partition_by_clause_opt ::= */ + 440, /* (487) partition_by_clause_opt ::= PARTITION BY partition_list */ + 448, /* (488) partition_list ::= partition_item */ + 448, /* (489) partition_list ::= partition_list NK_COMMA partition_item */ + 449, /* (490) partition_item ::= expr_or_subquery */ + 449, /* (491) partition_item ::= expr_or_subquery column_alias */ + 449, /* (492) partition_item ::= expr_or_subquery AS column_alias */ + 444, /* (493) twindow_clause_opt ::= */ + 444, /* (494) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */ + 444, /* (495) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ + 444, /* (496) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */ + 444, /* (497) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */ + 444, /* (498) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ + 386, /* (499) sliding_opt ::= */ + 386, /* (500) sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */ + 443, /* (501) fill_opt ::= */ + 443, /* (502) fill_opt ::= FILL NK_LP fill_mode NK_RP */ + 443, /* (503) fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */ + 450, /* (504) fill_mode ::= NONE */ + 450, /* (505) fill_mode ::= PREV */ + 450, /* (506) fill_mode ::= NULL */ + 450, /* (507) fill_mode ::= LINEAR */ + 450, /* (508) fill_mode ::= NEXT */ + 445, /* (509) group_by_clause_opt ::= */ + 445, /* (510) group_by_clause_opt ::= GROUP BY group_by_list */ + 451, /* (511) group_by_list ::= expr_or_subquery */ + 451, /* (512) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ + 446, /* (513) having_clause_opt ::= */ + 446, /* (514) having_clause_opt ::= HAVING search_condition */ + 441, /* (515) range_opt ::= */ + 441, /* (516) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ + 442, /* (517) every_opt ::= */ + 442, /* (518) every_opt ::= EVERY NK_LP duration_literal NK_RP */ + 452, /* (519) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ + 453, /* (520) query_simple ::= query_specification */ + 453, /* (521) query_simple ::= union_query_expression */ + 457, /* (522) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ + 457, /* (523) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ + 458, /* (524) query_simple_or_subquery ::= query_simple */ + 458, /* (525) query_simple_or_subquery ::= subquery */ + 390, /* (526) query_or_subquery ::= query_expression */ + 390, /* (527) query_or_subquery ::= subquery */ + 454, /* (528) order_by_clause_opt ::= */ + 454, /* (529) order_by_clause_opt ::= ORDER BY sort_specification_list */ + 455, /* (530) slimit_clause_opt ::= */ + 455, /* (531) slimit_clause_opt ::= SLIMIT NK_INTEGER */ + 455, /* (532) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ + 455, /* (533) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + 456, /* (534) limit_clause_opt ::= */ + 456, /* (535) limit_clause_opt ::= LIMIT NK_INTEGER */ + 456, /* (536) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ + 456, /* (537) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + 433, /* (538) subquery ::= NK_LP query_expression NK_RP */ + 433, /* (539) subquery ::= NK_LP subquery NK_RP */ + 436, /* (540) search_condition ::= common_expression */ + 459, /* (541) sort_specification_list ::= sort_specification */ + 459, /* (542) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ + 460, /* (543) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ + 461, /* (544) ordering_specification_opt ::= */ + 461, /* (545) ordering_specification_opt ::= ASC */ + 461, /* (546) ordering_specification_opt ::= DESC */ + 462, /* (547) null_ordering_opt ::= */ + 462, /* (548) null_ordering_opt ::= NULLS FIRST */ + 462, /* (549) null_ordering_opt ::= NULLS LAST */ }; /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number @@ -3929,253 +3916,255 @@ static const signed char yyRuleInfoNRhs[] = { -1, /* (298) agg_func_opt ::= AGGREGATE */ 0, /* (299) bufsize_opt ::= */ -2, /* (300) bufsize_opt ::= BUFSIZE NK_INTEGER */ - -11, /* (301) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name tags_def_opt subtable_opt AS query_or_subquery */ + -12, /* (301) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name col_list_opt tags_def_opt subtable_opt AS query_or_subquery */ -4, /* (302) cmd ::= DROP STREAM exists_opt stream_name */ - 0, /* (303) stream_options ::= */ - -3, /* (304) stream_options ::= stream_options TRIGGER AT_ONCE */ - -3, /* (305) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ - -4, /* (306) stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ - -3, /* (307) stream_options ::= stream_options WATERMARK duration_literal */ - -4, /* (308) stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER */ - -3, /* (309) stream_options ::= stream_options FILL_HISTORY NK_INTEGER */ - 0, /* (310) subtable_opt ::= */ - -4, /* (311) subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ - -3, /* (312) cmd ::= KILL CONNECTION NK_INTEGER */ - -3, /* (313) cmd ::= KILL QUERY NK_STRING */ - -3, /* (314) cmd ::= KILL TRANSACTION NK_INTEGER */ - -2, /* (315) cmd ::= BALANCE VGROUP */ - -4, /* (316) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ - -4, /* (317) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ - -3, /* (318) cmd ::= SPLIT VGROUP NK_INTEGER */ - -2, /* (319) dnode_list ::= DNODE NK_INTEGER */ - -3, /* (320) dnode_list ::= dnode_list DNODE NK_INTEGER */ - -4, /* (321) cmd ::= DELETE FROM full_table_name where_clause_opt */ - -1, /* (322) cmd ::= query_or_subquery */ - -7, /* (323) cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ - -4, /* (324) cmd ::= INSERT INTO full_table_name query_or_subquery */ - -1, /* (325) literal ::= NK_INTEGER */ - -1, /* (326) literal ::= NK_FLOAT */ - -1, /* (327) literal ::= NK_STRING */ - -1, /* (328) literal ::= NK_BOOL */ - -2, /* (329) literal ::= TIMESTAMP NK_STRING */ - -1, /* (330) literal ::= duration_literal */ - -1, /* (331) literal ::= NULL */ - -1, /* (332) literal ::= NK_QUESTION */ - -1, /* (333) duration_literal ::= NK_VARIABLE */ - -1, /* (334) signed ::= NK_INTEGER */ - -2, /* (335) signed ::= NK_PLUS NK_INTEGER */ - -2, /* (336) signed ::= NK_MINUS NK_INTEGER */ - -1, /* (337) signed ::= NK_FLOAT */ - -2, /* (338) signed ::= NK_PLUS NK_FLOAT */ - -2, /* (339) signed ::= NK_MINUS NK_FLOAT */ - -1, /* (340) signed_literal ::= signed */ - -1, /* (341) signed_literal ::= NK_STRING */ - -1, /* (342) signed_literal ::= NK_BOOL */ - -2, /* (343) signed_literal ::= TIMESTAMP NK_STRING */ - -1, /* (344) signed_literal ::= duration_literal */ - -1, /* (345) signed_literal ::= NULL */ - -1, /* (346) signed_literal ::= literal_func */ - -1, /* (347) signed_literal ::= NK_QUESTION */ - -1, /* (348) literal_list ::= signed_literal */ - -3, /* (349) literal_list ::= literal_list NK_COMMA signed_literal */ - -1, /* (350) db_name ::= NK_ID */ - -1, /* (351) table_name ::= NK_ID */ - -1, /* (352) column_name ::= NK_ID */ - -1, /* (353) function_name ::= NK_ID */ - -1, /* (354) table_alias ::= NK_ID */ - -1, /* (355) column_alias ::= NK_ID */ - -1, /* (356) user_name ::= NK_ID */ - -1, /* (357) topic_name ::= NK_ID */ - -1, /* (358) stream_name ::= NK_ID */ - -1, /* (359) cgroup_name ::= NK_ID */ - -1, /* (360) expr_or_subquery ::= expression */ - -1, /* (361) expression ::= literal */ - -1, /* (362) expression ::= pseudo_column */ - -1, /* (363) expression ::= column_reference */ - -1, /* (364) expression ::= function_expression */ - -1, /* (365) expression ::= case_when_expression */ - -3, /* (366) expression ::= NK_LP expression NK_RP */ - -2, /* (367) expression ::= NK_PLUS expr_or_subquery */ - -2, /* (368) expression ::= NK_MINUS expr_or_subquery */ - -3, /* (369) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ - -3, /* (370) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ - -3, /* (371) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ - -3, /* (372) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ - -3, /* (373) expression ::= expr_or_subquery NK_REM expr_or_subquery */ - -3, /* (374) expression ::= column_reference NK_ARROW NK_STRING */ - -3, /* (375) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ - -3, /* (376) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ - -1, /* (377) expression_list ::= expr_or_subquery */ - -3, /* (378) expression_list ::= expression_list NK_COMMA expr_or_subquery */ - -1, /* (379) column_reference ::= column_name */ - -3, /* (380) column_reference ::= table_name NK_DOT column_name */ - -1, /* (381) pseudo_column ::= ROWTS */ - -1, /* (382) pseudo_column ::= TBNAME */ - -3, /* (383) pseudo_column ::= table_name NK_DOT TBNAME */ - -1, /* (384) pseudo_column ::= QSTART */ - -1, /* (385) pseudo_column ::= QEND */ - -1, /* (386) pseudo_column ::= QDURATION */ - -1, /* (387) pseudo_column ::= WSTART */ - -1, /* (388) pseudo_column ::= WEND */ - -1, /* (389) pseudo_column ::= WDURATION */ - -1, /* (390) pseudo_column ::= IROWTS */ - -1, /* (391) pseudo_column ::= ISFILLED */ - -1, /* (392) pseudo_column ::= QTAGS */ - -4, /* (393) function_expression ::= function_name NK_LP expression_list NK_RP */ - -4, /* (394) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ - -6, /* (395) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ - -1, /* (396) function_expression ::= literal_func */ - -3, /* (397) literal_func ::= noarg_func NK_LP NK_RP */ - -1, /* (398) literal_func ::= NOW */ - -1, /* (399) noarg_func ::= NOW */ - -1, /* (400) noarg_func ::= TODAY */ - -1, /* (401) noarg_func ::= TIMEZONE */ - -1, /* (402) noarg_func ::= DATABASE */ - -1, /* (403) noarg_func ::= CLIENT_VERSION */ - -1, /* (404) noarg_func ::= SERVER_VERSION */ - -1, /* (405) noarg_func ::= SERVER_STATUS */ - -1, /* (406) noarg_func ::= CURRENT_USER */ - -1, /* (407) noarg_func ::= USER */ - -1, /* (408) star_func ::= COUNT */ - -1, /* (409) star_func ::= FIRST */ - -1, /* (410) star_func ::= LAST */ - -1, /* (411) star_func ::= LAST_ROW */ - -1, /* (412) star_func_para_list ::= NK_STAR */ - -1, /* (413) star_func_para_list ::= other_para_list */ - -1, /* (414) other_para_list ::= star_func_para */ - -3, /* (415) other_para_list ::= other_para_list NK_COMMA star_func_para */ - -1, /* (416) star_func_para ::= expr_or_subquery */ - -3, /* (417) star_func_para ::= table_name NK_DOT NK_STAR */ - -4, /* (418) case_when_expression ::= CASE when_then_list case_when_else_opt END */ - -5, /* (419) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ - -1, /* (420) when_then_list ::= when_then_expr */ - -2, /* (421) when_then_list ::= when_then_list when_then_expr */ - -4, /* (422) when_then_expr ::= WHEN common_expression THEN common_expression */ - 0, /* (423) case_when_else_opt ::= */ - -2, /* (424) case_when_else_opt ::= ELSE common_expression */ - -3, /* (425) predicate ::= expr_or_subquery compare_op expr_or_subquery */ - -5, /* (426) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ - -6, /* (427) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ - -3, /* (428) predicate ::= expr_or_subquery IS NULL */ - -4, /* (429) predicate ::= expr_or_subquery IS NOT NULL */ - -3, /* (430) predicate ::= expr_or_subquery in_op in_predicate_value */ - -1, /* (431) compare_op ::= NK_LT */ - -1, /* (432) compare_op ::= NK_GT */ - -1, /* (433) compare_op ::= NK_LE */ - -1, /* (434) compare_op ::= NK_GE */ - -1, /* (435) compare_op ::= NK_NE */ - -1, /* (436) compare_op ::= NK_EQ */ - -1, /* (437) compare_op ::= LIKE */ - -2, /* (438) compare_op ::= NOT LIKE */ - -1, /* (439) compare_op ::= MATCH */ - -1, /* (440) compare_op ::= NMATCH */ - -1, /* (441) compare_op ::= CONTAINS */ - -1, /* (442) in_op ::= IN */ - -2, /* (443) in_op ::= NOT IN */ - -3, /* (444) in_predicate_value ::= NK_LP literal_list NK_RP */ - -1, /* (445) boolean_value_expression ::= boolean_primary */ - -2, /* (446) boolean_value_expression ::= NOT boolean_primary */ - -3, /* (447) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ - -3, /* (448) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ - -1, /* (449) boolean_primary ::= predicate */ - -3, /* (450) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ - -1, /* (451) common_expression ::= expr_or_subquery */ - -1, /* (452) common_expression ::= boolean_value_expression */ - 0, /* (453) from_clause_opt ::= */ - -2, /* (454) from_clause_opt ::= FROM table_reference_list */ - -1, /* (455) table_reference_list ::= table_reference */ - -3, /* (456) table_reference_list ::= table_reference_list NK_COMMA table_reference */ - -1, /* (457) table_reference ::= table_primary */ - -1, /* (458) table_reference ::= joined_table */ - -2, /* (459) table_primary ::= table_name alias_opt */ - -4, /* (460) table_primary ::= db_name NK_DOT table_name alias_opt */ - -2, /* (461) table_primary ::= subquery alias_opt */ - -1, /* (462) table_primary ::= parenthesized_joined_table */ - 0, /* (463) alias_opt ::= */ - -1, /* (464) alias_opt ::= table_alias */ - -2, /* (465) alias_opt ::= AS table_alias */ - -3, /* (466) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ - -3, /* (467) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ - -6, /* (468) joined_table ::= table_reference join_type JOIN table_reference ON search_condition */ - 0, /* (469) join_type ::= */ - -1, /* (470) join_type ::= INNER */ - -12, /* (471) query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ - 0, /* (472) set_quantifier_opt ::= */ - -1, /* (473) set_quantifier_opt ::= DISTINCT */ - -1, /* (474) set_quantifier_opt ::= ALL */ - -1, /* (475) select_list ::= select_item */ - -3, /* (476) select_list ::= select_list NK_COMMA select_item */ - -1, /* (477) select_item ::= NK_STAR */ - -1, /* (478) select_item ::= common_expression */ - -2, /* (479) select_item ::= common_expression column_alias */ - -3, /* (480) select_item ::= common_expression AS column_alias */ - -3, /* (481) select_item ::= table_name NK_DOT NK_STAR */ - 0, /* (482) where_clause_opt ::= */ - -2, /* (483) where_clause_opt ::= WHERE search_condition */ - 0, /* (484) partition_by_clause_opt ::= */ - -3, /* (485) partition_by_clause_opt ::= PARTITION BY partition_list */ - -1, /* (486) partition_list ::= partition_item */ - -3, /* (487) partition_list ::= partition_list NK_COMMA partition_item */ - -1, /* (488) partition_item ::= expr_or_subquery */ - -2, /* (489) partition_item ::= expr_or_subquery column_alias */ - -3, /* (490) partition_item ::= expr_or_subquery AS column_alias */ - 0, /* (491) twindow_clause_opt ::= */ - -6, /* (492) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */ - -4, /* (493) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ - -6, /* (494) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */ - -8, /* (495) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */ - -7, /* (496) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ - 0, /* (497) sliding_opt ::= */ - -4, /* (498) sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */ - 0, /* (499) fill_opt ::= */ - -4, /* (500) fill_opt ::= FILL NK_LP fill_mode NK_RP */ - -6, /* (501) fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */ - -1, /* (502) fill_mode ::= NONE */ - -1, /* (503) fill_mode ::= PREV */ - -1, /* (504) fill_mode ::= NULL */ - -1, /* (505) fill_mode ::= LINEAR */ - -1, /* (506) fill_mode ::= NEXT */ - 0, /* (507) group_by_clause_opt ::= */ - -3, /* (508) group_by_clause_opt ::= GROUP BY group_by_list */ - -1, /* (509) group_by_list ::= expr_or_subquery */ - -3, /* (510) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ - 0, /* (511) having_clause_opt ::= */ - -2, /* (512) having_clause_opt ::= HAVING search_condition */ - 0, /* (513) range_opt ::= */ - -6, /* (514) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ - 0, /* (515) every_opt ::= */ - -4, /* (516) every_opt ::= EVERY NK_LP duration_literal NK_RP */ - -4, /* (517) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ - -1, /* (518) query_simple ::= query_specification */ - -1, /* (519) query_simple ::= union_query_expression */ - -4, /* (520) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ - -3, /* (521) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ - -1, /* (522) query_simple_or_subquery ::= query_simple */ - -1, /* (523) query_simple_or_subquery ::= subquery */ - -1, /* (524) query_or_subquery ::= query_expression */ - -1, /* (525) query_or_subquery ::= subquery */ - 0, /* (526) order_by_clause_opt ::= */ - -3, /* (527) order_by_clause_opt ::= ORDER BY sort_specification_list */ - 0, /* (528) slimit_clause_opt ::= */ - -2, /* (529) slimit_clause_opt ::= SLIMIT NK_INTEGER */ - -4, /* (530) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ - -4, /* (531) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - 0, /* (532) limit_clause_opt ::= */ - -2, /* (533) limit_clause_opt ::= LIMIT NK_INTEGER */ - -4, /* (534) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ - -4, /* (535) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - -3, /* (536) subquery ::= NK_LP query_expression NK_RP */ - -3, /* (537) subquery ::= NK_LP subquery NK_RP */ - -1, /* (538) search_condition ::= common_expression */ - -1, /* (539) sort_specification_list ::= sort_specification */ - -3, /* (540) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ - -3, /* (541) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ - 0, /* (542) ordering_specification_opt ::= */ - -1, /* (543) ordering_specification_opt ::= ASC */ - -1, /* (544) ordering_specification_opt ::= DESC */ - 0, /* (545) null_ordering_opt ::= */ - -2, /* (546) null_ordering_opt ::= NULLS FIRST */ - -2, /* (547) null_ordering_opt ::= NULLS LAST */ + 0, /* (303) col_list_opt ::= */ + -3, /* (304) col_list_opt ::= NK_LP col_name_list NK_RP */ + 0, /* (305) stream_options ::= */ + -3, /* (306) stream_options ::= stream_options TRIGGER AT_ONCE */ + -3, /* (307) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ + -4, /* (308) stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ + -3, /* (309) stream_options ::= stream_options WATERMARK duration_literal */ + -4, /* (310) stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER */ + -3, /* (311) stream_options ::= stream_options FILL_HISTORY NK_INTEGER */ + 0, /* (312) subtable_opt ::= */ + -4, /* (313) subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ + -3, /* (314) cmd ::= KILL CONNECTION NK_INTEGER */ + -3, /* (315) cmd ::= KILL QUERY NK_STRING */ + -3, /* (316) cmd ::= KILL TRANSACTION NK_INTEGER */ + -2, /* (317) cmd ::= BALANCE VGROUP */ + -4, /* (318) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ + -4, /* (319) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ + -3, /* (320) cmd ::= SPLIT VGROUP NK_INTEGER */ + -2, /* (321) dnode_list ::= DNODE NK_INTEGER */ + -3, /* (322) dnode_list ::= dnode_list DNODE NK_INTEGER */ + -4, /* (323) cmd ::= DELETE FROM full_table_name where_clause_opt */ + -1, /* (324) cmd ::= query_or_subquery */ + -7, /* (325) cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ + -4, /* (326) cmd ::= INSERT INTO full_table_name query_or_subquery */ + -1, /* (327) literal ::= NK_INTEGER */ + -1, /* (328) literal ::= NK_FLOAT */ + -1, /* (329) literal ::= NK_STRING */ + -1, /* (330) literal ::= NK_BOOL */ + -2, /* (331) literal ::= TIMESTAMP NK_STRING */ + -1, /* (332) literal ::= duration_literal */ + -1, /* (333) literal ::= NULL */ + -1, /* (334) literal ::= NK_QUESTION */ + -1, /* (335) duration_literal ::= NK_VARIABLE */ + -1, /* (336) signed ::= NK_INTEGER */ + -2, /* (337) signed ::= NK_PLUS NK_INTEGER */ + -2, /* (338) signed ::= NK_MINUS NK_INTEGER */ + -1, /* (339) signed ::= NK_FLOAT */ + -2, /* (340) signed ::= NK_PLUS NK_FLOAT */ + -2, /* (341) signed ::= NK_MINUS NK_FLOAT */ + -1, /* (342) signed_literal ::= signed */ + -1, /* (343) signed_literal ::= NK_STRING */ + -1, /* (344) signed_literal ::= NK_BOOL */ + -2, /* (345) signed_literal ::= TIMESTAMP NK_STRING */ + -1, /* (346) signed_literal ::= duration_literal */ + -1, /* (347) signed_literal ::= NULL */ + -1, /* (348) signed_literal ::= literal_func */ + -1, /* (349) signed_literal ::= NK_QUESTION */ + -1, /* (350) literal_list ::= signed_literal */ + -3, /* (351) literal_list ::= literal_list NK_COMMA signed_literal */ + -1, /* (352) db_name ::= NK_ID */ + -1, /* (353) table_name ::= NK_ID */ + -1, /* (354) column_name ::= NK_ID */ + -1, /* (355) function_name ::= NK_ID */ + -1, /* (356) table_alias ::= NK_ID */ + -1, /* (357) column_alias ::= NK_ID */ + -1, /* (358) user_name ::= NK_ID */ + -1, /* (359) topic_name ::= NK_ID */ + -1, /* (360) stream_name ::= NK_ID */ + -1, /* (361) cgroup_name ::= NK_ID */ + -1, /* (362) expr_or_subquery ::= expression */ + -1, /* (363) expression ::= literal */ + -1, /* (364) expression ::= pseudo_column */ + -1, /* (365) expression ::= column_reference */ + -1, /* (366) expression ::= function_expression */ + -1, /* (367) expression ::= case_when_expression */ + -3, /* (368) expression ::= NK_LP expression NK_RP */ + -2, /* (369) expression ::= NK_PLUS expr_or_subquery */ + -2, /* (370) expression ::= NK_MINUS expr_or_subquery */ + -3, /* (371) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ + -3, /* (372) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ + -3, /* (373) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ + -3, /* (374) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ + -3, /* (375) expression ::= expr_or_subquery NK_REM expr_or_subquery */ + -3, /* (376) expression ::= column_reference NK_ARROW NK_STRING */ + -3, /* (377) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ + -3, /* (378) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ + -1, /* (379) expression_list ::= expr_or_subquery */ + -3, /* (380) expression_list ::= expression_list NK_COMMA expr_or_subquery */ + -1, /* (381) column_reference ::= column_name */ + -3, /* (382) column_reference ::= table_name NK_DOT column_name */ + -1, /* (383) pseudo_column ::= ROWTS */ + -1, /* (384) pseudo_column ::= TBNAME */ + -3, /* (385) pseudo_column ::= table_name NK_DOT TBNAME */ + -1, /* (386) pseudo_column ::= QSTART */ + -1, /* (387) pseudo_column ::= QEND */ + -1, /* (388) pseudo_column ::= QDURATION */ + -1, /* (389) pseudo_column ::= WSTART */ + -1, /* (390) pseudo_column ::= WEND */ + -1, /* (391) pseudo_column ::= WDURATION */ + -1, /* (392) pseudo_column ::= IROWTS */ + -1, /* (393) pseudo_column ::= ISFILLED */ + -1, /* (394) pseudo_column ::= QTAGS */ + -4, /* (395) function_expression ::= function_name NK_LP expression_list NK_RP */ + -4, /* (396) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ + -6, /* (397) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ + -1, /* (398) function_expression ::= literal_func */ + -3, /* (399) literal_func ::= noarg_func NK_LP NK_RP */ + -1, /* (400) literal_func ::= NOW */ + -1, /* (401) noarg_func ::= NOW */ + -1, /* (402) noarg_func ::= TODAY */ + -1, /* (403) noarg_func ::= TIMEZONE */ + -1, /* (404) noarg_func ::= DATABASE */ + -1, /* (405) noarg_func ::= CLIENT_VERSION */ + -1, /* (406) noarg_func ::= SERVER_VERSION */ + -1, /* (407) noarg_func ::= SERVER_STATUS */ + -1, /* (408) noarg_func ::= CURRENT_USER */ + -1, /* (409) noarg_func ::= USER */ + -1, /* (410) star_func ::= COUNT */ + -1, /* (411) star_func ::= FIRST */ + -1, /* (412) star_func ::= LAST */ + -1, /* (413) star_func ::= LAST_ROW */ + -1, /* (414) star_func_para_list ::= NK_STAR */ + -1, /* (415) star_func_para_list ::= other_para_list */ + -1, /* (416) other_para_list ::= star_func_para */ + -3, /* (417) other_para_list ::= other_para_list NK_COMMA star_func_para */ + -1, /* (418) star_func_para ::= expr_or_subquery */ + -3, /* (419) star_func_para ::= table_name NK_DOT NK_STAR */ + -4, /* (420) case_when_expression ::= CASE when_then_list case_when_else_opt END */ + -5, /* (421) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ + -1, /* (422) when_then_list ::= when_then_expr */ + -2, /* (423) when_then_list ::= when_then_list when_then_expr */ + -4, /* (424) when_then_expr ::= WHEN common_expression THEN common_expression */ + 0, /* (425) case_when_else_opt ::= */ + -2, /* (426) case_when_else_opt ::= ELSE common_expression */ + -3, /* (427) predicate ::= expr_or_subquery compare_op expr_or_subquery */ + -5, /* (428) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ + -6, /* (429) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ + -3, /* (430) predicate ::= expr_or_subquery IS NULL */ + -4, /* (431) predicate ::= expr_or_subquery IS NOT NULL */ + -3, /* (432) predicate ::= expr_or_subquery in_op in_predicate_value */ + -1, /* (433) compare_op ::= NK_LT */ + -1, /* (434) compare_op ::= NK_GT */ + -1, /* (435) compare_op ::= NK_LE */ + -1, /* (436) compare_op ::= NK_GE */ + -1, /* (437) compare_op ::= NK_NE */ + -1, /* (438) compare_op ::= NK_EQ */ + -1, /* (439) compare_op ::= LIKE */ + -2, /* (440) compare_op ::= NOT LIKE */ + -1, /* (441) compare_op ::= MATCH */ + -1, /* (442) compare_op ::= NMATCH */ + -1, /* (443) compare_op ::= CONTAINS */ + -1, /* (444) in_op ::= IN */ + -2, /* (445) in_op ::= NOT IN */ + -3, /* (446) in_predicate_value ::= NK_LP literal_list NK_RP */ + -1, /* (447) boolean_value_expression ::= boolean_primary */ + -2, /* (448) boolean_value_expression ::= NOT boolean_primary */ + -3, /* (449) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ + -3, /* (450) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ + -1, /* (451) boolean_primary ::= predicate */ + -3, /* (452) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ + -1, /* (453) common_expression ::= expr_or_subquery */ + -1, /* (454) common_expression ::= boolean_value_expression */ + 0, /* (455) from_clause_opt ::= */ + -2, /* (456) from_clause_opt ::= FROM table_reference_list */ + -1, /* (457) table_reference_list ::= table_reference */ + -3, /* (458) table_reference_list ::= table_reference_list NK_COMMA table_reference */ + -1, /* (459) table_reference ::= table_primary */ + -1, /* (460) table_reference ::= joined_table */ + -2, /* (461) table_primary ::= table_name alias_opt */ + -4, /* (462) table_primary ::= db_name NK_DOT table_name alias_opt */ + -2, /* (463) table_primary ::= subquery alias_opt */ + -1, /* (464) table_primary ::= parenthesized_joined_table */ + 0, /* (465) alias_opt ::= */ + -1, /* (466) alias_opt ::= table_alias */ + -2, /* (467) alias_opt ::= AS table_alias */ + -3, /* (468) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ + -3, /* (469) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ + -6, /* (470) joined_table ::= table_reference join_type JOIN table_reference ON search_condition */ + 0, /* (471) join_type ::= */ + -1, /* (472) join_type ::= INNER */ + -12, /* (473) query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ + 0, /* (474) set_quantifier_opt ::= */ + -1, /* (475) set_quantifier_opt ::= DISTINCT */ + -1, /* (476) set_quantifier_opt ::= ALL */ + -1, /* (477) select_list ::= select_item */ + -3, /* (478) select_list ::= select_list NK_COMMA select_item */ + -1, /* (479) select_item ::= NK_STAR */ + -1, /* (480) select_item ::= common_expression */ + -2, /* (481) select_item ::= common_expression column_alias */ + -3, /* (482) select_item ::= common_expression AS column_alias */ + -3, /* (483) select_item ::= table_name NK_DOT NK_STAR */ + 0, /* (484) where_clause_opt ::= */ + -2, /* (485) where_clause_opt ::= WHERE search_condition */ + 0, /* (486) partition_by_clause_opt ::= */ + -3, /* (487) partition_by_clause_opt ::= PARTITION BY partition_list */ + -1, /* (488) partition_list ::= partition_item */ + -3, /* (489) partition_list ::= partition_list NK_COMMA partition_item */ + -1, /* (490) partition_item ::= expr_or_subquery */ + -2, /* (491) partition_item ::= expr_or_subquery column_alias */ + -3, /* (492) partition_item ::= expr_or_subquery AS column_alias */ + 0, /* (493) twindow_clause_opt ::= */ + -6, /* (494) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */ + -4, /* (495) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ + -6, /* (496) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */ + -8, /* (497) twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */ + -7, /* (498) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ + 0, /* (499) sliding_opt ::= */ + -4, /* (500) sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */ + 0, /* (501) fill_opt ::= */ + -4, /* (502) fill_opt ::= FILL NK_LP fill_mode NK_RP */ + -6, /* (503) fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */ + -1, /* (504) fill_mode ::= NONE */ + -1, /* (505) fill_mode ::= PREV */ + -1, /* (506) fill_mode ::= NULL */ + -1, /* (507) fill_mode ::= LINEAR */ + -1, /* (508) fill_mode ::= NEXT */ + 0, /* (509) group_by_clause_opt ::= */ + -3, /* (510) group_by_clause_opt ::= GROUP BY group_by_list */ + -1, /* (511) group_by_list ::= expr_or_subquery */ + -3, /* (512) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ + 0, /* (513) having_clause_opt ::= */ + -2, /* (514) having_clause_opt ::= HAVING search_condition */ + 0, /* (515) range_opt ::= */ + -6, /* (516) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ + 0, /* (517) every_opt ::= */ + -4, /* (518) every_opt ::= EVERY NK_LP duration_literal NK_RP */ + -4, /* (519) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ + -1, /* (520) query_simple ::= query_specification */ + -1, /* (521) query_simple ::= union_query_expression */ + -4, /* (522) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ + -3, /* (523) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ + -1, /* (524) query_simple_or_subquery ::= query_simple */ + -1, /* (525) query_simple_or_subquery ::= subquery */ + -1, /* (526) query_or_subquery ::= query_expression */ + -1, /* (527) query_or_subquery ::= subquery */ + 0, /* (528) order_by_clause_opt ::= */ + -3, /* (529) order_by_clause_opt ::= ORDER BY sort_specification_list */ + 0, /* (530) slimit_clause_opt ::= */ + -2, /* (531) slimit_clause_opt ::= SLIMIT NK_INTEGER */ + -4, /* (532) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ + -4, /* (533) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + 0, /* (534) limit_clause_opt ::= */ + -2, /* (535) limit_clause_opt ::= LIMIT NK_INTEGER */ + -4, /* (536) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ + -4, /* (537) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + -3, /* (538) subquery ::= NK_LP query_expression NK_RP */ + -3, /* (539) subquery ::= NK_LP subquery NK_RP */ + -1, /* (540) search_condition ::= common_expression */ + -1, /* (541) sort_specification_list ::= sort_specification */ + -3, /* (542) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ + -3, /* (543) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ + 0, /* (544) ordering_specification_opt ::= */ + -1, /* (545) ordering_specification_opt ::= ASC */ + -1, /* (546) ordering_specification_opt ::= DESC */ + 0, /* (547) null_ordering_opt ::= */ + -2, /* (548) null_ordering_opt ::= NULLS FIRST */ + -2, /* (549) null_ordering_opt ::= NULLS LAST */ }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -4315,78 +4304,78 @@ static YYACTIONTYPE yy_reduce( yy_destructor(yypParser,329,&yymsp[0].minor); break; case 24: /* cmd ::= CREATE USER user_name PASS NK_STRING sysinfo_opt */ -{ pCxt->pRootNode = createCreateUserStmt(pCxt, &yymsp[-3].minor.yy701, &yymsp[-1].minor.yy0, yymsp[0].minor.yy47); } +{ pCxt->pRootNode = createCreateUserStmt(pCxt, &yymsp[-3].minor.yy815, &yymsp[-1].minor.yy0, yymsp[0].minor.yy475); } break; case 25: /* cmd ::= ALTER USER user_name PASS NK_STRING */ -{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy701, TSDB_ALTER_USER_PASSWD, &yymsp[0].minor.yy0); } +{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy815, TSDB_ALTER_USER_PASSWD, &yymsp[0].minor.yy0); } break; case 26: /* cmd ::= ALTER USER user_name ENABLE NK_INTEGER */ -{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy701, TSDB_ALTER_USER_ENABLE, &yymsp[0].minor.yy0); } +{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy815, TSDB_ALTER_USER_ENABLE, &yymsp[0].minor.yy0); } break; case 27: /* cmd ::= ALTER USER user_name SYSINFO NK_INTEGER */ -{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy701, TSDB_ALTER_USER_SYSINFO, &yymsp[0].minor.yy0); } +{ pCxt->pRootNode = createAlterUserStmt(pCxt, &yymsp[-2].minor.yy815, TSDB_ALTER_USER_SYSINFO, &yymsp[0].minor.yy0); } break; case 28: /* cmd ::= DROP USER user_name */ -{ pCxt->pRootNode = createDropUserStmt(pCxt, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createDropUserStmt(pCxt, &yymsp[0].minor.yy815); } break; case 29: /* sysinfo_opt ::= */ -{ yymsp[1].minor.yy47 = 1; } +{ yymsp[1].minor.yy475 = 1; } break; case 30: /* sysinfo_opt ::= SYSINFO NK_INTEGER */ -{ yymsp[-1].minor.yy47 = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); } +{ yymsp[-1].minor.yy475 = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); } break; case 31: /* cmd ::= GRANT privileges ON priv_level TO user_name */ -{ pCxt->pRootNode = createGrantStmt(pCxt, yymsp[-4].minor.yy921, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createGrantStmt(pCxt, yymsp[-4].minor.yy483, &yymsp[-2].minor.yy815, &yymsp[0].minor.yy815); } break; case 32: /* cmd ::= REVOKE privileges ON priv_level FROM user_name */ -{ pCxt->pRootNode = createRevokeStmt(pCxt, yymsp[-4].minor.yy921, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createRevokeStmt(pCxt, yymsp[-4].minor.yy483, &yymsp[-2].minor.yy815, &yymsp[0].minor.yy815); } break; case 33: /* privileges ::= ALL */ -{ yymsp[0].minor.yy921 = PRIVILEGE_TYPE_ALL; } +{ yymsp[0].minor.yy483 = PRIVILEGE_TYPE_ALL; } break; case 34: /* privileges ::= priv_type_list */ case 36: /* priv_type_list ::= priv_type */ yytestcase(yyruleno==36); -{ yylhsminor.yy921 = yymsp[0].minor.yy921; } - yymsp[0].minor.yy921 = yylhsminor.yy921; +{ yylhsminor.yy483 = yymsp[0].minor.yy483; } + yymsp[0].minor.yy483 = yylhsminor.yy483; break; case 35: /* privileges ::= SUBSCRIBE */ -{ yymsp[0].minor.yy921 = PRIVILEGE_TYPE_SUBSCRIBE; } +{ yymsp[0].minor.yy483 = PRIVILEGE_TYPE_SUBSCRIBE; } break; case 37: /* priv_type_list ::= priv_type_list NK_COMMA priv_type */ -{ yylhsminor.yy921 = yymsp[-2].minor.yy921 | yymsp[0].minor.yy921; } - yymsp[-2].minor.yy921 = yylhsminor.yy921; +{ yylhsminor.yy483 = yymsp[-2].minor.yy483 | yymsp[0].minor.yy483; } + yymsp[-2].minor.yy483 = yylhsminor.yy483; break; case 38: /* priv_type ::= READ */ -{ yymsp[0].minor.yy921 = PRIVILEGE_TYPE_READ; } +{ yymsp[0].minor.yy483 = PRIVILEGE_TYPE_READ; } break; case 39: /* priv_type ::= WRITE */ -{ yymsp[0].minor.yy921 = PRIVILEGE_TYPE_WRITE; } +{ yymsp[0].minor.yy483 = PRIVILEGE_TYPE_WRITE; } break; case 40: /* priv_level ::= NK_STAR NK_DOT NK_STAR */ -{ yylhsminor.yy701 = yymsp[-2].minor.yy0; } - yymsp[-2].minor.yy701 = yylhsminor.yy701; +{ yylhsminor.yy815 = yymsp[-2].minor.yy0; } + yymsp[-2].minor.yy815 = yylhsminor.yy815; break; case 41: /* priv_level ::= db_name NK_DOT NK_STAR */ -{ yylhsminor.yy701 = yymsp[-2].minor.yy701; } - yymsp[-2].minor.yy701 = yylhsminor.yy701; +{ yylhsminor.yy815 = yymsp[-2].minor.yy815; } + yymsp[-2].minor.yy815 = yylhsminor.yy815; break; case 42: /* priv_level ::= topic_name */ case 270: /* sma_func_name ::= function_name */ yytestcase(yyruleno==270); - case 464: /* alias_opt ::= table_alias */ yytestcase(yyruleno==464); -{ yylhsminor.yy701 = yymsp[0].minor.yy701; } - yymsp[0].minor.yy701 = yylhsminor.yy701; + case 466: /* alias_opt ::= table_alias */ yytestcase(yyruleno==466); +{ yylhsminor.yy815 = yymsp[0].minor.yy815; } + yymsp[0].minor.yy815 = yylhsminor.yy815; break; case 43: /* cmd ::= CREATE DNODE dnode_endpoint */ -{ pCxt->pRootNode = createCreateDnodeStmt(pCxt, &yymsp[0].minor.yy701, NULL); } +{ pCxt->pRootNode = createCreateDnodeStmt(pCxt, &yymsp[0].minor.yy815, NULL); } break; case 44: /* cmd ::= CREATE DNODE dnode_endpoint PORT NK_INTEGER */ -{ pCxt->pRootNode = createCreateDnodeStmt(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy0); } +{ pCxt->pRootNode = createCreateDnodeStmt(pCxt, &yymsp[-2].minor.yy815, &yymsp[0].minor.yy0); } break; case 45: /* cmd ::= DROP DNODE NK_INTEGER force_opt */ -{ pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy845); } +{ pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy63); } break; case 46: /* cmd ::= DROP DNODE dnode_endpoint force_opt */ -{ pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy701, yymsp[0].minor.yy845); } +{ pCxt->pRootNode = createDropDnodeStmt(pCxt, &yymsp[-1].minor.yy815, yymsp[0].minor.yy63); } break; case 47: /* cmd ::= ALTER DNODE NK_INTEGER NK_STRING */ { pCxt->pRootNode = createAlterDnodeStmt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0, NULL); } @@ -4407,45 +4396,45 @@ static YYACTIONTYPE yy_reduce( case 272: /* sma_func_name ::= FIRST */ yytestcase(yyruleno==272); case 273: /* sma_func_name ::= LAST */ yytestcase(yyruleno==273); case 274: /* sma_func_name ::= LAST_ROW */ yytestcase(yyruleno==274); - case 350: /* db_name ::= NK_ID */ yytestcase(yyruleno==350); - case 351: /* table_name ::= NK_ID */ yytestcase(yyruleno==351); - case 352: /* column_name ::= NK_ID */ yytestcase(yyruleno==352); - case 353: /* function_name ::= NK_ID */ yytestcase(yyruleno==353); - case 354: /* table_alias ::= NK_ID */ yytestcase(yyruleno==354); - case 355: /* column_alias ::= NK_ID */ yytestcase(yyruleno==355); - case 356: /* user_name ::= NK_ID */ yytestcase(yyruleno==356); - case 357: /* topic_name ::= NK_ID */ yytestcase(yyruleno==357); - case 358: /* stream_name ::= NK_ID */ yytestcase(yyruleno==358); - case 359: /* cgroup_name ::= NK_ID */ yytestcase(yyruleno==359); - case 399: /* noarg_func ::= NOW */ yytestcase(yyruleno==399); - case 400: /* noarg_func ::= TODAY */ yytestcase(yyruleno==400); - case 401: /* noarg_func ::= TIMEZONE */ yytestcase(yyruleno==401); - case 402: /* noarg_func ::= DATABASE */ yytestcase(yyruleno==402); - case 403: /* noarg_func ::= CLIENT_VERSION */ yytestcase(yyruleno==403); - case 404: /* noarg_func ::= SERVER_VERSION */ yytestcase(yyruleno==404); - case 405: /* noarg_func ::= SERVER_STATUS */ yytestcase(yyruleno==405); - case 406: /* noarg_func ::= CURRENT_USER */ yytestcase(yyruleno==406); - case 407: /* noarg_func ::= USER */ yytestcase(yyruleno==407); - case 408: /* star_func ::= COUNT */ yytestcase(yyruleno==408); - case 409: /* star_func ::= FIRST */ yytestcase(yyruleno==409); - case 410: /* star_func ::= LAST */ yytestcase(yyruleno==410); - case 411: /* star_func ::= LAST_ROW */ yytestcase(yyruleno==411); -{ yylhsminor.yy701 = yymsp[0].minor.yy0; } - yymsp[0].minor.yy701 = yylhsminor.yy701; + case 352: /* db_name ::= NK_ID */ yytestcase(yyruleno==352); + case 353: /* table_name ::= NK_ID */ yytestcase(yyruleno==353); + case 354: /* column_name ::= NK_ID */ yytestcase(yyruleno==354); + case 355: /* function_name ::= NK_ID */ yytestcase(yyruleno==355); + case 356: /* table_alias ::= NK_ID */ yytestcase(yyruleno==356); + case 357: /* column_alias ::= NK_ID */ yytestcase(yyruleno==357); + case 358: /* user_name ::= NK_ID */ yytestcase(yyruleno==358); + case 359: /* topic_name ::= NK_ID */ yytestcase(yyruleno==359); + case 360: /* stream_name ::= NK_ID */ yytestcase(yyruleno==360); + case 361: /* cgroup_name ::= NK_ID */ yytestcase(yyruleno==361); + case 401: /* noarg_func ::= NOW */ yytestcase(yyruleno==401); + case 402: /* noarg_func ::= TODAY */ yytestcase(yyruleno==402); + case 403: /* noarg_func ::= TIMEZONE */ yytestcase(yyruleno==403); + case 404: /* noarg_func ::= DATABASE */ yytestcase(yyruleno==404); + case 405: /* noarg_func ::= CLIENT_VERSION */ yytestcase(yyruleno==405); + case 406: /* noarg_func ::= SERVER_VERSION */ yytestcase(yyruleno==406); + case 407: /* noarg_func ::= SERVER_STATUS */ yytestcase(yyruleno==407); + case 408: /* noarg_func ::= CURRENT_USER */ yytestcase(yyruleno==408); + case 409: /* noarg_func ::= USER */ yytestcase(yyruleno==409); + case 410: /* star_func ::= COUNT */ yytestcase(yyruleno==410); + case 411: /* star_func ::= FIRST */ yytestcase(yyruleno==411); + case 412: /* star_func ::= LAST */ yytestcase(yyruleno==412); + case 413: /* star_func ::= LAST_ROW */ yytestcase(yyruleno==413); +{ yylhsminor.yy815 = yymsp[0].minor.yy0; } + yymsp[0].minor.yy815 = yylhsminor.yy815; break; case 54: /* force_opt ::= */ case 73: /* not_exists_opt ::= */ yytestcase(yyruleno==73); case 75: /* exists_opt ::= */ yytestcase(yyruleno==75); case 290: /* analyze_opt ::= */ yytestcase(yyruleno==290); case 297: /* agg_func_opt ::= */ yytestcase(yyruleno==297); - case 472: /* set_quantifier_opt ::= */ yytestcase(yyruleno==472); -{ yymsp[1].minor.yy845 = false; } + case 474: /* set_quantifier_opt ::= */ yytestcase(yyruleno==474); +{ yymsp[1].minor.yy63 = false; } break; case 55: /* force_opt ::= FORCE */ case 291: /* analyze_opt ::= ANALYZE */ yytestcase(yyruleno==291); case 298: /* agg_func_opt ::= AGGREGATE */ yytestcase(yyruleno==298); - case 473: /* set_quantifier_opt ::= DISTINCT */ yytestcase(yyruleno==473); -{ yymsp[0].minor.yy845 = true; } + case 475: /* set_quantifier_opt ::= DISTINCT */ yytestcase(yyruleno==475); +{ yymsp[0].minor.yy63 = true; } break; case 56: /* cmd ::= ALTER LOCAL NK_STRING */ { pCxt->pRootNode = createAlterLocalStmt(pCxt, &yymsp[0].minor.yy0, NULL); } @@ -4478,206 +4467,206 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createDropComponentNodeStmt(pCxt, QUERY_NODE_DROP_MNODE_STMT, &yymsp[0].minor.yy0); } break; case 66: /* cmd ::= CREATE DATABASE not_exists_opt db_name db_options */ -{ pCxt->pRootNode = createCreateDatabaseStmt(pCxt, yymsp[-2].minor.yy845, &yymsp[-1].minor.yy701, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createCreateDatabaseStmt(pCxt, yymsp[-2].minor.yy63, &yymsp[-1].minor.yy815, yymsp[0].minor.yy320); } break; case 67: /* cmd ::= DROP DATABASE exists_opt db_name */ -{ pCxt->pRootNode = createDropDatabaseStmt(pCxt, yymsp[-1].minor.yy845, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createDropDatabaseStmt(pCxt, yymsp[-1].minor.yy63, &yymsp[0].minor.yy815); } break; case 68: /* cmd ::= USE db_name */ -{ pCxt->pRootNode = createUseDatabaseStmt(pCxt, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createUseDatabaseStmt(pCxt, &yymsp[0].minor.yy815); } break; case 69: /* cmd ::= ALTER DATABASE db_name alter_db_options */ -{ pCxt->pRootNode = createAlterDatabaseStmt(pCxt, &yymsp[-1].minor.yy701, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createAlterDatabaseStmt(pCxt, &yymsp[-1].minor.yy815, yymsp[0].minor.yy320); } break; case 70: /* cmd ::= FLUSH DATABASE db_name */ -{ pCxt->pRootNode = createFlushDatabaseStmt(pCxt, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createFlushDatabaseStmt(pCxt, &yymsp[0].minor.yy815); } break; case 71: /* cmd ::= TRIM DATABASE db_name speed_opt */ -{ pCxt->pRootNode = createTrimDatabaseStmt(pCxt, &yymsp[-1].minor.yy701, yymsp[0].minor.yy508); } +{ pCxt->pRootNode = createTrimDatabaseStmt(pCxt, &yymsp[-1].minor.yy815, yymsp[0].minor.yy122); } break; case 72: /* not_exists_opt ::= IF NOT EXISTS */ -{ yymsp[-2].minor.yy845 = true; } +{ yymsp[-2].minor.yy63 = true; } break; case 74: /* exists_opt ::= IF EXISTS */ -{ yymsp[-1].minor.yy845 = true; } +{ yymsp[-1].minor.yy63 = true; } break; case 76: /* db_options ::= */ -{ yymsp[1].minor.yy476 = createDefaultDatabaseOptions(pCxt); } +{ yymsp[1].minor.yy320 = createDefaultDatabaseOptions(pCxt); } break; case 77: /* db_options ::= db_options BUFFER NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_BUFFER, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_BUFFER, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 78: /* db_options ::= db_options CACHEMODEL NK_STRING */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_CACHEMODEL, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_CACHEMODEL, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 79: /* db_options ::= db_options CACHESIZE NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_CACHESIZE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_CACHESIZE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 80: /* db_options ::= db_options COMP NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_COMP, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_COMP, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 81: /* db_options ::= db_options DURATION NK_INTEGER */ case 82: /* db_options ::= db_options DURATION NK_VARIABLE */ yytestcase(yyruleno==82); -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_DAYS, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_DAYS, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 83: /* db_options ::= db_options MAXROWS NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_MAXROWS, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_MAXROWS, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 84: /* db_options ::= db_options MINROWS NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_MINROWS, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_MINROWS, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 85: /* db_options ::= db_options KEEP integer_list */ case 86: /* db_options ::= db_options KEEP variable_list */ yytestcase(yyruleno==86); -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_KEEP, yymsp[0].minor.yy376); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_KEEP, yymsp[0].minor.yy570); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 87: /* db_options ::= db_options PAGES NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_PAGES, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_PAGES, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 88: /* db_options ::= db_options PAGESIZE NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_PAGESIZE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_PAGESIZE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 89: /* db_options ::= db_options TSDB_PAGESIZE NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_TSDB_PAGESIZE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_TSDB_PAGESIZE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 90: /* db_options ::= db_options PRECISION NK_STRING */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_PRECISION, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_PRECISION, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 91: /* db_options ::= db_options REPLICA NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_REPLICA, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_REPLICA, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 92: /* db_options ::= db_options VGROUPS NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_VGROUPS, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_VGROUPS, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 93: /* db_options ::= db_options SINGLE_STABLE NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_SINGLE_STABLE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_SINGLE_STABLE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 94: /* db_options ::= db_options RETENTIONS retention_list */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_RETENTIONS, yymsp[0].minor.yy376); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_RETENTIONS, yymsp[0].minor.yy570); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 95: /* db_options ::= db_options SCHEMALESS NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_SCHEMALESS, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_SCHEMALESS, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 96: /* db_options ::= db_options WAL_LEVEL NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_WAL, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_WAL, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 97: /* db_options ::= db_options WAL_FSYNC_PERIOD NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_FSYNC, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_FSYNC, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 98: /* db_options ::= db_options WAL_RETENTION_PERIOD NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_WAL_RETENTION_PERIOD, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_WAL_RETENTION_PERIOD, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 99: /* db_options ::= db_options WAL_RETENTION_PERIOD NK_MINUS NK_INTEGER */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; - yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-3].minor.yy476, DB_OPTION_WAL_RETENTION_PERIOD, &t); + yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-3].minor.yy320, DB_OPTION_WAL_RETENTION_PERIOD, &t); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; case 100: /* db_options ::= db_options WAL_RETENTION_SIZE NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_WAL_RETENTION_SIZE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_WAL_RETENTION_SIZE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 101: /* db_options ::= db_options WAL_RETENTION_SIZE NK_MINUS NK_INTEGER */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; - yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-3].minor.yy476, DB_OPTION_WAL_RETENTION_SIZE, &t); + yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-3].minor.yy320, DB_OPTION_WAL_RETENTION_SIZE, &t); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; case 102: /* db_options ::= db_options WAL_ROLL_PERIOD NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_WAL_ROLL_PERIOD, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_WAL_ROLL_PERIOD, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 103: /* db_options ::= db_options WAL_SEGMENT_SIZE NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_WAL_SEGMENT_SIZE, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_WAL_SEGMENT_SIZE, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 104: /* db_options ::= db_options STT_TRIGGER NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_STT_TRIGGER, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_STT_TRIGGER, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 105: /* db_options ::= db_options TABLE_PREFIX NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_TABLE_PREFIX, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_TABLE_PREFIX, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 106: /* db_options ::= db_options TABLE_SUFFIX NK_INTEGER */ -{ yylhsminor.yy476 = setDatabaseOption(pCxt, yymsp[-2].minor.yy476, DB_OPTION_TABLE_SUFFIX, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setDatabaseOption(pCxt, yymsp[-2].minor.yy320, DB_OPTION_TABLE_SUFFIX, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 107: /* alter_db_options ::= alter_db_option */ -{ yylhsminor.yy476 = createAlterDatabaseOptions(pCxt); yylhsminor.yy476 = setAlterDatabaseOption(pCxt, yylhsminor.yy476, &yymsp[0].minor.yy893); } - yymsp[0].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterDatabaseOptions(pCxt); yylhsminor.yy320 = setAlterDatabaseOption(pCxt, yylhsminor.yy320, &yymsp[0].minor.yy695); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; case 108: /* alter_db_options ::= alter_db_options alter_db_option */ -{ yylhsminor.yy476 = setAlterDatabaseOption(pCxt, yymsp[-1].minor.yy476, &yymsp[0].minor.yy893); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setAlterDatabaseOption(pCxt, yymsp[-1].minor.yy320, &yymsp[0].minor.yy695); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; case 109: /* alter_db_option ::= BUFFER NK_INTEGER */ -{ yymsp[-1].minor.yy893.type = DB_OPTION_BUFFER; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy695.type = DB_OPTION_BUFFER; yymsp[-1].minor.yy695.val = yymsp[0].minor.yy0; } break; case 110: /* alter_db_option ::= CACHEMODEL NK_STRING */ -{ yymsp[-1].minor.yy893.type = DB_OPTION_CACHEMODEL; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy695.type = DB_OPTION_CACHEMODEL; yymsp[-1].minor.yy695.val = yymsp[0].minor.yy0; } break; case 111: /* alter_db_option ::= CACHESIZE NK_INTEGER */ -{ yymsp[-1].minor.yy893.type = DB_OPTION_CACHESIZE; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy695.type = DB_OPTION_CACHESIZE; yymsp[-1].minor.yy695.val = yymsp[0].minor.yy0; } break; case 112: /* alter_db_option ::= WAL_FSYNC_PERIOD NK_INTEGER */ -{ yymsp[-1].minor.yy893.type = DB_OPTION_FSYNC; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy695.type = DB_OPTION_FSYNC; yymsp[-1].minor.yy695.val = yymsp[0].minor.yy0; } break; case 113: /* alter_db_option ::= KEEP integer_list */ case 114: /* alter_db_option ::= KEEP variable_list */ yytestcase(yyruleno==114); -{ yymsp[-1].minor.yy893.type = DB_OPTION_KEEP; yymsp[-1].minor.yy893.pList = yymsp[0].minor.yy376; } +{ yymsp[-1].minor.yy695.type = DB_OPTION_KEEP; yymsp[-1].minor.yy695.pList = yymsp[0].minor.yy570; } break; case 115: /* alter_db_option ::= PAGES NK_INTEGER */ -{ yymsp[-1].minor.yy893.type = DB_OPTION_PAGES; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy695.type = DB_OPTION_PAGES; yymsp[-1].minor.yy695.val = yymsp[0].minor.yy0; } break; case 116: /* alter_db_option ::= REPLICA NK_INTEGER */ -{ yymsp[-1].minor.yy893.type = DB_OPTION_REPLICA; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy695.type = DB_OPTION_REPLICA; yymsp[-1].minor.yy695.val = yymsp[0].minor.yy0; } break; case 117: /* alter_db_option ::= WAL_LEVEL NK_INTEGER */ -{ yymsp[-1].minor.yy893.type = DB_OPTION_WAL; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy695.type = DB_OPTION_WAL; yymsp[-1].minor.yy695.val = yymsp[0].minor.yy0; } break; case 118: /* alter_db_option ::= STT_TRIGGER NK_INTEGER */ -{ yymsp[-1].minor.yy893.type = DB_OPTION_STT_TRIGGER; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy695.type = DB_OPTION_STT_TRIGGER; yymsp[-1].minor.yy695.val = yymsp[0].minor.yy0; } break; case 119: /* integer_list ::= NK_INTEGER */ -{ yylhsminor.yy376 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy376 = yylhsminor.yy376; +{ yylhsminor.yy570 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy570 = yylhsminor.yy570; break; case 120: /* integer_list ::= integer_list NK_COMMA NK_INTEGER */ - case 320: /* dnode_list ::= dnode_list DNODE NK_INTEGER */ yytestcase(yyruleno==320); -{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-2].minor.yy376, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } - yymsp[-2].minor.yy376 = yylhsminor.yy376; + case 322: /* dnode_list ::= dnode_list DNODE NK_INTEGER */ yytestcase(yyruleno==322); +{ yylhsminor.yy570 = addNodeToList(pCxt, yymsp[-2].minor.yy570, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } + yymsp[-2].minor.yy570 = yylhsminor.yy570; break; case 121: /* variable_list ::= NK_VARIABLE */ -{ yylhsminor.yy376 = createNodeList(pCxt, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy376 = yylhsminor.yy376; +{ yylhsminor.yy570 = createNodeList(pCxt, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy570 = yylhsminor.yy570; break; case 122: /* variable_list ::= variable_list NK_COMMA NK_VARIABLE */ -{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-2].minor.yy376, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } - yymsp[-2].minor.yy376 = yylhsminor.yy376; +{ yylhsminor.yy570 = addNodeToList(pCxt, yymsp[-2].minor.yy570, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } + yymsp[-2].minor.yy570 = yylhsminor.yy570; break; case 123: /* retention_list ::= retention */ case 145: /* multi_create_clause ::= create_subtable_clause */ yytestcase(yyruleno==145); @@ -4687,14 +4676,14 @@ static YYACTIONTYPE yy_reduce( case 204: /* col_name_list ::= col_name */ yytestcase(yyruleno==204); case 255: /* tag_list_opt ::= tag_item */ yytestcase(yyruleno==255); case 267: /* func_list ::= func */ yytestcase(yyruleno==267); - case 348: /* literal_list ::= signed_literal */ yytestcase(yyruleno==348); - case 414: /* other_para_list ::= star_func_para */ yytestcase(yyruleno==414); - case 420: /* when_then_list ::= when_then_expr */ yytestcase(yyruleno==420); - case 475: /* select_list ::= select_item */ yytestcase(yyruleno==475); - case 486: /* partition_list ::= partition_item */ yytestcase(yyruleno==486); - case 539: /* sort_specification_list ::= sort_specification */ yytestcase(yyruleno==539); -{ yylhsminor.yy376 = createNodeList(pCxt, yymsp[0].minor.yy476); } - yymsp[0].minor.yy376 = yylhsminor.yy376; + case 350: /* literal_list ::= signed_literal */ yytestcase(yyruleno==350); + case 416: /* other_para_list ::= star_func_para */ yytestcase(yyruleno==416); + case 422: /* when_then_list ::= when_then_expr */ yytestcase(yyruleno==422); + case 477: /* select_list ::= select_item */ yytestcase(yyruleno==477); + case 488: /* partition_list ::= partition_item */ yytestcase(yyruleno==488); + case 541: /* sort_specification_list ::= sort_specification */ yytestcase(yyruleno==541); +{ yylhsminor.yy570 = createNodeList(pCxt, yymsp[0].minor.yy320); } + yymsp[0].minor.yy570 = yylhsminor.yy570; break; case 124: /* retention_list ::= retention_list NK_COMMA retention */ case 156: /* column_def_list ::= column_def_list NK_COMMA column_def */ yytestcase(yyruleno==156); @@ -4702,271 +4691,273 @@ static YYACTIONTYPE yy_reduce( case 205: /* col_name_list ::= col_name_list NK_COMMA col_name */ yytestcase(yyruleno==205); case 256: /* tag_list_opt ::= tag_list_opt NK_COMMA tag_item */ yytestcase(yyruleno==256); case 268: /* func_list ::= func_list NK_COMMA func */ yytestcase(yyruleno==268); - case 349: /* literal_list ::= literal_list NK_COMMA signed_literal */ yytestcase(yyruleno==349); - case 415: /* other_para_list ::= other_para_list NK_COMMA star_func_para */ yytestcase(yyruleno==415); - case 476: /* select_list ::= select_list NK_COMMA select_item */ yytestcase(yyruleno==476); - case 487: /* partition_list ::= partition_list NK_COMMA partition_item */ yytestcase(yyruleno==487); - case 540: /* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ yytestcase(yyruleno==540); -{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-2].minor.yy376, yymsp[0].minor.yy476); } - yymsp[-2].minor.yy376 = yylhsminor.yy376; + case 351: /* literal_list ::= literal_list NK_COMMA signed_literal */ yytestcase(yyruleno==351); + case 417: /* other_para_list ::= other_para_list NK_COMMA star_func_para */ yytestcase(yyruleno==417); + case 478: /* select_list ::= select_list NK_COMMA select_item */ yytestcase(yyruleno==478); + case 489: /* partition_list ::= partition_list NK_COMMA partition_item */ yytestcase(yyruleno==489); + case 542: /* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ yytestcase(yyruleno==542); +{ yylhsminor.yy570 = addNodeToList(pCxt, yymsp[-2].minor.yy570, yymsp[0].minor.yy320); } + yymsp[-2].minor.yy570 = yylhsminor.yy570; break; case 125: /* retention ::= NK_VARIABLE NK_COLON NK_VARIABLE */ -{ yylhsminor.yy476 = createNodeListNodeEx(pCxt, createDurationValueNode(pCxt, &yymsp[-2].minor.yy0), createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createNodeListNodeEx(pCxt, createDurationValueNode(pCxt, &yymsp[-2].minor.yy0), createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 126: /* speed_opt ::= */ case 299: /* bufsize_opt ::= */ yytestcase(yyruleno==299); -{ yymsp[1].minor.yy508 = 0; } +{ yymsp[1].minor.yy122 = 0; } break; case 127: /* speed_opt ::= MAX_SPEED NK_INTEGER */ case 300: /* bufsize_opt ::= BUFSIZE NK_INTEGER */ yytestcase(yyruleno==300); -{ yymsp[-1].minor.yy508 = taosStr2Int32(yymsp[0].minor.yy0.z, NULL, 10); } +{ yymsp[-1].minor.yy122 = taosStr2Int32(yymsp[0].minor.yy0.z, NULL, 10); } break; case 128: /* cmd ::= CREATE TABLE not_exists_opt full_table_name NK_LP column_def_list NK_RP tags_def_opt table_options */ case 130: /* cmd ::= CREATE STABLE not_exists_opt full_table_name NK_LP column_def_list NK_RP tags_def table_options */ yytestcase(yyruleno==130); -{ pCxt->pRootNode = createCreateTableStmt(pCxt, yymsp[-6].minor.yy845, yymsp[-5].minor.yy476, yymsp[-3].minor.yy376, yymsp[-1].minor.yy376, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createCreateTableStmt(pCxt, yymsp[-6].minor.yy63, yymsp[-5].minor.yy320, yymsp[-3].minor.yy570, yymsp[-1].minor.yy570, yymsp[0].minor.yy320); } break; case 129: /* cmd ::= CREATE TABLE multi_create_clause */ -{ pCxt->pRootNode = createCreateMultiTableStmt(pCxt, yymsp[0].minor.yy376); } +{ pCxt->pRootNode = createCreateMultiTableStmt(pCxt, yymsp[0].minor.yy570); } break; case 131: /* cmd ::= DROP TABLE multi_drop_clause */ -{ pCxt->pRootNode = createDropTableStmt(pCxt, yymsp[0].minor.yy376); } +{ pCxt->pRootNode = createDropTableStmt(pCxt, yymsp[0].minor.yy570); } break; case 132: /* cmd ::= DROP STABLE exists_opt full_table_name */ -{ pCxt->pRootNode = createDropSuperTableStmt(pCxt, yymsp[-1].minor.yy845, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createDropSuperTableStmt(pCxt, yymsp[-1].minor.yy63, yymsp[0].minor.yy320); } break; case 133: /* cmd ::= ALTER TABLE alter_table_clause */ - case 322: /* cmd ::= query_or_subquery */ yytestcase(yyruleno==322); -{ pCxt->pRootNode = yymsp[0].minor.yy476; } + case 324: /* cmd ::= query_or_subquery */ yytestcase(yyruleno==324); +{ pCxt->pRootNode = yymsp[0].minor.yy320; } break; case 134: /* cmd ::= ALTER STABLE alter_table_clause */ -{ pCxt->pRootNode = setAlterSuperTableType(yymsp[0].minor.yy476); } +{ pCxt->pRootNode = setAlterSuperTableType(yymsp[0].minor.yy320); } break; case 135: /* alter_table_clause ::= full_table_name alter_table_options */ -{ yylhsminor.yy476 = createAlterTableModifyOptions(pCxt, yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableModifyOptions(pCxt, yymsp[-1].minor.yy320, yymsp[0].minor.yy320); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; case 136: /* alter_table_clause ::= full_table_name ADD COLUMN column_name type_name */ -{ yylhsminor.yy476 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_ADD_COLUMN, &yymsp[-1].minor.yy701, yymsp[0].minor.yy532); } - yymsp[-4].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy320, TSDB_ALTER_TABLE_ADD_COLUMN, &yymsp[-1].minor.yy815, yymsp[0].minor.yy200); } + yymsp[-4].minor.yy320 = yylhsminor.yy320; break; case 137: /* alter_table_clause ::= full_table_name DROP COLUMN column_name */ -{ yylhsminor.yy476 = createAlterTableDropCol(pCxt, yymsp[-3].minor.yy476, TSDB_ALTER_TABLE_DROP_COLUMN, &yymsp[0].minor.yy701); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableDropCol(pCxt, yymsp[-3].minor.yy320, TSDB_ALTER_TABLE_DROP_COLUMN, &yymsp[0].minor.yy815); } + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; case 138: /* alter_table_clause ::= full_table_name MODIFY COLUMN column_name type_name */ -{ yylhsminor.yy476 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, &yymsp[-1].minor.yy701, yymsp[0].minor.yy532); } - yymsp[-4].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy320, TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES, &yymsp[-1].minor.yy815, yymsp[0].minor.yy200); } + yymsp[-4].minor.yy320 = yylhsminor.yy320; break; case 139: /* alter_table_clause ::= full_table_name RENAME COLUMN column_name column_name */ -{ yylhsminor.yy476 = createAlterTableRenameCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, &yymsp[-1].minor.yy701, &yymsp[0].minor.yy701); } - yymsp[-4].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableRenameCol(pCxt, yymsp[-4].minor.yy320, TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, &yymsp[-1].minor.yy815, &yymsp[0].minor.yy815); } + yymsp[-4].minor.yy320 = yylhsminor.yy320; break; case 140: /* alter_table_clause ::= full_table_name ADD TAG column_name type_name */ -{ yylhsminor.yy476 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_ADD_TAG, &yymsp[-1].minor.yy701, yymsp[0].minor.yy532); } - yymsp[-4].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy320, TSDB_ALTER_TABLE_ADD_TAG, &yymsp[-1].minor.yy815, yymsp[0].minor.yy200); } + yymsp[-4].minor.yy320 = yylhsminor.yy320; break; case 141: /* alter_table_clause ::= full_table_name DROP TAG column_name */ -{ yylhsminor.yy476 = createAlterTableDropCol(pCxt, yymsp[-3].minor.yy476, TSDB_ALTER_TABLE_DROP_TAG, &yymsp[0].minor.yy701); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableDropCol(pCxt, yymsp[-3].minor.yy320, TSDB_ALTER_TABLE_DROP_TAG, &yymsp[0].minor.yy815); } + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; case 142: /* alter_table_clause ::= full_table_name MODIFY TAG column_name type_name */ -{ yylhsminor.yy476 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, &yymsp[-1].minor.yy701, yymsp[0].minor.yy532); } - yymsp[-4].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableAddModifyCol(pCxt, yymsp[-4].minor.yy320, TSDB_ALTER_TABLE_UPDATE_TAG_BYTES, &yymsp[-1].minor.yy815, yymsp[0].minor.yy200); } + yymsp[-4].minor.yy320 = yylhsminor.yy320; break; case 143: /* alter_table_clause ::= full_table_name RENAME TAG column_name column_name */ -{ yylhsminor.yy476 = createAlterTableRenameCol(pCxt, yymsp[-4].minor.yy476, TSDB_ALTER_TABLE_UPDATE_TAG_NAME, &yymsp[-1].minor.yy701, &yymsp[0].minor.yy701); } - yymsp[-4].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableRenameCol(pCxt, yymsp[-4].minor.yy320, TSDB_ALTER_TABLE_UPDATE_TAG_NAME, &yymsp[-1].minor.yy815, &yymsp[0].minor.yy815); } + yymsp[-4].minor.yy320 = yylhsminor.yy320; break; case 144: /* alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal */ -{ yylhsminor.yy476 = createAlterTableSetTag(pCxt, yymsp[-5].minor.yy476, &yymsp[-2].minor.yy701, yymsp[0].minor.yy476); } - yymsp[-5].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableSetTag(pCxt, yymsp[-5].minor.yy320, &yymsp[-2].minor.yy815, yymsp[0].minor.yy320); } + yymsp[-5].minor.yy320 = yylhsminor.yy320; break; case 146: /* multi_create_clause ::= multi_create_clause create_subtable_clause */ case 149: /* multi_drop_clause ::= multi_drop_clause drop_table_clause */ yytestcase(yyruleno==149); - case 421: /* when_then_list ::= when_then_list when_then_expr */ yytestcase(yyruleno==421); -{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-1].minor.yy376, yymsp[0].minor.yy476); } - yymsp[-1].minor.yy376 = yylhsminor.yy376; + case 423: /* when_then_list ::= when_then_list when_then_expr */ yytestcase(yyruleno==423); +{ yylhsminor.yy570 = addNodeToList(pCxt, yymsp[-1].minor.yy570, yymsp[0].minor.yy320); } + yymsp[-1].minor.yy570 = yylhsminor.yy570; break; case 147: /* create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_cols_opt TAGS NK_LP expression_list NK_RP table_options */ -{ yylhsminor.yy476 = createCreateSubTableClause(pCxt, yymsp[-9].minor.yy845, yymsp[-8].minor.yy476, yymsp[-6].minor.yy476, yymsp[-5].minor.yy376, yymsp[-2].minor.yy376, yymsp[0].minor.yy476); } - yymsp[-9].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createCreateSubTableClause(pCxt, yymsp[-9].minor.yy63, yymsp[-8].minor.yy320, yymsp[-6].minor.yy320, yymsp[-5].minor.yy570, yymsp[-2].minor.yy570, yymsp[0].minor.yy320); } + yymsp[-9].minor.yy320 = yylhsminor.yy320; break; case 150: /* drop_table_clause ::= exists_opt full_table_name */ -{ yylhsminor.yy476 = createDropTableClause(pCxt, yymsp[-1].minor.yy845, yymsp[0].minor.yy476); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createDropTableClause(pCxt, yymsp[-1].minor.yy63, yymsp[0].minor.yy320); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; case 151: /* specific_cols_opt ::= */ case 182: /* tags_def_opt ::= */ yytestcase(yyruleno==182); case 254: /* tag_list_opt ::= */ yytestcase(yyruleno==254); - case 484: /* partition_by_clause_opt ::= */ yytestcase(yyruleno==484); - case 507: /* group_by_clause_opt ::= */ yytestcase(yyruleno==507); - case 526: /* order_by_clause_opt ::= */ yytestcase(yyruleno==526); -{ yymsp[1].minor.yy376 = NULL; } + case 303: /* col_list_opt ::= */ yytestcase(yyruleno==303); + case 486: /* partition_by_clause_opt ::= */ yytestcase(yyruleno==486); + case 509: /* group_by_clause_opt ::= */ yytestcase(yyruleno==509); + case 528: /* order_by_clause_opt ::= */ yytestcase(yyruleno==528); +{ yymsp[1].minor.yy570 = NULL; } break; case 152: /* specific_cols_opt ::= NK_LP col_name_list NK_RP */ -{ yymsp[-2].minor.yy376 = yymsp[-1].minor.yy376; } + case 304: /* col_list_opt ::= NK_LP col_name_list NK_RP */ yytestcase(yyruleno==304); +{ yymsp[-2].minor.yy570 = yymsp[-1].minor.yy570; } break; case 153: /* full_table_name ::= table_name */ -{ yylhsminor.yy476 = createRealTableNode(pCxt, NULL, &yymsp[0].minor.yy701, NULL); } - yymsp[0].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createRealTableNode(pCxt, NULL, &yymsp[0].minor.yy815, NULL); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; case 154: /* full_table_name ::= db_name NK_DOT table_name */ -{ yylhsminor.yy476 = createRealTableNode(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701, NULL); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createRealTableNode(pCxt, &yymsp[-2].minor.yy815, &yymsp[0].minor.yy815, NULL); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 157: /* column_def ::= column_name type_name */ -{ yylhsminor.yy476 = createColumnDefNode(pCxt, &yymsp[-1].minor.yy701, yymsp[0].minor.yy532, NULL); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createColumnDefNode(pCxt, &yymsp[-1].minor.yy815, yymsp[0].minor.yy200, NULL); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; case 158: /* column_def ::= column_name type_name COMMENT NK_STRING */ -{ yylhsminor.yy476 = createColumnDefNode(pCxt, &yymsp[-3].minor.yy701, yymsp[-2].minor.yy532, &yymsp[0].minor.yy0); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createColumnDefNode(pCxt, &yymsp[-3].minor.yy815, yymsp[-2].minor.yy200, &yymsp[0].minor.yy0); } + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; case 159: /* type_name ::= BOOL */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_BOOL); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_BOOL); } break; case 160: /* type_name ::= TINYINT */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_TINYINT); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_TINYINT); } break; case 161: /* type_name ::= SMALLINT */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_SMALLINT); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_SMALLINT); } break; case 162: /* type_name ::= INT */ case 163: /* type_name ::= INTEGER */ yytestcase(yyruleno==163); -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_INT); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_INT); } break; case 164: /* type_name ::= BIGINT */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_BIGINT); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_BIGINT); } break; case 165: /* type_name ::= FLOAT */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_FLOAT); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_FLOAT); } break; case 166: /* type_name ::= DOUBLE */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_DOUBLE); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_DOUBLE); } break; case 167: /* type_name ::= BINARY NK_LP NK_INTEGER NK_RP */ -{ yymsp[-3].minor.yy532 = createVarLenDataType(TSDB_DATA_TYPE_BINARY, &yymsp[-1].minor.yy0); } +{ yymsp[-3].minor.yy200 = createVarLenDataType(TSDB_DATA_TYPE_BINARY, &yymsp[-1].minor.yy0); } break; case 168: /* type_name ::= TIMESTAMP */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_TIMESTAMP); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_TIMESTAMP); } break; case 169: /* type_name ::= NCHAR NK_LP NK_INTEGER NK_RP */ -{ yymsp[-3].minor.yy532 = createVarLenDataType(TSDB_DATA_TYPE_NCHAR, &yymsp[-1].minor.yy0); } +{ yymsp[-3].minor.yy200 = createVarLenDataType(TSDB_DATA_TYPE_NCHAR, &yymsp[-1].minor.yy0); } break; case 170: /* type_name ::= TINYINT UNSIGNED */ -{ yymsp[-1].minor.yy532 = createDataType(TSDB_DATA_TYPE_UTINYINT); } +{ yymsp[-1].minor.yy200 = createDataType(TSDB_DATA_TYPE_UTINYINT); } break; case 171: /* type_name ::= SMALLINT UNSIGNED */ -{ yymsp[-1].minor.yy532 = createDataType(TSDB_DATA_TYPE_USMALLINT); } +{ yymsp[-1].minor.yy200 = createDataType(TSDB_DATA_TYPE_USMALLINT); } break; case 172: /* type_name ::= INT UNSIGNED */ -{ yymsp[-1].minor.yy532 = createDataType(TSDB_DATA_TYPE_UINT); } +{ yymsp[-1].minor.yy200 = createDataType(TSDB_DATA_TYPE_UINT); } break; case 173: /* type_name ::= BIGINT UNSIGNED */ -{ yymsp[-1].minor.yy532 = createDataType(TSDB_DATA_TYPE_UBIGINT); } +{ yymsp[-1].minor.yy200 = createDataType(TSDB_DATA_TYPE_UBIGINT); } break; case 174: /* type_name ::= JSON */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_JSON); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_JSON); } break; case 175: /* type_name ::= VARCHAR NK_LP NK_INTEGER NK_RP */ -{ yymsp[-3].minor.yy532 = createVarLenDataType(TSDB_DATA_TYPE_VARCHAR, &yymsp[-1].minor.yy0); } +{ yymsp[-3].minor.yy200 = createVarLenDataType(TSDB_DATA_TYPE_VARCHAR, &yymsp[-1].minor.yy0); } break; case 176: /* type_name ::= MEDIUMBLOB */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_MEDIUMBLOB); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_MEDIUMBLOB); } break; case 177: /* type_name ::= BLOB */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_BLOB); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_BLOB); } break; case 178: /* type_name ::= VARBINARY NK_LP NK_INTEGER NK_RP */ -{ yymsp[-3].minor.yy532 = createVarLenDataType(TSDB_DATA_TYPE_VARBINARY, &yymsp[-1].minor.yy0); } +{ yymsp[-3].minor.yy200 = createVarLenDataType(TSDB_DATA_TYPE_VARBINARY, &yymsp[-1].minor.yy0); } break; case 179: /* type_name ::= DECIMAL */ -{ yymsp[0].minor.yy532 = createDataType(TSDB_DATA_TYPE_DECIMAL); } +{ yymsp[0].minor.yy200 = createDataType(TSDB_DATA_TYPE_DECIMAL); } break; case 180: /* type_name ::= DECIMAL NK_LP NK_INTEGER NK_RP */ -{ yymsp[-3].minor.yy532 = createDataType(TSDB_DATA_TYPE_DECIMAL); } +{ yymsp[-3].minor.yy200 = createDataType(TSDB_DATA_TYPE_DECIMAL); } break; case 181: /* type_name ::= DECIMAL NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ -{ yymsp[-5].minor.yy532 = createDataType(TSDB_DATA_TYPE_DECIMAL); } +{ yymsp[-5].minor.yy200 = createDataType(TSDB_DATA_TYPE_DECIMAL); } break; case 183: /* tags_def_opt ::= tags_def */ - case 413: /* star_func_para_list ::= other_para_list */ yytestcase(yyruleno==413); -{ yylhsminor.yy376 = yymsp[0].minor.yy376; } - yymsp[0].minor.yy376 = yylhsminor.yy376; + case 415: /* star_func_para_list ::= other_para_list */ yytestcase(yyruleno==415); +{ yylhsminor.yy570 = yymsp[0].minor.yy570; } + yymsp[0].minor.yy570 = yylhsminor.yy570; break; case 184: /* tags_def ::= TAGS NK_LP column_def_list NK_RP */ -{ yymsp[-3].minor.yy376 = yymsp[-1].minor.yy376; } +{ yymsp[-3].minor.yy570 = yymsp[-1].minor.yy570; } break; case 185: /* table_options ::= */ -{ yymsp[1].minor.yy476 = createDefaultTableOptions(pCxt); } +{ yymsp[1].minor.yy320 = createDefaultTableOptions(pCxt); } break; case 186: /* table_options ::= table_options COMMENT NK_STRING */ -{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-2].minor.yy476, TABLE_OPTION_COMMENT, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setTableOption(pCxt, yymsp[-2].minor.yy320, TABLE_OPTION_COMMENT, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 187: /* table_options ::= table_options MAX_DELAY duration_list */ -{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-2].minor.yy476, TABLE_OPTION_MAXDELAY, yymsp[0].minor.yy376); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setTableOption(pCxt, yymsp[-2].minor.yy320, TABLE_OPTION_MAXDELAY, yymsp[0].minor.yy570); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 188: /* table_options ::= table_options WATERMARK duration_list */ -{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-2].minor.yy476, TABLE_OPTION_WATERMARK, yymsp[0].minor.yy376); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setTableOption(pCxt, yymsp[-2].minor.yy320, TABLE_OPTION_WATERMARK, yymsp[0].minor.yy570); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 189: /* table_options ::= table_options ROLLUP NK_LP rollup_func_list NK_RP */ -{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-4].minor.yy476, TABLE_OPTION_ROLLUP, yymsp[-1].minor.yy376); } - yymsp[-4].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setTableOption(pCxt, yymsp[-4].minor.yy320, TABLE_OPTION_ROLLUP, yymsp[-1].minor.yy570); } + yymsp[-4].minor.yy320 = yylhsminor.yy320; break; case 190: /* table_options ::= table_options TTL NK_INTEGER */ -{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-2].minor.yy476, TABLE_OPTION_TTL, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setTableOption(pCxt, yymsp[-2].minor.yy320, TABLE_OPTION_TTL, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 191: /* table_options ::= table_options SMA NK_LP col_name_list NK_RP */ -{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-4].minor.yy476, TABLE_OPTION_SMA, yymsp[-1].minor.yy376); } - yymsp[-4].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setTableOption(pCxt, yymsp[-4].minor.yy320, TABLE_OPTION_SMA, yymsp[-1].minor.yy570); } + yymsp[-4].minor.yy320 = yylhsminor.yy320; break; case 192: /* table_options ::= table_options DELETE_MARK duration_list */ -{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-2].minor.yy476, TABLE_OPTION_DELETE_MARK, yymsp[0].minor.yy376); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setTableOption(pCxt, yymsp[-2].minor.yy320, TABLE_OPTION_DELETE_MARK, yymsp[0].minor.yy570); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 193: /* alter_table_options ::= alter_table_option */ -{ yylhsminor.yy476 = createAlterTableOptions(pCxt); yylhsminor.yy476 = setTableOption(pCxt, yylhsminor.yy476, yymsp[0].minor.yy893.type, &yymsp[0].minor.yy893.val); } - yymsp[0].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createAlterTableOptions(pCxt); yylhsminor.yy320 = setTableOption(pCxt, yylhsminor.yy320, yymsp[0].minor.yy695.type, &yymsp[0].minor.yy695.val); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; case 194: /* alter_table_options ::= alter_table_options alter_table_option */ -{ yylhsminor.yy476 = setTableOption(pCxt, yymsp[-1].minor.yy476, yymsp[0].minor.yy893.type, &yymsp[0].minor.yy893.val); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setTableOption(pCxt, yymsp[-1].minor.yy320, yymsp[0].minor.yy695.type, &yymsp[0].minor.yy695.val); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; case 195: /* alter_table_option ::= COMMENT NK_STRING */ -{ yymsp[-1].minor.yy893.type = TABLE_OPTION_COMMENT; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy695.type = TABLE_OPTION_COMMENT; yymsp[-1].minor.yy695.val = yymsp[0].minor.yy0; } break; case 196: /* alter_table_option ::= TTL NK_INTEGER */ -{ yymsp[-1].minor.yy893.type = TABLE_OPTION_TTL; yymsp[-1].minor.yy893.val = yymsp[0].minor.yy0; } +{ yymsp[-1].minor.yy695.type = TABLE_OPTION_TTL; yymsp[-1].minor.yy695.val = yymsp[0].minor.yy0; } break; case 197: /* duration_list ::= duration_literal */ - case 377: /* expression_list ::= expr_or_subquery */ yytestcase(yyruleno==377); -{ yylhsminor.yy376 = createNodeList(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy476)); } - yymsp[0].minor.yy376 = yylhsminor.yy376; + case 379: /* expression_list ::= expr_or_subquery */ yytestcase(yyruleno==379); +{ yylhsminor.yy570 = createNodeList(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy320)); } + yymsp[0].minor.yy570 = yylhsminor.yy570; break; case 198: /* duration_list ::= duration_list NK_COMMA duration_literal */ - case 378: /* expression_list ::= expression_list NK_COMMA expr_or_subquery */ yytestcase(yyruleno==378); -{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-2].minor.yy376, releaseRawExprNode(pCxt, yymsp[0].minor.yy476)); } - yymsp[-2].minor.yy376 = yylhsminor.yy376; + case 380: /* expression_list ::= expression_list NK_COMMA expr_or_subquery */ yytestcase(yyruleno==380); +{ yylhsminor.yy570 = addNodeToList(pCxt, yymsp[-2].minor.yy570, releaseRawExprNode(pCxt, yymsp[0].minor.yy320)); } + yymsp[-2].minor.yy570 = yylhsminor.yy570; break; case 201: /* rollup_func_name ::= function_name */ -{ yylhsminor.yy476 = createFunctionNode(pCxt, &yymsp[0].minor.yy701, NULL); } - yymsp[0].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createFunctionNode(pCxt, &yymsp[0].minor.yy815, NULL); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; case 202: /* rollup_func_name ::= FIRST */ case 203: /* rollup_func_name ::= LAST */ yytestcase(yyruleno==203); case 258: /* tag_item ::= QTAGS */ yytestcase(yyruleno==258); -{ yylhsminor.yy476 = createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL); } - yymsp[0].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; case 206: /* col_name ::= column_name */ case 259: /* tag_item ::= column_name */ yytestcase(yyruleno==259); -{ yylhsminor.yy476 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy701); } - yymsp[0].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy815); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; case 207: /* cmd ::= SHOW DNODES */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DNODES_STMT); } @@ -4981,13 +4972,13 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DATABASES_STMT); } break; case 211: /* cmd ::= SHOW db_name_cond_opt TABLES like_pattern_opt */ -{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TABLES_STMT, yymsp[-2].minor.yy476, yymsp[0].minor.yy476, OP_TYPE_LIKE); } +{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TABLES_STMT, yymsp[-2].minor.yy320, yymsp[0].minor.yy320, OP_TYPE_LIKE); } break; case 212: /* cmd ::= SHOW db_name_cond_opt STABLES like_pattern_opt */ -{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_STABLES_STMT, yymsp[-2].minor.yy476, yymsp[0].minor.yy476, OP_TYPE_LIKE); } +{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_STABLES_STMT, yymsp[-2].minor.yy320, yymsp[0].minor.yy320, OP_TYPE_LIKE); } break; case 213: /* cmd ::= SHOW db_name_cond_opt VGROUPS */ -{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_VGROUPS_STMT, yymsp[-1].minor.yy476, NULL, OP_TYPE_LIKE); } +{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_VGROUPS_STMT, yymsp[-1].minor.yy320, NULL, OP_TYPE_LIKE); } break; case 214: /* cmd ::= SHOW MNODES */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_MNODES_STMT); } @@ -4999,7 +4990,7 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_FUNCTIONS_STMT); } break; case 217: /* cmd ::= SHOW INDEXES FROM table_name_cond from_db_opt */ -{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_INDEXES_STMT, yymsp[0].minor.yy476, yymsp[-1].minor.yy476, OP_TYPE_EQUAL); } +{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_INDEXES_STMT, yymsp[0].minor.yy320, yymsp[-1].minor.yy320, OP_TYPE_EQUAL); } break; case 218: /* cmd ::= SHOW STREAMS */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_STREAMS_STMT); } @@ -5018,13 +5009,13 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LICENCES_STMT); } break; case 224: /* cmd ::= SHOW CREATE DATABASE db_name */ -{ pCxt->pRootNode = createShowCreateDatabaseStmt(pCxt, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createShowCreateDatabaseStmt(pCxt, &yymsp[0].minor.yy815); } break; case 225: /* cmd ::= SHOW CREATE TABLE full_table_name */ -{ pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_TABLE_STMT, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_TABLE_STMT, yymsp[0].minor.yy320); } break; case 226: /* cmd ::= SHOW CREATE STABLE full_table_name */ -{ pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_STABLE_STMT, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createShowCreateTableStmt(pCxt, QUERY_NODE_SHOW_CREATE_STABLE_STMT, yymsp[0].minor.yy320); } break; case 227: /* cmd ::= SHOW QUERIES */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_QUERIES_STMT); } @@ -5043,7 +5034,7 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT); } break; case 233: /* cmd ::= SHOW DNODE NK_INTEGER VARIABLES like_pattern_opt */ -{ pCxt->pRootNode = createShowDnodeVariablesStmt(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[-2].minor.yy0), yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createShowDnodeVariablesStmt(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[-2].minor.yy0), yymsp[0].minor.yy320); } break; case 234: /* cmd ::= SHOW BNODES */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_BNODES_STMT); } @@ -5058,7 +5049,7 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_TRANSACTIONS_STMT); } break; case 238: /* cmd ::= SHOW TABLE DISTRIBUTED full_table_name */ -{ pCxt->pRootNode = createShowTableDistributedStmt(pCxt, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createShowTableDistributedStmt(pCxt, yymsp[0].minor.yy320); } break; case 239: /* cmd ::= SHOW CONSUMERS */ { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_CONSUMERS_STMT); } @@ -5067,10 +5058,10 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT); } break; case 241: /* cmd ::= SHOW TAGS FROM table_name_cond from_db_opt */ -{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TAGS_STMT, yymsp[0].minor.yy476, yymsp[-1].minor.yy476, OP_TYPE_EQUAL); } +{ pCxt->pRootNode = createShowStmtWithCond(pCxt, QUERY_NODE_SHOW_TAGS_STMT, yymsp[0].minor.yy320, yymsp[-1].minor.yy320, OP_TYPE_EQUAL); } break; case 242: /* cmd ::= SHOW TABLE TAGS tag_list_opt FROM table_name_cond from_db_opt */ -{ pCxt->pRootNode = createShowTableTagsStmt(pCxt, yymsp[-1].minor.yy476, yymsp[0].minor.yy476, yymsp[-3].minor.yy376); } +{ pCxt->pRootNode = createShowTableTagsStmt(pCxt, yymsp[-1].minor.yy320, yymsp[0].minor.yy320, yymsp[-3].minor.yy570); } break; case 243: /* cmd ::= SHOW VNODES NK_INTEGER */ { pCxt->pRootNode = createShowVnodesStmt(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0), NULL); } @@ -5079,747 +5070,747 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createShowVnodesStmt(pCxt, NULL, createValueNode(pCxt, TSDB_DATA_TYPE_VARCHAR, &yymsp[0].minor.yy0)); } break; case 245: /* cmd ::= SHOW db_name_cond_opt ALIVE */ -{ pCxt->pRootNode = createShowAliveStmt(pCxt, yymsp[-1].minor.yy476, QUERY_NODE_SHOW_DB_ALIVE_STMT); } +{ pCxt->pRootNode = createShowAliveStmt(pCxt, yymsp[-1].minor.yy320, QUERY_NODE_SHOW_DB_ALIVE_STMT); } break; case 246: /* cmd ::= SHOW CLUSTER ALIVE */ { pCxt->pRootNode = createShowAliveStmt(pCxt, NULL, QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT); } break; case 247: /* db_name_cond_opt ::= */ case 252: /* from_db_opt ::= */ yytestcase(yyruleno==252); -{ yymsp[1].minor.yy476 = createDefaultDatabaseCondValue(pCxt); } +{ yymsp[1].minor.yy320 = createDefaultDatabaseCondValue(pCxt); } break; case 248: /* db_name_cond_opt ::= db_name NK_DOT */ -{ yylhsminor.yy476 = createIdentifierValueNode(pCxt, &yymsp[-1].minor.yy701); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createIdentifierValueNode(pCxt, &yymsp[-1].minor.yy815); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; case 249: /* like_pattern_opt ::= */ - case 310: /* subtable_opt ::= */ yytestcase(yyruleno==310); - case 423: /* case_when_else_opt ::= */ yytestcase(yyruleno==423); - case 453: /* from_clause_opt ::= */ yytestcase(yyruleno==453); - case 482: /* where_clause_opt ::= */ yytestcase(yyruleno==482); - case 491: /* twindow_clause_opt ::= */ yytestcase(yyruleno==491); - case 497: /* sliding_opt ::= */ yytestcase(yyruleno==497); - case 499: /* fill_opt ::= */ yytestcase(yyruleno==499); - case 511: /* having_clause_opt ::= */ yytestcase(yyruleno==511); - case 513: /* range_opt ::= */ yytestcase(yyruleno==513); - case 515: /* every_opt ::= */ yytestcase(yyruleno==515); - case 528: /* slimit_clause_opt ::= */ yytestcase(yyruleno==528); - case 532: /* limit_clause_opt ::= */ yytestcase(yyruleno==532); -{ yymsp[1].minor.yy476 = NULL; } + case 312: /* subtable_opt ::= */ yytestcase(yyruleno==312); + case 425: /* case_when_else_opt ::= */ yytestcase(yyruleno==425); + case 455: /* from_clause_opt ::= */ yytestcase(yyruleno==455); + case 484: /* where_clause_opt ::= */ yytestcase(yyruleno==484); + case 493: /* twindow_clause_opt ::= */ yytestcase(yyruleno==493); + case 499: /* sliding_opt ::= */ yytestcase(yyruleno==499); + case 501: /* fill_opt ::= */ yytestcase(yyruleno==501); + case 513: /* having_clause_opt ::= */ yytestcase(yyruleno==513); + case 515: /* range_opt ::= */ yytestcase(yyruleno==515); + case 517: /* every_opt ::= */ yytestcase(yyruleno==517); + case 530: /* slimit_clause_opt ::= */ yytestcase(yyruleno==530); + case 534: /* limit_clause_opt ::= */ yytestcase(yyruleno==534); +{ yymsp[1].minor.yy320 = NULL; } break; case 250: /* like_pattern_opt ::= LIKE NK_STRING */ -{ yymsp[-1].minor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } +{ yymsp[-1].minor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } break; case 251: /* table_name_cond ::= table_name */ -{ yylhsminor.yy476 = createIdentifierValueNode(pCxt, &yymsp[0].minor.yy701); } - yymsp[0].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createIdentifierValueNode(pCxt, &yymsp[0].minor.yy815); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; case 253: /* from_db_opt ::= FROM db_name */ -{ yymsp[-1].minor.yy476 = createIdentifierValueNode(pCxt, &yymsp[0].minor.yy701); } +{ yymsp[-1].minor.yy320 = createIdentifierValueNode(pCxt, &yymsp[0].minor.yy815); } break; case 257: /* tag_item ::= TBNAME */ -{ yylhsminor.yy476 = setProjectionAlias(pCxt, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL), &yymsp[0].minor.yy0); } - yymsp[0].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setProjectionAlias(pCxt, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL), &yymsp[0].minor.yy0); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; case 260: /* tag_item ::= column_name column_alias */ -{ yylhsminor.yy476 = setProjectionAlias(pCxt, createColumnNode(pCxt, NULL, &yymsp[-1].minor.yy701), &yymsp[0].minor.yy701); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setProjectionAlias(pCxt, createColumnNode(pCxt, NULL, &yymsp[-1].minor.yy815), &yymsp[0].minor.yy815); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; case 261: /* tag_item ::= column_name AS column_alias */ -{ yylhsminor.yy476 = setProjectionAlias(pCxt, createColumnNode(pCxt, NULL, &yymsp[-2].minor.yy701), &yymsp[0].minor.yy701); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setProjectionAlias(pCxt, createColumnNode(pCxt, NULL, &yymsp[-2].minor.yy815), &yymsp[0].minor.yy815); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 262: /* cmd ::= CREATE SMA INDEX not_exists_opt full_table_name ON full_table_name index_options */ -{ pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_SMA, yymsp[-4].minor.yy845, yymsp[-3].minor.yy476, yymsp[-1].minor.yy476, NULL, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_SMA, yymsp[-4].minor.yy63, yymsp[-3].minor.yy320, yymsp[-1].minor.yy320, NULL, yymsp[0].minor.yy320); } break; case 263: /* cmd ::= CREATE INDEX not_exists_opt full_table_name ON full_table_name NK_LP col_name_list NK_RP */ -{ pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_NORMAL, yymsp[-6].minor.yy845, yymsp[-5].minor.yy476, yymsp[-3].minor.yy476, yymsp[-1].minor.yy376, NULL); } +{ pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_NORMAL, yymsp[-6].minor.yy63, yymsp[-5].minor.yy320, yymsp[-3].minor.yy320, yymsp[-1].minor.yy570, NULL); } break; case 264: /* cmd ::= DROP INDEX exists_opt full_table_name */ -{ pCxt->pRootNode = createDropIndexStmt(pCxt, yymsp[-1].minor.yy845, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createDropIndexStmt(pCxt, yymsp[-1].minor.yy63, yymsp[0].minor.yy320); } break; case 265: /* index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_RP sliding_opt sma_stream_opt */ -{ yymsp[-9].minor.yy476 = createIndexOption(pCxt, yymsp[-7].minor.yy376, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), NULL, yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } +{ yymsp[-9].minor.yy320 = createIndexOption(pCxt, yymsp[-7].minor.yy570, releaseRawExprNode(pCxt, yymsp[-3].minor.yy320), NULL, yymsp[-1].minor.yy320, yymsp[0].minor.yy320); } break; case 266: /* index_options ::= FUNCTION NK_LP func_list NK_RP INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt sma_stream_opt */ -{ yymsp[-11].minor.yy476 = createIndexOption(pCxt, yymsp[-9].minor.yy376, releaseRawExprNode(pCxt, yymsp[-5].minor.yy476), releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } +{ yymsp[-11].minor.yy320 = createIndexOption(pCxt, yymsp[-9].minor.yy570, releaseRawExprNode(pCxt, yymsp[-5].minor.yy320), releaseRawExprNode(pCxt, yymsp[-3].minor.yy320), yymsp[-1].minor.yy320, yymsp[0].minor.yy320); } break; case 269: /* func ::= sma_func_name NK_LP expression_list NK_RP */ -{ yylhsminor.yy476 = createFunctionNode(pCxt, &yymsp[-3].minor.yy701, yymsp[-1].minor.yy376); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = createFunctionNode(pCxt, &yymsp[-3].minor.yy815, yymsp[-1].minor.yy570); } + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; case 275: /* sma_stream_opt ::= */ - case 303: /* stream_options ::= */ yytestcase(yyruleno==303); -{ yymsp[1].minor.yy476 = createStreamOptions(pCxt); } + case 305: /* stream_options ::= */ yytestcase(yyruleno==305); +{ yymsp[1].minor.yy320 = createStreamOptions(pCxt); } break; case 276: /* sma_stream_opt ::= sma_stream_opt WATERMARK duration_literal */ - case 307: /* stream_options ::= stream_options WATERMARK duration_literal */ yytestcase(yyruleno==307); -{ ((SStreamOptions*)yymsp[-2].minor.yy476)->pWatermark = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); yylhsminor.yy476 = yymsp[-2].minor.yy476; } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 309: /* stream_options ::= stream_options WATERMARK duration_literal */ yytestcase(yyruleno==309); +{ ((SStreamOptions*)yymsp[-2].minor.yy320)->pWatermark = releaseRawExprNode(pCxt, yymsp[0].minor.yy320); yylhsminor.yy320 = yymsp[-2].minor.yy320; } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 277: /* sma_stream_opt ::= sma_stream_opt MAX_DELAY duration_literal */ -{ ((SStreamOptions*)yymsp[-2].minor.yy476)->pDelay = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); yylhsminor.yy476 = yymsp[-2].minor.yy476; } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ ((SStreamOptions*)yymsp[-2].minor.yy320)->pDelay = releaseRawExprNode(pCxt, yymsp[0].minor.yy320); yylhsminor.yy320 = yymsp[-2].minor.yy320; } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 278: /* sma_stream_opt ::= sma_stream_opt DELETE_MARK duration_literal */ -{ ((SStreamOptions*)yymsp[-2].minor.yy476)->pDeleteMark = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); yylhsminor.yy476 = yymsp[-2].minor.yy476; } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ ((SStreamOptions*)yymsp[-2].minor.yy320)->pDeleteMark = releaseRawExprNode(pCxt, yymsp[0].minor.yy320); yylhsminor.yy320 = yymsp[-2].minor.yy320; } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 279: /* cmd ::= CREATE TOPIC not_exists_opt topic_name AS query_or_subquery */ -{ pCxt->pRootNode = createCreateTopicStmtUseQuery(pCxt, yymsp[-3].minor.yy845, &yymsp[-2].minor.yy701, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createCreateTopicStmtUseQuery(pCxt, yymsp[-3].minor.yy63, &yymsp[-2].minor.yy815, yymsp[0].minor.yy320); } break; case 280: /* cmd ::= CREATE TOPIC not_exists_opt topic_name AS DATABASE db_name */ -{ pCxt->pRootNode = createCreateTopicStmtUseDb(pCxt, yymsp[-4].minor.yy845, &yymsp[-3].minor.yy701, &yymsp[0].minor.yy701, false); } +{ pCxt->pRootNode = createCreateTopicStmtUseDb(pCxt, yymsp[-4].minor.yy63, &yymsp[-3].minor.yy815, &yymsp[0].minor.yy815, false); } break; case 281: /* cmd ::= CREATE TOPIC not_exists_opt topic_name WITH META AS DATABASE db_name */ -{ pCxt->pRootNode = createCreateTopicStmtUseDb(pCxt, yymsp[-6].minor.yy845, &yymsp[-5].minor.yy701, &yymsp[0].minor.yy701, true); } +{ pCxt->pRootNode = createCreateTopicStmtUseDb(pCxt, yymsp[-6].minor.yy63, &yymsp[-5].minor.yy815, &yymsp[0].minor.yy815, true); } break; case 282: /* cmd ::= CREATE TOPIC not_exists_opt topic_name AS STABLE full_table_name */ -{ pCxt->pRootNode = createCreateTopicStmtUseTable(pCxt, yymsp[-4].minor.yy845, &yymsp[-3].minor.yy701, yymsp[0].minor.yy476, false); } +{ pCxt->pRootNode = createCreateTopicStmtUseTable(pCxt, yymsp[-4].minor.yy63, &yymsp[-3].minor.yy815, yymsp[0].minor.yy320, false); } break; case 283: /* cmd ::= CREATE TOPIC not_exists_opt topic_name WITH META AS STABLE full_table_name */ -{ pCxt->pRootNode = createCreateTopicStmtUseTable(pCxt, yymsp[-6].minor.yy845, &yymsp[-5].minor.yy701, yymsp[0].minor.yy476, true); } +{ pCxt->pRootNode = createCreateTopicStmtUseTable(pCxt, yymsp[-6].minor.yy63, &yymsp[-5].minor.yy815, yymsp[0].minor.yy320, true); } break; case 284: /* cmd ::= DROP TOPIC exists_opt topic_name */ -{ pCxt->pRootNode = createDropTopicStmt(pCxt, yymsp[-1].minor.yy845, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createDropTopicStmt(pCxt, yymsp[-1].minor.yy63, &yymsp[0].minor.yy815); } break; case 285: /* cmd ::= DROP CONSUMER GROUP exists_opt cgroup_name ON topic_name */ -{ pCxt->pRootNode = createDropCGroupStmt(pCxt, yymsp[-3].minor.yy845, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createDropCGroupStmt(pCxt, yymsp[-3].minor.yy63, &yymsp[-2].minor.yy815, &yymsp[0].minor.yy815); } break; case 286: /* cmd ::= DESC full_table_name */ case 287: /* cmd ::= DESCRIBE full_table_name */ yytestcase(yyruleno==287); -{ pCxt->pRootNode = createDescribeStmt(pCxt, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createDescribeStmt(pCxt, yymsp[0].minor.yy320); } break; case 288: /* cmd ::= RESET QUERY CACHE */ { pCxt->pRootNode = createResetQueryCacheStmt(pCxt); } break; case 289: /* cmd ::= EXPLAIN analyze_opt explain_options query_or_subquery */ -{ pCxt->pRootNode = createExplainStmt(pCxt, yymsp[-2].minor.yy845, yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } +{ pCxt->pRootNode = createExplainStmt(pCxt, yymsp[-2].minor.yy63, yymsp[-1].minor.yy320, yymsp[0].minor.yy320); } break; case 292: /* explain_options ::= */ -{ yymsp[1].minor.yy476 = createDefaultExplainOptions(pCxt); } +{ yymsp[1].minor.yy320 = createDefaultExplainOptions(pCxt); } break; case 293: /* explain_options ::= explain_options VERBOSE NK_BOOL */ -{ yylhsminor.yy476 = setExplainVerbose(pCxt, yymsp[-2].minor.yy476, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setExplainVerbose(pCxt, yymsp[-2].minor.yy320, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 294: /* explain_options ::= explain_options RATIO NK_FLOAT */ -{ yylhsminor.yy476 = setExplainRatio(pCxt, yymsp[-2].minor.yy476, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; +{ yylhsminor.yy320 = setExplainRatio(pCxt, yymsp[-2].minor.yy320, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; case 295: /* cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt */ -{ pCxt->pRootNode = createCreateFunctionStmt(pCxt, yymsp[-6].minor.yy845, yymsp[-8].minor.yy845, &yymsp[-5].minor.yy701, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy532, yymsp[0].minor.yy508); } +{ pCxt->pRootNode = createCreateFunctionStmt(pCxt, yymsp[-6].minor.yy63, yymsp[-8].minor.yy63, &yymsp[-5].minor.yy815, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy200, yymsp[0].minor.yy122); } break; case 296: /* cmd ::= DROP FUNCTION exists_opt function_name */ -{ pCxt->pRootNode = createDropFunctionStmt(pCxt, yymsp[-1].minor.yy845, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createDropFunctionStmt(pCxt, yymsp[-1].minor.yy63, &yymsp[0].minor.yy815); } break; - case 301: /* cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name tags_def_opt subtable_opt AS query_or_subquery */ -{ pCxt->pRootNode = createCreateStreamStmt(pCxt, yymsp[-8].minor.yy845, &yymsp[-7].minor.yy701, yymsp[-4].minor.yy476, yymsp[-6].minor.yy476, yymsp[-3].minor.yy376, yymsp[-2].minor.yy476, yymsp[0].minor.yy476); } + case 301: /* cmd ::= CREATE STREAM not_exists_opt stream_name stream_options INTO full_table_name col_list_opt tags_def_opt subtable_opt AS query_or_subquery */ +{ pCxt->pRootNode = createCreateStreamStmt(pCxt, yymsp[-9].minor.yy63, &yymsp[-8].minor.yy815, yymsp[-5].minor.yy320, yymsp[-7].minor.yy320, yymsp[-3].minor.yy570, yymsp[-2].minor.yy320, yymsp[0].minor.yy320, yymsp[-4].minor.yy570); } break; case 302: /* cmd ::= DROP STREAM exists_opt stream_name */ -{ pCxt->pRootNode = createDropStreamStmt(pCxt, yymsp[-1].minor.yy845, &yymsp[0].minor.yy701); } +{ pCxt->pRootNode = createDropStreamStmt(pCxt, yymsp[-1].minor.yy63, &yymsp[0].minor.yy815); } break; - case 304: /* stream_options ::= stream_options TRIGGER AT_ONCE */ -{ ((SStreamOptions*)yymsp[-2].minor.yy476)->triggerType = STREAM_TRIGGER_AT_ONCE; yylhsminor.yy476 = yymsp[-2].minor.yy476; } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 306: /* stream_options ::= stream_options TRIGGER AT_ONCE */ +{ ((SStreamOptions*)yymsp[-2].minor.yy320)->triggerType = STREAM_TRIGGER_AT_ONCE; yylhsminor.yy320 = yymsp[-2].minor.yy320; } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 305: /* stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ -{ ((SStreamOptions*)yymsp[-2].minor.yy476)->triggerType = STREAM_TRIGGER_WINDOW_CLOSE; yylhsminor.yy476 = yymsp[-2].minor.yy476; } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 307: /* stream_options ::= stream_options TRIGGER WINDOW_CLOSE */ +{ ((SStreamOptions*)yymsp[-2].minor.yy320)->triggerType = STREAM_TRIGGER_WINDOW_CLOSE; yylhsminor.yy320 = yymsp[-2].minor.yy320; } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 306: /* stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ -{ ((SStreamOptions*)yymsp[-3].minor.yy476)->triggerType = STREAM_TRIGGER_MAX_DELAY; ((SStreamOptions*)yymsp[-3].minor.yy476)->pDelay = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); yylhsminor.yy476 = yymsp[-3].minor.yy476; } - yymsp[-3].minor.yy476 = yylhsminor.yy476; + case 308: /* stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */ +{ ((SStreamOptions*)yymsp[-3].minor.yy320)->triggerType = STREAM_TRIGGER_MAX_DELAY; ((SStreamOptions*)yymsp[-3].minor.yy320)->pDelay = releaseRawExprNode(pCxt, yymsp[0].minor.yy320); yylhsminor.yy320 = yymsp[-3].minor.yy320; } + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; - case 308: /* stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER */ -{ ((SStreamOptions*)yymsp[-3].minor.yy476)->ignoreExpired = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); yylhsminor.yy476 = yymsp[-3].minor.yy476; } - yymsp[-3].minor.yy476 = yylhsminor.yy476; + case 310: /* stream_options ::= stream_options IGNORE EXPIRED NK_INTEGER */ +{ ((SStreamOptions*)yymsp[-3].minor.yy320)->ignoreExpired = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); yylhsminor.yy320 = yymsp[-3].minor.yy320; } + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; - case 309: /* stream_options ::= stream_options FILL_HISTORY NK_INTEGER */ -{ ((SStreamOptions*)yymsp[-2].minor.yy476)->fillHistory = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); yylhsminor.yy476 = yymsp[-2].minor.yy476; } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 311: /* stream_options ::= stream_options FILL_HISTORY NK_INTEGER */ +{ ((SStreamOptions*)yymsp[-2].minor.yy320)->fillHistory = taosStr2Int8(yymsp[0].minor.yy0.z, NULL, 10); yylhsminor.yy320 = yymsp[-2].minor.yy320; } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 311: /* subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ - case 498: /* sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */ yytestcase(yyruleno==498); - case 516: /* every_opt ::= EVERY NK_LP duration_literal NK_RP */ yytestcase(yyruleno==516); -{ yymsp[-3].minor.yy476 = releaseRawExprNode(pCxt, yymsp[-1].minor.yy476); } + case 313: /* subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ + case 500: /* sliding_opt ::= SLIDING NK_LP duration_literal NK_RP */ yytestcase(yyruleno==500); + case 518: /* every_opt ::= EVERY NK_LP duration_literal NK_RP */ yytestcase(yyruleno==518); +{ yymsp[-3].minor.yy320 = releaseRawExprNode(pCxt, yymsp[-1].minor.yy320); } break; - case 312: /* cmd ::= KILL CONNECTION NK_INTEGER */ + case 314: /* cmd ::= KILL CONNECTION NK_INTEGER */ { pCxt->pRootNode = createKillStmt(pCxt, QUERY_NODE_KILL_CONNECTION_STMT, &yymsp[0].minor.yy0); } break; - case 313: /* cmd ::= KILL QUERY NK_STRING */ + case 315: /* cmd ::= KILL QUERY NK_STRING */ { pCxt->pRootNode = createKillQueryStmt(pCxt, &yymsp[0].minor.yy0); } break; - case 314: /* cmd ::= KILL TRANSACTION NK_INTEGER */ + case 316: /* cmd ::= KILL TRANSACTION NK_INTEGER */ { pCxt->pRootNode = createKillStmt(pCxt, QUERY_NODE_KILL_TRANSACTION_STMT, &yymsp[0].minor.yy0); } break; - case 315: /* cmd ::= BALANCE VGROUP */ + case 317: /* cmd ::= BALANCE VGROUP */ { pCxt->pRootNode = createBalanceVgroupStmt(pCxt); } break; - case 316: /* cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ + case 318: /* cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ { pCxt->pRootNode = createMergeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } break; - case 317: /* cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ -{ pCxt->pRootNode = createRedistributeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy376); } + case 319: /* cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ +{ pCxt->pRootNode = createRedistributeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy570); } break; - case 318: /* cmd ::= SPLIT VGROUP NK_INTEGER */ + case 320: /* cmd ::= SPLIT VGROUP NK_INTEGER */ { pCxt->pRootNode = createSplitVgroupStmt(pCxt, &yymsp[0].minor.yy0); } break; - case 319: /* dnode_list ::= DNODE NK_INTEGER */ -{ yymsp[-1].minor.yy376 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } + case 321: /* dnode_list ::= DNODE NK_INTEGER */ +{ yymsp[-1].minor.yy570 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } break; - case 321: /* cmd ::= DELETE FROM full_table_name where_clause_opt */ -{ pCxt->pRootNode = createDeleteStmt(pCxt, yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } + case 323: /* cmd ::= DELETE FROM full_table_name where_clause_opt */ +{ pCxt->pRootNode = createDeleteStmt(pCxt, yymsp[-1].minor.yy320, yymsp[0].minor.yy320); } break; - case 323: /* cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ -{ pCxt->pRootNode = createInsertStmt(pCxt, yymsp[-4].minor.yy476, yymsp[-2].minor.yy376, yymsp[0].minor.yy476); } + case 325: /* cmd ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ +{ pCxt->pRootNode = createInsertStmt(pCxt, yymsp[-4].minor.yy320, yymsp[-2].minor.yy570, yymsp[0].minor.yy320); } break; - case 324: /* cmd ::= INSERT INTO full_table_name query_or_subquery */ -{ pCxt->pRootNode = createInsertStmt(pCxt, yymsp[-1].minor.yy476, NULL, yymsp[0].minor.yy476); } + case 326: /* cmd ::= INSERT INTO full_table_name query_or_subquery */ +{ pCxt->pRootNode = createInsertStmt(pCxt, yymsp[-1].minor.yy320, NULL, yymsp[0].minor.yy320); } break; - case 325: /* literal ::= NK_INTEGER */ -{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 327: /* literal ::= NK_INTEGER */ +{ yylhsminor.yy320 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 326: /* literal ::= NK_FLOAT */ -{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 328: /* literal ::= NK_FLOAT */ +{ yylhsminor.yy320 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 327: /* literal ::= NK_STRING */ -{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 329: /* literal ::= NK_STRING */ +{ yylhsminor.yy320 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 328: /* literal ::= NK_BOOL */ -{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 330: /* literal ::= NK_BOOL */ +{ yylhsminor.yy320 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 329: /* literal ::= TIMESTAMP NK_STRING */ -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0)); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; + case 331: /* literal ::= TIMESTAMP NK_STRING */ +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0)); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 330: /* literal ::= duration_literal */ - case 340: /* signed_literal ::= signed */ yytestcase(yyruleno==340); - case 360: /* expr_or_subquery ::= expression */ yytestcase(yyruleno==360); - case 361: /* expression ::= literal */ yytestcase(yyruleno==361); - case 362: /* expression ::= pseudo_column */ yytestcase(yyruleno==362); - case 363: /* expression ::= column_reference */ yytestcase(yyruleno==363); - case 364: /* expression ::= function_expression */ yytestcase(yyruleno==364); - case 365: /* expression ::= case_when_expression */ yytestcase(yyruleno==365); - case 396: /* function_expression ::= literal_func */ yytestcase(yyruleno==396); - case 445: /* boolean_value_expression ::= boolean_primary */ yytestcase(yyruleno==445); - case 449: /* boolean_primary ::= predicate */ yytestcase(yyruleno==449); - case 451: /* common_expression ::= expr_or_subquery */ yytestcase(yyruleno==451); - case 452: /* common_expression ::= boolean_value_expression */ yytestcase(yyruleno==452); - case 455: /* table_reference_list ::= table_reference */ yytestcase(yyruleno==455); - case 457: /* table_reference ::= table_primary */ yytestcase(yyruleno==457); - case 458: /* table_reference ::= joined_table */ yytestcase(yyruleno==458); - case 462: /* table_primary ::= parenthesized_joined_table */ yytestcase(yyruleno==462); - case 518: /* query_simple ::= query_specification */ yytestcase(yyruleno==518); - case 519: /* query_simple ::= union_query_expression */ yytestcase(yyruleno==519); - case 522: /* query_simple_or_subquery ::= query_simple */ yytestcase(yyruleno==522); - case 524: /* query_or_subquery ::= query_expression */ yytestcase(yyruleno==524); -{ yylhsminor.yy476 = yymsp[0].minor.yy476; } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 332: /* literal ::= duration_literal */ + case 342: /* signed_literal ::= signed */ yytestcase(yyruleno==342); + case 362: /* expr_or_subquery ::= expression */ yytestcase(yyruleno==362); + case 363: /* expression ::= literal */ yytestcase(yyruleno==363); + case 364: /* expression ::= pseudo_column */ yytestcase(yyruleno==364); + case 365: /* expression ::= column_reference */ yytestcase(yyruleno==365); + case 366: /* expression ::= function_expression */ yytestcase(yyruleno==366); + case 367: /* expression ::= case_when_expression */ yytestcase(yyruleno==367); + case 398: /* function_expression ::= literal_func */ yytestcase(yyruleno==398); + case 447: /* boolean_value_expression ::= boolean_primary */ yytestcase(yyruleno==447); + case 451: /* boolean_primary ::= predicate */ yytestcase(yyruleno==451); + case 453: /* common_expression ::= expr_or_subquery */ yytestcase(yyruleno==453); + case 454: /* common_expression ::= boolean_value_expression */ yytestcase(yyruleno==454); + case 457: /* table_reference_list ::= table_reference */ yytestcase(yyruleno==457); + case 459: /* table_reference ::= table_primary */ yytestcase(yyruleno==459); + case 460: /* table_reference ::= joined_table */ yytestcase(yyruleno==460); + case 464: /* table_primary ::= parenthesized_joined_table */ yytestcase(yyruleno==464); + case 520: /* query_simple ::= query_specification */ yytestcase(yyruleno==520); + case 521: /* query_simple ::= union_query_expression */ yytestcase(yyruleno==521); + case 524: /* query_simple_or_subquery ::= query_simple */ yytestcase(yyruleno==524); + case 526: /* query_or_subquery ::= query_expression */ yytestcase(yyruleno==526); +{ yylhsminor.yy320 = yymsp[0].minor.yy320; } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 331: /* literal ::= NULL */ -{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 333: /* literal ::= NULL */ +{ yylhsminor.yy320 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 332: /* literal ::= NK_QUESTION */ -{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 334: /* literal ::= NK_QUESTION */ +{ yylhsminor.yy320 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 333: /* duration_literal ::= NK_VARIABLE */ -{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 335: /* duration_literal ::= NK_VARIABLE */ +{ yylhsminor.yy320 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 334: /* signed ::= NK_INTEGER */ -{ yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 336: /* signed ::= NK_INTEGER */ +{ yylhsminor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 335: /* signed ::= NK_PLUS NK_INTEGER */ -{ yymsp[-1].minor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } + case 337: /* signed ::= NK_PLUS NK_INTEGER */ +{ yymsp[-1].minor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } break; - case 336: /* signed ::= NK_MINUS NK_INTEGER */ + case 338: /* signed ::= NK_MINUS NK_INTEGER */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; - yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &t); + yylhsminor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &t); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 337: /* signed ::= NK_FLOAT */ -{ yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 339: /* signed ::= NK_FLOAT */ +{ yylhsminor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 338: /* signed ::= NK_PLUS NK_FLOAT */ -{ yymsp[-1].minor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } + case 340: /* signed ::= NK_PLUS NK_FLOAT */ +{ yymsp[-1].minor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } break; - case 339: /* signed ::= NK_MINUS NK_FLOAT */ + case 341: /* signed ::= NK_MINUS NK_FLOAT */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; - yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &t); + yylhsminor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &t); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 341: /* signed_literal ::= NK_STRING */ -{ yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 343: /* signed_literal ::= NK_STRING */ +{ yylhsminor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 342: /* signed_literal ::= NK_BOOL */ -{ yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 344: /* signed_literal ::= NK_BOOL */ +{ yylhsminor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 343: /* signed_literal ::= TIMESTAMP NK_STRING */ -{ yymsp[-1].minor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0); } + case 345: /* signed_literal ::= TIMESTAMP NK_STRING */ +{ yymsp[-1].minor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0); } break; - case 344: /* signed_literal ::= duration_literal */ - case 346: /* signed_literal ::= literal_func */ yytestcase(yyruleno==346); - case 416: /* star_func_para ::= expr_or_subquery */ yytestcase(yyruleno==416); - case 478: /* select_item ::= common_expression */ yytestcase(yyruleno==478); - case 488: /* partition_item ::= expr_or_subquery */ yytestcase(yyruleno==488); - case 523: /* query_simple_or_subquery ::= subquery */ yytestcase(yyruleno==523); - case 525: /* query_or_subquery ::= subquery */ yytestcase(yyruleno==525); - case 538: /* search_condition ::= common_expression */ yytestcase(yyruleno==538); -{ yylhsminor.yy476 = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 346: /* signed_literal ::= duration_literal */ + case 348: /* signed_literal ::= literal_func */ yytestcase(yyruleno==348); + case 418: /* star_func_para ::= expr_or_subquery */ yytestcase(yyruleno==418); + case 480: /* select_item ::= common_expression */ yytestcase(yyruleno==480); + case 490: /* partition_item ::= expr_or_subquery */ yytestcase(yyruleno==490); + case 525: /* query_simple_or_subquery ::= subquery */ yytestcase(yyruleno==525); + case 527: /* query_or_subquery ::= subquery */ yytestcase(yyruleno==527); + case 540: /* search_condition ::= common_expression */ yytestcase(yyruleno==540); +{ yylhsminor.yy320 = releaseRawExprNode(pCxt, yymsp[0].minor.yy320); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 345: /* signed_literal ::= NULL */ -{ yylhsminor.yy476 = createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 347: /* signed_literal ::= NULL */ +{ yylhsminor.yy320 = createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 347: /* signed_literal ::= NK_QUESTION */ -{ yylhsminor.yy476 = createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 349: /* signed_literal ::= NK_QUESTION */ +{ yylhsminor.yy320 = createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 366: /* expression ::= NK_LP expression NK_RP */ - case 450: /* boolean_primary ::= NK_LP boolean_value_expression NK_RP */ yytestcase(yyruleno==450); - case 537: /* subquery ::= NK_LP subquery NK_RP */ yytestcase(yyruleno==537); -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, releaseRawExprNode(pCxt, yymsp[-1].minor.yy476)); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 368: /* expression ::= NK_LP expression NK_RP */ + case 452: /* boolean_primary ::= NK_LP boolean_value_expression NK_RP */ yytestcase(yyruleno==452); + case 539: /* subquery ::= NK_LP subquery NK_RP */ yytestcase(yyruleno==539); +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, releaseRawExprNode(pCxt, yymsp[-1].minor.yy320)); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 367: /* expression ::= NK_PLUS expr_or_subquery */ + case 369: /* expression ::= NK_PLUS expr_or_subquery */ { - SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, releaseRawExprNode(pCxt, yymsp[0].minor.yy476)); + SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, releaseRawExprNode(pCxt, yymsp[0].minor.yy320)); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 368: /* expression ::= NK_MINUS expr_or_subquery */ + case 370: /* expression ::= NK_MINUS expr_or_subquery */ { - SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, createOperatorNode(pCxt, OP_TYPE_MINUS, releaseRawExprNode(pCxt, yymsp[0].minor.yy476), NULL)); + SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, createOperatorNode(pCxt, OP_TYPE_MINUS, releaseRawExprNode(pCxt, yymsp[0].minor.yy320), NULL)); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 369: /* expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ + case 371: /* expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_ADD, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_ADD, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 370: /* expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ + case 372: /* expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_SUB, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_SUB, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 371: /* expression ::= expr_or_subquery NK_STAR expr_or_subquery */ + case 373: /* expression ::= expr_or_subquery NK_STAR expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_MULTI, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_MULTI, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 372: /* expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ + case 374: /* expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_DIV, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_DIV, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 373: /* expression ::= expr_or_subquery NK_REM expr_or_subquery */ + case 375: /* expression ::= expr_or_subquery NK_REM expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_REM, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_REM, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 374: /* expression ::= column_reference NK_ARROW NK_STRING */ + case 376: /* expression ::= column_reference NK_ARROW NK_STRING */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_JSON_GET_VALUE, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_JSON_GET_VALUE, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 375: /* expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ + case 377: /* expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_BIT_AND, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_BIT_AND, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 376: /* expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ + case 378: /* expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_BIT_OR, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, OP_TYPE_BIT_OR, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 379: /* column_reference ::= column_name */ -{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy701, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy701)); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 381: /* column_reference ::= column_name */ +{ yylhsminor.yy320 = createRawExprNode(pCxt, &yymsp[0].minor.yy815, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy815)); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 380: /* column_reference ::= table_name NK_DOT column_name */ -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701, createColumnNode(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy701)); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 382: /* column_reference ::= table_name NK_DOT column_name */ +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy815, &yymsp[0].minor.yy815, createColumnNode(pCxt, &yymsp[-2].minor.yy815, &yymsp[0].minor.yy815)); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 381: /* pseudo_column ::= ROWTS */ - case 382: /* pseudo_column ::= TBNAME */ yytestcase(yyruleno==382); - case 384: /* pseudo_column ::= QSTART */ yytestcase(yyruleno==384); - case 385: /* pseudo_column ::= QEND */ yytestcase(yyruleno==385); - case 386: /* pseudo_column ::= QDURATION */ yytestcase(yyruleno==386); - case 387: /* pseudo_column ::= WSTART */ yytestcase(yyruleno==387); - case 388: /* pseudo_column ::= WEND */ yytestcase(yyruleno==388); - case 389: /* pseudo_column ::= WDURATION */ yytestcase(yyruleno==389); - case 390: /* pseudo_column ::= IROWTS */ yytestcase(yyruleno==390); - case 391: /* pseudo_column ::= ISFILLED */ yytestcase(yyruleno==391); - case 392: /* pseudo_column ::= QTAGS */ yytestcase(yyruleno==392); - case 398: /* literal_func ::= NOW */ yytestcase(yyruleno==398); -{ yylhsminor.yy476 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL)); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 383: /* pseudo_column ::= ROWTS */ + case 384: /* pseudo_column ::= TBNAME */ yytestcase(yyruleno==384); + case 386: /* pseudo_column ::= QSTART */ yytestcase(yyruleno==386); + case 387: /* pseudo_column ::= QEND */ yytestcase(yyruleno==387); + case 388: /* pseudo_column ::= QDURATION */ yytestcase(yyruleno==388); + case 389: /* pseudo_column ::= WSTART */ yytestcase(yyruleno==389); + case 390: /* pseudo_column ::= WEND */ yytestcase(yyruleno==390); + case 391: /* pseudo_column ::= WDURATION */ yytestcase(yyruleno==391); + case 392: /* pseudo_column ::= IROWTS */ yytestcase(yyruleno==392); + case 393: /* pseudo_column ::= ISFILLED */ yytestcase(yyruleno==393); + case 394: /* pseudo_column ::= QTAGS */ yytestcase(yyruleno==394); + case 400: /* literal_func ::= NOW */ yytestcase(yyruleno==400); +{ yylhsminor.yy320 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL)); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 383: /* pseudo_column ::= table_name NK_DOT TBNAME */ -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[-2].minor.yy701)))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 385: /* pseudo_column ::= table_name NK_DOT TBNAME */ +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy815, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[-2].minor.yy815)))); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 393: /* function_expression ::= function_name NK_LP expression_list NK_RP */ - case 394: /* function_expression ::= star_func NK_LP star_func_para_list NK_RP */ yytestcase(yyruleno==394); -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy701, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-3].minor.yy701, yymsp[-1].minor.yy376)); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; + case 395: /* function_expression ::= function_name NK_LP expression_list NK_RP */ + case 396: /* function_expression ::= star_func NK_LP star_func_para_list NK_RP */ yytestcase(yyruleno==396); +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy815, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-3].minor.yy815, yymsp[-1].minor.yy570)); } + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; - case 395: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, createCastFunctionNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), yymsp[-1].minor.yy532)); } - yymsp[-5].minor.yy476 = yylhsminor.yy476; + case 397: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, createCastFunctionNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy320), yymsp[-1].minor.yy200)); } + yymsp[-5].minor.yy320 = yylhsminor.yy320; break; - case 397: /* literal_func ::= noarg_func NK_LP NK_RP */ -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-2].minor.yy701, NULL)); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 399: /* literal_func ::= noarg_func NK_LP NK_RP */ +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy815, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-2].minor.yy815, NULL)); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 412: /* star_func_para_list ::= NK_STAR */ -{ yylhsminor.yy376 = createNodeList(pCxt, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0)); } - yymsp[0].minor.yy376 = yylhsminor.yy376; + case 414: /* star_func_para_list ::= NK_STAR */ +{ yylhsminor.yy570 = createNodeList(pCxt, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0)); } + yymsp[0].minor.yy570 = yylhsminor.yy570; break; - case 417: /* star_func_para ::= table_name NK_DOT NK_STAR */ - case 481: /* select_item ::= table_name NK_DOT NK_STAR */ yytestcase(yyruleno==481); -{ yylhsminor.yy476 = createColumnNode(pCxt, &yymsp[-2].minor.yy701, &yymsp[0].minor.yy0); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 419: /* star_func_para ::= table_name NK_DOT NK_STAR */ + case 483: /* select_item ::= table_name NK_DOT NK_STAR */ yytestcase(yyruleno==483); +{ yylhsminor.yy320 = createColumnNode(pCxt, &yymsp[-2].minor.yy815, &yymsp[0].minor.yy0); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 418: /* case_when_expression ::= CASE when_then_list case_when_else_opt END */ -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, NULL, yymsp[-2].minor.yy376, yymsp[-1].minor.yy476)); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; + case 420: /* case_when_expression ::= CASE when_then_list case_when_else_opt END */ +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, NULL, yymsp[-2].minor.yy570, yymsp[-1].minor.yy320)); } + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; - case 419: /* case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), yymsp[-2].minor.yy376, yymsp[-1].minor.yy476)); } - yymsp[-4].minor.yy476 = yylhsminor.yy476; + case 421: /* case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy320), yymsp[-2].minor.yy570, yymsp[-1].minor.yy320)); } + yymsp[-4].minor.yy320 = yylhsminor.yy320; break; - case 422: /* when_then_expr ::= WHEN common_expression THEN common_expression */ -{ yymsp[-3].minor.yy476 = createWhenThenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476)); } + case 424: /* when_then_expr ::= WHEN common_expression THEN common_expression */ +{ yymsp[-3].minor.yy320 = createWhenThenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320)); } break; - case 424: /* case_when_else_opt ::= ELSE common_expression */ -{ yymsp[-1].minor.yy476 = releaseRawExprNode(pCxt, yymsp[0].minor.yy476); } + case 426: /* case_when_else_opt ::= ELSE common_expression */ +{ yymsp[-1].minor.yy320 = releaseRawExprNode(pCxt, yymsp[0].minor.yy320); } break; - case 425: /* predicate ::= expr_or_subquery compare_op expr_or_subquery */ - case 430: /* predicate ::= expr_or_subquery in_op in_predicate_value */ yytestcase(yyruleno==430); + case 427: /* predicate ::= expr_or_subquery compare_op expr_or_subquery */ + case 432: /* predicate ::= expr_or_subquery in_op in_predicate_value */ yytestcase(yyruleno==432); { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, yymsp[-1].minor.yy128, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createOperatorNode(pCxt, yymsp[-1].minor.yy828, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 426: /* predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ + case 428: /* predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-4].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createBetweenAnd(pCxt, releaseRawExprNode(pCxt, yymsp[-4].minor.yy476), releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-4].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createBetweenAnd(pCxt, releaseRawExprNode(pCxt, yymsp[-4].minor.yy320), releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-4].minor.yy476 = yylhsminor.yy476; + yymsp[-4].minor.yy320 = yylhsminor.yy320; break; - case 427: /* predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ + case 429: /* predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-5].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createNotBetweenAnd(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy476), releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-5].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createNotBetweenAnd(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy320), releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-5].minor.yy476 = yylhsminor.yy476; + yymsp[-5].minor.yy320 = yylhsminor.yy320; break; - case 428: /* predicate ::= expr_or_subquery IS NULL */ + case 430: /* predicate ::= expr_or_subquery IS NULL */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NULL, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), NULL)); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NULL, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), NULL)); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 429: /* predicate ::= expr_or_subquery IS NOT NULL */ + case 431: /* predicate ::= expr_or_subquery IS NOT NULL */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-3].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NOT_NULL, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), NULL)); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-3].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NOT_NULL, releaseRawExprNode(pCxt, yymsp[-3].minor.yy320), NULL)); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; - case 431: /* compare_op ::= NK_LT */ -{ yymsp[0].minor.yy128 = OP_TYPE_LOWER_THAN; } + case 433: /* compare_op ::= NK_LT */ +{ yymsp[0].minor.yy828 = OP_TYPE_LOWER_THAN; } break; - case 432: /* compare_op ::= NK_GT */ -{ yymsp[0].minor.yy128 = OP_TYPE_GREATER_THAN; } + case 434: /* compare_op ::= NK_GT */ +{ yymsp[0].minor.yy828 = OP_TYPE_GREATER_THAN; } break; - case 433: /* compare_op ::= NK_LE */ -{ yymsp[0].minor.yy128 = OP_TYPE_LOWER_EQUAL; } + case 435: /* compare_op ::= NK_LE */ +{ yymsp[0].minor.yy828 = OP_TYPE_LOWER_EQUAL; } break; - case 434: /* compare_op ::= NK_GE */ -{ yymsp[0].minor.yy128 = OP_TYPE_GREATER_EQUAL; } + case 436: /* compare_op ::= NK_GE */ +{ yymsp[0].minor.yy828 = OP_TYPE_GREATER_EQUAL; } break; - case 435: /* compare_op ::= NK_NE */ -{ yymsp[0].minor.yy128 = OP_TYPE_NOT_EQUAL; } + case 437: /* compare_op ::= NK_NE */ +{ yymsp[0].minor.yy828 = OP_TYPE_NOT_EQUAL; } break; - case 436: /* compare_op ::= NK_EQ */ -{ yymsp[0].minor.yy128 = OP_TYPE_EQUAL; } + case 438: /* compare_op ::= NK_EQ */ +{ yymsp[0].minor.yy828 = OP_TYPE_EQUAL; } break; - case 437: /* compare_op ::= LIKE */ -{ yymsp[0].minor.yy128 = OP_TYPE_LIKE; } + case 439: /* compare_op ::= LIKE */ +{ yymsp[0].minor.yy828 = OP_TYPE_LIKE; } break; - case 438: /* compare_op ::= NOT LIKE */ -{ yymsp[-1].minor.yy128 = OP_TYPE_NOT_LIKE; } + case 440: /* compare_op ::= NOT LIKE */ +{ yymsp[-1].minor.yy828 = OP_TYPE_NOT_LIKE; } break; - case 439: /* compare_op ::= MATCH */ -{ yymsp[0].minor.yy128 = OP_TYPE_MATCH; } + case 441: /* compare_op ::= MATCH */ +{ yymsp[0].minor.yy828 = OP_TYPE_MATCH; } break; - case 440: /* compare_op ::= NMATCH */ -{ yymsp[0].minor.yy128 = OP_TYPE_NMATCH; } + case 442: /* compare_op ::= NMATCH */ +{ yymsp[0].minor.yy828 = OP_TYPE_NMATCH; } break; - case 441: /* compare_op ::= CONTAINS */ -{ yymsp[0].minor.yy128 = OP_TYPE_JSON_CONTAINS; } + case 443: /* compare_op ::= CONTAINS */ +{ yymsp[0].minor.yy828 = OP_TYPE_JSON_CONTAINS; } break; - case 442: /* in_op ::= IN */ -{ yymsp[0].minor.yy128 = OP_TYPE_IN; } + case 444: /* in_op ::= IN */ +{ yymsp[0].minor.yy828 = OP_TYPE_IN; } break; - case 443: /* in_op ::= NOT IN */ -{ yymsp[-1].minor.yy128 = OP_TYPE_NOT_IN; } + case 445: /* in_op ::= NOT IN */ +{ yymsp[-1].minor.yy828 = OP_TYPE_NOT_IN; } break; - case 444: /* in_predicate_value ::= NK_LP literal_list NK_RP */ -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, createNodeListNode(pCxt, yymsp[-1].minor.yy376)); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 446: /* in_predicate_value ::= NK_LP literal_list NK_RP */ +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, createNodeListNode(pCxt, yymsp[-1].minor.yy570)); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 446: /* boolean_value_expression ::= NOT boolean_primary */ + case 448: /* boolean_value_expression ::= NOT boolean_primary */ { - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_NOT, releaseRawExprNode(pCxt, yymsp[0].minor.yy476), NULL)); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_NOT, releaseRawExprNode(pCxt, yymsp[0].minor.yy320), NULL)); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 447: /* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ + case 449: /* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_OR, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_OR, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 448: /* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ + case 450: /* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ { - SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy476); - SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy476); - yylhsminor.yy476 = createRawExprNodeExt(pCxt, &s, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_AND, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); + SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy320); + SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy320); + yylhsminor.yy320 = createRawExprNodeExt(pCxt, &s, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_AND, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 454: /* from_clause_opt ::= FROM table_reference_list */ - case 483: /* where_clause_opt ::= WHERE search_condition */ yytestcase(yyruleno==483); - case 512: /* having_clause_opt ::= HAVING search_condition */ yytestcase(yyruleno==512); -{ yymsp[-1].minor.yy476 = yymsp[0].minor.yy476; } + case 456: /* from_clause_opt ::= FROM table_reference_list */ + case 485: /* where_clause_opt ::= WHERE search_condition */ yytestcase(yyruleno==485); + case 514: /* having_clause_opt ::= HAVING search_condition */ yytestcase(yyruleno==514); +{ yymsp[-1].minor.yy320 = yymsp[0].minor.yy320; } break; - case 456: /* table_reference_list ::= table_reference_list NK_COMMA table_reference */ -{ yylhsminor.yy476 = createJoinTableNode(pCxt, JOIN_TYPE_INNER, yymsp[-2].minor.yy476, yymsp[0].minor.yy476, NULL); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 458: /* table_reference_list ::= table_reference_list NK_COMMA table_reference */ +{ yylhsminor.yy320 = createJoinTableNode(pCxt, JOIN_TYPE_INNER, yymsp[-2].minor.yy320, yymsp[0].minor.yy320, NULL); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 459: /* table_primary ::= table_name alias_opt */ -{ yylhsminor.yy476 = createRealTableNode(pCxt, NULL, &yymsp[-1].minor.yy701, &yymsp[0].minor.yy701); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; + case 461: /* table_primary ::= table_name alias_opt */ +{ yylhsminor.yy320 = createRealTableNode(pCxt, NULL, &yymsp[-1].minor.yy815, &yymsp[0].minor.yy815); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 460: /* table_primary ::= db_name NK_DOT table_name alias_opt */ -{ yylhsminor.yy476 = createRealTableNode(pCxt, &yymsp[-3].minor.yy701, &yymsp[-1].minor.yy701, &yymsp[0].minor.yy701); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; + case 462: /* table_primary ::= db_name NK_DOT table_name alias_opt */ +{ yylhsminor.yy320 = createRealTableNode(pCxt, &yymsp[-3].minor.yy815, &yymsp[-1].minor.yy815, &yymsp[0].minor.yy815); } + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; - case 461: /* table_primary ::= subquery alias_opt */ -{ yylhsminor.yy476 = createTempTableNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy476), &yymsp[0].minor.yy701); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; + case 463: /* table_primary ::= subquery alias_opt */ +{ yylhsminor.yy320 = createTempTableNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy320), &yymsp[0].minor.yy815); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 463: /* alias_opt ::= */ -{ yymsp[1].minor.yy701 = nil_token; } + case 465: /* alias_opt ::= */ +{ yymsp[1].minor.yy815 = nil_token; } break; - case 465: /* alias_opt ::= AS table_alias */ -{ yymsp[-1].minor.yy701 = yymsp[0].minor.yy701; } + case 467: /* alias_opt ::= AS table_alias */ +{ yymsp[-1].minor.yy815 = yymsp[0].minor.yy815; } break; - case 466: /* parenthesized_joined_table ::= NK_LP joined_table NK_RP */ - case 467: /* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ yytestcase(yyruleno==467); -{ yymsp[-2].minor.yy476 = yymsp[-1].minor.yy476; } + case 468: /* parenthesized_joined_table ::= NK_LP joined_table NK_RP */ + case 469: /* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ yytestcase(yyruleno==469); +{ yymsp[-2].minor.yy320 = yymsp[-1].minor.yy320; } break; - case 468: /* joined_table ::= table_reference join_type JOIN table_reference ON search_condition */ -{ yylhsminor.yy476 = createJoinTableNode(pCxt, yymsp[-4].minor.yy288, yymsp[-5].minor.yy476, yymsp[-2].minor.yy476, yymsp[0].minor.yy476); } - yymsp[-5].minor.yy476 = yylhsminor.yy476; + case 470: /* joined_table ::= table_reference join_type JOIN table_reference ON search_condition */ +{ yylhsminor.yy320 = createJoinTableNode(pCxt, yymsp[-4].minor.yy334, yymsp[-5].minor.yy320, yymsp[-2].minor.yy320, yymsp[0].minor.yy320); } + yymsp[-5].minor.yy320 = yylhsminor.yy320; break; - case 469: /* join_type ::= */ -{ yymsp[1].minor.yy288 = JOIN_TYPE_INNER; } + case 471: /* join_type ::= */ +{ yymsp[1].minor.yy334 = JOIN_TYPE_INNER; } break; - case 470: /* join_type ::= INNER */ -{ yymsp[0].minor.yy288 = JOIN_TYPE_INNER; } + case 472: /* join_type ::= INNER */ +{ yymsp[0].minor.yy334 = JOIN_TYPE_INNER; } break; - case 471: /* query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ + case 473: /* query_specification ::= SELECT set_quantifier_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ { - yymsp[-11].minor.yy476 = createSelectStmt(pCxt, yymsp[-10].minor.yy845, yymsp[-9].minor.yy376, yymsp[-8].minor.yy476); - yymsp[-11].minor.yy476 = addWhereClause(pCxt, yymsp[-11].minor.yy476, yymsp[-7].minor.yy476); - yymsp[-11].minor.yy476 = addPartitionByClause(pCxt, yymsp[-11].minor.yy476, yymsp[-6].minor.yy376); - yymsp[-11].minor.yy476 = addWindowClauseClause(pCxt, yymsp[-11].minor.yy476, yymsp[-2].minor.yy476); - yymsp[-11].minor.yy476 = addGroupByClause(pCxt, yymsp[-11].minor.yy476, yymsp[-1].minor.yy376); - yymsp[-11].minor.yy476 = addHavingClause(pCxt, yymsp[-11].minor.yy476, yymsp[0].minor.yy476); - yymsp[-11].minor.yy476 = addRangeClause(pCxt, yymsp[-11].minor.yy476, yymsp[-5].minor.yy476); - yymsp[-11].minor.yy476 = addEveryClause(pCxt, yymsp[-11].minor.yy476, yymsp[-4].minor.yy476); - yymsp[-11].minor.yy476 = addFillClause(pCxt, yymsp[-11].minor.yy476, yymsp[-3].minor.yy476); + yymsp[-11].minor.yy320 = createSelectStmt(pCxt, yymsp[-10].minor.yy63, yymsp[-9].minor.yy570, yymsp[-8].minor.yy320); + yymsp[-11].minor.yy320 = addWhereClause(pCxt, yymsp[-11].minor.yy320, yymsp[-7].minor.yy320); + yymsp[-11].minor.yy320 = addPartitionByClause(pCxt, yymsp[-11].minor.yy320, yymsp[-6].minor.yy570); + yymsp[-11].minor.yy320 = addWindowClauseClause(pCxt, yymsp[-11].minor.yy320, yymsp[-2].minor.yy320); + yymsp[-11].minor.yy320 = addGroupByClause(pCxt, yymsp[-11].minor.yy320, yymsp[-1].minor.yy570); + yymsp[-11].minor.yy320 = addHavingClause(pCxt, yymsp[-11].minor.yy320, yymsp[0].minor.yy320); + yymsp[-11].minor.yy320 = addRangeClause(pCxt, yymsp[-11].minor.yy320, yymsp[-5].minor.yy320); + yymsp[-11].minor.yy320 = addEveryClause(pCxt, yymsp[-11].minor.yy320, yymsp[-4].minor.yy320); + yymsp[-11].minor.yy320 = addFillClause(pCxt, yymsp[-11].minor.yy320, yymsp[-3].minor.yy320); } break; - case 474: /* set_quantifier_opt ::= ALL */ -{ yymsp[0].minor.yy845 = false; } + case 476: /* set_quantifier_opt ::= ALL */ +{ yymsp[0].minor.yy63 = false; } break; - case 477: /* select_item ::= NK_STAR */ -{ yylhsminor.yy476 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0); } - yymsp[0].minor.yy476 = yylhsminor.yy476; + case 479: /* select_item ::= NK_STAR */ +{ yylhsminor.yy320 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0); } + yymsp[0].minor.yy320 = yylhsminor.yy320; break; - case 479: /* select_item ::= common_expression column_alias */ - case 489: /* partition_item ::= expr_or_subquery column_alias */ yytestcase(yyruleno==489); -{ yylhsminor.yy476 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy476), &yymsp[0].minor.yy701); } - yymsp[-1].minor.yy476 = yylhsminor.yy476; + case 481: /* select_item ::= common_expression column_alias */ + case 491: /* partition_item ::= expr_or_subquery column_alias */ yytestcase(yyruleno==491); +{ yylhsminor.yy320 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy320), &yymsp[0].minor.yy815); } + yymsp[-1].minor.yy320 = yylhsminor.yy320; break; - case 480: /* select_item ::= common_expression AS column_alias */ - case 490: /* partition_item ::= expr_or_subquery AS column_alias */ yytestcase(yyruleno==490); -{ yylhsminor.yy476 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), &yymsp[0].minor.yy701); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 482: /* select_item ::= common_expression AS column_alias */ + case 492: /* partition_item ::= expr_or_subquery AS column_alias */ yytestcase(yyruleno==492); +{ yylhsminor.yy320 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), &yymsp[0].minor.yy815); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 485: /* partition_by_clause_opt ::= PARTITION BY partition_list */ - case 508: /* group_by_clause_opt ::= GROUP BY group_by_list */ yytestcase(yyruleno==508); - case 527: /* order_by_clause_opt ::= ORDER BY sort_specification_list */ yytestcase(yyruleno==527); -{ yymsp[-2].minor.yy376 = yymsp[0].minor.yy376; } + case 487: /* partition_by_clause_opt ::= PARTITION BY partition_list */ + case 510: /* group_by_clause_opt ::= GROUP BY group_by_list */ yytestcase(yyruleno==510); + case 529: /* order_by_clause_opt ::= ORDER BY sort_specification_list */ yytestcase(yyruleno==529); +{ yymsp[-2].minor.yy570 = yymsp[0].minor.yy570; } break; - case 492: /* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */ -{ yymsp[-5].minor.yy476 = createSessionWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), releaseRawExprNode(pCxt, yymsp[-1].minor.yy476)); } + case 494: /* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA duration_literal NK_RP */ +{ yymsp[-5].minor.yy320 = createSessionWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy320), releaseRawExprNode(pCxt, yymsp[-1].minor.yy320)); } break; - case 493: /* twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ -{ yymsp[-3].minor.yy476 = createStateWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy476)); } + case 495: /* twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ +{ yymsp[-3].minor.yy320 = createStateWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy320)); } break; - case 494: /* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */ -{ yymsp[-5].minor.yy476 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), NULL, yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } + case 496: /* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_RP sliding_opt fill_opt */ +{ yymsp[-5].minor.yy320 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy320), NULL, yymsp[-1].minor.yy320, yymsp[0].minor.yy320); } break; - case 495: /* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */ -{ yymsp[-7].minor.yy476 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy476), releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), yymsp[-1].minor.yy476, yymsp[0].minor.yy476); } + case 497: /* twindow_clause_opt ::= INTERVAL NK_LP duration_literal NK_COMMA duration_literal NK_RP sliding_opt fill_opt */ +{ yymsp[-7].minor.yy320 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy320), releaseRawExprNode(pCxt, yymsp[-3].minor.yy320), yymsp[-1].minor.yy320, yymsp[0].minor.yy320); } break; - case 496: /* twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ -{ yymsp[-6].minor.yy476 = createEventWindowNode(pCxt, yymsp[-3].minor.yy476, yymsp[0].minor.yy476); } + case 498: /* twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ +{ yymsp[-6].minor.yy320 = createEventWindowNode(pCxt, yymsp[-3].minor.yy320, yymsp[0].minor.yy320); } break; - case 500: /* fill_opt ::= FILL NK_LP fill_mode NK_RP */ -{ yymsp[-3].minor.yy476 = createFillNode(pCxt, yymsp[-1].minor.yy690, NULL); } + case 502: /* fill_opt ::= FILL NK_LP fill_mode NK_RP */ +{ yymsp[-3].minor.yy320 = createFillNode(pCxt, yymsp[-1].minor.yy762, NULL); } break; - case 501: /* fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */ -{ yymsp[-5].minor.yy476 = createFillNode(pCxt, FILL_MODE_VALUE, createNodeListNode(pCxt, yymsp[-1].minor.yy376)); } + case 503: /* fill_opt ::= FILL NK_LP VALUE NK_COMMA literal_list NK_RP */ +{ yymsp[-5].minor.yy320 = createFillNode(pCxt, FILL_MODE_VALUE, createNodeListNode(pCxt, yymsp[-1].minor.yy570)); } break; - case 502: /* fill_mode ::= NONE */ -{ yymsp[0].minor.yy690 = FILL_MODE_NONE; } + case 504: /* fill_mode ::= NONE */ +{ yymsp[0].minor.yy762 = FILL_MODE_NONE; } break; - case 503: /* fill_mode ::= PREV */ -{ yymsp[0].minor.yy690 = FILL_MODE_PREV; } + case 505: /* fill_mode ::= PREV */ +{ yymsp[0].minor.yy762 = FILL_MODE_PREV; } break; - case 504: /* fill_mode ::= NULL */ -{ yymsp[0].minor.yy690 = FILL_MODE_NULL; } + case 506: /* fill_mode ::= NULL */ +{ yymsp[0].minor.yy762 = FILL_MODE_NULL; } break; - case 505: /* fill_mode ::= LINEAR */ -{ yymsp[0].minor.yy690 = FILL_MODE_LINEAR; } + case 507: /* fill_mode ::= LINEAR */ +{ yymsp[0].minor.yy762 = FILL_MODE_LINEAR; } break; - case 506: /* fill_mode ::= NEXT */ -{ yymsp[0].minor.yy690 = FILL_MODE_NEXT; } + case 508: /* fill_mode ::= NEXT */ +{ yymsp[0].minor.yy762 = FILL_MODE_NEXT; } break; - case 509: /* group_by_list ::= expr_or_subquery */ -{ yylhsminor.yy376 = createNodeList(pCxt, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[0].minor.yy376 = yylhsminor.yy376; + case 511: /* group_by_list ::= expr_or_subquery */ +{ yylhsminor.yy570 = createNodeList(pCxt, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } + yymsp[0].minor.yy570 = yylhsminor.yy570; break; - case 510: /* group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ -{ yylhsminor.yy376 = addNodeToList(pCxt, yymsp[-2].minor.yy376, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy476))); } - yymsp[-2].minor.yy376 = yylhsminor.yy376; + case 512: /* group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ +{ yylhsminor.yy570 = addNodeToList(pCxt, yymsp[-2].minor.yy570, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy320))); } + yymsp[-2].minor.yy570 = yylhsminor.yy570; break; - case 514: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ -{ yymsp[-5].minor.yy476 = createInterpTimeRange(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy476), releaseRawExprNode(pCxt, yymsp[-1].minor.yy476)); } + case 516: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ +{ yymsp[-5].minor.yy320 = createInterpTimeRange(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy320), releaseRawExprNode(pCxt, yymsp[-1].minor.yy320)); } break; - case 517: /* query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ + case 519: /* query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ { - yylhsminor.yy476 = addOrderByClause(pCxt, yymsp[-3].minor.yy476, yymsp[-2].minor.yy376); - yylhsminor.yy476 = addSlimitClause(pCxt, yylhsminor.yy476, yymsp[-1].minor.yy476); - yylhsminor.yy476 = addLimitClause(pCxt, yylhsminor.yy476, yymsp[0].minor.yy476); + yylhsminor.yy320 = addOrderByClause(pCxt, yymsp[-3].minor.yy320, yymsp[-2].minor.yy570); + yylhsminor.yy320 = addSlimitClause(pCxt, yylhsminor.yy320, yymsp[-1].minor.yy320); + yylhsminor.yy320 = addLimitClause(pCxt, yylhsminor.yy320, yymsp[0].minor.yy320); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; - case 520: /* union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ -{ yylhsminor.yy476 = createSetOperator(pCxt, SET_OP_TYPE_UNION_ALL, yymsp[-3].minor.yy476, yymsp[0].minor.yy476); } - yymsp[-3].minor.yy476 = yylhsminor.yy476; + case 522: /* union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ +{ yylhsminor.yy320 = createSetOperator(pCxt, SET_OP_TYPE_UNION_ALL, yymsp[-3].minor.yy320, yymsp[0].minor.yy320); } + yymsp[-3].minor.yy320 = yylhsminor.yy320; break; - case 521: /* union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ -{ yylhsminor.yy476 = createSetOperator(pCxt, SET_OP_TYPE_UNION, yymsp[-2].minor.yy476, yymsp[0].minor.yy476); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 523: /* union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ +{ yylhsminor.yy320 = createSetOperator(pCxt, SET_OP_TYPE_UNION, yymsp[-2].minor.yy320, yymsp[0].minor.yy320); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 529: /* slimit_clause_opt ::= SLIMIT NK_INTEGER */ - case 533: /* limit_clause_opt ::= LIMIT NK_INTEGER */ yytestcase(yyruleno==533); -{ yymsp[-1].minor.yy476 = createLimitNode(pCxt, &yymsp[0].minor.yy0, NULL); } + case 531: /* slimit_clause_opt ::= SLIMIT NK_INTEGER */ + case 535: /* limit_clause_opt ::= LIMIT NK_INTEGER */ yytestcase(yyruleno==535); +{ yymsp[-1].minor.yy320 = createLimitNode(pCxt, &yymsp[0].minor.yy0, NULL); } break; - case 530: /* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ - case 534: /* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ yytestcase(yyruleno==534); -{ yymsp[-3].minor.yy476 = createLimitNode(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } + case 532: /* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ + case 536: /* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ yytestcase(yyruleno==536); +{ yymsp[-3].minor.yy320 = createLimitNode(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } break; - case 531: /* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - case 535: /* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ yytestcase(yyruleno==535); -{ yymsp[-3].minor.yy476 = createLimitNode(pCxt, &yymsp[0].minor.yy0, &yymsp[-2].minor.yy0); } + case 533: /* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + case 537: /* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ yytestcase(yyruleno==537); +{ yymsp[-3].minor.yy320 = createLimitNode(pCxt, &yymsp[0].minor.yy0, &yymsp[-2].minor.yy0); } break; - case 536: /* subquery ::= NK_LP query_expression NK_RP */ -{ yylhsminor.yy476 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-1].minor.yy476); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 538: /* subquery ::= NK_LP query_expression NK_RP */ +{ yylhsminor.yy320 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-1].minor.yy320); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 541: /* sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ -{ yylhsminor.yy476 = createOrderByExprNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy476), yymsp[-1].minor.yy554, yymsp[0].minor.yy697); } - yymsp[-2].minor.yy476 = yylhsminor.yy476; + case 543: /* sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ +{ yylhsminor.yy320 = createOrderByExprNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy320), yymsp[-1].minor.yy162, yymsp[0].minor.yy715); } + yymsp[-2].minor.yy320 = yylhsminor.yy320; break; - case 542: /* ordering_specification_opt ::= */ -{ yymsp[1].minor.yy554 = ORDER_ASC; } + case 544: /* ordering_specification_opt ::= */ +{ yymsp[1].minor.yy162 = ORDER_ASC; } break; - case 543: /* ordering_specification_opt ::= ASC */ -{ yymsp[0].minor.yy554 = ORDER_ASC; } + case 545: /* ordering_specification_opt ::= ASC */ +{ yymsp[0].minor.yy162 = ORDER_ASC; } break; - case 544: /* ordering_specification_opt ::= DESC */ -{ yymsp[0].minor.yy554 = ORDER_DESC; } + case 546: /* ordering_specification_opt ::= DESC */ +{ yymsp[0].minor.yy162 = ORDER_DESC; } break; - case 545: /* null_ordering_opt ::= */ -{ yymsp[1].minor.yy697 = NULL_ORDER_DEFAULT; } + case 547: /* null_ordering_opt ::= */ +{ yymsp[1].minor.yy715 = NULL_ORDER_DEFAULT; } break; - case 546: /* null_ordering_opt ::= NULLS FIRST */ -{ yymsp[-1].minor.yy697 = NULL_ORDER_FIRST; } + case 548: /* null_ordering_opt ::= NULLS FIRST */ +{ yymsp[-1].minor.yy715 = NULL_ORDER_FIRST; } break; - case 547: /* null_ordering_opt ::= NULLS LAST */ -{ yymsp[-1].minor.yy697 = NULL_ORDER_LAST; } + case 549: /* null_ordering_opt ::= NULLS LAST */ +{ yymsp[-1].minor.yy715 = NULL_ORDER_LAST; } break; default: break; From 11dbf0a05e8b0f4df367198e073125cc00b1045a Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Mon, 2 Jan 2023 15:05:03 +0800 Subject: [PATCH 17/34] fix:error in parse json --- source/client/inc/clientSml.h | 3 +- source/client/src/clientSml.c | 2 + source/client/src/clientSmlJson.c | 35 ++++++----- source/client/src/clientSmlLine.c | 92 ++++++++--------------------- source/client/src/clientSmlTelnet.c | 27 +++++---- 5 files changed, 63 insertions(+), 96 deletions(-) diff --git a/source/client/inc/clientSml.h b/source/client/inc/clientSml.h index d5f1cf512c..11f72efeaf 100644 --- a/source/client/inc/clientSml.h +++ b/source/client/inc/clientSml.h @@ -185,6 +185,7 @@ typedef struct { // SArray *preLineTagKV; + SArray *maxTagKVs; SArray *preLineColKV; SSmlLineInfo preLine; @@ -199,7 +200,7 @@ typedef struct { #define IS_SAME_SUPER_TABLE (elements->measureLen == info->preLine.measureLen \ && memcmp(elements->measure, info->preLine.measure, elements->measureLen) == 0) -#define IS_SAME_KEY (preKV->keyLen == kv.keyLen && memcmp(preKV->key, kv.key, kv.keyLen) == 0) +#define IS_SAME_KEY (maxKV->keyLen == kv.keyLen && memcmp(maxKV->key, kv.key, kv.keyLen) == 0) extern int64_t smlFactorNS[3]; extern int64_t smlFactorS[3]; diff --git a/source/client/src/clientSml.c b/source/client/src/clientSml.c index 4d091e4b61..ca6395b52b 100644 --- a/source/client/src/clientSml.c +++ b/source/client/src/clientSml.c @@ -1054,6 +1054,7 @@ void smlDestroyInfo(SSmlHandle *info) { taosHashCleanup(info->pVgHash); taosArrayDestroy(info->preLineTagKV); + taosArrayDestroy(info->maxTagKVs); taosArrayDestroy(info->preLineColKV); if (!info->dataFormat) { @@ -1090,6 +1091,7 @@ SSmlHandle *smlBuildSmlInfo(TAOS *taos) { info->dataFormat = true; info->preLineTagKV = taosArrayInit(8, sizeof(SSmlKv)); + info->maxTagKVs = taosArrayInit(8, sizeof(SSmlKv)); info->preLineColKV = taosArrayInit(8, sizeof(SSmlKv)); if (NULL == info->pVgHash) { diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index c4cd558418..550d1c8edf 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -429,9 +429,8 @@ static inline int32_t smlParseMetricFromJSON(SSmlHandle *info, cJSON *metric, SS const char *jsonName[OTD_JSON_FIELDS_NUM] = {"metric", "timestamp", "value", "tags"}; static int32_t smlGetJsonElements(cJSON *root, cJSON ***marks){ - cJSON *child = root->child; - for (int i = 0; i < OTD_JSON_FIELDS_NUM; ++i) { + cJSON *child = root->child; while(child != NULL) { if(strcasecmp(child->string, jsonName[i]) == 0){ @@ -441,7 +440,7 @@ static int32_t smlGetJsonElements(cJSON *root, cJSON ***marks){ child = child->next; } if(*marks[i] == NULL){ - uError("smlGetJsonElements error, not find mark:%s", jsonName[i]); + uError("smlGetJsonElements error, not find mark:%d:%s", i, jsonName[i]); return -1; } } @@ -648,6 +647,7 @@ static int32_t smlParseTagsFromJSON(SSmlHandle *info, cJSON *tags, SSmlLineInfo int cnt = 0; SArray *preLineKV = info->preLineTagKV; + SArray *maxKVs = info->maxTagKVs; bool isSuperKVInit = true; SArray *superKV = NULL; if(info->dataFormat){ @@ -671,11 +671,12 @@ static int32_t smlParseTagsFromJSON(SSmlHandle *info, cJSON *tags, SSmlLineInfo if(unlikely(taosArrayGetSize(superKV) == 0)){ isSuperKVInit = false; } - taosArraySetSize(preLineKV, 0); + taosArraySetSize(maxKVs, 0); } }else{ - taosArraySetSize(preLineKV, 0); + taosArraySetSize(maxKVs, 0); } + taosArraySetSize(preLineKV, 0); int32_t tagNum = cJSON_GetArraySize(tags); if(unlikely(tagNum == 0)){ @@ -710,14 +711,14 @@ static int32_t smlParseTagsFromJSON(SSmlHandle *info, cJSON *tags, SSmlLineInfo } if(isSameMeasure){ - if(unlikely(cnt >= taosArrayGetSize(preLineKV))) { + if(unlikely(cnt >= taosArrayGetSize(maxKVs))) { info->dataFormat = false; info->reRun = true; return TSDB_CODE_SUCCESS; } - SSmlKv *preKV = (SSmlKv *)taosArrayGet(preLineKV, cnt); - if(unlikely(kv.length > preKV->length)){ - preKV->length = kv.length; + SSmlKv *maxKV = (SSmlKv *)taosArrayGet(maxKVs, cnt); + if(unlikely(kv.length > maxKV->length)){ + maxKV->length = kv.length; SSmlSTableMeta *tableMeta = (SSmlSTableMeta *)nodeListGet(info->superTables, elements->measure, elements->measureLen, NULL); ASSERT(tableMeta != NULL); @@ -737,11 +738,11 @@ static int32_t smlParseTagsFromJSON(SSmlHandle *info, cJSON *tags, SSmlLineInfo info->reRun = true; return TSDB_CODE_SUCCESS; } - SSmlKv *preKV = (SSmlKv *)taosArrayGet(superKV, cnt); - if(unlikely(kv.length > preKV->length)) { - preKV->length = kv.length; + SSmlKv *maxKV = (SSmlKv *)taosArrayGet(superKV, cnt); + if(unlikely(kv.length > maxKV->length)) { + maxKV->length = kv.length; }else{ - kv.length = preKV->length; + kv.length = maxKV->length; } info->needModifySchema = true; @@ -753,11 +754,12 @@ static int32_t smlParseTagsFromJSON(SSmlHandle *info, cJSON *tags, SSmlLineInfo }else{ taosArrayPush(superKV, &kv); } - taosArrayPush(preLineKV, &kv); + taosArrayPush(maxKVs, &kv); } }else{ - taosArrayPush(preLineKV, &kv); + taosArrayPush(maxKVs, &kv); } + taosArrayPush(preLineKV, &kv); cnt++; } @@ -921,6 +923,9 @@ static int32_t smlParseJSONStringExt(SSmlHandle *info, cJSON *root, SSmlLineInfo cJSON *tsJson = NULL; cJSON *valueJson = NULL; cJSON *tagsJson = NULL; + char* rootStr = cJSON_PrintUnformatted(root); + uError("rootStr:%s", rootStr); + taosMemoryFree(rootStr); int32_t size = cJSON_GetArraySize(root); // outmost json fields has to be exactly 4 diff --git a/source/client/src/clientSmlLine.c b/source/client/src/clientSmlLine.c index f56ad34fc5..d93fdf198f 100644 --- a/source/client/src/clientSmlLine.c +++ b/source/client/src/clientSmlLine.c @@ -57,52 +57,6 @@ uint8_t smlPrecisionConvert[7] = {TSDB_TIME_PRECISION_NANO, TSDB_TIME_PRECISION_ TSDB_TIME_PRECISION_SECONDS, TSDB_TIME_PRECISION_MILLI, TSDB_TIME_PRECISION_MICRO, TSDB_TIME_PRECISION_NANO}; -static bool smlParseBool(SSmlKv *kvVal) { - const char *pVal = kvVal->value; - int32_t len = kvVal->length; - if ((len == 1) && (pVal[0] == 't' || pVal[0] == 'T')) { - kvVal->i = TSDB_TRUE; - return true; - } - - if ((len == 1) && (pVal[0] == 'f' || pVal[0] == 'F')) { - kvVal->i = TSDB_FALSE; - return true; - } - - if ((len == 4) && !strncasecmp(pVal, "true", len)) { - kvVal->i = TSDB_TRUE; - return true; - } - if ((len == 5) && !strncasecmp(pVal, "false", len)) { - kvVal->i = TSDB_FALSE; - return true; - } - return false; -} - -static bool smlIsBinary(const char *pVal, uint16_t len) { - // binary: "abc" - if (len < 2) { - return false; - } - if (pVal[0] == '"' && pVal[len - 1] == '"') { - return true; - } - return false; -} - -static bool smlIsNchar(const char *pVal, uint16_t len) { - // nchar: L"abc" - if (len < 3) { - return false; - } - if (pVal[1] == '"' && pVal[len - 1] == '"' && (pVal[0] == 'l' || pVal[0] == 'L')) { - return true; - } - return false; -} - static int64_t smlParseInfluxTime(SSmlHandle *info, const char *data, int32_t len) { uint8_t toPrecision = info->currSTableMeta ? info->currSTableMeta->tableInfo.precision : TSDB_TIME_PRECISION_NANO; @@ -189,6 +143,7 @@ static int32_t smlParseTagKv(SSmlHandle *info, char **sql, char *sqlEnd, int cnt = 0; SArray *preLineKV = info->preLineTagKV; + SArray *maxKVs = info->maxTagKVs; bool isSuperKVInit = true; SArray *superKV = NULL; if(info->dataFormat){ @@ -212,12 +167,12 @@ static int32_t smlParseTagKv(SSmlHandle *info, char **sql, char *sqlEnd, if(unlikely(taosArrayGetSize(superKV) == 0)){ isSuperKVInit = false; } - taosArraySetSize(preLineKV, 0); + taosArraySetSize(maxKVs, 0); } }else{ - taosArraySetSize(preLineKV, 0); + taosArraySetSize(maxKVs, 0); } - + taosArraySetSize(preLineKV, 0); while (*sql < sqlEnd) { if (unlikely(IS_SPACE(*sql))) { @@ -295,14 +250,14 @@ static int32_t smlParseTagKv(SSmlHandle *info, char **sql, char *sqlEnd, } if(isSameMeasure){ - if(unlikely(cnt >= taosArrayGetSize(preLineKV))) { + if(unlikely(cnt >= taosArrayGetSize(maxKVs))) { info->dataFormat = false; info->reRun = true; return TSDB_CODE_SUCCESS; } - SSmlKv *preKV = (SSmlKv *)taosArrayGet(preLineKV, cnt); - if(unlikely(kv.length > preKV->length)){ - preKV->length = kv.length; + SSmlKv *maxKV = (SSmlKv *)taosArrayGet(maxKVs, cnt); + if(unlikely(kv.length > maxKV->length)){ + maxKV->length = kv.length; SSmlSTableMeta *tableMeta = (SSmlSTableMeta *)nodeListGet(info->superTables, currElement->measure, currElement->measureLen, NULL); ASSERT(tableMeta != NULL); @@ -322,11 +277,11 @@ static int32_t smlParseTagKv(SSmlHandle *info, char **sql, char *sqlEnd, info->reRun = true; return TSDB_CODE_SUCCESS; } - SSmlKv *preKV = (SSmlKv *)taosArrayGet(superKV, cnt); - if(unlikely(kv.length > preKV->length)) { - preKV->length = kv.length; + SSmlKv *maxKV = (SSmlKv *)taosArrayGet(superKV, cnt); + if(unlikely(kv.length > maxKV->length)) { + maxKV->length = kv.length; }else{ - kv.length = preKV->length; + kv.length = maxKV->length; } info->needModifySchema = true; @@ -338,11 +293,12 @@ static int32_t smlParseTagKv(SSmlHandle *info, char **sql, char *sqlEnd, }else{ taosArrayPush(superKV, &kv); } - taosArrayPush(preLineKV, &kv); + taosArrayPush(maxKVs, &kv); } }else{ - taosArrayPush(preLineKV, &kv); + taosArrayPush(maxKVs, &kv); } + taosArrayPush(preLineKV, &kv); cnt++; if(IS_SPACE(*sql)){ @@ -518,15 +474,15 @@ static int32_t smlParseColKv(SSmlHandle *info, char **sql, char *sqlEnd, info->reRun = true; return TSDB_CODE_SUCCESS; } - SSmlKv *preKV = (SSmlKv *)taosArrayGet(preLineKV, cnt); - if(kv.type != preKV->type){ + SSmlKv *maxKV = (SSmlKv *)taosArrayGet(preLineKV, cnt); + if(kv.type != maxKV->type){ info->dataFormat = false; info->reRun = true; return TSDB_CODE_SUCCESS; } - if(unlikely(IS_VAR_DATA_TYPE(kv.type) && kv.length > preKV->length)){ - preKV->length = kv.length; + if(unlikely(IS_VAR_DATA_TYPE(kv.type) && kv.length > maxKV->length)){ + maxKV->length = kv.length; SSmlSTableMeta *tableMeta = (SSmlSTableMeta *)nodeListGet(info->superTables, currElement->measure, currElement->measureLen, NULL); ASSERT(tableMeta != NULL); @@ -546,18 +502,18 @@ static int32_t smlParseColKv(SSmlHandle *info, char **sql, char *sqlEnd, info->reRun = true; return TSDB_CODE_SUCCESS; } - SSmlKv *preKV = (SSmlKv *)taosArrayGet(superKV, cnt); - if(unlikely(kv.type != preKV->type)){ + SSmlKv *maxKV = (SSmlKv *)taosArrayGet(superKV, cnt); + if(unlikely(kv.type != maxKV->type)){ info->dataFormat = false; info->reRun = true; return TSDB_CODE_SUCCESS; } if(IS_VAR_DATA_TYPE(kv.type)){ - if(kv.length > preKV->length) { - preKV->length = kv.length; + if(kv.length > maxKV->length) { + maxKV->length = kv.length; }else{ - kv.length = preKV->length; + kv.length = maxKV->length; } info->needModifySchema = true; } diff --git a/source/client/src/clientSmlTelnet.c b/source/client/src/clientSmlTelnet.c index 53a7e3e81e..a1ddfddfd0 100644 --- a/source/client/src/clientSmlTelnet.c +++ b/source/client/src/clientSmlTelnet.c @@ -73,6 +73,7 @@ static int32_t smlParseTelnetTags(SSmlHandle *info, char *data, char *sqlEnd, SS int cnt = 0; SArray *preLineKV = info->preLineTagKV; + SArray *maxKVs = info->maxTagKVs; bool isSuperKVInit = true; SArray *superKV = NULL; if(info->dataFormat){ @@ -96,12 +97,13 @@ static int32_t smlParseTelnetTags(SSmlHandle *info, char *data, char *sqlEnd, SS if(unlikely(taosArrayGetSize(superKV) == 0)){ isSuperKVInit = false; } - taosArraySetSize(preLineKV, 0); + taosArraySetSize(maxKVs, 0); } }else{ - taosArraySetSize(preLineKV, 0); + taosArraySetSize(maxKVs, 0); } + taosArraySetSize(preLineKV, 0); const char *sql = data; while (sql < sqlEnd) { JUMP_SPACE(sql, sqlEnd) @@ -168,14 +170,14 @@ static int32_t smlParseTelnetTags(SSmlHandle *info, char *data, char *sqlEnd, SS } if(isSameMeasure){ - if(unlikely(cnt >= taosArrayGetSize(preLineKV))) { + if(unlikely(cnt >= taosArrayGetSize(maxKVs))) { info->dataFormat = false; info->reRun = true; return TSDB_CODE_SUCCESS; } - SSmlKv *preKV = (SSmlKv *)taosArrayGet(preLineKV, cnt); - if(unlikely(kv.length > preKV->length)){ - preKV->length = kv.length; + SSmlKv *maxKV = (SSmlKv *)taosArrayGet(maxKVs, cnt); + if(unlikely(kv.length > maxKV->length)){ + maxKV->length = kv.length; SSmlSTableMeta *tableMeta = (SSmlSTableMeta *)nodeListGet(info->superTables, elements->measure, elements->measureLen, NULL); ASSERT(tableMeta != NULL); @@ -195,11 +197,11 @@ static int32_t smlParseTelnetTags(SSmlHandle *info, char *data, char *sqlEnd, SS info->reRun = true; return TSDB_CODE_SUCCESS; } - SSmlKv *preKV = (SSmlKv *)taosArrayGet(superKV, cnt); - if(unlikely(kv.length > preKV->length)) { - preKV->length = kv.length; + SSmlKv *maxKV = (SSmlKv *)taosArrayGet(superKV, cnt); + if(unlikely(kv.length > maxKV->length)) { + maxKV->length = kv.length; }else{ - kv.length = preKV->length; + kv.length = maxKV->length; } info->needModifySchema = true; @@ -211,11 +213,12 @@ static int32_t smlParseTelnetTags(SSmlHandle *info, char *data, char *sqlEnd, SS }else{ taosArrayPush(superKV, &kv); } - taosArrayPush(preLineKV, &kv); + taosArrayPush(maxKVs, &kv); } }else{ - taosArrayPush(preLineKV, &kv); + taosArrayPush(maxKVs, &kv); } + taosArrayPush(preLineKV, &kv); cnt++; } SSmlTableInfo *tinfo = (SSmlTableInfo *)nodeListGet(info->childTables, elements, POINTER_BYTES, is_same_child_table_telnet); From 8905a4839e62e808bf32b28648802788e762e26a Mon Sep 17 00:00:00 2001 From: kailixu Date: Mon, 2 Jan 2023 15:57:36 +0800 Subject: [PATCH 18/34] fix: tsma result submit for row/column update --- source/common/src/tdatablock.c | 20 ++++++++++++++++++-- source/dnode/vnode/src/sma/smaTimeRange.c | 2 +- source/dnode/vnode/src/tq/tqSink.c | 4 ++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index 4373f309ca..a910402796 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -1879,7 +1879,7 @@ void blockDebugShowDataBlocks(const SArray* dataBlocks, const char* flag) { char pBuf[128] = {0}; int32_t sz = taosArrayGetSize(dataBlocks); for (int32_t i = 0; i < sz; i++) { - SSDataBlock* pDataBlock = taosArrayGetP(dataBlocks, i); + SSDataBlock* pDataBlock = taosArrayGet(dataBlocks, i); size_t numOfCols = taosArrayGetSize(pDataBlock->pDataBlock); int32_t rows = pDataBlock->info.rows; @@ -1891,21 +1891,37 @@ void blockDebugShowDataBlocks(const SArray* dataBlocks, const char* flag) { for (int32_t k = 0; k < numOfCols; k++) { SColumnInfoData* pColInfoData = taosArrayGet(pDataBlock->pDataBlock, k); void* var = POINTER_SHIFT(pColInfoData->pData, j * pColInfoData->info.bytes); + if (k == 0) { + printf("cols:%d |", (int32_t)numOfCols); + } if (colDataIsNull(pColInfoData, rows, j, NULL)) { printf(" %15s |", "NULL"); continue; } + switch (pColInfoData->info.type) { case TSDB_DATA_TYPE_TIMESTAMP: formatTimestamp(pBuf, *(uint64_t*)var, TSDB_TIME_PRECISION_MILLI); printf(" %25s |", pBuf); break; case TSDB_DATA_TYPE_BOOL: - printf(" %15d |", *(int32_t*)var); + printf(" %15" PRIi8 " |", *(int8_t*)var); + break; + case TSDB_DATA_TYPE_TINYINT: + printf(" %15" PRIi8 " |", *(int8_t*)var); + break; + case TSDB_DATA_TYPE_SMALLINT: + printf(" %15" PRIi8 " |", *(int16_t*)var); break; case TSDB_DATA_TYPE_INT: printf(" %15d |", *(int32_t*)var); break; + case TSDB_DATA_TYPE_UTINYINT: + printf(" %15" PRIi8 " |", *(int8_t*)var); + break; + case TSDB_DATA_TYPE_USMALLINT: + printf(" %15" PRIi8 " |", *(int16_t*)var); + break; case TSDB_DATA_TYPE_UINT: printf(" %15u |", *(uint32_t*)var); break; diff --git a/source/dnode/vnode/src/sma/smaTimeRange.c b/source/dnode/vnode/src/sma/smaTimeRange.c index e633d93de6..2b96307c6a 100644 --- a/source/dnode/vnode/src/sma/smaTimeRange.c +++ b/source/dnode/vnode/src/sma/smaTimeRange.c @@ -241,7 +241,7 @@ static int32_t tdProcessTSmaInsertImpl(SSma *pSma, int64_t indexUid, const char SRpcMsg submitReqMsg = { .msgType = TDMT_VND_SUBMIT, .pCont = pSubmitReq, - .contLen = ntohl(contLen), + .contLen = contLen, }; if (tmsgPutToQueue(&pSma->pVnode->msgCb, WRITE_QUEUE, &submitReqMsg) < 0) { diff --git a/source/dnode/vnode/src/tq/tqSink.c b/source/dnode/vnode/src/tq/tqSink.c index e8f2555f17..342b4ea6ba 100644 --- a/source/dnode/vnode/src/tq/tqSink.c +++ b/source/dnode/vnode/src/tq/tqSink.c @@ -426,7 +426,7 @@ int32_t tqBlockToSubmit(SVnode* pVnode, const SArray* pBlocks, const STSchema* p goto _end; } - for (int32_t j = 0; j < rows; j++) { + for (int32_t j = 0; j < rows; ++j) { taosArrayClear(pVals); for (int32_t k = 0; k < pTSchema->numOfCols; k++) { const STColumn* pCol = &pTSchema->columns[k]; @@ -469,7 +469,7 @@ int32_t tqBlockToSubmit(SVnode* pVnode, const SArray* pBlocks, const STSchema* p if (NULL == pBuf) { goto _end; } - ((SMsgHead*)pBuf)->vgId = htonl(TD_VID(pVnode)); + ((SMsgHead*)pBuf)->vgId = TD_VID(pVnode); ((SMsgHead*)pBuf)->contLen = htonl(len); tEncoderInit(&encoder, POINTER_SHIFT(pBuf, sizeof(SMsgHead)), len - sizeof(SMsgHead)); if (tEncodeSSubmitReq2(&encoder, pReq) < 0) { From 1cb2e865d6f8bdfd01285b99c0e653eab49299ed Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Mon, 2 Jan 2023 17:53:03 +0800 Subject: [PATCH 19/34] fix:error in schemaless --- source/client/src/clientSmlTelnet.c | 5 +++ source/client/test/smlTest.cpp | 58 ++++++++++++++--------------- tests/parallel_test/cases.task | 8 ++-- utils/test/c/sml_test.c | 20 +++++----- 4 files changed, 49 insertions(+), 42 deletions(-) diff --git a/source/client/src/clientSmlTelnet.c b/source/client/src/clientSmlTelnet.c index a1ddfddfd0..a8cbcfe0fa 100644 --- a/source/client/src/clientSmlTelnet.c +++ b/source/client/src/clientSmlTelnet.c @@ -23,6 +23,11 @@ int32_t is_same_child_table_telnet(const void *a, const void *b){ SSmlLineInfo *t1 = (SSmlLineInfo *)a; SSmlLineInfo *t2 = (SSmlLineInfo *)b; + uError("is_same_child_table_telnet len:%d,%d %s,%s @@@ len:%d,%d %s,%s", t1->measureLen, t2->measureLen, + t1->measure, t2->measure, t1->tagsLen, t2->tagsLen, t1->tags, t2->tags); + if(t1 == NULL || t2 == NULL || t1->measure == NULL || t2->measure == NULL + || t1->tags == NULL || t2->tags == NULL) + return 1; return (((t1->measureLen == t2->measureLen) && memcmp(t1->measure, t2->measure, t1->measureLen) == 0) && ((t1->tagsLen == t2->tagsLen) && memcmp(t1->tags, t2->tags, t1->tagsLen) == 0)) ? 0 : 1; } diff --git a/source/client/test/smlTest.cpp b/source/client/test/smlTest.cpp index 4ff638b802..76911e229a 100644 --- a/source/client/test/smlTest.cpp +++ b/source/client/test/smlTest.cpp @@ -503,35 +503,35 @@ TEST(testCase, smlParseTelnetLine_Test) { smlDestroyInfo(info); } -TEST(testCase, smlParseTelnetLine_diff_json_type2_Test) { - SSmlHandle *info = smlBuildSmlInfo(NULL); - info->protocol = TSDB_SML_JSON_PROTOCOL; - ASSERT_NE(info, nullptr); - - const char *sql[] = { - "[{\"metric\":\"sys.cpu.nice\",\"timestamp\": 1346846400,\"value\": 18,\"tags\": {\"host\": \"lga\"}},{\"metric\": \"sys.sdfa\",\"timestamp\": 1346846400,\"value\": \"18\",\"tags\": {\"host\": 8932}},]", - }; - for (int i = 0; i < sizeof(sql) / sizeof(sql[0]); i++) { - char *dataPointStart = (char *)sql[i]; - int8_t offset[4] = {0}; - while (1) { - SSmlLineInfo elements = {0}; - if(offset[0] == 0){ - smlJsonParseObjFirst(&dataPointStart, &elements, offset); - }else{ - smlJsonParseObj(&dataPointStart, &elements, offset); - } - if(*dataPointStart == '\0') break; - - SArray *tags = smlJsonParseTags(elements.tags, elements.tags + elements.tagsLen); - size_t num = taosArrayGetSize(tags); - ASSERT_EQ(num, 1); - - taosArrayDestroy(tags); - } - } - smlDestroyInfo(info); -} +//TEST(testCase, smlParseTelnetLine_diff_json_type2_Test) { +// SSmlHandle *info = smlBuildSmlInfo(NULL); +// info->protocol = TSDB_SML_JSON_PROTOCOL; +// ASSERT_NE(info, nullptr); +// +// const char *sql[] = { +// "[{\"metric\":\"sys.cpu.nice\",\"timestamp\": 1346846400,\"value\": 18,\"tags\": {\"host\": \"lga\"}},{\"metric\": \"sys.sdfa\",\"timestamp\": 1346846400,\"value\": \"18\",\"tags\": {\"host\": 8932}},]", +// }; +// for (int i = 0; i < sizeof(sql) / sizeof(sql[0]); i++) { +// char *dataPointStart = (char *)sql[i]; +// int8_t offset[4] = {0}; +// while (1) { +// SSmlLineInfo elements = {0}; +// if(offset[0] == 0){ +// smlJsonParseObjFirst(&dataPointStart, &elements, offset); +// }else{ +// smlJsonParseObj(&dataPointStart, &elements, offset); +// } +// if(*dataPointStart == '\0') break; +// +// SArray *tags = smlJsonParseTags(elements.tags, elements.tags + elements.tagsLen); +// size_t num = taosArrayGetSize(tags); +// ASSERT_EQ(num, 1); +// +// taosArrayDestroy(tags); +// } +// } +// smlDestroyInfo(info); +//} TEST(testCase, smlParseNumber_performance_Test) { char msg[256] = {0}; diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 0bb4f85dde..8e635999ce 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -420,8 +420,8 @@ ,,n,system-test,python3 ./test.py -f 0-others/compatibility.py ,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/alter_database.py ,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/influxdb_line_taosc_insert.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/opentsdb_telnet_line_taosc_insert.py -,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/opentsdb_json_taosc_insert.py +,,n,system-test,./pytest.sh python3 ./test.py -f 1-insert/opentsdb_telnet_line_taosc_insert.py +,,n,system-test,./pytest.sh python3 ./test.py -f 1-insert/opentsdb_json_taosc_insert.py ,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/test_stmt_muti_insert_query.py ,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/test_stmt_set_tbname_tag.py ,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/alter_stable.py @@ -1030,7 +1030,7 @@ ,,y,system-test,./pytest.sh python3 ./test.py -f 99-TDcase/TD-20582.py #develop test -#,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/auto_create_table_json.py +,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/auto_create_table_json.py ,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/custom_col_tag.py ,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/default_json.py ,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/demo.py @@ -1039,7 +1039,7 @@ ,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/json_tag.py ,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/query_json.py ,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/sample_csv_json.py -#,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/sml_json_alltypes.py +,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/sml_json_alltypes.py ,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/taosdemoTestQueryWithJson.py -R ,,n,develop-test,python3 ./test.py -f 5-taos-tools/taosbenchmark/telnet_tcp.py -R diff --git a/utils/test/c/sml_test.c b/utils/test/c/sml_test.c index 49885c0aea..7590456ba4 100644 --- a/utils/test/c/sml_test.c +++ b/utils/test/c/sml_test.c @@ -78,21 +78,23 @@ int smlProcess_telnet_Test() { pRes = taos_query(taos, "use sml_db"); taos_free_result(pRes); - char *sql[4] = {0}; - sql[0] = taosMemoryCalloc(1, 128); - sql[1] = taosMemoryCalloc(1, 128); - sql[2] = taosMemoryCalloc(1, 128); - sql[3] = taosMemoryCalloc(1, 128); +// char *sql[4] = {0}; +// sql[0] = taosMemoryCalloc(1, 128); +// sql[1] = taosMemoryCalloc(1, 128); +// sql[2] = taosMemoryCalloc(1, 128); +// sql[3] = taosMemoryCalloc(1, 128); const char *sql1[] = {"sys.if.bytes.out 1479496100 1.3E0 host=web01 interface=eth0", "sys.if.bytes.out 1479496101 1.3E1 interface=eth0 host=web01 ", "sys.if.bytes.out 1479496102 1.3E3 network=tcp", " sys.procs.running 1479496100 42 host=web01 "}; - for(int i = 0; i < 4; i++){ - strncpy(sql[i], sql1[i], 128); - } +// for(int i = 0; i < 4; i++){ +// strncpy(sql[i], sql1[i], 128); +// } - pRes = taos_schemaless_insert(taos, (char **)sql, sizeof(sql) / sizeof(sql[0]), TSDB_SML_TELNET_PROTOCOL, +// pRes = taos_schemaless_insert(taos, (char **)sql, sizeof(sql) / sizeof(sql[0]), TSDB_SML_TELNET_PROTOCOL, +// TSDB_SML_TIMESTAMP_NANO_SECONDS); + pRes = taos_schemaless_insert(taos, (char **)sql1, sizeof(sql1) / sizeof(sql1[0]), TSDB_SML_TELNET_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS); printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); int code = taos_errno(pRes); From 2e07db6eb37513ca9c4cf47b547bc160f93bc53c Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Tue, 3 Jan 2023 09:44:34 +0800 Subject: [PATCH 20/34] test: update tbnameTagsColsNameCheckCase for seq --- tests/system-test/1-insert/opentsdb_json_taosc_insert.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/system-test/1-insert/opentsdb_json_taosc_insert.py b/tests/system-test/1-insert/opentsdb_json_taosc_insert.py index da3c659e17..5e493eab0a 100644 --- a/tests/system-test/1-insert/opentsdb_json_taosc_insert.py +++ b/tests/system-test/1-insert/opentsdb_json_taosc_insert.py @@ -1432,9 +1432,9 @@ class TDTestCase: self._conn.schemaless_insert([json.dumps(input_json)], TDSmlProtocolType.JSON.value, None) query_sql = 'select * from `rFa$sta`' query_res = tdSql.query(query_sql, True) - tdSql.checkEqual(query_res, [(datetime.datetime(2021, 7, 11, 20, 33, 54), True, 'rFas$ta_1', 'ncharTagValue', 2147483647, 9223372036854775807, 22.123456789, 'binaryTagValue', 32767, 11.12345027923584, False, 127)]) + tdSql.checkEqual(query_res, [(datetime.datetime(2021, 7, 11, 20, 33, 54), True, False, 127, 32767, 2147483647, 9223372036854775807, 11.12345027923584, 22.123456789, 'binaryTagValue', 'ncharTagValue', 'rFas$ta_1')]) col_tag_res = tdSql.getColNameList(query_sql) - tdSql.checkEqual(col_tag_res, ['_ts', '_value', 'id', 't!@#$%^&*()_+[];:<>?,9', 't$3', 't%4', 't&6', 't*7', 't@2', 't^5', 'Tt!0', 'tT@1']) + tdSql.checkEqual(col_tag_res, ['_ts', '_value', 'Tt!0', 'tT@1', 't@2', 't$3', 't%4', 't^5', 't&6', 't*7', 't!@#$%^&*()_+[];:<>?,9', 'id']) tdSql.execute('drop table `rFa$sta`') def pointTransCheckCase(self, value_type="obj"): @@ -1758,7 +1758,7 @@ class TDTestCase: self.batchErrorInsertCheckCase() self.chineseCheckCase() # self.spellCheckCase() - # self.tbnameTagsColsNameCheckCase() + self.tbnameTagsColsNameCheckCase() # # MultiThreads # self.sStbStbDdataInsertMultiThreadCheckCase() # self.sStbStbDdataAtInsertMultiThreadCheckCase() From 25f24af05d310abd82d6d904be53a891782d88dc Mon Sep 17 00:00:00 2001 From: xinsheng Ren <285808407@qq.com> Date: Tue, 3 Jan 2023 10:19:32 +0800 Subject: [PATCH 21/34] add os subtest (#19304) * add os subtest * fix/test.cpp include header file Co-authored-by: facetosea <25808407@qq.com> --- source/os/CMakeLists.txt | 6 +++++- source/os/test/osTests.cpp | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/source/os/CMakeLists.txt b/source/os/CMakeLists.txt index 5d9b6ee5cc..3aac5e9775 100644 --- a/source/os/CMakeLists.txt +++ b/source/os/CMakeLists.txt @@ -59,4 +59,8 @@ endif() IF (JEMALLOC_ENABLED) target_link_libraries(os PUBLIC -ljemalloc) -ENDIF () \ No newline at end of file +ENDIF () + +if(${BUILD_TEST}) + add_subdirectory(test) +endif(${BUILD_TEST}) \ No newline at end of file diff --git a/source/os/test/osTests.cpp b/source/os/test/osTests.cpp index d79e1934de..cde31cf707 100644 --- a/source/os/test/osTests.cpp +++ b/source/os/test/osTests.cpp @@ -27,6 +27,7 @@ #pragma GCC diagnostic ignored "-Wpointer-arith" #include "os.h" +#include "tlog.h" TEST(osTest, osSystem) { const char *flags = "UTL FATAL "; From 88b4a904accfcc816d46f93880d9611f3c5df1e0 Mon Sep 17 00:00:00 2001 From: kailixu Date: Tue, 3 Jan 2023 10:27:58 +0800 Subject: [PATCH 22/34] chore: print format --- source/common/src/tdatablock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index a910402796..91653fada7 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -1911,7 +1911,7 @@ void blockDebugShowDataBlocks(const SArray* dataBlocks, const char* flag) { printf(" %15" PRIi8 " |", *(int8_t*)var); break; case TSDB_DATA_TYPE_SMALLINT: - printf(" %15" PRIi8 " |", *(int16_t*)var); + printf(" %15" PRIi16 " |", *(int16_t*)var); break; case TSDB_DATA_TYPE_INT: printf(" %15d |", *(int32_t*)var); @@ -1920,7 +1920,7 @@ void blockDebugShowDataBlocks(const SArray* dataBlocks, const char* flag) { printf(" %15" PRIi8 " |", *(int8_t*)var); break; case TSDB_DATA_TYPE_USMALLINT: - printf(" %15" PRIi8 " |", *(int16_t*)var); + printf(" %15" PRIi16 " |", *(int16_t*)var); break; case TSDB_DATA_TYPE_UINT: printf(" %15u |", *(uint32_t*)var); From d34dc4bf5fbb115f870bed6629c6926bde7f83bd Mon Sep 17 00:00:00 2001 From: kailixu Date: Tue, 3 Jan 2023 10:29:24 +0800 Subject: [PATCH 23/34] chore: print format --- source/common/src/tdatablock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index 91653fada7..3dfa32ccc5 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -1917,10 +1917,10 @@ void blockDebugShowDataBlocks(const SArray* dataBlocks, const char* flag) { printf(" %15d |", *(int32_t*)var); break; case TSDB_DATA_TYPE_UTINYINT: - printf(" %15" PRIi8 " |", *(int8_t*)var); + printf(" %15" PRIu8 " |", *(uint8_t*)var); break; case TSDB_DATA_TYPE_USMALLINT: - printf(" %15" PRIi16 " |", *(int16_t*)var); + printf(" %15" PRIu16 " |", *(uint16_t*)var); break; case TSDB_DATA_TYPE_UINT: printf(" %15u |", *(uint32_t*)var); From eacde27fdb672dd5cae0a1189b83a5eb4e518c14 Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Tue, 3 Jan 2023 11:24:11 +0800 Subject: [PATCH 24/34] refactor: remove unused code --- source/dnode/vnode/src/inc/vnodeInt.h | 4 - source/dnode/vnode/src/sma/smaTimeRange.c | 199 ++++++++- source/dnode/vnode/src/tq/tqSink.c | 475 ---------------------- 3 files changed, 197 insertions(+), 481 deletions(-) diff --git a/source/dnode/vnode/src/inc/vnodeInt.h b/source/dnode/vnode/src/inc/vnodeInt.h index d160cd1fac..e7f0a6d297 100644 --- a/source/dnode/vnode/src/inc/vnodeInt.h +++ b/source/dnode/vnode/src/inc/vnodeInt.h @@ -203,10 +203,6 @@ int32_t tqProcessTaskRecoverFinishReq(STQ* pTq, SRpcMsg* pMsg); int32_t tqProcessTaskRecoverFinishRsp(STQ* pTq, SRpcMsg* pMsg); int32_t tqCheckLogInWal(STQ* pTq, int64_t version); -int32_t tqBlockToSubmit(SVnode* pVnode, const SArray* pBlocks, const STSchema* pSchema, - SSchemaWrapper* pTagSchemaWrapper, bool createTb, int64_t suid, const char* stbFullName, - SBatchDeleteReq* pDeleteReq, void** ppData, int32_t* pLen); - // sma int32_t smaInit(); void smaCleanUp(); diff --git a/source/dnode/vnode/src/sma/smaTimeRange.c b/source/dnode/vnode/src/sma/smaTimeRange.c index e633d93de6..2179d96fe1 100644 --- a/source/dnode/vnode/src/sma/smaTimeRange.c +++ b/source/dnode/vnode/src/sma/smaTimeRange.c @@ -155,6 +155,200 @@ _exit: return code; } +int32_t smaBlockToSubmit(SVnode *pVnode, const SArray *pBlocks, const STSchema *pTSchema, + SSchemaWrapper *pTagSchemaWrapper, bool createTb, int64_t suid, const char *stbFullName, + SBatchDeleteReq *pDeleteReq, void **ppData, int32_t *pLen) { + void *pBuf = NULL; + int32_t len = 0; + SSubmitReq2 *pReq = NULL; + SArray *tagArray = NULL; + SArray *createTbArray = NULL; + SArray *pVals = NULL; + + int32_t sz = taosArrayGetSize(pBlocks); + + if (!(tagArray = taosArrayInit(1, sizeof(STagVal)))) { + goto _end; + } + + if (!(createTbArray = taosArrayInit(sz, POINTER_BYTES))) { + goto _end; + } + + if (!(pReq = taosMemoryCalloc(1, sizeof(SSubmitReq2)))) { + terrno = TSDB_CODE_OUT_OF_MEMORY; + goto _end; + } + + if (!(pReq->aSubmitTbData = taosArrayInit(1, sizeof(SSubmitTbData)))) { + goto _end; + } + + // create table req + if (createTb) { + for (int32_t i = 0; i < sz; ++i) { + SSDataBlock *pDataBlock = taosArrayGet(pBlocks, i); + SVCreateTbReq *pCreateTbReq = NULL; + if (pDataBlock->info.type == STREAM_DELETE_RESULT) { + taosArrayPush(createTbArray, &pCreateTbReq); + continue; + } + + if (!(pCreateTbReq = taosMemoryCalloc(1, sizeof(SVCreateStbReq)))) { + goto _end; + }; + + // don't move to the end of loop as to destroy in the end of func when error occur + taosArrayPush(createTbArray, &pCreateTbReq); + + // set const + pCreateTbReq->flags = 0; + pCreateTbReq->type = TSDB_CHILD_TABLE; + pCreateTbReq->ctb.suid = suid; + + // set super table name + SName name = {0}; + tNameFromString(&name, stbFullName, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); + pCreateTbReq->ctb.stbName = strdup((char *)tNameGetTableName(&name)); // strdup(stbFullName); + + // set tag content + taosArrayClear(tagArray); + STagVal tagVal = { + .cid = taosArrayGetSize(pDataBlock->pDataBlock) + 1, + .type = TSDB_DATA_TYPE_UBIGINT, + .i64 = (int64_t)pDataBlock->info.id.groupId, + }; + taosArrayPush(tagArray, &tagVal); + pCreateTbReq->ctb.tagNum = taosArrayGetSize(tagArray); + + STag *pTag = NULL; + tTagNew(tagArray, 1, false, &pTag); + if (pTag == NULL) { + terrno = TSDB_CODE_OUT_OF_MEMORY; + goto _end; + } + pCreateTbReq->ctb.pTag = (uint8_t *)pTag; + + // set tag name + SArray *tagName = taosArrayInit(1, TSDB_COL_NAME_LEN); + char tagNameStr[TSDB_COL_NAME_LEN] = {0}; + strcpy(tagNameStr, "group_id"); + taosArrayPush(tagName, tagNameStr); + pCreateTbReq->ctb.tagName = tagName; + + // set table name + if (pDataBlock->info.parTbName[0]) { + pCreateTbReq->name = strdup(pDataBlock->info.parTbName); + } else { + pCreateTbReq->name = buildCtbNameByGroupId(stbFullName, pDataBlock->info.id.groupId); + } + } + } + + // SSubmitTbData req + for (int32_t i = 0; i < sz; ++i) { + SSDataBlock *pDataBlock = taosArrayGet(pBlocks, i); + if (pDataBlock->info.type == STREAM_DELETE_RESULT) { + pDeleteReq->suid = suid; + pDeleteReq->deleteReqs = taosArrayInit(0, sizeof(SSingleDeleteReq)); + tqBuildDeleteReq(pVnode, stbFullName, pDataBlock, pDeleteReq); + continue; + } + + int32_t rows = pDataBlock->info.rows; + + SSubmitTbData *pTbData = (SSubmitTbData *)taosMemoryCalloc(1, sizeof(SSubmitTbData)); + if (!pTbData) { + terrno = TSDB_CODE_OUT_OF_MEMORY; + goto _end; + } + + if (!(pTbData->aRowP = taosArrayInit(rows, sizeof(SRow *)))) { + taosMemoryFree(pTbData); + goto _end; + } + pTbData->suid = suid; + pTbData->uid = 0; // uid is assigned by vnode + pTbData->sver = pTSchema->version; + + if (createTb) { + pTbData->pCreateTbReq = taosArrayGetP(createTbArray, i); + if (pTbData->pCreateTbReq) pTbData->flags = SUBMIT_REQ_AUTO_CREATE_TABLE; + } + + if (!pVals && !(pVals = taosArrayInit(pTSchema->numOfCols, sizeof(SColVal)))) { + taosArrayDestroy(pTbData->aRowP); + taosMemoryFree(pTbData); + goto _end; + } + + for (int32_t j = 0; j < rows; j++) { + taosArrayClear(pVals); + for (int32_t k = 0; k < pTSchema->numOfCols; k++) { + const STColumn *pCol = &pTSchema->columns[k]; + SColumnInfoData *pColData = taosArrayGet(pDataBlock->pDataBlock, k); + if (colDataIsNull_s(pColData, j)) { + SColVal cv = COL_VAL_NULL(pCol->colId, pCol->type); + taosArrayPush(pVals, &cv); + } else { + void *data = colDataGetData(pColData, j); + if (IS_STR_DATA_TYPE(pCol->type)) { + SValue sv = (SValue){.nData = varDataLen(data), .pData = varDataVal(data)}; // address copy, no value + SColVal cv = COL_VAL_VALUE(pCol->colId, pCol->type, sv); + taosArrayPush(pVals, &cv); + } else { + SValue sv; + memcpy(&sv.val, data, tDataTypes[pCol->type].bytes); + SColVal cv = COL_VAL_VALUE(pCol->colId, pCol->type, sv); + taosArrayPush(pVals, &cv); + } + } + } + SRow *pRow = NULL; + if ((terrno = tRowBuild(pVals, (STSchema *)pTSchema, &pRow)) < 0) { + tDestroySSubmitTbData(pTbData, TSDB_MSG_FLG_ENCODE); + goto _end; + } + ASSERT(pRow); + taosArrayPush(pTbData->aRowP, &pRow); + } + + taosArrayPush(pReq->aSubmitTbData, pTbData); + } + + // encode + tEncodeSize(tEncodeSSubmitReq2, pReq, len, terrno); + if (TSDB_CODE_SUCCESS == terrno) { + SEncoder encoder; + len += sizeof(SMsgHead); + pBuf = rpcMallocCont(len); + if (NULL == pBuf) { + goto _end; + } + ((SMsgHead *)pBuf)->vgId = htonl(TD_VID(pVnode)); + ((SMsgHead *)pBuf)->contLen = htonl(len); + tEncoderInit(&encoder, POINTER_SHIFT(pBuf, sizeof(SMsgHead)), len - sizeof(SMsgHead)); + if (tEncodeSSubmitReq2(&encoder, pReq) < 0) { + terrno = TSDB_CODE_OUT_OF_MEMORY; + tqError("failed to encode submit req since %s", terrstr()); + } + tEncoderClear(&encoder); + } +_end: + taosArrayDestroy(tagArray); + taosArrayDestroy(pVals); + tDestroySSubmitReq2(pReq, TSDB_MSG_FLG_ENCODE); + + if (terrno != 0) { + rpcFreeCont(pBuf); + taosArrayDestroy(pDeleteReq->deleteReqs); + return TSDB_CODE_FAILED; + } + if (ppData) *ppData = pBuf; + if (pLen) *pLen = len; + return TSDB_CODE_SUCCESS; +} + /** * @brief Insert/Update Time-range-wise SMA data. * @@ -220,8 +414,9 @@ static int32_t tdProcessTSmaInsertImpl(SSma *pSma, int64_t indexUid, const char void *pSubmitReq = NULL; int32_t contLen = 0; - if (tqBlockToSubmit(pSma->pVnode, (const SArray *)msg, pTsmaStat->pTSchema, &pTsmaStat->pTSma->schemaTag, true, - pTsmaStat->pTSma->dstTbUid, pTsmaStat->pTSma->dstTbName, &deleteReq, &pSubmitReq, &contLen) < 0) { + if (smaBlockToSubmit(pSma->pVnode, (const SArray *)msg, pTsmaStat->pTSchema, &pTsmaStat->pTSma->schemaTag, true, + pTsmaStat->pTSma->dstTbUid, pTsmaStat->pTSma->dstTbName, &deleteReq, &pSubmitReq, + &contLen) < 0) { smaError("vgId:%d, failed to gen submit msg while tsma insert for smaIndex %" PRIi64 " since %s", SMA_VID(pSma), indexUid, tstrerror(terrno)); goto _err; diff --git a/source/dnode/vnode/src/tq/tqSink.c b/source/dnode/vnode/src/tq/tqSink.c index e8f2555f17..150ac57dfc 100644 --- a/source/dnode/vnode/src/tq/tqSink.c +++ b/source/dnode/vnode/src/tq/tqSink.c @@ -71,428 +71,6 @@ int32_t tqBuildDeleteReq(SVnode* pVnode, const char* stbFullName, const SSDataBl return 0; } -#if 0 -SSubmitReq* tqBlockToSubmit(SVnode* pVnode, const SArray* pBlocks, const STSchema* pTSchema, - SSchemaWrapper* pTagSchemaWrapper, bool createTb, int64_t suid, const char* stbFullName, - SBatchDeleteReq* pDeleteReq) { - SSubmitReq* ret = NULL; - SArray* schemaReqs = NULL; - SArray* schemaReqSz = NULL; - SArray* tagArray = taosArrayInit(1, sizeof(STagVal)); - if (!tagArray) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - return NULL; - } - - int32_t sz = taosArrayGetSize(pBlocks); - - if (createTb) { - schemaReqs = taosArrayInit(sz, sizeof(void*)); - schemaReqSz = taosArrayInit(sz, sizeof(int32_t)); - for (int32_t i = 0; i < sz; i++) { - SSDataBlock* pDataBlock = taosArrayGet(pBlocks, i); - if (pDataBlock->info.type == STREAM_DELETE_RESULT) { - int32_t padding1 = 0; - void* padding2 = NULL; - taosArrayPush(schemaReqSz, &padding1); - taosArrayPush(schemaReqs, &padding2); - continue; - } - - // STag* pTag = NULL; - // taosArrayClear(tagArray); - // SArray *tagName = taosArrayInit(1, TSDB_COL_NAME_LEN); - // for(int j = 0; j < pTagSchemaWrapper->nCols; j++){ - // STagVal tagVal = { - // .cid = pTagSchemaWrapper->pSchema[j].colId, - // .type = pTagSchemaWrapper->pSchema[j].type, - // .i64 = (int64_t)pDataBlock->info.id.groupId, - // }; - // taosArrayPush(tagArray, &tagVal); - // taosArrayPush(tagName, pTagSchemaWrapper->pSchema[j].name); - // } - // - // tTagNew(tagArray, 1, false, &pTag); - // if (pTag == NULL) { - // terrno = TSDB_CODE_OUT_OF_MEMORY; - // taosArrayDestroy(tagArray); - // taosArrayDestroy(tagName); - // return NULL; - // } - - SVCreateTbReq createTbReq = {0}; - - // set const - createTbReq.flags = 0; - createTbReq.type = TSDB_CHILD_TABLE; - createTbReq.ctb.suid = suid; - - // set super table name - SName name = {0}; - tNameFromString(&name, stbFullName, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); - createTbReq.ctb.stbName = strdup((char*)tNameGetTableName(&name)); // strdup(stbFullName); - - // set tag content - taosArrayClear(tagArray); - STagVal tagVal = { - .cid = taosArrayGetSize(pDataBlock->pDataBlock) + 1, - .type = TSDB_DATA_TYPE_UBIGINT, - .i64 = (int64_t)pDataBlock->info.id.groupId, - }; - taosArrayPush(tagArray, &tagVal); - createTbReq.ctb.tagNum = taosArrayGetSize(tagArray); - - STag* pTag = NULL; - tTagNew(tagArray, 1, false, &pTag); - if (pTag == NULL) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - taosArrayDestroy(tagArray); - taosArrayDestroyP(schemaReqs, taosMemoryFree); - taosArrayDestroy(schemaReqSz); - return NULL; - } - createTbReq.ctb.pTag = (uint8_t*)pTag; - - // set tag name - SArray* tagName = taosArrayInit(1, TSDB_COL_NAME_LEN); - char tagNameStr[TSDB_COL_NAME_LEN] = {0}; - strcpy(tagNameStr, "group_id"); - taosArrayPush(tagName, tagNameStr); - createTbReq.ctb.tagName = tagName; - - // set table name - if (pDataBlock->info.parTbName[0]) { - createTbReq.name = strdup(pDataBlock->info.parTbName); - } else { - createTbReq.name = buildCtbNameByGroupId(stbFullName, pDataBlock->info.id.groupId); - } - - // save schema len - int32_t code; - int32_t schemaLen; - tEncodeSize(tEncodeSVCreateTbReq, &createTbReq, schemaLen, code); - if (code < 0) { - tdDestroySVCreateTbReq(&createTbReq); - taosArrayDestroy(tagArray); - taosArrayDestroyP(schemaReqs, taosMemoryFree); - taosArrayDestroy(schemaReqSz); - return NULL; - } - taosArrayPush(schemaReqSz, &schemaLen); - - // save schema str - void* schemaStr = taosMemoryMalloc(schemaLen); - if (schemaStr == NULL) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - tdDestroySVCreateTbReq(&createTbReq); - taosArrayDestroy(tagArray); - taosArrayDestroyP(schemaReqs, taosMemoryFree); - taosArrayDestroy(schemaReqSz); - return NULL; - } - taosArrayPush(schemaReqs, &schemaStr); - - SEncoder encoder = {0}; - tEncoderInit(&encoder, schemaStr, schemaLen); - code = tEncodeSVCreateTbReq(&encoder, &createTbReq); - if (code < 0) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - tdDestroySVCreateTbReq(&createTbReq); - taosArrayDestroy(tagArray); - taosArrayDestroyP(schemaReqs, taosMemoryFree); - taosArrayDestroy(schemaReqSz); - tEncoderClear(&encoder); - return NULL; - } - tEncoderClear(&encoder); - tdDestroySVCreateTbReq(&createTbReq); - } - } - taosArrayDestroy(tagArray); - - // cal size - int32_t cap = sizeof(SSubmitReq); - for (int32_t i = 0; i < sz; i++) { - SSDataBlock* pDataBlock = taosArrayGet(pBlocks, i); - if (pDataBlock->info.type == STREAM_DELETE_RESULT) { - continue; - } - int32_t rows = pDataBlock->info.rows; - /*int32_t rowSize = pDataBlock->info.rowSize;*/ - int32_t maxLen = TD_ROW_MAX_BYTES_FROM_SCHEMA(pTSchema); - - int32_t schemaLen = 0; - if (createTb) { - schemaLen = *(int32_t*)taosArrayGet(schemaReqSz, i); - } - cap += sizeof(SSubmitBlk) + schemaLen + rows * maxLen; - } - - // assign data - ret = rpcMallocCont(cap); - ret->header.vgId = pVnode->config.vgId; - ret->length = sizeof(SSubmitReq); - ret->numOfBlocks = htonl(sz); - - SSubmitBlk* blkHead = POINTER_SHIFT(ret, sizeof(SSubmitReq)); - for (int32_t i = 0; i < sz; i++) { - SSDataBlock* pDataBlock = taosArrayGet(pBlocks, i); - if (pDataBlock->info.type == STREAM_DELETE_RESULT) { - pDeleteReq->suid = suid; - pDeleteReq->deleteReqs = taosArrayInit(0, sizeof(SSingleDeleteReq)); - tqBuildDeleteReq(pVnode, stbFullName, pDataBlock, pDeleteReq); - continue; - } - - blkHead->numOfRows = htonl(pDataBlock->info.rows); - blkHead->sversion = htonl(pTSchema->version); - blkHead->suid = htobe64(suid); - // uid is assigned by vnode - blkHead->uid = 0; - - int32_t rows = pDataBlock->info.rows; - - int32_t dataLen = 0; - int32_t schemaLen = 0; - void* blkSchema = POINTER_SHIFT(blkHead, sizeof(SSubmitBlk)); - if (createTb) { - schemaLen = *(int32_t*)taosArrayGet(schemaReqSz, i); - void* schemaStr = taosArrayGetP(schemaReqs, i); - memcpy(blkSchema, schemaStr, schemaLen); - } - blkHead->schemaLen = htonl(schemaLen); - - STSRow* rowData = POINTER_SHIFT(blkSchema, schemaLen); - for (int32_t j = 0; j < rows; j++) { - SRowBuilder rb = {0}; - tdSRowInit(&rb, pTSchema->version); - tdSRowSetTpInfo(&rb, pTSchema->numOfCols, pTSchema->flen); - tdSRowResetBuf(&rb, rowData); - - for (int32_t k = 0; k < pTSchema->numOfCols; k++) { - const STColumn* pColumn = &pTSchema->columns[k]; - SColumnInfoData* pColData = taosArrayGet(pDataBlock->pDataBlock, k); - if (colDataIsNull_s(pColData, j)) { - tdAppendColValToRow(&rb, pColumn->colId, pColumn->type, TD_VTYPE_NULL, NULL, false, pColumn->offset, k); - } else { - void* data = colDataGetData(pColData, j); - tdAppendColValToRow(&rb, pColumn->colId, pColumn->type, TD_VTYPE_NORM, data, true, pColumn->offset, k); - } - } - tdSRowEnd(&rb); - int32_t rowLen = TD_ROW_LEN(rowData); - rowData = POINTER_SHIFT(rowData, rowLen); - dataLen += rowLen; - } - blkHead->dataLen = htonl(dataLen); - - ret->length += sizeof(SSubmitBlk) + schemaLen + dataLen; - blkHead = POINTER_SHIFT(blkHead, sizeof(SSubmitBlk) + schemaLen + dataLen); - } - - ret->length = htonl(ret->length); - - taosArrayDestroyP(schemaReqs, taosMemoryFree); - taosArrayDestroy(schemaReqSz); - - return ret; -} -#endif - -int32_t tqBlockToSubmit(SVnode* pVnode, const SArray* pBlocks, const STSchema* pTSchema, - SSchemaWrapper* pTagSchemaWrapper, bool createTb, int64_t suid, const char* stbFullName, - SBatchDeleteReq* pDeleteReq, void** ppData, int32_t* pLen) { - void* pBuf = NULL; - int32_t len = 0; - SSubmitReq2* pReq = NULL; - SArray* tagArray = NULL; - SArray* createTbArray = NULL; - SArray* pVals = NULL; - - int32_t sz = taosArrayGetSize(pBlocks); - - if (!(tagArray = taosArrayInit(1, sizeof(STagVal)))) { - goto _end; - } - - if (!(createTbArray = taosArrayInit(sz, POINTER_BYTES))) { - goto _end; - } - - if (!(pReq = taosMemoryCalloc(1, sizeof(SSubmitReq2)))) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - goto _end; - } - - if (!(pReq->aSubmitTbData = taosArrayInit(1, sizeof(SSubmitTbData)))) { - goto _end; - } - - // create table req - if (createTb) { - for (int32_t i = 0; i < sz; ++i) { - SSDataBlock* pDataBlock = taosArrayGet(pBlocks, i); - SVCreateTbReq* pCreateTbReq = NULL; - if (pDataBlock->info.type == STREAM_DELETE_RESULT) { - taosArrayPush(createTbArray, &pCreateTbReq); - continue; - } - - if (!(pCreateTbReq = taosMemoryCalloc(1, sizeof(SVCreateStbReq)))) { - goto _end; - }; - - // don't move to the end of loop as to destroy in the end of func when error occur - taosArrayPush(createTbArray, &pCreateTbReq); - - // set const - pCreateTbReq->flags = 0; - pCreateTbReq->type = TSDB_CHILD_TABLE; - pCreateTbReq->ctb.suid = suid; - - // set super table name - SName name = {0}; - tNameFromString(&name, stbFullName, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); - pCreateTbReq->ctb.stbName = strdup((char*)tNameGetTableName(&name)); // strdup(stbFullName); - - // set tag content - taosArrayClear(tagArray); - STagVal tagVal = { - .cid = taosArrayGetSize(pDataBlock->pDataBlock) + 1, - .type = TSDB_DATA_TYPE_UBIGINT, - .i64 = (int64_t)pDataBlock->info.id.groupId, - }; - taosArrayPush(tagArray, &tagVal); - pCreateTbReq->ctb.tagNum = taosArrayGetSize(tagArray); - - STag* pTag = NULL; - tTagNew(tagArray, 1, false, &pTag); - if (pTag == NULL) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - goto _end; - } - pCreateTbReq->ctb.pTag = (uint8_t*)pTag; - - // set tag name - SArray* tagName = taosArrayInit(1, TSDB_COL_NAME_LEN); - char tagNameStr[TSDB_COL_NAME_LEN] = {0}; - strcpy(tagNameStr, "group_id"); - taosArrayPush(tagName, tagNameStr); - pCreateTbReq->ctb.tagName = tagName; - - // set table name - if (pDataBlock->info.parTbName[0]) { - pCreateTbReq->name = strdup(pDataBlock->info.parTbName); - } else { - pCreateTbReq->name = buildCtbNameByGroupId(stbFullName, pDataBlock->info.id.groupId); - } - } - } - - // SSubmitTbData req - for (int32_t i = 0; i < sz; ++i) { - SSDataBlock* pDataBlock = taosArrayGet(pBlocks, i); - if (pDataBlock->info.type == STREAM_DELETE_RESULT) { - pDeleteReq->suid = suid; - pDeleteReq->deleteReqs = taosArrayInit(0, sizeof(SSingleDeleteReq)); - tqBuildDeleteReq(pVnode, stbFullName, pDataBlock, pDeleteReq); - continue; - } - - int32_t rows = pDataBlock->info.rows; - - SSubmitTbData* pTbData = (SSubmitTbData*)taosMemoryCalloc(1, sizeof(SSubmitTbData)); - if (!pTbData) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - goto _end; - } - - if (!(pTbData->aRowP = taosArrayInit(rows, sizeof(SRow*)))) { - taosMemoryFree(pTbData); - goto _end; - } - pTbData->suid = suid; - pTbData->uid = 0; // uid is assigned by vnode - pTbData->sver = pTSchema->version; - - if (createTb) { - pTbData->pCreateTbReq = taosArrayGetP(createTbArray, i); - if (pTbData->pCreateTbReq) pTbData->flags = SUBMIT_REQ_AUTO_CREATE_TABLE; - } - - if (!pVals && !(pVals = taosArrayInit(pTSchema->numOfCols, sizeof(SColVal)))) { - taosArrayDestroy(pTbData->aRowP); - taosMemoryFree(pTbData); - goto _end; - } - - for (int32_t j = 0; j < rows; j++) { - taosArrayClear(pVals); - for (int32_t k = 0; k < pTSchema->numOfCols; k++) { - const STColumn* pCol = &pTSchema->columns[k]; - SColumnInfoData* pColData = taosArrayGet(pDataBlock->pDataBlock, k); - if (colDataIsNull_s(pColData, j)) { - SColVal cv = COL_VAL_NULL(pCol->colId, pCol->type); - taosArrayPush(pVals, &cv); - } else { - void* data = colDataGetData(pColData, j); - if (IS_STR_DATA_TYPE(pCol->type)) { - SValue sv = (SValue){.nData = varDataLen(data), .pData = varDataVal(data)}; // address copy, no value - SColVal cv = COL_VAL_VALUE(pCol->colId, pCol->type, sv); - taosArrayPush(pVals, &cv); - } else { - SValue sv; - memcpy(&sv.val, data, tDataTypes[pCol->type].bytes); - SColVal cv = COL_VAL_VALUE(pCol->colId, pCol->type, sv); - taosArrayPush(pVals, &cv); - } - } - } - SRow* pRow = NULL; - if ((terrno = tRowBuild(pVals, (STSchema*)pTSchema, &pRow)) < 0) { - tDestroySSubmitTbData(pTbData, TSDB_MSG_FLG_ENCODE); - goto _end; - } - ASSERT(pRow); - taosArrayPush(pTbData->aRowP, &pRow); - } - - taosArrayPush(pReq->aSubmitTbData, pTbData); - } - - // encode - tEncodeSize(tEncodeSSubmitReq2, pReq, len, terrno); - if (TSDB_CODE_SUCCESS == terrno) { - SEncoder encoder; - len += sizeof(SMsgHead); - pBuf = rpcMallocCont(len); - if (NULL == pBuf) { - goto _end; - } - ((SMsgHead*)pBuf)->vgId = htonl(TD_VID(pVnode)); - ((SMsgHead*)pBuf)->contLen = htonl(len); - tEncoderInit(&encoder, POINTER_SHIFT(pBuf, sizeof(SMsgHead)), len - sizeof(SMsgHead)); - if (tEncodeSSubmitReq2(&encoder, pReq) < 0) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - tqError("failed to encode submit req since %s", terrstr()); - } - tEncoderClear(&encoder); - } -_end: - taosArrayDestroy(tagArray); - taosArrayDestroy(pVals); - tDestroySSubmitReq2(pReq, TSDB_MSG_FLG_ENCODE); - - if (terrno != 0) { - rpcFreeCont(pBuf); - taosArrayDestroy(pDeleteReq->deleteReqs); - return TSDB_CODE_FAILED; - } - if (ppData) *ppData = pBuf; - if (pLen) *pLen = len; - return TSDB_CODE_SUCCESS; -} - void tqSinkToTablePipeline(SStreamTask* pTask, void* vnode, int64_t ver, void* data) { const SArray* pBlocks = (const SArray*)data; SVnode* pVnode = (SVnode*)vnode; @@ -984,56 +562,3 @@ _end: taosArrayDestroy(pVals); // TODO: change } - -#if 0 -void tqSinkToTableMerge(SStreamTask* pTask, void* vnode, int64_t ver, void* data) { - const SArray* pRes = (const SArray*)data; - SVnode* pVnode = (SVnode*)vnode; - SBatchDeleteReq deleteReq = {0}; - - tqDebug("vgId:%d, task %d write into table, block num: %d", TD_VID(pVnode), pTask->taskId, (int32_t)pRes->size); - - deleteReq.deleteReqs = taosArrayInit(0, sizeof(SSingleDeleteReq)); - SSubmitReq* submitReq = tqBlockToSubmit(pVnode, pRes, pTask->tbSink.pTSchema, pTask->tbSink.pSchemaWrapper, true, - pTask->tbSink.stbUid, pTask->tbSink.stbFullName, &deleteReq); - - tqDebug("vgId:%d, task %d convert blocks over, put into write-queue", TD_VID(pVnode), pTask->taskId); - - if (taosArrayGetSize(deleteReq.deleteReqs) != 0) { - int32_t code; - int32_t len; - tEncodeSize(tEncodeSBatchDeleteReq, &deleteReq, len, code); - SEncoder encoder; - void* serializedDeleteReq = rpcMallocCont(len + sizeof(SMsgHead)); - void* abuf = POINTER_SHIFT(serializedDeleteReq, sizeof(SMsgHead)); - tEncoderInit(&encoder, abuf, len); - tEncodeSBatchDeleteReq(&encoder, &deleteReq); - tEncoderClear(&encoder); - - ((SMsgHead*)serializedDeleteReq)->vgId = pVnode->config.vgId; - - SRpcMsg msg = { - .msgType = TDMT_VND_BATCH_DEL, - .pCont = serializedDeleteReq, - .contLen = len + sizeof(SMsgHead), - }; - if (tmsgPutToQueue(&pVnode->msgCb, WRITE_QUEUE, &msg) != 0) { - rpcFreeCont(serializedDeleteReq); - tqDebug("failed to put into write-queue since %s", terrstr()); - } - } - taosArrayDestroy(deleteReq.deleteReqs); - - /*tPrintFixedSchemaSubmitReq(pReq, pTask->tbSink.pTSchema);*/ - // build write msg - SRpcMsg msg = { - .msgType = TDMT_VND_SUBMIT, - .pCont = submitReq, - .contLen = ntohl(submitReq->length), - }; - - if (tmsgPutToQueue(&pVnode->msgCb, WRITE_QUEUE, &msg) != 0) { - tqDebug("failed to put into write-queue since %s", terrstr()); - } -} -#endif From f23ab5859281d8c04ee31e8408df71566d04d871 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 3 Jan 2023 11:28:07 +0800 Subject: [PATCH 25/34] fix:add log for json parse --- source/client/src/clientSmlJson.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index 550d1c8edf..44749cec7e 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -1161,6 +1161,7 @@ int32_t smlParseJSON(SSmlHandle *info, char *payload) { int32_t payloadNum = 1 << 15; int32_t ret = TSDB_CODE_SUCCESS; + uDebug("SML:0x%" PRIx64 "json:%s", info->id, payload); int cnt = 0; char *dataPointStart = payload; while (1) { From 9eaf8b561fabdaa4512efd9ec15f476f5b486034 Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Tue, 3 Jan 2023 13:35:49 +0800 Subject: [PATCH 26/34] fix compile --- source/dnode/vnode/src/inc/tq.h | 6 +++--- source/dnode/vnode/src/sma/smaTimeRange.c | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/source/dnode/vnode/src/inc/tq.h b/source/dnode/vnode/src/inc/tq.h index 9a89c732bd..104e0945ba 100644 --- a/source/dnode/vnode/src/inc/tq.h +++ b/source/dnode/vnode/src/inc/tq.h @@ -182,9 +182,9 @@ int32_t tqOffsetDelete(STqOffsetStore* pStore, const char* subscribeKey) int32_t tqOffsetCommitFile(STqOffsetStore* pStore); // tqSink -// void tqSinkToTableMerge(SStreamTask* pTask, void* vnode, int64_t ver, void* data); -// void tqSinkToTablePipeline(SStreamTask* pTask, void* vnode, int64_t ver, void* data); -void tqSinkToTablePipeline2(SStreamTask* pTask, void* vnode, int64_t ver, void* data); +int32_t tqBuildDeleteReq(SVnode* pVnode, const char* stbFullName, const SSDataBlock* pDataBlock, + SBatchDeleteReq* deleteReq); +void tqSinkToTablePipeline2(SStreamTask* pTask, void* vnode, int64_t ver, void* data); // tqOffset char* tqOffsetBuildFName(const char* path, int32_t fVer); diff --git a/source/dnode/vnode/src/sma/smaTimeRange.c b/source/dnode/vnode/src/sma/smaTimeRange.c index 2179d96fe1..dead3615d0 100644 --- a/source/dnode/vnode/src/sma/smaTimeRange.c +++ b/source/dnode/vnode/src/sma/smaTimeRange.c @@ -14,6 +14,7 @@ */ #include "sma.h" +#include "tq.h" #include "tsdb.h" #define SMA_STORAGE_MINUTES_MAX 86400 @@ -330,7 +331,7 @@ int32_t smaBlockToSubmit(SVnode *pVnode, const SArray *pBlocks, const STSchema * tEncoderInit(&encoder, POINTER_SHIFT(pBuf, sizeof(SMsgHead)), len - sizeof(SMsgHead)); if (tEncodeSSubmitReq2(&encoder, pReq) < 0) { terrno = TSDB_CODE_OUT_OF_MEMORY; - tqError("failed to encode submit req since %s", terrstr()); + /*vError("failed to encode submit req since %s", terrstr());*/ } tEncoderClear(&encoder); } From 99b2e71b8b946f9dee25c49344edcaebd656c640 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 3 Jan 2023 14:05:23 +0800 Subject: [PATCH 27/34] fix:write const memory --- utils/test/c/sml_test.c | 51 ++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/utils/test/c/sml_test.c b/utils/test/c/sml_test.c index 7590456ba4..e77a3b1e3c 100644 --- a/utils/test/c/sml_test.c +++ b/utils/test/c/sml_test.c @@ -116,11 +116,22 @@ int smlProcess_json1_Test() { const char *sql[] = { "[{\"metric\":\"sys.cpu.nice\",\"timestamp\":0,\"value\":18,\"tags\":{\"host\":\"web01\",\"id\":\"t1\",\"dc\":\"lga\"}},{\"metric\":\"sys.cpu.nice\",\"timestamp\":1662344042,\"value\":9,\"tags\":{\"host\":\"web02\",\"dc\":\"lga\"}}]" }; - pRes = taos_schemaless_insert(taos, (char **)sql, sizeof(sql) / sizeof(sql[0]), TSDB_SML_JSON_PROTOCOL, + + char *sql1[1] = {0}; + for(int i = 0; i < 1; i++){ + sql1[i] = taosMemoryCalloc(1, 1024); + strncpy(sql1[i], sql[i], 1023); + } + + pRes = taos_schemaless_insert(taos, (char **)sql1, sizeof(sql1) / sizeof(sql1[0]), TSDB_SML_JSON_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS); printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); int code = taos_errno(pRes); taos_free_result(pRes); + + for(int i = 0; i < 1; i++){ + taosMemoryFree(sql1[i]); + } taos_close(taos); return code; @@ -138,13 +149,22 @@ int smlProcess_json2_Test() { const char *sql[] = { "{\"metric\":\"meter_current0\",\"timestamp\":{\"value\":1662344042,\"type\":\"s\"},\"value\":{\"value\":10.3,\"type\":\"i64\"},\"tags\":{\"groupid\":{\"value\":2,\"type\":\"bigint\"},\"location\":{\"value\":\"北京\",\"type\":\"binary\"},\"id\":\"d1001\"}}" }; - pRes = taos_schemaless_insert(taos, (char **)sql, sizeof(sql) / sizeof(sql[0]), TSDB_SML_JSON_PROTOCOL, + char *sql1[1] = {0}; + for(int i = 0; i < 1; i++){ + sql1[i] = taosMemoryCalloc(1, 1024); + strncpy(sql1[i], sql[i], 1023); + } + + pRes = taos_schemaless_insert(taos, (char **)sql1, sizeof(sql1) / sizeof(sql1[0]), TSDB_SML_JSON_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS); printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); int code = taos_errno(pRes); taos_free_result(pRes); taos_close(taos); + for(int i = 0; i < 1; i++){ + taosMemoryFree(sql1[i]); + } return code; } @@ -160,13 +180,22 @@ int smlProcess_json3_Test() { const char *sql[] = { "[{\"metric\":\"sys.cpu.nice\",\"timestamp\":0,\"value\":\"18\",\"tags\":{\"host\":\"web01\",\"id\":\"t1\",\"dc\":\"lga\"}}]" }; - pRes = taos_schemaless_insert(taos, (char **)sql, sizeof(sql) / sizeof(sql[0]), TSDB_SML_JSON_PROTOCOL, + char *sql1[1] = {0}; + for(int i = 0; i < 1; i++){ + sql1[i] = taosMemoryCalloc(1, 1024); + strncpy(sql1[i], sql[i], 1023); + } + + pRes = taos_schemaless_insert(taos, (char **)sql1, sizeof(sql1) / sizeof(sql1[0]), TSDB_SML_JSON_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS); printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); int code = taos_errno(pRes); taos_free_result(pRes); taos_close(taos); + for(int i = 0; i < 1; i++){ + taosMemoryFree(sql1[i]); + } return code; } @@ -927,14 +956,14 @@ int main(int argc, char *argv[]) { // printf("str:%s \t %d\n", str[i], smlCalTypeSum(str[i], strlen(str[i]))); // } int ret = 0; - ret = sml_ttl_Test(); - ASSERT(!ret); - ret = sml_ts2164_Test(); - ASSERT(!ret); - ret = smlProcess_influx_Test(); - ASSERT(!ret); - ret = smlProcess_telnet_Test(); - ASSERT(!ret); +// ret = sml_ttl_Test(); +// ASSERT(!ret); +// ret = sml_ts2164_Test(); +// ASSERT(!ret); +// ret = smlProcess_influx_Test(); +// ASSERT(!ret); +// ret = smlProcess_telnet_Test(); +// ASSERT(!ret); ret = smlProcess_json1_Test(); ASSERT(!ret); ret = smlProcess_json2_Test(); From b68e440cc29f3baa2d6e4216b095ee5dd02741d4 Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Tue, 3 Jan 2023 14:13:51 +0800 Subject: [PATCH 28/34] feat: support total vgroups count for table --- include/common/tcommon.h | 1 + source/dnode/vnode/src/tsdb/tsdbRead.c | 1 + source/libs/function/src/builtinsimpl.c | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/common/tcommon.h b/include/common/tcommon.h index 9ecbd2f839..2643273555 100644 --- a/include/common/tcommon.h +++ b/include/common/tcommon.h @@ -292,6 +292,7 @@ typedef struct STableBlockDistInfo { uint16_t numOfFiles; uint32_t numOfTables; uint32_t numOfBlocks; + uint32_t numOfVgroups; uint64_t totalSize; uint64_t totalRows; int32_t maxRows; diff --git a/source/dnode/vnode/src/tsdb/tsdbRead.c b/source/dnode/vnode/src/tsdb/tsdbRead.c index d629be2fef..1938f751a2 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead.c @@ -4271,6 +4271,7 @@ int32_t tsdbGetFileBlocksDistInfo(STsdbReader* pReader, STableBlockDistInfo* pTa int32_t code = TSDB_CODE_SUCCESS; pTableBlockInfo->totalSize = 0; pTableBlockInfo->totalRows = 0; + pTableBlockInfo->numOfVgroups = 1; // find the start data block in file SReaderStatus* pStatus = &pReader->status; diff --git a/source/libs/function/src/builtinsimpl.c b/source/libs/function/src/builtinsimpl.c index d03a7fce75..07b10b1975 100644 --- a/source/libs/function/src/builtinsimpl.c +++ b/source/libs/function/src/builtinsimpl.c @@ -5192,6 +5192,7 @@ int32_t blockDistFunction(SqlFunctionCtx* pCtx) { pDistInfo->numOfBlocks += p1.numOfBlocks; pDistInfo->numOfTables += p1.numOfTables; pDistInfo->numOfInmemRows += p1.numOfInmemRows; + pDistInfo->numOfVgroups += p1.numOfVgroups; pDistInfo->totalSize += p1.totalSize; pDistInfo->totalRows += p1.totalRows; pDistInfo->numOfFiles += p1.numOfFiles; @@ -5317,7 +5318,7 @@ int32_t blockDistFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { colDataAppend(pColInfo, row++, st, false); len = sprintf(st + VARSTR_HEADER_SIZE, "Total_Tables=[%d] Total_Files=[%d] Total_Vgroups=[%d]", pData->numOfTables, - pData->numOfFiles, 0); + pData->numOfFiles, pData->numOfVgroups); varDataSetLen(st, len); colDataAppend(pColInfo, row++, st, false); From f2a1ce128efcac22a34feb174eafbc4a378e3f74 Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Tue, 3 Jan 2023 14:26:15 +0800 Subject: [PATCH 29/34] fix: add numOfVgroups to serial and deserial function --- source/libs/function/src/builtinsimpl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/libs/function/src/builtinsimpl.c b/source/libs/function/src/builtinsimpl.c index 07b10b1975..a1e39b3548 100644 --- a/source/libs/function/src/builtinsimpl.c +++ b/source/libs/function/src/builtinsimpl.c @@ -5227,6 +5227,7 @@ int32_t tSerializeBlockDistInfo(void* buf, int32_t bufLen, const STableBlockDist if (tEncodeU16(&encoder, pInfo->numOfFiles) < 0) return -1; if (tEncodeU32(&encoder, pInfo->numOfBlocks) < 0) return -1; if (tEncodeU32(&encoder, pInfo->numOfTables) < 0) return -1; + if (tEncodeU32(&encoder, pInfo->numOfVgroups) < 0) return -1; if (tEncodeU64(&encoder, pInfo->totalSize) < 0) return -1; if (tEncodeU64(&encoder, pInfo->totalRows) < 0) return -1; @@ -5258,6 +5259,7 @@ int32_t tDeserializeBlockDistInfo(void* buf, int32_t bufLen, STableBlockDistInfo if (tDecodeU16(&decoder, &pInfo->numOfFiles) < 0) return -1; if (tDecodeU32(&decoder, &pInfo->numOfBlocks) < 0) return -1; if (tDecodeU32(&decoder, &pInfo->numOfTables) < 0) return -1; + if (tDecodeU32(&decoder, &pInfo->numOfVgroups) < 0) return -1; if (tDecodeU64(&decoder, &pInfo->totalSize) < 0) return -1; if (tDecodeU64(&decoder, &pInfo->totalRows) < 0) return -1; From 5cd433f756c798f6a56cf50406304d7e584823e8 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 3 Jan 2023 15:05:25 +0800 Subject: [PATCH 30/34] fix:add log for json parse --- source/client/src/clientSmlJson.c | 2 +- source/client/src/clientSmlTelnet.c | 4 +-- tests/system-test/2-query/sml.py | 14 ++++----- utils/test/c/sml_test.c | 45 +++++++++++++++++++++-------- 4 files changed, 43 insertions(+), 22 deletions(-) diff --git a/source/client/src/clientSmlJson.c b/source/client/src/clientSmlJson.c index 44749cec7e..60e29638f5 100644 --- a/source/client/src/clientSmlJson.c +++ b/source/client/src/clientSmlJson.c @@ -409,7 +409,7 @@ int smlJsonParseObj(char **start, SSmlLineInfo *element, int8_t *offset){ (*start)++; } - if(unlikely(index != OTD_JSON_FIELDS_NUM)) { + if(unlikely(index != 0 && index != OTD_JSON_FIELDS_NUM)) { uError("elements != %d", OTD_JSON_FIELDS_NUM) return -1; } diff --git a/source/client/src/clientSmlTelnet.c b/source/client/src/clientSmlTelnet.c index a8cbcfe0fa..71d4e21400 100644 --- a/source/client/src/clientSmlTelnet.c +++ b/source/client/src/clientSmlTelnet.c @@ -23,8 +23,8 @@ int32_t is_same_child_table_telnet(const void *a, const void *b){ SSmlLineInfo *t1 = (SSmlLineInfo *)a; SSmlLineInfo *t2 = (SSmlLineInfo *)b; - uError("is_same_child_table_telnet len:%d,%d %s,%s @@@ len:%d,%d %s,%s", t1->measureLen, t2->measureLen, - t1->measure, t2->measure, t1->tagsLen, t2->tagsLen, t1->tags, t2->tags); +// uError("is_same_child_table_telnet len:%d,%d %s,%s @@@ len:%d,%d %s,%s", t1->measureLen, t2->measureLen, +// t1->measure, t2->measure, t1->tagsLen, t2->tagsLen, t1->tags, t2->tags); if(t1 == NULL || t2 == NULL || t1->measure == NULL || t2->measure == NULL || t1->tags == NULL || t2->tags == NULL) return 1; diff --git a/tests/system-test/2-query/sml.py b/tests/system-test/2-query/sml.py index 8ad1982b55..594817113c 100644 --- a/tests/system-test/2-query/sml.py +++ b/tests/system-test/2-query/sml.py @@ -71,18 +71,18 @@ class TDTestCase: tdSql.checkData(0, 2, "web01") tdSql.query(f"select distinct tbname from {dbname}.`sys.cpu.nice`") - tdSql.checkRows(2) + tdSql.checkRows(3) tdSql.query(f"select * from {dbname}.`sys.cpu.nice` order by _ts") - tdSql.checkRows(2) - tdSql.checkData(0, 1, 9.000000000) - tdSql.checkData(0, 2, "web02") + tdSql.checkRows(4) + tdSql.checkData(0, 1, 13.000000000) + tdSql.checkData(0, 2, "web01") tdSql.checkData(0, 3, None) tdSql.checkData(0, 4, "lga") - tdSql.checkData(1, 1, 18.000000000) - tdSql.checkData(1, 2, "web01") - tdSql.checkData(1, 3, "t1") + tdSql.checkData(1, 1, 9.000000000) + tdSql.checkData(1, 2, "web02") + tdSql.checkData(3, 3, "t1") tdSql.checkData(0, 4, "lga") tdSql.query(f"select * from {dbname}.macylr") diff --git a/utils/test/c/sml_test.c b/utils/test/c/sml_test.c index e77a3b1e3c..2c047f8b0f 100644 --- a/utils/test/c/sml_test.c +++ b/utils/test/c/sml_test.c @@ -114,7 +114,7 @@ int smlProcess_json1_Test() { taos_free_result(pRes); const char *sql[] = { - "[{\"metric\":\"sys.cpu.nice\",\"timestamp\":0,\"value\":18,\"tags\":{\"host\":\"web01\",\"id\":\"t1\",\"dc\":\"lga\"}},{\"metric\":\"sys.cpu.nice\",\"timestamp\":1662344042,\"value\":9,\"tags\":{\"host\":\"web02\",\"dc\":\"lga\"}}]" + "[{\"metric\":\"sys.cpu.nice\",\"timestamp\":0,\"value\":18,\"tags\":{\"host\":\"web01\",\"id\":\"t1\",\"dc\":\"lga\"}},{\"metric\":\"sys.cpu.nice\",\"timestamp\":1662344045,\"value\":9,\"tags\":{\"host\":\"web02\",\"dc\":\"lga\"}}]" }; char *sql1[1] = {0}; @@ -132,6 +132,27 @@ int smlProcess_json1_Test() { for(int i = 0; i < 1; i++){ taosMemoryFree(sql1[i]); } + + const char *sql2[] = { + "[{\"metric\":\"sys.cpu.nice\",\"timestamp\":1662344041,\"value\":13,\"tags\":{\"host\":\"web01\",\"dc\":\"lga\"}},{\"metric\":\"sys.cpu.nice\",\"timestamp\":1662344042,\"value\":9,\"tags\":{\"host\":\"web02\",\"dc\":\"lga\"}}]", + }; + + char *sql3[1] = {0}; + for(int i = 0; i < 1; i++){ + sql3[i] = taosMemoryCalloc(1, 1024); + strncpy(sql3[i], sql2[i], 1023); + } + + pRes = taos_schemaless_insert(taos, (char **)sql3, sizeof(sql3) / sizeof(sql3[0]), TSDB_SML_JSON_PROTOCOL, + TSDB_SML_TIMESTAMP_NANO_SECONDS); + printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); + code = taos_errno(pRes); + taos_free_result(pRes); + + for(int i = 0; i < 1; i++){ + taosMemoryFree(sql3[i]); + } + taos_close(taos); return code; @@ -178,7 +199,7 @@ int smlProcess_json3_Test() { taos_free_result(pRes); const char *sql[] = { - "[{\"metric\":\"sys.cpu.nice\",\"timestamp\":0,\"value\":\"18\",\"tags\":{\"host\":\"web01\",\"id\":\"t1\",\"dc\":\"lga\"}}]" + "[{\"metric\":\"sys.cpu.nice3\",\"timestamp\":0,\"value\":\"18\",\"tags\":{\"host\":\"web01\",\"id\":\"t1\",\"dc\":\"lga\"}}]" }; char *sql1[1] = {0}; for(int i = 0; i < 1; i++){ @@ -956,20 +977,20 @@ int main(int argc, char *argv[]) { // printf("str:%s \t %d\n", str[i], smlCalTypeSum(str[i], strlen(str[i]))); // } int ret = 0; -// ret = sml_ttl_Test(); -// ASSERT(!ret); -// ret = sml_ts2164_Test(); -// ASSERT(!ret); -// ret = smlProcess_influx_Test(); -// ASSERT(!ret); -// ret = smlProcess_telnet_Test(); -// ASSERT(!ret); + ret = sml_ttl_Test(); + ASSERT(!ret); + ret = sml_ts2164_Test(); + ASSERT(!ret); + ret = smlProcess_influx_Test(); + ASSERT(!ret); + ret = smlProcess_telnet_Test(); + ASSERT(!ret); ret = smlProcess_json1_Test(); ASSERT(!ret); ret = smlProcess_json2_Test(); - ASSERT(ret); + ASSERT(!ret); ret = smlProcess_json3_Test(); - ASSERT(ret); + ASSERT(!ret); ret = sml_TD15662_Test(); ASSERT(!ret); ret = sml_TD15742_Test(); From 89b29690fb6952932ba7832ac4cd702673058ce1 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 3 Jan 2023 15:24:36 +0800 Subject: [PATCH 31/34] fix:add log for json parse --- utils/test/c/sml_test.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/utils/test/c/sml_test.c b/utils/test/c/sml_test.c index 2c047f8b0f..720245d518 100644 --- a/utils/test/c/sml_test.c +++ b/utils/test/c/sml_test.c @@ -125,8 +125,12 @@ int smlProcess_json1_Test() { pRes = taos_schemaless_insert(taos, (char **)sql1, sizeof(sql1) / sizeof(sql1[0]), TSDB_SML_JSON_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS); - printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); int code = taos_errno(pRes); + if(code != 0){ + printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); + }else{ + printf("%s result:success\n", __FUNCTION__); + } taos_free_result(pRes); for(int i = 0; i < 1; i++){ @@ -145,8 +149,12 @@ int smlProcess_json1_Test() { pRes = taos_schemaless_insert(taos, (char **)sql3, sizeof(sql3) / sizeof(sql3[0]), TSDB_SML_JSON_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS); - printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); code = taos_errno(pRes); + if(code != 0){ + printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); + }else{ + printf("%s result:success\n", __FUNCTION__); + } taos_free_result(pRes); for(int i = 0; i < 1; i++){ @@ -178,8 +186,12 @@ int smlProcess_json2_Test() { pRes = taos_schemaless_insert(taos, (char **)sql1, sizeof(sql1) / sizeof(sql1[0]), TSDB_SML_JSON_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS); - printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); int code = taos_errno(pRes); + if(code != 0){ + printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); + }else{ + printf("%s result:success\n", __FUNCTION__); + } taos_free_result(pRes); taos_close(taos); @@ -199,7 +211,8 @@ int smlProcess_json3_Test() { taos_free_result(pRes); const char *sql[] = { - "[{\"metric\":\"sys.cpu.nice3\",\"timestamp\":0,\"value\":\"18\",\"tags\":{\"host\":\"web01\",\"id\":\"t1\",\"dc\":\"lga\"}}]" +// "[{\"metric\":\"sys.cpu.nice3\",\"timestamp\":0,\"value\":\"18\",\"tags\":{\"host\":\"web01\",\"id\":\"t1\",\"dc\":\"lga\"}}]" + "{\"metric\": \"dcxnmr\", \"timestamp\": {\"value\": 1626006833639000000, \"type\": \"ns\"}, \"value\": {\"value\": false, \"type\": \"bool\"}, \"tags\": {\"t0\": {\"value\": false, \"type\": \"bool\"}, \"t1\": {\"value\": 127, \"type\": \"tinyint\"}, \"t2\": {\"value\": 32767, \"type\": \"smallint\"}, \"t3\": {\"value\": 2147483647, \"type\": \"int\"}, \"t4\": {\"value\": 9223372036854775807, \"type\": \"bigint\"}, \"t5\": {\"value\": 11.12345027923584, \"type\": \"float\"}, \"t6\": {\"value\": 22.123456789, \"type\": \"double\"}, \"t7\": {\"value\": \"binaryTagValue\", \"type\": \"binary\"}, \"t8\": {\"value\": \"abc{aaa\", \"type\": \"nchar\"}}}" }; char *sql1[1] = {0}; for(int i = 0; i < 1; i++){ @@ -209,8 +222,12 @@ int smlProcess_json3_Test() { pRes = taos_schemaless_insert(taos, (char **)sql1, sizeof(sql1) / sizeof(sql1[0]), TSDB_SML_JSON_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS); - printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); int code = taos_errno(pRes); + if(code != 0){ + printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); + }else{ + printf("%s result:success\n", __FUNCTION__); + } taos_free_result(pRes); taos_close(taos); From 42c662bf176f35bcd616bcf05a398eddbbf7f1a6 Mon Sep 17 00:00:00 2001 From: xinsheng Ren <285808407@qq.com> Date: Tue, 3 Jan 2023 15:24:51 +0800 Subject: [PATCH 32/34] Enh/xsren/td 21652/win file lock (#19313) * add os subtest * fix/test.cpp include header file * TD-21652 win file lock * fix/ostest:exception on mac Co-authored-by: facetosea <25808407@qq.com> --- source/os/src/osFile.c | 23 ++++++++++ source/os/test/osTests.cpp | 93 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) diff --git a/source/os/src/osFile.c b/source/os/src/osFile.c index d8cccc83ed..ab9829538d 100644 --- a/source/os/src/osFile.c +++ b/source/os/src/osFile.c @@ -560,6 +560,21 @@ int32_t taosFStatFile(TdFilePtr pFile, int64_t *size, int32_t *mtime) { int32_t taosLockFile(TdFilePtr pFile) { #ifdef WINDOWS + BOOL fSuccess = FALSE; + LARGE_INTEGER fileSize; + OVERLAPPED overlapped = {0}; + + HANDLE hFile = (HANDLE)_get_osfhandle(pFile->fd); + + fSuccess = LockFileEx(hFile, LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY, + 0, // reserved + ~0, // number of bytes to lock low + ~0, // number of bytes to lock high + &overlapped // overlapped structure + ); + if (!fSuccess) { + return GetLastError(); + } return 0; #else assert(pFile->fd >= 0); // Please check if you have closed the file. @@ -570,6 +585,14 @@ int32_t taosLockFile(TdFilePtr pFile) { int32_t taosUnLockFile(TdFilePtr pFile) { #ifdef WINDOWS + BOOL fSuccess = FALSE; + OVERLAPPED overlapped = {0}; + HANDLE hFile = (HANDLE)_get_osfhandle(pFile->fd); + + fSuccess = UnlockFileEx(hFile, 0, ~0, ~0, &overlapped); + if (!fSuccess) { + return GetLastError(); + } return 0; #else assert(pFile->fd >= 0); // Please check if you have closed the file. diff --git a/source/os/test/osTests.cpp b/source/os/test/osTests.cpp index cde31cf707..f831f457f9 100644 --- a/source/os/test/osTests.cpp +++ b/source/os/test/osTests.cpp @@ -36,4 +36,97 @@ TEST(osTest, osSystem) { taosPrintTrace(flags, level, dflag); } +void fileOperateOnFree(void *param) { + char * fname = (char *)param; + TdFilePtr pFile = taosOpenFile(fname, TD_FILE_CREATE | TD_FILE_WRITE); + printf("On free thread open file\n"); + ASSERT_NE(pFile, nullptr); + + int ret = taosLockFile(pFile); + printf("On free thread lock file ret:%d\n", ret); + ASSERT_EQ(ret, 0); + + ret = taosUnLockFile(pFile); + printf("On free thread unlock file ret:%d\n", ret); + ASSERT_EQ(ret, 0); + + ret = taosCloseFile(&pFile); + ASSERT_EQ(ret, 0); + printf("On free thread close file ret:%d\n", ret); +} +void *fileOperateOnFreeThread(void *param) { + fileOperateOnFree(param); + return NULL; +} +void fileOperateOnBusy(void *param) { + char * fname = (char *)param; + TdFilePtr pFile = taosOpenFile(fname, TD_FILE_CREATE | TD_FILE_WRITE); + printf("On busy thread open file\n"); + ASSERT_NE(pFile, nullptr); + + int ret = taosLockFile(pFile); + printf("On busy thread lock file ret:%d\n", ret); + ASSERT_NE(ret, 0); + + ret = taosUnLockFile(pFile); + printf("On busy thread unlock file ret:%d\n", ret); +#ifdef _TD_DARWIN_64 + ASSERT_EQ(ret, 0); +#else + ASSERT_NE(ret, 0); +#endif + + ret = taosCloseFile(&pFile); + printf("On busy thread close file ret:%d\n", ret); + ASSERT_EQ(ret, 0); +} +void *fileOperateOnBusyThread(void *param) { + fileOperateOnBusy(param); + return NULL; +} + +TEST(osTest, osFile) { + char *fname = "./osfiletest1.txt"; + + TdFilePtr pOutFD = taosCreateFile(fname, TD_FILE_WRITE | TD_FILE_CREATE | TD_FILE_TRUNC); + ASSERT_NE(pOutFD, nullptr); + printf("create file success\n"); + + TdFilePtr pFile = taosOpenFile(fname, TD_FILE_CREATE | TD_FILE_WRITE); + printf("open file\n"); + ASSERT_NE(pFile, nullptr); + + int ret = taosLockFile(pFile); + printf("lock file ret:%d\n", ret); + ASSERT_EQ(ret, 0); + + TdThreadAttr thattr; + taosThreadAttrInit(&thattr); + + TdThread thread1, thread2; + taosThreadCreate(&(thread1), &thattr, fileOperateOnBusyThread, (void *)fname); + taosThreadAttrDestroy(&thattr); + + taosThreadJoin(thread1, NULL); + taosThreadClear(&thread1); + + ret = taosUnLockFile(pFile); + printf("unlock file ret:%d\n", ret); + ASSERT_EQ(ret, 0); + + ret = taosCloseFile(&pFile); + printf("close file ret:%d\n", ret); + ASSERT_EQ(ret, 0); + + taosThreadCreate(&(thread2), &thattr, fileOperateOnFreeThread, (void *)fname); + taosThreadAttrDestroy(&thattr); + + taosThreadJoin(thread2, NULL); + taosThreadClear(&thread2); + + //int ret = taosRemoveFile(fname); + //ASSERT_EQ(ret, 0); + //printf("remove file success"); +} + #pragma GCC diagnostic pop From 50d2a1c11f37820ff30933587f308197dd9f3353 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 3 Jan 2023 16:01:03 +0800 Subject: [PATCH 33/34] fix:malloc too large --- source/libs/parser/src/parInsertSml.c | 13 +++++++++++-- tests/system-test/2-query/sml.py | 3 +++ utils/test/c/sml_test.c | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/source/libs/parser/src/parInsertSml.c b/source/libs/parser/src/parInsertSml.c index 0bb6d90fa9..6fe72beea6 100644 --- a/source/libs/parser/src/parInsertSml.c +++ b/source/libs/parser/src/parInsertSml.c @@ -189,14 +189,23 @@ int32_t smlBuildCol(STableDataCxt* pTableCxt, SSchema* schema, void* data, int32 SSchema* pColSchema = schema + index; SColVal* pVal = taosArrayGet(pTableCxt->pValues, index); SSmlKv* kv = (SSmlKv*)data; + if(kv->keyLen != strlen(pColSchema->name) || memcmp(kv->key, pColSchema->name, kv->keyLen) != 0){ + ret = TSDB_CODE_SML_INVALID_DATA; + goto end; + } if (kv->type == TSDB_DATA_TYPE_NCHAR) { int32_t len = 0; - char* pUcs4 = taosMemoryCalloc(1, pColSchema->bytes - VARSTR_HEADER_SIZE); + int64_t size = pColSchema->bytes - VARSTR_HEADER_SIZE; + if(size <= 0){ + ret = TSDB_CODE_SML_INVALID_DATA; + goto end; + } + char* pUcs4 = taosMemoryCalloc(1, size); if (NULL == pUcs4) { ret = TSDB_CODE_OUT_OF_MEMORY; goto end; } - if (!taosMbsToUcs4(kv->value, kv->length, (TdUcs4*)pUcs4, pColSchema->bytes - VARSTR_HEADER_SIZE, &len)) { + if (!taosMbsToUcs4(kv->value, kv->length, (TdUcs4*)pUcs4, size, &len)) { if (errno == E2BIG) { ret = TSDB_CODE_PAR_VALUE_TOO_LONG; goto end; diff --git a/tests/system-test/2-query/sml.py b/tests/system-test/2-query/sml.py index 594817113c..d5439d05de 100644 --- a/tests/system-test/2-query/sml.py +++ b/tests/system-test/2-query/sml.py @@ -88,6 +88,9 @@ class TDTestCase: tdSql.query(f"select * from {dbname}.macylr") tdSql.checkRows(2) + tdSql.query(f"select * from {dbname}.qelhxo") + tdSql.checkRows(5) + tdSql.query(f"desc {dbname}.macylr") tdSql.checkRows(25) return diff --git a/utils/test/c/sml_test.c b/utils/test/c/sml_test.c index 720245d518..30d0ab27d8 100644 --- a/utils/test/c/sml_test.c +++ b/utils/test/c/sml_test.c @@ -302,7 +302,7 @@ int sml_16384_Test() { if(code) return code; const char *sql1[] = { - "qelhxo,id=pnnqhsa,t0=t,t1=127i8 c0=f,c1=127i8,c11=L\"ncharColValue\",c10=t 1626006833639000000", + "qelhxo,id=pnnqhsa,t0=t,t1=127i8 c0=f,c1=127i8,c11=L\"ncharColValue\",c10=t 1626006833631000000", }; pRes = taos_schemaless_insert(taos, (char **)sql1, 1, TSDB_SML_LINE_PROTOCOL, 0); printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); @@ -866,7 +866,7 @@ int sml_19221_Test() { taos_free_result(pRes); const char *sql[] = { - "qelhxo,id=pnnqhsa,t0=t,t1=127i8 c11=L\"ncharColValue\",c0=t,c1=127i8 1626006833639000000\nqelhxo,id=pnnhsa,t0=t,t1=127i8 c11=L\"ncharColValue\",c0=t,c1=127i8 1626006833639000000\n#comment\nqelhxo,id=pnqhsa,t0=t,t1=127i8 c11=L\"ncharColValue\",c0=t,c1=127i8 1626006833639000000", + "qelhxo,id=pnnqhsa,t0=t,t1=127i8 c11=L\"ncharColValue\",c0=t,c1=127i8 1626006833632000000\nqelhxo,id=pnnhsa,t0=t,t1=127i8 c11=L\"ncharColValue\",c0=t,c1=127i8 1626006833633000000\n#comment\nqelhxo,id=pnqhsa,t0=t,t1=127i8 c11=L\"ncharColValue\",c0=t,c1=127i8 1626006833634000000", }; pRes = taos_query(taos, "use sml_db"); From f26032e279fd2f421158d2b79da08e65df9f83b9 Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Tue, 3 Jan 2023 18:17:40 +0800 Subject: [PATCH 34/34] fix conflict --- source/dnode/vnode/src/sma/smaTimeRange.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/dnode/vnode/src/sma/smaTimeRange.c b/source/dnode/vnode/src/sma/smaTimeRange.c index dead3615d0..f409787480 100644 --- a/source/dnode/vnode/src/sma/smaTimeRange.c +++ b/source/dnode/vnode/src/sma/smaTimeRange.c @@ -283,7 +283,7 @@ int32_t smaBlockToSubmit(SVnode *pVnode, const SArray *pBlocks, const STSchema * goto _end; } - for (int32_t j = 0; j < rows; j++) { + for (int32_t j = 0; j < rows; ++j) { taosArrayClear(pVals); for (int32_t k = 0; k < pTSchema->numOfCols; k++) { const STColumn *pCol = &pTSchema->columns[k]; @@ -326,7 +326,7 @@ int32_t smaBlockToSubmit(SVnode *pVnode, const SArray *pBlocks, const STSchema * if (NULL == pBuf) { goto _end; } - ((SMsgHead *)pBuf)->vgId = htonl(TD_VID(pVnode)); + ((SMsgHead *)pBuf)->vgId = TD_VID(pVnode); ((SMsgHead *)pBuf)->contLen = htonl(len); tEncoderInit(&encoder, POINTER_SHIFT(pBuf, sizeof(SMsgHead)), len - sizeof(SMsgHead)); if (tEncodeSSubmitReq2(&encoder, pReq) < 0) {