Tarantool development patches archive
 help / color / mirror / Atom feed
From: "Gleb" <dmarc-noreply@freelists.org> (Redacted sender "gleb-skiba" for DMARC)
To: tarantool-patches@freelists.org
Subject: [tarantool-patches] [PATCH v2] sql: remove support of partial indexes
Date: Wed, 18 Apr 2018 23:03:11 +0300	[thread overview]
Message-ID: <1524081791-442-1-git-send-email-gleb-skiba@mail.ru> (raw)

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

             reply	other threads:[~2018-04-18 20:03 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-18 20:03 Gleb [this message]
2018-04-23 17:30 ` [tarantool-patches] " GLEB SKIBA
  -- strict thread matches above, loose matches on Subject: below --
2018-04-11 20:17 Gleb

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1524081791-442-1-git-send-email-gleb-skiba@mail.ru \
    --to=dmarc-noreply@freelists.org \
    --cc=tarantool-patches@freelists.org \
    --subject='Re: [tarantool-patches] [PATCH v2] sql: remove support of partial indexes' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox