PostgreSQLの関数の引数は100個まで

  • このエントリーをはてなブックマークに追加

100個以上指定するとこんなエラーが出るみたいです。(PostgreSQL 9.5.3で確認)
解決策としては、1つのARRAYとして渡せと。

org.postgresql.util.PSQLException: ERROR: cannot pass more than 100 arguments to a function

そんな無茶な設計をするんじゃないよって事ですが、可変長引数を引数を受け取るこんな関数を定義していました。

CREATE OR REPLACE FUNCTION my_function(VARIADIC ids bigint[]) 
RETURNS TABLE (
fuga_id BIGINT,
hoge BIGINT,
fuga NUMERIC
) AS $$
SELECT fuga_id, hoge, SUM(fuga)
FROM xxxx
WHERE fuga_id = ANY ($1)
$$ LANGUAGE SQL;

この関数をこんな感じで叩いていました。

SELECT * FROM my_function(1);
SELECT * FROM my_function(1,2,3,4,5);

参考: http://stackoverflow.com/questions/17421265/postgresql-how-to-pass-more-than-100-arguments-to-a-function