summaryrefslogtreecommitdiff
path: root/modules/system/system.install
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2007-02-12 17:47:08 +0000
committerDries Buytaert <dries@buytaert.net>2007-02-12 17:47:08 +0000
commit72501e54df0e0de2e9690f69bdf84d5517e60966 (patch)
treeef620ce86538ae90770002deb9b87a25a8ec9754 /modules/system/system.install
parent35ce6daa28cdc6d687a6cef1b009d67348946a21 (diff)
downloadbrdo-72501e54df0e0de2e9690f69bdf84d5517e60966.tar.gz
brdo-72501e54df0e0de2e9690f69bdf84d5517e60966.tar.bz2
- Patch #115667 by rotzi: added versioning support to node terms.
Diffstat (limited to 'modules/system/system.install')
-rw-r--r--modules/system/system.install38
1 files changed, 36 insertions, 2 deletions
diff --git a/modules/system/system.install b/modules/system/system.install
index 7c9bb13ee..44ecdde6d 100644
--- a/modules/system/system.install
+++ b/modules/system/system.install
@@ -518,10 +518,12 @@ function system_install() {
db_query("CREATE TABLE {term_node} (
nid int unsigned NOT NULL default '0',
+ vid int unsigned NOT NULL default '0',
tid int unsigned NOT NULL default '0',
KEY nid (nid),
+ KEY vid (vid),
KEY tid (tid),
- PRIMARY KEY (tid,nid)
+ PRIMARY KEY (vid,tid,nid)
) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
db_query("CREATE TABLE {term_relation} (
@@ -992,10 +994,12 @@ function system_install() {
db_query("CREATE TABLE {term_node} (
nid int_unsigned NOT NULL default '0',
+ vid int_unsigned NOT NULL default '0',
tid int_unsigned NOT NULL default '0',
- PRIMARY KEY (tid,nid)
+ PRIMARY KEY (tid,nid,vid)
)");
db_query("CREATE INDEX {term_node}_nid_idx ON {term_node} (nid)");
+ db_query("CREATE INDEX {term_node}_vid_idx ON {term_node} (vid)");
db_query("CREATE INDEX {term_node}_tid_idx ON {term_node} (tid)");
db_query("CREATE TABLE {term_relation} (
@@ -3545,6 +3549,36 @@ function system_update_2000() {
}
/**
+ * Add version id column to {term_node} to allow taxonomy module to use revisions.
+ */
+function system_update_2001() {
+ $ret = array();
+ // Add revision id to term-node relation.
+ switch ($GLOBALS['db_type']) {
+ case 'mysql':
+ case 'mysqli':
+ $ret[] = update_sql("ALTER TABLE {term_node} ADD vid int NOT NULL default '0'");
+ $ret[] = update_sql('ALTER TABLE {term_node} DROP PRIMARY KEY');
+ $ret[] = update_sql('ALTER TABLE {term_node} ADD PRIMARY KEY (tid,nid,vid)');
+ $ret[] = update_sql('ALTER TABLE {term_node} ADD KEY vid (vid)');
+ break;
+
+ case 'pgsql':
+ db_add_column($ret, 'term_node', 'vid', 'int', array('not null' => TRUE, 'default' => 0));
+ $ret[] = update_sql("ALTER TABLE {term_node} DROP CONSTRAINT {term_node}_pkey");
+ $ret[] = update_sql("ALTER TABLE {term_node} ADD PRIMARY KEY (tid,nid,vid)");
+ $ret[] = update_sql("CREATE INDEX {term_node}_vid_idx ON {term_node} (vid)");
+ break;
+ }
+ // Update all entries with the current revision number.
+ $nodes = db_query('SELECT nid, vid FROM {node}');
+ while ($node = db_fetch_object($nodes)) {
+ db_query('UPDATE {term_node} SET vid = %d WHERE nid = %d', $node->vid, $node->nid);
+ }
+ return $ret;
+}
+
+/**
* @} End of "defgroup updates-5.0-to-x.x"
* The next series of updates should start at 3000.
*/