プロジェクト

全般

プロフィール

Backport(バックポート) #3081

activity/community.json 実行時にDoctrineでエラーが発生する場合がある

Yuya Watanabeほぼ12年前に追加. 11年以上前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2012-05-10
期日:
進捗率:

100%


説明

現象

activity/community.json 呼び出し時に下記のようなエラーがhttpdのエラーログに出力されて500エラーとなる。

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

is_active: 0 のメンバー(仮登録中のメンバー)が1人以上いる場合に発生する。

原因

マイフレンドまで公開のアクティビティを取得するための条件の中で、is_active: 0 のメンバーを対象外とするためにサブクエリ内に member_id_to NOT IN ? を追加していたが、この形式の DQL を Doctrine が正しくパースできず、最終的にパラメーター数が一致しない SQL とパラメーターの組が生成されていたためにエラーとなっていた。

inactiveIds が空の場合は opDoctrineQuery::andWhereIn() により ->andWhere('0 = 1'); に書き換えられるため問題が発生しない。

修正内容

問題箇所のクエリでは Member モデルを必ず leftJoin しているため、opActivateListener により is_active のチェックが自動的に追加される。

このクエリにおいて is_active: 0 のメンバーを除外するには Member に対する絞り込みのみで十分であるため、マイフレンドまで公開のアクティビティを抽出する部分からは is_active: 0 を除外する条件を冗長と判断し削除した。


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #3052: activity/community.json 実行時にDoctrineでエラーが発生する場合がある Won't fix(対応せず) 2012-05-10

関係しているリビジョン

リビジョン 939d70cb (差分)
Rimpei Ogawa11年以上前に追加

added an inactive member to test fixture (refs #3081, BP from #3052)

opActivityQueryBuilder::includeFriends() throws an error exception if any inactive members exist

リビジョン 9e16f3e1 (差分)
Rimpei Ogawa11年以上前に追加

fixed getting 500 error responce from activity/community.json if any inactive members exist (fixes #3081, BP from #3052)

For the opActivityQueryBuilder's query joins the Member model,
opActivateListener removes inactive members automatically.
So opActivityQueryBuilder::buildFriendQuery() doesn't need to add inactive members condition.

履歴

#1 Yuma Sakataほぼ12年前に更新

  • 対象バージョンOpenPNE 3.8.1 から OpenPNE 3.8.x に変更

3.8.2 以降で対応します。

#2 Yuma Sakataほぼ12年前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.8.1 に変更

3.8.1 で対応します。

#3 Rimpei Ogawaほぼ12年前に更新

  • 担当者Rimpei Ogawa にセット

原因がはっきりしていないとのことだったので、調査から引き受けます。

#4 Rimpei Ogawa11年以上前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 9e16f3e18af59095f2fc2dcd2be4a9c757439d2f で適用されました。

#5 Rimpei Ogawa11年以上前に更新

  • 説明 を更新 (diff)

Description を親チケットと同じ内容に更新。

#6 Yuya Watanabe11年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#7 開 石切山11年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

他の形式にエクスポート: Atom PDF