Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare v2.0.4 #1688

Merged
merged 3 commits into from
Dec 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
228 changes: 118 additions & 110 deletions src/query_parser/parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,16 +187,16 @@ typedef union {
#define RSQueryParser_CTX_FETCH
#define RSQueryParser_CTX_STORE
#define YYNSTATE 62
#define YYNRULE 54
#define YYNRULE 56
#define YYNTOKEN 27
#define YY_MAX_SHIFT 61
#define YY_MIN_SHIFTREDUCE 97
#define YY_MAX_SHIFTREDUCE 150
#define YY_ERROR_ACTION 151
#define YY_ACCEPT_ACTION 152
#define YY_NO_ACTION 153
#define YY_MIN_REDUCE 154
#define YY_MAX_REDUCE 207
#define YY_MIN_SHIFTREDUCE 99
#define YY_MAX_SHIFTREDUCE 154
#define YY_ERROR_ACTION 155
#define YY_ACCEPT_ACTION 156
#define YY_NO_ACTION 157
#define YY_MIN_REDUCE 158
#define YY_MAX_REDUCE 213
/************* End control #defines *******************************************/

/* Define the yytestcase() macro to be a no-op if is not already defined
Expand Down Expand Up @@ -262,95 +262,97 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (258)
#define YY_ACTTAB_COUNT (269)
static const YYACTIONTYPE yy_action[] = {
/* 0 */ 47, 58, 5, 24, 19, 59, 6, 150, 118, 8,
/* 10 */ 149, 124, 23, 32, 7, 106, 131, 154, 9, 5,
/* 20 */ 61, 19, 36, 6, 150, 118, 60, 149, 124, 23,
/* 30 */ 61, 7, 155, 131, 5, 9, 19, 61, 6, 150,
/* 40 */ 118, 149, 149, 124, 23, 205, 7, 177, 131, 25,
/* 50 */ 146, 150, 204, 45, 149, 124, 5, 26, 19, 21,
/* 60 */ 6, 150, 118, 27, 149, 124, 23, 166, 7, 143,
/* 70 */ 131, 56, 150, 150, 50, 149, 149, 17, 31, 28,
/* 80 */ 193, 29, 19, 156, 6, 150, 118, 176, 149, 124,
/* 90 */ 23, 34, 7, 9, 131, 61, 9, 189, 61, 190,
/* 100 */ 150, 48, 164, 149, 40, 22, 112, 13, 46, 1,
/* 110 */ 173, 39, 158, 18, 41, 201, 43, 145, 199, 141,
/* 120 */ 44, 37, 33, 5, 128, 19, 129, 6, 150, 118,
/* 130 */ 49, 149, 124, 23, 130, 7, 38, 131, 51, 150,
/* 140 */ 118, 52, 149, 124, 23, 153, 7, 127, 131, 153,
/* 150 */ 9, 3, 61, 54, 173, 39, 158, 55, 196, 30,
/* 160 */ 43, 165, 42, 152, 44, 37, 126, 14, 57, 35,
/* 170 */ 173, 39, 158, 125, 4, 20, 43, 173, 39, 158,
/* 180 */ 44, 37, 153, 43, 153, 153, 113, 44, 37, 150,
/* 190 */ 121, 11, 149, 153, 173, 39, 158, 153, 2, 153,
/* 200 */ 43, 173, 39, 158, 44, 37, 153, 43, 25, 146,
/* 210 */ 153, 44, 37, 153, 153, 12, 26, 153, 173, 39,
/* 220 */ 158, 153, 15, 153, 43, 173, 39, 158, 44, 37,
/* 230 */ 153, 43, 153, 153, 153, 44, 37, 150, 121, 16,
/* 240 */ 149, 153, 173, 39, 158, 153, 150, 53, 43, 149,
/* 250 */ 153, 114, 44, 37, 150, 153, 153, 149,
/* 0 */ 47, 58, 5, 24, 19, 59, 6, 154, 120, 8,
/* 10 */ 153, 126, 23, 32, 7, 108, 133, 158, 9, 5,
/* 20 */ 61, 19, 36, 6, 154, 120, 60, 153, 126, 23,
/* 30 */ 61, 7, 159, 133, 5, 9, 19, 61, 6, 154,
/* 40 */ 120, 153, 153, 126, 23, 211, 7, 181, 133, 25,
/* 50 */ 150, 154, 138, 45, 153, 126, 5, 26, 19, 210,
/* 60 */ 6, 154, 120, 21, 153, 126, 23, 27, 7, 147,
/* 70 */ 133, 160, 154, 142, 56, 153, 126, 17, 180, 28,
/* 80 */ 198, 29, 19, 170, 6, 154, 120, 18, 153, 126,
/* 90 */ 23, 34, 7, 145, 133, 9, 9, 61, 61, 154,
/* 100 */ 154, 50, 153, 153, 40, 31, 114, 13, 193, 1,
/* 110 */ 177, 39, 162, 149, 41, 207, 43, 194, 205, 46,
/* 120 */ 44, 37, 33, 5, 168, 19, 130, 6, 154, 120,
/* 130 */ 131, 153, 126, 23, 49, 7, 38, 133, 132, 154,
/* 140 */ 120, 51, 153, 126, 23, 157, 7, 52, 133, 157,
/* 150 */ 9, 3, 61, 129, 177, 39, 162, 54, 202, 30,
/* 160 */ 43, 169, 42, 156, 44, 37, 55, 14, 128, 35,
/* 170 */ 177, 39, 162, 57, 4, 127, 43, 177, 39, 162,
/* 180 */ 44, 37, 20, 43, 157, 157, 115, 44, 37, 154,
/* 190 */ 123, 11, 153, 157, 177, 39, 162, 157, 2, 157,
/* 200 */ 43, 177, 39, 162, 44, 37, 157, 43, 25, 150,
/* 210 */ 157, 44, 37, 157, 157, 12, 26, 157, 177, 39,
/* 220 */ 162, 157, 15, 157, 43, 177, 39, 162, 44, 37,
/* 230 */ 157, 43, 157, 157, 157, 44, 37, 154, 123, 16,
/* 240 */ 153, 157, 177, 39, 162, 157, 154, 53, 43, 153,
/* 250 */ 157, 157, 44, 37, 157, 157, 154, 48, 157, 153,
/* 260 */ 157, 22, 116, 157, 157, 154, 157, 157, 153,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 37, 41, 2, 31, 4, 41, 6, 7, 8, 5,
/* 10 */ 10, 11, 12, 41, 14, 15, 16, 0, 18, 2,
/* 20 */ 20, 4, 18, 6, 7, 8, 13, 10, 11, 12,
/* 30 */ 20, 14, 0, 16, 2, 18, 4, 20, 6, 7,
/* 40 */ 8, 10, 10, 11, 12, 37, 14, 41, 16, 6,
/* 50 */ 7, 7, 37, 21, 10, 11, 2, 14, 4, 37,
/* 60 */ 6, 7, 8, 37, 10, 11, 12, 28, 14, 26,
/* 70 */ 16, 41, 7, 7, 8, 10, 10, 23, 12, 25,
/* 80 */ 30, 31, 4, 0, 6, 7, 8, 41, 10, 11,
/* 90 */ 12, 41, 14, 18, 16, 20, 18, 41, 20, 41,
/* 100 */ 7, 8, 41, 10, 22, 12, 24, 27, 10, 5,
/* 110 */ 30, 31, 32, 18, 34, 35, 36, 26, 38, 24,
/* 120 */ 40, 41, 18, 2, 12, 4, 12, 6, 7, 8,
/* 50 */ 7, 7, 8, 21, 10, 11, 2, 14, 4, 37,
/* 60 */ 6, 7, 8, 37, 10, 11, 12, 37, 14, 26,
/* 70 */ 16, 0, 7, 8, 41, 10, 11, 23, 41, 25,
/* 80 */ 30, 31, 4, 28, 6, 7, 8, 18, 10, 11,
/* 90 */ 12, 41, 14, 24, 16, 18, 18, 20, 20, 7,
/* 100 */ 7, 8, 10, 10, 22, 12, 24, 27, 41, 5,
/* 110 */ 30, 31, 32, 26, 34, 35, 36, 41, 38, 10,
/* 120 */ 40, 41, 18, 2, 41, 4, 12, 6, 7, 8,
/* 130 */ 12, 10, 11, 12, 12, 14, 5, 16, 12, 7,
/* 140 */ 8, 12, 10, 11, 12, 42, 14, 12, 16, 42,
/* 150 */ 18, 27, 20, 12, 30, 31, 32, 12, 30, 31,
/* 160 */ 36, 28, 29, 39, 40, 41, 12, 27, 12, 41,
/* 170 */ 30, 31, 32, 12, 27, 23, 36, 30, 31, 32,
/* 180 */ 40, 41, 42, 36, 42, 42, 4, 40, 41, 7,
/* 170 */ 30, 31, 32, 12, 27, 12, 36, 30, 31, 32,
/* 180 */ 40, 41, 23, 36, 42, 42, 4, 40, 41, 7,
/* 190 */ 8, 27, 10, 42, 30, 31, 32, 42, 27, 42,
/* 200 */ 36, 30, 31, 32, 40, 41, 42, 36, 6, 7,
/* 210 */ 42, 40, 41, 42, 42, 27, 14, 42, 30, 31,
/* 220 */ 32, 42, 27, 42, 36, 30, 31, 32, 40, 41,
/* 230 */ 42, 36, 42, 42, 42, 40, 41, 7, 8, 27,
/* 240 */ 10, 42, 30, 31, 32, 42, 7, 8, 36, 10,
/* 250 */ 42, 4, 40, 41, 7, 42, 42, 10, 42, 42,
/* 260 */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
/* 270 */ 42, 42, 42, 42, 42, 42, 42, 42, 42,
/* 250 */ 42, 42, 40, 41, 42, 42, 7, 8, 42, 10,
/* 260 */ 42, 12, 4, 42, 42, 7, 42, 42, 10, 42,
/* 270 */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
/* 280 */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
};
#define YY_SHIFT_COUNT (61)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (247)
#define YY_SHIFT_MAX (258)
static const unsigned short int yy_shift_ofst[] = {
/* 0 */ 32, 54, 0, 17, 78, 121, 121, 121, 121, 121,
/* 10 */ 121, 132, 75, 75, 75, 10, 10, 44, 44, 65,
/* 20 */ 13, 43, 66, 93, 182, 202, 202, 202, 202, 230,
/* 30 */ 230, 239, 247, 65, 65, 65, 65, 65, 65, 31,
/* 40 */ 13, 95, 82, 4, 104, 83, 91, 98, 112, 114,
/* 50 */ 118, 122, 126, 129, 135, 141, 145, 154, 156, 161,
/* 60 */ 131, 152,
/* 10 */ 121, 132, 77, 77, 77, 10, 10, 44, 65, 92,
/* 20 */ 13, 43, 93, 249, 182, 202, 202, 202, 202, 230,
/* 30 */ 230, 239, 258, 92, 92, 92, 92, 92, 92, 31,
/* 40 */ 13, 69, 82, 4, 104, 71, 87, 109, 114, 118,
/* 50 */ 122, 126, 129, 135, 141, 145, 154, 156, 161, 163,
/* 60 */ 131, 159,
};
#define YY_REDUCE_COUNT (40)
#define YY_REDUCE_MIN (-40)
#define YY_REDUCE_MAX (212)
static const short yy_reduce_ofst[] = {
/* 0 */ 124, 80, 140, 140, 140, 147, 164, 171, 188, 195,
/* 10 */ 212, 140, 140, 140, 140, 140, 140, 50, 128, -28,
/* 20 */ 133, -37, -40, -36, 6, 8, 15, 22, 26, 6,
/* 30 */ 6, 30, 46, 56, 46, 46, 58, 46, 61, 6,
/* 40 */ 39,
/* 20 */ 133, -37, -40, -36, 6, 8, 22, 26, 30, 6,
/* 30 */ 6, 33, 37, 67, 37, 37, 76, 37, 83, 6,
/* 40 */ 55,
};
static const YYACTIONTYPE yy_default[] = {
/* 0 */ 151, 151, 151, 151, 180, 151, 151, 151, 151, 151,
/* 10 */ 151, 179, 162, 161, 157, 159, 160, 151, 151, 151,
/* 20 */ 168, 151, 151, 151, 151, 151, 151, 151, 151, 194,
/* 30 */ 197, 151, 151, 151, 192, 195, 151, 172, 151, 174,
/* 40 */ 167, 191, 151, 151, 151, 151, 151, 151, 151, 151,
/* 50 */ 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
/* 60 */ 151, 151,
/* 0 */ 155, 155, 155, 155, 184, 155, 155, 155, 155, 155,
/* 10 */ 155, 183, 166, 165, 161, 163, 164, 155, 155, 155,
/* 20 */ 172, 155, 155, 155, 155, 155, 155, 155, 155, 199,
/* 30 */ 203, 155, 155, 155, 196, 200, 155, 176, 155, 178,
/* 40 */ 171, 195, 155, 155, 155, 155, 155, 155, 155, 155,
/* 50 */ 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
/* 60 */ 155, 155,
};
/********** End of lemon-generated parsing tables *****************************/

Expand Down Expand Up @@ -545,21 +547,23 @@ static const char *const yyRuleName[] = {
/* 36 */ "modifierlist ::= modifierlist OR term",
/* 37 */ "expr ::= modifier COLON tag_list",
/* 38 */ "tag_list ::= LB term",
/* 39 */ "tag_list ::= LB prefix",
/* 40 */ "tag_list ::= LB termlist",
/* 41 */ "tag_list ::= tag_list OR term",
/* 42 */ "tag_list ::= tag_list OR prefix",
/* 43 */ "tag_list ::= tag_list OR termlist",
/* 44 */ "tag_list ::= tag_list RB",
/* 45 */ "expr ::= modifier COLON numeric_range",
/* 46 */ "numeric_range ::= LSQB num num RSQB",
/* 47 */ "expr ::= modifier COLON geo_filter",
/* 48 */ "geo_filter ::= LSQB num num num TERM RSQB",
/* 49 */ "num ::= NUMBER",
/* 50 */ "num ::= LP num",
/* 51 */ "num ::= MINUS num",
/* 52 */ "term ::= TERM",
/* 53 */ "term ::= NUMBER",
/* 39 */ "tag_list ::= LB STOPWORD",
/* 40 */ "tag_list ::= LB prefix",
/* 41 */ "tag_list ::= LB termlist",
/* 42 */ "tag_list ::= tag_list OR term",
/* 43 */ "tag_list ::= tag_list OR STOPWORD",
/* 44 */ "tag_list ::= tag_list OR prefix",
/* 45 */ "tag_list ::= tag_list OR termlist",
/* 46 */ "tag_list ::= tag_list RB",
/* 47 */ "expr ::= modifier COLON numeric_range",
/* 48 */ "numeric_range ::= LSQB num num RSQB",
/* 49 */ "expr ::= modifier COLON geo_filter",
/* 50 */ "geo_filter ::= LSQB num num num TERM RSQB",
/* 51 */ "num ::= NUMBER",
/* 52 */ "num ::= LP num",
/* 53 */ "num ::= MINUS num",
/* 54 */ "term ::= TERM",
/* 55 */ "term ::= NUMBER",
};
#endif /* NDEBUG */

Expand Down Expand Up @@ -1070,21 +1074,23 @@ static const struct {
{ 36, -3 }, /* (36) modifierlist ::= modifierlist OR term */
{ 27, -3 }, /* (37) expr ::= modifier COLON tag_list */
{ 34, -2 }, /* (38) tag_list ::= LB term */
{ 34, -2 }, /* (39) tag_list ::= LB prefix */
{ 34, -2 }, /* (40) tag_list ::= LB termlist */
{ 34, -3 }, /* (41) tag_list ::= tag_list OR term */
{ 34, -3 }, /* (42) tag_list ::= tag_list OR prefix */
{ 34, -3 }, /* (43) tag_list ::= tag_list OR termlist */
{ 34, -2 }, /* (44) tag_list ::= tag_list RB */
{ 27, -3 }, /* (45) expr ::= modifier COLON numeric_range */
{ 38, -4 }, /* (46) numeric_range ::= LSQB num num RSQB */
{ 27, -3 }, /* (47) expr ::= modifier COLON geo_filter */
{ 35, -6 }, /* (48) geo_filter ::= LSQB num num num TERM RSQB */
{ 37, -1 }, /* (49) num ::= NUMBER */
{ 37, -2 }, /* (50) num ::= LP num */
{ 37, -2 }, /* (51) num ::= MINUS num */
{ 41, -1 }, /* (52) term ::= TERM */
{ 41, -1 }, /* (53) term ::= NUMBER */
{ 34, -2 }, /* (39) tag_list ::= LB STOPWORD */
{ 34, -2 }, /* (40) tag_list ::= LB prefix */
{ 34, -2 }, /* (41) tag_list ::= LB termlist */
{ 34, -3 }, /* (42) tag_list ::= tag_list OR term */
{ 34, -3 }, /* (43) tag_list ::= tag_list OR STOPWORD */
{ 34, -3 }, /* (44) tag_list ::= tag_list OR prefix */
{ 34, -3 }, /* (45) tag_list ::= tag_list OR termlist */
{ 34, -2 }, /* (46) tag_list ::= tag_list RB */
{ 27, -3 }, /* (47) expr ::= modifier COLON numeric_range */
{ 38, -4 }, /* (48) numeric_range ::= LSQB num num RSQB */
{ 27, -3 }, /* (49) expr ::= modifier COLON geo_filter */
{ 35, -6 }, /* (50) geo_filter ::= LSQB num num num TERM RSQB */
{ 37, -1 }, /* (51) num ::= NUMBER */
{ 37, -2 }, /* (52) num ::= LP num */
{ 37, -2 }, /* (53) num ::= MINUS num */
{ 41, -1 }, /* (54) term ::= TERM */
{ 41, -1 }, /* (55) term ::= NUMBER */
};

static void yy_accept(yyParser*); /* Forward Declaration */
Expand Down Expand Up @@ -1388,7 +1394,7 @@ static YYACTIONTYPE yy_reduce(
yymsp[-1].minor.yy35 = yylhsminor.yy35;
break;
case 24: /* termlist ::= termlist STOPWORD */
case 44: /* tag_list ::= tag_list RB */ yytestcase(yyruleno==44);
case 46: /* tag_list ::= tag_list RB */ yytestcase(yyruleno==46);
{
yylhsminor.yy35 = yymsp[-1].minor.yy35;
}
Expand Down Expand Up @@ -1485,55 +1491,57 @@ static YYACTIONTYPE yy_reduce(
yymsp[-2].minor.yy35 = yylhsminor.yy35;
break;
case 38: /* tag_list ::= LB term */
case 39: /* tag_list ::= LB STOPWORD */ yytestcase(yyruleno==39);
{
yymsp[-1].minor.yy35 = NewPhraseNode(0);
QueryNode_AddChild(yymsp[-1].minor.yy35, NewTokenNode(ctx, strdupcase(yymsp[0].minor.yy0.s, yymsp[0].minor.yy0.len), -1));
}
break;
case 39: /* tag_list ::= LB prefix */
case 40: /* tag_list ::= LB termlist */ yytestcase(yyruleno==40);
case 40: /* tag_list ::= LB prefix */
case 41: /* tag_list ::= LB termlist */ yytestcase(yyruleno==41);
{
yymsp[-1].minor.yy35 = NewPhraseNode(0);
QueryNode_AddChild(yymsp[-1].minor.yy35, yymsp[0].minor.yy35);
}
break;
case 41: /* tag_list ::= tag_list OR term */
case 42: /* tag_list ::= tag_list OR term */
case 43: /* tag_list ::= tag_list OR STOPWORD */ yytestcase(yyruleno==43);
{
QueryNode_AddChild(yymsp[-2].minor.yy35, NewTokenNode(ctx, strdupcase(yymsp[0].minor.yy0.s, yymsp[0].minor.yy0.len), -1));
yylhsminor.yy35 = yymsp[-2].minor.yy35;
}
yymsp[-2].minor.yy35 = yylhsminor.yy35;
break;
case 42: /* tag_list ::= tag_list OR prefix */
case 43: /* tag_list ::= tag_list OR termlist */ yytestcase(yyruleno==43);
case 44: /* tag_list ::= tag_list OR prefix */
case 45: /* tag_list ::= tag_list OR termlist */ yytestcase(yyruleno==45);
{
QueryNode_AddChild(yymsp[-2].minor.yy35, yymsp[0].minor.yy35);
yylhsminor.yy35 = yymsp[-2].minor.yy35;
}
yymsp[-2].minor.yy35 = yylhsminor.yy35;
break;
case 45: /* expr ::= modifier COLON numeric_range */
case 47: /* expr ::= modifier COLON numeric_range */
{
// we keep the capitalization as is
yymsp[0].minor.yy36->fieldName = rm_strndup(yymsp[-2].minor.yy0.s, yymsp[-2].minor.yy0.len);
yylhsminor.yy35 = NewNumericNode(yymsp[0].minor.yy36);
}
yymsp[-2].minor.yy35 = yylhsminor.yy35;
break;
case 46: /* numeric_range ::= LSQB num num RSQB */
case 48: /* numeric_range ::= LSQB num num RSQB */
{
yymsp[-3].minor.yy36 = NewNumericFilter(yymsp[-2].minor.yy83.num, yymsp[-1].minor.yy83.num, yymsp[-2].minor.yy83.inclusive, yymsp[-1].minor.yy83.inclusive);
}
break;
case 47: /* expr ::= modifier COLON geo_filter */
case 49: /* expr ::= modifier COLON geo_filter */
{
// we keep the capitalization as is
yymsp[0].minor.yy64->property = rm_strndup(yymsp[-2].minor.yy0.s, yymsp[-2].minor.yy0.len);
yylhsminor.yy35 = NewGeofilterNode(yymsp[0].minor.yy64);
}
yymsp[-2].minor.yy35 = yylhsminor.yy35;
break;
case 48: /* geo_filter ::= LSQB num num num TERM RSQB */
case 50: /* geo_filter ::= LSQB num num num TERM RSQB */
{
char buf[16] = {0};
if (yymsp[-1].minor.yy0.len < 16) {
Expand All @@ -1545,27 +1553,27 @@ static YYACTIONTYPE yy_reduce(
GeoFilter_Validate(yymsp[-5].minor.yy64, ctx->status);
}
break;
case 49: /* num ::= NUMBER */
case 51: /* num ::= NUMBER */
{
yylhsminor.yy83.num = yymsp[0].minor.yy0.numval;
yylhsminor.yy83.inclusive = 1;
}
yymsp[0].minor.yy83 = yylhsminor.yy83;
break;
case 50: /* num ::= LP num */
case 52: /* num ::= LP num */
{
yymsp[-1].minor.yy83=yymsp[0].minor.yy83;
yymsp[-1].minor.yy83.inclusive = 0;
}
break;
case 51: /* num ::= MINUS num */
case 53: /* num ::= MINUS num */
{
yymsp[0].minor.yy83.num = -yymsp[0].minor.yy83.num;
yymsp[-1].minor.yy83 = yymsp[0].minor.yy83;
}
break;
case 52: /* term ::= TERM */
case 53: /* term ::= NUMBER */ yytestcase(yyruleno==53);
case 54: /* term ::= TERM */
case 55: /* term ::= NUMBER */ yytestcase(yyruleno==55);
{
yylhsminor.yy0 = yymsp[0].minor.yy0;
}
Expand Down
10 changes: 10 additions & 0 deletions src/query_parser/parser.y
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,11 @@ tag_list(A) ::= LB term(B) . [TAGLIST] {
QueryNode_AddChild(A, NewTokenNode(ctx, strdupcase(B.s, B.len), -1));
}

tag_list(A) ::= LB STOPWORD(B) . [TAGLIST] {
A = NewPhraseNode(0);
QueryNode_AddChild(A, NewTokenNode(ctx, strdupcase(B.s, B.len), -1));
}

tag_list(A) ::= LB prefix(B) . [TAGLIST] {
A = NewPhraseNode(0);
QueryNode_AddChild(A, B);
Expand All @@ -487,6 +492,11 @@ tag_list(A) ::= tag_list(B) OR term(C) . [TAGLIST] {
A = B;
}

tag_list(A) ::= tag_list(B) OR STOPWORD(C) . [TAGLIST] {
QueryNode_AddChild(B, NewTokenNode(ctx, strdupcase(C.s, C.len), -1));
A = B;
}

tag_list(A) ::= tag_list(B) OR prefix(C) . [TAGLIST] {
QueryNode_AddChild(B, C);
A = B;
Expand Down
2 changes: 1 addition & 1 deletion src/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

#define REDISEARCH_VERSION_MAJOR 2
#define REDISEARCH_VERSION_MINOR 0
#define REDISEARCH_VERSION_PATCH 3
#define REDISEARCH_VERSION_PATCH 4

#ifndef REDISEARCH_MODULE_NAME
#define REDISEARCH_MODULE_NAME "search"
Expand Down