関数特性
言語: PLPGSQL
戻り値: text
スキーマ変更を実行するため slonik により "update functions" 過程で呼び出されます。declare p_old alias for $1; begin -- sl_table の更新 if p_old = '1.0.2' or p_old = '1.0.5' then -- Add new column(s) sl_table.tab_relname, sl_table.tab_nspname execute 'alter table sl_table add column tab_relname name'; execute 'alter table sl_table add column tab_nspname name'; -- データで列を populate します。 update sl_table set tab_relname = PGC.relname, tab_nspname = PGN.nspname from pg_catalog.pg_class PGC, pg_catalog.pg_namespace PGN where sl_table.tab_reloid = PGC.oid and PGC.relnamespace = PGN.oid; -- 列に制約を掛けます。 execute 'alter table sl_table alter column tab_relname set NOT NULL'; execute 'alter table sl_table alter column tab_nspname set NOT NULL'; end if; -- sl_sequence をアップグレードします。 if p_old = '1.0.2' or p_old = '1.0.5' then -- Add new column(s) sl_sequence.seq_relname, sl_sequence.seq_nspname execute 'alter table sl_sequence add column seq_relname name'; execute 'alter table sl_sequence add column seq_nspname name'; -- データで列を populate します。 update sl_sequence set seq_relname = PGC.relname, seq_nspname = PGN.nspname from pg_catalog.pg_class PGC, pg_catalog.pg_namespace PGN where sl_sequence.seq_reloid = PGC.oid and PGC.relnamespace = PGN.oid; -- データに制約を掛けます。 execute 'alter table sl_sequence alter column seq_relname set NOT NULL'; execute 'alter table sl_sequence alter column seq_nspname set NOT NULL'; end if; -- ---- -- 1.0.x から 1.1.0 への変更 -- ---- if p_old = '1.0.2' or p_old = '1.0.5' then -- Add new column sl_node.no_spool for virtual spool nodes execute 'alter table sl_node add column no_spool boolean'; update sl_node set no_spool = false; end if; return p_old; end;