Commit 3c604109 authored by Dries's avatar Dries
Browse files

- Patch #7498 by nereocystis: PostgreSQL updates for HEAD

parent d8bbdcbe
......@@ -86,17 +86,75 @@ CREATE TABLE boxes (
);
--
-- Table structure for bundle
-- Table structure for table 'aggregator_category'
--
CREATE TABLE bundle (
bid SERIAL,
CREATE TABLE aggregator_category (
cid serial,
title varchar(255) NOT NULL default '',
attributes varchar(255) NOT NULL default '',
PRIMARY KEY (bid),
description text NOT NULL,
block smallint NOT NULL default '0',
PRIMARY KEY (cid),
UNIQUE (title)
);
--
-- Table structure for table 'aggregator_category_feed'
--
CREATE TABLE aggregator_category_feed (
fid integer NOT NULL default '0',
cid integer NOT NULL default '0',
PRIMARY KEY (fid,cid)
);
--
-- Table structure for table 'aggregator_category_item'
--
CREATE TABLE aggregator_category_item (
iid integer NOT NULL default '0',
cid integer NOT NULL default '0',
PRIMARY KEY (iid,cid)
);
--
-- Table structure for table 'aggregator_feed'
--
CREATE TABLE aggregator_feed (
fid serial,
title varchar(255) NOT NULL default '',
url varchar(255) NOT NULL default '',
refresh integer NOT NULL default '0',
checked integer NOT NULL default '0',
link varchar(255) NOT NULL default '',
description text NOT NULL,
image text NOT NULL,
etag varchar(255) NOT NULL default '',
modified integer NOT NULL default '0',
block smallint NOT NULL default '0',
PRIMARY KEY (fid),
UNIQUE (url),
UNIQUE (title)
);
--
-- Table structure for table 'aggregator_item'
--
CREATE TABLE aggregator_item (
iid integer NOT NULL auto_increment,
fid integer NOT NULL default '0',
title varchar(255) NOT NULL default '',
link varchar(255) NOT NULL default '',
author varchar(255) NOT NULL default '',
description text NOT NULL,
timestamp integer default NULL,
PRIMARY KEY (iid)
);
--
-- Table structure for cache
--
......@@ -145,27 +203,6 @@ CREATE TABLE directory (
PRIMARY KEY (link)
);
--
-- Table structure for feed
--
CREATE TABLE feed (
fid SERIAL,
title varchar(255) NOT NULL default '',
url varchar(255) NOT NULL default '',
refresh integer NOT NULL default '0',
checked integer NOT NULL default '0',
attributes varchar(255) NOT NULL default '',
link varchar(255) NOT NULL default '',
description text NOT NULL default '',
image text NOT NULL default '',
etag varchar(255) NOT NULL default '',
modified integer NOT NULL default '0',
PRIMARY KEY (fid),
UNIQUE (title),
UNIQUE (url)
);
--
-- Table structure for table 'filters'
--
......@@ -199,22 +236,6 @@ CREATE TABLE history (
PRIMARY KEY (uid,nid)
);
--
-- Table structure for item
--
CREATE TABLE item (
iid SERIAL,
fid integer NOT NULL default '0',
title varchar(255) NOT NULL default '',
link varchar(255) NOT NULL default '',
author varchar(255) NOT NULL default '',
description text NOT NULL default '',
timestamp integer NOT NULL default '0',
attributes varchar(255) NOT NULL default '',
PRIMARY KEY (iid)
);
--
-- Table structure for locales
--
......@@ -234,6 +255,21 @@ CREATE TABLE locales (
PRIMARY KEY (lid)
);
--
-- Table structure for table 'menu'
--
CREATE TABLE menu (
mid integer NOT NULL default '0',
pid integer NOT NULL default '0',
path varchar(255) NOT NULL default '',
title varchar(255) NOT NULL default '',
weight smallint NOT NULL default '0',
visibility smallint NOT NULL default '0',
status smallint NOT NULL default '0',
PRIMARY KEY (mid)
);
--
-- Table structure for table 'moderation_filters'
--
......@@ -331,6 +367,35 @@ CREATE INDEX page_nid_idx ON page(nid);
-- Table structure for table 'url_alias'
--
CREATE TABLE profile_fields (
fid serial,
title varchar(255) default NULL,
name varchar(128) default NULL,
explanation TEXT default NULL,
category varchar(255) default NULL,
page varchar(255) default NULL,
type varchar(128) default NULL,
weight smallint DEFAULT '0' NOT NULL,
required smallint DEFAULT '0' NOT NULL,
overview smallint DEFAULT '0' NOT NULL,
options text,
UNIQUE (name),
PRIMARY KEY (fid)
);
CREATE INDEX profile_fields_category ON profile_fields (category);
--
-- Table structure for table 'profile_values'
--
CREATE TABLE profile_values (
fid integer default '0',
uid integer default '0',
value text
);
CREATE INDEX profile_values_uid ON profile_values (uid);
CREATE INDEX profile_values_fid ON profile_values (fid);
CREATE TABLE url_alias (
pid serial,
dst varchar(128) NOT NULL default '',
......
......@@ -772,39 +772,14 @@ function update_79() {
function update_80() {
if ($GLOBALS["db_type"] == "mysql") {
// Add a 'created' field to the users table:
$ret[] = update_sql('ALTER TABLE {users} ADD created INT(11) NOT NULL');
$ret[] = update_sql('ALTER TABLE {users} CHANGE timestamp changed INT(11) NOT NULL');
// Add some indices to speed up the update process:
$ret[] = update_sql('ALTER TABLE {comments} ADD index (timestamp)');
$ret[] = update_sql('ALTER TABLE {node} ADD index (created)');
// Assign everyone a created timestamp to begin with:
$ret[] = update_sql("UPDATE {users} SET created = changed WHERE created = ''");
// Print a status message:"
print '<p>Note: this might take a while ...</p>';
// Try updating the user records using the comment table:
$result = db_query('SELECT DISTINCT(u.uid) FROM {comments} c LEFT JOIN {users} u ON c.uid = u.uid WHERE c.timestamp < u.created');
while ($account = db_fetch_object($result)) {
// Retrieve the proper timestamp:
$timestamp = db_result(db_query('SELECT MIN(timestamp) FROM {comments} WHERE uid = %d', $account->uid));
// Update this user record as well as older records with an older timestamp:
db_query('UPDATE {users} SET created = %d WHERE created > %d AND uid <= %d', $timestamp, $timestamp, $account->uid);
}
// Try updating the user records using the node table:
$result = db_query('SELECT DISTINCT(u.uid) FROM {node} n LEFT JOIN {users} u ON n.uid = u.uid WHERE n.created < u.created');
while ($account = db_fetch_object($result)) {
// Retrieve the proper timestamp:
$timestamp = db_result(db_query('SELECT MIN(created) FROM {node} WHERE uid = %d', $account->uid));
// Update this user record as well as older records with an older timestamp:
db_query('UPDATE {users} SET created = %d WHERE created > %d AND uid <= %d', $timestamp, $timestamp, $account->uid);
}
// Add profile module related tables:
$ret[] = update_sql("CREATE TABLE {profile_fields} (
......@@ -829,6 +804,74 @@ function update_80() {
KEY uid (uid),
KEY fid (fid)
);");
// Add some indices to speed up the update process:
$ret[] = update_sql('ALTER TABLE {comments} ADD index (timestamp)');
$ret[] = update_sql('ALTER TABLE {node} ADD index (created)');
// Assign everyone a created timestamp to begin with:
$ret[] = update_sql("UPDATE {users} SET created = changed WHERE created = ''");
}
else {// pgsql
$ret[] = update_sql('ALTER TABLE {users} RENAME timestamp TO changed');
$ret[] = update_sql('ALTER TABLE {users} ADD created integer');
$ret[] = update_sql('UPDATE {users} SET created = 0');
$ret[] = update_sql('ALTER TABLE {users} ALTER COLUMN created SET NOT NULL');
$ret[] = update_sql('ALTER TABLE {users} ALTER COLUMN created SET DEFAULT 0');
// Add profile module related tables:
$ret[] = update_sql("CREATE TABLE {profile_fields} (
fid serial,
title varchar(255) default NULL,
name varchar(128) default NULL,
explanation TEXT default NULL,
category varchar(255) default NULL,
type varchar(128) default NULL,
weight smallint DEFAULT '0' NOT NULL,
overview smallint DEFAULT '0' NOT NULL,
options text,
UNIQUE (name),
PRIMARY KEY (fid)
);");
$ret[] = update_sql("CREATE INDEX profile_fields_category ON {profile_fields} (category);");
$ret[] = update_sql("CREATE TABLE {profile_values} (
fid integer default '0',
uid integer default '0',
value text
);");
$ret[] = update_sql("CREATE INDEX profile_values_uid ON profile_values (uid);");
$ret[] = update_sql("CREATE INDEX profile_values_fid ON profile_values (fid);");
// Add some indices to speed up the update process:
$ret[] = update_sql('CREATE INDEX comments_timestamp ON {comments} (timestamp)');
$ret[] = update_sql('CREATE INDEX node_created on {node} (created)');
// Assign everyone a created timestamp to begin with:
$ret[] = update_sql("UPDATE {users} SET created = changed WHERE created = 0");
}
// Print a status message:"
print '<p>Note: this might take a while ...</p>';
// Try updating the user records using the comment table:
$result = db_query('SELECT DISTINCT(u.uid) FROM {comments} c LEFT JOIN {users} u ON c.uid = u.uid WHERE c.timestamp < u.created');
while ($account = db_fetch_object($result)) {
// Retrieve the proper timestamp:
$timestamp = db_result(db_query('SELECT MIN(timestamp) FROM {comments} WHERE uid = %d', $account->uid));
// Try updating the user records using the node table:
$result = db_query('SELECT DISTINCT(u.uid) FROM {node} n LEFT JOIN {users} u ON n.uid = u.uid WHERE n.created < u.created');
while ($account = db_fetch_object($result)) {
// Retrieve the proper timestamp:
$timestamp = db_result(db_query('SELECT MIN(created) FROM {node} WHERE uid = %d', $account->uid));
// Update this user record as well as older records with an older timestamp:
db_query('UPDATE {users} SET created = %d WHERE created > %d AND uid <= %d', $timestamp, $timestamp, $account->uid);
}
// Update this user record as well as older records with an older timestamp:
db_query('UPDATE {users} SET created = %d WHERE created > %d AND uid <= %d', $timestamp, $timestamp, $account->uid);
}
// Migrate the old profile data to the new scheme:
$fields = array(
......@@ -857,7 +900,16 @@ function update_80() {
foreach ($fields as $field) {
db_query("INSERT INTO {profile_fields} (title, name, type, category, options, overview) VALUES ('%s', '%s', '%s', 'Personal information', '%s', %d)", $field[0], $field[1], $field[2], $field[3], $field[4]);
}
if ($GLOBALS["db_type"] == "mysql") {
db_query("ALTER TABLE {users} ADD picture varchar(255) NOT NULL DEFAULT ''");
}
else {
db_query("ALTER TABLE {users} ADD picture varchar(255)");
db_query("UPDATE {users} SET picture = ''");
db_query("ALTER TABLE {users} ALTER COLUMN picture SET NOT NULL");
db_query("ALTER TABLE {users} ALTER COLUMN picture SET DEFAULT ''");
}
$result = db_query("SELECT uid FROM {users}");
while ($account = db_fetch_object($result)) {
......@@ -893,13 +945,27 @@ function update_80() {
}
function update_81() {
if ($GLOBALS['db_type'] == 'mysql') {
$ret[] = update_sql('ALTER TABLE {profile_fields} ADD page varchar(255) default NULL');
}
else {
$ret[] = update_sql('ALTER TABLE {profile_fields} ADD page varchar(255)');
$ret[] = update_sql('ALTER TABLE {profile_fields} ALTER COLUMN page SET default NULL');
}
$ret[] = update_sql("UPDATE {profile_fields} SET type = 'url' WHERE name = 'homepage'");
return $ret;
}
function update_82() {
if ($GLOBALS['db_type'] == 'mysql') {
$ret[] = update_sql("ALTER TABLE {profile_fields} ADD required tinyint(1) DEFAULT '0' NOT NULL");
}
else {
$ret[] = update_sql("ALTER TABLE {profile_fields} ADD required smallint");
$ret[] = update_sql("ALTER TABLE {profile_fields} ALTER COLUMN required SET DEFAULT '0'");
$ret[] = update_sql("UPDATE {profile_fields} SET required = '0'");
$ret[] = update_sql("ALTER TABLE {profile_fields} ALTER COLUMN required SET NOT NULL");
}
return $ret;
}
......@@ -916,10 +982,20 @@ function update_83() {
status int(1) unsigned NOT NULL default '0',
PRIMARY KEY (mid)
);");
$ret[] = update_sql("INSERT INTO sequences (name, id) VALUES ('menu_mid', 1)");
$ret[] = update_sql("INSERT INTO {sequences} (name, id) VALUES ('menu_mid', 1)");
}
else {
/* Needs PostgreSQL equivalent */
$ret[] = update_sql("CREATE TABLE menu (
mid integer NOT NULL default '0',
pid integer NOT NULL default '0',
path varchar(255) NOT NULL default '',
title varchar(255) NOT NULL default '',
weight smallint NOT NULL default '0',
visibility smallint NOT NULL default '0',
status smallint NOT NULL default '0',
PRIMARY KEY (mid)
);");
}
return $ret;
}
......@@ -927,10 +1003,13 @@ function update_83() {
function update_84() {
$ret = array();
if ($GLOBALS["db_type"] == "mysql") {
$ret[] = update_sql("ALTER TABLE vocabulary ADD help VARCHAR(255) NOT NULL DEFAULT '' AFTER description;");
$ret[] = update_sql("ALTER TABLE {vocabulary} ADD help VARCHAR(255) NOT NULL DEFAULT '' AFTER description;");
}
else {
/* Needs PostgreSQL equivalent */
$ret[] = update_sql("ALTER TABLE {vocabulary} ADD help VARCHAR(255)");
$ret[] = update_sql("ALTER TABLE {vocabulary} ALTER help SET DEFAULT ''");
$ret[] = update_sql("UPDATE {vocabulary} SET help = ''");
$ret[] = update_sql("ALTER TABLE {vocabulary} ALTER help SET NOT NULL");
}
return $ret;
}
......@@ -966,7 +1045,32 @@ function update_85() {
)");
}
else {
/* Needs PostgreSQL equivalent */
$ret[] = update_sql("ALTER TABLE {bundle} RENAME TO {aggregator_category}");
$ret[] = update_sql("ALTER TABLE {aggregator_category} DROP attributes");
$ret[] = update_sql("ALTER TABLE {aggregator_category} RENAME bid TO cid");
$ret[] = update_sql("ALTER TABLE {aggregator_category} ADD description text");
$ret[] = update_sql("UPDATE {aggregator_category} SET description = ''");
$ret[] = update_sql("ALTER TABLE {aggregator_category} ALTER COLUMN description SET NOT NULL");
$ret[] = update_sql("ALTER TABLE {feed} RENAME TO {aggregator_feed}");
$ret[] = update_sql("ALTER TABLE {aggregator_feed} DROP attributes");
$ret[] = update_sql("ALTER TABLE {aggregator_feed} ADD block smallint");
$ret[] = update_sql("UPDATE {aggregator_feed} SET block = 0");
$ret[] = update_sql("ALTER TABLE {aggregator_feed} ALTER COLUMN block SET NOT NULL");
$ret[] = update_sql("ALTER TABLE {aggregator_category} ADD block smallint");
$ret[] = update_sql("UPDATE {aggregator_category} SET block = 0");
$ret[] = update_sql("ALTER TABLE {aggregator_category} ALTER COLUMN block SET NOT NULL");
$ret[] = update_sql("ALTER TABLE {item} RENAME TO {aggregator_item}");
$ret[] = update_sql("ALTER TABLE {aggregator_item} DROP attributes");
$ret[] = update_sql("CREATE TABLE {aggregator_category_feed} (
fid integer NOT NULL default '0',
cid integer NOT NULL default '0',
PRIMARY KEY (fid,cid)
);");
$ret[] = update_sql("CREATE TABLE {aggregator_category_item} (
iid integer NOT NULL default '0',
cid integer NOT NULL default '0',
PRIMARY KEY (iid,cid)
)");
}
return $ret;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment