summaryrefslogtreecommitdiff
path: root/src/include/catalog/pg_shdescription.h
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2006-02-12 03:22:21 +0000
committerBruce Momjian <bruce@momjian.us>2006-02-12 03:22:21 +0000
commitf9a726aa883e1690f66bec535d85b34e1f9ed7e7 (patch)
tree764d3d849a2614ea5edcd05eaa36496a79f06c87 /src/include/catalog/pg_shdescription.h
parent95dbf9c02f9a37fc171e0b94b37f9f903abc3942 (diff)
downloadpostgresql-f9a726aa883e1690f66bec535d85b34e1f9ed7e7.tar.gz
I've created a new shared catalog table pg_shdescription to store
comments on cluster global objects like databases, tablespaces, and roles. It touches a lot of places, but not much in the way of big changes. The only design decision I made was to duplicate the query and manipulation functions rather than to try and have them handle both shared and local comments. I believe this is simpler for the code and not an issue for callers because they know what type of object they are dealing with. This has resulted in a shobj_description function analagous to obj_description and backend functions [Create/Delete]SharedComments mirroring the existing [Create/Delete]Comments functions. pg_shdescription.h goes into src/include/catalog/ Kris Jurka
Diffstat (limited to 'src/include/catalog/pg_shdescription.h')
-rw-r--r--src/include/catalog/pg_shdescription.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h
new file mode 100644
index 0000000000..6cc9c77b3d
--- /dev/null
+++ b/src/include/catalog/pg_shdescription.h
@@ -0,0 +1,80 @@
+/*-------------------------------------------------------------------------
+ *
+ * pg_shdescription.h
+ * definition of the system "shared description" relation
+ * (pg_shdescription)
+ *
+ * NOTE: an object is identified by the OID of the row that primarily
+ * defines the object, plus the OID of the table that that row appears in.
+ * For example, a database is identified by the OID of its pg_database row
+ * plus the pg_class OID of table pg_database. This allows unique
+ * identification of objects without assuming that OIDs are unique
+ * across tables.
+ *
+ *
+ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * $PostgreSQL: pgsql/src/include/catalog/pg_shdescription.h,v 1.1 2006/02/12 03:22:21 momjian Exp $
+ *
+ * NOTES
+ * the genbki.sh script reads this file and generates .bki
+ * information from the DATA() statements.
+ *
+ * XXX do NOT break up DATA() statements into multiple lines!
+ * the scripts are not as smart as you might think...
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef PG_SHDESCRIPTION_H
+#define PG_SHDESCRIPTION_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_shdescription definition. cpp turns this into
+ * typedef struct FormData_pg_shdescription
+ * ----------------
+ */
+#define SharedDescriptionRelationId 2396
+
+CATALOG(pg_shdescription,2396) BKI_SHARED_RELATION BKI_WITHOUT_OIDS
+{
+ Oid objoid; /* OID of object itself */
+ Oid classoid; /* OID of table containing object */
+ text description; /* description of object */
+} FormData_pg_shdescription;
+
+/* ----------------
+ * Form_pg_shdescription corresponds to a pointer to a tuple with
+ * the format of pg_shdescription relation.
+ * ----------------
+ */
+typedef FormData_pg_shdescription *Form_pg_shdescription;
+
+/* ----------------
+ * compiler constants for pg_shdescription
+ * ----------------
+ */
+#define Natts_pg_shdescription 3
+#define Anum_pg_shdescription_objoid 1
+#define Anum_pg_shdescription_classoid 2
+#define Anum_pg_shdescription_description 3
+
+/* ----------------
+ * initial contents of pg_shdescription
+ * ----------------
+ */
+
+/*
+ * Because the contents of this table are taken from the other *.h files,
+ * there is no initialization here. The initial contents are extracted
+ * by genbki.sh and loaded during initdb.
+ */
+
+#endif /* PG_SHDESCRIPTION_H */