[tarantool-patches] Re: [tarantool-patches] [PATCH v2] sql: remove support of partial indexes

GLEB SKIBA dmarc-noreply at freelists.org
Mon Apr 23 20:30:04 MSK 2018


Please see a new patch.


>Среда, 18 апреля 2018, 23:03 +03:00 от Gleb <dmarc-noreply at freelists.org>:
>
>Remove support partial indexes.
>Add test which checks inaccessibility of partial index syntax.
>Delete use partial index from tests.
>They can be enabled after #2626.
>
>Fixes #2165
>---
>Issue from  https://github.com/tarantool/tarantool/issues/2165 .
>Source from  https://github.com/tarantool/tarantool/tree/gh-2165-remove-support-partial-indexes .
>Changes in v2:
> -return tests which use partial.
> -delete "WHERE" from returned tests.
>
> src/box/sql/parse.c                                | 472 ++++++++++-----------
> src/box/sql/parse.y                                |   4 +-
> test/sql-tap/analyze9.test.lua                     |   2 +-
> test/sql-tap/autoindex4.test.lua                   |   2 +-
> test/sql-tap/fkey1.test.lua                        |   2 +-
> ...gh-2165-remove-support-partial-indexes.test.lua |  17 +
> test/sql-tap/index6.test.lua                       |  12 +-
> test/sql-tap/index7.test.lua                       |  25 +-
> 8 files changed, 277 insertions(+), 259 deletions(-)
> create mode 100644 test/sql-tap/gh-2165-remove-support-partial-indexes.test.lua
>
>diff --git a/src/box/sql/parse.c b/src/box/sql/parse.c
>index 5c0f0ea..f5612d4 100644
>--- a/src/box/sql/parse.c
>+++ b/src/box/sql/parse.c
>@@ -315,16 +315,16 @@ typedef union {
> #define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse
> #define sqlite3ParserARG_STORE yypParser->pParse = pParse
> #define YYFALLBACK 1
>-#define YYNSTATE             409
>+#define YYNSTATE             408
> #define YYNRULE              297
>-#define YY_MAX_SHIFT         408
>-#define YY_MIN_SHIFTREDUCE   604
>-#define YY_MAX_SHIFTREDUCE   900
>-#define YY_MIN_REDUCE        901
>-#define YY_MAX_REDUCE        1197
>-#define YY_ERROR_ACTION      1198
>-#define YY_ACCEPT_ACTION     1199
>-#define YY_NO_ACTION         1200
>+#define YY_MAX_SHIFT         407
>+#define YY_MIN_SHIFTREDUCE   603
>+#define YY_MAX_SHIFTREDUCE   899
>+#define YY_MIN_REDUCE        900
>+#define YY_MAX_REDUCE        1196
>+#define YY_ERROR_ACTION      1197
>+#define YY_ACCEPT_ACTION     1198
>+#define YY_NO_ACTION         1199
> /************* End control #defines *******************************************/
> 
> /* Define the yytestcase() macro to be a no-op if is not already defined
>@@ -396,149 +396,149 @@ typedef union {
> **  yy_default[]       Default action for each state.
> **
> *********** Begin parsing tables **********************************************/
>-#define YY_ACTTAB_COUNT (1402)
>+#define YY_ACTTAB_COUNT (1401)
> static const YYACTIONTYPE yy_action[] = {
>- /*     0 */    91,   92,  285,   82,  771,  771,  783,  786,  775,  775,
>- /*    10 */    89,   89,   90,   90,   90,   90,  307,   88,   88,   88,
>- /*    20 */    88,   87,   87,   86,   86,   86,   85,  307,   90,   90,
>+ /*     0 */    91,   92,  284,   82,  770,  770,  782,  785,  774,  774,
>+ /*    10 */    89,   89,   90,   90,   90,   90,  306,   88,   88,   88,
>+ /*    20 */    88,   87,   87,   86,   86,   86,   85,  306,   90,   90,
>  /*    30 */    90,   90,   83,   88,   88,   88,   88,   87,   87,   86,
>- /*    40 */    86,   86,   85,  307,  208,  201,  885,   90,   90,   90,
>+ /*    40 */    86,   86,   85,  306,  208,  201,  884,   90,   90,   90,
>  /*    50 */    90,  122,   88,   88,   88,   88,   87,   87,   86,   86,
>- /*    60 */    86,   85,  307,   87,   87,   86,   86,   86,   85,  307,
>- /*    70 */   885,   86,   86,   86,   85,  307,   91,   92,  285,   82,
>- /*    80 */   771,  771,  783,  786,  775,  775,   89,   89,   90,   90,
>- /*    90 */    90,   90,  630,   88,   88,   88,   88,   87,   87,   86,
>- /*   100 */    86,   86,   85,  307,   91,   92,  285,   82,  771,  771,
>- /*   110 */   783,  786,  775,  775,   89,   89,   90,   90,   90,   90,
>- /*   120 */   287,   88,   88,   88,   88,   87,   87,   86,   86,   86,
>- /*   130 */    85,  307,  705,   91,   92,  285,   82,  771,  771,  783,
>- /*   140 */   786,  775,  775,   89,   89,   90,   90,   90,   90,   67,
>+ /*    60 */    86,   85,  306,   87,   87,   86,   86,   86,   85,  306,
>+ /*    70 */   884,   86,   86,   86,   85,  306,   91,   92,  284,   82,
>+ /*    80 */   770,  770,  782,  785,  774,  774,   89,   89,   90,   90,
>+ /*    90 */    90,   90,  629,   88,   88,   88,   88,   87,   87,   86,
>+ /*   100 */    86,   86,   85,  306,   91,   92,  284,   82,  770,  770,
>+ /*   110 */   782,  785,  774,  774,   89,   89,   90,   90,   90,   90,
>+ /*   120 */   286,   88,   88,   88,   88,   87,   87,   86,   86,   86,
>+ /*   130 */    85,  306,  704,   91,   92,  284,   82,  770,  770,  782,
>+ /*   140 */   785,  774,  774,   89,   89,   90,   90,   90,   90,   67,
>  /*   150 */    88,   88,   88,   88,   87,   87,   86,   86,   86,   85,
>- /*   160 */   307,  772,  772,  784,  787,  740,   93,  172,  280,  706,
>- /*   170 */   312,  278,  277,  276,  220,  274,  243,  633,  618,  721,
>- /*   180 */   722,  632,   91,   92,  285,   82,  771,  771,  783,  786,
>- /*   190 */   775,  775,   89,   89,   90,   90,   90,   90,  109,   88,
>- /*   200 */    88,   88,   88,   87,   87,   86,   86,   86,   85,  307,
>+ /*   160 */   306,  771,  771,  783,  786,  739,   93,  172,  279,  705,
>+ /*   170 */   311,  277,  276,  275,  220,  273,  242,  632,  617,  720,
>+ /*   180 */   721,  631,   91,   92,  284,   82,  770,  770,  782,  785,
>+ /*   190 */   774,  774,   89,   89,   90,   90,   90,   90,  109,   88,
>+ /*   200 */    88,   88,   88,   87,   87,   86,   86,   86,   85,  306,
>  /*   210 */    88,   88,   88,   88,   87,   87,   86,   86,   86,   85,
>- /*   220 */   307,  344,  165,  706,  341,  638,  286,  305,  304,  824,
>- /*   230 */   776,   91,   92,  285,   82,  771,  771,  783,  786,  775,
>- /*   240 */   775,   89,   89,   90,   90,   90,   90,  333,   88,   88,
>- /*   250 */    88,   88,   87,   87,   86,   86,   86,   85,  307,  182,
>- /*   260 */   743,  666,  645,  407,  407,  180,  313,  122,  137,  218,
>- /*   270 */   666,  119,  624,  624,  631,  679,  236,  330,  235,  877,
>- /*   280 */    91,   92,  285,   82,  771,  771,  783,  786,  775,  775,
>- /*   290 */    89,   89,   90,   90,   90,   90,  743,   88,   88,   88,
>- /*   300 */    88,   87,   87,   86,   86,   86,   85,  307,   22,  215,
>- /*   310 */   404,  183,  236,  320,  224,  761,  896,  754,  896,   54,
>- /*   320 */   749,  720,  705,  762,  122,  216,  366,   48,   48,   91,
>- /*   330 */    92,  285,   82,  771,  771,  783,  786,  775,  775,   89,
>- /*   340 */    89,   90,   90,   90,   90,  265,   88,   88,   88,   88,
>- /*   350 */    87,   87,   86,   86,   86,   85,  307,  753,  753,  755,
>- /*   360 */   223,  199,  382,  367,  356,  353,  352,  649,   84,   81,
>- /*   370 */   176,  699,  748, 1199,  408,    3,  351,  294,   91,   92,
>- /*   380 */   285,   82,  771,  771,  783,  786,  775,  775,   89,   89,
>- /*   390 */    90,   90,   90,   90,  317,   88,   88,   88,   88,   87,
>- /*   400 */    87,   86,   86,   86,   85,  307,   91,   92,  285,   82,
>- /*   410 */   771,  771,  783,  786,  775,  775,   89,   89,   90,   90,
>- /*   420 */    90,   90,  648,   88,   88,   88,   88,   87,   87,   86,
>- /*   430 */    86,   86,   85,  307,   91,   92,  285,   82,  771,  771,
>- /*   440 */   783,  786,  775,  775,   89,   89,   90,   90,   90,   90,
>+ /*   220 */   306,  343,  165,  705,  340,  637,  285,  304,  303,  823,
>+ /*   230 */   775,   91,   92,  284,   82,  770,  770,  782,  785,  774,
>+ /*   240 */   774,   89,   89,   90,   90,   90,   90,  332,   88,   88,
>+ /*   250 */    88,   88,   87,   87,   86,   86,   86,   85,  306,  182,
>+ /*   260 */   742,  665,  644,  406,  406,  180,  312,  122,  137,  218,
>+ /*   270 */   665,  119,  623,  623,  630,  678,  236,  329,  235,  876,
>+ /*   280 */    91,   92,  284,   82,  770,  770,  782,  785,  774,  774,
>+ /*   290 */    89,   89,   90,   90,   90,   90,  742,   88,   88,   88,
>+ /*   300 */    88,   87,   87,   86,   86,   86,   85,  306,   22,  215,
>+ /*   310 */   403,  183,  236,  319,  224,  760,  895,  753,  895,   54,
>+ /*   320 */   748,  719,  704,  761,  122,  216,  365,   48,   48,   91,
>+ /*   330 */    92,  284,   82,  770,  770,  782,  785,  774,  774,   89,
>+ /*   340 */    89,   90,   90,   90,   90,  264,   88,   88,   88,   88,
>+ /*   350 */    87,   87,   86,   86,   86,   85,  306,  752,  752,  754,
>+ /*   360 */   223,  199,  381,  366,  355,  352,  351,  648,   84,   81,
>+ /*   370 */   176,  698,  747, 1198,  407,    3,  350,  293,   91,   92,
>+ /*   380 */   284,   82,  770,  770,  782,  785,  774,  774,   89,   89,
>+ /*   390 */    90,   90,   90,   90,  316,   88,   88,   88,   88,   87,
>+ /*   400 */    87,   86,   86,   86,   85,  306,   91,   92,  284,   82,
>+ /*   410 */   770,  770,  782,  785,  774,  774,   89,   89,   90,   90,
>+ /*   420 */    90,   90,  647,   88,   88,   88,   88,   87,   87,   86,
>+ /*   430 */    86,   86,   85,  306,   91,   92,  284,   82,  770,  770,
>+ /*   440 */   782,  785,  774,  774,   89,   89,   90,   90,   90,   90,
>  /*   450 */   122,   88,   88,   88,   88,   87,   87,   86,   86,   86,
>- /*   460 */    85,  307,   91,   92,  285,   82,  771,  771,  783,  786,
>- /*   470 */   775,  775,   89,   89,   90,   90,   90,   90,  145,   88,
>- /*   480 */    88,   88,   88,   87,   87,   86,   86,   86,   85,  307,
>- /*   490 */  1150, 1150,   84,   81,  176,   70,   92,  285,   82,  771,
>- /*   500 */   771,  783,  786,  775,  775,   89,   89,   90,   90,   90,
>- /*   510 */    90,  647,   88,   88,   88,   88,   87,   87,   86,   86,
>- /*   520 */    86,   85,  307,   73,  207,  122,  402,  402,  402,   91,
>- /*   530 */    80,  285,   82,  771,  771,  783,  786,  775,  775,   89,
>- /*   540 */    89,   90,   90,   90,   90,  376,   88,   88,   88,   88,
>- /*   550 */    87,   87,   86,   86,   86,   85,  307,  285,   82,  771,
>- /*   560 */   771,  783,  786,  775,  775,   89,   89,   90,   90,   90,
>+ /*   460 */    85,  306,   91,   92,  284,   82,  770,  770,  782,  785,
>+ /*   470 */   774,  774,   89,   89,   90,   90,   90,   90,  145,   88,
>+ /*   480 */    88,   88,   88,   87,   87,   86,   86,   86,   85,  306,
>+ /*   490 */  1149, 1149,   84,   81,  176,   70,   92,  284,   82,  770,
>+ /*   500 */   770,  782,  785,  774,  774,   89,   89,   90,   90,   90,
>+ /*   510 */    90,  646,   88,   88,   88,   88,   87,   87,   86,   86,
>+ /*   520 */    86,   85,  306,   73,  207,  122,  401,  401,  401,   91,
>+ /*   530 */    80,  284,   82,  770,  770,  782,  785,  774,  774,   89,
>+ /*   540 */    89,   90,   90,   90,   90,  375,   88,   88,   88,   88,
>+ /*   550 */    87,   87,   86,   86,   86,   85,  306,  284,   82,  770,
>+ /*   560 */   770,  782,  785,  774,  774,   89,   89,   90,   90,   90,
>  /*   570 */    90,   78,   88,   88,   88,   88,   87,   87,   86,   86,
>- /*   580 */    86,   85,  307,  404,  306,  306,  306,  605,  310,  141,
>- /*   590 */    75,   76,  264,  624,  624,  692,  873,   77,  284,  315,
>- /*   600 */    48,   48,  305,  304,  640,   78,  265,   84,   81,  176,
>- /*   610 */   400,    2, 1097,  315,  314,  308,  308,  200,  199,  200,
>- /*   620 */   141,  356,  353,  352,   75,   76,  273,  624,  624,  281,
>- /*   630 */   404,   77,  389,  351,  387,  382,  372,  761,  303,  754,
>- /*   640 */   743, 1173,  749,  661,  400,    2,  404,   10,   10,  308,
>- /*   650 */   308,  891,  299,  895,  383,  373,  236,  330,  235,  371,
>- /*   660 */   893,  293,  894,   48,   48,  361,  389,  751,  348,  333,
>- /*   670 */   201,  761,  846,  754,  705,  315,  749,  296,  398,  753,
>- /*   680 */   753,  755,  756,  403,   18,  138,  847,  109,  404,  624,
>- /*   690 */   624,  896,  109,  896,  848,  672,  164,  122,  382,  384,
>- /*   700 */   374,  751,  673,  843,  122,   48,   48,  162,  174,   78,
>- /*   710 */   719,  843,  184,  753,  753,  755,  756,  403,   18,  886,
>- /*   720 */   886,  217,  155,  253,  359,  248,  358,  203,   75,   76,
>- /*   730 */   693,  122,  689,  189,  246,   77,  109,  688,  404,  328,
>- /*   740 */   382,  381,  870,   78,  109,  287,  363,  404,  400,    2,
>- /*   750 */   246,   85,  307,  308,  308,   30,   30,   84,   81,  176,
>- /*   760 */   331,  658,   75,   76,   48,   48,  870,  404,  331,   77,
>- /*   770 */   389,  887,  708,   23,  370,  761,  167,  754,  329,  109,
>- /*   780 */   749,  255,  400,    2,   10,   10,  340,  308,  308,  404,
>- /*   790 */   364,    9,    9,  216,  366,  404,  177,  177,  295,  382,
>- /*   800 */   362,  830,  830,  325,  389,  751,   48,   48,  369,  761,
>- /*   810 */   705,  754,   10,   10,  749,  659,  404,  753,  753,  755,
>- /*   820 */   756,  403,   18,  624,  624,  404,  198,  404,  339,  886,
>- /*   830 */   886,  671,  671,   48,   48,  316,  157,  156,  823,  751,
>- /*   840 */   823,  300,   47,   47,   10,   10,   66,   68,  185,  816,
>- /*   850 */   818,  753,  753,  755,  756,  403,   18,   95,  379,  146,
>- /*   860 */   404,  634,  634,  177,  177,  652,   75,   76,  377,  241,
>- /*   870 */     5,  357,  208,   77,  885,  369,  653,   34,   34,  643,
>- /*   880 */   339,  887,  707,  761,  404,  754,  400,    2,  749,  318,
>- /*   890 */   705,  308,  308,  706,  297,  229,  263,  705,  885,  404,
>- /*   900 */    24,   35,   35,  335,  624,  624,  806,  846,  389,  624,
>- /*   910 */   624,  816,  188,  761,  404,  754,   36,   36,  749,  240,
>- /*   920 */   178,  847,  404,  747,  404,  753,  753,  755,  849,  848,
>- /*   930 */   388,   37,   37,  404,  705,  321,  404,  669,  669,   38,
>- /*   940 */    38,   26,   26,  751,  404,  228,  165,  706,  404,  841,
>- /*   950 */    27,   27,  232,   29,   29,  753,  753,  755,  756,  403,
>- /*   960 */    18,   39,   39,  404,  234,   40,   40,  827,  264,  826,
>- /*   970 */   404,  705,  678,  404,  921,  323,  227,  404,  226,  404,
>- /*   980 */    41,   41,  109,  623,  288,  404,  324,   11,   11,  404,
>- /*   990 */    42,   42,  143,  404,   97,   97,   43,   43,  404,  747,
>- /*  1000 */   404,  257,   44,   44,  404,  339,   31,   31,  404,  674,
>- /*  1010 */    45,   45,  404,  747,  404,   46,   46,   32,   32,  404,
>- /*  1020 */   752,  112,  112,  252,  694,  113,  113,  404,  705,  114,
>- /*  1030 */   114,   52,   52,  404,  251,  404,   33,   33,  404,  677,
>- /*  1040 */   404,  208,  404,  885,   98,   98,  404,  624,  624,  259,
>- /*  1050 */    49,   49,   99,   99,  394,  100,  100,   96,   96,  111,
>- /*  1060 */   111,  404,  290,  108,  108,  404,  231,  885,  404,  747,
>- /*  1070 */   404,  747,  109,  404,  163,  404,  291,  404,  104,  104,
>- /*  1080 */   404,  169,  103,  103,  404,  101,  101,  102,  102,  191,
>+ /*   580 */    86,   85,  306,  403,  305,  305,  305,  604,  309,  141,
>+ /*   590 */    75,   76,  263,  623,  623,  691,  872,   77,  283,  314,
>+ /*   600 */    48,   48,  304,  303,  639,   78,  264,   84,   81,  176,
>+ /*   610 */   399,    2, 1096,  314,  313,  307,  307,  200,  199,  200,
>+ /*   620 */   141,  355,  352,  351,   75,   76,  272,  623,  623,  280,
>+ /*   630 */   403,   77,  388,  350,  386,  381,  371,  760,  302,  753,
>+ /*   640 */   742, 1172,  748,  660,  399,    2,  403,   10,   10,  307,
>+ /*   650 */   307,  890,  298,  894,  382,  372,  236,  329,  235,  370,
>+ /*   660 */   892,  292,  893,   48,   48,  360,  388,  750,  347,  332,
>+ /*   670 */   201,  760,  845,  753,  704,  314,  748,  295,  397,  752,
>+ /*   680 */   752,  754,  755,  402,   18,  138,  846,  109,  403,  623,
>+ /*   690 */   623,  895,  109,  895,  847,  671,  164,  122,  381,  383,
>+ /*   700 */   373,  750,  672,  842,  122,   48,   48,  162,  174,   78,
>+ /*   710 */   718,  842,  184,  752,  752,  754,  755,  402,   18,  885,
>+ /*   720 */   885,  217,  155,  252,  358,  247,  357,  203,   75,   76,
>+ /*   730 */   692,  122,  688,  189,  245,   77,  109,  687,  403,  327,
>+ /*   740 */   381,  380,  869,   78,  109,  286,  362,  403,  399,    2,
>+ /*   750 */   245,   85,  306,  307,  307,   30,   30,   84,   81,  176,
>+ /*   760 */   330,  657,   75,   76,   48,   48,  869,  403,  330,   77,
>+ /*   770 */   388,  886,  707,   23,  369,  760,  167,  753,  328,  109,
>+ /*   780 */   748,  254,  399,    2,   10,   10,  339,  307,  307,  403,
>+ /*   790 */   363,    9,    9,  216,  365,  403,  177,  177,  294,  381,
>+ /*   800 */   361,  829,  829,  324,  388,  750,   48,   48,  368,  760,
>+ /*   810 */   704,  753,   10,   10,  748,  658,  403,  752,  752,  754,
>+ /*   820 */   755,  402,   18,  623,  623,  403,  198,  403,  338,  885,
>+ /*   830 */   885,  670,  670,   48,   48,  315,  157,  156,  822,  750,
>+ /*   840 */   822,  299,   47,   47,   10,   10,   66,   68,  185,  815,
>+ /*   850 */   817,  752,  752,  754,  755,  402,   18,   95,  378,  146,
>+ /*   860 */   403,  633,  633,  177,  177,  651,   75,   76,  376,  240,
>+ /*   870 */     5,  356,  208,   77,  884,  368,  652,   34,   34,  642,
>+ /*   880 */   338,  886,  706,  760,  403,  753,  399,    2,  748,  317,
>+ /*   890 */   704,  307,  307,  705,  296,  229,  262,  704,  884,  403,
>+ /*   900 */    24,   35,   35,  334,  623,  623,  805,  845,  388,  623,
>+ /*   910 */   623,  815,  188,  760,  403,  753,   36,   36,  748,  239,
>+ /*   920 */   178,  846,  403,  746,  403,  752,  752,  754,  848,  847,
>+ /*   930 */   387,   37,   37,  403,  704,  320,  403,  668,  668,   38,
>+ /*   940 */    38,   26,   26,  750,  403,  228,  165,  705,  403,  840,
>+ /*   950 */    27,   27,  232,   29,   29,  752,  752,  754,  755,  402,
>+ /*   960 */    18,   39,   39,  403,  234,   40,   40,  826,  263,  825,
>+ /*   970 */   403,  704,  677,  403,  920,  322,  227,  403,  226,  403,
>+ /*   980 */    41,   41,  109,  622,  287,  403,  323,   11,   11,  403,
>+ /*   990 */    42,   42,  143,  403,   97,   97,   43,   43,  403,  746,
>+ /*  1000 */   403,  256,   44,   44,  403,  338,   31,   31,  403,  673,
>+ /*  1010 */    45,   45,  403,  746,  403,   46,   46,   32,   32,  403,
>+ /*  1020 */   751,  112,  112,  251,  693,  113,  113,  403,  704,  114,
>+ /*  1030 */   114,   52,   52,  403,  250,  403,   33,   33,  403,  676,
>+ /*  1040 */   403,  208,  403,  884,   98,   98,  403,  623,  623,  258,
>+ /*  1050 */    49,   49,   99,   99,  393,  100,  100,   96,   96,  111,
>+ /*  1060 */   111,  403,  289,  108,  108,  403,  231,  884,  403,  746,
>+ /*  1070 */   403,  746,  109,  403,  163,  403,  290,  403,  104,  104,
>+ /*  1080 */   403,  169,  103,  103,  403,  101,  101,  102,  102,  191,
>  /*  1090 */    51,   51,   53,   53,   50,   50,  107,   25,   25,    1,
>- /*  1100 */   628,   28,   28,  624,  624,  365,  681,  684,  684,  622,
>- /*  1110 */   161,  160,  159,  401,  288,  391,  395,  369,  399,  175,
>- /*  1120 */   174,  337,  721,  722,  628,   74,  884,   72,  689,  110,
>- /*  1130 */   262,  149,  292,  688,  301,  745,   20,  206,  332,  334,
>- /*  1140 */   206,  206,  109,  237,   64,   66,  651,  650,  109,  109,
>- /*  1150 */   349,  109,  212,  244,  822,   66,  822,  641,  641,  686,
>- /*  1160 */   715,   69,  206,    7,  813,  813,  338,   19,  735,  809,
>- /*  1170 */   626,  212,  106,  852,  757,  757,  319,  851,  153,  820,
>- /*  1180 */   289,  814,  225,  168,  233,  838,  840,  837,  336,  342,
>- /*  1190 */   343,  239,  354,  617,  242,  158,  662,  646,  247,  713,
>- /*  1200 */   645,  746,  261,  695,  250,  390,  811,  266,  810,  267,
>- /*  1210 */   272,  629,  154,  866,  615,  614,  616,  863,  135,  124,
>- /*  1220 */   117,   64,  322,  825,  732,   55,  327,  230,  347,  187,
>- /*  1230 */   147,  194,  144,  195,  126,  360,  196,  298,  643,  128,
>- /*  1240 */   665,  129,  130,  131,  345,  282,  664,  139,  663,  375,
>- /*  1250 */    63,    6,  742,   71,  842,  637,  302,  283,  636,  656,
>- /*  1260 */    94,  249,  635,  875,  380,   65,  805,  655,  378,   21,
>- /*  1270 */   864,  222,  607,  610,  309,  179,  819,  219,  279,  221,
>- /*  1280 */   405,  406,  612,  611,  608,  311,  123,  817,  181,  393,
>- /*  1290 */   741,  115,  397,  125,  120,  127,  186,  675,  116,  828,
>- /*  1300 */   703,  133,  206,  132,  836,  898,  254,  326,  136,  134,
>- /*  1310 */   105,  704,  256,  202,  702,   56,   57,   58,  258,  269,
>- /*  1320 */   701,  260,  685,  268,  270,  271,   59,  839,  121,  835,
>- /*  1330 */   791,  190,  192,   12,  209,  238,    8,  193,  148,  620,
>- /*  1340 */   346,  197,  140,  210,  211,  251,  350,  355,  654,  204,
>- /*  1350 */   118,   60,   13,  683,  245,   14,   61,   62,  170,  760,
>- /*  1360 */   759,  789,   15,  385,  687,    4,  714,  368,  171,  173,
>- /*  1370 */   205,  142,   69,  709,  166,   16,   66,   17,  804,  790,
>- /*  1380 */   788,  793,  845,  214,  844,  386,  856,  150,  392,  275,
>- /*  1390 */   857,  213,  151,  396,  792,  152,  604,  758,  627,   79,
>- /*  1400 */  1155,  621,
>+ /*  1100 */   627,   28,   28,  623,  623,  364,  680,  683,  683,  621,
>+ /*  1110 */   161,  160,  159,  400,  287,  390,  394,  368,  398,  175,
>+ /*  1120 */   174,  336,  720,  721,  627,   74,  883,   72,  688,  110,
>+ /*  1130 */   261,  149,  291,  687,  300,  744,   20,  206,  331,  333,
>+ /*  1140 */   206,  206,  109,  804,   64,   66,  650,  649,  109,  109,
>+ /*  1150 */   348,  109,  212,  243,  821,   66,  821,  640,  640,  685,
>+ /*  1160 */   714,   69,  206,    7,  812,  812,  337,   19,  734,  808,
>+ /*  1170 */   625,  212,  106,  851,  756,  756,  318,  850,  153,  819,
>+ /*  1180 */   288,  813,  225,  168,  233,  837,  839,  836,  335,  341,
>+ /*  1190 */   342,  238,  353,  616,  241,  158,  661,  645,  246,  712,
>+ /*  1200 */   644,  745,  260,  694,  249,  389,  810,  265,  809,  266,
>+ /*  1210 */   271,  628,  154,  865,  614,  613,  615,  862,  135,  124,
>+ /*  1220 */   117,   64,  321,  824,  731,   55,  326,  230,  346,  187,
>+ /*  1230 */   147,  194,  144,  195,  126,  359,  196,  297,  642,  128,
>+ /*  1240 */   664,  129,  130,  131,  344,  281,  663,  139,  662,  374,
>+ /*  1250 */    63,    6,  741,   71,  841,  636,  301,  282,  635,  655,
>+ /*  1260 */    94,  248,  634,  874,  379,   65,  654,   21,  377,  863,
>+ /*  1270 */   222,  606,  609,  308,  179,  310,  123,  278,  219,  221,
>+ /*  1280 */   404,  702,  405,  611,  392,  818,  610,  607,  816,  181,
>+ /*  1290 */   115,  396,  740,  125,  120,  116,  127,  186,  674,  827,
>+ /*  1300 */   253,  206,  132,  897,  105,  202,  133,  703,  835,  325,
>+ /*  1310 */   255,  134,  136,  701,  700,   56,   57,  270,  257,  259,
>+ /*  1320 */   684,  267,  268,  269,   58,   59,  121,  838,  190,  192,
>+ /*  1330 */   790,  834,    8,  209,   12,  237,  619,  193,  148,  345,
>+ /*  1340 */   197,  140,  210,  211,  250,  349,  354,  653,   60,   13,
>+ /*  1350 */   204,  244,   14,   61,   62,  118,  682,  170,  759,  758,
>+ /*  1360 */   788,   15,  205,  686,    4,  713,  367,  171,  173,  142,
>+ /*  1370 */   708,   69,  384,   16,   66,  803,   17,  789,  385,  787,
>+ /*  1380 */   792,  844,  843,  166,  391,  855,  150,  151,  213,  856,
>+ /*  1390 */   274,  152,  395,  791,  757,  626,   79,  214,  620,  603,
>+ /*  1400 */  1154,
> };
> static const YYCODETYPE yy_lookahead[] = {
>  /*     0 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
>@@ -667,24 +667,24 @@ static const YYCODETYPE yy_lookahead[] = {
>  /*  1230 */   209,  148,   47,  148,  177,   84,  148,   63,   83,  180,
>  /*  1240 */   162,  180,  180,  180,  165,  165,  162,  177,  162,  106,
>  /*  1250 */    84,   47,  177,  121,  189,  162,   32,  165,  164,  170,
>- /*  1260 */   112,  162,  162,  162,  107,  111,  189,  170,  110,   50,
>- /*  1270 */    40,   35,    4,   36,    3,   42,   48,  144,  141,  144,
>- /*  1280 */   150,  142,  142,  142,  142,   72,   43,   48,  101,  165,
>- /*  1290 */    99,  153,  165,  114,   88,  102,   84,   46,  153,  127,
>- /*  1300 */   204,   84,   50,  127,    1,  130,  203,  129,  114,  102,
>- /*  1310 */   166,  204,  203,  166,  204,   16,   16,   16,  203,  191,
>- /*  1320 */   204,  203,  193,  192,  190,  189,   16,   52,   88,    1,
>- /*  1330 */   213,  105,  101,   47,  215,  124,   34,   84,   49,   46,
>- /*  1340 */     7,   82,   47,  218,  218,   89,   66,   66,   54,   66,
>- /*  1350 */    60,   47,   47,   95,   48,   47,   47,   50,  101,   48,
>- /*  1360 */    48,   48,   47,   75,   48,   47,   52,   50,   48,   48,
>- /*  1370 */   105,   47,   50,  104,   47,  105,   50,  105,   48,   48,
>- /*  1380 */    48,   38,   48,  101,   48,   50,   48,   47,   49,   42,
>- /*  1390 */    48,   50,   47,   49,   48,   47,    1,   48,   48,   47,
>- /*  1400 */     0,   48,
>+ /*  1260 */   112,  162,  162,  162,  107,  111,  170,   50,  110,   40,
>+ /*  1270 */    35,    4,   36,    3,   42,   72,   43,  141,  144,  144,
>+ /*  1280 */   150,  204,  142,  142,  165,   48,  142,  142,   48,  101,
>+ /*  1290 */   153,  165,   99,  114,   88,  153,  102,   84,   46,  127,
>+ /*  1300 */   203,   50,  127,  130,  166,  166,   84,  204,    1,  129,
>+ /*  1310 */   203,  102,  114,  204,  204,   16,   16,  189,  203,  203,
>+ /*  1320 */   193,  192,  191,  190,   16,   16,   88,   52,  105,  101,
>+ /*  1330 */   213,    1,   34,  215,   47,  124,   46,   84,   49,    7,
>+ /*  1340 */    82,   47,  218,  218,   89,   66,   66,   54,   47,   47,
>+ /*  1350 */    66,   48,   47,   47,   50,   60,   95,  101,   48,   48,
>+ /*  1360 */    48,   47,  105,   48,   47,   52,   50,   48,   48,   47,
>+ /*  1370 */   104,   50,   75,  105,   50,   48,  105,   48,   50,   48,
>+ /*  1380 */    38,   48,   48,   47,   49,   48,   47,   47,   50,   48,
>+ /*  1390 */    42,   47,   49,   48,   48,   48,   47,  101,   48,    1,
>+ /*  1400 */     0,
> };
>-#define YY_SHIFT_USE_DFLT (1402)
>-#define YY_SHIFT_COUNT    (408)
>+#define YY_SHIFT_USE_DFLT (1401)
>+#define YY_SHIFT_COUNT    (407)
> #define YY_SHIFT_MIN      (-82)
> #define YY_SHIFT_MAX      (1400)
> static const short yy_shift_ofst[] = {
>@@ -699,11 +699,11 @@ static const short yy_shift_ofst[] = {
>  /*    80 */   736,  736,  840,  736,  736,  736,  736,  736,  736,  736,
>  /*    90 */   736,  736,  736,  736,  736,  736,   11,   30,   30,   30,
>  /*   100 */    30,   30,  188,   37,   43,  661,  201,  201,  720,  695,
>- /*   110 */   772,  -16, 1402, 1402, 1402,  645,  645,  633,  633,  826,
>+ /*   110 */   772,  -16, 1401, 1401, 1401,  645,  645,  633,  633,  826,
>  /*   120 */   221,  221,  858,  772,  317,  772,  772,  772,  772,  772,
>  /*   130 */   772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
>  /*   140 */   772,  691,  772,  772,  772,  691,  695,  -82,  -82,  -82,
>- /*   150 */   -82,  -82,  -82, 1402, 1402,  810,  242,  242,  285,  806,
>+ /*   150 */   -82,  -82,  -82, 1401, 1401,  810,  242,  242,  285,  806,
>  /*   160 */   806,  806,  119,  823,  668,  778,  868,  716,  911,  638,
>  /*   170 */   996,  992,  992,  992,  853,  843, 1052, 1011,  637,  772,
>  /*   180 */   772,  772,  772, 1031,  648,  648,  772,  772, 1114, 1031,
>@@ -711,29 +711,29 @@ static const short yy_shift_ofst[] = {
>  /*   200 */   593,  772,   36,  772, 1014,  772,  772,  648,  772, 1004,
>  /*   210 */  1014, 1014,  772,  772,  772, 1076, 1033,  772, 1082,  772,
>  /*   220 */   772,  772,  772, 1171, 1215, 1108, 1177, 1177, 1177, 1177,
>- /*   230 */  1104, 1098, 1183, 1108, 1171, 1215, 1215, 1108, 1183, 1185,
>- /*   240 */  1183, 1183, 1185, 1151, 1151, 1151, 1174, 1185, 1151, 1155,
>- /*   250 */  1151, 1174, 1151, 1151, 1143, 1166, 1143, 1166, 1143, 1166,
>- /*   260 */  1143, 1166, 1204, 1132, 1185, 1224, 1224, 1185, 1148, 1157,
>- /*   270 */  1154, 1158, 1108, 1219, 1230, 1230, 1236, 1236, 1236, 1236,
>- /*   280 */  1237, 1402, 1402, 1402, 1402,  152,  852, 1025, 1049, 1120,
>- /*   290 */  1087, 1090, 1091, 1095, 1102, 1105, 1106, 1069,  725,  945,
>- /*   300 */  1111, 1112, 1113, 1121,  723, 1039, 1122, 1123,  873, 1268,
>- /*   310 */  1271, 1233, 1213, 1243, 1228, 1239, 1187, 1191, 1179, 1206,
>- /*   320 */  1193, 1212, 1251, 1172, 1252, 1176, 1175, 1178, 1217, 1303,
>- /*   330 */  1207, 1194, 1299, 1300, 1301, 1310, 1240, 1275, 1226, 1231,
>- /*   340 */  1328, 1302, 1286, 1253, 1211, 1289, 1293, 1333, 1256, 1259,
>- /*   350 */  1295, 1280, 1304, 1305, 1306, 1308, 1281, 1294, 1309, 1283,
>- /*   360 */  1290, 1311, 1312, 1313, 1307, 1258, 1315, 1316, 1318, 1317,
>- /*   370 */  1257, 1320, 1321, 1314, 1265, 1324, 1269, 1322, 1270, 1326,
>- /*   380 */  1272, 1330, 1322, 1331, 1332, 1334, 1288, 1335, 1336, 1327,
>- /*   390 */  1343, 1338, 1340, 1339, 1341, 1342, 1345, 1344, 1341, 1346,
>- /*   400 */  1348, 1349, 1350, 1352, 1282, 1353, 1347, 1395, 1400,
>+ /*   230 */  1104, 1098, 1183, 1108, 1171, 1215, 1215, 1183, 1185, 1183,
>+ /*   240 */  1183, 1185, 1151, 1151, 1151, 1174, 1185, 1151, 1155, 1151,
>+ /*   250 */  1174, 1151, 1151, 1143, 1166, 1143, 1166, 1143, 1166, 1143,
>+ /*   260 */  1166, 1204, 1132, 1185, 1224, 1224, 1185, 1148, 1157, 1154,
>+ /*   270 */  1158, 1108, 1217, 1229, 1229, 1235, 1235, 1235, 1235, 1236,
>+ /*   280 */  1401, 1401, 1401, 1401,  152,  852, 1025, 1049, 1120, 1087,
>+ /*   290 */  1090, 1091, 1095, 1102, 1105, 1106, 1069,  725,  945, 1111,
>+ /*   300 */  1112, 1113, 1121,  723, 1039, 1122, 1123,  873, 1267, 1270,
>+ /*   310 */  1232, 1203, 1233, 1237, 1240, 1188, 1193, 1179, 1206, 1194,
>+ /*   320 */  1213, 1252, 1172, 1251, 1175, 1173, 1180, 1222, 1307, 1209,
>+ /*   330 */  1198, 1299, 1300, 1308, 1309, 1238, 1275, 1223, 1228, 1330,
>+ /*   340 */  1298, 1287, 1253, 1211, 1289, 1290, 1332, 1255, 1258, 1294,
>+ /*   350 */  1279, 1301, 1302, 1303, 1305, 1280, 1293, 1306, 1284, 1295,
>+ /*   360 */  1310, 1311, 1312, 1304, 1261, 1314, 1315, 1317, 1316, 1256,
>+ /*   370 */  1319, 1320, 1313, 1257, 1322, 1266, 1321, 1268, 1324, 1271,
>+ /*   380 */  1327, 1321, 1329, 1331, 1333, 1297, 1328, 1334, 1336, 1342,
>+ /*   390 */  1337, 1339, 1335, 1338, 1341, 1340, 1343, 1338, 1345, 1344,
>+ /*   400 */  1346, 1347, 1349, 1296, 1350, 1348, 1398, 1400,
> };
> #define YY_REDUCE_USE_DFLT (-69)
>-#define YY_REDUCE_COUNT (284)
>+#define YY_REDUCE_COUNT (283)
> #define YY_REDUCE_MIN   (-68)
>-#define YY_REDUCE_MAX   (1147)
>+#define YY_REDUCE_MAX   (1145)
> static const short yy_reduce_ofst[] = {
>  /*     0 */   237,  503,  595,  124,  167,  440,  545,  604,  552,  397,
>  /*    10 */   158,  547,  487,  624,  652,  646,  673,  684,  682,  456,
>@@ -758,55 +758,55 @@ static const short yy_reduce_ofst[] = {
>  /*   200 */  1023, 1054, 1032, 1055, 1041, 1056, 1058, 1000, 1060,  989,
>  /*   210 */  1043, 1045, 1064, 1066,  877, 1022, 1026, 1068, 1067, 1071,
>  /*   220 */  1072, 1073, 1074, 1010, 1057, 1035, 1059, 1061, 1062, 1063,
>- /*   230 */   998, 1003, 1081, 1065, 1021, 1070, 1075, 1077, 1083, 1079,
>- /*   240 */  1085, 1088, 1080, 1078, 1084, 1086, 1089, 1092, 1093, 1094,
>- /*   250 */  1099, 1097, 1100, 1101, 1096, 1103, 1107, 1109, 1110, 1115,
>- /*   260 */  1116, 1118, 1117, 1119, 1124, 1125, 1126, 1127, 1129, 1131,
>- /*   270 */  1128, 1134, 1136, 1130, 1133, 1135, 1139, 1140, 1141, 1142,
>- /*   280 */  1137, 1138, 1144, 1147, 1145,
>+ /*   230 */   998, 1003, 1081, 1065, 1021, 1070, 1075, 1083, 1079, 1085,
>+ /*   240 */  1088, 1080, 1078, 1084, 1086, 1089, 1092, 1093, 1094, 1099,
>+ /*   250 */  1096, 1100, 1101, 1077, 1097, 1103, 1107, 1109, 1115, 1110,
>+ /*   260 */  1116, 1117, 1118, 1119, 1124, 1125, 1126, 1127, 1129, 1131,
>+ /*   270 */  1133, 1128, 1130, 1134, 1135, 1140, 1141, 1144, 1145, 1136,
>+ /*   280 */  1137, 1138, 1139, 1142,
> };
> static const YYACTIONTYPE yy_default[] = {
>- /*     0 */  1156, 1150, 1150, 1150, 1097, 1097, 1097, 1097, 1150,  993,
>- /*    10 */  1020, 1020, 1198, 1198, 1198, 1198, 1198, 1198, 1096, 1198,
>- /*    20 */  1198, 1198, 1198, 1150,  997, 1026, 1198, 1198, 1198, 1098,
>- /*    30 */  1099, 1198, 1198, 1198, 1131, 1036, 1035, 1034, 1033, 1007,
>- /*    40 */  1031, 1024, 1028, 1098, 1092, 1093, 1091, 1095, 1099, 1198,
>- /*    50 */  1027, 1061, 1076, 1060, 1198, 1198, 1198, 1198, 1198, 1198,
>- /*    60 */  1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
>- /*    70 */  1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
>- /*    80 */  1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
>- /*    90 */  1198, 1198, 1198, 1198, 1198, 1198, 1070, 1075, 1082, 1074,
>- /*   100 */  1071, 1063, 1062, 1064, 1065,  964, 1198, 1198, 1066, 1198,
>- /*   110 */  1198, 1067, 1079, 1078, 1077, 1165, 1164, 1198, 1198, 1104,
>- /*   120 */  1198, 1198, 1198, 1198, 1150, 1198, 1198, 1198, 1198, 1198,
>- /*   130 */  1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
>- /*   140 */  1198,  922, 1198, 1198, 1198,  922, 1198, 1150, 1150, 1150,
>- /*   150 */  1150, 1150, 1150,  997,  988, 1198, 1198, 1198, 1198, 1198,
>- /*   160 */  1198, 1198, 1198,  993, 1198, 1198, 1198, 1198, 1126, 1198,
>- /*   170 */  1198,  993,  993,  993, 1198,  995, 1198,  977,  987, 1198,
>- /*   180 */  1147, 1198, 1118, 1030, 1009, 1009, 1198, 1198, 1197, 1030,
>- /*   190 */  1198, 1197, 1198, 1198, 1198, 1198, 1198, 1198,  939, 1198,
>- /*   200 */  1176, 1198,  936, 1198, 1020, 1198, 1198, 1009, 1198, 1094,
>- /*   210 */  1020, 1020, 1198, 1198, 1198,  994,  987, 1198, 1198, 1198,
>- /*   220 */  1198, 1198, 1159, 1041,  967, 1030,  973,  973,  973,  973,
>- /*   230 */  1130, 1194,  916, 1030, 1041,  967,  967, 1030,  916, 1105,
>- /*   240 */   916,  916, 1105,  965,  965,  965,  954, 1105,  965,  939,
>- /*   250 */   965,  954,  965,  965, 1013, 1008, 1013, 1008, 1013, 1008,
>- /*   260 */  1013, 1008, 1100, 1198, 1105, 1109, 1109, 1105, 1025, 1014,
>- /*   270 */  1023, 1021, 1030,  957, 1162, 1162, 1158, 1158, 1158, 1158,
>- /*   280 */   906, 1171,  941,  941, 1171, 1198, 1198, 1198, 1166, 1112,
>- /*   290 */  1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
>- /*   300 */  1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1047, 1198,
>- /*   310 */   903, 1198, 1198, 1198, 1198, 1198, 1189, 1198, 1198, 1198,
>- /*   320 */  1198, 1198, 1198, 1198, 1129, 1128, 1198, 1198, 1198, 1198,
>- /*   330 */  1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1196,
>- /*   340 */  1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
>- /*   350 */  1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
>- /*   360 */  1198, 1198, 1198, 1198, 1198,  979, 1198, 1198, 1198, 1180,
>- /*   370 */  1198, 1198, 1198, 1198, 1198, 1198, 1198, 1022, 1198, 1015,
>- /*   380 */  1198, 1198, 1186, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
>- /*   390 */  1198, 1198, 1198, 1198, 1152, 1198, 1198, 1198, 1151, 1198,
>- /*   400 */  1198, 1198, 1198, 1198, 1198, 1198,  910, 1198, 1198,
>+ /*     0 */  1155, 1149, 1149, 1149, 1096, 1096, 1096, 1096, 1149,  992,
>+ /*    10 */  1019, 1019, 1197, 1197, 1197, 1197, 1197, 1197, 1095, 1197,
>+ /*    20 */  1197, 1197, 1197, 1149,  996, 1025, 1197, 1197, 1197, 1097,
>+ /*    30 */  1098, 1197, 1197, 1197, 1130, 1035, 1034, 1033, 1032, 1006,
>+ /*    40 */  1030, 1023, 1027, 1097, 1091, 1092, 1090, 1094, 1098, 1197,
>+ /*    50 */  1026, 1060, 1075, 1059, 1197, 1197, 1197, 1197, 1197, 1197,
>+ /*    60 */  1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
>+ /*    70 */  1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
>+ /*    80 */  1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
>+ /*    90 */  1197, 1197, 1197, 1197, 1197, 1197, 1069, 1074, 1081, 1073,
>+ /*   100 */  1070, 1062, 1061, 1063, 1064,  963, 1197, 1197, 1065, 1197,
>+ /*   110 */  1197, 1066, 1078, 1077, 1076, 1164, 1163, 1197, 1197, 1103,
>+ /*   120 */  1197, 1197, 1197, 1197, 1149, 1197, 1197, 1197, 1197, 1197,
>+ /*   130 */  1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
>+ /*   140 */  1197,  921, 1197, 1197, 1197,  921, 1197, 1149, 1149, 1149,
>+ /*   150 */  1149, 1149, 1149,  996,  987, 1197, 1197, 1197, 1197, 1197,
>+ /*   160 */  1197, 1197, 1197,  992, 1197, 1197, 1197, 1197, 1125, 1197,
>+ /*   170 */  1197,  992,  992,  992, 1197,  994, 1197,  976,  986, 1197,
>+ /*   180 */  1146, 1197, 1117, 1029, 1008, 1008, 1197, 1197, 1196, 1029,
>+ /*   190 */  1197, 1196, 1197, 1197, 1197, 1197, 1197, 1197,  938, 1197,
>+ /*   200 */  1175, 1197,  935, 1197, 1019, 1197, 1197, 1008, 1197, 1093,
>+ /*   210 */  1019, 1019, 1197, 1197, 1197,  993,  986, 1197, 1197, 1197,
>+ /*   220 */  1197, 1197, 1158, 1040,  966, 1029,  972,  972,  972,  972,
>+ /*   230 */  1129, 1193,  915, 1029, 1040,  966,  966,  915, 1104,  915,
>+ /*   240 */   915, 1104,  964,  964,  964,  953, 1104,  964,  938,  964,
>+ /*   250 */   953,  964,  964, 1012, 1007, 1012, 1007, 1012, 1007, 1012,
>+ /*   260 */  1007, 1099, 1197, 1104, 1108, 1108, 1104, 1024, 1013, 1022,
>+ /*   270 */  1020, 1029,  956, 1161, 1161, 1157, 1157, 1157, 1157,  905,
>+ /*   280 */  1170,  940,  940, 1170, 1197, 1197, 1197, 1165, 1111, 1197,
>+ /*   290 */  1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
>+ /*   300 */  1197, 1197, 1197, 1197, 1197, 1197, 1197, 1046, 1197,  902,
>+ /*   310 */  1197, 1197, 1197, 1197, 1197, 1188, 1197, 1197, 1197, 1197,
>+ /*   320 */  1197, 1197, 1197, 1128, 1127, 1197, 1197, 1197, 1197, 1197,
>+ /*   330 */  1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1195, 1197,
>+ /*   340 */  1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
>+ /*   350 */  1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
>+ /*   360 */  1197, 1197, 1197, 1197,  978, 1197, 1197, 1197, 1179, 1197,
>+ /*   370 */  1197, 1197, 1197, 1197, 1197, 1197, 1021, 1197, 1014, 1197,
>+ /*   380 */  1197, 1185, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
>+ /*   390 */  1197, 1197, 1197, 1151, 1197, 1197, 1197, 1150, 1197, 1197,
>+ /*   400 */  1197, 1197, 1197, 1197, 1197,  909, 1197, 1197,
> };
> /********** End of lemon-generated parsing tables *****************************/
> 
>@@ -1252,7 +1252,7 @@ static const char *const yyRuleName[] = {
>  /* 198 */ "nexprlist ::= expr",
>  /* 199 */ "paren_exprlist ::=",
>  /* 200 */ "paren_exprlist ::= LP exprlist RP",
>- /* 201 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm ON nm LP sortlist RP where_opt",
>+ /* 201 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm ON nm LP sortlist RP",
>  /* 202 */ "uniqueflag ::= UNIQUE",
>  /* 203 */ "uniqueflag ::=",
>  /* 204 */ "eidlist_opt ::=",
>@@ -1995,7 +1995,7 @@ static const struct {
>   { 195, 1 },
>   { 213, 0 },
>   { 213, 3 },
>-  { 140, 11 },
>+  { 140, 10 },
>   { 217, 1 },
>   { 217, 0 },
>   { 165, 0 },
>@@ -3400,12 +3400,12 @@ static void yy_reduce(
> {yymsp[-2].minor.yy382 = yymsp[-1].minor.yy382;}
> #line 3402 "parse.c"
>         break;
>-      case 201: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm ON nm LP sortlist RP where_opt */
>+      case 201: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm ON nm LP sortlist RP */
> #line 1244 "parse.y"
> {
>-  sqlite3CreateIndex(pParse, &yymsp[-6].minor.yy0, 
>-                     sqlite3SrcListAppend(pParse->db,0,&yymsp[-4].minor.yy0), yymsp[-2].minor.yy382, yymsp[-9].minor.yy52,
>-                      &yymsp[-10].minor.yy0, yymsp[0].minor.yy362, SQLITE_SO_ASC, yymsp[-7].minor.yy52, SQLITE_IDXTYPE_APPDEF);
>+  sqlite3CreateIndex(pParse, &yymsp[-5].minor.yy0, 
>+                     sqlite3SrcListAppend(pParse->db,0,&yymsp[-3].minor.yy0), yymsp[-1].minor.yy382, yymsp[-8].minor.yy52,
>+                      &yymsp[-9].minor.yy0, 0, SQLITE_SO_ASC, yymsp[-6].minor.yy52, SQLITE_IDXTYPE_APPDEF);
> }
> #line 3411 "parse.c"
>         break;
>diff --git a/src/box/sql/parse.y b/src/box/sql/parse.y
>index b078e20..e0b5a2e 100644
>--- a/src/box/sql/parse.y
>+++ b/src/box/sql/parse.y
>@@ -1241,10 +1241,10 @@ paren_exprlist(A) ::= LP exprlist(X) RP.  {A = X;}
> ///////////////////////////// The CREATE INDEX command ///////////////////////
> //
> cmd ::= createkw(S) uniqueflag(U) INDEX ifnotexists(NE) nm(X)
>-        ON nm(Y) LP sortlist(Z) RP where_opt(W). {
>+        ON nm(Y) LP sortlist(Z) RP. {
>   sqlite3CreateIndex(pParse, &X, 
>                      sqlite3SrcListAppend(pParse->db,0,&Y), Z, U,
>-                      &S, W, SQLITE_SO_ASC, NE, SQLITE_IDXTYPE_APPDEF);
>+                      &S, 0, SQLITE_SO_ASC, NE, SQLITE_IDXTYPE_APPDEF);
> }
> 
> %type uniqueflag {int}
>diff --git a/test/sql-tap/analyze9.test.lua b/test/sql-tap/analyze9.test.lua
>index 4ce575e..3668211 100755
>--- a/test/sql-tap/analyze9.test.lua
>+++ b/test/sql-tap/analyze9.test.lua
>@@ -1111,7 +1111,7 @@ test:do_test(
>         test:execsql([[
>             DROP TABLE IF EXISTS t1;
>             CREATE TABLE t1(id INTEGER PRIMARY KEY AUTOINCREMENT, a, b, c, d);
>-            CREATE INDEX i1 ON t1(a, b) WHERE d IS NOT NULL;
>+            CREATE INDEX i1 ON t1(a, b);
>             INSERT INTO t1 VALUES(null, -1, -1, -1, NULL);
>             INSERT INTO t1 SELECT null, 2*a,2*b,2*c,d FROM t1;
>             INSERT INTO t1 SELECT null, 2*a,2*b,2*c,d FROM t1;
>diff --git a/test/sql-tap/autoindex4.test.lua b/test/sql-tap/autoindex4.test.lua
>index 45bae48..a567c5e 100755
>--- a/test/sql-tap/autoindex4.test.lua
>+++ b/test/sql-tap/autoindex4.test.lua
>@@ -111,7 +111,7 @@ test:do_execsql_test(
> test:do_execsql_test(
>     "autoindex4-3.1",
>     [[
>-        CREATE INDEX Items_x1 ON Items(ItemName,Name) WHERE ItemName = 'dummy';
>+        CREATE INDEX Items_x1 ON Items(ItemName,Name);
> 
>         SELECT Items.ItemName
>           FROM Items
>diff --git a/test/sql-tap/fkey1.test.lua b/test/sql-tap/fkey1.test.lua
>index 8749e1f..bca82d9 100755
>--- a/test/sql-tap/fkey1.test.lua
>+++ b/test/sql-tap/fkey1.test.lua
>@@ -212,7 +212,7 @@ test:do_execsql_test(
>     "fkey1-6.1",
>     [[
>         CREATE TABLE p1(id PRIMARY KEY, x, y);
>-        CREATE UNIQUE INDEX p1x ON p1(x) WHERE y<2;
>+        CREATE INDEX p1x ON p1(x);
>         INSERT INTO p1 VALUES(1, 1, 1);
>         CREATE TABLE c1(a PRIMARY KEY REFERENCES p1(x));
>     ]], {
>diff --git a/test/sql-tap/gh-2165-remove-support-partial-indexes.test.lua b/test/sql-tap/gh-2165-remove-support-partial-indexes.test.lua
>new file mode 100644
>index 0000000..d8210fc
>--- /dev/null
>+++ b/test/sql-tap/gh-2165-remove-support-partial-indexes.test.lua
>@@ -0,0 +1,17 @@
>+#!/usr/bin/env tarantool
>+test = require("sqltester")
>+
>+test:plan(1)
>+
>+
>+test:do_catchsql_test(
>+    "partial-index-1",
>+    [[
>+        CREATE TABLE t1 (a INTEGER PRIMARY KEY, b INTEGER)
>+        CREATE UNIQUE INDEX i ON t1 (a) WHERE a = 3;
>+    ]], {
>+        1, "keyword \"CREATE\" is reserved"
>+    })
>+
>+--This test intended to be deleted in #2626
>+test:finish_test()
>diff --git a/test/sql-tap/index6.test.lua b/test/sql-tap/index6.test.lua
>index 2aa97e8..069623f 100755
>--- a/test/sql-tap/index6.test.lua
>+++ b/test/sql-tap/index6.test.lua
>@@ -225,7 +225,7 @@ test:do_execsql_test(
>     "index6-6.0",
>     [[
>         CREATE TABLE t6(a,b, PRIMARY KEY (a,b));
>-        CREATE INDEX t6b ON t6(b) WHERE b=1;
>+        CREATE INDEX t6b ON t6(b);
>         INSERT INTO t6(a,b) VALUES(123,456);
>         SELECT * FROM t6;
>     ]], {
>@@ -262,7 +262,7 @@ test:do_execsql_test(
>         CREATE TABLE t7a(id primary key, x);
>         CREATE TABLE t7b(id primary key, y);
>         INSERT INTO t7a VALUES(1, 1);
>-        CREATE INDEX t7ax ON t7a(x) WHERE x=99;
>+        CREATE INDEX t7ax ON t7a(x);
>         SELECT x,y FROM t7a LEFT JOIN t7b ON (x=99) ORDER BY x;
>     ]], {
>         -- <index6-7.0>
>@@ -318,7 +318,7 @@ test:do_execsql_test(
>     [[
>         CREATE TABLE t8a(id primary key, a,b);
>         CREATE TABLE t8b(id primary key, x,y);
>-        CREATE INDEX i8c ON t8b(y) WHERE x = 'value';
>+        CREATE INDEX i8c ON t8b(y);
> 
>         INSERT INTO t8a VALUES(1, 1, 'one');
>         INSERT INTO t8a VALUES(2, 2, 'two');
>@@ -364,7 +364,7 @@ if (0 > 0)
>         "index6-9.1",
>         [[
>             CREATE TABLE t9(a int, b int, c int);
>-            CREATE INDEX t9ca ON t9(c,a) WHERE a in (10,12,20);
>+            CREATE INDEX t9ca ON t9(c,a);
>             INSERT INTO t9 VALUES(1,1,9),(10,2,35),(11,15,82),(20,19,5),(NULL,7,3);
>             UPDATE t9 SET b=c WHERE a in (10,12,20);
>             SELECT a,b,c,'|' FROM t9 ORDER BY a;
>@@ -379,7 +379,7 @@ test:do_execsql_test(
>     [[
>         --DROP TABLE t9;
>         CREATE TABLE t9(a int, b int, c int, PRIMARY KEY(a));
>-        CREATE INDEX t9ca ON t9(c,a) WHERE a in (10,12,20);
>+        CREATE INDEX t9ca ON t9(c,a);
>         INSERT INTO t9 VALUES(1,1,9),(10,2,35),(11,15,82),(20,19,5);
>         UPDATE t9 SET b=c WHERE a in (10,12,20);
>         SELECT a,b,c,'|' FROM t9 ORDER BY a;
>@@ -400,7 +400,7 @@ test:do_execsql_test(
>           (2,3,4,5,6),
>           (3,4,5,6,7),
>           (1,2,3,8,9);
>-        CREATE INDEX t10x ON t10(d) WHERE a=1 AND b=2 AND c=3;
>+        CREATE INDEX t10x ON t10(d);
>         SELECT e FROM t10 WHERE a=1 AND b=2 AND c=3 ORDER BY d;
>     ]], {
>         -- <index6-10.1>
>diff --git a/test/sql-tap/index7.test.lua b/test/sql-tap/index7.test.lua
>index c8f56eb..c194859 100755
>--- a/test/sql-tap/index7.test.lua
>+++ b/test/sql-tap/index7.test.lua
>@@ -1,6 +1,6 @@
> #!/usr/bin/env tarantool
> test = require("sqltester")
>-test:plan(5)
>+test:plan(4)
> 
> --!./tcltestrunner.lua
> -- 2013-11-04
>@@ -261,7 +261,7 @@ test:do_execsql_test(
> test:do_execsql_test(
>     "index7-6.2",
>     [[
>-        CREATE INDEX i4 ON t4(c) WHERE d='xyz';
>+        CREATE INDEX i4 ON t4(c);
>         SELECT a,b,c,d FROM (SELECT a,b FROM t5 WHERE a=1 AND b='xyz'), t4 WHERE c='abc';
>     ]], {
>         -- <index7-6.2>
>@@ -291,14 +291,15 @@ test:do_eqp_test(
>         -- </index7-6.4>
>     })
> 
>-test:do_catchsql_test(
>-    "index7-6.5",
>-    [[
>-        CREATE INDEX t5a ON t5(a) WHERE a=#1;
>-    ]], {
>-        -- <index7-6.5>
>-        1, [[near "#1": syntax error]]
>-        -- </index7-6.5>
>-    })
>-
>+--test:do_catchsql_test(
>+--    "index7-6.5",
>+--    [[
>+--        CREATE INDEX t5a ON t5(a) WHERE a=#1;
>+--    ]], {
>+--        -- <index7-6.5>
>+--        1, [[near "#1": syntax error]]
>+--        -- </index7-6.5>
>+--    })
>+-- this test checks incorrect syntax of partial indexes
>+-- to be enabled after #2626
> test:finish_test()
>-- 
>2.7.4
>
>
>
>



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20180423/ecfaaced/attachment.html>


More information about the Tarantool-patches mailing list