Bug(バグ) #275
あしあとの表示が正常に動作していない
開始日:
2009-11-26
期日:
進捗率:
100%
3.6 で発生するか:
Yes
[QA]バグ通知済:
はい
3.8 で発生するか:
Unknown (未調査)
説明
http://sns.openpne.jp/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=5128 より転記
お世話になっております。 あしあとの表示についてですが、あしあとのページには 「最新30件までを表示、同一人物・同一日付のアクセスは最新の日時だけが表示されます。」 となっておりますが、現状の表示は以下の様になっているように思います。 ①1日につき1件の足跡しか表示されない。 ②日付は当日の最新のものが表示される。 ③アクセスした人の名前は当日最初にアクセスした人の名前が表示される。 (日付と名前が対応していない) ①の動作は仕様でしょうか? また、②③について、あしあとの日付と名前を対応付けるには、どのようにすればよろしいでしょうか。 お手数をおかけ致しますが、宜しくお願いいたします。 環境:開発版 OpenPNE 3.1.5
関連するチケット
履歴
#2 Kousuke Ebihara が14年以上前に更新
- プロジェクト を OpenPNE 3 から OpenPNE3 Plugins に変更
#5 Kousuke Ebihara が13年以上前に更新
- 3.6 で発生するか を Yes にセット
#6 Kousuke Ebihara が13年以上前に更新
ソースコードを軽く見た限りでは、修正されていそうに思いました
#7 Kousuke Ebihara が13年以上前に更新
- 優先度 を Normal(通常) から High(高め) に変更
#8 Kousuke Ebihara が13年以上前に更新
- プロジェクト を OpenPNE3 Plugins から opAshiatoPlugin に変更
- [QA]バグ通知済 を いいえ にセット
#9 Kousuke Ebihara が13年以上前に更新
- [QA]バグ通知済 を いいえ から はい に変更
#10 Masato Nagasawa がほぼ13年前に更新
- ファイル opAshiatoPlugin-bug.png 表示 を追加
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Masato Nagasawa にセット
#note-3 にてついてはすでに修正されているので適応する必要はないです。
#note-4 は現在の最新版(0.9.1.2)でも修正されておらず、順序が間違って表示されています。
意図的に再現させた際のスクリーンショットを添付しておきます。
修正方針ですが、
添付されているパッチでは、updated_at の名前を変更して対応を行なっていますが、
この場合修正範囲が広くなるため別の対応で行いたいです。
「->orderBy('MAX(updated_at) DESC');」
のように名前を変更せずに
MAX関数を追加する方向で修正するほうが修正範囲が少なく安全ではないかと思われます。
(負荷的な面ではこちらのほうが重い?)
#11 Masato Nagasawa がほぼ13年前に更新
- 対象バージョン を v1.1.0 にセット
#12 Masato Nagasawa がほぼ13年前に更新
パッチ同様の対応で修正します。
#13 Masato Nagasawa がほぼ13年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
#14 Naoya Tozuka がほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
「->orderBy('MAX DESC');」 のように名前を変更せずにMAX関数を追加する方向で修正
でも名前を変更した場合と同等の負荷になるようですが、ここでは(今のまま)名前の変更で問題ありません。
他の箇所でも参照する変数であるため、"ua" より説明的な変数名(例:"max_updated_at")への変更が望ましいです。
備考¶
MySQLのEXPLAIN文で見る限りでは負荷要因の軽減は見られませんでした:
mysql> EXPLAIN SELECT *,MAX(updated_at) as updated_at FROM ashiato WHERE member_id_to = 3 AND r_date IN ('2011-05-19') GROUP BY member_id_from, r_date ORDER BY MAX(updated_at) DESC; +----+-------------+---------+------+-------------------------------------------------------------------------------------+-------------------------+---------+-------------+------+----------------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+---------+------+-------------------------------------------------------------------------------------+-------------------------+---------+-------------+------+----------------------------------------------+ | 1 | SIMPLE | ashiato | ref | member_id_to_idx,member_id_to_member_id_from_updated_at_idx,member_id_to_r_date_idx | member_id_to_r_date_idx | 9 | const,const | 1 | Using where; Using temporary; Using filesort | +----+-------------+---------+------+-------------------------------------------------------------------------------------+-------------------------+---------+-------------+------+----------------------------------------------+ 1 row in set (0.06 sec) mysql> EXPLAIN SELECT *,MAX(updated_at) as max_updated_at FROM ashiato WHERE member_id_to = 3 AND r_date IN ('2011-05-19') GROUP BY member_id_from, r_date ORDER BY max_updated_at DESC; +----+-------------+---------+------+-------------------------------------------------------------------------------------+-------------------------+---------+-------------+------+----------------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+---------+------+-------------------------------------------------------------------------------------+-------------------------+---------+-------------+------+----------------------------------------------+ | 1 | SIMPLE | ashiato | ref | member_id_to_idx,member_id_to_member_id_from_updated_at_idx,member_id_to_r_date_idx | member_id_to_r_date_idx | 9 | const,const | 1 | Using where; Using temporary; Using filesort | +----+-------------+---------+------+-------------------------------------------------------------------------------------+-------------------------+---------+-------------+------+----------------------------------------------+ 1 row in set (0.00 sec)
#15 Masato Nagasawa がほぼ13年前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
#16 Naoya Tozuka がほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
OKです。修正対応どうもありがとうございます。
#18 Shingo Yamada が12年以上前に更新
- 360対象 を RC1 にセット