プラグイン > 開発について > 2.13.0 における SC_Query_Ex#delete() の変更について |
開発について
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
snitta |
投稿日時: 2013/10/22 11:21
対応状況: −−−
|
一人前 登録日: 2013/10/3 居住地: 島根県 投稿: 100 |
2.13.0 における SC_Query_Ex#delete() の変更について いつも大変お世話になっております。
現在 2.12.x 用のプラグインを 2.13.0 に対応させる作業を行っている者です。 その途中で SC_Query#delete() の実装が変わっている事で問題に遭遇しましたのでご相談させて下さい。 問題の内容ですが、データベースに PostgreSQL を使用してる場合で SC_Query#delete() に大文字を含むテーブル名を渡すとエラーコード 42P01 undefined_table が発生します。 これは SC_Query#delete() 内で MDB2#quoteIdentifier() によるクォートが行われるようになったために、識別子の大文字小文字が区別されるようになってしまった事が原因だと思われます。 PostgreSQL の仕様ではクォートしない識別子は小文字として解釈されます。 http://www.postgresql.jp/document/9.3/html/sql-syntax-lexical.html プラグイン仕様書の命名規則ではテーブル名に大文字を含む可能性のあるプラグインコードを含める事になっておりそれに従って作られたプラグインが稼働中である点、 SC_Query の他のメソッドではクォートされていない点、 以上を踏まえるとクォートしないままの実装に統一した方がよいと考えますがいかがでしょうか? ※正しいSQL文にするなら全てクォートするのが筋だと思いますが手間を考えると大変そうですので(汗 ご意見を頂けましたら幸いです。 よろしくお願いいたします。 |
seasoft |
投稿日時: 2013/10/22 11:41
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 2.13.0 における SC_Query_Ex#delete() の変更について > プラグイン仕様書の命名規則ではテーブル名に大文字を含む可能性のあるプラグインコードを含める事になっておりそれに従って作られたプラグインが稼働中である点、
開発 ML (eccube-dev:42) にて、「規約の見直しをかけたいと考えております」とコメントがありました。 最新の規約を把握しておりませんが、この辺りの整備が遅れているのかもしれませんね。 > SC_Query の他のメソッドではクォートされていない点、 (他のメソッドでクォートするものがあるため?) バックアップが動作しない問題に対して、応急的に対応したものだったと記憶しています。 http://svn.ec-cube.net/open_trac/ticket/2213 にも記載の通り、差し戻しも想定していたのですが、そのままリリースに至っております。
|
snitta |
投稿日時: 2013/10/22 14:37
対応状況: −−−
|
一人前 登録日: 2013/10/3 居住地: 島根県 投稿: 100 |
Re: 2.13.0 における SC_Query_Ex#delete() の変更について seasoft 様
早速のご回答ありがとうございます。 > 最新の規約を把握しておりませんが、この辺りの整備が遅れているのかもしれませんね。 なるほどそのような事情があったのですね。 開発MLは所在が分からず読んでいませんが、公開はコミッターの方限定でしょうか? > http://svn.ec-cube.net/open_trac/ticket/2213 にも記載の通り、差し戻しも想定していたのですが、そのままリリースに至っております。 リリース前に確認して意見を出すべきでしたね…反省です。 既存のプラグインは SC_Query#delete() をオーバーライドして対応させ、 新しく作るプラグインに関しては影響を受けないように小文字で統一する事にいたします。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |