Hi,

  I'm reading code of ALTER TABLE, and I found when target table needs rewrite, 
tuple inserted into new heap uses current transaction's xid as xmin. Does this 
behavior satisfy serializable isolation? I wrote some test cases:
CREATE TABLE t1(a INT);CREATE TABLE t2(a INT);INSERT INTO t1 VALUES(1);INSERT 
INTO t2 VALUES(1);
transaction one:
postgres=# commit;COMMITpostgres=# BEGIN;BEGINpostgres=# SET TRANSACTION 
ISOLATION LEVEL SERIALIZABLE;SETpostgres=# SELECT * FROM t1; a--- 1(1 rows)
        transaction two execute SQL:  ALTER TABLE t2 ADD COLUMN b INT DEFAULT 1;
postgres=# SELECT * FROM t2; a | b---+---(0 rows)
Transaction one sees nothing in t2, and i can not give any serial execution 
order of these two transactions, does it still  satisfy serializable isolation? 


                                          

Reply via email to