Alvaro Herrera wrote:
> Here I repost the patch to implement non-transactional catalogs, the
> first of which is pg_ntclass, intended to hold the non-transactional
> info about pg_class (reltuples, relpages).

I forgot to attach the new file pg_ntclass.h (src/include/catalog).
Here it is.
/*-------------------------------------------------------------------------
 *
 * pg_ntclass.h
 *	  definition of the system "non transactional relation" relation
 *	  (pg_ntclass) along with the relation's initial contents.
 *
 *
 * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * $PostgreSQL$
 *
 * NOTES
 *	  the genbki.sh script reads this file and generates .bki
 *	  information from the DATA() statements.
 *
 *-------------------------------------------------------------------------
 */
#ifndef PG_NTCLASS_H
#define PG_NTCLASS_H

/* ----------------
 *		postgres.h contains the system type definitions and the
 *		CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file
 *		can be read by both genbki.sh and the C compiler.
 * ----------------
 */

/* ----------------
 *		pg_ntclass definition.  cpp turns this into
 *		typedef struct FormData_pg_class
 * ----------------
 */

#define NtClassRelationId	1004

CATALOG(pg_ntclass,1004) BKI_BOOTSTRAP BKI_WITHOUT_OIDS
{
	int4		relpages;		/* # of blocks (not always up-to-date) */
	float4		reltuples;		/* # of tuples (not always up-to-date) */
} FormData_pg_ntclass;

/* Size of pg_ntclass tuples */
#define NTCLASS_TUPLE_SIZE \
	 (offsetof(FormData_pg_ntclass,reltuples) + sizeof(float4))
/* ----------------
 *		Form_pg_ntclass corresponds to a pointer to a tuple with
 *		the format of pg_ntclass relation.
 * ----------------
 */
typedef FormData_pg_ntclass *Form_pg_ntclass;

/* ----------------
 *		compiler constants for pg_ntclass
 * ----------------
 */
#define Natts_pg_ntclass				2
#define Anum_pg_ntclass_relpages		1
#define Anum_pg_ntclass_reltuples		2

/* ----------------
 *		initial contents of pg_ntclass
 *
 * NOTE: We need as many tuples here as bootstrapped relations there are
 * declared in pg_class.
 * ----------------
 */

DATA(insert ( 0 0 ));
DATA(insert ( 0 0 ));
DATA(insert ( 0 0 ));
DATA(insert ( 0 0 ));
DATA(insert ( 0 0 ));

#endif   /* PG_NTCLASS_H */
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to