Despues del comentario de Martín Díaz pensé que podía quedar "basura" en el catálogo por lo que le eché un vistazo y me apareció lo siguiente:
nacer=# select * from pg_proc where oid=16410; -[ RECORD 1 ]---+------------------------------------------------------------------------------------------ proname | periodos pronamespace | 16394 proowner | 10 prolang | 11574 procost | 100 prorows | 1000 provariadic | 0 proisagg | f proiswindow | f prosecdef | f proisstrict | f proretset | t provolatile | v pronargs | 0 pronargdefaults | 0 prorettype | 1114 proargtypes | proallargtypes | {1114} *proargmodes | {t}* *proargnames | {per_fecha}* proargdefaults | prosrc | | declare | lts_minimo timestamp; | lts_maximo timestamp; | begin | select max(periodo), min(periodo) into lts_maximo, lts_minimo from nacer.historicotemp; | RETURN QUERY select * from generate_series(lts_minimo, lts_maximo, '1 month'::interval); | end; | probin | proconfig | proacl | Marcado en azul se puede ver que si está {per_fecha} : Sospecho que la función ya existía con un parámetro de salida o return de tipo tabla y luego hice un create nuevo, esperando que por sobrecarga cree una nueva función con el mismo nombre, pero contrario a eso escribió sobre la misma fila del catálogo dejando basura. Puede ser Alvaro? CREATE OR REPLACE FUNCTION nacer.periodos() RETURNS SETOF timestamp without time zone AS $BODY$ declare lts_minimo timestamp; lts_maximo timestamp; begin select max(periodo), min(periodo) into lts_maximo, lts_minimo from nacer.historicotemp; RETURN QUERY select * from generate_series(lts_minimo, lts_maximo, '1 month'::interval); end; $BODY$ LANGUAGE plpgsql No hay ninguna otra función ni vista ni tabla con el mismo nombre. A menos que Alvaro pida que no borre aún para hacer alguna prueba mas, lo que voy a hacer es un drop y luego la crearé de nuevo para ver que pasa. Guillermo Villanueva