[pgsql-jp: 35618] Re: ANALYZE で oid が変化してしまう

Kazawa Tsunehisa digitune @ gmail.com
2005年 6月 29日 (水) 17:10:32 JST


加澤です。石井さん、いつも貴重なご助言ありがとうございます。

05/06/29 に Tatsuo Ishii<t-ishii @ sra.co.jp> さんは書きました:
> 石井です.
> 
> psqlで接続した後,別端末からpsコマンドでpostgresプロセスのpidを調べ,
> gdbでpostgresにアタッチしてnewoidにブレークポイントを貼って,ANALYZEを
> 実行し,止ったところでgdbのbtコマンドでバックトレースを取れば,どうい
> う条件でnewoidが呼ばれるか簡単にわかると思います.

現象が発生するマシンは管理セクションが異なるためいろいろ大変だったのです
が (そんな内部事情はどうでも良い>俺)、何とか backtrace を取ることが出来ま
した。下記に添付します。

Breakpoint 1, 0x0809e164 in newoid ()
(gdb) bt
#0  0x0809e164 in newoid ()
#1  0x08080770 in toast_compress_datum ()
#2  0x08081e01 in heap_tuple_toast_attrs ()
#3  0x0807e0ee in heap_update ()
#4  0x0807e1a8 in simple_heap_update ()
#5  0x080d6a06 in analyze_rel ()
#6  0x0810378d in vacuum ()
#7  0x081769f0 in PortalSetResultFormat ()
#8  0x08176d83 in PortalRun ()
#9  0x081732c9 in pg_parse_query ()
#10 0x08174b7b in PostgresMain ()
#11 0x08150505 in ClosePostmasterPorts ()
#12 0x08152619 in PostmasterMain ()
#13 0x081246cc in main ()

これは他のマシンでは起きない「ANALYZE pg_largeobject」を実行した際に、
newoid にセットした breakpoint にて停止した際の backtrace です。

早速 7.4.7 のソースに当たってみたんですが、toast_compress_datum の中
に newoid が見あたらない?

Red Hat による patch が当たっているのかと Red Hat 側から SRPM を取得
して中身を検めてみましたが、そちらでも特に違いはない様子…?

よく分からなくなってきました…。

-- 
Tsunehisa KAZAWA
http://www.digitune.org



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