I'm wondering when a table acquires an oid. Is it only when the transaction commits? Or does it have a hidden oid prior to commit? Especially in the context of a CREATE TABLE AS SELECT.
Asked
Active
Viewed 159 times
0
Evan Carroll
- 63,051
- 46
- 242
- 479
1 Answers
3
Table OIDs are assigned quite early in table creation, and are definitely present by the time the CREATE TABLE finishes (before xact commit), since the row is visible in pg_class by then.
The new pg_class row (and its oid) are not visible to concurrent transactions until commit, though.
It's not clear why you care, though. It shouldn't matter.
Craig Ringer
- 56,343
- 5
- 158
- 190
pgstattupleto see the insertion status of large table creations (a billion rows) with CTAS. I do them pretty often for this site, just finished an answer with 100 million insertions in CTAS. – Evan Carroll Jun 02 '17 at 03:10