関数特性
言語: PLPGSQL
戻り値: integer
FUNCTION storePath (pa_server, pa_client, pa_conninfo, pa_connretry) ノード pa_client が DSN pa_conninfo を使用してノード pa_server にアクセスできるように示す STORE_PATH 事象を処理します。declare p_pa_server alias for $1; p_pa_client alias for $2; p_pa_conninfo alias for $3; p_pa_connretry alias for $4; v_dummy int4; begin -- ---- -- 中枢構成のロックを取得 -- ---- lock table sl_config_lock; -- ---- -- 経路が既に存在するか検査 -- ---- select 1 into v_dummy from sl_path where pa_server = p_pa_server and pa_client = p_pa_client for update; if found then -- ---- -- 経路が存在、 pa_conninfo を更新 -- ---- update sl_path set pa_conninfo = p_pa_conninfo, pa_connretry = p_pa_connretry where pa_server = p_pa_server and pa_client = p_pa_client; else -- ---- -- 新規経路 -- -- これに関連したノードに付いて知る以前に STORE_PATH 事象を -- 受け取る場合、これらのノードを未決定なものとして -- 生成します。 -- ---- if not exists (select 1 from sl_node where no_id = p_pa_server) then perform storeNode_int (p_pa_server, '<event pending>', 'f'); end if; if not exists (select 1 from sl_node where no_id = p_pa_client) then perform storeNode_int (p_pa_client, '<event pending>', 'f'); end if; insert into sl_path (pa_server, pa_client, pa_conninfo, pa_connretry) values (p_pa_server, p_pa_client, p_pa_conninfo, p_pa_connretry); end if; -- sl_listen テーブルの書き換え perform RebuildListenEntries(); return 0; end;