text: /*-------------------------------------------------------------------------
   *
   * table.h
   *	  Generic routines for table related code.
   *
   *
   * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
   *
   * src/include/access/table.h
   *
   *-------------------------------------------------------------------------
   */
  #ifndef TABLE_H
  #define TABLE_H
  
  #include "nodes/primnodes.h"
  #include "utils/relcache.h"
  #include "storage/lockdefs.h"
  
  
  extern Relation table_open(Oid relationId, LOCKMODE lockmode);
  extern Relation table_openrv(const RangeVar *relation, LOCKMODE lockmode);
  extern Relation table_openrv_extended(const RangeVar *relation,
  									  LOCKMODE lockmode, bool missing_ok);
  extern void table_close(Relation relation, LOCKMODE lockmode);
  
  /*
   * heap_ used to be the prefix for these routines, and a lot of code will just
   * continue to work without adaptions after the introduction of pluggable
   * storage, therefore just map these names.
   */
  #define heap_open(r, l)					table_open(r, l)
  #define heap_openrv(r, l)				table_openrv(r, l)
  #define heap_openrv_extended(r, l, m)	table_openrv_extended(r, l, m)
  #define heap_close(r, l)				table_close(r, l)
  
  #endif							/* TABLE_H */
  