Actions
Defect #330
closed環境によって、前回のスコアが取れない場合がある。
Description
開発環境とHudsonでSQLの取得結果が異なる。
双方同じDB(sqlite)、同じSQL、同じデータ、同じコマンドでテストを行っているが、結果が異なる為、Hudsonでのテスト結果がNGとなる。
joel_test_scoresというテーブルには以下のデータが入っている。
id | user_id | score | created_on | answers |
1 | 1 | 1 | 2010-04-08 21:42:28 | 1 |
2 | 1 | 5 | 2010-04-09 21:42:28 | 31 |
3 | 1 | 3 | 2010-04-10 21:42:28 | 7 |
4 | 1 | 12 | 2010-04-07 21:42:28 | 4095 |
列はそれぞれ
id :integer
user_id :integer
score :integer
created_on:datetime
answers :integer
となっている。
上記のテーブルに対して、
SELECT joel.* FROM (SELECT * FROM joel_test_scores order by created_on) as joel group by user_id
というSQLを実行すると、開発環境では、
id | user_id | score | created_on | answers |
3 | 1 | 3 | 2010-04-10 21:42:28 | 7 |
という、最後に作成された(ことになっている)行が正しく取得される。
しかし、Hudsonでは、
id | user_id | score | created_on | answers |
4 | 1 | 12 | 2010-04-07 21:42:28 | 4095 |
idが最も新しいこの行を取得してしまう。
結果、assert部分で想定と異なる結果を検知し、NGとなっている。
直接SQLを弄らなければこの様なデータは作成されないが、何故不一致になっているか調査する必要がある。
Updated by Takashi Takebayashi over 14 years ago
- Status changed from 担当(Assigned) to 終了(Closed)
- Target version changed from Some distant future to 0.0.4
根本的な原因は排除していませんが、環境に依存しない様に処理の流れ自体を変更しました。
Actions