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