CREATE OR REPLACE LANGUAGE をシミュレートする

PostgreSQL で plpgsql を利用するには CREATE LANGUAGE する必要があるが、複数回実行すると2度目からエラーになってしまう。
"CREATE OR REPLACE" 的なことはできないかどうかググったところ、そのものずばりがかかれてあった。

http://wiki.postgresql.org/wiki/CREATE_OR_REPLACE_LANGUAGE

CREATE OR REPLACE FUNCTION make_plpgsql()
RETURNS VOID
LANGUAGE SQL
AS $$
CREATE LANGUAGE plpgsql;
$$;
 
SELECT
    CASE
    WHEN EXISTS(
        SELECT 1
        FROM pg_catalog.pg_language
        WHERE lanname='plpgsql'
    )
    THEN NULL
    ELSE make_plpgsql() END;
 
DROP FUNCTION make_plpgsql();

Chef でクエリを初回のみ実行する方法が分からなかったため調査していたのだが、これで Chef で複数回実行しても大丈夫になるはず?