Kouhei Sutou
null+****@clear*****
Wed Oct 24 10:56:00 JST 2012
Kouhei Sutou 2012-10-24 10:56:00 +0900 (Wed, 24 Oct 2012) New Revision: ef7330c0be49fd1a2827be6c7241e2a72550e663 https://github.com/groonga/groonga/commit/ef7330c0be49fd1a2827be6c7241e2a72550e663 Merged 2fbecbf: Merge pull request #36 from groonga/accept-star-in-output-columns Log: Ignore unknown column in output_columns Modified files: lib/expr.c Modified: lib/expr.c (+21 -2) =================================================================== --- lib/expr.c 2012-10-19 16:09:41 +0900 (e16bac0) +++ lib/expr.c 2012-10-24 10:56:00 +0900 (a6ed179) @@ -5344,6 +5344,8 @@ static grn_rc parse_script(grn_ctx *ctx, efs_info *q) { grn_rc rc = GRN_SUCCESS; + grn_bool ignore_unknown_identifier = GRN_FALSE; + grn_bool skip_next_comma = GRN_FALSE; for (;;) { skip_space(ctx, q); if (q->cur >= q->str_end) { rc = GRN_END_OF_DATA; goto exit; } @@ -5378,7 +5380,9 @@ parse_script(grn_ctx *ctx, efs_info *q) break; case ',' : q->cur++; - PARSE(GRN_EXPR_TOKEN_COMMA); + if (!skip_next_comma) { + PARSE(GRN_EXPR_TOKEN_COMMA); + } break; case '.' : q->cur++; @@ -5756,10 +5760,25 @@ parse_script(grn_ctx *ctx, efs_info *q) } break; default : - if ((rc = get_identifier(ctx, q))) { goto exit; } + if ((rc = get_identifier(ctx, q))) { + if (rc == GRN_SYNTAX_ERROR && + q->flags & GRN_EXPR_SYNTAX_OUTPUT_COLUMNS) { + ignore_unknown_identifier = GRN_TRUE; + rc = GRN_SUCCESS; + } else { + goto exit; + } + } break; } if (ctx->rc) { rc = ctx->rc; break; } + + if (ignore_unknown_identifier) { + skip_next_comma = GRN_TRUE; + ignore_unknown_identifier = GRN_FALSE; + } else { + skip_next_comma = GRN_FALSE; + } } exit : PARSE(0); -------------- next part -------------- HTML����������������������������... Download