[pgsql-jp: 24926] ビューのバグ?

Takahiro Iwatani iwatani @ esprit.co.jp
2002年 2月 24日 (日) 23:36:52 JST


 お世話になります。
 岩谷と申します。

 おそらく初めて投稿させていただくと思います。
 よろしくお願いいたします。

 PostgreSQL7.1.2とPerl5を使用した
CGIによる不動産検索システムを開発しました。
 そのシステムの管理者向け機能として、
次のようなページの仕組みが存在します。

(1)全重複物件リストおよび重複件数表示ページ
 同じ内容で登録された物件名とその重複している
件数を表示するページです。
 各重複物件の横に存在する詳細ボタンを押すと、
(2)に進みます。
※ここで同じ内容とは、「住所」、「価格」などが
同じ物件のことです。物件番号(ID)のみが異なります。

(2)重複物件リスト表示ページ
 (1)で選択した重複物件内容のリストが表示されます。
 物件番号が違うのみです。


 現在、このシステムを運用していますが、
運用しているうちに、(1)で表示される件数と、
(2)で表示される物件の件数が
違うものが出てくる場合があります。

 プログラムやビューの定義を見る限りでは、
なにも問題がないと思われます。
 そこで、ビュー定義を記述したSQLをpsqlコマンドで
再登録したところ、問題が解決しました。
 しかし、しばらくすると、また件数が違う場合が出現します。
 そこで、また、ビューのSQLを再登録すると問題が
なおりました。

 ビューはテーブルの情報を常にリアルタイムで
表示されるものだと思っていますが、何らかの条件で
ビューが崩れてしまうことがあるのでしょうか?
 PostgreSQLのバグでしょうか?

 データベース、ビューを次のように使っていますが、
何か原因となるようなもの、操作はありますでしょうか?

・ビューAをビューBで使用し、そのビューBを使用しています。
 つまり、ビューを二重で使用するような感じです。
・FROM句でLEFT OUTER JOINを4重に使用しています。
 FROM ((((xxx) LEFT OUTER JOIN xxx) LEFT OUTER JOIN xxx)
LEFT OUTER JOIN xxx)
のような感じです。
・ビューAでGROUP BY、HAVINGを使用しています。
・WHERE句で期限切れ物件を表示させないために次のように
 条件を記述しています(LMT_DT:期限日YYYYMMdd形式)。
 'now' <= to_date(LMT_DT,'YYYYMMdd')
・DBに登録されている物件数は約1万件存在します。
・週に1回VACUUMをしています。

 どなたか、お助け願えませんでしょうか?
 よろしくお願い致します。




pgsql-jp メーリングリストの案内