From: | Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl> |
---|---|
To: | Ernesto Quiñones A(dot) <ernesto(at)eqsoft(dot)net> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Unas dudas sobre "plan de ejecucion" |
Date: | 2004-11-15 05:17:03 |
Message-ID: | 20041115051703.GC13198@dcc.uchile.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Sat, Nov 13, 2004 at 03:36:23AM +0000, Ernesto Quiñones A. wrote:
Hola,
> Puede ser que este equivocado pero yo creo que no realiza un plan de
> ejecucion, al menos no guardado estaticamente en la funcion, sino lo
> crea al momento de interpretar el script
Estas medio equivocado y medio en la razon.
Las funciones efectivamente se almacenan como cadenas de texto. En el
caso de PL/pgSQL, se toma esa cadena de texto la primera vez que se
ejecuta la funcion en una conexion, se compila y se almacena el
compilado en memoria. Las siguientes veces, se usa la version
compilada. Es por este motivo que si haces una funcion que haga "DROP
TABLE foo; CREATE TABLE foo;" va a funcionar la primera vez que la
ejecutes en una sesion, pero la segunda te va a reclamar que no
encuentra una relacion con el OID xxx. Pero si te desconectas y te
vuelves a conectar, y ejecutas la funcion, se ejecuta correctamente.
Otros lenguajes pueden hacer lo mismo, o puede que no. Depende de como
este escrito el "language handler". Desconozco los detalles. (Si te
interesa, puedes mirar el codigo fuente --- te invito a que compares con
el codigo del manejador de PL/SQL en Oracle ... oh, espera, me dicen por
aca que no esta disponible. Ah, que mala suerte ...)
Si te interesa mucho que la funcion ande rapidisimo, escribela en C.
Las funciones en C no se almacenan como una cadena de texto, sino como
una biblioteca compartida (.so) que lleva codigo objeto.
--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"I call it GNU/Linux. Except the GNU/ is silent." (Ben Reiter)
From | Date | Subject | |
---|---|---|---|
Next Message | Ernesto Quiñones A. | 2004-11-15 08:54:33 | Re: Integridad Referencial |
Previous Message | Alvaro Herrera | 2004-11-15 05:10:27 | Re: tcpip_socket y Permisos sobre Shemas |