[Groonga-mysql-commit] mroonga/mroonga at 0a28d34 [master] mroonga_escape: fix a bug that the first escaped value is returned

Back to archive index

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����������������������������...
下載 



More information about the Groonga-mysql-commit mailing list
Back to archive index