Bug #268
参照カラムをgrn_text_otoj()するとゴミが入ることがある。
| Status: | 完了 | Start date: | 04/24/2010 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % 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 完了