Kouhei Sutou
null+****@clear*****
Fri Jan 22 23:40:41 JST 2016
Kouhei Sutou 2016-01-22 23:40:41 +0900 (Fri, 22 Jan 2016) New Revision: 0a28d34fb9d6991d96967c336a784962366769f1 https://github.com/mroonga/mroonga/commit/0a28d34fb9d6991d96967c336a784962366769f1 Message: mroonga_escape: fix a bug that the first escaped value is returned Modified files: mysql-test/mroonga/storage/function/escape/success/r/join.result udf/mrn_udf_escape.cpp Modified: mysql-test/mroonga/storage/function/escape/success/r/join.result (+1 -1) =================================================================== --- mysql-test/mroonga/storage/function/escape/success/r/join.result 2016-01-22 23:39:53 +0900 (8811a41) +++ mysql-test/mroonga/storage/function/escape/success/r/join.result 2016-01-22 23:40:41 +0900 (ec765b1) @@ -21,6 +21,6 @@ ORDER BY users.id; id escaped_query 1 \(a\) 2 \(b\) -3 \(c \) +3 \(c\) DROP TABLE queries; DROP TABLE users; Modified: udf/mrn_udf_escape.cpp (+3 -7) =================================================================== --- udf/mrn_udf_escape.cpp 2016-01-22 23:39:53 +0900 (89b08a1) +++ udf/mrn_udf_escape.cpp 2016-01-22 23:40:41 +0900 (ffd7650) @@ -31,7 +31,6 @@ struct EscapeInfo grn_ctx ctx; grn_obj target_characters; grn_obj escaped_query; - bool processed; }; MRN_API my_bool mroonga_escape_init(UDF_INIT *initid, UDF_ARGS *args, @@ -61,7 +60,7 @@ MRN_API my_bool mroonga_escape_init(UDF_INIT *initid, UDF_ARGS *args, } initid->maybe_null = 1; - initid->const_item = 1; + initid->const_item = 0; info = (EscapeInfo *)mrn_my_malloc(sizeof(EscapeInfo), MYF(MY_WME | MY_ZEROFILL)); @@ -73,7 +72,6 @@ MRN_API my_bool mroonga_escape_init(UDF_INIT *initid, UDF_ARGS *args, grn_ctx_init(&(info->ctx), 0); GRN_TEXT_INIT(&(info->target_characters), 0); GRN_TEXT_INIT(&(info->escaped_query), 0); - info->processed = false; initid->ptr = (char *)info; @@ -93,6 +91,7 @@ static void escape(EscapeInfo *info, UDF_ARGS *args) char *query = args->args[0]; unsigned int query_length = args->lengths[0]; + GRN_BULK_REWIND(&(info->escaped_query)); if (args->arg_count == 2) { char *target_characters = args->args[1]; unsigned int target_characters_length = args->lengths[1]; @@ -123,10 +122,7 @@ MRN_API char *mroonga_escape(UDF_INIT *initid, UDF_ARGS *args, char *result, *is_null = 0; - if (!info->processed) { - escape(info, args); - info->processed = true; - } + escape(info, args); if (ctx->rc) { my_message(ER_ERROR_ON_WRITE, ctx->errbuf, MYF(0)); -------------- next part -------------- HTML����������������������������...下載