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

Responder a