[pgpool-general-jp: 880] Re: DML対象テーブルにレイアウト変更があった場合
Tatsuo Ishii
ishii @ sraoss.co.jp
2011年 1月 8日 (土) 12:59:36 JST
すみません。今のところ、できないです。
キャッシュはpgpool子プロセスのプライベートメモリ内にあるので、たとえば
child_life_time が有効になっていて、タイマーがexpireして子プロセスが再
起動された場合には、結果としてキャッシュがクリアされますが...
手動でキャッシュをクリアできるようにするとか、キャッシュの寿命を指定で
きるようにするとか、そんなに難しいことではないので、将来の課題にします。
もちろん、パッチも大歓迎です:-)
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp
> 松崎です。
>
> お世話になります。
>
> レプリケーションモードでCURRENT_TIMESTAMPや
> DEFAULT値を使うINSERT文を実行したあと、
> そのテーブルから項目が追加・削除された場合、
> 変更前のテーブルレイアウトでSQL文が組み立てられてしまいました。
>
> pgpoolを再起動したら最新のテーブルレイアウトでSQL文が組み立てられたのですが、
> 起動したままでこのキャッシュ(?)をクリアする事は出来ますか?
>
> ■テストしたテーブルのレイアウト
> DROP TABLE IF EXISTS MATSUZ_TEST_TIMESTAMP CASCADE
> ;
>
> CREATE TABLE MATSUZ_TEST_TIMESTAMP
> (
> COL1 VARCHAR(128) NOT NULL,
> DTTM_DEFAULT TIMESTAMP DEFAULT LOCALTIMESTAMP
> NOT NULL, -- DEFAULT値で自動セット
> DTTM_TRRIGER TIMESTAMP NOT NULL,
> -- トリガーで自動セット
> DTTM_INSERT_STATEMENT TIMESTAMP NOT NULL,
> -- INSERT文で明示的にセット
> CONSTRAINT PK_MATSUZ_TEST_TIMESTAMP PRIMARY KEY (COL1) USING INDEX
> TABLESPACE MST_INDEX
> )
> TABLESPACE MST_DATA
> ;
>
> CREATE OR REPLACE FUNCTION TRG_MATSUZ_TEST_TIMESTAMP_TS()
> RETURNS TRIGGER
> AS
> $$
> BEGIN
>
> -- トリガーで自動セット
> NEW.DTTM_TRRIGER := CURRENT_TIMESTAMP;
>
> RETURN NEW;
>
> END;
> $$
> LANGUAGE plpgsql
> ;
>
> CREATE TRIGGER MATSUZ_TEST_TIMESTAMP_TS
> BEFORE INSERT OR UPDATE
> ON MATSUZ_TEST_TIMESTAMP
> FOR EACH ROW
> EXECUTE PROCEDURE TRG_MATSUZ_TEST_TIMESTAMP_TS()
> ;
>
> ■テストした更新SQL
> insert into MATSUZ_TEST_TIMESTAMP
> (
> COL1
> , DTTM_INSERT_STATEMENT
> )
> values
> (
> 'a'
> , CURRENT_TIMESTAMP
> )
> ;
>
> 以上、よろしくお願いいたします。
>
> --
> 松崎 学 <matsumana @ gmail.com>
> _______________________________________________
> pgpool-general-jp mailing list
> pgpool-general-jp @ sraoss.jp
> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp
pgpool-general-jp メーリングリストの案内