summaryrefslogtreecommitdiff
path: root/usr/src/lib/libpkg/common/dbtables.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libpkg/common/dbtables.h')
-rw-r--r--usr/src/lib/libpkg/common/dbtables.h210
1 files changed, 210 insertions, 0 deletions
diff --git a/usr/src/lib/libpkg/common/dbtables.h b/usr/src/lib/libpkg/common/dbtables.h
new file mode 100644
index 0000000000..67b3b0fd20
--- /dev/null
+++ b/usr/src/lib/libpkg/common/dbtables.h
@@ -0,0 +1,210 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _DBTABLES_H
+#define _DBTABLES_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define TBL_HDR "create table"
+#define TBL_TRL "on conflict replace"
+
+/*
+ * The patch contents table. This table is used for storing patch package
+ * related file object information and is similar to the pkg contents table.
+ * This table is for future use in allowing FS object checking instead or
+ * in lieu of package level chacking.
+ *
+ * The pkgs column is not normalized. This is due to trying to represent the
+ * data the same way as the legacy patch system does. The column should be
+ * normalized when the Patch Architecture is re-designed.
+ *
+ * Note that path is given the maximum length of /usr/include/limits.h
+ * defined PATH_MAX.
+ */
+
+const char *pcPatchContents = {
+ "CREATE TABLE patch_contents_table (" \
+ "patch CHAR(16) NOT NULL," \
+ "path VARCHAR(1024) NOT NULL," \
+ "ftype CHAR(1) NOT NULL," \
+ "class CHAR(32) NOT NULL," \
+ "mode CHAR(5) NOT NULL," \
+ "owner CHAR(32) NOT NULL," \
+ "grp CHAR(32) NOT NULL," \
+ "major CHAR(32) NOT NULL," \
+ "minor CHAR(32) NOT NULL," \
+ "sz CHAR(32) NOT NULL," \
+ "sum CHAR(32) NOT NULL," \
+ "modtime CHAR(32) NOT NULL," \
+ "pkgstatus CHAR(1) NOT NULL," \
+ "pkgs VARCHAR(4096) NOT NULL," \
+ "PRIMARY KEY(patch)" \
+ "ON CONFLICT REPLACE);"};
+
+/*
+ * The patch table. This table represents all patch meta data needed
+ * to handle dependency checking during the installation and removal of
+ * a patch.
+ */
+
+const char *pcPatchPkg = {
+ "CREATE TABLE patch_pkg_table (" \
+ "patch CHAR(16) NOT NULL," \
+ "pkg VARCHAR(64) NOT NULL," \
+ "PRIMARY KEY(patch, pkg)" \
+ "ON CONFLICT REPLACE);"};
+
+/* This table represents the informatin associated with an installed patch */
+
+const char *pcPatch = {
+ "CREATE TABLE patch_table (" \
+ "patch CHAR(16) NOT NULL," \
+ "rev CHAR(8) NOT NULL," \
+ "bcode CHAR(12) NOT NULL," \
+ "sep CHAR(1) NOT NULL," \
+ "obs VARCHAR(1024) NULL," \
+ "reqs VARCHAR(1024) NULL," \
+ "incs VARCHAR(1024) NULL," \
+ "backout VARCHAR(256) NULL," \
+ "time TIMESTAMP(64) NOT NULL," \
+ "pkgs VARCHAR(1024) NOT NULL," \
+ "PRIMARY KEY(patch)" \
+ "ON CONFLICT REPLACE);"};
+
+/* This table represents the patchinfo file in its entirety */
+
+const char *pcPatchinfo = {
+ "CREATE TABLE patchinfo_table (" \
+ "patch CHAR(16) NOT NULL," \
+ "key CHAR(256) NOT NULL," \
+ "value CHAR(256) NOT NULL," \
+ "PRIMARY KEY(patch)" \
+ "ON CONFLICT REPLACE);"};
+
+/*
+ * Since it is read in as a whole - column by column
+ * and processed by legacy code which expects all of
+ * the data, all the time, it is not useful to separate
+ * the columns into separate tables via normalization.
+ * In effect, each column is logically one data unit,
+ * even if it comprises several distinct values (ie. pkgs).
+ *
+ * Note that path is given the maximum length of /usr/include/limits.h
+ * defined PATH_MAX.
+ */
+
+const char *pcContents =
+ "CREATE TABLE pkg_table (" \
+ "path VARCHAR(1024) NOT NULL," \
+ "ftype CHAR(1) NOT NULL," \
+ "class CHAR(32) NOT NULL," \
+ "mode CHAR(5) DEFAULT '-1'," \
+ "owner CHAR(32) DEFAULT '?'," \
+ "grp CHAR(32) DEFAULT '?'," \
+ "major CHAR(32) DEFAULT '-1'," \
+ "minor CHAR(32) DEFAULT '-1'," \
+ "sz CHAR(32) DEFAULT '-1'," \
+ "sum CHAR(32) DEFAULT '-1'," \
+ "modtime CHAR(32) DEFAULT '-1'," \
+ "pkgstatus CHAR(1) DEFAULT '0'," \
+ "pkgs VARCHAR(4096) NOT NULL," \
+ "PRIMARY KEY(path)" \
+ " ON CONFLICT REPLACE);";
+
+/*
+ * It is necessary to save off the dependency comments so that
+ * they can be regenerated in the depend output. This is due
+ * to there being copyright information in the depend files
+ * which cannot be tossed. This is a logically distinct table
+ * to the depend data since it includes none of the other data
+ * used in that table.
+ */
+
+const char *pcDepComments =
+ "CREATE TABLE depcomment_table (" \
+ "pkg VARCHAR(64) NOT NULL, " \
+ "comment VARCHAR(800) NOT NULL, " \
+ "seqno INT NOT NULL, " \
+ "PRIMARY KEY(pkg) " \
+ "ON CONFLICT REPLACE);";
+
+/* This is the table which contains the pkginfo data. */
+
+const char *pcSQL_pkginfo =
+ "CREATE TABLE pkginfo_table (" \
+ "pkg VARCHAR(80) NOT NULL, " \
+ "param VARCHAR(128) NOT NULL, " \
+ "value VARCHAR(128) NOT NULL, "\
+ "seqno INT NOT NULL, " \
+ "PRIMARY KEY(pkg, param) " \
+ "ON CONFLICT REPLACE);";
+
+/*
+ * This is the table which contains the depenency data.
+ * Note that the 'name' data is optional. Further, note
+ * that platform information (version & architecture)
+ * have been separated off into a separate table.
+ */
+
+const char *pcSQL_depend =
+ "CREATE TABLE depend_table (" \
+ "pkg VARCHAR(64) NOT NULL, " \
+ "pkgdep VARCHAR(64) NOT NULL, " \
+ "type CHAR(1) NOT NULL, "\
+ "name VARCHAR(128) NULL, " \
+ "seqno INT NOT NULL, " \
+ "PRIMARY KEY(pkg, pkgdep) " \
+ "ON CONFLICT REPLACE);";
+
+/*
+ * This table includes data which is specifically related to
+ * an individual dependency. The version and arch info are
+ * related to a specific pkg/pkgdep pair. It is possible to
+ * list more than one version/arch pair for a pkg/pkgdep
+ * pair using the definition below.
+ */
+
+const char *pcSQL_platform =
+ "CREATE TABLE depplatform_table ( " \
+ "pkg VARCHAR(64) NOT NULL " \
+ " REFERENCES depend_table(pkg), " \
+ "pkgdep VARCHAR(64) NOT NULL " \
+ " REFERENCES depend_table(pkgdep), " \
+ "version VARCHAR(32) NOT NULL, " \
+ "arch VARCHAR(32) NOT NULL, " \
+ "seqno INT NOT NULL, " \
+ "PRIMARY KEY (pkg, pkgdep, version, arch) " \
+ "ON CONFLICT REPLACE);";
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _DBTABLES_H */