diff options
Diffstat (limited to 'database/updates.inc')
-rw-r--r-- | database/updates.inc | 75 |
1 files changed, 74 insertions, 1 deletions
diff --git a/database/updates.inc b/database/updates.inc index 4b5177bfd..ad8d5420c 100644 --- a/database/updates.inc +++ b/database/updates.inc @@ -43,7 +43,8 @@ $sql_updates = array( "2005-07-29" => "update_142", "2005-07-30" => "update_143", "2005-08-08" => "update_144", - "2005-08-15" => "update_145" + "2005-08-15" => "update_145", + "2005-08-25" => "update_146" ); function update_110() { @@ -705,6 +706,78 @@ function update_145() { return $ret; } +function update_146() { + $ret = array(); + + if ($GLOBALS['db_type'] == 'mysql') { + $ret[] = update_sql("CREATE TABLE {node_revisions} + SELECT nid, nid AS vid, uid, type, title, body, teaser, changed AS timestamp, format + FROM {node}"); + + $ret[] = update_sql("ALTER TABLE {node_revisions} CHANGE nid nid int(10) unsigned NOT NULL default '0'"); + $ret[] = update_sql("ALTER TABLE {node_revisions} ADD log longtext"); + + $ret[] = update_sql("ALTER TABLE {node} ADD vid int(10) unsigned NOT NULL default '0'"); + $ret[] = update_sql("ALTER TABLE {files} ADD vid int(10) unsigned NOT NULL default '0'"); + $ret[] = update_sql("ALTER TABLE {book} ADD vid int(10) unsigned NOT NULL default '0'"); + $ret[] = update_sql("ALTER TABLE {forum} ADD vid int(10) unsigned NOT NULL default '0'"); + + $ret[] = update_sql("ALTER TABLE {book} DROP PRIMARY KEY"); + $ret[] = update_sql("ALTER TABLE {forum} DROP PRIMARY KEY"); + $ret[] = update_sql("ALTER TABLE {files} DROP PRIMARY KEY"); + + $ret[] = update_sql("UPDATE {node} SET vid = nid"); + $ret[] = update_sql("UPDATE {forum} SET vid = nid"); + $ret[] = update_sql("UPDATE {book} SET vid = nid"); + $ret[] = update_sql("UPDATE {files} SET vid = nid"); + + $ret[] = update_sql("ALTER TABLE {book} ADD PRIMARY KEY vid (vid)"); + $ret[] = update_sql("ALTER TABLE {forum} ADD PRIMARY KEY vid (vid)"); + $ret[] = update_sql("ALTER TABLE {node_revisions} ADD PRIMARY KEY vid (vid)"); + $ret[] = update_sql("ALTER TABLE {node_revisions} ADD KEY nid (nid)"); + $ret[] = update_sql("ALTER TABLE {node_revisions} ADD KEY uid (uid)"); + + $ret[] = update_sql("CREATE TABLE {old_revisions} SELECT nid, type, revisions FROM {node} WHERE revisions != ''"); + + $ret[] = update_sql("ALTER TABLE {book} ADD KEY nid (nid)"); + $ret[] = update_sql("ALTER TABLE {forum} ADD KEY nid (nid)"); + $ret[] = update_sql("ALTER TABLE {files} ADD KEY fid (fid)"); + $ret[] = update_sql("ALTER TABLE {files} ADD KEY vid (vid)"); + $vid = db_next_id('{node}_nid'); + $ret[] = update_sql("INSERT INTO {sequences} (name, id) VALUES ('{node_revisions}_vid', $vid)"); + } + else { // pgsql + $ret[] = update_sql("CREATE TABLE {node_revisions} AS + SELECT nid, nid AS vid, uid, type, title, body, teaser, changed AS timestamp, format + FROM {node}"); + + $ret[] = update_sql("UPDATE {node} SET vid = nid"); + $ret[] = update_sql("UPDATE {forum} SET vid = nid"); + $ret[] = update_sql("UPDATE {book} SET vid = nid"); + $ret[] = update_sql("UPDATE {files} SET vid = nid"); + + $ret[] = update_sql("CREATE TABLE {old_revisions} AS SELECT nid, type, revisions FROM {node} WHERE revisions != ''"); + } + + // Move logs too. + $result = db_query("SELECT nid, log FROM {book} WHERE log != ''"); + while ($row = db_fetch_object($result)) { + db_query("UPDATE {node_revisions} SET log = '%s' WHERE vid = %d", $row->log, $row->nid); + } + + if ($GLOBALS['db_type'] == 'mysql') { + $ret[] = update_sql("ALTER TABLE {book} DROP log"); + $ret[] = update_sql("ALTER TABLE {node} DROP teaser"); + $ret[] = update_sql("ALTER TABLE {node} DROP body"); + $ret[] = update_sql("ALTER TABLE {node} DROP format"); + $ret[] = update_sql("ALTER TABLE {node} DROP revisions"); + } + else { // pgsql + } + + return $ret; +} + function update_sql($sql) { $edit = $_POST["edit"]; $result = db_query($sql); |