text: /*-------------------------------------------------------------------------
   *
   * cluster.h
   *	  header file for postgres cluster command stuff
   *
   * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994-5, Regents of the University of California
   *
   * src/include/commands/cluster.h
   *
   *-------------------------------------------------------------------------
   */
  #ifndef CLUSTER_H
  #define CLUSTER_H
  
  #include "nodes/parsenodes.h"
  #include "storage/lock.h"
  #include "utils/relcache.h"
  
  
  extern void cluster(ClusterStmt *stmt, bool isTopLevel);
  extern void cluster_rel(Oid tableOid, Oid indexOid, bool recheck,
  			bool verbose, int freeze_min_age, int freeze_table_age);
  extern void check_index_is_clusterable(Relation OldHeap, Oid indexOid,
  						   bool recheck, LOCKMODE lockmode);
  extern void mark_index_clustered(Relation rel, Oid indexOid);
  
  extern Oid	make_new_heap(Oid OIDOldHeap, Oid NewTableSpace);
  extern void finish_heap_swap(Oid OIDOldHeap, Oid OIDNewHeap,
  				 bool is_system_catalog,
  				 bool swap_toast_by_content,
  				 bool check_constraints,
  				 TransactionId frozenXid);
  
  #endif   /* CLUSTER_H */
  