Re: Transaccion ID

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Oswaldo Hernández <listas(at)soft-com(dot)es>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Transaccion ID
Date: 2005-03-15 15:21:32
Message-ID: 20050315152132.GB6564@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Tue, Mar 15, 2005 at 04:14:48PM +0100, Oswaldo Hernández wrote:
> Alvaro Herrera escribió:
>
> >
> >Probablemente te interese tambien registrar un callback para cuando la
> >transaccion (y cada subtransaccion/savepoint) sea comprometida o
> >abortada. Ve RegisterXactCallback() y RegisterSubXactCallback().
>
> Muy interesante, no me habia percatado de esta posibilidad, sobre todo
> si desde un commit tuviera acceso a todas las operaciones realizadas por
> la transacción. ;)
>
> Veo que CallSubXactCallbacks envia los ID de la transaccion pero no se
> si existe un método sencillo para acceder a las operaciones realizadas
> por ella (¿quizá a traves de xlog?).

No, no puedes hacer eso.

Mas que nada los callbacks se proveen para hacer "cleanup" de cualquier
cosa que hayas estado trabajando. No debes hacer por ej.
modificaciones a la BD ahi (nada de insert etc); esto es porque dado que
ocurren "post-commit", la transaccion ya ha sido comprometida, muchas
cosas ya se han guardado y escrito. No estas en un estado apropiado
para modificar la BD.

Como ejemplo: plpgsql usa los callbacks para cerrar las conexiones SPI
que hayan quedado abiertas, o terminar el estado del ejecutor.

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"Ciencias políticas es la ciencia de entender por qué
los políticos actúan como lo hacen" (netfunny.com)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2005-03-15 15:27:58 Re:
Previous Message Oswaldo Hernández 2005-03-15 15:14:48 Re: Transaccion ID