/*-------------------------------------------------------------------------
 *
 * gp_id.h
 *	  definition of the system "database identifier" relation (gp_dbid)
 *	  along with the relation's initial contents.
 *
 * Portions Copyright (c) 2009-2010, Greenplum inc
 * Portions Copyright (c) 2012-Present VMware, Inc. or its affiliates.
 *
 *
 * IDENTIFICATION
 *	    src/include/catalog/gp_id.h
 *
 * NOTES
 *    Historically this table was used to supply every segment with its
 * identification information.  However in the 4.0 release when the file
 * replication feature was added it could no longer serve this purpose
 * because it became a requirement for all tables to have the same physical
 * contents on both the primary and mirror segments.  To resolve this the
 * information is now passed to each segment on startup based on the
 * gp_segment_configuration (stored on the coordinator only), and each segment
 * has a file in its datadirectory (gp_dbid) that uniquely identifies the
 * segment.
 *
 *   The contents of the table are now irrelevant, with the exception that
 * several tools began relying on this table for use as a method of remote
 * function invocation via gp_dist_random('gp_id') due to the fact that this
 * table was guaranteed of having exactly one row on every segment.  The
 * contents of the row have no defined meaning, but this property is still
 * relied upon.
 */
#ifndef _GP_ID_H_
#define _GP_ID_H_


#include "catalog/genbki.h"
#include "catalog/gp_id_d.h"

/*
 * Defines for gp_id table
 */
CATALOG(gp_id,5101,GpIdRelationId) BKI_SHARED_RELATION
{
	NameData	gpname;
	int16		numsegments;
	int16		dbid;
	int16		content;
} FormData_gp_id;

/* no foreign keys */

/*
 * The contract of the gp_id table is that it must have exactly one row on
 * every segment.  The contents of the row do not matter.
 */

#endif /*_GP_ID_H_*/
