NOTICE 或错误信息在哪里?

Where the NOTICE or error messages?

处没有通知和错误消息
CREATE or replace FUNCTION copy_to_csv(
  fname text,
  query text,
  header boolean DEFAULT true,
  quotedfields text[] DEFAULT NULL,
  usedate boolean DEFAULT true
) RETURNS text AS $f$
DECLARE
  aux text :='';
BEGIN
  RAISE NOTICE 'HELLO!!!!!';
  IF p_quotedfields IS NOT NULL THEN
    aux := ', FORCE_QUOTE('|| array_to_string(quote_ident(quotedfields),',') ||')';
  END IF;
  aux := format(
    'COPY (%L) TO (%L) WITH (FORMAT CSV, HEADER %L%s)',
    query,
    CASE WHEN usedate THEN fname|| now()::date::text ELSE fname END ||'.csv',
    header,
    aux
  );
  RAISE NOTICE 'HELLO2';
  EXECUTE aux;
  RAISE NOTICE 'HELLO3';
  RETURN aux;
END;
$f$ LANGUAGE plpgsql STRICT;

...正在调用 select copy_to_csv(E'select * from t', '/tmp/t');。在 UBUNTU 16 LTS.

使用 PostgreSQL v10

但是这个函数工作正常:

CREATE or replace FUNCTION test1() RETURNS void AS $f$
BEGIN
  RAISE NOTICE 'HELLO!!!';
END;
$f$ LANGUAGE plpgsql STRICT;

PS:quote_ident() 重载也工作正常,是通过

实现的
CREATE FUNCTION quote_ident(text[]) RETURNS text[] AS $f$
  SELECT array_agg(quote_ident(x)) FROM unnest() t(x)
$f$ LANGUAGE SQL IMMUTABLE;

当函数为STRICT且参数之一为NULL时,不执行函数体,结果为NULL。从函数定义中删除 STRICT

顺便说一句,你弄错了参数的顺序。