should I blame PostgreSQL -- transaction fails with DDL
===

some backgrounds:

I have a workflow app(java ee.) which has nodes chained to be executed.
PostgreSQL 9.1.2 is used with Spring TX management.

nodes execute in its own transaction (required, read committed).
node-1(TX1) will create a table TB_NODE_1 to pass the data to the next node -- node2.
this is done in TX1.

after TX1 commits, node2 will be triggered to be executed(in TX2).
the first thing node2 does is to read TB_NODE_1 as its input.

the problem:

It happens , mostly under heavy load(really LARGE queries hits PostgreSQL, concurrently), node2 complains : **relation TB_NODE_1 does not exist**.

some details:

1. I create TB_NODE_1 using "create table tb_node_1 as select * from table_foobar where ...".
2. TX1 is guaranteed to commit by Spring TX.
3. PostgreSQL will **not** keep table created in TX1 if TX1 rolled back.
4. TX1 is not rolled back (no exception occurs in TX1).

It seems PostgreSQL give me a fake result that TX1 is committed , but actually it does not.

Does anybody have the same problem?