Re: Verificacion de procedimientos almacenados

From: Martín Marqués <martin(at)bugs(dot)unl(dot)edu(dot)ar>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: pgsql-es-ayuda(at)postgresql(dot)org, Raul Torres Apaza <a20002171(at)hotmail(dot)com>
Subject: Re: Verificacion de procedimientos almacenados
Date: 2005-10-07 10:51:17
Message-ID: 200510070751.18583.martin@bugs.unl.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El Jue 06 Oct 2005 21:10, Alvaro Herrera escribió:
>
> > prueba=> select lanvalidator from pg_language where lanname = 'plpgsql';
> > lanvalidator
> > --------------
> > 0
> > (1 fila)
>
> Ojo, si lanvalidator es 0 es porque _no_ _tienes_ el validador instalado
> ...

Oh, oh. :-(

Con razon mis funciones se cargaban siempre bien pero despues tiraban errores!

Entonces ahora me toca ver como meterle el validador a un "LANGUAGE" ya
creado. Bueno, me costo ver donde estaban cada una de las cosas, pero esto es
lo que saque en limpio:

prueba=# CREATE FUNCTION plpgsql_validator(oid) RETURNS void AS
prueba-# '$libdir/plpgsql' LANGUAGE C;
CREATE FUNCTION
prueba=# \df plpgsql_validator
Listado de funciones
Schema | Nombre | Tipo de dato de salida | Tipos de datos de
argumentos
--------+-------------------+------------------------+------------------------------
public | plpgsql_validator | void | oid
(1 fila)

Hasta aca todo bien, ya que la definicion del lenguaje sigue siendo el mismo,
solo agregue el validador, pero no le he dicho al lenguaje que lo use.

Y aca hay que ver donde esta la informacion del validador. Bueno, con algo de
pruebas vi que lo que habia que hacer es lo siguiente:

prueba=# SELECT oid FROM pg_catalog.pg_proc WHERE proname =
'plpgsql_validator' ORDER BY proname;
oid
--------
864703
(1 fila)

prueba=# SELECT * FROM pg_language ;
lanname | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl
----------+---------+--------------+---------------+--------------+---------------
internal | f | f | 0 | 2246 |
c | f | f | 0 | 2247 |
plpgsql | t | t | 148459 | 0 |
sql | f | t | 0 | 2248 |
{=U/postgres}
(4 filas)

prueba=# UPDATE pg_language SET lanvalidator = 864703 WHERE lanname =
'plpgsql';
UPDATE 1
prueba=# SELECT * FROM pg_language ;
lanname | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl
----------+---------+--------------+---------------+--------------+---------------
internal | f | f | 0 | 2246 |
c | f | f | 0 | 2247 |
sql | f | t | 0 | 2248 |
{=U/postgres}
plpgsql | t | t | 148459 | 864703 |
(4 filas)

Listo!

--
07:29:03 up 2 days, 22:35, 1 user, load average: 1.16, 0.95, 0.85
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' ||
Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2005-10-07 13:02:44 RE: Manejo de fechas
Previous Message Mximo Eduardo Mndez 2005-10-07 08:35:22 RE: Secuencias Hibernate