FWIW the SQL is DROP AGGREGATE IF EXISTS array_cat_aggregate(anyarray); CREATE AGGREGATE array_cat_aggregate(anyarray) ( SFUNC = array_cat, STYPE = anyarray, INITCOND = '{}' ); Followed by the other statement given in my previous email. But, I think you've thoroughly answered by question. Thanks! So, instead of dropping aggregate “if exists” why not check pg_catalog for aggregate existence, and create it only if it does NOT exist? Regards, Igor Neyman |