Tom Lane wrote:
> I don't see why 2PC would require any protocol-level change. I would
> think that the API would be something like
>
> BEGIN;
> issue some commands ...
> PRECOMMIT;
> -- if the above does not return an error, then
> COMMIT;
>
> In other words, 2PC would require some new commands, but a new command
> doesn't affect the protocol layer.
I think a precommit-vote-commit phase of 2PC can be implemented in
command-lavel or protocol-level.
In command-level 2PC, an user application (or application programmer)
must know the DBMS is clustered or not (to use PRECOMMIT command).
In protocol-layer 2PC, no new SQL command is required.
A precommit-vote-commit phase will be called implicitly. It means an
user application can be used without any modification. An application
can use a traditional way (BEGIN...COMMIT).
So I made my decision to use protocol-layer implementation.
It doesn't affect the SQL command layer.
--
NAGAYASU Satoshi <snaga@snaga.org>