Alvaro Herrera escribió:
> Arturo Munive escribió:
>> Hola a todos:
>> &Tengo una duda, mas que un problema.
>> Quisiera saber como es que funcionan los procedimientos almacenados
>> escritos en otros lenguajes que no son plpgsql.
>
> Se carga el interprete del lenguaje y se le entrega el texto de la
> funcion para que la compile y la ejecute.
>
> C es un caso especial: lo que se hace es abrir la biblioteca donde esta
> la funcion, e invocar el "simbolo" de esa funcion (llamando a dlsym).
>
> Java es otro caso mas o menos especial: lo que se hace es levantar una
> JVM, y luego se le entrega el bytecode de la funcion previamente
> compilada.
>
> En los casos de Perl, Python, PHP y otros, lo que se hace es pasarle el
> texto y hacer que el interprete compile y ejecute.
>
>> Es decir si escribo un procedimiento o función en C o en Java , entonces
>> podré utilizar librerías de estos, como se "traducen" dentro de la BD,
>> son mas rápidos o mas lentos (o iguales) a uno escrito e sql, o plpgsql????
>
> Diferentes. Algunas cosas son mas rapidas, otras son mas lentas.
>
>> como asi se compilan por ejemplo el pl de php, hay que tener instalado
>> entonces php como complemento de apache??, o una maquina virtual de Java
>> si es Java el pl???
>
> Las ultimas versiones de PL/php requieren tener el SAPI de PHP "embed"
> (que esta pensado precisamente para estos casos). Versiones anteriores
> usaban el complemento de Apache, pero era feo y hace tiempo que lo
> queriamos cambiar.
Entonces, mas allá de la conveniencia de hacer procedimientos
almacenados en el lenguaje que uno conoce (exceptuando plpqsql) es mas
recomendable hacer estos procedimientos en SQL o plpgsql, o en los otros???
o hay alguna cosa que se pueda hacer ocn uno que no se pueda hacer con
los otros???