Saturday, August 16, 2008

Re: [pgsql-es-ayuda] Inconsistencias con el catálogo?

Alejandro D. Burne escribió:
> Probablemente se haya planteado anteriormente el caso. Algunas veces
> uno modifica estructuras de una vista remota, para ello (cuando
> cambian los campos que la componen, por ejemplo) necesita eliminarla y
> volver a crearla. El problema se presenta si esa vista es utilizada en
> una función, ya que al borrarla no genera ninguna advertencia y luego
> al ejecutar la función nos devuelve un error sobre un objeto
> inexistente (adjunto un ejemplo).

Esto fue corregido hasta cierto punto en 8.3. Tu ejemplo funciona:

alvherre=> CREATE TABLE _test AS SELECT 1::SMALLINT;
SELECT
alvherre=> CREATE OR REPLACE VIEW _vtest AS SELECT * FROM _test;
CREATE VIEW
alvherre=> CREATE FUNCTION _ftest() RETURNS void AS
alvherre-> $BODY$ BEGIN PERFORM 1 FROM _vtest; RETURN; END $BODY$ LANGUAGE 'plp
sql' VOLATILE;
CREATE FUNCTION
alvherre=> SELECT * FROM _ftest();
_ftest
--------

(1 ligne)

alvherre=> DROP VIEW _vtest;
DROP VIEW
alvherre=> CREATE VIEW _vtest AS SELECT *, 2 FROM _test;
CREATE VIEW
alvherre=> SELECT * FROM _ftest();
_ftest
--------

(1 ligne)

--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
"Puedes elegir el color de tu auto -- siempre y cuando sea negro."
(Henry Ford)
--
TIP 5: ¿Has leído nuestro extenso FAQ?
http://www.postgresql.org/docs/faqs.FAQ.html

No comments: