Thread: Isolation of table creation

Isolation of table creation

From
Alexander Korotkov
Date:
Hackers,

I discovered interesting issue with PostgreSQL transaction isolation.
When transaction is in repeatable read isolation level, I can't see table which was created after transaction obtained snapshot. But I can run DML statements with this table. See example below.

Session 1
# begin transaction isolation level repeatable read;
BEGIN
# \dt
No relations found.
                    Session 2
                    # create table tmp (i int not null);
                    CREATE TABLE
                    # insert into tmp values (1);
                    INSERT 0 1
# \dt
No relations found.
# select * from tmp;
 i
---
(0 rows)

# insert into tmp values (2);
INSERT 0 1
# select * from tmp;
 i
---
 2
(1 row)
# commit;
COMMIT

Is it a bug?

------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

Re: Isolation of table creation

From
Andres Freund
Date:
On 2015-12-11 11:46:11 +0300, Alexander Korotkov wrote:
> I discovered interesting issue with PostgreSQL transaction isolation.
> When transaction is in repeatable read isolation level, I can't see table
> which was created after transaction obtained snapshot. But I can run DML
> statements with this table. See example below.

> Is it a bug?

No, that's pretty much expected. Parse analysis, planning use fresh
catalog snapshot, whereas psql's schema queries use the transaction
snapshot.

Andres