Re: Varias dudas de PostgreSQL

From: Alvaro Herrera <alvherre(at)surnet(dot)cl>
To: Xavier Vidal <xvpxvp(at)menta(dot)net>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Varias dudas de PostgreSQL
Date: 2005-06-08 17:17:14
Message-ID: 20050608171714.GA18845@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Wed, Jun 08, 2005 at 02:37:18PM +0200, Xavier Vidal wrote:
>
> 1) He visto que es recomendable ejecutar REINDEX cada cierto tiempo. ¿Cuál
> es la razón? ¿Acaso la implementación del Hash no es Linear Dinamic? ¿Acaso
> el árbol B no agrupa los nodos cuando hay muchos borrados?

En realidad depende de que version estemos hablando. Los problemas mas
severos con btrees fueron solucionados en 7.4. Todavia hay algunos pero
son menores; no, no hay compactacion de nodos cuando hay muchos
borrados.

Los indices hash no es convenientes usarlos en ningun caso, en Postgres.
Entiendo que esto esta escrito en la documentacion.

> 2) En una función SQL como por ejemplo esta:
>
> CREATE FUNCTION mayor_de_edad(int) RETURNS SETOF personas AS '
> SELECT * FORM personas WHERE edad > $1;
> ' LANGUAGE SQL
>
> ¿Porqué no hace falta poner RETURN? ¿Y si pongo varias sentencias SQL lo
> interpretará igual?

Porque es una funcion SQL, no PL/pgSQL. Son dos lenguajes distintos.

> ¿Además, no es incoherente la palabra SETOF cuando lo que está referenciando
> es una tabla y no un conjunto? ¿Semánticamente no debería ser SETOF ROWTYPE
> personas?

No estas referenciando una tabla, sino un tipo. Lo que sucede es que
cada vez que creas una tabla se crea un tipo que es identico al rowtype
de la tabla, y ademas se llama igual.

> 3)He visto en la documentación que es posible encadenar varios triggers, y
> que éstos se vayan pasando los resultados. ¿A través de donde se pueden
> recoger dichos resultados? ¿Es lo que devuelve la función asociada?

Lo que puedes obtener de los triggers va a parar a NEW, si es que es un
trigger BEFORE <evento>. No puedes pasar nada que no sea el registro
que estas modificando, ojo!

> 4)Hay algun parámetro para no permitir las llamadas recursivas en funciones
> , o para poner un límite de llamadas?

No hay ningun parametro; hay chequeo automatico de limite de
recursividad, dependiendo del tamaño del stack en tu plataforma.

--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"¿Qué importan los años? Lo que realmente importa es comprobar que
a fin de cuentas la mejor edad de la vida es estar vivo" (Mafalda)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2005-06-08 17:18:29 Re: Separador decimal y de miles
Previous Message Nahum Castro 2005-06-08 16:55:44 Re: PG 8.0.3 con RH 7.3