[tritonn-commit] [svn] [22] fixed kwic sql function bug regarding to max_results.

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2007年 9月 27日 (木) 16:50:08 JST


Revision: 22
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=tritonn&view=rev&rev=22
Author:   mir
Date:     2007-09-27 16:50:08 +0900 (Thu, 27 Sep 2007)

Log Message:
-----------
fixed kwic sql function bug regarding to max_results.

Modified Paths:
--------------
    mysql-5.0.45-tritonn-1.0.6/sql/item_strfunc.cc

Modified: mysql-5.0.45-tritonn-1.0.6/sql/item_strfunc.cc
===================================================================
--- mysql-5.0.45-tritonn-1.0.6/sql/item_strfunc.cc	2007-09-10 17:48:23 UTC (rev 21)
+++ mysql-5.0.45-tritonn-1.0.6/sql/item_strfunc.cc	2007-09-27 07:50:08 UTC (rev 22)
@@ -3509,6 +3509,7 @@
     return &my_empty_string;
   }
 
+
   if (!(result = sql_alloc(max_tagged_len))) {
     SEN_LOG(sen_log_error, "sql_alloc failed", rc);
     SEN_LOG(sen_log_debug, "Item_func_senna_kwic::val_str => sen_snip_close: " \
@@ -3519,32 +3520,36 @@
     return &my_empty_string;
   }
 
-  SEN_LOG(sen_log_debug, "Item_func_senna_kwic::val_str => sen_snip_get_result: " \
-	  "%p, 0, %p, %p", snip, result, &result_len);
-  if ((rc = sen_snip_get_result(snip, 0, result, &result_len))) {
-    SEN_LOG(sen_log_error, "sen_snip_get_result failed: sen_rc= %d", rc);
-    SEN_LOG(sen_log_debug, "Item_func_senna_kwic::val_str => sen_snip_close: " \
-	    "snip = %p", snip);
-    if ((rc = sen_snip_close(snip))) {
-      SEN_LOG(sen_log_error, "sen_snip_close failed: sen_rc = %d", rc);
-    }
-    return &my_empty_string;
-  }
+  str->copy("", 0, target->charset());
 
-  if (result_len <= 0) {
-    SEN_LOG(sen_log_error, "result_len is not positive value: %d", result_len);
-    SEN_LOG(sen_log_debug, "Item_func_senna_kwic::val_str => sen_snip_close: " \
-            "snip = %p", snip);
-    if ((rc = sen_snip_close(snip))) {
-      SEN_LOG(sen_log_error, "sen_snip_close failed: sen_rc = %d", rc);
+  for (i = 0; i < nresults; i++) {
+    SEN_LOG(sen_log_debug, "Item_func_senna_kwic::val_str => sen_snip_get_result: " \
+	    "%p, 0, %p, %p", snip, result, &result_len);
+    if ((rc = sen_snip_get_result(snip, i, result, &result_len))) {
+      SEN_LOG(sen_log_error, "sen_snip_get_result failed: sen_rc= %d", rc);
+      SEN_LOG(sen_log_debug, "Item_func_senna_kwic::val_str => sen_snip_close: " \
+	      "snip = %p", snip);
+      if ((rc = sen_snip_close(snip))) {
+	SEN_LOG(sen_log_error, "sen_snip_close failed: sen_rc = %d", rc);
+      }
+      return &my_empty_string;
     }
-    return &my_empty_string;
+    
+    if (result_len <= 0) {
+      SEN_LOG(sen_log_error, "result_len is not positive value: %d", result_len);
+      SEN_LOG(sen_log_debug, "Item_func_senna_kwic::val_str => sen_snip_close: " \
+	      "snip = %p", snip);
+      if ((rc = sen_snip_close(snip))) {
+	SEN_LOG(sen_log_error, "sen_snip_close failed: sen_rc = %d", rc);
+      }
+      return &my_empty_string;
+    }
+    
+    str->append(start->ptr(), start->length(), target->charset());
+    str->append(result, result_len, target->charset());
+    str->append(end->ptr(), end->length(), target->charset());
   }
 
-  str->copy(start->ptr(), start->length(), target->charset());
-  str->append(result, result_len, target->charset());
-  str->append(end->ptr(), end->length(), target->charset());
-
   SEN_LOG(sen_log_debug, "Item_func_senna_kwic::val_str => sen_snip_close: " \
 	  "snip = %p", snip);
   if ((rc = sen_snip_close(snip))) {




Tritonn-commit メーリングリストの案内
Back to archive index