1/*-------------------------------------------------------------------------
2 *
3 * cluster.h
4 * header file for postgres cluster command stuff
5 *
6 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994-5, Regents of the University of California
8 *
9 * src/include/commands/cluster.h
10 *
11 *-------------------------------------------------------------------------
12 */
13#ifndef CLUSTER_H
14#define CLUSTER_H
15
16#include "nodes/parsenodes.h"
17#include "storage/lock.h"
18#include "utils/relcache.h"
19
20
21extern void cluster(ClusterStmt *stmt, bool isTopLevel);
22extern void cluster_rel(Oid tableOid, Oid indexOid, int options);
23extern void check_index_is_clusterable(Relation OldHeap, Oid indexOid,
24 bool recheck, LOCKMODE lockmode);
25extern void mark_index_clustered(Relation rel, Oid indexOid, bool is_internal);
26
27extern Oid make_new_heap(Oid OIDOldHeap, Oid NewTableSpace, char relpersistence,
28 LOCKMODE lockmode);
29extern void finish_heap_swap(Oid OIDOldHeap, Oid OIDNewHeap,
30 bool is_system_catalog,
31 bool swap_toast_by_content,
32 bool check_constraints,
33 bool is_internal,
34 TransactionId frozenXid,
35 MultiXactId minMulti,
36 char newrelpersistence);
37
38#endif /* CLUSTER_H */
39