MSDTC -> psqlodbc 〜 XA-Compliant? DB接続

以前にODBCドライバ(psqlodbc)を使って、MSDTC(MicroSoft Distributed Transaction Coordiantor)からXA-Compliantなデータベースへのアクセスをトレースしたことがある。今回そのコードを引っ張り出してきて再度試してみた。ちなみにMSDTCはXAインターフェイスを直接サポートしておらずXAとのマッピングをユーザーが行う必要がある(ただしマッピング用の各種サポートルーチンは存在する)。2つの方式が存在する。
1.Two-Pipe方式
  この場合はxa_prepare()及びxa_commit()が常にmsdtcのプロセスから発行される。データーベースにアクセスしているユーザープロセスのODBCドライバーは全くこれ(prepare->commit)に感知しない。このためODBCドライバーはxa_end()を何時発行したらよいのかということではたと困ってしまうような気がする。各コマンドの前後をxa_start()/xa_end()で挟めば一応対応は可能だが効率に問題がありそう。
2.One-Pipe方式 
  この場合、prepareやcommitの通知を受け取るCOMオブジェクトを作成し、そのオブジェクトとともにグローバルトランザクションに参加する。実際にそのオブジェクトに対しPrepareRequestやCommitRequestが通知され、(説明の通りに?)通知を受け取ったユーザープロセスがxa_prepare()やxa_commit()を呼び出す役割を果たそうとするのだが、どういうわけかこれまたmsdtcプロセスが勝手に?xa_prepare()やxa_commit()を発行している。うーん、処理がダブってしまう、これってバグなんじゃ?