関数特性
言語: PLPGSQL
戻り値: integer
FUNCTION storeListen_int (li_origin, li_provider, li_receiver) レシーバノード li_receiver がノード li_origin から届くメッセージを取得するため、ノード li_provider を監視する事を示す STORE_LISTEN 事象を処理します。declare p_li_origin alias for $1; p_li_provider alias for $2; p_li_receiver alias for $3; v_exists int4; begin -- ---- -- 中枢構成のロックを取得 -- ---- lock table sl_config_lock; select 1 into v_exists from sl_listen where li_origin = p_li_origin and li_provider = p_li_provider and li_receiver = p_li_receiver; if not found then -- ---- -- これに関連したノードに付いて知る以前に STORE_LISTEN 事象を -- 受け取る場合、これらのノードを未決定なものとして -- 生成します。 -- ---- if not exists (select 1 from sl_node where no_id = p_li_origin) then perform storeNode_int (p_li_origin, '<event pending>', 'f'); end if; if not exists (select 1 from sl_node where no_id = p_li_provider) then perform storeNode_int (p_li_provider, '<event pending>', 'f'); end if; if not exists (select 1 from sl_node where no_id = p_li_receiver) then perform storeNode_int (p_li_receiver, '<event pending>', 'f'); end if; insert into sl_listen (li_origin, li_provider, li_receiver) values (p_li_origin, p_li_provider, p_li_receiver); end if; return 0; end;