Bug #102
hashを参照しているカラム値を存在しないキーで検索すると値がnilなレコードがヒットする
| Status: | 完了 | Start date: | 02/01/2010 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 0% |
||
| Category: | - | |||
| Target version: | 1.0 |
Description
以下のようなスキーマがあるとします。
table_create Users TABLE_HASH_KEY ShortText
table_create Comments TABLE_NO_KEY
column_create Comments body COLUMN_SCALAR ShortText
column_create Comments user COLUMN_SCALAR Users
以下のようなデータを投入します。
load --table Comments --values '[{"body": "comment", "user": "morita"}, {"body": "memo", "user": "tasukuchan"}]'
load --table Comments --values '[{"body": "anonymous"}]'
この状態で存在しないユーザでフィルタをかけてコメントを選択すると、ユーザが指定されていないコメントがヒットしてしまいます。
> select Comments --output_columns user,body --filter 'user == "yu"'
[[0],[[1],["user","body"],["","anonymous"]]]
原因は、grn_expr_append_obj()で文字列(↑の例では"yu")をUsersレコードへキャストするときに、"yu"に対応するレコードがUsersテーブルに存在しないためGRN_ID_NILになってしまうからです。
テストはHEADにpushしてあります。以下のコマンドで実行できます。
% NO_RUBY=yes test/unit/run-test.sh -n test_equal_by_nonexistent_reference_key
History
Updated by Tasuku SUENAGA about 2 years ago
- Target version set to 1.0
Updated by daijiro MORI about 2 years ago
- Status changed from 新規 to 担当者作業中
- Assignee set to daijiro MORI
Updated by daijiro MORI about 2 years ago
- Status changed from 担当者作業中 to 完了チェック待ち
GRN_ID_NOTFOUNDを導入して解決。。
Updated by daijiro MORI about 2 years ago
- Status changed from 完了チェック待ち to 完了