[pgsql-jp: 40848] 順番が一定しない

H.Nakai nakai @ shinko.co.jp
2011年 7月 4日 (月) 12:45:10 JST


中井です。

PostgreSQL 8.2.3 から 8.4.5にバージョンアップしたところ
面白い現象に出くわしました。
項目が a, b, c とある表 ggg において、
 select a, b, c
   from ggg
  order by a, b
 offset N
  limit M;
で抽出するとき、2ページ目で出てくるべき行が出てこないで、1ページ目に
含まれていた行が出てきます。
a, b でソートしていますが、c についてはソートしているわけではない
ので、適当な順番で表示されるのは良いのですが、一定しないのは予想外
でした。

例)
データ ggg
   a,   b,   c
  11,  34,  34
  11,  33,  12
  11,  37,  13
  11,  34,  28
検索1
 select a, b, c
   from ggg
  order by a, b
 offset 1
  limit 2;
検索結果1
  11,  33,  12
  11,  34,  34
検索2
 select a, b, c
   from ggg
  order by a, b
 offset 3
  limit 2;
検索結果2
  11,  34,  34
  11,  37,  13
検索結果2に期待したのは、下記のデータです。
  11,  34,  28
  11,  37,  13
これは仕様でしょうか?
8.2.3ではこういう現象は(たまたま?)発生しませんでした。
取り敢えず、order by a, b, c で対処しました。
宜しくお願いします。

-- 
-=-=-=-=  SHINKO ELECTRIC INDUSTRIES CO., LTD.           =-=-=-=-
=-=-=-=-    Research & Development Div.                  -=-=-=-=
-=-=-=-=      Designing Technology Development Dept.     =-=-=-=-
=-=-=-=-  Name:Hisakazu Nakai          TEL:026-263-3922  -=-=-=-=
-=-=-=-=  Mail:nakai @ shinko.co.jp      FAX:026-263-4562  =-=-=-=-


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