A função string_agg(expr, delimitador) do Postgres é ótima. Mas eu gostaria de ter uma versão que levasse um único argumento -- o campo para agregar -- e assumisse um delimitador de ', ' já que é o que eu quero 9 vezes em 10. Com uma função não agregada, eu poderia simplesmente faça isso:
create or replace function public.string_agg(text)
returns text
as $$
select string_agg($1, ', ');
$$ language sql
immutable;
Mas como string_agg é uma função agregada, isso não funciona. Ele reclama que o campo que estou passando para ele precisa estar na cláusula GROUP BY, o que me diz que o mecanismo de consulta não entende que meu wrapper é uma função agregada.
Eu olhei os documentos para agregados definidos pelo usuário (http://www.postgresql.org/docs/9.1/static/xaggr.html e http://www.postgresql.org/docs/9.1/static/sql-createaggregate .html ), mas não é óbvio para mim como eu poderia definir meu novo string_agg(text) usando o string_agg(text, text) existente. Parece que eu teria que definir minha nova função do zero, que é mais complexa do que eu quero assumir, e também não estou totalmente confiante de que poderia espelhar perfeitamente o comportamento do string_agg integrado.
Então, existe alguma técnica para criar um wrapper simples que não estou vendo? Ou vou ter que fazer mais trabalho?