]> granicus.if.org Git - postgresql/commit
tableam: relation creation, VACUUM FULL/CLUSTER, SET TABLESPACE.
authorAndres Freund <andres@anarazel.de>
Fri, 29 Mar 2019 03:01:14 +0000 (20:01 -0700)
committerAndres Freund <andres@anarazel.de>
Fri, 29 Mar 2019 03:01:43 +0000 (20:01 -0700)
commitd25f519107bff602e1ebc81853fe592d020c118d
tree00cfff63480c0d555f372ba2e1866d6622740432
parent7e69323bf72a924fd1b04a7a91da343a0cda91cf
tableam: relation creation, VACUUM FULL/CLUSTER, SET TABLESPACE.

This moves the responsibility for:
- creating the storage necessary for a relation, including creating a
  new relfilenode for a relation with existing storage
- non-transactional truncation of a relation
- VACUUM FULL / CLUSTER's rewrite of a table
below tableam.

This is fairly straight forward, with a bit of complexity smattered in
to move the computation of xid / multixid horizons below the AM, as
they don't make sense for every table AM.

Author: Andres Freund
Discussion: https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
13 files changed:
src/backend/access/heap/heapam_handler.c
src/backend/bootstrap/bootparse.y
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/catalog/storage.c
src/backend/commands/cluster.c
src/backend/commands/sequence.c
src/backend/commands/tablecmds.c
src/backend/utils/cache/relcache.c
src/include/access/tableam.h
src/include/catalog/heap.h
src/include/catalog/storage.h
src/include/utils/relcache.h