Thread: Support for 2-Phase Commit protocol

Support for 2-Phase Commit protocol

From
"Freddy Villalba Arias"
Date:

Hi everybody,

 

I forgot to include this other question (also urgent, sorry if I’m stressing you up): does anybody know what is PostgreSQL’s current status regarding “Two Phase Commit Protocol Support”?

 

Again, thanx.

 

Regards,

Freddy.

Re: Support for 2-Phase Commit protocol

From
Alexander Staubo
Date:
This is on the PostgreSQL todo list:

   http://developer.postgresql.org/todo.php

However, as far as I know it's not something people are working
actively on, or at least not to the extent that we will see a release
in the near term. I would like to be wrong, though.

Seeing as this is a server issue and not specifically a JDBC issue,
the pgsql-hackers list is probably the place to ask about the
development status of future features.

To my knowledge, Firebird (http://www.firebirdsql.org/) is the only
open-source database that supports two-phase commits; its JDBC driver
comes with JTA support. You may have better luck with that. Firebird
is itself a decent database, but is going to feel like a step back
into the '80s once you've gotten used to PostgreSQL's sleek, modern
facilities [*].

[*] Variable-length "text" data type that does not need a pre-declared
size, virtually unlimited row sizes, online alter/drop/rename for
tables/columns/etc., ability to index fields declared as >250 chars
long, SQL shell with proper readline support, intelligible error
messages, mature documentation, I could go on.

Alexander.

on 2004-03-29 17:19 Freddy Villalba Arias wrote:

> Hi everybody,
>
>
>
> I forgot to include this other question (also urgent, sorry if I’m
> stressing you up): does anybody know what is PostgreSQL’s current status
> regarding “Two Phase Commit Protocol Support”?
>
>
>
> Again, thanx.
>
>
>
> Regards,
>
> Freddy.
>


Re: Support for 2-Phase Commit protocol

From
Bruce Momjian
Date:
Someone has a 2-phase commit patch and we are looking to get it into
7.5.


---------------------------------------------------------------------------

Alexander Staubo wrote:
> This is on the PostgreSQL todo list:
>
>    http://developer.postgresql.org/todo.php
>
> However, as far as I know it's not something people are working
> actively on, or at least not to the extent that we will see a release
> in the near term. I would like to be wrong, though.
>
> Seeing as this is a server issue and not specifically a JDBC issue,
> the pgsql-hackers list is probably the place to ask about the
> development status of future features.
>
> To my knowledge, Firebird (http://www.firebirdsql.org/) is the only
> open-source database that supports two-phase commits; its JDBC driver
> comes with JTA support. You may have better luck with that. Firebird
> is itself a decent database, but is going to feel like a step back
> into the '80s once you've gotten used to PostgreSQL's sleek, modern
> facilities [*].
>
> [*] Variable-length "text" data type that does not need a pre-declared
> size, virtually unlimited row sizes, online alter/drop/rename for
> tables/columns/etc., ability to index fields declared as >250 chars
> long, SQL shell with proper readline support, intelligible error
> messages, mature documentation, I could go on.
>
> Alexander.
>
> on 2004-03-29 17:19 Freddy Villalba Arias wrote:
>
> > Hi everybody,
> >
> >
> >
> > I forgot to include this other question (also urgent, sorry if I?m
> > stressing you up): does anybody know what is PostgreSQL?s current status
> > regarding ?Two Phase Commit Protocol Support??
> >
> >
> >
> > Again, thanx.
> >
> >
> >
> > Regards,
> >
> > Freddy.
> >
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: Support for 2-Phase Commit protocol

From
"Freddy Villalba Arias"
Date:
I'm currently envolved in a Project requiring v7.4 (7.4.2?). I won't
be using distributed transaction, but transactions that span multiple
objects (all of them on the same JVM). Therefore, as I understood it
from reading the JTA spec, I should not need to use the XA "objects"
(XAConnection...) but just "plain JDBC"'s ones (Connection,
Statement...).

Then, the following question arises: does the fact that 2-Phase commit
isn't yet supported imply that I cannot use JTA? Are these to issues
unrelated?

I'll look forward for your feedback.

-----Mensaje original-----
De: Bruce Momjian [mailto:pgman@candle.pha.pa.us]
Enviado el: lunes, 29 de marzo de 2004 18:36
Para: Alexander Staubo
CC: Freddy Villalba Arias; PostgreSQL JDBC Mailing List
Asunto: Re: [JDBC] Support for 2-Phase Commit protocol


Someone has a 2-phase commit patch and we are looking to get it into
7.5.


------------------------------------------------------------------------
---

Alexander Staubo wrote:
> This is on the PostgreSQL todo list:
>
>    http://developer.postgresql.org/todo.php
>
> However, as far as I know it's not something people are working
> actively on, or at least not to the extent that we will see a release
> in the near term. I would like to be wrong, though.
>
> Seeing as this is a server issue and not specifically a JDBC issue,
> the pgsql-hackers list is probably the place to ask about the
> development status of future features.
>
> To my knowledge, Firebird (http://www.firebirdsql.org/) is the only
> open-source database that supports two-phase commits; its JDBC driver
> comes with JTA support. You may have better luck with that. Firebird
> is itself a decent database, but is going to feel like a step back
> into the '80s once you've gotten used to PostgreSQL's sleek, modern
> facilities [*].
>
> [*] Variable-length "text" data type that does not need a pre-declared

> size, virtually unlimited row sizes, online alter/drop/rename for
> tables/columns/etc., ability to index fields declared as >250 chars
> long, SQL shell with proper readline support, intelligible error
> messages, mature documentation, I could go on.
>
> Alexander.
>
> on 2004-03-29 17:19 Freddy Villalba Arias wrote:
>
> > Hi everybody,
> >
> >
> >
> > I forgot to include this other question (also urgent, sorry if I?m
> > stressing you up): does anybody know what is PostgreSQL?s current
status
> > regarding ?Two Phase Commit Protocol Support??
> >
> >
> >
> > Again, thanx.
> >
> >
> >
> > Regards,
> >
> > Freddy.
> >
>
>
> ---------------------------(end of
broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania
19073

Re: Support for 2-Phase Commit protocol

From
Alexander Staubo
Date:
on 2004-03-29 19:43 Freddy Villalba Arias wrote:

> I'm currently envolved in a Project requiring v7.4 (7.4.2?). I won't
> be using distributed transaction, but transactions that span multiple
> objects (all of them on the same JVM). Therefore, as I understood it
> from reading the JTA spec, I should not need to use the XA "objects"
> (XAConnection...) but just "plain JDBC"'s ones (Connection,
> Statement...).

What do you mean by multiple objects? Sounds like you have multiple
transactions on a single back end that all need to complete atomically
-- more related to nested transactions and savepoints than to
two-phase commits.

> Then, the following question arises: does the fact that 2-Phase commit
> isn't yet supported imply that I cannot use JTA?

It's been a while since I read the JTA spec, but even if the
transaction manager did not require XA support from the driver, it
still would not be able to glue your transactions together using a
two-phase commit, which is what you want. So the TM would commit each
transaction individually, but it would not be able to roll them back
in the case of mid-point failure.

The point of the XA interfaces is to encapsulate the two-phase
protocol, allowing local transactions to be prepared before they are
committed. Without the XA support, JTA is basically a standard
interface to a transaction manager and X/Open-style transaction semantics.

I assume Bruce is talking either about this patch:

   http://archives.postgresql.org/pgsql-patches/2003-10/msg00273.php

or this work:

   http://snaga.org/pgsql/

Alexander.

on 2004-03-29 19:43 Freddy Villalba Arias wrote:

 > I'm currently envolved in a Project requiring v7.4 (7.4.2?). I won't
 > be using distributed transaction, but transactions that span multiple
 > objects (all of them on the same JVM). Therefore, as I understood it
 > from reading the JTA spec, I should not need to use the XA "objects"
 > (XAConnection...) but just "plain JDBC"'s ones (Connection,
 > Statement...).
 >
 > Then, the following question arises: does the fact that 2-Phase commit
 > isn't yet supported imply that I cannot use JTA? Are these to issues
 > unrelated?
 >
 > I'll look forward for your feedback.
 >
 > -----Mensaje original-----
 > De: Bruce Momjian [mailto:pgman@candle.pha.pa.us]
 > Enviado el: lunes, 29 de marzo de 2004 18:36
 > Para: Alexander Staubo
 > CC: Freddy Villalba Arias; PostgreSQL JDBC Mailing List
 > Asunto: Re: [JDBC] Support for 2-Phase Commit protocol
 >
 >
 > Someone has a 2-phase commit patch and we are looking to get it into
 > 7.5.
 >
 >
 >
------------------------------------------------------------------------
 > ---
 >
 > Alexander Staubo wrote:
 >
 >>This is on the PostgreSQL todo list:
 >>
 >>   http://developer.postgresql.org/todo.php
 >>
 >>However, as far as I know it's not something people are working
 >>actively on, or at least not to the extent that we will see a release
 >>in the near term. I would like to be wrong, though.
 >>
 >>Seeing as this is a server issue and not specifically a JDBC issue,
 >>the pgsql-hackers list is probably the place to ask about the
 >>development status of future features.
 >>
 >>To my knowledge, Firebird (http://www.firebirdsql.org/) is the only
 >>open-source database that supports two-phase commits; its JDBC driver
 >>comes with JTA support. You may have better luck with that. Firebird
 >>is itself a decent database, but is going to feel like a step back
 >>into the '80s once you've gotten used to PostgreSQL's sleek, modern
 >>facilities [*].
 >>
 >>[*] Variable-length "text" data type that does not need a pre-declared
 >
 >
 >>size, virtually unlimited row sizes, online alter/drop/rename for
 >>tables/columns/etc., ability to index fields declared as >250 chars
 >>long, SQL shell with proper readline support, intelligible error
 >>messages, mature documentation, I could go on.
 >>
 >>Alexander.
 >>
 >>on 2004-03-29 17:19 Freddy Villalba Arias wrote:
 >>
 >>
 >>>Hi everybody,
 >>>
 >>>
 >>>
 >>>I forgot to include this other question (also urgent, sorry if I?m
 >>>stressing you up): does anybody know what is PostgreSQL?s current
 >
 > status
 >
 >>>regarding ?Two Phase Commit Protocol Support??
 >>>
 >>>
 >>>
 >>>Again, thanx.
 >>>
 >>>
 >>>
 >>>Regards,
 >>>
 >>>Freddy.
 >>>
 >>
 >>
 >>---------------------------(end of
 >
 > broadcast)---------------------------
 >
 >>TIP 6: Have you searched our list archives?
 >>
 >>               http://archives.postgresql.org
 >>
 >
 >



Re: Support for 2-Phase Commit protocol

From
Dave Cramer
Date:
Have a look at hibernate, www.hibernate.org, it supports what you are
looking for

Dave
On Mon, 2004-03-29 at 10:19, Freddy Villalba Arias wrote:
> Hi everybody,
>
>
>
> I forgot to include this other question (also urgent, sorry if I’m
> stressing you up): does anybody know what is PostgreSQL’s current
> status regarding “Two Phase Commit Protocol Support”?
>
>
>
> Again, thanx.
>
>
>
> Regards,
>
> Freddy.
>
--
Dave Cramer
519 939 0336
ICQ # 14675561


Re: Support for 2-Phase Commit protocol

From
"Freddy Villalba Arias"
Date:
Thanks for all the comments you've already sent.

It's simpler than it sounds... I'll give you a practical example, so you
have a better idea of what I need.

Suppose I have a Business Rule (object) that encapsulates a "Delete
Category" operation. That operation consists of:

- Deleting all products in that category.
- Deleting other objects (entities) related to the category.
- Deleting THE category itself.

There is a ProductDAO object with a delete method that the business rule
object will invoke when deleting every instance (record) of a product.
The same concept is applied to the other entities related to the
category. Also, there is CategoryDAO, with the same behaviour.

I want that Business Rule encapsulating a "delete" operation that spans
those "n" DAO objects to be Transactional. That is, if any error occurs
at any point during the process, rollback.

I'm already aware that this is THE TYPICAL situation where you'd use an
O/R mapping tool (Hibernate, OJB... you name it), but, for many reasons,
it's impossible for us to incorporate it into the system's architecture.
Therefore, my intent for - at least - having some (alternative) way for
making the system as transactional as possible. I believe there are only
2 options: plain JDBC transactions (which I'd want to avoid since that
would force me to hardcode, screw up the design) or JTA.

As I mentioned earlier, all transactions involve a single DataSource, a
single JVM. Therefore, no "distributed" transactions.

This is it. Let me know what you think.

Regards,
Freddy.

-----Mensaje original-----
De: Alexander Staubo [mailto:alex@byzantine.no]
Enviado el: lunes, 29 de marzo de 2004 22:11
Para: Freddy Villalba Arias
CC: PostgreSQL JDBC Mailing List
Asunto: Re: [JDBC] Support for 2-Phase Commit protocol

on 2004-03-29 19:43 Freddy Villalba Arias wrote:

> I'm currently envolved in a Project requiring v7.4 (7.4.2?). I won't
> be using distributed transaction, but transactions that span multiple
> objects (all of them on the same JVM). Therefore, as I understood it
> from reading the JTA spec, I should not need to use the XA "objects"
> (XAConnection...) but just "plain JDBC"'s ones (Connection,
> Statement...).

What do you mean by multiple objects? Sounds like you have multiple
transactions on a single back end that all need to complete atomically
-- more related to nested transactions and savepoints than to
two-phase commits.

> Then, the following question arises: does the fact that 2-Phase commit

> isn't yet supported imply that I cannot use JTA?

It's been a while since I read the JTA spec, but even if the
transaction manager did not require XA support from the driver, it
still would not be able to glue your transactions together using a
two-phase commit, which is what you want. So the TM would commit each
transaction individually, but it would not be able to roll them back
in the case of mid-point failure.

The point of the XA interfaces is to encapsulate the two-phase
protocol, allowing local transactions to be prepared before they are
committed. Without the XA support, JTA is basically a standard
interface to a transaction manager and X/Open-style transaction
semantics.

I assume Bruce is talking either about this patch:

   http://archives.postgresql.org/pgsql-patches/2003-10/msg00273.php

or this work:

   http://snaga.org/pgsql/

Alexander.

on 2004-03-29 19:43 Freddy Villalba Arias wrote:

 > I'm currently envolved in a Project requiring v7.4 (7.4.2?). I won't
 > be using distributed transaction, but transactions that span multiple
 > objects (all of them on the same JVM). Therefore, as I understood it
 > from reading the JTA spec, I should not need to use the XA "objects"
 > (XAConnection...) but just "plain JDBC"'s ones (Connection,
 > Statement...).
 >
 > Then, the following question arises: does the fact that 2-Phase
commit
 > isn't yet supported imply that I cannot use JTA? Are these to issues
 > unrelated?
 >
 > I'll look forward for your feedback.
 >
 > -----Mensaje original-----
 > De: Bruce Momjian [mailto:pgman@candle.pha.pa.us]
 > Enviado el: lunes, 29 de marzo de 2004 18:36
 > Para: Alexander Staubo
 > CC: Freddy Villalba Arias; PostgreSQL JDBC Mailing List
 > Asunto: Re: [JDBC] Support for 2-Phase Commit protocol
 >
 >
 > Someone has a 2-phase commit patch and we are looking to get it into
 > 7.5.
 >
 >
 >
------------------------------------------------------------------------
 > ---
 >
 > Alexander Staubo wrote:
 >
 >>This is on the PostgreSQL todo list:
 >>
 >>   http://developer.postgresql.org/todo.php
 >>
 >>However, as far as I know it's not something people are working
 >>actively on, or at least not to the extent that we will see a release
 >>in the near term. I would like to be wrong, though.
 >>
 >>Seeing as this is a server issue and not specifically a JDBC issue,
 >>the pgsql-hackers list is probably the place to ask about the
 >>development status of future features.
 >>
 >>To my knowledge, Firebird (http://www.firebirdsql.org/) is the only
 >>open-source database that supports two-phase commits; its JDBC driver
 >>comes with JTA support. You may have better luck with that. Firebird
 >>is itself a decent database, but is going to feel like a step back
 >>into the '80s once you've gotten used to PostgreSQL's sleek, modern
 >>facilities [*].
 >>
 >>[*] Variable-length "text" data type that does not need a
pre-declared
 >
 >
 >>size, virtually unlimited row sizes, online alter/drop/rename for
 >>tables/columns/etc., ability to index fields declared as >250 chars
 >>long, SQL shell with proper readline support, intelligible error
 >>messages, mature documentation, I could go on.
 >>
 >>Alexander.
 >>
 >>on 2004-03-29 17:19 Freddy Villalba Arias wrote:
 >>
 >>
 >>>Hi everybody,
 >>>
 >>>
 >>>
 >>>I forgot to include this other question (also urgent, sorry if I?m
 >>>stressing you up): does anybody know what is PostgreSQL?s current
 >
 > status
 >
 >>>regarding ?Two Phase Commit Protocol Support??
 >>>
 >>>
 >>>
 >>>Again, thanx.
 >>>
 >>>
 >>>
 >>>Regards,
 >>>
 >>>Freddy.
 >>>
 >>
 >>
 >>---------------------------(end of
 >
 > broadcast)---------------------------
 >
 >>TIP 6: Have you searched our list archives?
 >>
 >>               http://archives.postgresql.org
 >>
 >
 >