Primero , la función requiere dos parámetros en la definición, como Richard ya sugirió, y actualizó su pregunta en consecuencia.
Segundo , puede crear esa función con "any"
entrada usando LANGUAGE internal
. Sin embargo, no significa que debas hacerlo.
concat_ws()
es solo STABLE
por una razón. Entre otros, la representación de texto de date
o timestamp
depende de la configuración de configuración regional/estilo de fecha, por lo que el resultado no es inmutable . Los índices que se basan en esto podrían romperse silenciosamente. Restringido a text
input, es seguro declararlo IMMUTABLE
.Ya que solo necesitas text
entrada (o varchar
, que tiene una conversión implícita a text
), limítelo a su caso de uso y esté seguro:
CREATE OR REPLACE FUNCTION immutable_concat_ws(text, VARIADIC text[])
RETURNS text AS 'text_concat_ws' LANGUAGE internal IMMUTABLE PARALLEL SAFE;
Márquelo como PARALLEL SAFE
para no estropear el paralelismo al involucrar esta función. El manual:
Resista la tentación de hacer cosas como esta immutable_concat_ws('|', now()::text, 'foo')
. Esto reintroduciría dichas dependencias en la llamada.
Relacionado: