[pgsql-jp: 30407] Re: カーソルに対するSELECT

Hiroki Kataoka kataoka @ interwiz.jp
2003年 7月 6日 (日) 00:02:12 JST


片岡です。

At 05 Jul 2003 23:27:16 +0900 Satoshi Nagayasu wrote:
> >   ちなみにエグゼキュータには「結果の送り先」と「何行欲しい」というパラメー
> > タがあって、その辺をコントロールできるようになっています。たとえば通常の
> > SELECT文であれば結果の送り先は「クライアント」で全行欲しいというパラメータ
> > を指定しますし、FETCHであれば指定された行数だけ欲しいと指示します。MOVEの
> > 場合は結果の送り先は「なし」となります。
> 
> 見てみると、やっぱりFetchでもExecutorRun()にパラメータとして取得する行数を
> 渡しているんですね。

  面白いのは、直前までにFETCHした行も含めてResult setを全く持っていないの
で、MOVE BACKWARD 10 等、前に戻るFETCHやMOVEをした場合、10行戻るために今来
た道を再びFETCHしていくんです。もちろん逆向きにですが。

  関連することで興味深い動きを1つ。MERGE JOINを使うSELECT文でカーソルを定
義し、適当にFORWARD方向にFETCHし進めた後にMOVE BACKWARDなどで前戻りすると
、直前のINNER LOOPの分しか戻れなかったりします。要はバグなんですが、この動
きはResult setを持っていないことを証明してたりしますね(笑)。

-- 
Hiroki Kataoka <kataoka @ interwiz.jp>



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