sql.c 150.7 KB
Newer Older
H
hzcheng 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/*
** 2000-05-29
**
** The author disclaims copyright to this source code.  In place of
** a legal notice, here is a blessing:
**
**    May you do good and not evil.
**    May you find forgiveness for yourself and forgive others.
**    May you share freely, never taking more than you give.
**
*************************************************************************
** Driver template for the LEMON parser generator.
**
** The "lemon" program processes an LALR(1) input grammar file, then uses
** this template to construct a parser.  The "lemon" program inserts text
** at each "%%" line.  Also, any "P-a-r-s-e" identifer prefix (without the
** interstitial "-" characters) contained in this template is changed into
** the value of the %name directive from the grammar.  Otherwise, the content
** of this template is copied straight through into the generate parser
** source file.
**
** The following is the concatenation of all %include directives from the
** input grammar file:
*/
#include <stdio.h>
26
#include <assert.h>
H
hzcheng 已提交
27 28
/************ Begin %include sections from the grammar ************************/

dengyihao's avatar
dengyihao 已提交
29
#include <stdio.h>
H
hzcheng 已提交
30 31
#include <stdlib.h>
#include <string.h>
D
dapan1121 已提交
32 33
#include <assert.h>
#include <stdbool.h>
34
#include "qSqlparser.h"
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
35
#include "tcmdtype.h"
36
#include "ttoken.h"
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
37
#include "ttokendef.h"
H
Haojun Liao 已提交
38
#include "tutil.h"
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
39
#include "tvariant.h"
H
hzcheng 已提交
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
/**************** End of %include directives **********************************/
/* These constants specify the various numeric values for terminal symbols
** in a format understandable to "makeheaders".  This section is blank unless
** "lemon" is run with the "-m" command-line option.
***************** Begin makeheaders token definitions *************************/
/**************** End makeheaders token definitions ***************************/

/* The next sections is a series of control #defines.
** various aspects of the generated parser.
**    YYCODETYPE         is the data type used to store the integer codes
**                       that represent terminal and non-terminal symbols.
**                       "unsigned char" is used if there are fewer than
**                       256 symbols.  Larger types otherwise.
**    YYNOCODE           is a number of type YYCODETYPE that is not used for
**                       any terminal or nonterminal symbol.
**    YYFALLBACK         If defined, this indicates that one or more tokens
**                       (also known as: "terminal symbols") have fall-back
**                       values which should be used if the original symbol
**                       would not parse.  This permits keywords to sometimes
**                       be used as identifiers, for example.
**    YYACTIONTYPE       is the data type used for "action codes" - numbers
**                       that indicate what to do in response to the next
**                       token.
**    ParseTOKENTYPE     is the data type used for minor type for terminal
**                       symbols.  Background: A "minor type" is a semantic
**                       value associated with a terminal or non-terminal
**                       symbols.  For example, for an "ID" terminal symbol,
**                       the minor type might be the name of the identifier.
**                       Each non-terminal can have a different minor type.
**                       Terminal symbols all have the same minor type, though.
**                       This macros defines the minor type for terminal 
**                       symbols.
**    YYMINORTYPE        is the data type used for all minor types.
**                       This is typically a union of many types, one of
**                       which is ParseTOKENTYPE.  The entry in the union
**                       for terminal symbols is called "yy0".
**    YYSTACKDEPTH       is the maximum depth of the parser's stack.  If
**                       zero the stack is dynamically sized using realloc()
**    ParseARG_SDECL     A static variable declaration for the %extra_argument
**    ParseARG_PDECL     A parameter declaration for the %extra_argument
80
**    ParseARG_PARAM     Code to pass %extra_argument as a subroutine parameter
H
hzcheng 已提交
81 82
**    ParseARG_STORE     Code to store %extra_argument into yypParser
**    ParseARG_FETCH     Code to extract %extra_argument from yypParser
83
**    ParseCTX_*         As ParseARG_ except for %extra_context
H
hzcheng 已提交
84 85 86 87
**    YYERRORSYMBOL      is the code number of the error symbol.  If not
**                       defined, then do no error processing.
**    YYNSTATE           the combined number of states.
**    YYNRULE            the number of rules in the grammar
88
**    YYNTOKEN           Number of terminal symbols
H
hzcheng 已提交
89 90 91 92 93 94
**    YY_MAX_SHIFT       Maximum value for shift actions
**    YY_MIN_SHIFTREDUCE Minimum value for shift-reduce actions
**    YY_MAX_SHIFTREDUCE Maximum value for shift-reduce actions
**    YY_ERROR_ACTION    The yy_action[] code for syntax error
**    YY_ACCEPT_ACTION   The yy_action[] code for accept
**    YY_NO_ACTION       The yy_action[] code for no-op
95 96
**    YY_MIN_REDUCE      Minimum value for reduce actions
**    YY_MAX_REDUCE      Maximum value for reduce actions
H
hzcheng 已提交
97 98 99 100 101
*/
#ifndef INTERFACE
# define INTERFACE 1
#endif
/************* Begin control #defines *****************************************/
S
slguan 已提交
102
#define YYCODETYPE unsigned short int
103
#define YYNOCODE 262
H
hzcheng 已提交
104
#define YYACTIONTYPE unsigned short int
H
Haojun Liao 已提交
105
#define ParseTOKENTYPE SStrToken
H
hzcheng 已提交
106 107 108
typedef union {
  int yyinit;
  ParseTOKENTYPE yy0;
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
  SLimitVal yy18;
  SFromInfo* yy70;
  SSessionWindowVal yy87;
  SCreateDbInfo yy94;
  int yy116;
  SSubclauseInfo* yy141;
  tSqlExpr* yy170;
  SCreateTableSql* yy194;
  tVariant yy218;
  SIntervalVal yy220;
  SCreatedTableInfo yy252;
  SQuerySqlNode* yy254;
  SCreateAcctInfo yy419;
  SArray* yy429;
  TAOS_FIELD yy451;
  int64_t yy481;
H
hzcheng 已提交
125 126 127 128 129 130
} YYMINORTYPE;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
#endif
#define ParseARG_SDECL SSqlInfo* pInfo;
#define ParseARG_PDECL ,SSqlInfo* pInfo
131 132 133 134 135 136 137 138
#define ParseARG_PARAM ,pInfo
#define ParseARG_FETCH SSqlInfo* pInfo=yypParser->pInfo;
#define ParseARG_STORE yypParser->pInfo=pInfo;
#define ParseCTX_SDECL
#define ParseCTX_PDECL
#define ParseCTX_PARAM
#define ParseCTX_FETCH
#define ParseCTX_STORE
H
hzcheng 已提交
139
#define YYFALLBACK 1
D
dapan1121 已提交
140 141 142
#define YYNSTATE             313
#define YYNRULE              268
#define YYNRULE_WITH_ACTION  268
143
#define YYNTOKEN             187
D
dapan1121 已提交
144 145 146 147 148 149 150 151
#define YY_MAX_SHIFT         312
#define YY_MIN_SHIFTREDUCE   505
#define YY_MAX_SHIFTREDUCE   772
#define YY_ERROR_ACTION      773
#define YY_ACCEPT_ACTION     774
#define YY_NO_ACTION         775
#define YY_MIN_REDUCE        776
#define YY_MAX_REDUCE        1043
H
hzcheng 已提交
152
/************* End control #defines *******************************************/
153
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
H
hzcheng 已提交
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

/* Define the yytestcase() macro to be a no-op if is not already defined
** otherwise.
**
** Applications can choose to define yytestcase() in the %include section
** to a macro that can assist in verifying code coverage.  For production
** code the yytestcase() macro should be turned off.  But it is useful
** for testing.
*/
#ifndef yytestcase
# define yytestcase(X)
#endif


/* Next are the tables used to determine what action to take based on the
** current state and lookahead token.  These tables are used to implement
** functions that take a state number and lookahead value and return an
** action integer.  
**
** Suppose the action integer is N.  Then the action is determined as
** follows
**
**   0 <= N <= YY_MAX_SHIFT             Shift N.  That is, push the lookahead
**                                      token onto the stack and goto state N.
**
**   N between YY_MIN_SHIFTREDUCE       Shift to an arbitrary state then
**     and YY_MAX_SHIFTREDUCE           reduce by rule N-YY_MIN_SHIFTREDUCE.
**
**   N == YY_ERROR_ACTION               A syntax error has occurred.
**
**   N == YY_ACCEPT_ACTION              The parser accepts its input.
**
**   N == YY_NO_ACTION                  No such action.  Denotes unused
**                                      slots in the yy_action[] table.
**
189 190 191
**   N between YY_MIN_REDUCE            Reduce by rule N-YY_MIN_REDUCE
**     and YY_MAX_REDUCE
**
H
hzcheng 已提交
192
** The action table is constructed as a single large table named yy_action[].
193
** Given state S and lookahead X, the action is computed as either:
H
hzcheng 已提交
194
**
195 196
**    (A)   N = yy_action[ yy_shift_ofst[S] + X ]
**    (B)   N = yy_default[S]
H
hzcheng 已提交
197
**
198 199
** The (A) formula is preferred.  The B formula is used instead if
** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X.
H
hzcheng 已提交
200
**
201
** The formulas above are for computing the action when the lookahead is
H
hzcheng 已提交
202 203
** a terminal symbol.  If the lookahead is a non-terminal (as occurs after
** a reduce action) then the yy_reduce_ofst[] array is used in place of
204
** the yy_shift_ofst[] array.
H
hzcheng 已提交
205 206 207 208 209 210 211 212 213 214 215 216 217
**
** The following are the tables generated in this section:
**
**  yy_action[]        A single table containing all actions.
**  yy_lookahead[]     A table containing the lookahead for each entry in
**                     yy_action.  Used to detect hash collisions.
**  yy_shift_ofst[]    For each state, the offset into yy_action for
**                     shifting terminals.
**  yy_reduce_ofst[]   For each state, the offset into yy_action for
**                     shifting non-terminals after a reduce.
**  yy_default[]       Default action for each state.
**
*********** Begin parsing tables **********************************************/
D
dapan1121 已提交
218
#define YY_ACTTAB_COUNT (675)
H
hzcheng 已提交
219
static const YYACTIONTYPE yy_action[] = {
D
dapan1121 已提交
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287
 /*     0 */   132,  552,  203,  310,  206,  139,  943,   17,   84,  553,
 /*    10 */   774,  312,  178,   46,   47,  139,   50,   51,   29,  180,
 /*    20 */   212,   40,  180,   49,  260,   54,   52,   56,   53, 1024,
 /*    30 */   922,  209, 1025,   45,   44,  184,  180,   43,   42,   41,
 /*    40 */    46,   47,  910,   50,   51,  208, 1025,  212,   40,  552,
 /*    50 */    49,  260,   54,   52,   56,   53,  934,  553, 1021,  204,
 /*    60 */    45,   44,  919,  245,   43,   42,   41,   47,  940,   50,
 /*    70 */    51,  241,  973,  212,   40,  552,   49,  260,   54,   52,
 /*    80 */    56,   53,  974,  553,  255,  217,   45,   44,  276,  223,
 /*    90 */    43,   42,   41,  506,  507,  508,  509,  510,  511,  512,
 /*   100 */   513,  514,  515,  516,  517,  518,  311,  631, 1020,  229,
 /*   110 */    71,  922,   29,   46,   47, 1019,   50,   51,  821,  219,
 /*   120 */   212,   40,  165,   49,  260,   54,   52,   56,   53,   43,
 /*   130 */    42,   41,  716,   45,   44,  286,  285,   43,   42,   41,
 /*   140 */    46,   48,  296,   50,   51,  922,  908,  212,   40,  232,
 /*   150 */    49,  260,   54,   52,   56,   53,  918,  236,  235,  225,
 /*   160 */    45,   44,  283,  282,   43,   42,   41,   23,  274,  305,
 /*   170 */   304,  273,  272,  271,  303,  270,  302,  301,  300,  269,
 /*   180 */   299,  298,  882,  139,  870,  871,  872,  873,  874,  875,
 /*   190 */   876,  877,  878,  879,  880,  881,  883,  884,   50,   51,
 /*   200 */   830,  306,  212,   40,  165,   49,  260,   54,   52,   56,
 /*   210 */    53,  221,   18,   81,  916,   45,   44,   69,  197,   43,
 /*   220 */    42,   41,  211,  731,  139,  276,  720,  922,  723,  189,
 /*   230 */   726,  224,  211,  731,  104,  190,  720,  198,  723,  296,
 /*   240 */   726,  117,  116,  188,  905,  906,   28,  909,  257,  907,
 /*   250 */    77,  722,   29,  725,  199,  200,  218,  242,  259,  261,
 /*   260 */    23,   30,  305,  304,  199,  200,  920,  303,   29,  302,
 /*   270 */   301,  300,   70,  299,  298,  890,    3,  166,  888,  889,
 /*   280 */    35,  222,  182,  891,  278,  893,  894,  892,   79,  895,
 /*   290 */   896,   78,  655,  215,  183,  652,  919,  653,  721,  654,
 /*   300 */   724,   72,  239,   70,   67,   54,   52,   56,   53,  216,
 /*   310 */   196,   35,  919,   45,   44,   29,  822,   43,   42,   41,
 /*   320 */   165,  102,  107,  226,  227,   55,  670,   96,  106,  112,
 /*   330 */   115,  105,  732,    1,  153,   55,  185,  109,  728,   29,
 /*   340 */   179,   29,  732,    5,  155,   29,  697,  698,  728,   32,
 /*   350 */   154,   91,   86,   90,  727,  735,  279,   60,  667,  919,
 /*   360 */   173,  169,  718,  729,  727,   24,  171,  168,  120,  119,
 /*   370 */   118,   45,   44,  210,  682,   43,   42,   41,  134,   61,
 /*   380 */   280,   27,  284,  919,  266,  919,  288,  688,   12,  919,
 /*   390 */   186,   59,   83,  187,   80,  309,  308,  125,  719,  689,
 /*   400 */    63,  656,  752,   20,  674,  733,   19,  641,  263,   19,
 /*   410 */   730,   30,   30,  193,  643,  265,  194,    6,   59,   82,
 /*   420 */    64,  642,  192,   95,   94,   59,   14,   13,  114,  113,
 /*   430 */   101,  100,   66,  659,  630,  660,  177,   16,   15,  657,
 /*   440 */   191,  658,  130,  128,  181, 1035,  921,  237,  935,  984,
 /*   450 */   983,  213,  980,  979,  214,  287,  131,  942,   38,  966,
 /*   460 */   949,  951,  133,  244,  137,  965,  917,  129,  150,  149,
 /*   470 */   243,  246,  205,  915,  681,  297,  151,  152,  886,  148,
 /*   480 */   146,  144,  141,  932,  140,  833,  268,   57,  248,  253,
 /*   490 */    65,   36,  258,   62,  175,   33,  277,  829, 1040,  142,
 /*   500 */   256,   92, 1039,  143, 1037,  156,  254,  281, 1034,   98,
 /*   510 */  1033, 1031,  157,  851,   34,   31,   37,  176,  252,  818,
 /*   520 */   108,  250,  816,  110,  111,  814,  813,  228,  247,  167,
 /*   530 */   811,  810,  809,  808,  807,  806,  170,  172,  803,  801,
 /*   540 */   799,  797,  103,  795,  174,   39,   73,   74,  289,  249,
 /*   550 */   967,  290,  291,  292,  293,  294,  295,  201,  220,  267,
 /*   560 */   307,  772,  230,  231,  202,   87,  195,   88,  771,  233,
 /*   570 */   234,  770,  758,  757,  812,  238,    8,   68,  240,  805,
 /*   580 */   160,  121,  159,  852,  158,  161,  162,  164,  122,  163,
 /*   590 */     2,  123,  804,    4,  262,  124,  796,  662,   75,  683,
 /*   600 */   135,  207,  686,   76,  147,  145,  898,  136,  251,    9,
 /*   610 */   690,  138,   25,   10,  734,   26,    7,   11,   21,  736,
 /*   620 */    22,   85,  264,  594,  590,   83,  588,  587,  586,  583,
 /*   630 */   556,  275,   93,   89,   30,  633,   58,  632,  629,  578,
 /*   640 */   576,   97,  568,  574,  570,  572,  566,  564,  597,   99,
 /*   650 */   596,  595,  593,  592,  591,  589,  585,  584,   59,  554,
 /*   660 */   776,  522,  520,  775,  775,  126,  775,  775,  775,  775,
 /*   670 */   775,  775,  775,  775,  127,
H
hzcheng 已提交
288 289
};
static const YYCODETYPE yy_lookahead[] = {
290
 /*     0 */   190,    1,  189,  190,  209,  190,  190,  251,  196,    9,
291 292 293
 /*    10 */   187,  188,  251,   13,   14,  190,   16,   17,  190,  251,
 /*    20 */    20,   21,  251,   23,   24,   25,   26,   27,   28,  261,
 /*    30 */   235,  260,  261,   33,   34,  251,  251,   37,   38,   39,
294
 /*    40 */    13,   14,  230,   16,   17,  260,  261,   20,   21,    1,
295 296
 /*    50 */    23,   24,   25,   26,   27,   28,  233,    9,  251,  231,
 /*    60 */    33,   34,  234,  253,   37,   38,   39,   14,  252,   16,
297
 /*    70 */    17,  248,  257,   20,   21,    1,   23,   24,   25,   26,
D
dapan1121 已提交
298
 /*    80 */    27,   28,  257,    9,  259,  209,   33,   34,   79,   67,
D
fix bug  
dapan1121 已提交
299
 /*    90 */    37,   38,   39,   45,   46,   47,   48,   49,   50,   51,
300
 /*   100 */    52,   53,   54,   55,   56,   57,   58,    5,  251,   61,
D
dapan1121 已提交
301
 /*   110 */   110,  235,  190,   13,   14,  251,   16,   17,  195,  209,
302 303
 /*   120 */    20,   21,  199,   23,   24,   25,   26,   27,   28,   37,
 /*   130 */    38,   39,  105,   33,   34,   33,   34,   37,   38,   39,
D
dapan1121 已提交
304
 /*   140 */    13,   14,   81,   16,   17,  235,    0,   20,   21,  135,
305
 /*   150 */    23,   24,   25,   26,   27,   28,  234,  143,  144,  137,
306
 /*   160 */    33,   34,  140,  141,   37,   38,   39,   88,   89,   90,
D
dapan1121 已提交
307
 /*   170 */    91,   92,   93,   94,   95,   96,   97,   98,   99,  100,
308 309
 /*   180 */   101,  102,  208,  190,  210,  211,  212,  213,  214,  215,
 /*   190 */   216,  217,  218,  219,  220,  221,  222,  223,   16,   17,
310
 /*   200 */   195,  209,   20,   21,  199,   23,   24,   25,   26,   27,
D
dapan1121 已提交
311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341
 /*   210 */    28,   67,   44,  196,  190,   33,   34,  196,  251,   37,
 /*   220 */    38,   39,    1,    2,  190,   79,    5,  235,    7,   61,
 /*   230 */     9,  190,    1,    2,   76,   67,    5,  251,    7,   81,
 /*   240 */     9,   73,   74,   75,  227,  228,  229,  230,  255,  228,
 /*   250 */   257,    5,  190,    7,   33,   34,  232,  105,   37,   15,
 /*   260 */    88,  109,   90,   91,   33,   34,  225,   95,  190,   97,
 /*   270 */    98,   99,  104,  101,  102,  208,  193,  194,  211,  212,
 /*   280 */   112,  137,  251,  216,  140,  218,  219,  220,  236,  222,
 /*   290 */   223,  257,    2,  231,  251,    5,  234,    7,    5,    9,
 /*   300 */     7,  249,  134,  104,  136,   25,   26,   27,   28,  231,
 /*   310 */   142,  112,  234,   33,   34,  190,  195,   37,   38,   39,
 /*   320 */   199,   62,   63,   33,   34,  104,   37,   68,   69,   70,
 /*   330 */    71,   72,  111,  197,  198,  104,  251,   78,  117,  190,
 /*   340 */   251,  190,  111,   62,   63,  190,  124,  125,  117,   68,
 /*   350 */    69,   70,   71,   72,  133,  111,  231,  109,  109,  234,
 /*   360 */    62,   63,    1,  117,  133,  116,   68,   69,   70,   71,
 /*   370 */    72,   33,   34,   60,  105,   37,   38,   39,  109,  131,
 /*   380 */   231,  104,  231,  234,  107,  234,  231,  105,  104,  234,
 /*   390 */   251,  109,  108,  251,  110,   64,   65,   66,   37,  105,
 /*   400 */   109,  111,  105,  109,  115,  105,  109,  105,  105,  109,
 /*   410 */   117,  109,  109,  251,  105,  105,  251,  104,  109,  109,
 /*   420 */   129,  105,  251,  138,  139,  109,  138,  139,   76,   77,
 /*   430 */   138,  139,  104,    5,  106,    7,  251,  138,  139,    5,
 /*   440 */   251,    7,   62,   63,  251,  235,  235,  190,  233,  226,
 /*   450 */   226,  226,  226,  226,  226,  226,  190,  190,  250,  258,
 /*   460 */   190,  190,  190,  233,  190,  258,  233,   60,  190,  237,
 /*   470 */   191,  254,  254,  190,  117,  103,  190,  190,  224,  238,
 /*   480 */   240,  242,  245,  247,  246,  190,  190,  127,  254,  254,
 /*   490 */   128,  190,  122,  130,  190,  190,  190,  190,  190,  244,
 /*   500 */   126,  190,  190,  243,  190,  190,  121,  190,  190,  190,
 /*   510 */   190,  190,  190,  190,  190,  190,  190,  190,  120,  190,
D
dapan1121 已提交
342
 /*   520 */   190,  119,  190,  190,  190,  190,  190,  190,  118,  190,
343
 /*   530 */   190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
D
dapan1121 已提交
344 345 346 347 348 349 350 351 352 353 354 355 356 357
 /*   540 */   190,  190,   87,  190,  190,  132,  191,  191,   86,  191,
 /*   550 */   191,   50,   83,   85,   54,   84,   82,  191,  191,  191,
 /*   560 */    79,    5,  145,    5,  191,  196,  191,  196,    5,  145,
 /*   570 */     5,    5,   90,   89,  191,  135,  104,  114,  113,  191,
 /*   580 */   201,  192,  205,  207,  206,  204,  202,  200,  192,  203,
 /*   590 */   197,  192,  191,  193,  107,  192,  191,  105,  109,  105,
 /*   600 */   104,    1,  105,  104,  239,  241,  224,  109,  104,  123,
 /*   610 */   105,  104,  109,  123,  105,  109,  104,  104,  104,  111,
 /*   620 */   104,   76,  107,    9,    5,  108,    5,    5,    5,    5,
 /*   630 */    80,   15,  139,   76,  109,    5,   16,    5,  105,    5,
 /*   640 */     5,  139,    5,    5,    5,    5,    5,    5,    5,  139,
 /*   650 */     5,    5,    5,    5,    5,    5,    5,    5,  109,   80,
 /*   660 */     0,   60,   59,  262,  262,   21,  262,  262,  262,  262,
 /*   670 */   262,  262,  262,  262,   21,  262,  262,  262,  262,  262,
D
dapan1121 已提交
358
 /*   680 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
 /*   690 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   700 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   710 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   720 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   730 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   740 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   750 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   760 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   770 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   780 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   790 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   800 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   810 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   820 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   830 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   840 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
D
dapan1121 已提交
375 376
 /*   850 */   262,  262,  262,  262,  262,  262,  262,  262,  262,  262,
 /*   860 */   262,  262,
H
hzcheng 已提交
377
};
D
dapan1121 已提交
378
#define YY_SHIFT_COUNT    (312)
379
#define YY_SHIFT_MIN      (0)
D
dapan1121 已提交
380
#define YY_SHIFT_MAX      (660)
381
static const unsigned short int yy_shift_ofst[] = {
D
dapan1121 已提交
382
 /*     0 */   168,   79,   79,  172,  172,    9,  221,  231,   74,   74,
383
 /*    10 */    74,   74,   74,   74,   74,   74,   74,    0,   48,  231,
D
dapan1121 已提交
384 385
 /*    20 */   290,  290,  290,  290,   74,   74,   74,   74,  146,   74,
 /*    30 */    74,  158,    9,   61,   61,  675,  675,  675,  231,  231,
386
 /*    40 */   231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
D
dapan1121 已提交
387 388 389 390
 /*    50 */   231,  231,  231,  231,  231,  231,  231,  231,  290,  290,
 /*    60 */   102,  102,  102,  102,  102,  102,  102,   74,  199,   74,
 /*    70 */   199,   74,  289,   74,   74,   74,   74,  222,  222,  249,
 /*    80 */   199,   74,   74,   74,   74,   74,   74,   74,   74,   74,
391 392 393 394
 /*    90 */    74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
 /*   100 */    74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
 /*   110 */    74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
 /*   120 */    74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
D
dapan1121 已提交
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413
 /*   130 */    74,  407,  407,  407,  357,  357,  357,  407,  357,  407,
 /*   140 */   362,  363,  360,  370,  374,  385,  398,  402,  410,  413,
 /*   150 */   407,  407,  407,  372,    9,    9,  407,  407,  455,  462,
 /*   160 */   501,  469,  468,  500,  471,  474,  372,  407,  481,  481,
 /*   170 */   407,  481,  407,  481,  407,  675,  675,   27,  100,  127,
 /*   180 */   100,  100,   53,  182,  280,  280,  280,  280,  259,  281,
 /*   190 */   298,  338,  338,  338,  338,   22,   14,   92,   92,  246,
 /*   200 */   293,  284,  144,  331,  152,  269,  282,  294,  297,  300,
 /*   210 */   361,  313,  244,  248,  291,  302,  303,  309,  310,  316,
 /*   220 */   277,  285,  288,  292,  328,  299,  428,  434,  352,  380,
 /*   230 */   556,  417,  558,  563,  424,  565,  566,  482,  484,  440,
 /*   240 */   463,  465,  487,  472,  492,  489,  494,  496,  497,  498,
 /*   250 */   499,  600,  504,  505,  507,  503,  486,  506,  490,  509,
 /*   260 */   512,  508,  513,  487,  514,  515,  516,  517,  545,  614,
 /*   270 */   619,  621,  622,  623,  624,  550,  616,  557,  493,  525,
 /*   280 */   525,  620,  502,  510,  525,  630,  632,  533,  525,  634,
 /*   290 */   635,  637,  638,  639,  640,  641,  642,  643,  645,  646,
 /*   300 */   647,  648,  649,  650,  651,  652,  549,  579,  644,  653,
 /*   310 */   601,  603,  660,
H
hzcheng 已提交
414
};
D
dapan1121 已提交
415
#define YY_REDUCE_COUNT (176)
416
#define YY_REDUCE_MIN   (-244)
D
dapan1121 已提交
417
#define YY_REDUCE_MAX   (405)
H
hzcheng 已提交
418
static const short yy_reduce_ofst[] = {
419 420
 /*     0 */  -177,  -26,  -26,   67,   67,   17, -229, -215, -172, -175,
 /*    10 */    -7,   62,   78,  125,  149,  151,  155, -184, -187, -232,
D
dapan1121 已提交
421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436
 /*    20 */  -205, -124,  -90,   -8, -190, -185,   34,   24, -188,   41,
 /*    30 */   -78,  -77,   21,    5,  121,   52,  136,   83, -244, -239,
 /*    40 */  -216, -193, -143, -136,  -33,  -14,   31,   43,   85,   89,
 /*    50 */   139,  142,  162,  165,  171,  185,  189,  193,  210,  211,
 /*    60 */   223,  224,  225,  226,  227,  228,  229,  257,  215,  266,
 /*    70 */   230,  267,  208,  270,  271,  272,  274,  201,  207,  232,
 /*    80 */   233,  278,  283,  286,  287,  295,  296,  301,  304,  305,
 /*    90 */   306,  307,  308,  311,  312,  314,  315,  317,  318,  319,
 /*   100 */   320,  321,  322,  323,  324,  325,  326,  327,  329,  330,
 /*   110 */   332,  333,  334,  335,  336,  337,  339,  340,  341,  342,
 /*   120 */   343,  344,  345,  346,  347,  348,  349,  350,  351,  353,
 /*   130 */   354,  279,  355,  356,  217,  218,  234,  358,  235,  359,
 /*   140 */   236,  238,  237,  255,  260,  239,  364,  240,  365,  241,
 /*   150 */   366,  367,  368,  254,  369,  371,  373,  375,  376,  378,
 /*   160 */   377,  379,  381,  384,  386,  387,  382,  383,  389,  396,
 /*   170 */   388,  399,  401,  403,  405,  393,  400,
H
hzcheng 已提交
437 438
};
static const YYACTIONTYPE yy_default[] = {
D
dapan1121 已提交
439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470
 /*     0 */   773,  885,  831,  897,  819,  828, 1027, 1027,  773,  773,
 /*    10 */   773,  773,  773,  773,  773,  773,  773,  944,  792, 1027,
 /*    20 */   773,  773,  773,  773,  773,  773,  773,  773,  828,  773,
 /*    30 */   773,  834,  828,  834,  834,  939,  869,  887,  773,  773,
 /*    40 */   773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
 /*    50 */   773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
 /*    60 */   773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
 /*    70 */   773,  773,  946,  948,  950,  773,  773,  970,  970,  937,
 /*    80 */   773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
 /*    90 */   773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
 /*   100 */   773,  773,  773,  773,  773,  773,  773,  773,  817,  773,
 /*   110 */   815,  773,  773,  773,  773,  773,  773,  773,  773,  773,
 /*   120 */   773,  773,  773,  773,  773,  802,  773,  773,  773,  773,
 /*   130 */   773,  794,  794,  794,  773,  773,  773,  794,  773,  794,
 /*   140 */   977,  981,  975,  963,  971,  962,  958,  956,  955,  985,
 /*   150 */   794,  794,  794,  832,  828,  828,  794,  794,  850,  848,
 /*   160 */   846,  838,  844,  840,  842,  836,  820,  794,  826,  826,
 /*   170 */   794,  826,  794,  826,  794,  869,  887,  773,  986,  773,
 /*   180 */  1026,  976, 1016, 1015, 1022, 1014, 1013, 1012,  773,  773,
 /*   190 */   773, 1008, 1009, 1011, 1010,  773,  773, 1018, 1017,  773,
 /*   200 */   773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
 /*   210 */   773,  988,  773,  982,  978,  773,  773,  773,  773,  773,
 /*   220 */   773,  773,  773,  773,  899,  773,  773,  773,  773,  773,
 /*   230 */   773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
 /*   240 */   773,  936,  773,  773,  773,  947,  773,  773,  773,  773,
 /*   250 */   773,  773,  773,  773,  773,  972,  773,  964,  773,  773,
 /*   260 */   773,  773,  773,  911,  773,  773,  773,  773,  773,  773,
 /*   270 */   773,  773,  773,  773,  773,  773,  773,  773,  773, 1038,
 /*   280 */  1036,  773,  773,  773, 1032,  773,  773,  773, 1030,  773,
 /*   290 */   773,  773,  773,  773,  773,  773,  773,  773,  773,  773,
 /*   300 */   773,  773,  773,  773,  773,  773,  853,  773,  800,  798,
 /*   310 */   773,  790,  773,
H
hzcheng 已提交
471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535
};
/********** End of lemon-generated parsing tables *****************************/

/* The next table maps tokens (terminal symbols) into fallback tokens.  
** If a construct like the following:
** 
**      %fallback ID X Y Z.
**
** appears in the grammar, then ID becomes a fallback token for X, Y,
** and Z.  Whenever one of the tokens X, Y, or Z is input to the parser
** but it does not parse, the type of the token is changed to ID and
** the parse is retried before an error is thrown.
**
** This feature can be used, for example, to cause some keywords in a language
** to revert to identifiers if they keyword does not apply in the context where
** it appears.
*/
#ifdef YYFALLBACK
static const YYCODETYPE yyFallback[] = {
    0,  /*          $ => nothing */
    0,  /*         ID => nothing */
    1,  /*       BOOL => ID */
    1,  /*    TINYINT => ID */
    1,  /*   SMALLINT => ID */
    1,  /*    INTEGER => ID */
    1,  /*     BIGINT => ID */
    1,  /*      FLOAT => ID */
    1,  /*     DOUBLE => ID */
    1,  /*     STRING => ID */
    1,  /*  TIMESTAMP => ID */
    1,  /*     BINARY => ID */
    1,  /*      NCHAR => ID */
    0,  /*         OR => nothing */
    0,  /*        AND => nothing */
    0,  /*        NOT => nothing */
    0,  /*         EQ => nothing */
    0,  /*         NE => nothing */
    0,  /*     ISNULL => nothing */
    0,  /*    NOTNULL => nothing */
    0,  /*         IS => nothing */
    1,  /*       LIKE => ID */
    1,  /*       GLOB => ID */
    0,  /*    BETWEEN => nothing */
    0,  /*         IN => nothing */
    0,  /*         GT => nothing */
    0,  /*         GE => nothing */
    0,  /*         LT => nothing */
    0,  /*         LE => nothing */
    0,  /*     BITAND => nothing */
    0,  /*      BITOR => nothing */
    0,  /*     LSHIFT => nothing */
    0,  /*     RSHIFT => nothing */
    0,  /*       PLUS => nothing */
    0,  /*      MINUS => nothing */
    0,  /*     DIVIDE => nothing */
    0,  /*      TIMES => nothing */
    0,  /*       STAR => nothing */
    0,  /*      SLASH => nothing */
    0,  /*        REM => nothing */
    0,  /*     CONCAT => nothing */
    0,  /*     UMINUS => nothing */
    0,  /*      UPLUS => nothing */
    0,  /*     BITNOT => nothing */
    0,  /*       SHOW => nothing */
    0,  /*  DATABASES => nothing */
D
dapan1121 已提交
536
    0,  /*     TOPICS => nothing */
H
hzcheng 已提交
537 538
    0,  /*     MNODES => nothing */
    0,  /*     DNODES => nothing */
S
slguan 已提交
539
    0,  /*   ACCOUNTS => nothing */
H
hzcheng 已提交
540 541 542 543 544
    0,  /*      USERS => nothing */
    0,  /*    MODULES => nothing */
    0,  /*    QUERIES => nothing */
    0,  /* CONNECTIONS => nothing */
    0,  /*    STREAMS => nothing */
H
Haojun Liao 已提交
545
    0,  /*  VARIABLES => nothing */
H
hzcheng 已提交
546 547
    0,  /*     SCORES => nothing */
    0,  /*     GRANTS => nothing */
L
lihui 已提交
548 549
    0,  /*     VNODES => nothing */
    1,  /*    IPTOKEN => ID */
H
hzcheng 已提交
550
    0,  /*        DOT => nothing */
Y
yihaoDeng 已提交
551 552 553
    0,  /*     CREATE => nothing */
    0,  /*      TABLE => nothing */
    1,  /*   DATABASE => ID */
H
hzcheng 已提交
554 555 556 557
    0,  /*     TABLES => nothing */
    0,  /*    STABLES => nothing */
    0,  /*    VGROUPS => nothing */
    0,  /*       DROP => nothing */
D
dapan1121 已提交
558
    1,  /*     STABLE => ID */
D
dapan1121 已提交
559
    0,  /*      TOPIC => nothing */
S
slguan 已提交
560
    0,  /*      DNODE => nothing */
H
hzcheng 已提交
561
    0,  /*       USER => nothing */
S
slguan 已提交
562
    0,  /*    ACCOUNT => nothing */
H
hzcheng 已提交
563 564 565 566 567 568 569 570
    0,  /*        USE => nothing */
    0,  /*   DESCRIBE => nothing */
    0,  /*      ALTER => nothing */
    0,  /*       PASS => nothing */
    0,  /*  PRIVILEGE => nothing */
    0,  /*      LOCAL => nothing */
    0,  /*         IF => nothing */
    0,  /*     EXISTS => nothing */
S
slguan 已提交
571 572 573 574 575 576 577
    0,  /*        PPS => nothing */
    0,  /*    TSERIES => nothing */
    0,  /*        DBS => nothing */
    0,  /*    STORAGE => nothing */
    0,  /*      QTIME => nothing */
    0,  /*      CONNS => nothing */
    0,  /*      STATE => nothing */
H
hzcheng 已提交
578
    0,  /*       KEEP => nothing */
579
    0,  /*      CACHE => nothing */
H
hzcheng 已提交
580
    0,  /*    REPLICA => nothing */
581
    0,  /*     QUORUM => nothing */
H
hzcheng 已提交
582
    0,  /*       DAYS => nothing */
H
hjxilinx 已提交
583 584 585
    0,  /*    MINROWS => nothing */
    0,  /*    MAXROWS => nothing */
    0,  /*     BLOCKS => nothing */
H
hzcheng 已提交
586
    0,  /*      CTIME => nothing */
H
hjxilinx 已提交
587
    0,  /*        WAL => nothing */
陶建辉(Jeff)'s avatar
sql.y  
陶建辉(Jeff) 已提交
588
    0,  /*      FSYNC => nothing */
H
hzcheng 已提交
589 590
    0,  /*       COMP => nothing */
    0,  /*  PRECISION => nothing */
Y
yihaoDeng 已提交
591
    0,  /*     UPDATE => nothing */
D
dapan1121 已提交
592
    0,  /*  CACHELAST => nothing */
D
dapan1121 已提交
593
    0,  /* PARTITIONS => nothing */
H
hzcheng 已提交
594 595
    0,  /*         LP => nothing */
    0,  /*         RP => nothing */
596
    0,  /*   UNSIGNED => nothing */
H
hzcheng 已提交
597 598 599
    0,  /*       TAGS => nothing */
    0,  /*      USING => nothing */
    0,  /*      COMMA => nothing */
600
    0,  /*         AS => nothing */
H
hjxilinx 已提交
601
    1,  /*       NULL => ID */
H
hzcheng 已提交
602
    0,  /*     SELECT => nothing */
603
    0,  /*      UNION => nothing */
604
    1,  /*        ALL => ID */
H
Haojun Liao 已提交
605
    0,  /*   DISTINCT => nothing */
H
hzcheng 已提交
606 607 608
    0,  /*       FROM => nothing */
    0,  /*   VARIABLE => nothing */
    0,  /*   INTERVAL => nothing */
609
    0,  /*    SESSION => nothing */
H
hzcheng 已提交
610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625
    0,  /*       FILL => nothing */
    0,  /*    SLIDING => nothing */
    0,  /*      ORDER => nothing */
    0,  /*         BY => nothing */
    1,  /*        ASC => ID */
    1,  /*       DESC => ID */
    0,  /*      GROUP => nothing */
    0,  /*     HAVING => nothing */
    0,  /*      LIMIT => nothing */
    1,  /*     OFFSET => ID */
    0,  /*     SLIMIT => nothing */
    0,  /*    SOFFSET => nothing */
    0,  /*      WHERE => nothing */
    1,  /*        NOW => ID */
    0,  /*      RESET => nothing */
    0,  /*      QUERY => nothing */
626
    0,  /*     SYNCDB => nothing */
H
hzcheng 已提交
627 628 629 630 631 632 633 634
    0,  /*        ADD => nothing */
    0,  /*     COLUMN => nothing */
    0,  /*        TAG => nothing */
    0,  /*     CHANGE => nothing */
    0,  /*        SET => nothing */
    0,  /*       KILL => nothing */
    0,  /* CONNECTION => nothing */
    0,  /*     STREAM => nothing */
635
    0,  /*      COLON => nothing */
H
hzcheng 已提交
636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673
    1,  /*      ABORT => ID */
    1,  /*      AFTER => ID */
    1,  /*     ATTACH => ID */
    1,  /*     BEFORE => ID */
    1,  /*      BEGIN => ID */
    1,  /*    CASCADE => ID */
    1,  /*    CLUSTER => ID */
    1,  /*   CONFLICT => ID */
    1,  /*       COPY => ID */
    1,  /*   DEFERRED => ID */
    1,  /* DELIMITERS => ID */
    1,  /*     DETACH => ID */
    1,  /*       EACH => ID */
    1,  /*        END => ID */
    1,  /*    EXPLAIN => ID */
    1,  /*       FAIL => ID */
    1,  /*        FOR => ID */
    1,  /*     IGNORE => ID */
    1,  /*  IMMEDIATE => ID */
    1,  /*  INITIALLY => ID */
    1,  /*    INSTEAD => ID */
    1,  /*      MATCH => ID */
    1,  /*        KEY => ID */
    1,  /*         OF => ID */
    1,  /*      RAISE => ID */
    1,  /*    REPLACE => ID */
    1,  /*   RESTRICT => ID */
    1,  /*        ROW => ID */
    1,  /*  STATEMENT => ID */
    1,  /*    TRIGGER => ID */
    1,  /*       VIEW => ID */
    1,  /*       SEMI => ID */
    1,  /*       NONE => ID */
    1,  /*       PREV => ID */
    1,  /*     LINEAR => ID */
    1,  /*     IMPORT => ID */
    1,  /*     TBNAME => ID */
    1,  /*       JOIN => ID */
674 675 676
    1,  /*     INSERT => ID */
    1,  /*       INTO => ID */
    1,  /*     VALUES => ID */
H
hzcheng 已提交
677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707
};
#endif /* YYFALLBACK */

/* The following structure represents a single element of the
** parser's stack.  Information stored includes:
**
**   +  The state number for the parser at this level of the stack.
**
**   +  The value of the token stored at this level of the stack.
**      (In other words, the "major" token.)
**
**   +  The semantic value stored at this level of the stack.  This is
**      the information used by the action routines in the grammar.
**      It is sometimes called the "minor" token.
**
** After the "shift" half of a SHIFTREDUCE action, the stateno field
** actually contains the reduce action for the second half of the
** SHIFTREDUCE.
*/
struct yyStackEntry {
  YYACTIONTYPE stateno;  /* The state-number, or reduce action in SHIFTREDUCE */
  YYCODETYPE major;      /* The major token value.  This is the code
                         ** number for the token at this stack level */
  YYMINORTYPE minor;     /* The user-supplied minor token value.  This
                         ** is the value of the token  */
};
typedef struct yyStackEntry yyStackEntry;

/* The state of the parser is completely contained in an instance of
** the following structure */
struct yyParser {
708
  yyStackEntry *yytos;          /* Pointer to top element of the stack */
H
hzcheng 已提交
709
#ifdef YYTRACKMAXSTACKDEPTH
710
  int yyhwm;                    /* High-water mark of the stack */
H
hzcheng 已提交
711
#endif
712
#ifndef YYNOERRORRECOVERY
H
hzcheng 已提交
713
  int yyerrcnt;                 /* Shifts left before out of the error */
714
#endif
H
hzcheng 已提交
715
  ParseARG_SDECL                /* A place to hold %extra_argument */
716
  ParseCTX_SDECL                /* A place to hold %extra_context */
H
hzcheng 已提交
717 718 719
#if YYSTACKDEPTH<=0
  int yystksz;                  /* Current side of the stack */
  yyStackEntry *yystack;        /* The parser's stack */
720
  yyStackEntry yystk0;          /* First stack entry */
H
hzcheng 已提交
721 722
#else
  yyStackEntry yystack[YYSTACKDEPTH];  /* The parser's stack */
723
  yyStackEntry *yystackEnd;            /* Last entry in the stack */
H
hzcheng 已提交
724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759
#endif
};
typedef struct yyParser yyParser;

#ifndef NDEBUG
#include <stdio.h>
static FILE *yyTraceFILE = 0;
static char *yyTracePrompt = 0;
#endif /* NDEBUG */

#ifndef NDEBUG
/* 
** Turn parser tracing on by giving a stream to which to write the trace
** and a prompt to preface each trace message.  Tracing is turned off
** by making either argument NULL 
**
** Inputs:
** <ul>
** <li> A FILE* to which trace output should be written.
**      If NULL, then tracing is turned off.
** <li> A prefix string written at the beginning of every
**      line of trace output.  If NULL, then tracing is
**      turned off.
** </ul>
**
** Outputs:
** None.
*/
void ParseTrace(FILE *TraceFILE, char *zTracePrompt){
  yyTraceFILE = TraceFILE;
  yyTracePrompt = zTracePrompt;
  if( yyTraceFILE==0 ) yyTracePrompt = 0;
  else if( yyTracePrompt==0 ) yyTraceFILE = 0;
}
#endif /* NDEBUG */

760
#if defined(YYCOVERAGE) || !defined(NDEBUG)
H
hzcheng 已提交
761 762 763
/* For tracing shifts, the names of all terminals and nonterminals
** are required.  The following table supplies these names */
static const char *const yyTokenName[] = { 
764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809
  /*    0 */ "$",
  /*    1 */ "ID",
  /*    2 */ "BOOL",
  /*    3 */ "TINYINT",
  /*    4 */ "SMALLINT",
  /*    5 */ "INTEGER",
  /*    6 */ "BIGINT",
  /*    7 */ "FLOAT",
  /*    8 */ "DOUBLE",
  /*    9 */ "STRING",
  /*   10 */ "TIMESTAMP",
  /*   11 */ "BINARY",
  /*   12 */ "NCHAR",
  /*   13 */ "OR",
  /*   14 */ "AND",
  /*   15 */ "NOT",
  /*   16 */ "EQ",
  /*   17 */ "NE",
  /*   18 */ "ISNULL",
  /*   19 */ "NOTNULL",
  /*   20 */ "IS",
  /*   21 */ "LIKE",
  /*   22 */ "GLOB",
  /*   23 */ "BETWEEN",
  /*   24 */ "IN",
  /*   25 */ "GT",
  /*   26 */ "GE",
  /*   27 */ "LT",
  /*   28 */ "LE",
  /*   29 */ "BITAND",
  /*   30 */ "BITOR",
  /*   31 */ "LSHIFT",
  /*   32 */ "RSHIFT",
  /*   33 */ "PLUS",
  /*   34 */ "MINUS",
  /*   35 */ "DIVIDE",
  /*   36 */ "TIMES",
  /*   37 */ "STAR",
  /*   38 */ "SLASH",
  /*   39 */ "REM",
  /*   40 */ "CONCAT",
  /*   41 */ "UMINUS",
  /*   42 */ "UPLUS",
  /*   43 */ "BITNOT",
  /*   44 */ "SHOW",
  /*   45 */ "DATABASES",
D
dapan1121 已提交
810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882
  /*   46 */ "TOPICS",
  /*   47 */ "MNODES",
  /*   48 */ "DNODES",
  /*   49 */ "ACCOUNTS",
  /*   50 */ "USERS",
  /*   51 */ "MODULES",
  /*   52 */ "QUERIES",
  /*   53 */ "CONNECTIONS",
  /*   54 */ "STREAMS",
  /*   55 */ "VARIABLES",
  /*   56 */ "SCORES",
  /*   57 */ "GRANTS",
  /*   58 */ "VNODES",
  /*   59 */ "IPTOKEN",
  /*   60 */ "DOT",
  /*   61 */ "CREATE",
  /*   62 */ "TABLE",
  /*   63 */ "DATABASE",
  /*   64 */ "TABLES",
  /*   65 */ "STABLES",
  /*   66 */ "VGROUPS",
  /*   67 */ "DROP",
  /*   68 */ "STABLE",
  /*   69 */ "TOPIC",
  /*   70 */ "DNODE",
  /*   71 */ "USER",
  /*   72 */ "ACCOUNT",
  /*   73 */ "USE",
  /*   74 */ "DESCRIBE",
  /*   75 */ "ALTER",
  /*   76 */ "PASS",
  /*   77 */ "PRIVILEGE",
  /*   78 */ "LOCAL",
  /*   79 */ "IF",
  /*   80 */ "EXISTS",
  /*   81 */ "PPS",
  /*   82 */ "TSERIES",
  /*   83 */ "DBS",
  /*   84 */ "STORAGE",
  /*   85 */ "QTIME",
  /*   86 */ "CONNS",
  /*   87 */ "STATE",
  /*   88 */ "KEEP",
  /*   89 */ "CACHE",
  /*   90 */ "REPLICA",
  /*   91 */ "QUORUM",
  /*   92 */ "DAYS",
  /*   93 */ "MINROWS",
  /*   94 */ "MAXROWS",
  /*   95 */ "BLOCKS",
  /*   96 */ "CTIME",
  /*   97 */ "WAL",
  /*   98 */ "FSYNC",
  /*   99 */ "COMP",
  /*  100 */ "PRECISION",
  /*  101 */ "UPDATE",
  /*  102 */ "CACHELAST",
  /*  103 */ "PARTITIONS",
  /*  104 */ "LP",
  /*  105 */ "RP",
  /*  106 */ "UNSIGNED",
  /*  107 */ "TAGS",
  /*  108 */ "USING",
  /*  109 */ "COMMA",
  /*  110 */ "AS",
  /*  111 */ "NULL",
  /*  112 */ "SELECT",
  /*  113 */ "UNION",
  /*  114 */ "ALL",
  /*  115 */ "DISTINCT",
  /*  116 */ "FROM",
  /*  117 */ "VARIABLE",
  /*  118 */ "INTERVAL",
883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899
  /*  119 */ "SESSION",
  /*  120 */ "FILL",
  /*  121 */ "SLIDING",
  /*  122 */ "ORDER",
  /*  123 */ "BY",
  /*  124 */ "ASC",
  /*  125 */ "DESC",
  /*  126 */ "GROUP",
  /*  127 */ "HAVING",
  /*  128 */ "LIMIT",
  /*  129 */ "OFFSET",
  /*  130 */ "SLIMIT",
  /*  131 */ "SOFFSET",
  /*  132 */ "WHERE",
  /*  133 */ "NOW",
  /*  134 */ "RESET",
  /*  135 */ "QUERY",
900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950
  /*  136 */ "SYNCDB",
  /*  137 */ "ADD",
  /*  138 */ "COLUMN",
  /*  139 */ "TAG",
  /*  140 */ "CHANGE",
  /*  141 */ "SET",
  /*  142 */ "KILL",
  /*  143 */ "CONNECTION",
  /*  144 */ "STREAM",
  /*  145 */ "COLON",
  /*  146 */ "ABORT",
  /*  147 */ "AFTER",
  /*  148 */ "ATTACH",
  /*  149 */ "BEFORE",
  /*  150 */ "BEGIN",
  /*  151 */ "CASCADE",
  /*  152 */ "CLUSTER",
  /*  153 */ "CONFLICT",
  /*  154 */ "COPY",
  /*  155 */ "DEFERRED",
  /*  156 */ "DELIMITERS",
  /*  157 */ "DETACH",
  /*  158 */ "EACH",
  /*  159 */ "END",
  /*  160 */ "EXPLAIN",
  /*  161 */ "FAIL",
  /*  162 */ "FOR",
  /*  163 */ "IGNORE",
  /*  164 */ "IMMEDIATE",
  /*  165 */ "INITIALLY",
  /*  166 */ "INSTEAD",
  /*  167 */ "MATCH",
  /*  168 */ "KEY",
  /*  169 */ "OF",
  /*  170 */ "RAISE",
  /*  171 */ "REPLACE",
  /*  172 */ "RESTRICT",
  /*  173 */ "ROW",
  /*  174 */ "STATEMENT",
  /*  175 */ "TRIGGER",
  /*  176 */ "VIEW",
  /*  177 */ "SEMI",
  /*  178 */ "NONE",
  /*  179 */ "PREV",
  /*  180 */ "LINEAR",
  /*  181 */ "IMPORT",
  /*  182 */ "TBNAME",
  /*  183 */ "JOIN",
  /*  184 */ "INSERT",
  /*  185 */ "INTO",
  /*  186 */ "VALUES",
951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025
  /*  187 */ "program",
  /*  188 */ "cmd",
  /*  189 */ "dbPrefix",
  /*  190 */ "ids",
  /*  191 */ "cpxName",
  /*  192 */ "ifexists",
  /*  193 */ "alter_db_optr",
  /*  194 */ "alter_topic_optr",
  /*  195 */ "acct_optr",
  /*  196 */ "ifnotexists",
  /*  197 */ "db_optr",
  /*  198 */ "topic_optr",
  /*  199 */ "pps",
  /*  200 */ "tseries",
  /*  201 */ "dbs",
  /*  202 */ "streams",
  /*  203 */ "storage",
  /*  204 */ "qtime",
  /*  205 */ "users",
  /*  206 */ "conns",
  /*  207 */ "state",
  /*  208 */ "keep",
  /*  209 */ "tagitemlist",
  /*  210 */ "cache",
  /*  211 */ "replica",
  /*  212 */ "quorum",
  /*  213 */ "days",
  /*  214 */ "minrows",
  /*  215 */ "maxrows",
  /*  216 */ "blocks",
  /*  217 */ "ctime",
  /*  218 */ "wal",
  /*  219 */ "fsync",
  /*  220 */ "comp",
  /*  221 */ "prec",
  /*  222 */ "update",
  /*  223 */ "cachelast",
  /*  224 */ "partitions",
  /*  225 */ "typename",
  /*  226 */ "signed",
  /*  227 */ "create_table_args",
  /*  228 */ "create_stable_args",
  /*  229 */ "create_table_list",
  /*  230 */ "create_from_stable",
  /*  231 */ "columnlist",
  /*  232 */ "tagNamelist",
  /*  233 */ "select",
  /*  234 */ "column",
  /*  235 */ "tagitem",
  /*  236 */ "selcollist",
  /*  237 */ "from",
  /*  238 */ "where_opt",
  /*  239 */ "interval_opt",
  /*  240 */ "session_option",
  /*  241 */ "fill_opt",
  /*  242 */ "sliding_opt",
  /*  243 */ "groupby_opt",
  /*  244 */ "orderby_opt",
  /*  245 */ "having_opt",
  /*  246 */ "slimit_opt",
  /*  247 */ "limit_opt",
  /*  248 */ "union",
  /*  249 */ "sclp",
  /*  250 */ "distinct",
  /*  251 */ "expr",
  /*  252 */ "as",
  /*  253 */ "tablelist",
  /*  254 */ "tmvar",
  /*  255 */ "sortlist",
  /*  256 */ "sortitem",
  /*  257 */ "item",
  /*  258 */ "sortorder",
  /*  259 */ "grouplist",
  /*  260 */ "exprlist",
  /*  261 */ "expritem",
H
hzcheng 已提交
1026
};
1027
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
H
hzcheng 已提交
1028 1029 1030 1031 1032 1033 1034

#ifndef NDEBUG
/* For tracing reduce actions, the names of all rules are required.
*/
static const char *const yyRuleName[] = {
 /*   0 */ "program ::= cmd",
 /*   1 */ "cmd ::= SHOW DATABASES",
D
dapan1121 已提交
1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141
 /*   2 */ "cmd ::= SHOW TOPICS",
 /*   3 */ "cmd ::= SHOW MNODES",
 /*   4 */ "cmd ::= SHOW DNODES",
 /*   5 */ "cmd ::= SHOW ACCOUNTS",
 /*   6 */ "cmd ::= SHOW USERS",
 /*   7 */ "cmd ::= SHOW MODULES",
 /*   8 */ "cmd ::= SHOW QUERIES",
 /*   9 */ "cmd ::= SHOW CONNECTIONS",
 /*  10 */ "cmd ::= SHOW STREAMS",
 /*  11 */ "cmd ::= SHOW VARIABLES",
 /*  12 */ "cmd ::= SHOW SCORES",
 /*  13 */ "cmd ::= SHOW GRANTS",
 /*  14 */ "cmd ::= SHOW VNODES",
 /*  15 */ "cmd ::= SHOW VNODES IPTOKEN",
 /*  16 */ "dbPrefix ::=",
 /*  17 */ "dbPrefix ::= ids DOT",
 /*  18 */ "cpxName ::=",
 /*  19 */ "cpxName ::= DOT ids",
 /*  20 */ "cmd ::= SHOW CREATE TABLE ids cpxName",
 /*  21 */ "cmd ::= SHOW CREATE DATABASE ids",
 /*  22 */ "cmd ::= SHOW dbPrefix TABLES",
 /*  23 */ "cmd ::= SHOW dbPrefix TABLES LIKE ids",
 /*  24 */ "cmd ::= SHOW dbPrefix STABLES",
 /*  25 */ "cmd ::= SHOW dbPrefix STABLES LIKE ids",
 /*  26 */ "cmd ::= SHOW dbPrefix VGROUPS",
 /*  27 */ "cmd ::= SHOW dbPrefix VGROUPS ids",
 /*  28 */ "cmd ::= DROP TABLE ifexists ids cpxName",
 /*  29 */ "cmd ::= DROP STABLE ifexists ids cpxName",
 /*  30 */ "cmd ::= DROP DATABASE ifexists ids",
 /*  31 */ "cmd ::= DROP TOPIC ifexists ids",
 /*  32 */ "cmd ::= DROP DNODE ids",
 /*  33 */ "cmd ::= DROP USER ids",
 /*  34 */ "cmd ::= DROP ACCOUNT ids",
 /*  35 */ "cmd ::= USE ids",
 /*  36 */ "cmd ::= DESCRIBE ids cpxName",
 /*  37 */ "cmd ::= ALTER USER ids PASS ids",
 /*  38 */ "cmd ::= ALTER USER ids PRIVILEGE ids",
 /*  39 */ "cmd ::= ALTER DNODE ids ids",
 /*  40 */ "cmd ::= ALTER DNODE ids ids ids",
 /*  41 */ "cmd ::= ALTER LOCAL ids",
 /*  42 */ "cmd ::= ALTER LOCAL ids ids",
 /*  43 */ "cmd ::= ALTER DATABASE ids alter_db_optr",
 /*  44 */ "cmd ::= ALTER TOPIC ids alter_topic_optr",
 /*  45 */ "cmd ::= ALTER ACCOUNT ids acct_optr",
 /*  46 */ "cmd ::= ALTER ACCOUNT ids PASS ids acct_optr",
 /*  47 */ "ids ::= ID",
 /*  48 */ "ids ::= STRING",
 /*  49 */ "ifexists ::= IF EXISTS",
 /*  50 */ "ifexists ::=",
 /*  51 */ "ifnotexists ::= IF NOT EXISTS",
 /*  52 */ "ifnotexists ::=",
 /*  53 */ "cmd ::= CREATE DNODE ids",
 /*  54 */ "cmd ::= CREATE ACCOUNT ids PASS ids acct_optr",
 /*  55 */ "cmd ::= CREATE DATABASE ifnotexists ids db_optr",
 /*  56 */ "cmd ::= CREATE TOPIC ifnotexists ids topic_optr",
 /*  57 */ "cmd ::= CREATE USER ids PASS ids",
 /*  58 */ "pps ::=",
 /*  59 */ "pps ::= PPS INTEGER",
 /*  60 */ "tseries ::=",
 /*  61 */ "tseries ::= TSERIES INTEGER",
 /*  62 */ "dbs ::=",
 /*  63 */ "dbs ::= DBS INTEGER",
 /*  64 */ "streams ::=",
 /*  65 */ "streams ::= STREAMS INTEGER",
 /*  66 */ "storage ::=",
 /*  67 */ "storage ::= STORAGE INTEGER",
 /*  68 */ "qtime ::=",
 /*  69 */ "qtime ::= QTIME INTEGER",
 /*  70 */ "users ::=",
 /*  71 */ "users ::= USERS INTEGER",
 /*  72 */ "conns ::=",
 /*  73 */ "conns ::= CONNS INTEGER",
 /*  74 */ "state ::=",
 /*  75 */ "state ::= STATE ids",
 /*  76 */ "acct_optr ::= pps tseries storage streams qtime dbs users conns state",
 /*  77 */ "keep ::= KEEP tagitemlist",
 /*  78 */ "cache ::= CACHE INTEGER",
 /*  79 */ "replica ::= REPLICA INTEGER",
 /*  80 */ "quorum ::= QUORUM INTEGER",
 /*  81 */ "days ::= DAYS INTEGER",
 /*  82 */ "minrows ::= MINROWS INTEGER",
 /*  83 */ "maxrows ::= MAXROWS INTEGER",
 /*  84 */ "blocks ::= BLOCKS INTEGER",
 /*  85 */ "ctime ::= CTIME INTEGER",
 /*  86 */ "wal ::= WAL INTEGER",
 /*  87 */ "fsync ::= FSYNC INTEGER",
 /*  88 */ "comp ::= COMP INTEGER",
 /*  89 */ "prec ::= PRECISION STRING",
 /*  90 */ "update ::= UPDATE INTEGER",
 /*  91 */ "cachelast ::= CACHELAST INTEGER",
 /*  92 */ "partitions ::= PARTITIONS INTEGER",
 /*  93 */ "db_optr ::=",
 /*  94 */ "db_optr ::= db_optr cache",
 /*  95 */ "db_optr ::= db_optr replica",
 /*  96 */ "db_optr ::= db_optr quorum",
 /*  97 */ "db_optr ::= db_optr days",
 /*  98 */ "db_optr ::= db_optr minrows",
 /*  99 */ "db_optr ::= db_optr maxrows",
 /* 100 */ "db_optr ::= db_optr blocks",
 /* 101 */ "db_optr ::= db_optr ctime",
 /* 102 */ "db_optr ::= db_optr wal",
 /* 103 */ "db_optr ::= db_optr fsync",
 /* 104 */ "db_optr ::= db_optr comp",
 /* 105 */ "db_optr ::= db_optr prec",
 /* 106 */ "db_optr ::= db_optr keep",
 /* 107 */ "db_optr ::= db_optr update",
 /* 108 */ "db_optr ::= db_optr cachelast",
D
fix bug  
dapan1121 已提交
1142 1143
 /* 109 */ "topic_optr ::= db_optr",
 /* 110 */ "topic_optr ::= topic_optr partitions",
D
dapan1121 已提交
1144 1145 1146 1147 1148 1149 1150 1151 1152 1153
 /* 111 */ "alter_db_optr ::=",
 /* 112 */ "alter_db_optr ::= alter_db_optr replica",
 /* 113 */ "alter_db_optr ::= alter_db_optr quorum",
 /* 114 */ "alter_db_optr ::= alter_db_optr keep",
 /* 115 */ "alter_db_optr ::= alter_db_optr blocks",
 /* 116 */ "alter_db_optr ::= alter_db_optr comp",
 /* 117 */ "alter_db_optr ::= alter_db_optr wal",
 /* 118 */ "alter_db_optr ::= alter_db_optr fsync",
 /* 119 */ "alter_db_optr ::= alter_db_optr update",
 /* 120 */ "alter_db_optr ::= alter_db_optr cachelast",
D
fix bug  
dapan1121 已提交
1154 1155
 /* 121 */ "alter_topic_optr ::= alter_db_optr",
 /* 122 */ "alter_topic_optr ::= alter_topic_optr partitions",
D
dapan1121 已提交
1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188
 /* 123 */ "typename ::= ids",
 /* 124 */ "typename ::= ids LP signed RP",
 /* 125 */ "typename ::= ids UNSIGNED",
 /* 126 */ "signed ::= INTEGER",
 /* 127 */ "signed ::= PLUS INTEGER",
 /* 128 */ "signed ::= MINUS INTEGER",
 /* 129 */ "cmd ::= CREATE TABLE create_table_args",
 /* 130 */ "cmd ::= CREATE TABLE create_stable_args",
 /* 131 */ "cmd ::= CREATE STABLE create_stable_args",
 /* 132 */ "cmd ::= CREATE TABLE create_table_list",
 /* 133 */ "create_table_list ::= create_from_stable",
 /* 134 */ "create_table_list ::= create_table_list create_from_stable",
 /* 135 */ "create_table_args ::= ifnotexists ids cpxName LP columnlist RP",
 /* 136 */ "create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP",
 /* 137 */ "create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP",
 /* 138 */ "create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP",
 /* 139 */ "tagNamelist ::= tagNamelist COMMA ids",
 /* 140 */ "tagNamelist ::= ids",
 /* 141 */ "create_table_args ::= ifnotexists ids cpxName AS select",
 /* 142 */ "columnlist ::= columnlist COMMA column",
 /* 143 */ "columnlist ::= column",
 /* 144 */ "column ::= ids typename",
 /* 145 */ "tagitemlist ::= tagitemlist COMMA tagitem",
 /* 146 */ "tagitemlist ::= tagitem",
 /* 147 */ "tagitem ::= INTEGER",
 /* 148 */ "tagitem ::= FLOAT",
 /* 149 */ "tagitem ::= STRING",
 /* 150 */ "tagitem ::= BOOL",
 /* 151 */ "tagitem ::= NULL",
 /* 152 */ "tagitem ::= MINUS INTEGER",
 /* 153 */ "tagitem ::= MINUS FLOAT",
 /* 154 */ "tagitem ::= PLUS INTEGER",
 /* 155 */ "tagitem ::= PLUS FLOAT",
1189
 /* 156 */ "select ::= SELECT selcollist from where_opt interval_opt session_option fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt",
H
Haojun Liao 已提交
1190 1191
 /* 157 */ "select ::= LP select RP",
 /* 158 */ "union ::= select",
D
dapan1121 已提交
1192
 /* 159 */ "union ::= union UNION ALL select",
H
Haojun Liao 已提交
1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204
 /* 160 */ "cmd ::= union",
 /* 161 */ "select ::= SELECT selcollist",
 /* 162 */ "sclp ::= selcollist COMMA",
 /* 163 */ "sclp ::=",
 /* 164 */ "selcollist ::= sclp distinct expr as",
 /* 165 */ "selcollist ::= sclp STAR",
 /* 166 */ "as ::= AS ids",
 /* 167 */ "as ::= ids",
 /* 168 */ "as ::=",
 /* 169 */ "distinct ::= DISTINCT",
 /* 170 */ "distinct ::=",
 /* 171 */ "from ::= FROM tablelist",
D
dapan1121 已提交
1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300
 /* 172 */ "tablelist ::= ids cpxName",
 /* 173 */ "tablelist ::= ids cpxName ids",
 /* 174 */ "tablelist ::= tablelist COMMA ids cpxName",
 /* 175 */ "tablelist ::= tablelist COMMA ids cpxName ids",
 /* 176 */ "tmvar ::= VARIABLE",
 /* 177 */ "interval_opt ::= INTERVAL LP tmvar RP",
 /* 178 */ "interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP",
 /* 179 */ "interval_opt ::=",
 /* 180 */ "session_option ::=",
 /* 181 */ "session_option ::= SESSION LP ids cpxName COMMA tmvar RP",
 /* 182 */ "fill_opt ::=",
 /* 183 */ "fill_opt ::= FILL LP ID COMMA tagitemlist RP",
 /* 184 */ "fill_opt ::= FILL LP ID RP",
 /* 185 */ "sliding_opt ::= SLIDING LP tmvar RP",
 /* 186 */ "sliding_opt ::=",
 /* 187 */ "orderby_opt ::=",
 /* 188 */ "orderby_opt ::= ORDER BY sortlist",
 /* 189 */ "sortlist ::= sortlist COMMA item sortorder",
 /* 190 */ "sortlist ::= item sortorder",
 /* 191 */ "item ::= ids cpxName",
 /* 192 */ "sortorder ::= ASC",
 /* 193 */ "sortorder ::= DESC",
 /* 194 */ "sortorder ::=",
 /* 195 */ "groupby_opt ::=",
 /* 196 */ "groupby_opt ::= GROUP BY grouplist",
 /* 197 */ "grouplist ::= grouplist COMMA item",
 /* 198 */ "grouplist ::= item",
 /* 199 */ "having_opt ::=",
 /* 200 */ "having_opt ::= HAVING expr",
 /* 201 */ "limit_opt ::=",
 /* 202 */ "limit_opt ::= LIMIT signed",
 /* 203 */ "limit_opt ::= LIMIT signed OFFSET signed",
 /* 204 */ "limit_opt ::= LIMIT signed COMMA signed",
 /* 205 */ "slimit_opt ::=",
 /* 206 */ "slimit_opt ::= SLIMIT signed",
 /* 207 */ "slimit_opt ::= SLIMIT signed SOFFSET signed",
 /* 208 */ "slimit_opt ::= SLIMIT signed COMMA signed",
 /* 209 */ "where_opt ::=",
 /* 210 */ "where_opt ::= WHERE expr",
 /* 211 */ "expr ::= LP expr RP",
 /* 212 */ "expr ::= ID",
 /* 213 */ "expr ::= ID DOT ID",
 /* 214 */ "expr ::= ID DOT STAR",
 /* 215 */ "expr ::= INTEGER",
 /* 216 */ "expr ::= MINUS INTEGER",
 /* 217 */ "expr ::= PLUS INTEGER",
 /* 218 */ "expr ::= FLOAT",
 /* 219 */ "expr ::= MINUS FLOAT",
 /* 220 */ "expr ::= PLUS FLOAT",
 /* 221 */ "expr ::= STRING",
 /* 222 */ "expr ::= NOW",
 /* 223 */ "expr ::= VARIABLE",
 /* 224 */ "expr ::= PLUS VARIABLE",
 /* 225 */ "expr ::= MINUS VARIABLE",
 /* 226 */ "expr ::= BOOL",
 /* 227 */ "expr ::= NULL",
 /* 228 */ "expr ::= ID LP exprlist RP",
 /* 229 */ "expr ::= ID LP STAR RP",
 /* 230 */ "expr ::= expr IS NULL",
 /* 231 */ "expr ::= expr IS NOT NULL",
 /* 232 */ "expr ::= expr LT expr",
 /* 233 */ "expr ::= expr GT expr",
 /* 234 */ "expr ::= expr LE expr",
 /* 235 */ "expr ::= expr GE expr",
 /* 236 */ "expr ::= expr NE expr",
 /* 237 */ "expr ::= expr EQ expr",
 /* 238 */ "expr ::= expr BETWEEN expr AND expr",
 /* 239 */ "expr ::= expr AND expr",
 /* 240 */ "expr ::= expr OR expr",
 /* 241 */ "expr ::= expr PLUS expr",
 /* 242 */ "expr ::= expr MINUS expr",
 /* 243 */ "expr ::= expr STAR expr",
 /* 244 */ "expr ::= expr SLASH expr",
 /* 245 */ "expr ::= expr REM expr",
 /* 246 */ "expr ::= expr LIKE expr",
 /* 247 */ "expr ::= expr IN LP exprlist RP",
 /* 248 */ "exprlist ::= exprlist COMMA expritem",
 /* 249 */ "exprlist ::= expritem",
 /* 250 */ "expritem ::= expr",
 /* 251 */ "expritem ::=",
 /* 252 */ "cmd ::= RESET QUERY CACHE",
 /* 253 */ "cmd ::= SYNCDB ids REPLICA",
 /* 254 */ "cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist",
 /* 255 */ "cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids",
 /* 256 */ "cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist",
 /* 257 */ "cmd ::= ALTER TABLE ids cpxName DROP TAG ids",
 /* 258 */ "cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids",
 /* 259 */ "cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem",
 /* 260 */ "cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist",
 /* 261 */ "cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids",
 /* 262 */ "cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist",
 /* 263 */ "cmd ::= ALTER STABLE ids cpxName DROP TAG ids",
 /* 264 */ "cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids",
 /* 265 */ "cmd ::= KILL CONNECTION INTEGER",
 /* 266 */ "cmd ::= KILL STREAM INTEGER COLON INTEGER",
 /* 267 */ "cmd ::= KILL QUERY INTEGER COLON INTEGER",
H
hzcheng 已提交
1301 1302 1303 1304 1305 1306
};
#endif /* NDEBUG */


#if YYSTACKDEPTH<=0
/*
1307 1308
** Try to increase the size of the parser stack.  Return the number
** of errors.  Return 0 on success.
H
hzcheng 已提交
1309
*/
1310
static int yyGrowStack(yyParser *p){
H
hzcheng 已提交
1311
  int newSize;
1312
  int idx;
H
hzcheng 已提交
1313 1314 1315
  yyStackEntry *pNew;

  newSize = p->yystksz*2 + 100;
1316 1317 1318 1319 1320 1321 1322
  idx = p->yytos ? (int)(p->yytos - p->yystack) : 0;
  if( p->yystack==&p->yystk0 ){
    pNew = malloc(newSize*sizeof(pNew[0]));
    if( pNew ) pNew[0] = p->yystk0;
  }else{
    pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
  }
H
hzcheng 已提交
1323 1324
  if( pNew ){
    p->yystack = pNew;
1325
    p->yytos = &p->yystack[idx];
H
hzcheng 已提交
1326 1327
#ifndef NDEBUG
    if( yyTraceFILE ){
1328 1329
      fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n",
              yyTracePrompt, p->yystksz, newSize);
H
hzcheng 已提交
1330 1331
    }
#endif
1332
    p->yystksz = newSize;
H
hzcheng 已提交
1333
  }
1334
  return pNew==0; 
H
hzcheng 已提交
1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346
}
#endif

/* Datatype of the argument to the memory allocated passed as the
** second argument to ParseAlloc() below.  This can be changed by
** putting an appropriate #define in the %include section of the input
** grammar.
*/
#ifndef YYMALLOCARGTYPE
# define YYMALLOCARGTYPE size_t
#endif

1347 1348
/* Initialize a new parser that has already been allocated.
*/
1349 1350 1351
void ParseInit(void *yypRawParser ParseCTX_PDECL){
  yyParser *yypParser = (yyParser*)yypRawParser;
  ParseCTX_STORE
1352
#ifdef YYTRACKMAXSTACKDEPTH
1353
  yypParser->yyhwm = 0;
1354 1355
#endif
#if YYSTACKDEPTH<=0
1356 1357 1358 1359 1360 1361
  yypParser->yytos = NULL;
  yypParser->yystack = NULL;
  yypParser->yystksz = 0;
  if( yyGrowStack(yypParser) ){
    yypParser->yystack = &yypParser->yystk0;
    yypParser->yystksz = 1;
1362 1363 1364
  }
#endif
#ifndef YYNOERRORRECOVERY
1365
  yypParser->yyerrcnt = -1;
1366
#endif
1367 1368 1369
  yypParser->yytos = yypParser->yystack;
  yypParser->yystack[0].stateno = 0;
  yypParser->yystack[0].major = 0;
1370
#if YYSTACKDEPTH>0
1371
  yypParser->yystackEnd = &yypParser->yystack[YYSTACKDEPTH-1];
1372 1373 1374 1375
#endif
}

#ifndef Parse_ENGINEALWAYSONSTACK
H
hzcheng 已提交
1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387
/* 
** This function allocates a new parser.
** The only argument is a pointer to a function which works like
** malloc.
**
** Inputs:
** A pointer to the function used to allocate memory.
**
** Outputs:
** A pointer to a parser.  This pointer is used in subsequent calls
** to Parse and ParseFree.
*/
1388 1389 1390 1391 1392 1393 1394 1395
void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE) ParseCTX_PDECL){
  yyParser *yypParser;
  yypParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) );
  if( yypParser ){
    ParseCTX_STORE
    ParseInit(yypParser ParseCTX_PARAM);
  }
  return (void*)yypParser;
H
hzcheng 已提交
1396
}
1397 1398
#endif /* Parse_ENGINEALWAYSONSTACK */

H
hzcheng 已提交
1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411

/* The following function deletes the "minor type" or semantic value
** associated with a symbol.  The symbol can be either a terminal
** or nonterminal. "yymajor" is the symbol code, and "yypminor" is
** a pointer to the value to be deleted.  The code used to do the 
** deletions is derived from the %destructor and/or %token_destructor
** directives of the input grammar.
*/
static void yy_destructor(
  yyParser *yypParser,    /* The parser */
  YYCODETYPE yymajor,     /* Type code for object to destroy */
  YYMINORTYPE *yypminor   /* The object to be destroyed */
){
1412 1413
  ParseARG_FETCH
  ParseCTX_FETCH
H
hzcheng 已提交
1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425
  switch( yymajor ){
    /* Here is inserted the actions which take place when a
    ** terminal or non-terminal is destroyed.  This can happen
    ** when the symbol is popped from the stack during a
    ** reduce or during error processing or when a parser is 
    ** being destroyed before it is finished parsing.
    **
    ** Note: during a reduce, the only symbols destroyed are those
    ** which appear on the RHS of the rule, but which are *not* used
    ** inside the C code.
    */
/********* Begin destructor definitions ***************************************/
1426 1427 1428 1429 1430 1431 1432 1433 1434
    case 208: /* keep */
    case 209: /* tagitemlist */
    case 231: /* columnlist */
    case 232: /* tagNamelist */
    case 241: /* fill_opt */
    case 243: /* groupby_opt */
    case 244: /* orderby_opt */
    case 255: /* sortlist */
    case 259: /* grouplist */
H
hzcheng 已提交
1435
{
1436
taosArrayDestroy((yypminor->yy429));
H
hzcheng 已提交
1437 1438
}
      break;
1439
    case 229: /* create_table_list */
H
hzcheng 已提交
1440
{
1441
destroyCreateTableSql((yypminor->yy194));
H
hzcheng 已提交
1442 1443
}
      break;
1444
    case 233: /* select */
H
hzcheng 已提交
1445
{
1446
destroyQuerySqlNode((yypminor->yy254));
H
hzcheng 已提交
1447 1448
}
      break;
1449 1450 1451
    case 236: /* selcollist */
    case 249: /* sclp */
    case 260: /* exprlist */
H
hzcheng 已提交
1452
{
1453
tSqlExprListDestroy((yypminor->yy429));
H
hzcheng 已提交
1454 1455
}
      break;
1456 1457 1458 1459
    case 238: /* where_opt */
    case 245: /* having_opt */
    case 251: /* expr */
    case 261: /* expritem */
1460
{
1461
tSqlExprDestroy((yypminor->yy170));
1462 1463
}
      break;
1464
    case 248: /* union */
H
hzcheng 已提交
1465
{
1466
destroyAllSelectClause((yypminor->yy141));
1467 1468
}
      break;
1469
    case 256: /* sortitem */
1470
{
1471
tVariantDestroy(&(yypminor->yy218));
H
hzcheng 已提交
1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486
}
      break;
/********* End destructor definitions *****************************************/
    default:  break;   /* If no destructor action specified: do nothing */
  }
}

/*
** Pop the parser's stack once.
**
** If there is a destructor routine associated with the token which
** is popped from the stack, then call it.
*/
static void yy_pop_parser_stack(yyParser *pParser){
  yyStackEntry *yytos;
1487 1488 1489
  assert( pParser->yytos!=0 );
  assert( pParser->yytos > pParser->yystack );
  yytos = pParser->yytos--;
H
hzcheng 已提交
1490 1491 1492 1493 1494 1495 1496 1497 1498 1499
#ifndef NDEBUG
  if( yyTraceFILE ){
    fprintf(yyTraceFILE,"%sPopping %s\n",
      yyTracePrompt,
      yyTokenName[yytos->major]);
  }
#endif
  yy_destructor(pParser, yytos->major, &yytos->minor);
}

1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511
/*
** Clear all secondary memory allocations from the parser
*/
void ParseFinalize(void *p){
  yyParser *pParser = (yyParser*)p;
  while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser);
#if YYSTACKDEPTH<=0
  if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack);
#endif
}

#ifndef Parse_ENGINEALWAYSONSTACK
H
hzcheng 已提交
1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524
/* 
** Deallocate and destroy a parser.  Destructors are called for
** all stack elements before shutting the parser down.
**
** If the YYPARSEFREENEVERNULL macro exists (for example because it
** is defined in a %include section of the input grammar) then it is
** assumed that the input pointer is never NULL.
*/
void ParseFree(
  void *p,                    /* The parser to be deleted */
  void (*freeProc)(void*)     /* Function used to reclaim memory */
){
#ifndef YYPARSEFREENEVERNULL
1525
  if( p==0 ) return;
L
lihui 已提交
1526
#endif
1527 1528
  ParseFinalize(p);
  (*freeProc)(p);
H
hzcheng 已提交
1529
}
1530
#endif /* Parse_ENGINEALWAYSONSTACK */
H
hzcheng 已提交
1531 1532 1533 1534 1535 1536 1537

/*
** Return the peak depth of the stack for a parser.
*/
#ifdef YYTRACKMAXSTACKDEPTH
int ParseStackPeak(void *p){
  yyParser *pParser = (yyParser*)p;
1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575
  return pParser->yyhwm;
}
#endif

/* This array of booleans keeps track of the parser statement
** coverage.  The element yycoverage[X][Y] is set when the parser
** is in state X and has a lookahead token Y.  In a well-tested
** systems, every element of this matrix should end up being set.
*/
#if defined(YYCOVERAGE)
static unsigned char yycoverage[YYNSTATE][YYNTOKEN];
#endif

/*
** Write into out a description of every state/lookahead combination that
**
**   (1)  has not been used by the parser, and
**   (2)  is not a syntax error.
**
** Return the number of missed state/lookahead combinations.
*/
#if defined(YYCOVERAGE)
int ParseCoverage(FILE *out){
  int stateno, iLookAhead, i;
  int nMissed = 0;
  for(stateno=0; stateno<YYNSTATE; stateno++){
    i = yy_shift_ofst[stateno];
    for(iLookAhead=0; iLookAhead<YYNTOKEN; iLookAhead++){
      if( yy_lookahead[i+iLookAhead]!=iLookAhead ) continue;
      if( yycoverage[stateno][iLookAhead]==0 ) nMissed++;
      if( out ){
        fprintf(out,"State %d lookahead %s %s\n", stateno,
                yyTokenName[iLookAhead],
                yycoverage[stateno][iLookAhead] ? "ok" : "missed");
      }
    }
  }
  return nMissed;
H
hzcheng 已提交
1576 1577 1578 1579 1580 1581 1582
}
#endif

/*
** Find the appropriate action for a parser given the terminal
** look-ahead token iLookAhead.
*/
1583 1584 1585
static YYACTIONTYPE yy_find_shift_action(
  YYCODETYPE iLookAhead,    /* The look-ahead token */
  YYACTIONTYPE stateno      /* Current state number */
H
hzcheng 已提交
1586 1587
){
  int i;
1588

1589
  if( stateno>YY_MAX_SHIFT ) return stateno;
H
hzcheng 已提交
1590
  assert( stateno <= YY_SHIFT_COUNT );
1591 1592 1593
#if defined(YYCOVERAGE)
  yycoverage[stateno][iLookAhead] = 1;
#endif
H
hzcheng 已提交
1594 1595
  do{
    i = yy_shift_ofst[stateno];
1596 1597 1598
    assert( i>=0 );
    assert( i<=YY_ACTTAB_COUNT );
    assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD );
H
hzcheng 已提交
1599
    assert( iLookAhead!=YYNOCODE );
1600
    assert( iLookAhead < YYNTOKEN );
H
hzcheng 已提交
1601
    i += iLookAhead;
1602
    assert( i<(int)YY_NLOOKAHEAD );
1603
    if( yy_lookahead[i]!=iLookAhead ){
H
hzcheng 已提交
1604
#ifdef YYFALLBACK
1605
      YYCODETYPE iFallback;            /* Fallback token */
1606 1607 1608
      assert( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) );
      iFallback = yyFallback[iLookAhead];
      if( iFallback!=0 ){
H
hzcheng 已提交
1609
#ifndef NDEBUG
1610 1611 1612
        if( yyTraceFILE ){
          fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
             yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
L
lihui 已提交
1613
        }
1614 1615 1616 1617 1618
#endif
        assert( yyFallback[iFallback]==0 ); /* Fallback loop must terminate */
        iLookAhead = iFallback;
        continue;
      }
H
hzcheng 已提交
1619 1620
#endif
#ifdef YYWILDCARD
1621 1622
      {
        int j = i - iLookAhead + YYWILDCARD;
1623 1624
        assert( j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) );
        if( yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){
H
hzcheng 已提交
1625
#ifndef NDEBUG
1626 1627 1628 1629
          if( yyTraceFILE ){
            fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
               yyTracePrompt, yyTokenName[iLookAhead],
               yyTokenName[YYWILDCARD]);
L
lihui 已提交
1630
          }
1631 1632
#endif /* NDEBUG */
          return yy_action[j];
H
hzcheng 已提交
1633
        }
L
lihui 已提交
1634
      }
1635
#endif /* YYWILDCARD */
H
hzcheng 已提交
1636 1637
      return yy_default[stateno];
    }else{
1638
      assert( i>=0 && i<sizeof(yy_action)/sizeof(yy_action[0]) );
H
hzcheng 已提交
1639 1640 1641 1642 1643 1644 1645 1646 1647
      return yy_action[i];
    }
  }while(1);
}

/*
** Find the appropriate action for a parser given the non-terminal
** look-ahead token iLookAhead.
*/
1648 1649
static YYACTIONTYPE yy_find_reduce_action(
  YYACTIONTYPE stateno,     /* Current state number */
H
hzcheng 已提交
1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676
  YYCODETYPE iLookAhead     /* The look-ahead token */
){
  int i;
#ifdef YYERRORSYMBOL
  if( stateno>YY_REDUCE_COUNT ){
    return yy_default[stateno];
  }
#else
  assert( stateno<=YY_REDUCE_COUNT );
#endif
  i = yy_reduce_ofst[stateno];
  assert( iLookAhead!=YYNOCODE );
  i += iLookAhead;
#ifdef YYERRORSYMBOL
  if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
    return yy_default[stateno];
  }
#else
  assert( i>=0 && i<YY_ACTTAB_COUNT );
  assert( yy_lookahead[i]==iLookAhead );
#endif
  return yy_action[i];
}

/*
** The following routine is called if the stack overflows.
*/
1677
static void yyStackOverflow(yyParser *yypParser){
1678 1679
   ParseARG_FETCH
   ParseCTX_FETCH
H
hzcheng 已提交
1680 1681 1682 1683 1684
#ifndef NDEBUG
   if( yyTraceFILE ){
     fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
   }
#endif
1685
   while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
H
hzcheng 已提交
1686 1687 1688 1689
   /* Here code is inserted which will execute if the parser
   ** stack every overflows */
/******** Begin %stack_overflow code ******************************************/
/******** End %stack_overflow code ********************************************/
1690 1691
   ParseARG_STORE /* Suppress warning about unused %extra_argument var */
   ParseCTX_STORE
H
hzcheng 已提交
1692 1693 1694 1695 1696 1697
}

/*
** Print tracing information for a SHIFT action
*/
#ifndef NDEBUG
1698
static void yyTraceShift(yyParser *yypParser, int yyNewState, const char *zTag){
H
hzcheng 已提交
1699 1700
  if( yyTraceFILE ){
    if( yyNewState<YYNSTATE ){
1701 1702
      fprintf(yyTraceFILE,"%s%s '%s', go to state %d\n",
         yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major],
H
hzcheng 已提交
1703 1704
         yyNewState);
    }else{
1705 1706 1707
      fprintf(yyTraceFILE,"%s%s '%s', pending reduce %d\n",
         yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major],
         yyNewState - YY_MIN_REDUCE);
H
hzcheng 已提交
1708 1709 1710 1711
    }
  }
}
#else
1712
# define yyTraceShift(X,Y,Z)
H
hzcheng 已提交
1713 1714 1715 1716 1717 1718 1719
#endif

/*
** Perform a shift action.
*/
static void yy_shift(
  yyParser *yypParser,          /* The parser to be shifted */
1720 1721
  YYACTIONTYPE yyNewState,      /* The new state to shift in */
  YYCODETYPE yyMajor,           /* The major token to shift in */
1722
  ParseTOKENTYPE yyMinor        /* The minor token to shift in */
H
hzcheng 已提交
1723 1724
){
  yyStackEntry *yytos;
1725
  yypParser->yytos++;
H
hzcheng 已提交
1726
#ifdef YYTRACKMAXSTACKDEPTH
1727 1728 1729
  if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
    yypParser->yyhwm++;
    assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) );
H
hzcheng 已提交
1730 1731 1732
  }
#endif
#if YYSTACKDEPTH>0 
1733 1734 1735
  if( yypParser->yytos>yypParser->yystackEnd ){
    yypParser->yytos--;
    yyStackOverflow(yypParser);
H
hzcheng 已提交
1736 1737 1738
    return;
  }
#else
1739 1740 1741 1742
  if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){
    if( yyGrowStack(yypParser) ){
      yypParser->yytos--;
      yyStackOverflow(yypParser);
H
hzcheng 已提交
1743 1744 1745 1746
      return;
    }
  }
#endif
1747 1748 1749 1750
  if( yyNewState > YY_MAX_SHIFT ){
    yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
  }
  yytos = yypParser->yytos;
1751 1752
  yytos->stateno = yyNewState;
  yytos->major = yyMajor;
1753 1754
  yytos->minor.yy0 = yyMinor;
  yyTraceShift(yypParser, yyNewState, "Shift");
H
hzcheng 已提交
1755 1756
}

1757 1758 1759
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
** of that rule */
static const YYCODETYPE yyRuleInfoLhs[] = {
1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931
   187,  /* (0) program ::= cmd */
   188,  /* (1) cmd ::= SHOW DATABASES */
   188,  /* (2) cmd ::= SHOW TOPICS */
   188,  /* (3) cmd ::= SHOW MNODES */
   188,  /* (4) cmd ::= SHOW DNODES */
   188,  /* (5) cmd ::= SHOW ACCOUNTS */
   188,  /* (6) cmd ::= SHOW USERS */
   188,  /* (7) cmd ::= SHOW MODULES */
   188,  /* (8) cmd ::= SHOW QUERIES */
   188,  /* (9) cmd ::= SHOW CONNECTIONS */
   188,  /* (10) cmd ::= SHOW STREAMS */
   188,  /* (11) cmd ::= SHOW VARIABLES */
   188,  /* (12) cmd ::= SHOW SCORES */
   188,  /* (13) cmd ::= SHOW GRANTS */
   188,  /* (14) cmd ::= SHOW VNODES */
   188,  /* (15) cmd ::= SHOW VNODES IPTOKEN */
   189,  /* (16) dbPrefix ::= */
   189,  /* (17) dbPrefix ::= ids DOT */
   191,  /* (18) cpxName ::= */
   191,  /* (19) cpxName ::= DOT ids */
   188,  /* (20) cmd ::= SHOW CREATE TABLE ids cpxName */
   188,  /* (21) cmd ::= SHOW CREATE DATABASE ids */
   188,  /* (22) cmd ::= SHOW dbPrefix TABLES */
   188,  /* (23) cmd ::= SHOW dbPrefix TABLES LIKE ids */
   188,  /* (24) cmd ::= SHOW dbPrefix STABLES */
   188,  /* (25) cmd ::= SHOW dbPrefix STABLES LIKE ids */
   188,  /* (26) cmd ::= SHOW dbPrefix VGROUPS */
   188,  /* (27) cmd ::= SHOW dbPrefix VGROUPS ids */
   188,  /* (28) cmd ::= DROP TABLE ifexists ids cpxName */
   188,  /* (29) cmd ::= DROP STABLE ifexists ids cpxName */
   188,  /* (30) cmd ::= DROP DATABASE ifexists ids */
   188,  /* (31) cmd ::= DROP TOPIC ifexists ids */
   188,  /* (32) cmd ::= DROP DNODE ids */
   188,  /* (33) cmd ::= DROP USER ids */
   188,  /* (34) cmd ::= DROP ACCOUNT ids */
   188,  /* (35) cmd ::= USE ids */
   188,  /* (36) cmd ::= DESCRIBE ids cpxName */
   188,  /* (37) cmd ::= ALTER USER ids PASS ids */
   188,  /* (38) cmd ::= ALTER USER ids PRIVILEGE ids */
   188,  /* (39) cmd ::= ALTER DNODE ids ids */
   188,  /* (40) cmd ::= ALTER DNODE ids ids ids */
   188,  /* (41) cmd ::= ALTER LOCAL ids */
   188,  /* (42) cmd ::= ALTER LOCAL ids ids */
   188,  /* (43) cmd ::= ALTER DATABASE ids alter_db_optr */
   188,  /* (44) cmd ::= ALTER TOPIC ids alter_topic_optr */
   188,  /* (45) cmd ::= ALTER ACCOUNT ids acct_optr */
   188,  /* (46) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
   190,  /* (47) ids ::= ID */
   190,  /* (48) ids ::= STRING */
   192,  /* (49) ifexists ::= IF EXISTS */
   192,  /* (50) ifexists ::= */
   196,  /* (51) ifnotexists ::= IF NOT EXISTS */
   196,  /* (52) ifnotexists ::= */
   188,  /* (53) cmd ::= CREATE DNODE ids */
   188,  /* (54) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
   188,  /* (55) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
   188,  /* (56) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
   188,  /* (57) cmd ::= CREATE USER ids PASS ids */
   199,  /* (58) pps ::= */
   199,  /* (59) pps ::= PPS INTEGER */
   200,  /* (60) tseries ::= */
   200,  /* (61) tseries ::= TSERIES INTEGER */
   201,  /* (62) dbs ::= */
   201,  /* (63) dbs ::= DBS INTEGER */
   202,  /* (64) streams ::= */
   202,  /* (65) streams ::= STREAMS INTEGER */
   203,  /* (66) storage ::= */
   203,  /* (67) storage ::= STORAGE INTEGER */
   204,  /* (68) qtime ::= */
   204,  /* (69) qtime ::= QTIME INTEGER */
   205,  /* (70) users ::= */
   205,  /* (71) users ::= USERS INTEGER */
   206,  /* (72) conns ::= */
   206,  /* (73) conns ::= CONNS INTEGER */
   207,  /* (74) state ::= */
   207,  /* (75) state ::= STATE ids */
   195,  /* (76) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
   208,  /* (77) keep ::= KEEP tagitemlist */
   210,  /* (78) cache ::= CACHE INTEGER */
   211,  /* (79) replica ::= REPLICA INTEGER */
   212,  /* (80) quorum ::= QUORUM INTEGER */
   213,  /* (81) days ::= DAYS INTEGER */
   214,  /* (82) minrows ::= MINROWS INTEGER */
   215,  /* (83) maxrows ::= MAXROWS INTEGER */
   216,  /* (84) blocks ::= BLOCKS INTEGER */
   217,  /* (85) ctime ::= CTIME INTEGER */
   218,  /* (86) wal ::= WAL INTEGER */
   219,  /* (87) fsync ::= FSYNC INTEGER */
   220,  /* (88) comp ::= COMP INTEGER */
   221,  /* (89) prec ::= PRECISION STRING */
   222,  /* (90) update ::= UPDATE INTEGER */
   223,  /* (91) cachelast ::= CACHELAST INTEGER */
   224,  /* (92) partitions ::= PARTITIONS INTEGER */
   197,  /* (93) db_optr ::= */
   197,  /* (94) db_optr ::= db_optr cache */
   197,  /* (95) db_optr ::= db_optr replica */
   197,  /* (96) db_optr ::= db_optr quorum */
   197,  /* (97) db_optr ::= db_optr days */
   197,  /* (98) db_optr ::= db_optr minrows */
   197,  /* (99) db_optr ::= db_optr maxrows */
   197,  /* (100) db_optr ::= db_optr blocks */
   197,  /* (101) db_optr ::= db_optr ctime */
   197,  /* (102) db_optr ::= db_optr wal */
   197,  /* (103) db_optr ::= db_optr fsync */
   197,  /* (104) db_optr ::= db_optr comp */
   197,  /* (105) db_optr ::= db_optr prec */
   197,  /* (106) db_optr ::= db_optr keep */
   197,  /* (107) db_optr ::= db_optr update */
   197,  /* (108) db_optr ::= db_optr cachelast */
   198,  /* (109) topic_optr ::= db_optr */
   198,  /* (110) topic_optr ::= topic_optr partitions */
   193,  /* (111) alter_db_optr ::= */
   193,  /* (112) alter_db_optr ::= alter_db_optr replica */
   193,  /* (113) alter_db_optr ::= alter_db_optr quorum */
   193,  /* (114) alter_db_optr ::= alter_db_optr keep */
   193,  /* (115) alter_db_optr ::= alter_db_optr blocks */
   193,  /* (116) alter_db_optr ::= alter_db_optr comp */
   193,  /* (117) alter_db_optr ::= alter_db_optr wal */
   193,  /* (118) alter_db_optr ::= alter_db_optr fsync */
   193,  /* (119) alter_db_optr ::= alter_db_optr update */
   193,  /* (120) alter_db_optr ::= alter_db_optr cachelast */
   194,  /* (121) alter_topic_optr ::= alter_db_optr */
   194,  /* (122) alter_topic_optr ::= alter_topic_optr partitions */
   225,  /* (123) typename ::= ids */
   225,  /* (124) typename ::= ids LP signed RP */
   225,  /* (125) typename ::= ids UNSIGNED */
   226,  /* (126) signed ::= INTEGER */
   226,  /* (127) signed ::= PLUS INTEGER */
   226,  /* (128) signed ::= MINUS INTEGER */
   188,  /* (129) cmd ::= CREATE TABLE create_table_args */
   188,  /* (130) cmd ::= CREATE TABLE create_stable_args */
   188,  /* (131) cmd ::= CREATE STABLE create_stable_args */
   188,  /* (132) cmd ::= CREATE TABLE create_table_list */
   229,  /* (133) create_table_list ::= create_from_stable */
   229,  /* (134) create_table_list ::= create_table_list create_from_stable */
   227,  /* (135) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
   228,  /* (136) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
   230,  /* (137) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
   230,  /* (138) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
   232,  /* (139) tagNamelist ::= tagNamelist COMMA ids */
   232,  /* (140) tagNamelist ::= ids */
   227,  /* (141) create_table_args ::= ifnotexists ids cpxName AS select */
   231,  /* (142) columnlist ::= columnlist COMMA column */
   231,  /* (143) columnlist ::= column */
   234,  /* (144) column ::= ids typename */
   209,  /* (145) tagitemlist ::= tagitemlist COMMA tagitem */
   209,  /* (146) tagitemlist ::= tagitem */
   235,  /* (147) tagitem ::= INTEGER */
   235,  /* (148) tagitem ::= FLOAT */
   235,  /* (149) tagitem ::= STRING */
   235,  /* (150) tagitem ::= BOOL */
   235,  /* (151) tagitem ::= NULL */
   235,  /* (152) tagitem ::= MINUS INTEGER */
   235,  /* (153) tagitem ::= MINUS FLOAT */
   235,  /* (154) tagitem ::= PLUS INTEGER */
   235,  /* (155) tagitem ::= PLUS FLOAT */
   233,  /* (156) select ::= SELECT selcollist from where_opt interval_opt session_option fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */
   233,  /* (157) select ::= LP select RP */
   248,  /* (158) union ::= select */
   248,  /* (159) union ::= union UNION ALL select */
   188,  /* (160) cmd ::= union */
   233,  /* (161) select ::= SELECT selcollist */
   249,  /* (162) sclp ::= selcollist COMMA */
   249,  /* (163) sclp ::= */
   236,  /* (164) selcollist ::= sclp distinct expr as */
   236,  /* (165) selcollist ::= sclp STAR */
   252,  /* (166) as ::= AS ids */
   252,  /* (167) as ::= ids */
   252,  /* (168) as ::= */
   250,  /* (169) distinct ::= DISTINCT */
   250,  /* (170) distinct ::= */
   237,  /* (171) from ::= FROM tablelist */
D
dapan1121 已提交
1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027
   253,  /* (172) tablelist ::= ids cpxName */
   253,  /* (173) tablelist ::= ids cpxName ids */
   253,  /* (174) tablelist ::= tablelist COMMA ids cpxName */
   253,  /* (175) tablelist ::= tablelist COMMA ids cpxName ids */
   254,  /* (176) tmvar ::= VARIABLE */
   239,  /* (177) interval_opt ::= INTERVAL LP tmvar RP */
   239,  /* (178) interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */
   239,  /* (179) interval_opt ::= */
   240,  /* (180) session_option ::= */
   240,  /* (181) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
   241,  /* (182) fill_opt ::= */
   241,  /* (183) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
   241,  /* (184) fill_opt ::= FILL LP ID RP */
   242,  /* (185) sliding_opt ::= SLIDING LP tmvar RP */
   242,  /* (186) sliding_opt ::= */
   244,  /* (187) orderby_opt ::= */
   244,  /* (188) orderby_opt ::= ORDER BY sortlist */
   255,  /* (189) sortlist ::= sortlist COMMA item sortorder */
   255,  /* (190) sortlist ::= item sortorder */
   257,  /* (191) item ::= ids cpxName */
   258,  /* (192) sortorder ::= ASC */
   258,  /* (193) sortorder ::= DESC */
   258,  /* (194) sortorder ::= */
   243,  /* (195) groupby_opt ::= */
   243,  /* (196) groupby_opt ::= GROUP BY grouplist */
   259,  /* (197) grouplist ::= grouplist COMMA item */
   259,  /* (198) grouplist ::= item */
   245,  /* (199) having_opt ::= */
   245,  /* (200) having_opt ::= HAVING expr */
   247,  /* (201) limit_opt ::= */
   247,  /* (202) limit_opt ::= LIMIT signed */
   247,  /* (203) limit_opt ::= LIMIT signed OFFSET signed */
   247,  /* (204) limit_opt ::= LIMIT signed COMMA signed */
   246,  /* (205) slimit_opt ::= */
   246,  /* (206) slimit_opt ::= SLIMIT signed */
   246,  /* (207) slimit_opt ::= SLIMIT signed SOFFSET signed */
   246,  /* (208) slimit_opt ::= SLIMIT signed COMMA signed */
   238,  /* (209) where_opt ::= */
   238,  /* (210) where_opt ::= WHERE expr */
   251,  /* (211) expr ::= LP expr RP */
   251,  /* (212) expr ::= ID */
   251,  /* (213) expr ::= ID DOT ID */
   251,  /* (214) expr ::= ID DOT STAR */
   251,  /* (215) expr ::= INTEGER */
   251,  /* (216) expr ::= MINUS INTEGER */
   251,  /* (217) expr ::= PLUS INTEGER */
   251,  /* (218) expr ::= FLOAT */
   251,  /* (219) expr ::= MINUS FLOAT */
   251,  /* (220) expr ::= PLUS FLOAT */
   251,  /* (221) expr ::= STRING */
   251,  /* (222) expr ::= NOW */
   251,  /* (223) expr ::= VARIABLE */
   251,  /* (224) expr ::= PLUS VARIABLE */
   251,  /* (225) expr ::= MINUS VARIABLE */
   251,  /* (226) expr ::= BOOL */
   251,  /* (227) expr ::= NULL */
   251,  /* (228) expr ::= ID LP exprlist RP */
   251,  /* (229) expr ::= ID LP STAR RP */
   251,  /* (230) expr ::= expr IS NULL */
   251,  /* (231) expr ::= expr IS NOT NULL */
   251,  /* (232) expr ::= expr LT expr */
   251,  /* (233) expr ::= expr GT expr */
   251,  /* (234) expr ::= expr LE expr */
   251,  /* (235) expr ::= expr GE expr */
   251,  /* (236) expr ::= expr NE expr */
   251,  /* (237) expr ::= expr EQ expr */
   251,  /* (238) expr ::= expr BETWEEN expr AND expr */
   251,  /* (239) expr ::= expr AND expr */
   251,  /* (240) expr ::= expr OR expr */
   251,  /* (241) expr ::= expr PLUS expr */
   251,  /* (242) expr ::= expr MINUS expr */
   251,  /* (243) expr ::= expr STAR expr */
   251,  /* (244) expr ::= expr SLASH expr */
   251,  /* (245) expr ::= expr REM expr */
   251,  /* (246) expr ::= expr LIKE expr */
   251,  /* (247) expr ::= expr IN LP exprlist RP */
   260,  /* (248) exprlist ::= exprlist COMMA expritem */
   260,  /* (249) exprlist ::= expritem */
   261,  /* (250) expritem ::= expr */
   261,  /* (251) expritem ::= */
   188,  /* (252) cmd ::= RESET QUERY CACHE */
   188,  /* (253) cmd ::= SYNCDB ids REPLICA */
   188,  /* (254) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
   188,  /* (255) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
   188,  /* (256) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
   188,  /* (257) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
   188,  /* (258) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
   188,  /* (259) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
   188,  /* (260) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
   188,  /* (261) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
   188,  /* (262) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
   188,  /* (263) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
   188,  /* (264) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
   188,  /* (265) cmd ::= KILL CONNECTION INTEGER */
   188,  /* (266) cmd ::= KILL STREAM INTEGER COLON INTEGER */
   188,  /* (267) cmd ::= KILL QUERY INTEGER COLON INTEGER */
2028 2029 2030 2031 2032 2033 2034
};

/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
** of symbols on the right-hand side of that rule. */
static const signed char yyRuleInfoNRhs[] = {
   -1,  /* (0) program ::= cmd */
   -2,  /* (1) cmd ::= SHOW DATABASES */
2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204
   -2,  /* (2) cmd ::= SHOW TOPICS */
   -2,  /* (3) cmd ::= SHOW MNODES */
   -2,  /* (4) cmd ::= SHOW DNODES */
   -2,  /* (5) cmd ::= SHOW ACCOUNTS */
   -2,  /* (6) cmd ::= SHOW USERS */
   -2,  /* (7) cmd ::= SHOW MODULES */
   -2,  /* (8) cmd ::= SHOW QUERIES */
   -2,  /* (9) cmd ::= SHOW CONNECTIONS */
   -2,  /* (10) cmd ::= SHOW STREAMS */
   -2,  /* (11) cmd ::= SHOW VARIABLES */
   -2,  /* (12) cmd ::= SHOW SCORES */
   -2,  /* (13) cmd ::= SHOW GRANTS */
   -2,  /* (14) cmd ::= SHOW VNODES */
   -3,  /* (15) cmd ::= SHOW VNODES IPTOKEN */
    0,  /* (16) dbPrefix ::= */
   -2,  /* (17) dbPrefix ::= ids DOT */
    0,  /* (18) cpxName ::= */
   -2,  /* (19) cpxName ::= DOT ids */
   -5,  /* (20) cmd ::= SHOW CREATE TABLE ids cpxName */
   -4,  /* (21) cmd ::= SHOW CREATE DATABASE ids */
   -3,  /* (22) cmd ::= SHOW dbPrefix TABLES */
   -5,  /* (23) cmd ::= SHOW dbPrefix TABLES LIKE ids */
   -3,  /* (24) cmd ::= SHOW dbPrefix STABLES */
   -5,  /* (25) cmd ::= SHOW dbPrefix STABLES LIKE ids */
   -3,  /* (26) cmd ::= SHOW dbPrefix VGROUPS */
   -4,  /* (27) cmd ::= SHOW dbPrefix VGROUPS ids */
   -5,  /* (28) cmd ::= DROP TABLE ifexists ids cpxName */
   -5,  /* (29) cmd ::= DROP STABLE ifexists ids cpxName */
   -4,  /* (30) cmd ::= DROP DATABASE ifexists ids */
   -4,  /* (31) cmd ::= DROP TOPIC ifexists ids */
   -3,  /* (32) cmd ::= DROP DNODE ids */
   -3,  /* (33) cmd ::= DROP USER ids */
   -3,  /* (34) cmd ::= DROP ACCOUNT ids */
   -2,  /* (35) cmd ::= USE ids */
   -3,  /* (36) cmd ::= DESCRIBE ids cpxName */
   -5,  /* (37) cmd ::= ALTER USER ids PASS ids */
   -5,  /* (38) cmd ::= ALTER USER ids PRIVILEGE ids */
   -4,  /* (39) cmd ::= ALTER DNODE ids ids */
   -5,  /* (40) cmd ::= ALTER DNODE ids ids ids */
   -3,  /* (41) cmd ::= ALTER LOCAL ids */
   -4,  /* (42) cmd ::= ALTER LOCAL ids ids */
   -4,  /* (43) cmd ::= ALTER DATABASE ids alter_db_optr */
   -4,  /* (44) cmd ::= ALTER TOPIC ids alter_topic_optr */
   -4,  /* (45) cmd ::= ALTER ACCOUNT ids acct_optr */
   -6,  /* (46) cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
   -1,  /* (47) ids ::= ID */
   -1,  /* (48) ids ::= STRING */
   -2,  /* (49) ifexists ::= IF EXISTS */
    0,  /* (50) ifexists ::= */
   -3,  /* (51) ifnotexists ::= IF NOT EXISTS */
    0,  /* (52) ifnotexists ::= */
   -3,  /* (53) cmd ::= CREATE DNODE ids */
   -6,  /* (54) cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
   -5,  /* (55) cmd ::= CREATE DATABASE ifnotexists ids db_optr */
   -5,  /* (56) cmd ::= CREATE TOPIC ifnotexists ids topic_optr */
   -5,  /* (57) cmd ::= CREATE USER ids PASS ids */
    0,  /* (58) pps ::= */
   -2,  /* (59) pps ::= PPS INTEGER */
    0,  /* (60) tseries ::= */
   -2,  /* (61) tseries ::= TSERIES INTEGER */
    0,  /* (62) dbs ::= */
   -2,  /* (63) dbs ::= DBS INTEGER */
    0,  /* (64) streams ::= */
   -2,  /* (65) streams ::= STREAMS INTEGER */
    0,  /* (66) storage ::= */
   -2,  /* (67) storage ::= STORAGE INTEGER */
    0,  /* (68) qtime ::= */
   -2,  /* (69) qtime ::= QTIME INTEGER */
    0,  /* (70) users ::= */
   -2,  /* (71) users ::= USERS INTEGER */
    0,  /* (72) conns ::= */
   -2,  /* (73) conns ::= CONNS INTEGER */
    0,  /* (74) state ::= */
   -2,  /* (75) state ::= STATE ids */
   -9,  /* (76) acct_optr ::= pps tseries storage streams qtime dbs users conns state */
   -2,  /* (77) keep ::= KEEP tagitemlist */
   -2,  /* (78) cache ::= CACHE INTEGER */
   -2,  /* (79) replica ::= REPLICA INTEGER */
   -2,  /* (80) quorum ::= QUORUM INTEGER */
   -2,  /* (81) days ::= DAYS INTEGER */
   -2,  /* (82) minrows ::= MINROWS INTEGER */
   -2,  /* (83) maxrows ::= MAXROWS INTEGER */
   -2,  /* (84) blocks ::= BLOCKS INTEGER */
   -2,  /* (85) ctime ::= CTIME INTEGER */
   -2,  /* (86) wal ::= WAL INTEGER */
   -2,  /* (87) fsync ::= FSYNC INTEGER */
   -2,  /* (88) comp ::= COMP INTEGER */
   -2,  /* (89) prec ::= PRECISION STRING */
   -2,  /* (90) update ::= UPDATE INTEGER */
   -2,  /* (91) cachelast ::= CACHELAST INTEGER */
   -2,  /* (92) partitions ::= PARTITIONS INTEGER */
    0,  /* (93) db_optr ::= */
   -2,  /* (94) db_optr ::= db_optr cache */
   -2,  /* (95) db_optr ::= db_optr replica */
   -2,  /* (96) db_optr ::= db_optr quorum */
   -2,  /* (97) db_optr ::= db_optr days */
   -2,  /* (98) db_optr ::= db_optr minrows */
   -2,  /* (99) db_optr ::= db_optr maxrows */
   -2,  /* (100) db_optr ::= db_optr blocks */
   -2,  /* (101) db_optr ::= db_optr ctime */
   -2,  /* (102) db_optr ::= db_optr wal */
   -2,  /* (103) db_optr ::= db_optr fsync */
   -2,  /* (104) db_optr ::= db_optr comp */
   -2,  /* (105) db_optr ::= db_optr prec */
   -2,  /* (106) db_optr ::= db_optr keep */
   -2,  /* (107) db_optr ::= db_optr update */
   -2,  /* (108) db_optr ::= db_optr cachelast */
   -1,  /* (109) topic_optr ::= db_optr */
   -2,  /* (110) topic_optr ::= topic_optr partitions */
    0,  /* (111) alter_db_optr ::= */
   -2,  /* (112) alter_db_optr ::= alter_db_optr replica */
   -2,  /* (113) alter_db_optr ::= alter_db_optr quorum */
   -2,  /* (114) alter_db_optr ::= alter_db_optr keep */
   -2,  /* (115) alter_db_optr ::= alter_db_optr blocks */
   -2,  /* (116) alter_db_optr ::= alter_db_optr comp */
   -2,  /* (117) alter_db_optr ::= alter_db_optr wal */
   -2,  /* (118) alter_db_optr ::= alter_db_optr fsync */
   -2,  /* (119) alter_db_optr ::= alter_db_optr update */
   -2,  /* (120) alter_db_optr ::= alter_db_optr cachelast */
   -1,  /* (121) alter_topic_optr ::= alter_db_optr */
   -2,  /* (122) alter_topic_optr ::= alter_topic_optr partitions */
   -1,  /* (123) typename ::= ids */
   -4,  /* (124) typename ::= ids LP signed RP */
   -2,  /* (125) typename ::= ids UNSIGNED */
   -1,  /* (126) signed ::= INTEGER */
   -2,  /* (127) signed ::= PLUS INTEGER */
   -2,  /* (128) signed ::= MINUS INTEGER */
   -3,  /* (129) cmd ::= CREATE TABLE create_table_args */
   -3,  /* (130) cmd ::= CREATE TABLE create_stable_args */
   -3,  /* (131) cmd ::= CREATE STABLE create_stable_args */
   -3,  /* (132) cmd ::= CREATE TABLE create_table_list */
   -1,  /* (133) create_table_list ::= create_from_stable */
   -2,  /* (134) create_table_list ::= create_table_list create_from_stable */
   -6,  /* (135) create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
  -10,  /* (136) create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
  -10,  /* (137) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
  -13,  /* (138) create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
   -3,  /* (139) tagNamelist ::= tagNamelist COMMA ids */
   -1,  /* (140) tagNamelist ::= ids */
   -5,  /* (141) create_table_args ::= ifnotexists ids cpxName AS select */
   -3,  /* (142) columnlist ::= columnlist COMMA column */
   -1,  /* (143) columnlist ::= column */
   -2,  /* (144) column ::= ids typename */
   -3,  /* (145) tagitemlist ::= tagitemlist COMMA tagitem */
   -1,  /* (146) tagitemlist ::= tagitem */
   -1,  /* (147) tagitem ::= INTEGER */
   -1,  /* (148) tagitem ::= FLOAT */
   -1,  /* (149) tagitem ::= STRING */
   -1,  /* (150) tagitem ::= BOOL */
   -1,  /* (151) tagitem ::= NULL */
   -2,  /* (152) tagitem ::= MINUS INTEGER */
   -2,  /* (153) tagitem ::= MINUS FLOAT */
   -2,  /* (154) tagitem ::= PLUS INTEGER */
   -2,  /* (155) tagitem ::= PLUS FLOAT */
  -13,  /* (156) select ::= SELECT selcollist from where_opt interval_opt session_option fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */
   -3,  /* (157) select ::= LP select RP */
   -1,  /* (158) union ::= select */
   -4,  /* (159) union ::= union UNION ALL select */
   -1,  /* (160) cmd ::= union */
   -2,  /* (161) select ::= SELECT selcollist */
   -2,  /* (162) sclp ::= selcollist COMMA */
    0,  /* (163) sclp ::= */
   -4,  /* (164) selcollist ::= sclp distinct expr as */
   -2,  /* (165) selcollist ::= sclp STAR */
   -2,  /* (166) as ::= AS ids */
   -1,  /* (167) as ::= ids */
    0,  /* (168) as ::= */
   -1,  /* (169) distinct ::= DISTINCT */
    0,  /* (170) distinct ::= */
   -2,  /* (171) from ::= FROM tablelist */
D
dapan1121 已提交
2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300
   -2,  /* (172) tablelist ::= ids cpxName */
   -3,  /* (173) tablelist ::= ids cpxName ids */
   -4,  /* (174) tablelist ::= tablelist COMMA ids cpxName */
   -5,  /* (175) tablelist ::= tablelist COMMA ids cpxName ids */
   -1,  /* (176) tmvar ::= VARIABLE */
   -4,  /* (177) interval_opt ::= INTERVAL LP tmvar RP */
   -6,  /* (178) interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */
    0,  /* (179) interval_opt ::= */
    0,  /* (180) session_option ::= */
   -7,  /* (181) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
    0,  /* (182) fill_opt ::= */
   -6,  /* (183) fill_opt ::= FILL LP ID COMMA tagitemlist RP */
   -4,  /* (184) fill_opt ::= FILL LP ID RP */
   -4,  /* (185) sliding_opt ::= SLIDING LP tmvar RP */
    0,  /* (186) sliding_opt ::= */
    0,  /* (187) orderby_opt ::= */
   -3,  /* (188) orderby_opt ::= ORDER BY sortlist */
   -4,  /* (189) sortlist ::= sortlist COMMA item sortorder */
   -2,  /* (190) sortlist ::= item sortorder */
   -2,  /* (191) item ::= ids cpxName */
   -1,  /* (192) sortorder ::= ASC */
   -1,  /* (193) sortorder ::= DESC */
    0,  /* (194) sortorder ::= */
    0,  /* (195) groupby_opt ::= */
   -3,  /* (196) groupby_opt ::= GROUP BY grouplist */
   -3,  /* (197) grouplist ::= grouplist COMMA item */
   -1,  /* (198) grouplist ::= item */
    0,  /* (199) having_opt ::= */
   -2,  /* (200) having_opt ::= HAVING expr */
    0,  /* (201) limit_opt ::= */
   -2,  /* (202) limit_opt ::= LIMIT signed */
   -4,  /* (203) limit_opt ::= LIMIT signed OFFSET signed */
   -4,  /* (204) limit_opt ::= LIMIT signed COMMA signed */
    0,  /* (205) slimit_opt ::= */
   -2,  /* (206) slimit_opt ::= SLIMIT signed */
   -4,  /* (207) slimit_opt ::= SLIMIT signed SOFFSET signed */
   -4,  /* (208) slimit_opt ::= SLIMIT signed COMMA signed */
    0,  /* (209) where_opt ::= */
   -2,  /* (210) where_opt ::= WHERE expr */
   -3,  /* (211) expr ::= LP expr RP */
   -1,  /* (212) expr ::= ID */
   -3,  /* (213) expr ::= ID DOT ID */
   -3,  /* (214) expr ::= ID DOT STAR */
   -1,  /* (215) expr ::= INTEGER */
   -2,  /* (216) expr ::= MINUS INTEGER */
   -2,  /* (217) expr ::= PLUS INTEGER */
   -1,  /* (218) expr ::= FLOAT */
   -2,  /* (219) expr ::= MINUS FLOAT */
   -2,  /* (220) expr ::= PLUS FLOAT */
   -1,  /* (221) expr ::= STRING */
   -1,  /* (222) expr ::= NOW */
   -1,  /* (223) expr ::= VARIABLE */
   -2,  /* (224) expr ::= PLUS VARIABLE */
   -2,  /* (225) expr ::= MINUS VARIABLE */
   -1,  /* (226) expr ::= BOOL */
   -1,  /* (227) expr ::= NULL */
   -4,  /* (228) expr ::= ID LP exprlist RP */
   -4,  /* (229) expr ::= ID LP STAR RP */
   -3,  /* (230) expr ::= expr IS NULL */
   -4,  /* (231) expr ::= expr IS NOT NULL */
   -3,  /* (232) expr ::= expr LT expr */
   -3,  /* (233) expr ::= expr GT expr */
   -3,  /* (234) expr ::= expr LE expr */
   -3,  /* (235) expr ::= expr GE expr */
   -3,  /* (236) expr ::= expr NE expr */
   -3,  /* (237) expr ::= expr EQ expr */
   -5,  /* (238) expr ::= expr BETWEEN expr AND expr */
   -3,  /* (239) expr ::= expr AND expr */
   -3,  /* (240) expr ::= expr OR expr */
   -3,  /* (241) expr ::= expr PLUS expr */
   -3,  /* (242) expr ::= expr MINUS expr */
   -3,  /* (243) expr ::= expr STAR expr */
   -3,  /* (244) expr ::= expr SLASH expr */
   -3,  /* (245) expr ::= expr REM expr */
   -3,  /* (246) expr ::= expr LIKE expr */
   -5,  /* (247) expr ::= expr IN LP exprlist RP */
   -3,  /* (248) exprlist ::= exprlist COMMA expritem */
   -1,  /* (249) exprlist ::= expritem */
   -1,  /* (250) expritem ::= expr */
    0,  /* (251) expritem ::= */
   -3,  /* (252) cmd ::= RESET QUERY CACHE */
   -3,  /* (253) cmd ::= SYNCDB ids REPLICA */
   -7,  /* (254) cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
   -7,  /* (255) cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
   -7,  /* (256) cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
   -7,  /* (257) cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
   -8,  /* (258) cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
   -9,  /* (259) cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
   -7,  /* (260) cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
   -7,  /* (261) cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
   -7,  /* (262) cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
   -7,  /* (263) cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
   -8,  /* (264) cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
   -3,  /* (265) cmd ::= KILL CONNECTION INTEGER */
   -5,  /* (266) cmd ::= KILL STREAM INTEGER COLON INTEGER */
   -5,  /* (267) cmd ::= KILL QUERY INTEGER COLON INTEGER */
H
hzcheng 已提交
2301 2302 2303 2304 2305 2306 2307
};

static void yy_accept(yyParser*);  /* Forward Declaration */

/*
** Perform a reduce action and the shift that must immediately
** follow the reduce.
2308 2309 2310 2311 2312 2313
**
** The yyLookahead and yyLookaheadToken parameters provide reduce actions
** access to the lookahead token (if any).  The yyLookahead will be YYNOCODE
** if the lookahead token has already been consumed.  As this procedure is
** only called from one place, optimizing compilers will in-line it, which
** means that the extra parameters have no performance impact.
H
hzcheng 已提交
2314
*/
2315
static YYACTIONTYPE yy_reduce(
H
hzcheng 已提交
2316
  yyParser *yypParser,         /* The parser */
2317 2318 2319
  unsigned int yyruleno,       /* Number of the rule by which to reduce */
  int yyLookahead,             /* Lookahead token, or YYNOCODE if none */
  ParseTOKENTYPE yyLookaheadToken  /* Value of the lookahead token */
2320
  ParseCTX_PDECL                   /* %extra_context */
H
hzcheng 已提交
2321 2322
){
  int yygoto;                     /* The next state */
2323
  YYACTIONTYPE yyact;             /* The next action */
H
hzcheng 已提交
2324 2325
  yyStackEntry *yymsp;            /* The top of the parser's stack */
  int yysize;                     /* Amount to pop the stack */
2326
  ParseARG_FETCH
2327 2328 2329
  (void)yyLookahead;
  (void)yyLookaheadToken;
  yymsp = yypParser->yytos;
H
hzcheng 已提交
2330
#ifndef NDEBUG
2331
  if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
2332
    yysize = yyRuleInfoNRhs[yyruleno];
2333
    if( yysize ){
2334
      fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n",
2335
        yyTracePrompt,
2336 2337 2338
        yyruleno, yyRuleName[yyruleno],
        yyruleno<YYNRULE_WITH_ACTION ? "" : " without external action",
        yymsp[yysize].stateno);
2339
    }else{
2340 2341 2342
      fprintf(yyTraceFILE, "%sReduce %d [%s]%s.\n",
        yyTracePrompt, yyruleno, yyRuleName[yyruleno],
        yyruleno<YYNRULE_WITH_ACTION ? "" : " without external action");
2343
    }
H
hzcheng 已提交
2344 2345
  }
#endif /* NDEBUG */
2346 2347 2348 2349

  /* Check that the stack is large enough to grow by a single entry
  ** if the RHS of the rule is empty.  This ensures that there is room
  ** enough on the stack to push the LHS value */
2350
  if( yyRuleInfoNRhs[yyruleno]==0 ){
2351 2352 2353 2354 2355 2356 2357 2358 2359
#ifdef YYTRACKMAXSTACKDEPTH
    if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
      yypParser->yyhwm++;
      assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack));
    }
#endif
#if YYSTACKDEPTH>0 
    if( yypParser->yytos>=yypParser->yystackEnd ){
      yyStackOverflow(yypParser);
2360 2361 2362 2363
      /* The call to yyStackOverflow() above pops the stack until it is
      ** empty, causing the main parser loop to exit.  So the return value
      ** is never used and does not matter. */
      return 0;
2364 2365 2366 2367 2368
    }
#else
    if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){
      if( yyGrowStack(yypParser) ){
        yyStackOverflow(yypParser);
2369 2370 2371 2372
        /* The call to yyStackOverflow() above pops the stack until it is
        ** empty, causing the main parser loop to exit.  So the return value
        ** is never used and does not matter. */
        return 0;
2373 2374 2375 2376 2377
      }
      yymsp = yypParser->yytos;
    }
#endif
  }
H
hzcheng 已提交
2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388

  switch( yyruleno ){
  /* Beginning here are the reduction cases.  A typical example
  ** follows:
  **   case 0:
  **  #line <lineno> <grammarfile>
  **     { ... }           // User supplied code
  **  #line <lineno> <thisfile>
  **     break;
  */
/********** Begin reduce actions **********************************************/
2389
        YYMINORTYPE yylhsminor;
H
hzcheng 已提交
2390
      case 0: /* program ::= cmd */
D
dapan1121 已提交
2391 2392 2393
      case 129: /* cmd ::= CREATE TABLE create_table_args */ yytestcase(yyruleno==129);
      case 130: /* cmd ::= CREATE TABLE create_stable_args */ yytestcase(yyruleno==130);
      case 131: /* cmd ::= CREATE STABLE create_stable_args */ yytestcase(yyruleno==131);
H
hzcheng 已提交
2394 2395 2396
{}
        break;
      case 1: /* cmd ::= SHOW DATABASES */
2397
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_DB, 0, 0);}
H
hzcheng 已提交
2398
        break;
D
dapan1121 已提交
2399 2400 2401 2402
      case 2: /* cmd ::= SHOW TOPICS */
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_TP, 0, 0);}
        break;
      case 3: /* cmd ::= SHOW MNODES */
2403
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_MNODE, 0, 0);}
H
hzcheng 已提交
2404
        break;
D
dapan1121 已提交
2405
      case 4: /* cmd ::= SHOW DNODES */
2406
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_DNODE, 0, 0);}
H
hzcheng 已提交
2407
        break;
D
dapan1121 已提交
2408
      case 5: /* cmd ::= SHOW ACCOUNTS */
2409
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_ACCT, 0, 0);}
S
slguan 已提交
2410
        break;
D
dapan1121 已提交
2411
      case 6: /* cmd ::= SHOW USERS */
2412
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_USER, 0, 0);}
H
hzcheng 已提交
2413
        break;
D
dapan1121 已提交
2414
      case 7: /* cmd ::= SHOW MODULES */
2415
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_MODULE, 0, 0);  }
H
hzcheng 已提交
2416
        break;
D
dapan1121 已提交
2417
      case 8: /* cmd ::= SHOW QUERIES */
2418
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_QUERIES, 0, 0);  }
H
hzcheng 已提交
2419
        break;
D
dapan1121 已提交
2420
      case 9: /* cmd ::= SHOW CONNECTIONS */
2421
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_CONNS, 0, 0);}
H
hzcheng 已提交
2422
        break;
D
dapan1121 已提交
2423
      case 10: /* cmd ::= SHOW STREAMS */
2424
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_STREAMS, 0, 0);  }
H
hzcheng 已提交
2425
        break;
D
dapan1121 已提交
2426
      case 11: /* cmd ::= SHOW VARIABLES */
H
Haojun Liao 已提交
2427
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_VARIABLES, 0, 0);  }
H
hzcheng 已提交
2428
        break;
D
dapan1121 已提交
2429
      case 12: /* cmd ::= SHOW SCORES */
2430
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_SCORES, 0, 0);   }
H
hzcheng 已提交
2431
        break;
D
dapan1121 已提交
2432
      case 13: /* cmd ::= SHOW GRANTS */
2433
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_GRANTS, 0, 0);   }
H
hzcheng 已提交
2434
        break;
D
dapan1121 已提交
2435
      case 14: /* cmd ::= SHOW VNODES */
2436
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_VNODES, 0, 0); }
L
lihui 已提交
2437
        break;
D
dapan1121 已提交
2438
      case 15: /* cmd ::= SHOW VNODES IPTOKEN */
2439
{ setShowOptions(pInfo, TSDB_MGMT_TABLE_VNODES, &yymsp[0].minor.yy0, 0); }
H
hzcheng 已提交
2440
        break;
D
dapan1121 已提交
2441
      case 16: /* dbPrefix ::= */
2442
{yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.type = 0;}
H
hzcheng 已提交
2443
        break;
D
dapan1121 已提交
2444
      case 17: /* dbPrefix ::= ids DOT */
2445 2446
{yylhsminor.yy0 = yymsp[-1].minor.yy0;  }
  yymsp[-1].minor.yy0 = yylhsminor.yy0;
H
hzcheng 已提交
2447
        break;
D
dapan1121 已提交
2448
      case 18: /* cpxName ::= */
2449
{yymsp[1].minor.yy0.n = 0;  }
H
hzcheng 已提交
2450
        break;
D
dapan1121 已提交
2451
      case 19: /* cpxName ::= DOT ids */
2452
{yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n += 1;    }
L
lihui 已提交
2453
        break;
D
dapan1121 已提交
2454
      case 20: /* cmd ::= SHOW CREATE TABLE ids cpxName */
Y
yihaoDeng 已提交
2455 2456
{
   yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
H
Haojun Liao 已提交
2457
   setDCLSqlElems(pInfo, TSDB_SQL_SHOW_CREATE_TABLE, 1, &yymsp[-1].minor.yy0);
Y
yihaoDeng 已提交
2458 2459
}
        break;
D
dapan1121 已提交
2460
      case 21: /* cmd ::= SHOW CREATE DATABASE ids */
Y
yihaoDeng 已提交
2461
{
H
Haojun Liao 已提交
2462
  setDCLSqlElems(pInfo, TSDB_SQL_SHOW_CREATE_DATABASE, 1, &yymsp[0].minor.yy0);
Y
yihaoDeng 已提交
2463 2464
}
        break;
D
dapan1121 已提交
2465
      case 22: /* cmd ::= SHOW dbPrefix TABLES */
H
hzcheng 已提交
2466
{
2467
    setShowOptions(pInfo, TSDB_MGMT_TABLE_TABLE, &yymsp[-1].minor.yy0, 0);
H
hzcheng 已提交
2468 2469
}
        break;
D
dapan1121 已提交
2470
      case 23: /* cmd ::= SHOW dbPrefix TABLES LIKE ids */
H
hzcheng 已提交
2471
{
2472
    setShowOptions(pInfo, TSDB_MGMT_TABLE_TABLE, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0);
H
hzcheng 已提交
2473 2474
}
        break;
D
dapan1121 已提交
2475
      case 24: /* cmd ::= SHOW dbPrefix STABLES */
H
hzcheng 已提交
2476
{
2477
    setShowOptions(pInfo, TSDB_MGMT_TABLE_METRIC, &yymsp[-1].minor.yy0, 0);
H
hzcheng 已提交
2478 2479
}
        break;
D
dapan1121 已提交
2480
      case 25: /* cmd ::= SHOW dbPrefix STABLES LIKE ids */
H
hzcheng 已提交
2481
{
H
Haojun Liao 已提交
2482
    SStrToken token;
H
Haojun Liao 已提交
2483
    tSetDbName(&token, &yymsp[-3].minor.yy0);
2484
    setShowOptions(pInfo, TSDB_MGMT_TABLE_METRIC, &token, &yymsp[0].minor.yy0);
H
hzcheng 已提交
2485 2486
}
        break;
D
dapan1121 已提交
2487
      case 26: /* cmd ::= SHOW dbPrefix VGROUPS */
H
hzcheng 已提交
2488
{
H
Haojun Liao 已提交
2489
    SStrToken token;
H
Haojun Liao 已提交
2490
    tSetDbName(&token, &yymsp[-1].minor.yy0);
2491
    setShowOptions(pInfo, TSDB_MGMT_TABLE_VGROUP, &token, 0);
H
hzcheng 已提交
2492 2493
}
        break;
D
dapan1121 已提交
2494
      case 27: /* cmd ::= SHOW dbPrefix VGROUPS ids */
L
[1361]  
lihui 已提交
2495
{
H
Haojun Liao 已提交
2496
    SStrToken token;
H
Haojun Liao 已提交
2497
    tSetDbName(&token, &yymsp[-2].minor.yy0);
H
hjxilinx 已提交
2498
    setShowOptions(pInfo, TSDB_MGMT_TABLE_VGROUP, &token, &yymsp[0].minor.yy0);
L
[1361]  
lihui 已提交
2499 2500
}
        break;
D
dapan1121 已提交
2501
      case 28: /* cmd ::= DROP TABLE ifexists ids cpxName */
H
hzcheng 已提交
2502 2503
{
    yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
D
fix bug  
dapan1121 已提交
2504
    setDropDbTableInfo(pInfo, TSDB_SQL_DROP_TABLE, &yymsp[-1].minor.yy0, &yymsp[-2].minor.yy0, -1, -1);
D
dapan1121 已提交
2505 2506
}
        break;
D
dapan1121 已提交
2507
      case 29: /* cmd ::= DROP STABLE ifexists ids cpxName */
D
dapan1121 已提交
2508 2509
{
    yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
D
fix bug  
dapan1121 已提交
2510
    setDropDbTableInfo(pInfo, TSDB_SQL_DROP_TABLE, &yymsp[-1].minor.yy0, &yymsp[-2].minor.yy0, -1, TSDB_SUPER_TABLE);
H
hzcheng 已提交
2511 2512
}
        break;
D
dapan1121 已提交
2513 2514 2515 2516 2517
      case 30: /* cmd ::= DROP DATABASE ifexists ids */
{ setDropDbTableInfo(pInfo, TSDB_SQL_DROP_DB, &yymsp[0].minor.yy0, &yymsp[-1].minor.yy0, TSDB_DB_TYPE_DEFAULT, -1); }
        break;
      case 31: /* cmd ::= DROP TOPIC ifexists ids */
{ setDropDbTableInfo(pInfo, TSDB_SQL_DROP_DB, &yymsp[0].minor.yy0, &yymsp[-1].minor.yy0, TSDB_DB_TYPE_TOPIC, -1); }
H
hzcheng 已提交
2518
        break;
D
dapan1121 已提交
2519
      case 32: /* cmd ::= DROP DNODE ids */
H
Haojun Liao 已提交
2520
{ setDCLSqlElems(pInfo, TSDB_SQL_DROP_DNODE, 1, &yymsp[0].minor.yy0);    }
S
slguan 已提交
2521
        break;
D
dapan1121 已提交
2522
      case 33: /* cmd ::= DROP USER ids */
H
Haojun Liao 已提交
2523
{ setDCLSqlElems(pInfo, TSDB_SQL_DROP_USER, 1, &yymsp[0].minor.yy0);     }
H
hzcheng 已提交
2524
        break;
D
dapan1121 已提交
2525
      case 34: /* cmd ::= DROP ACCOUNT ids */
H
Haojun Liao 已提交
2526
{ setDCLSqlElems(pInfo, TSDB_SQL_DROP_ACCT, 1, &yymsp[0].minor.yy0);  }
S
slguan 已提交
2527
        break;
D
dapan1121 已提交
2528
      case 35: /* cmd ::= USE ids */
H
Haojun Liao 已提交
2529
{ setDCLSqlElems(pInfo, TSDB_SQL_USE_DB, 1, &yymsp[0].minor.yy0);}
H
hzcheng 已提交
2530
        break;
D
dapan1121 已提交
2531
      case 36: /* cmd ::= DESCRIBE ids cpxName */
H
hzcheng 已提交
2532 2533
{
    yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
H
Haojun Liao 已提交
2534
    setDCLSqlElems(pInfo, TSDB_SQL_DESCRIBE_TABLE, 1, &yymsp[-1].minor.yy0);
H
hzcheng 已提交
2535 2536
}
        break;
D
dapan1121 已提交
2537
      case 37: /* cmd ::= ALTER USER ids PASS ids */
D
dapan1121 已提交
2538
{ setAlterUserSql(pInfo, TSDB_ALTER_USER_PASSWD, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, NULL);    }
H
hzcheng 已提交
2539
        break;
D
dapan1121 已提交
2540
      case 38: /* cmd ::= ALTER USER ids PRIVILEGE ids */
D
dapan1121 已提交
2541
{ setAlterUserSql(pInfo, TSDB_ALTER_USER_PRIVILEGES, &yymsp[-2].minor.yy0, NULL, &yymsp[0].minor.yy0);}
H
hzcheng 已提交
2542
        break;
D
dapan1121 已提交
2543
      case 39: /* cmd ::= ALTER DNODE ids ids */
H
Haojun Liao 已提交
2544
{ setDCLSqlElems(pInfo, TSDB_SQL_CFG_DNODE, 2, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);          }
H
hzcheng 已提交
2545
        break;
D
dapan1121 已提交
2546
      case 40: /* cmd ::= ALTER DNODE ids ids ids */
H
Haojun Liao 已提交
2547
{ setDCLSqlElems(pInfo, TSDB_SQL_CFG_DNODE, 3, &yymsp[-2].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);      }
H
hzcheng 已提交
2548
        break;
D
dapan1121 已提交
2549
      case 41: /* cmd ::= ALTER LOCAL ids */
H
Haojun Liao 已提交
2550
{ setDCLSqlElems(pInfo, TSDB_SQL_CFG_LOCAL, 1, &yymsp[0].minor.yy0);              }
H
hzcheng 已提交
2551
        break;
D
dapan1121 已提交
2552
      case 42: /* cmd ::= ALTER LOCAL ids ids */
H
Haojun Liao 已提交
2553
{ setDCLSqlElems(pInfo, TSDB_SQL_CFG_LOCAL, 2, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);          }
S
slguan 已提交
2554
        break;
D
dapan1121 已提交
2555 2556
      case 43: /* cmd ::= ALTER DATABASE ids alter_db_optr */
      case 44: /* cmd ::= ALTER TOPIC ids alter_topic_optr */ yytestcase(yyruleno==44);
2557
{ SStrToken t = {0};  setCreateDbInfo(pInfo, TSDB_SQL_ALTER_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy94, &t);}
H
hzcheng 已提交
2558
        break;
D
dapan1121 已提交
2559
      case 45: /* cmd ::= ALTER ACCOUNT ids acct_optr */
2560
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-1].minor.yy0, NULL, &yymsp[0].minor.yy419);}
S
slguan 已提交
2561
        break;
D
dapan1121 已提交
2562
      case 46: /* cmd ::= ALTER ACCOUNT ids PASS ids acct_optr */
2563
{ setCreateAcctSql(pInfo, TSDB_SQL_ALTER_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy419);}
H
hzcheng 已提交
2564
        break;
D
dapan1121 已提交
2565 2566
      case 47: /* ids ::= ID */
      case 48: /* ids ::= STRING */ yytestcase(yyruleno==48);
2567 2568
{yylhsminor.yy0 = yymsp[0].minor.yy0; }
  yymsp[0].minor.yy0 = yylhsminor.yy0;
H
hjxilinx 已提交
2569
        break;
D
dapan1121 已提交
2570
      case 49: /* ifexists ::= IF EXISTS */
2571
{ yymsp[-1].minor.yy0.n = 1;}
2572
        break;
D
dapan1121 已提交
2573 2574
      case 50: /* ifexists ::= */
      case 52: /* ifnotexists ::= */ yytestcase(yyruleno==52);
H
Haojun Liao 已提交
2575
      case 170: /* distinct ::= */ yytestcase(yyruleno==170);
2576
{ yymsp[1].minor.yy0.n = 0;}
2577
        break;
D
dapan1121 已提交
2578
      case 51: /* ifnotexists ::= IF NOT EXISTS */
2579
{ yymsp[-2].minor.yy0.n = 1;}
H
hzcheng 已提交
2580
        break;
D
dapan1121 已提交
2581
      case 53: /* cmd ::= CREATE DNODE ids */
H
Haojun Liao 已提交
2582
{ setDCLSqlElems(pInfo, TSDB_SQL_CREATE_DNODE, 1, &yymsp[0].minor.yy0);}
S
slguan 已提交
2583
        break;
D
dapan1121 已提交
2584
      case 54: /* cmd ::= CREATE ACCOUNT ids PASS ids acct_optr */
2585
{ setCreateAcctSql(pInfo, TSDB_SQL_CREATE_ACCT, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy419);}
S
slguan 已提交
2586
        break;
D
dapan1121 已提交
2587 2588
      case 55: /* cmd ::= CREATE DATABASE ifnotexists ids db_optr */
      case 56: /* cmd ::= CREATE TOPIC ifnotexists ids topic_optr */ yytestcase(yyruleno==56);
2589
{ setCreateDbInfo(pInfo, TSDB_SQL_CREATE_DB, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy94, &yymsp[-2].minor.yy0);}
H
hzcheng 已提交
2590
        break;
D
dapan1121 已提交
2591
      case 57: /* cmd ::= CREATE USER ids PASS ids */
D
dapan1121 已提交
2592
{ setCreateUserSql(pInfo, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);}
H
hzcheng 已提交
2593
        break;
D
dapan1121 已提交
2594 2595 2596 2597 2598 2599 2600 2601 2602
      case 58: /* pps ::= */
      case 60: /* tseries ::= */ yytestcase(yyruleno==60);
      case 62: /* dbs ::= */ yytestcase(yyruleno==62);
      case 64: /* streams ::= */ yytestcase(yyruleno==64);
      case 66: /* storage ::= */ yytestcase(yyruleno==66);
      case 68: /* qtime ::= */ yytestcase(yyruleno==68);
      case 70: /* users ::= */ yytestcase(yyruleno==70);
      case 72: /* conns ::= */ yytestcase(yyruleno==72);
      case 74: /* state ::= */ yytestcase(yyruleno==74);
2603
{ yymsp[1].minor.yy0.n = 0;   }
L
lihui 已提交
2604
        break;
D
dapan1121 已提交
2605 2606 2607 2608 2609 2610 2611 2612 2613
      case 59: /* pps ::= PPS INTEGER */
      case 61: /* tseries ::= TSERIES INTEGER */ yytestcase(yyruleno==61);
      case 63: /* dbs ::= DBS INTEGER */ yytestcase(yyruleno==63);
      case 65: /* streams ::= STREAMS INTEGER */ yytestcase(yyruleno==65);
      case 67: /* storage ::= STORAGE INTEGER */ yytestcase(yyruleno==67);
      case 69: /* qtime ::= QTIME INTEGER */ yytestcase(yyruleno==69);
      case 71: /* users ::= USERS INTEGER */ yytestcase(yyruleno==71);
      case 73: /* conns ::= CONNS INTEGER */ yytestcase(yyruleno==73);
      case 75: /* state ::= STATE ids */ yytestcase(yyruleno==75);
2614
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;     }
L
lihui 已提交
2615
        break;
D
dapan1121 已提交
2616
      case 76: /* acct_optr ::= pps tseries storage streams qtime dbs users conns state */
S
slguan 已提交
2617
{
2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628
    yylhsminor.yy419.maxUsers   = (yymsp[-2].minor.yy0.n>0)?atoi(yymsp[-2].minor.yy0.z):-1;
    yylhsminor.yy419.maxDbs     = (yymsp[-3].minor.yy0.n>0)?atoi(yymsp[-3].minor.yy0.z):-1;
    yylhsminor.yy419.maxTimeSeries = (yymsp[-7].minor.yy0.n>0)?atoi(yymsp[-7].minor.yy0.z):-1;
    yylhsminor.yy419.maxStreams = (yymsp[-5].minor.yy0.n>0)?atoi(yymsp[-5].minor.yy0.z):-1;
    yylhsminor.yy419.maxPointsPerSecond     = (yymsp[-8].minor.yy0.n>0)?atoi(yymsp[-8].minor.yy0.z):-1;
    yylhsminor.yy419.maxStorage = (yymsp[-6].minor.yy0.n>0)?strtoll(yymsp[-6].minor.yy0.z, NULL, 10):-1;
    yylhsminor.yy419.maxQueryTime   = (yymsp[-4].minor.yy0.n>0)?strtoll(yymsp[-4].minor.yy0.z, NULL, 10):-1;
    yylhsminor.yy419.maxConnections   = (yymsp[-1].minor.yy0.n>0)?atoi(yymsp[-1].minor.yy0.z):-1;
    yylhsminor.yy419.stat    = yymsp[0].minor.yy0;
}
  yymsp[-8].minor.yy419 = yylhsminor.yy419;
D
dapan1121 已提交
2629 2630
        break;
      case 77: /* keep ::= KEEP tagitemlist */
2631
{ yymsp[-1].minor.yy429 = yymsp[0].minor.yy429; }
D
dapan1121 已提交
2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647
        break;
      case 78: /* cache ::= CACHE INTEGER */
      case 79: /* replica ::= REPLICA INTEGER */ yytestcase(yyruleno==79);
      case 80: /* quorum ::= QUORUM INTEGER */ yytestcase(yyruleno==80);
      case 81: /* days ::= DAYS INTEGER */ yytestcase(yyruleno==81);
      case 82: /* minrows ::= MINROWS INTEGER */ yytestcase(yyruleno==82);
      case 83: /* maxrows ::= MAXROWS INTEGER */ yytestcase(yyruleno==83);
      case 84: /* blocks ::= BLOCKS INTEGER */ yytestcase(yyruleno==84);
      case 85: /* ctime ::= CTIME INTEGER */ yytestcase(yyruleno==85);
      case 86: /* wal ::= WAL INTEGER */ yytestcase(yyruleno==86);
      case 87: /* fsync ::= FSYNC INTEGER */ yytestcase(yyruleno==87);
      case 88: /* comp ::= COMP INTEGER */ yytestcase(yyruleno==88);
      case 89: /* prec ::= PRECISION STRING */ yytestcase(yyruleno==89);
      case 90: /* update ::= UPDATE INTEGER */ yytestcase(yyruleno==90);
      case 91: /* cachelast ::= CACHELAST INTEGER */ yytestcase(yyruleno==91);
      case 92: /* partitions ::= PARTITIONS INTEGER */ yytestcase(yyruleno==92);
2648
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; }
L
lihui 已提交
2649
        break;
D
dapan1121 已提交
2650
      case 93: /* db_optr ::= */
2651
{setDefaultCreateDbOption(&yymsp[1].minor.yy94); yymsp[1].minor.yy94.dbType = TSDB_DB_TYPE_DEFAULT;}
D
dapan1121 已提交
2652 2653
        break;
      case 94: /* db_optr ::= db_optr cache */
2654 2655
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.cacheBlockSize = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2656 2657 2658
        break;
      case 95: /* db_optr ::= db_optr replica */
      case 112: /* alter_db_optr ::= alter_db_optr replica */ yytestcase(yyruleno==112);
2659 2660
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.replica = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2661 2662 2663
        break;
      case 96: /* db_optr ::= db_optr quorum */
      case 113: /* alter_db_optr ::= alter_db_optr quorum */ yytestcase(yyruleno==113);
2664 2665
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.quorum = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2666 2667
        break;
      case 97: /* db_optr ::= db_optr days */
2668 2669
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.daysPerFile = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2670 2671
        break;
      case 98: /* db_optr ::= db_optr minrows */
2672 2673
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.minRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2674 2675
        break;
      case 99: /* db_optr ::= db_optr maxrows */
2676 2677
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.maxRowsPerBlock = strtod(yymsp[0].minor.yy0.z, NULL); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2678 2679 2680
        break;
      case 100: /* db_optr ::= db_optr blocks */
      case 115: /* alter_db_optr ::= alter_db_optr blocks */ yytestcase(yyruleno==115);
2681 2682
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.numOfBlocks = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2683 2684
        break;
      case 101: /* db_optr ::= db_optr ctime */
2685 2686
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.commitTime = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2687 2688 2689
        break;
      case 102: /* db_optr ::= db_optr wal */
      case 117: /* alter_db_optr ::= alter_db_optr wal */ yytestcase(yyruleno==117);
2690 2691
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.walLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2692 2693 2694
        break;
      case 103: /* db_optr ::= db_optr fsync */
      case 118: /* alter_db_optr ::= alter_db_optr fsync */ yytestcase(yyruleno==118);
2695 2696
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.fsyncPeriod = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2697 2698 2699
        break;
      case 104: /* db_optr ::= db_optr comp */
      case 116: /* alter_db_optr ::= alter_db_optr comp */ yytestcase(yyruleno==116);
2700 2701
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.compressionLevel = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2702 2703
        break;
      case 105: /* db_optr ::= db_optr prec */
2704 2705
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.precision = yymsp[0].minor.yy0; }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2706 2707 2708
        break;
      case 106: /* db_optr ::= db_optr keep */
      case 114: /* alter_db_optr ::= alter_db_optr keep */ yytestcase(yyruleno==114);
2709 2710
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.keep = yymsp[0].minor.yy429; }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2711 2712 2713
        break;
      case 107: /* db_optr ::= db_optr update */
      case 119: /* alter_db_optr ::= alter_db_optr update */ yytestcase(yyruleno==119);
2714 2715
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.update = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2716 2717 2718
        break;
      case 108: /* db_optr ::= db_optr cachelast */
      case 120: /* alter_db_optr ::= alter_db_optr cachelast */ yytestcase(yyruleno==120);
2719 2720
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.cachelast = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2721
        break;
D
fix bug  
dapan1121 已提交
2722 2723
      case 109: /* topic_optr ::= db_optr */
      case 121: /* alter_topic_optr ::= alter_db_optr */ yytestcase(yyruleno==121);
2724 2725
{ yylhsminor.yy94 = yymsp[0].minor.yy94; yylhsminor.yy94.dbType = TSDB_DB_TYPE_TOPIC; }
  yymsp[0].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2726
        break;
D
fix bug  
dapan1121 已提交
2727 2728
      case 110: /* topic_optr ::= topic_optr partitions */
      case 122: /* alter_topic_optr ::= alter_topic_optr partitions */ yytestcase(yyruleno==122);
2729 2730
{ yylhsminor.yy94 = yymsp[-1].minor.yy94; yylhsminor.yy94.partitions = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[-1].minor.yy94 = yylhsminor.yy94;
D
dapan1121 已提交
2731 2732
        break;
      case 111: /* alter_db_optr ::= */
2733
{ setDefaultCreateDbOption(&yymsp[1].minor.yy94); yymsp[1].minor.yy94.dbType = TSDB_DB_TYPE_DEFAULT;}
D
dapan1121 已提交
2734 2735
        break;
      case 123: /* typename ::= ids */
dengyihao's avatar
dengyihao 已提交
2736 2737
{ 
  yymsp[0].minor.yy0.type = 0;
2738
  tSetColumnType (&yylhsminor.yy451, &yymsp[0].minor.yy0);
dengyihao's avatar
dengyihao 已提交
2739
}
2740
  yymsp[0].minor.yy451 = yylhsminor.yy451;
L
lihui 已提交
2741
        break;
D
dapan1121 已提交
2742
      case 124: /* typename ::= ids LP signed RP */
H
hzcheng 已提交
2743
{
2744
  if (yymsp[-1].minor.yy481 <= 0) {
2745
    yymsp[-3].minor.yy0.type = 0;
2746
    tSetColumnType(&yylhsminor.yy451, &yymsp[-3].minor.yy0);
2747
  } else {
2748 2749
    yymsp[-3].minor.yy0.type = -yymsp[-1].minor.yy481;  // negative value of name length
    tSetColumnType(&yylhsminor.yy451, &yymsp[-3].minor.yy0);
2750
  }
H
hzcheng 已提交
2751
}
2752
  yymsp[-3].minor.yy451 = yylhsminor.yy451;
H
hzcheng 已提交
2753
        break;
D
dapan1121 已提交
2754
      case 125: /* typename ::= ids UNSIGNED */
2755 2756 2757
{
  yymsp[-1].minor.yy0.type = 0;
  yymsp[-1].minor.yy0.n = ((yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z);
2758
  tSetColumnType (&yylhsminor.yy451, &yymsp[-1].minor.yy0);
2759
}
2760
  yymsp[-1].minor.yy451 = yylhsminor.yy451;
2761
        break;
D
dapan1121 已提交
2762
      case 126: /* signed ::= INTEGER */
2763 2764
{ yylhsminor.yy481 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
  yymsp[0].minor.yy481 = yylhsminor.yy481;
2765
        break;
D
dapan1121 已提交
2766
      case 127: /* signed ::= PLUS INTEGER */
2767
{ yymsp[-1].minor.yy481 = strtol(yymsp[0].minor.yy0.z, NULL, 10); }
H
hjxilinx 已提交
2768
        break;
D
dapan1121 已提交
2769
      case 128: /* signed ::= MINUS INTEGER */
2770
{ yymsp[-1].minor.yy481 = -strtol(yymsp[0].minor.yy0.z, NULL, 10);}
2771
        break;
D
dapan1121 已提交
2772
      case 132: /* cmd ::= CREATE TABLE create_table_list */
2773
{ pInfo->type = TSDB_SQL_CREATE_TABLE; pInfo->pCreateTableInfo = yymsp[0].minor.yy194;}
H
hzcheng 已提交
2774
        break;
D
dapan1121 已提交
2775
      case 133: /* create_table_list ::= create_from_stable */
H
hzcheng 已提交
2776
{
H
Haojun Liao 已提交
2777
  SCreateTableSql* pCreateTable = calloc(1, sizeof(SCreateTableSql));
2778 2779
  pCreateTable->childTableInfo = taosArrayInit(4, sizeof(SCreatedTableInfo));

2780
  taosArrayPush(pCreateTable->childTableInfo, &yymsp[0].minor.yy252);
2781
  pCreateTable->type = TSQL_CREATE_TABLE_FROM_STABLE;
2782
  yylhsminor.yy194 = pCreateTable;
H
hzcheng 已提交
2783
}
2784
  yymsp[0].minor.yy194 = yylhsminor.yy194;
H
hzcheng 已提交
2785
        break;
D
dapan1121 已提交
2786
      case 134: /* create_table_list ::= create_table_list create_from_stable */
H
hzcheng 已提交
2787
{
2788 2789
  taosArrayPush(yymsp[-1].minor.yy194->childTableInfo, &yymsp[0].minor.yy252);
  yylhsminor.yy194 = yymsp[-1].minor.yy194;
H
hzcheng 已提交
2790
}
2791
  yymsp[-1].minor.yy194 = yylhsminor.yy194;
H
hzcheng 已提交
2792
        break;
D
dapan1121 已提交
2793
      case 135: /* create_table_args ::= ifnotexists ids cpxName LP columnlist RP */
H
hzcheng 已提交
2794
{
2795 2796
  yylhsminor.yy194 = tSetCreateTableInfo(yymsp[-1].minor.yy429, NULL, NULL, TSQL_CREATE_TABLE);
  setSqlInfo(pInfo, yylhsminor.yy194, NULL, TSDB_SQL_CREATE_TABLE);
2797 2798 2799

  yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
  setCreatedTableName(pInfo, &yymsp[-4].minor.yy0, &yymsp[-5].minor.yy0);
H
hzcheng 已提交
2800
}
2801
  yymsp[-5].minor.yy194 = yylhsminor.yy194;
H
hzcheng 已提交
2802
        break;
D
dapan1121 已提交
2803
      case 136: /* create_stable_args ::= ifnotexists ids cpxName LP columnlist RP TAGS LP columnlist RP */
H
hzcheng 已提交
2804
{
2805 2806
  yylhsminor.yy194 = tSetCreateTableInfo(yymsp[-5].minor.yy429, yymsp[-1].minor.yy429, NULL, TSQL_CREATE_STABLE);
  setSqlInfo(pInfo, yylhsminor.yy194, NULL, TSDB_SQL_CREATE_TABLE);
2807 2808 2809

  yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
  setCreatedTableName(pInfo, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0);
H
hzcheng 已提交
2810
}
2811
  yymsp[-9].minor.yy194 = yylhsminor.yy194;
H
hzcheng 已提交
2812
        break;
D
dapan1121 已提交
2813
      case 137: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName TAGS LP tagitemlist RP */
H
hzcheng 已提交
2814
{
2815 2816
  yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;
  yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
2817
  yylhsminor.yy252 = createNewChildTableInfo(&yymsp[-5].minor.yy0, NULL, yymsp[-1].minor.yy429, &yymsp[-8].minor.yy0, &yymsp[-9].minor.yy0);
H
hzcheng 已提交
2818
}
2819
  yymsp[-9].minor.yy252 = yylhsminor.yy252;
H
hzcheng 已提交
2820
        break;
D
dapan1121 已提交
2821
      case 138: /* create_from_stable ::= ifnotexists ids cpxName USING ids cpxName LP tagNamelist RP TAGS LP tagitemlist RP */
2822 2823 2824
{
  yymsp[-8].minor.yy0.n += yymsp[-7].minor.yy0.n;
  yymsp[-11].minor.yy0.n += yymsp[-10].minor.yy0.n;
2825
  yylhsminor.yy252 = createNewChildTableInfo(&yymsp[-8].minor.yy0, yymsp[-5].minor.yy429, yymsp[-1].minor.yy429, &yymsp[-11].minor.yy0, &yymsp[-12].minor.yy0);
2826
}
2827
  yymsp[-12].minor.yy252 = yylhsminor.yy252;
2828
        break;
D
dapan1121 已提交
2829
      case 139: /* tagNamelist ::= tagNamelist COMMA ids */
2830 2831
{taosArrayPush(yymsp[-2].minor.yy429, &yymsp[0].minor.yy0); yylhsminor.yy429 = yymsp[-2].minor.yy429;  }
  yymsp[-2].minor.yy429 = yylhsminor.yy429;
2832
        break;
D
dapan1121 已提交
2833
      case 140: /* tagNamelist ::= ids */
2834 2835
{yylhsminor.yy429 = taosArrayInit(4, sizeof(SStrToken)); taosArrayPush(yylhsminor.yy429, &yymsp[0].minor.yy0);}
  yymsp[0].minor.yy429 = yylhsminor.yy429;
2836
        break;
D
dapan1121 已提交
2837
      case 141: /* create_table_args ::= ifnotexists ids cpxName AS select */
H
hzcheng 已提交
2838
{
2839 2840
  yylhsminor.yy194 = tSetCreateTableInfo(NULL, NULL, yymsp[0].minor.yy254, TSQL_CREATE_STREAM);
  setSqlInfo(pInfo, yylhsminor.yy194, NULL, TSDB_SQL_CREATE_TABLE);
2841

B
Bomin Zhang 已提交
2842 2843
  yymsp[-3].minor.yy0.n += yymsp[-2].minor.yy0.n;
  setCreatedTableName(pInfo, &yymsp[-3].minor.yy0, &yymsp[-4].minor.yy0);
H
hzcheng 已提交
2844
}
2845
  yymsp[-4].minor.yy194 = yylhsminor.yy194;
H
Haojun Liao 已提交
2846
        break;
D
dapan1121 已提交
2847
      case 142: /* columnlist ::= columnlist COMMA column */
2848 2849
{taosArrayPush(yymsp[-2].minor.yy429, &yymsp[0].minor.yy451); yylhsminor.yy429 = yymsp[-2].minor.yy429;  }
  yymsp[-2].minor.yy429 = yylhsminor.yy429;
H
Haojun Liao 已提交
2850
        break;
D
dapan1121 已提交
2851
      case 143: /* columnlist ::= column */
2852 2853
{yylhsminor.yy429 = taosArrayInit(4, sizeof(TAOS_FIELD)); taosArrayPush(yylhsminor.yy429, &yymsp[0].minor.yy451);}
  yymsp[0].minor.yy429 = yylhsminor.yy429;
H
Haojun Liao 已提交
2854
        break;
D
dapan1121 已提交
2855
      case 144: /* column ::= ids typename */
2856
{
2857
  tSetColumnInfo(&yylhsminor.yy451, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy451);
2858
}
2859
  yymsp[-1].minor.yy451 = yylhsminor.yy451;
2860
        break;
D
dapan1121 已提交
2861
      case 145: /* tagitemlist ::= tagitemlist COMMA tagitem */
2862 2863
{ yylhsminor.yy429 = tVariantListAppend(yymsp[-2].minor.yy429, &yymsp[0].minor.yy218, -1);    }
  yymsp[-2].minor.yy429 = yylhsminor.yy429;
2864
        break;
D
dapan1121 已提交
2865
      case 146: /* tagitemlist ::= tagitem */
2866 2867
{ yylhsminor.yy429 = tVariantListAppend(NULL, &yymsp[0].minor.yy218, -1); }
  yymsp[0].minor.yy429 = yylhsminor.yy429;
2868
        break;
D
dapan1121 已提交
2869 2870 2871 2872
      case 147: /* tagitem ::= INTEGER */
      case 148: /* tagitem ::= FLOAT */ yytestcase(yyruleno==148);
      case 149: /* tagitem ::= STRING */ yytestcase(yyruleno==149);
      case 150: /* tagitem ::= BOOL */ yytestcase(yyruleno==150);
2873 2874
{ toTSDBType(yymsp[0].minor.yy0.type); tVariantCreate(&yylhsminor.yy218, &yymsp[0].minor.yy0); }
  yymsp[0].minor.yy218 = yylhsminor.yy218;
2875
        break;
D
dapan1121 已提交
2876
      case 151: /* tagitem ::= NULL */
2877 2878
{ yymsp[0].minor.yy0.type = 0; tVariantCreate(&yylhsminor.yy218, &yymsp[0].minor.yy0); }
  yymsp[0].minor.yy218 = yylhsminor.yy218;
2879
        break;
D
dapan1121 已提交
2880 2881 2882 2883
      case 152: /* tagitem ::= MINUS INTEGER */
      case 153: /* tagitem ::= MINUS FLOAT */ yytestcase(yyruleno==153);
      case 154: /* tagitem ::= PLUS INTEGER */ yytestcase(yyruleno==154);
      case 155: /* tagitem ::= PLUS FLOAT */ yytestcase(yyruleno==155);
H
hzcheng 已提交
2884 2885 2886 2887
{
    yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
    yymsp[-1].minor.yy0.type = yymsp[0].minor.yy0.type;
    toTSDBType(yymsp[-1].minor.yy0.type);
2888
    tVariantCreate(&yylhsminor.yy218, &yymsp[-1].minor.yy0);
2889
}
2890
  yymsp[-1].minor.yy218 = yylhsminor.yy218;
2891
        break;
2892
      case 156: /* select ::= SELECT selcollist from where_opt interval_opt session_option fill_opt sliding_opt groupby_opt orderby_opt having_opt slimit_opt limit_opt */
2893
{
2894
  yylhsminor.yy254 = tSetQuerySqlNode(&yymsp[-12].minor.yy0, yymsp[-11].minor.yy429, yymsp[-10].minor.yy70, yymsp[-9].minor.yy170, yymsp[-4].minor.yy429, yymsp[-3].minor.yy429, &yymsp[-8].minor.yy220, &yymsp[-7].minor.yy87, &yymsp[-5].minor.yy0, yymsp[-6].minor.yy429, &yymsp[0].minor.yy18, &yymsp[-1].minor.yy18, yymsp[-2].minor.yy170);
H
hzcheng 已提交
2895
}
2896
  yymsp[-12].minor.yy254 = yylhsminor.yy254;
H
hzcheng 已提交
2897
        break;
H
Haojun Liao 已提交
2898
      case 157: /* select ::= LP select RP */
2899
{yymsp[-2].minor.yy254 = yymsp[-1].minor.yy254;}
H
hzcheng 已提交
2900
        break;
H
Haojun Liao 已提交
2901
      case 158: /* union ::= select */
2902 2903
{ yylhsminor.yy141 = setSubclause(NULL, yymsp[0].minor.yy254); }
  yymsp[0].minor.yy141 = yylhsminor.yy141;
2904
        break;
D
dapan1121 已提交
2905
      case 159: /* union ::= union UNION ALL select */
2906 2907
{ yylhsminor.yy141 = appendSelectClause(yymsp[-3].minor.yy141, yymsp[0].minor.yy254); }
  yymsp[-3].minor.yy141 = yylhsminor.yy141;
2908
        break;
H
Haojun Liao 已提交
2909
      case 160: /* cmd ::= union */
2910
{ setSqlInfo(pInfo, yymsp[0].minor.yy141, NULL, TSDB_SQL_SELECT); }
H
hjxilinx 已提交
2911
        break;
H
Haojun Liao 已提交
2912
      case 161: /* select ::= SELECT selcollist */
2913
{
D
dapan1121 已提交
2914
  yylhsminor.yy254 = tSetQuerySqlNode(&yymsp[-1].minor.yy0, yymsp[0].minor.yy429, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
2915
}
2916
  yymsp[-1].minor.yy254 = yylhsminor.yy254;
H
hzcheng 已提交
2917
        break;
H
Haojun Liao 已提交
2918
      case 162: /* sclp ::= selcollist COMMA */
2919 2920
{yylhsminor.yy429 = yymsp[-1].minor.yy429;}
  yymsp[-1].minor.yy429 = yylhsminor.yy429;
H
hzcheng 已提交
2921
        break;
H
Haojun Liao 已提交
2922
      case 163: /* sclp ::= */
D
dapan1121 已提交
2923
      case 187: /* orderby_opt ::= */ yytestcase(yyruleno==187);
2924
{yymsp[1].minor.yy429 = 0;}
2925
        break;
H
Haojun Liao 已提交
2926
      case 164: /* selcollist ::= sclp distinct expr as */
H
hzcheng 已提交
2927
{
2928
   yylhsminor.yy429 = tSqlExprListAppend(yymsp[-3].minor.yy429, yymsp[-1].minor.yy170,  yymsp[-2].minor.yy0.n? &yymsp[-2].minor.yy0:0, yymsp[0].minor.yy0.n?&yymsp[0].minor.yy0:0);
H
hzcheng 已提交
2929
}
2930
  yymsp[-3].minor.yy429 = yylhsminor.yy429;
H
hzcheng 已提交
2931
        break;
H
Haojun Liao 已提交
2932
      case 165: /* selcollist ::= sclp STAR */
H
hzcheng 已提交
2933
{
H
Haojun Liao 已提交
2934
   tSqlExpr *pNode = tSqlExprCreateIdValue(NULL, TK_ALL);
2935
   yylhsminor.yy429 = tSqlExprListAppend(yymsp[-1].minor.yy429, pNode, 0, 0);
H
hzcheng 已提交
2936
}
2937
  yymsp[-1].minor.yy429 = yylhsminor.yy429;
2938
        break;
H
Haojun Liao 已提交
2939
      case 166: /* as ::= AS ids */
2940
{ yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;    }
H
hjxilinx 已提交
2941
        break;
H
Haojun Liao 已提交
2942
      case 167: /* as ::= ids */
2943 2944
{ yylhsminor.yy0 = yymsp[0].minor.yy0;    }
  yymsp[0].minor.yy0 = yylhsminor.yy0;
H
hzcheng 已提交
2945
        break;
H
Haojun Liao 已提交
2946
      case 168: /* as ::= */
2947
{ yymsp[1].minor.yy0.n = 0;  }
H
hzcheng 已提交
2948
        break;
H
Haojun Liao 已提交
2949
      case 169: /* distinct ::= DISTINCT */
H
Haojun Liao 已提交
2950 2951 2952
{ yylhsminor.yy0 = yymsp[0].minor.yy0;  }
  yymsp[0].minor.yy0 = yylhsminor.yy0;
        break;
H
Haojun Liao 已提交
2953
      case 171: /* from ::= FROM tablelist */
2954
{yymsp[-1].minor.yy70 = yymsp[0].minor.yy429;}
H
hzcheng 已提交
2955
        break;
D
dapan1121 已提交
2956
      case 172: /* tablelist ::= ids cpxName */
H
Haojun Liao 已提交
2957 2958 2959
{
  toTSDBType(yymsp[-1].minor.yy0.type);
  yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
2960
  yylhsminor.yy429 = setTableNameList(NULL, &yymsp[-1].minor.yy0, NULL);
H
Haojun Liao 已提交
2961
}
2962
  yymsp[-1].minor.yy429 = yylhsminor.yy429;
S
slguan 已提交
2963
        break;
D
dapan1121 已提交
2964
      case 173: /* tablelist ::= ids cpxName ids */
H
Haojun Liao 已提交
2965
{
2966 2967 2968
  toTSDBType(yymsp[-2].minor.yy0.type);
  toTSDBType(yymsp[0].minor.yy0.type);
  yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
2969
  yylhsminor.yy429 = setTableNameList(NULL, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
H
Haojun Liao 已提交
2970
}
2971
  yymsp[-2].minor.yy429 = yylhsminor.yy429;
H
Haojun Liao 已提交
2972
        break;
D
dapan1121 已提交
2973
      case 174: /* tablelist ::= tablelist COMMA ids cpxName */
H
Haojun Liao 已提交
2974 2975 2976
{
  toTSDBType(yymsp[-1].minor.yy0.type);
  yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;
2977
  yylhsminor.yy429 = setTableNameList(yymsp[-3].minor.yy429, &yymsp[-1].minor.yy0, NULL);
H
Haojun Liao 已提交
2978
}
2979
  yymsp[-3].minor.yy429 = yylhsminor.yy429;
S
slguan 已提交
2980
        break;
D
dapan1121 已提交
2981
      case 175: /* tablelist ::= tablelist COMMA ids cpxName ids */
H
Haojun Liao 已提交
2982
{
2983 2984 2985
  toTSDBType(yymsp[-2].minor.yy0.type);
  toTSDBType(yymsp[0].minor.yy0.type);
  yymsp[-2].minor.yy0.n += yymsp[-1].minor.yy0.n;
H
Haojun Liao 已提交
2986

2987
  yylhsminor.yy429 = setTableNameList(yymsp[-4].minor.yy429, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
H
Haojun Liao 已提交
2988
}
2989
  yymsp[-4].minor.yy429 = yylhsminor.yy429;
H
Haojun Liao 已提交
2990
        break;
D
dapan1121 已提交
2991
      case 176: /* tmvar ::= VARIABLE */
2992 2993
{yylhsminor.yy0 = yymsp[0].minor.yy0;}
  yymsp[0].minor.yy0 = yylhsminor.yy0;
H
hzcheng 已提交
2994
        break;
D
dapan1121 已提交
2995
      case 177: /* interval_opt ::= INTERVAL LP tmvar RP */
2996
{yymsp[-3].minor.yy220.interval = yymsp[-1].minor.yy0; yymsp[-3].minor.yy220.offset.n = 0;}
H
hzcheng 已提交
2997
        break;
D
dapan1121 已提交
2998
      case 178: /* interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */
2999
{yymsp[-5].minor.yy220.interval = yymsp[-3].minor.yy0; yymsp[-5].minor.yy220.offset = yymsp[-1].minor.yy0;}
H
Haojun Liao 已提交
3000
        break;
D
dapan1121 已提交
3001
      case 179: /* interval_opt ::= */
3002
{memset(&yymsp[1].minor.yy220, 0, sizeof(yymsp[1].minor.yy220));}
H
hjxilinx 已提交
3003
        break;
D
dapan1121 已提交
3004
      case 180: /* session_option ::= */
3005
{yymsp[1].minor.yy87.col.n = 0; yymsp[1].minor.yy87.gap.n = 0;}
3006
        break;
D
dapan1121 已提交
3007
      case 181: /* session_option ::= SESSION LP ids cpxName COMMA tmvar RP */
3008 3009
{
   yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
3010 3011
   yymsp[-6].minor.yy87.col = yymsp[-4].minor.yy0;
   yymsp[-6].minor.yy87.gap = yymsp[-1].minor.yy0;
3012 3013
}
        break;
D
dapan1121 已提交
3014
      case 182: /* fill_opt ::= */
3015
{ yymsp[1].minor.yy429 = 0;     }
3016
        break;
D
dapan1121 已提交
3017
      case 183: /* fill_opt ::= FILL LP ID COMMA tagitemlist RP */
H
hzcheng 已提交
3018 3019 3020 3021 3022
{
    tVariant A = {0};
    toTSDBType(yymsp[-3].minor.yy0.type);
    tVariantCreate(&A, &yymsp[-3].minor.yy0);

3023 3024
    tVariantListInsert(yymsp[-1].minor.yy429, &A, -1, 0);
    yymsp[-5].minor.yy429 = yymsp[-1].minor.yy429;
H
hzcheng 已提交
3025 3026
}
        break;
D
dapan1121 已提交
3027
      case 184: /* fill_opt ::= FILL LP ID RP */
H
hzcheng 已提交
3028 3029
{
    toTSDBType(yymsp[-1].minor.yy0.type);
3030
    yymsp[-3].minor.yy429 = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1);
H
hzcheng 已提交
3031 3032
}
        break;
D
dapan1121 已提交
3033
      case 185: /* sliding_opt ::= SLIDING LP tmvar RP */
H
Haojun Liao 已提交
3034 3035
{yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0;     }
        break;
D
dapan1121 已提交
3036
      case 186: /* sliding_opt ::= */
H
Haojun Liao 已提交
3037 3038
{yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = NULL; yymsp[1].minor.yy0.type = 0;   }
        break;
D
dapan1121 已提交
3039
      case 188: /* orderby_opt ::= ORDER BY sortlist */
3040
{yymsp[-2].minor.yy429 = yymsp[0].minor.yy429;}
H
hjxilinx 已提交
3041
        break;
D
dapan1121 已提交
3042
      case 189: /* sortlist ::= sortlist COMMA item sortorder */
H
hzcheng 已提交
3043
{
3044
    yylhsminor.yy429 = tVariantListAppend(yymsp[-3].minor.yy429, &yymsp[-1].minor.yy218, yymsp[0].minor.yy116);
H
hzcheng 已提交
3045
}
3046
  yymsp[-3].minor.yy429 = yylhsminor.yy429;
H
hzcheng 已提交
3047
        break;
D
dapan1121 已提交
3048
      case 190: /* sortlist ::= item sortorder */
H
hzcheng 已提交
3049
{
3050
  yylhsminor.yy429 = tVariantListAppend(NULL, &yymsp[-1].minor.yy218, yymsp[0].minor.yy116);
H
hzcheng 已提交
3051
}
3052
  yymsp[-1].minor.yy429 = yylhsminor.yy429;
H
hzcheng 已提交
3053
        break;
D
dapan1121 已提交
3054
      case 191: /* item ::= ids cpxName */
H
hzcheng 已提交
3055
{
3056 3057 3058
  toTSDBType(yymsp[-1].minor.yy0.type);
  yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n;

3059
  tVariantCreate(&yylhsminor.yy218, &yymsp[-1].minor.yy0);
H
hzcheng 已提交
3060
}
3061
  yymsp[-1].minor.yy218 = yylhsminor.yy218;
3062
        break;
D
dapan1121 已提交
3063
      case 192: /* sortorder ::= ASC */
3064
{ yymsp[0].minor.yy116 = TSDB_ORDER_ASC; }
3065
        break;
D
dapan1121 已提交
3066
      case 193: /* sortorder ::= DESC */
3067
{ yymsp[0].minor.yy116 = TSDB_ORDER_DESC;}
H
hzcheng 已提交
3068
        break;
D
dapan1121 已提交
3069
      case 194: /* sortorder ::= */
3070
{ yymsp[1].minor.yy116 = TSDB_ORDER_ASC; }
H
hzcheng 已提交
3071
        break;
D
dapan1121 已提交
3072
      case 195: /* groupby_opt ::= */
3073
{ yymsp[1].minor.yy429 = 0;}
H
hzcheng 已提交
3074
        break;
D
dapan1121 已提交
3075
      case 196: /* groupby_opt ::= GROUP BY grouplist */
3076
{ yymsp[-2].minor.yy429 = yymsp[0].minor.yy429;}
H
hzcheng 已提交
3077
        break;
D
dapan1121 已提交
3078
      case 197: /* grouplist ::= grouplist COMMA item */
H
hzcheng 已提交
3079
{
3080
  yylhsminor.yy429 = tVariantListAppend(yymsp[-2].minor.yy429, &yymsp[0].minor.yy218, -1);
H
hzcheng 已提交
3081
}
3082
  yymsp[-2].minor.yy429 = yylhsminor.yy429;
H
hzcheng 已提交
3083
        break;
D
dapan1121 已提交
3084
      case 198: /* grouplist ::= item */
H
hzcheng 已提交
3085
{
3086
  yylhsminor.yy429 = tVariantListAppend(NULL, &yymsp[0].minor.yy218, -1);
H
hzcheng 已提交
3087
}
3088
  yymsp[0].minor.yy429 = yylhsminor.yy429;
H
hzcheng 已提交
3089
        break;
D
dapan1121 已提交
3090 3091 3092
      case 199: /* having_opt ::= */
      case 209: /* where_opt ::= */ yytestcase(yyruleno==209);
      case 251: /* expritem ::= */ yytestcase(yyruleno==251);
3093
{yymsp[1].minor.yy170 = 0;}
H
hzcheng 已提交
3094
        break;
D
dapan1121 已提交
3095 3096
      case 200: /* having_opt ::= HAVING expr */
      case 210: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==210);
3097
{yymsp[-1].minor.yy170 = yymsp[0].minor.yy170;}
H
hzcheng 已提交
3098
        break;
D
dapan1121 已提交
3099 3100
      case 201: /* limit_opt ::= */
      case 205: /* slimit_opt ::= */ yytestcase(yyruleno==205);
3101
{yymsp[1].minor.yy18.limit = -1; yymsp[1].minor.yy18.offset = 0;}
H
hzcheng 已提交
3102
        break;
D
dapan1121 已提交
3103 3104
      case 202: /* limit_opt ::= LIMIT signed */
      case 206: /* slimit_opt ::= SLIMIT signed */ yytestcase(yyruleno==206);
3105
{yymsp[-1].minor.yy18.limit = yymsp[0].minor.yy481;  yymsp[-1].minor.yy18.offset = 0;}
H
hzcheng 已提交
3106
        break;
D
dapan1121 已提交
3107
      case 203: /* limit_opt ::= LIMIT signed OFFSET signed */
3108
{ yymsp[-3].minor.yy18.limit = yymsp[-2].minor.yy481;  yymsp[-3].minor.yy18.offset = yymsp[0].minor.yy481;}
H
hzcheng 已提交
3109
        break;
D
dapan1121 已提交
3110
      case 204: /* limit_opt ::= LIMIT signed COMMA signed */
3111
{ yymsp[-3].minor.yy18.limit = yymsp[0].minor.yy481;  yymsp[-3].minor.yy18.offset = yymsp[-2].minor.yy481;}
H
hzcheng 已提交
3112
        break;
D
dapan1121 已提交
3113
      case 207: /* slimit_opt ::= SLIMIT signed SOFFSET signed */
3114
{yymsp[-3].minor.yy18.limit = yymsp[-2].minor.yy481;  yymsp[-3].minor.yy18.offset = yymsp[0].minor.yy481;}
H
Haojun Liao 已提交
3115
        break;
D
dapan1121 已提交
3116
      case 208: /* slimit_opt ::= SLIMIT signed COMMA signed */
3117
{yymsp[-3].minor.yy18.limit = yymsp[0].minor.yy481;  yymsp[-3].minor.yy18.offset = yymsp[-2].minor.yy481;}
H
Haojun Liao 已提交
3118
        break;
D
dapan1121 已提交
3119
      case 211: /* expr ::= LP expr RP */
3120 3121
{yylhsminor.yy170 = yymsp[-1].minor.yy170; yylhsminor.yy170->token.z = yymsp[-2].minor.yy0.z; yylhsminor.yy170->token.n = (yymsp[0].minor.yy0.z - yymsp[-2].minor.yy0.z + 1);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
S
slguan 已提交
3122
        break;
D
dapan1121 已提交
3123
      case 212: /* expr ::= ID */
3124 3125
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_ID);}
  yymsp[0].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3126
        break;
D
dapan1121 已提交
3127
      case 213: /* expr ::= ID DOT ID */
3128 3129
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ID);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3130
        break;
D
dapan1121 已提交
3131
      case 214: /* expr ::= ID DOT STAR */
3132 3133
{ yymsp[-2].minor.yy0.n += (1+yymsp[0].minor.yy0.n); yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[-2].minor.yy0, TK_ALL);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3134
        break;
D
dapan1121 已提交
3135
      case 215: /* expr ::= INTEGER */
3136 3137
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_INTEGER);}
  yymsp[0].minor.yy170 = yylhsminor.yy170;
3138
        break;
D
dapan1121 已提交
3139 3140
      case 216: /* expr ::= MINUS INTEGER */
      case 217: /* expr ::= PLUS INTEGER */ yytestcase(yyruleno==217);
3141 3142
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_INTEGER; yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_INTEGER);}
  yymsp[-1].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3143
        break;
D
dapan1121 已提交
3144
      case 218: /* expr ::= FLOAT */
3145 3146
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_FLOAT);}
  yymsp[0].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3147
        break;
D
dapan1121 已提交
3148 3149
      case 219: /* expr ::= MINUS FLOAT */
      case 220: /* expr ::= PLUS FLOAT */ yytestcase(yyruleno==220);
3150 3151
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_FLOAT; yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_FLOAT);}
  yymsp[-1].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3152
        break;
D
dapan1121 已提交
3153
      case 221: /* expr ::= STRING */
3154 3155
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_STRING);}
  yymsp[0].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3156
        break;
D
dapan1121 已提交
3157
      case 222: /* expr ::= NOW */
3158 3159
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NOW); }
  yymsp[0].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3160
        break;
D
dapan1121 已提交
3161
      case 223: /* expr ::= VARIABLE */
3162 3163
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_VARIABLE);}
  yymsp[0].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3164
        break;
D
dapan1121 已提交
3165 3166
      case 224: /* expr ::= PLUS VARIABLE */
      case 225: /* expr ::= MINUS VARIABLE */ yytestcase(yyruleno==225);
D
dapan1121 已提交
3167 3168 3169
{ yymsp[-1].minor.yy0.n += yymsp[0].minor.yy0.n; yymsp[-1].minor.yy0.type = TK_VARIABLE; yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[-1].minor.yy0, TK_VARIABLE);}
  yymsp[-1].minor.yy170 = yylhsminor.yy170;
        break;
D
dapan1121 已提交
3170
      case 226: /* expr ::= BOOL */
3171 3172
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_BOOL);}
  yymsp[0].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3173
        break;
D
dapan1121 已提交
3174
      case 227: /* expr ::= NULL */
3175 3176
{ yylhsminor.yy170 = tSqlExprCreateIdValue(&yymsp[0].minor.yy0, TK_NULL);}
  yymsp[0].minor.yy170 = yylhsminor.yy170;
3177
        break;
D
dapan1121 已提交
3178
      case 228: /* expr ::= ID LP exprlist RP */
3179 3180
{ yylhsminor.yy170 = tSqlExprCreateFunction(yymsp[-1].minor.yy429, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
  yymsp[-3].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3181
        break;
D
dapan1121 已提交
3182
      case 229: /* expr ::= ID LP STAR RP */
3183 3184
{ yylhsminor.yy170 = tSqlExprCreateFunction(NULL, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, yymsp[-3].minor.yy0.type); }
  yymsp[-3].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3185
        break;
D
dapan1121 已提交
3186
      case 230: /* expr ::= expr IS NULL */
3187 3188
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, NULL, TK_ISNULL);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3189
        break;
D
dapan1121 已提交
3190
      case 231: /* expr ::= expr IS NOT NULL */
3191 3192
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-3].minor.yy170, NULL, TK_NOTNULL);}
  yymsp[-3].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3193
        break;
D
dapan1121 已提交
3194
      case 232: /* expr ::= expr LT expr */
3195 3196
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_LT);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3197
        break;
D
dapan1121 已提交
3198
      case 233: /* expr ::= expr GT expr */
3199 3200
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_GT);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3201
        break;
D
dapan1121 已提交
3202
      case 234: /* expr ::= expr LE expr */
3203 3204
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_LE);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3205
        break;
D
dapan1121 已提交
3206
      case 235: /* expr ::= expr GE expr */
3207 3208
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_GE);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3209
        break;
D
dapan1121 已提交
3210
      case 236: /* expr ::= expr NE expr */
3211 3212
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_NE);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3213
        break;
D
dapan1121 已提交
3214
      case 237: /* expr ::= expr EQ expr */
3215 3216
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_EQ);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3217
        break;
D
dapan1121 已提交
3218
      case 238: /* expr ::= expr BETWEEN expr AND expr */
3219 3220
{ tSqlExpr* X2 = tSqlExprClone(yymsp[-4].minor.yy170); yylhsminor.yy170 = tSqlExprCreate(tSqlExprCreate(yymsp[-4].minor.yy170, yymsp[-2].minor.yy170, TK_GE), tSqlExprCreate(X2, yymsp[0].minor.yy170, TK_LE), TK_AND);}
  yymsp[-4].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3221
        break;
D
dapan1121 已提交
3222
      case 239: /* expr ::= expr AND expr */
3223 3224
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_AND);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
D
dapan1121 已提交
3225
        break;
D
dapan1121 已提交
3226
      case 240: /* expr ::= expr OR expr */
3227 3228
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_OR); }
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
Haojun Liao 已提交
3229
        break;
D
dapan1121 已提交
3230
      case 241: /* expr ::= expr PLUS expr */
3231 3232
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_PLUS);  }
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
Haojun Liao 已提交
3233
        break;
D
dapan1121 已提交
3234
      case 242: /* expr ::= expr MINUS expr */
3235 3236
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_MINUS); }
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3237
        break;
D
dapan1121 已提交
3238
      case 243: /* expr ::= expr STAR expr */
3239 3240
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_STAR);  }
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3241
        break;
D
dapan1121 已提交
3242
      case 244: /* expr ::= expr SLASH expr */
3243 3244
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_DIVIDE);}
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3245
        break;
D
dapan1121 已提交
3246
      case 245: /* expr ::= expr REM expr */
3247 3248
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_REM);   }
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3249
        break;
D
dapan1121 已提交
3250
      case 246: /* expr ::= expr LIKE expr */
3251 3252
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-2].minor.yy170, yymsp[0].minor.yy170, TK_LIKE);  }
  yymsp[-2].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3253
        break;
D
dapan1121 已提交
3254
      case 247: /* expr ::= expr IN LP exprlist RP */
3255 3256
{yylhsminor.yy170 = tSqlExprCreate(yymsp[-4].minor.yy170, (tSqlExpr*)yymsp[-1].minor.yy429, TK_IN); }
  yymsp[-4].minor.yy170 = yylhsminor.yy170;
H
hjxilinx 已提交
3257
        break;
D
dapan1121 已提交
3258
      case 248: /* exprlist ::= exprlist COMMA expritem */
3259 3260
{yylhsminor.yy429 = tSqlExprListAppend(yymsp[-2].minor.yy429,yymsp[0].minor.yy170,0, 0);}
  yymsp[-2].minor.yy429 = yylhsminor.yy429;
H
hzcheng 已提交
3261
        break;
D
dapan1121 已提交
3262
      case 249: /* exprlist ::= expritem */
3263 3264
{yylhsminor.yy429 = tSqlExprListAppend(0,yymsp[0].minor.yy170,0, 0);}
  yymsp[0].minor.yy429 = yylhsminor.yy429;
H
hzcheng 已提交
3265
        break;
D
dapan1121 已提交
3266
      case 250: /* expritem ::= expr */
3267 3268
{yylhsminor.yy170 = yymsp[0].minor.yy170;}
  yymsp[0].minor.yy170 = yylhsminor.yy170;
H
hzcheng 已提交
3269
        break;
D
dapan1121 已提交
3270
      case 252: /* cmd ::= RESET QUERY CACHE */
H
Haojun Liao 已提交
3271
{ setDCLSqlElems(pInfo, TSDB_SQL_RESET_CACHE, 0);}
H
hzcheng 已提交
3272
        break;
D
dapan1121 已提交
3273
      case 253: /* cmd ::= SYNCDB ids REPLICA */
3274
{ setDCLSqlElems(pInfo, TSDB_SQL_SYNC_DB_REPLICA, 1, &yymsp[-1].minor.yy0);}
H
hzcheng 已提交
3275
        break;
D
dapan1121 已提交
3276
      case 254: /* cmd ::= ALTER TABLE ids cpxName ADD COLUMN columnlist */
H
hzcheng 已提交
3277 3278
{
    yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
3279
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy429, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, -1);
H
Haojun Liao 已提交
3280
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
H
hzcheng 已提交
3281 3282
}
        break;
D
dapan1121 已提交
3283
      case 255: /* cmd ::= ALTER TABLE ids cpxName DROP COLUMN ids */
H
hzcheng 已提交
3284 3285 3286 3287
{
    yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;

    toTSDBType(yymsp[0].minor.yy0.type);
H
Haojun Liao 已提交
3288
    SArray* K = tVariantListAppendToken(NULL, &yymsp[0].minor.yy0, -1);
H
hzcheng 已提交
3289

H
Haojun Liao 已提交
3290
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, K, TSDB_ALTER_TABLE_DROP_COLUMN, -1);
H
Haojun Liao 已提交
3291
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
H
hzcheng 已提交
3292 3293
}
        break;
D
dapan1121 已提交
3294
      case 256: /* cmd ::= ALTER TABLE ids cpxName ADD TAG columnlist */
H
hzcheng 已提交
3295 3296
{
    yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
3297
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy429, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, -1);
H
Haojun Liao 已提交
3298
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
H
hzcheng 已提交
3299 3300
}
        break;
D
dapan1121 已提交
3301
      case 257: /* cmd ::= ALTER TABLE ids cpxName DROP TAG ids */
H
hzcheng 已提交
3302 3303 3304 3305
{
    yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;

    toTSDBType(yymsp[0].minor.yy0.type);
H
Haojun Liao 已提交
3306
    SArray* A = tVariantListAppendToken(NULL, &yymsp[0].minor.yy0, -1);
H
hzcheng 已提交
3307

H
Haojun Liao 已提交
3308
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, A, TSDB_ALTER_TABLE_DROP_TAG_COLUMN, -1);
H
Haojun Liao 已提交
3309
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
H
hzcheng 已提交
3310 3311
}
        break;
D
dapan1121 已提交
3312
      case 258: /* cmd ::= ALTER TABLE ids cpxName CHANGE TAG ids ids */
H
hzcheng 已提交
3313 3314 3315 3316
{
    yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;

    toTSDBType(yymsp[-1].minor.yy0.type);
H
Haojun Liao 已提交
3317
    SArray* A = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1);
H
hzcheng 已提交
3318 3319

    toTSDBType(yymsp[0].minor.yy0.type);
3320
    A = tVariantListAppendToken(A, &yymsp[0].minor.yy0, -1);
H
hzcheng 已提交
3321

H
Haojun Liao 已提交
3322
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-5].minor.yy0, NULL, A, TSDB_ALTER_TABLE_CHANGE_TAG_COLUMN, -1);
H
Haojun Liao 已提交
3323
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
H
hzcheng 已提交
3324 3325
}
        break;
D
dapan1121 已提交
3326
      case 259: /* cmd ::= ALTER TABLE ids cpxName SET TAG ids EQ tagitem */
H
hzcheng 已提交
3327
{
3328
    yymsp[-6].minor.yy0.n += yymsp[-5].minor.yy0.n;
H
hzcheng 已提交
3329 3330

    toTSDBType(yymsp[-2].minor.yy0.type);
H
Haojun Liao 已提交
3331
    SArray* A = tVariantListAppendToken(NULL, &yymsp[-2].minor.yy0, -1);
3332
    A = tVariantListAppend(A, &yymsp[0].minor.yy218, -1);
H
hzcheng 已提交
3333

H
Haojun Liao 已提交
3334
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-6].minor.yy0, NULL, A, TSDB_ALTER_TABLE_UPDATE_TAG_VAL, -1);
D
dapan1121 已提交
3335 3336 3337
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
        break;
D
dapan1121 已提交
3338
      case 260: /* cmd ::= ALTER STABLE ids cpxName ADD COLUMN columnlist */
D
dapan1121 已提交
3339 3340
{
    yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
3341
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy429, NULL, TSDB_ALTER_TABLE_ADD_COLUMN, TSDB_SUPER_TABLE);
D
dapan1121 已提交
3342 3343 3344
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
        break;
D
dapan1121 已提交
3345
      case 261: /* cmd ::= ALTER STABLE ids cpxName DROP COLUMN ids */
D
dapan1121 已提交
3346 3347 3348 3349 3350 3351
{
    yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;

    toTSDBType(yymsp[0].minor.yy0.type);
    SArray* K = tVariantListAppendToken(NULL, &yymsp[0].minor.yy0, -1);

H
Haojun Liao 已提交
3352
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, K, TSDB_ALTER_TABLE_DROP_COLUMN, TSDB_SUPER_TABLE);
D
dapan1121 已提交
3353 3354 3355
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
        break;
D
dapan1121 已提交
3356
      case 262: /* cmd ::= ALTER STABLE ids cpxName ADD TAG columnlist */
D
dapan1121 已提交
3357 3358
{
    yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;
3359
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, yymsp[0].minor.yy429, NULL, TSDB_ALTER_TABLE_ADD_TAG_COLUMN, TSDB_SUPER_TABLE);
D
dapan1121 已提交
3360 3361 3362
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
        break;
D
dapan1121 已提交
3363
      case 263: /* cmd ::= ALTER STABLE ids cpxName DROP TAG ids */
D
dapan1121 已提交
3364 3365 3366 3367 3368 3369
{
    yymsp[-4].minor.yy0.n += yymsp[-3].minor.yy0.n;

    toTSDBType(yymsp[0].minor.yy0.type);
    SArray* A = tVariantListAppendToken(NULL, &yymsp[0].minor.yy0, -1);

H
Haojun Liao 已提交
3370
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-4].minor.yy0, NULL, A, TSDB_ALTER_TABLE_DROP_TAG_COLUMN, TSDB_SUPER_TABLE);
D
dapan1121 已提交
3371 3372 3373
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
}
        break;
D
dapan1121 已提交
3374
      case 264: /* cmd ::= ALTER STABLE ids cpxName CHANGE TAG ids ids */
D
dapan1121 已提交
3375 3376 3377 3378 3379 3380 3381 3382
{
    yymsp[-5].minor.yy0.n += yymsp[-4].minor.yy0.n;

    toTSDBType(yymsp[-1].minor.yy0.type);
    SArray* A = tVariantListAppendToken(NULL, &yymsp[-1].minor.yy0, -1);

    toTSDBType(yymsp[0].minor.yy0.type);
    A = tVariantListAppendToken(A, &yymsp[0].minor.yy0, -1);
H
hzcheng 已提交
3383

H
Haojun Liao 已提交
3384
    SAlterTableInfo* pAlterTable = tSetAlterTableInfo(&yymsp[-5].minor.yy0, NULL, A, TSDB_ALTER_TABLE_CHANGE_TAG_COLUMN, TSDB_SUPER_TABLE);
H
Haojun Liao 已提交
3385
    setSqlInfo(pInfo, pAlterTable, NULL, TSDB_SQL_ALTER_TABLE);
H
hzcheng 已提交
3386 3387
}
        break;
D
dapan1121 已提交
3388
      case 265: /* cmd ::= KILL CONNECTION INTEGER */
D
dapan1121 已提交
3389
{setKillSql(pInfo, TSDB_SQL_KILL_CONNECTION, &yymsp[0].minor.yy0);}
H
hzcheng 已提交
3390
        break;
D
dapan1121 已提交
3391
      case 266: /* cmd ::= KILL STREAM INTEGER COLON INTEGER */
D
dapan1121 已提交
3392
{yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_STREAM, &yymsp[-2].minor.yy0);}
H
hzcheng 已提交
3393
        break;
D
dapan1121 已提交
3394
      case 267: /* cmd ::= KILL QUERY INTEGER COLON INTEGER */
D
dapan1121 已提交
3395
{yymsp[-2].minor.yy0.n += (yymsp[-1].minor.yy0.n + yymsp[0].minor.yy0.n); setKillSql(pInfo, TSDB_SQL_KILL_QUERY, &yymsp[-2].minor.yy0);}
H
hzcheng 已提交
3396 3397 3398 3399 3400
        break;
      default:
        break;
/********** End reduce actions ************************************************/
  };
3401 3402 3403
  assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
  yygoto = yyRuleInfoLhs[yyruleno];
  yysize = yyRuleInfoNRhs[yyruleno];
3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417
  yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto);

  /* There are no SHIFTREDUCE actions on nonterminals because the table
  ** generator has simplified them to pure REDUCE actions. */
  assert( !(yyact>YY_MAX_SHIFT && yyact<=YY_MAX_SHIFTREDUCE) );

  /* It is not possible for a REDUCE to be followed by an error */
  assert( yyact!=YY_ERROR_ACTION );

  yymsp += yysize+1;
  yypParser->yytos = yymsp;
  yymsp->stateno = (YYACTIONTYPE)yyact;
  yymsp->major = (YYCODETYPE)yygoto;
  yyTraceShift(yypParser, yyact, "... then shift");
3418
  return yyact;
H
hzcheng 已提交
3419 3420 3421 3422 3423 3424 3425 3426 3427
}

/*
** The following code executes when the parse fails
*/
#ifndef YYNOERRORRECOVERY
static void yy_parse_failed(
  yyParser *yypParser           /* The parser */
){
3428 3429
  ParseARG_FETCH
  ParseCTX_FETCH
H
hzcheng 已提交
3430 3431 3432 3433 3434
#ifndef NDEBUG
  if( yyTraceFILE ){
    fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
  }
#endif
3435
  while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
H
hzcheng 已提交
3436 3437 3438 3439
  /* Here code is inserted which will be executed whenever the
  ** parser fails */
/************ Begin %parse_failure code ***************************************/
/************ End %parse_failure code *****************************************/
3440 3441
  ParseARG_STORE /* Suppress warning about unused %extra_argument variable */
  ParseCTX_STORE
H
hzcheng 已提交
3442 3443 3444 3445 3446 3447 3448 3449 3450
}
#endif /* YYNOERRORRECOVERY */

/*
** The following code executes when a syntax error first occurs.
*/
static void yy_syntax_error(
  yyParser *yypParser,           /* The parser */
  int yymajor,                   /* The major type of the error token */
3451
  ParseTOKENTYPE yyminor         /* The minor type of the error token */
H
hzcheng 已提交
3452
){
3453 3454
  ParseARG_FETCH
  ParseCTX_FETCH
3455
#define TOKEN yyminor
H
hzcheng 已提交
3456 3457
/************ Begin %syntax_error code ****************************************/

3458
  pInfo->valid = false;
H
Haojun Liao 已提交
3459
  int32_t outputBufLen = tListLen(pInfo->msg);
H
hzcheng 已提交
3460 3461 3462 3463 3464 3465 3466 3467 3468
  int32_t len = 0;

  if(TOKEN.z) {
    char msg[] = "syntax error near \"%s\"";
    int32_t sqlLen = strlen(&TOKEN.z[0]);

    if (sqlLen + sizeof(msg)/sizeof(msg[0]) + 1 > outputBufLen) {
        char tmpstr[128] = {0};
        memcpy(tmpstr, &TOKEN.z[0], sizeof(tmpstr)/sizeof(tmpstr[0]) - 1);
H
Haojun Liao 已提交
3469
        len = sprintf(pInfo->msg, msg, tmpstr);
H
hzcheng 已提交
3470
    } else {
H
Haojun Liao 已提交
3471
        len = sprintf(pInfo->msg, msg, &TOKEN.z[0]);
H
hzcheng 已提交
3472 3473 3474
    }

  } else {
H
Haojun Liao 已提交
3475
    len = sprintf(pInfo->msg, "Incomplete SQL statement");
H
hzcheng 已提交
3476 3477 3478 3479
  }

  assert(len <= outputBufLen);
/************ End %syntax_error code ******************************************/
3480 3481
  ParseARG_STORE /* Suppress warning about unused %extra_argument variable */
  ParseCTX_STORE
H
hzcheng 已提交
3482 3483 3484 3485 3486 3487 3488 3489
}

/*
** The following is executed when the parser accepts
*/
static void yy_accept(
  yyParser *yypParser           /* The parser */
){
3490 3491
  ParseARG_FETCH
  ParseCTX_FETCH
H
hzcheng 已提交
3492 3493 3494 3495 3496
#ifndef NDEBUG
  if( yyTraceFILE ){
    fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
  }
#endif
3497 3498 3499 3500
#ifndef YYNOERRORRECOVERY
  yypParser->yyerrcnt = -1;
#endif
  assert( yypParser->yytos==yypParser->yystack );
H
hzcheng 已提交
3501 3502 3503 3504 3505
  /* Here code is inserted which will be executed whenever the
  ** parser accepts */
/*********** Begin %parse_accept code *****************************************/

/*********** End %parse_accept code *******************************************/
3506 3507
  ParseARG_STORE /* Suppress warning about unused %extra_argument variable */
  ParseCTX_STORE
H
hzcheng 已提交
3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535
}

/* The main parser program.
** The first argument is a pointer to a structure obtained from
** "ParseAlloc" which describes the current state of the parser.
** The second argument is the major token number.  The third is
** the minor token.  The fourth optional argument is whatever the
** user wants (and specified in the grammar) and is available for
** use by the action routines.
**
** Inputs:
** <ul>
** <li> A pointer to the parser (an opaque structure.)
** <li> The major token number.
** <li> The minor token number.
** <li> An option argument of a grammar-specified type.
** </ul>
**
** Outputs:
** None.
*/
void Parse(
  void *yyp,                   /* The parser */
  int yymajor,                 /* The major token code number */
  ParseTOKENTYPE yyminor       /* The value for the token */
  ParseARG_PDECL               /* Optional %extra_argument parameter */
){
  YYMINORTYPE yyminorunion;
3536
  YYACTIONTYPE yyact;   /* The parser action. */
H
hzcheng 已提交
3537 3538 3539 3540 3541 3542
#if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
  int yyendofinput;     /* True if we are at the end of input */
#endif
#ifdef YYERRORSYMBOL
  int yyerrorhit = 0;   /* True if yymajor has invoked an error */
#endif
3543 3544 3545
  yyParser *yypParser = (yyParser*)yyp;  /* The parser */
  ParseCTX_FETCH
  ParseARG_STORE
H
hzcheng 已提交
3546

3547
  assert( yypParser->yytos!=0 );
H
hzcheng 已提交
3548 3549 3550 3551
#if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
  yyendofinput = (yymajor==0);
#endif

3552
  yyact = yypParser->yytos->stateno;
H
hzcheng 已提交
3553 3554
#ifndef NDEBUG
  if( yyTraceFILE ){
3555
    if( yyact < YY_MIN_REDUCE ){
3556
      fprintf(yyTraceFILE,"%sInput '%s' in state %d\n",
3557
              yyTracePrompt,yyTokenName[yymajor],yyact);
3558 3559
    }else{
      fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n",
3560
              yyTracePrompt,yyTokenName[yymajor],yyact-YY_MIN_REDUCE);
3561
    }
H
hzcheng 已提交
3562 3563 3564 3565
  }
#endif

  do{
3566 3567
    assert( yyact==yypParser->yytos->stateno );
    yyact = yy_find_shift_action((YYCODETYPE)yymajor,yyact);
3568
    if( yyact >= YY_MIN_REDUCE ){
3569 3570
      yyact = yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor,
                        yyminor ParseCTX_PARAM);
3571
    }else if( yyact <= YY_MAX_SHIFTREDUCE ){
3572
      yy_shift(yypParser,yyact,(YYCODETYPE)yymajor,yyminor);
3573
#ifndef YYNOERRORRECOVERY
H
hzcheng 已提交
3574
      yypParser->yyerrcnt--;
3575
#endif
3576
      break;
3577 3578 3579 3580
    }else if( yyact==YY_ACCEPT_ACTION ){
      yypParser->yytos--;
      yy_accept(yypParser);
      return;
H
hzcheng 已提交
3581 3582
    }else{
      assert( yyact == YY_ERROR_ACTION );
3583
      yyminorunion.yy0 = yyminor;
H
hzcheng 已提交
3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612
#ifdef YYERRORSYMBOL
      int yymx;
#endif
#ifndef NDEBUG
      if( yyTraceFILE ){
        fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
      }
#endif
#ifdef YYERRORSYMBOL
      /* A syntax error has occurred.
      ** The response to an error depends upon whether or not the
      ** grammar defines an error token "ERROR".  
      **
      ** This is what we do if the grammar does define ERROR:
      **
      **  * Call the %syntax_error function.
      **
      **  * Begin popping the stack until we enter a state where
      **    it is legal to shift the error symbol, then shift
      **    the error symbol.
      **
      **  * Set the error count to three.
      **
      **  * Begin accepting and shifting new tokens.  No new error
      **    processing will occur until three tokens have been
      **    shifted successfully.
      **
      */
      if( yypParser->yyerrcnt<0 ){
3613
        yy_syntax_error(yypParser,yymajor,yyminor);
H
hzcheng 已提交
3614
      }
3615
      yymx = yypParser->yytos->major;
H
hzcheng 已提交
3616 3617 3618 3619 3620 3621 3622
      if( yymx==YYERRORSYMBOL || yyerrorhit ){
#ifndef NDEBUG
        if( yyTraceFILE ){
          fprintf(yyTraceFILE,"%sDiscard input token %s\n",
             yyTracePrompt,yyTokenName[yymajor]);
        }
#endif
3623
        yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
H
hzcheng 已提交
3624 3625
        yymajor = YYNOCODE;
      }else{
3626 3627 3628
        while( yypParser->yytos >= yypParser->yystack
            && (yyact = yy_find_reduce_action(
                        yypParser->yytos->stateno,
3629
                        YYERRORSYMBOL)) > YY_MAX_SHIFTREDUCE
H
hzcheng 已提交
3630 3631 3632
        ){
          yy_pop_parser_stack(yypParser);
        }
3633
        if( yypParser->yytos < yypParser->yystack || yymajor==0 ){
H
hzcheng 已提交
3634 3635
          yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
          yy_parse_failed(yypParser);
3636 3637 3638
#ifndef YYNOERRORRECOVERY
          yypParser->yyerrcnt = -1;
#endif
H
hzcheng 已提交
3639 3640
          yymajor = YYNOCODE;
        }else if( yymx!=YYERRORSYMBOL ){
3641
          yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor);
H
hzcheng 已提交
3642 3643 3644 3645
        }
      }
      yypParser->yyerrcnt = 3;
      yyerrorhit = 1;
3646 3647
      if( yymajor==YYNOCODE ) break;
      yyact = yypParser->yytos->stateno;
H
hzcheng 已提交
3648 3649 3650 3651 3652 3653 3654 3655
#elif defined(YYNOERRORRECOVERY)
      /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to
      ** do any kind of error recovery.  Instead, simply invoke the syntax
      ** error routine and continue going as if nothing had happened.
      **
      ** Applications can set this macro (for example inside %include) if
      ** they intend to abandon the parse upon the first syntax error seen.
      */
3656
      yy_syntax_error(yypParser,yymajor, yyminor);
H
hzcheng 已提交
3657
      yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
3658
      break;
H
hzcheng 已提交
3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669
#else  /* YYERRORSYMBOL is not defined */
      /* This is what we do if the grammar does not define ERROR:
      **
      **  * Report an error message, and throw away the input token.
      **
      **  * If the input token is $, then fail the parse.
      **
      ** As before, subsequent error messages are suppressed until
      ** three input tokens have been successfully shifted.
      */
      if( yypParser->yyerrcnt<=0 ){
3670
        yy_syntax_error(yypParser,yymajor, yyminor);
H
hzcheng 已提交
3671 3672 3673 3674 3675
      }
      yypParser->yyerrcnt = 3;
      yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
      if( yyendofinput ){
        yy_parse_failed(yypParser);
3676 3677 3678
#ifndef YYNOERRORRECOVERY
        yypParser->yyerrcnt = -1;
#endif
H
hzcheng 已提交
3679
      }
3680
      break;
H
hzcheng 已提交
3681 3682
#endif
    }
3683
  }while( yypParser->yytos>yypParser->yystack );
H
hzcheng 已提交
3684 3685
#ifndef NDEBUG
  if( yyTraceFILE ){
3686 3687
    yyStackEntry *i;
    char cDiv = '[';
H
hzcheng 已提交
3688
    fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt);
3689 3690 3691 3692
    for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){
      fprintf(yyTraceFILE,"%c%s", cDiv, yyTokenName[i->major]);
      cDiv = ' ';
    }
H
hzcheng 已提交
3693 3694 3695 3696 3697
    fprintf(yyTraceFILE,"]\n");
  }
#endif
  return;
}
3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711

/*
** Return the fallback token corresponding to canonical token iToken, or
** 0 if iToken has no fallback.
*/
int ParseFallback(int iToken){
#ifdef YYFALLBACK
  assert( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) );
  return yyFallback[iToken];
#else
  (void)iToken;
  return 0;
#endif
}