diff options
author | Dries Buytaert <dries@buytaert.net> | 2007-02-12 17:47:08 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2007-02-12 17:47:08 +0000 |
commit | 72501e54df0e0de2e9690f69bdf84d5517e60966 (patch) | |
tree | ef620ce86538ae90770002deb9b87a25a8ec9754 /modules/system/system.install | |
parent | 35ce6daa28cdc6d687a6cef1b009d67348946a21 (diff) | |
download | brdo-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.install | 38 |
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. */ |