Bug #102

hashを参照しているカラム値を存在しないキーで検索すると値がnilなレコードがヒットする

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

Status:完了 Start date:02/01/2010
Priority:Normal Due date:
Assignee:daijiro MORI % 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 完了

Also available in: Atom PDF