Bug #268

参照カラムをgrn_text_otoj()するとゴミが入ることがある。

Added by Kouhei Sutou about 2 years ago. Updated almost 2 years ago.

Status:完了 Start date:04/24/2010
Priority:Normal Due date:
Assignee:daijiro MORI % Done:

0%

Category:-
Target version:1.0

Description

grn_obj_get_value()はidがGRN_ID_NILのときに変な値を返すことがある気がする。

そのため、値がGRN_ID_NILの参照カラムをgrn_text_otoj()すると変な値が返ってくることがある。

↓のパッチを当てたら問題が解消されたので↑のように予想した。再現方法はあとで。dumpを使うと再現させやすいはず。

diff --git a/lib/str.c b/lib/str.c
index 9daccb2..e0cb46d 100644
--- a/lib/str.c
+++ b/lib/str.c
@ -2640,7 +2640,7 @ grn_text_otoj(grn_ctx *ctx, grn_obj *bulk, grn_obj *obj, grn_obj_format *format)
grn_id id = *((grn_id *)GRN_BULK_HEAD(obj));
if (table && table->header.type != GRN_TABLE_NO_KEY) {
grn_obj *accessor = grn_obj_column(ctx, table, "_key", 4);
- if (accessor) {
+ if (accessor && id != GRN_ID_NIL) {
grn_obj_get_value(ctx, accessor, id, &buf);
grn_obj_unlink(ctx, accessor);
}

History

Updated by Nobuyoshi Nakada almost 2 years ago

以下のような感じで

table_create Sites 1 ShortText Int32
column_create Sites link 0 Sites
load --table Sites
[
["_key","_value"],
["groonga.org",0],
["razil.jp",0]
]

dumpすると"link"にゴミが入ります。
[
["_key","_value","link"],
["groonga.org",0,"g"],
["razil.jp",0,"g"]
]

Updated by Nobuyoshi Nakada almost 2 years ago

ecca179 でテストを追加しました。

Updated by Nobuyoshi Nakada almost 2 years ago

以下のコマンドで確認できます。

$ ./test/unit/run-test.sh --verbose=verbose -t test-command-select

Updated by daijiro MORI almost 2 years ago

  • Status changed from 新規 to 担当者作業中
  • Assignee set to daijiro MORI
  • Target version set to 1.0

grn_obj_get_valueでハンドリングする

Updated by Tasuku SUENAGA almost 2 years ago

  • Status changed from 担当者作業中 to 完了チェック待ち

commit 27615ed30d505ea2d8d3dd975575e2331dc1ccb9

で対応しているように見える。

Updated by Tasuku SUENAGA almost 2 years ago

  • Status changed from 完了チェック待ち to 完了

Also available in: Atom PDF