summaryrefslogtreecommitdiff
path: root/modules/system/system.install
diff options
context:
space:
mode:
Diffstat (limited to 'modules/system/system.install')
-rw-r--r--modules/system/system.install1137
1 files changed, 165 insertions, 972 deletions
diff --git a/modules/system/system.install b/modules/system/system.install
index c3244cfea..ad34067f1 100644
--- a/modules/system/system.install
+++ b/modules/system/system.install
@@ -170,493 +170,24 @@ function system_requirements($phase) {
* Implementation of hook_install().
*/
function system_install() {
- switch ($GLOBALS['db_type']) {
- case 'mysql':
- case 'mysqli':
- db_query("CREATE TABLE {access} (
- aid int NOT NULL auto_increment,
- mask varchar(255) NOT NULL default '',
- type varchar(255) NOT NULL default '',
- status tinyint NOT NULL default '0',
- PRIMARY KEY (aid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {authmap} (
- aid int unsigned NOT NULL auto_increment,
- uid int NOT NULL default '0',
- authname varchar(128) NOT NULL default '',
- module varchar(128) NOT NULL default '',
- PRIMARY KEY (aid),
- UNIQUE KEY authname (authname)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {batch} (
- bid int(11) NOT NULL,
- token varchar(64) NOT NULL,
- timestamp int(11) NOT NULL,
- batch longtext,
- PRIMARY KEY (bid),
- KEY token (token)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {blocks} (
- bid int NOT NULL AUTO_INCREMENT,
- module varchar(64) DEFAULT '' NOT NULL,
- delta varchar(32) NOT NULL default '0',
- theme varchar(255) NOT NULL default '',
- status tinyint DEFAULT '0' NOT NULL,
- weight tinyint DEFAULT '0' NOT NULL,
- region varchar(64) DEFAULT 'left' NOT NULL,
- custom tinyint DEFAULT '0' NOT NULL,
- throttle tinyint DEFAULT '0' NOT NULL,
- visibility tinyint DEFAULT '0' NOT NULL,
- pages text NOT NULL,
- title varchar(64) DEFAULT '' NOT NULL,
- PRIMARY KEY (bid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {boxes} (
- bid int NOT NULL,
- body longtext,
- info varchar(128) NOT NULL default '',
- format int NOT NULL default '0',
- PRIMARY KEY (bid),
- UNIQUE KEY info (info)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {cache} (
- cid varchar(255) NOT NULL default '',
- data longblob,
- expire int NOT NULL default '0',
- created int NOT NULL default '0',
- headers text,
- serialized int(1) NOT NULL default '0',
- PRIMARY KEY (cid),
- INDEX expire (expire)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
- db_query("CREATE TABLE {cache_filter} (
- cid varchar(255) NOT NULL default '',
- data longblob,
- expire int NOT NULL default '0',
- created int NOT NULL default '0',
- headers text,
- serialized int(1) NOT NULL default '0',
- PRIMARY KEY (cid),
- INDEX expire (expire)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
- db_query("CREATE TABLE {cache_page} (
- cid varchar(255) BINARY NOT NULL default '',
- data longblob,
- expire int NOT NULL default '0',
- created int NOT NULL default '0',
- headers text,
- serialized int(1) NOT NULL default '0',
- PRIMARY KEY (cid),
- INDEX expire (expire)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
- db_query("CREATE TABLE {cache_form} (
- cid varchar(255) BINARY NOT NULL default '',
- data longblob,
- expire int NOT NULL default '0',
- created int NOT NULL default '0',
- headers text,
- serialized int(1) NOT NULL default '0',
- PRIMARY KEY (cid),
- INDEX expire (expire)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {comments} (
- cid int NOT NULL auto_increment,
- pid int NOT NULL default '0',
- nid int NOT NULL default '0',
- uid int NOT NULL default '0',
- subject varchar(64) NOT NULL default '',
- comment longtext NOT NULL,
- hostname varchar(128) NOT NULL default '',
- timestamp int NOT NULL default '0',
- score mediumint NOT NULL default '0',
- status tinyint unsigned NOT NULL default '0',
- format int NOT NULL default '0',
- thread varchar(255) NOT NULL,
- users longtext,
- name varchar(60) default NULL,
- mail varchar(64) default NULL,
- homepage varchar(255) default NULL,
- PRIMARY KEY (cid),
- KEY lid (nid),
- KEY status (status)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {node_comment_statistics} (
- nid int unsigned NOT NULL auto_increment,
- last_comment_timestamp int NOT NULL default '0',
- last_comment_name varchar(60) default NULL,
- last_comment_uid int NOT NULL default '0',
- comment_count int unsigned NOT NULL default '0',
- PRIMARY KEY (nid),
- KEY node_comment_timestamp (last_comment_timestamp)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {files} (
- fid int unsigned NOT NULL default 0,
- nid int unsigned NOT NULL default 0,
- filename varchar(255) NOT NULL default '',
- filepath varchar(255) NOT NULL default '',
- filemime varchar(255) NOT NULL default '',
- filesize int unsigned NOT NULL default 0,
- PRIMARY KEY (fid),
- KEY nid (nid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {file_revisions} (
- fid int unsigned NOT NULL default 0,
- vid int unsigned NOT NULL default 0,
- description varchar(255) NOT NULL default '',
- list tinyint unsigned NOT NULL default 0,
- PRIMARY KEY (fid, vid),
- KEY (vid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {filter_formats} (
- format int NOT NULL auto_increment,
- name varchar(255) NOT NULL default '',
- roles varchar(255) NOT NULL default '',
- cache tinyint NOT NULL default '0',
- PRIMARY KEY (format),
- UNIQUE KEY (name)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {filters} (
- fid int NOT NULL AUTO_INCREMENT,
- format int NOT NULL default '0',
- module varchar(64) NOT NULL default '',
- delta tinyint DEFAULT '0' NOT NULL,
- weight tinyint DEFAULT '0' NOT NULL,
- PRIMARY KEY (fid),
- INDEX (weight)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {flood} (
- fid int NOT NULL AUTO_INCREMENT,
- event varchar(64) NOT NULL default '',
- hostname varchar(128) NOT NULL default '',
- timestamp int NOT NULL default '0',
- PRIMARY KEY (fid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {history} (
- uid int NOT NULL default '0',
- nid int NOT NULL default '0',
- timestamp int NOT NULL default '0',
- PRIMARY KEY (uid,nid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {menu_router} (
- path varchar(255) NOT NULL default '',
- load_functions varchar(255) NOT NULL default '',
- to_arg_functions varchar(255) NOT NULL default '',
- access_callback varchar(255) NOT NULL default '',
- access_arguments text,
- page_callback varchar(255) NOT NULL default '',
- page_arguments text,
- fit int NOT NULL default 0,
- number_parts int NOT NULL default 0,
- tab_parent varchar(255) NOT NULL default '',
- tab_root varchar(255) NOT NULL default '',
- title varchar(255) NOT NULL default '',
- title_callback varchar(255) NOT NULL default '',
- title_arguments varchar(255) NOT NULL default '',
- type int NOT NULL default 0,
- block_callback varchar(255) NOT NULL default '',
- description TEXT,
- position varchar(255) NOT NULL default '',
- weight int NOT NULL default 0,
- file mediumtext,
- PRIMARY KEY (path),
- KEY fit (fit),
- KEY tab_parent (tab_parent)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {menu_links} (
- menu_name varchar(64) NOT NULL default '',
- mlid int NOT NULL default '0',
- plid int NOT NULL default '0',
- href varchar(255) NOT NULL default '',
- router_path varchar(255) NOT NULL default '',
- hidden smallint NOT NULL default '0',
- external smallint NOT NULL default '0',
- has_children int NOT NULL default '0',
- expanded smallint NOT NULL default '0',
- weight int NOT NULL default '0',
- depth int NOT NULL default '0',
- p1 int NOT NULL default '0',
- p2 int NOT NULL default '0',
- p3 int NOT NULL default '0',
- p4 int NOT NULL default '0',
- p5 int NOT NULL default '0',
- p6 int NOT NULL default '0',
- module varchar(255) NOT NULL default 'system',
- link_title varchar(255) NOT NULL default '',
- options text,
- PRIMARY KEY (mlid),
- KEY parents (plid, p1, p2, p3, p4, p5),
- KEY menu_name_path (menu_name, href),
- KEY menu_expanded_children (expanded, has_children)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {node} (
- nid int unsigned NOT NULL auto_increment,
- vid int unsigned NOT NULL default '0',
- type varchar(32) NOT NULL default '',
- language varchar(12) NOT NULL default '',
- title varchar(128) NOT NULL default '',
- uid int NOT NULL default '0',
- status int NOT NULL default '1',
- created int NOT NULL default '0',
- changed int NOT NULL default '0',
- comment int NOT NULL default '0',
- promote int NOT NULL default '0',
- moderate int NOT NULL default '0',
- sticky int NOT NULL default '0',
- PRIMARY KEY (nid),
- UNIQUE KEY nid_vid (nid, vid),
- UNIQUE KEY vid (vid),
- KEY node_type (type(4)),
- KEY node_title_type (title, type(4)),
- KEY status (status),
- KEY uid (uid),
- KEY node_moderate (moderate),
- KEY node_promote_status (promote, status),
- KEY node_created (created),
- KEY node_changed (changed),
- KEY node_status_type (status, type, nid),
- KEY nid (nid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {node_access} (
- nid int unsigned NOT NULL default '0',
- gid int unsigned NOT NULL default '0',
- realm varchar(255) NOT NULL default '',
- grant_view tinyint unsigned NOT NULL default '0',
- grant_update tinyint unsigned NOT NULL default '0',
- grant_delete tinyint unsigned NOT NULL default '0',
- PRIMARY KEY (nid,gid,realm)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {node_revisions} (
- nid int unsigned NOT NULL,
- vid int unsigned NOT NULL,
- uid int NOT NULL default '0',
- title varchar(128) NOT NULL default '',
- body longtext NOT NULL,
- teaser longtext NOT NULL,
- log longtext NOT NULL,
- timestamp int NOT NULL default '0',
- format int NOT NULL default '0',
- PRIMARY KEY (vid),
- KEY nid (nid),
- KEY uid (uid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {node_type} (
- type varchar(32) NOT NULL,
- name varchar(255) NOT NULL default '',
- module varchar(255) NOT NULL,
- description mediumtext NOT NULL,
- help mediumtext NOT NULL,
- has_title tinyint unsigned NOT NULL,
- title_label varchar(255) NOT NULL default '',
- has_body tinyint unsigned NOT NULL,
- body_label varchar(255) NOT NULL default '',
- min_word_count smallint unsigned NOT NULL,
- custom tinyint NOT NULL DEFAULT '0',
- modified tinyint NOT NULL DEFAULT '0',
- locked tinyint NOT NULL DEFAULT '0',
- orig_type varchar(255) NOT NULL default '',
- PRIMARY KEY (type)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {url_alias} (
- pid int unsigned NOT NULL auto_increment,
- src varchar(128) NOT NULL default '',
- dst varchar(128) NOT NULL default '',
- language varchar(12) NOT NULL default '',
- PRIMARY KEY (pid),
- UNIQUE KEY dst_language (dst, language),
- KEY src (src)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {permission} (
- pid int NOT NULL AUTO_INCREMENT,
- rid int unsigned NOT NULL default '0',
- perm longtext,
- tid int unsigned NOT NULL default '0',
- PRIMARY KEY (pid),
- KEY rid (rid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {role} (
- rid int unsigned NOT NULL auto_increment,
- name varchar(64) NOT NULL default '',
- PRIMARY KEY (rid),
- UNIQUE KEY name (name)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {blocks_roles} (
- module varchar(64) NOT NULL,
- delta varchar(32) NOT NULL,
- rid int unsigned NOT NULL,
- PRIMARY KEY (module, delta, rid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {sessions} (
- uid int unsigned NOT NULL,
- sid varchar(64) NOT NULL default '',
- hostname varchar(128) NOT NULL default '',
- timestamp int NOT NULL default '0',
- cache int NOT NULL default '0',
- session longtext,
- KEY uid (uid),
- PRIMARY KEY (sid),
- KEY timestamp (timestamp)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {sequences} (
- name varchar(255) NOT NULL default '',
- id int unsigned NOT NULL default '0',
- PRIMARY KEY (name)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {node_counter} (
- nid int NOT NULL default '0',
- totalcount bigint unsigned NOT NULL default '0',
- daycount mediumint unsigned NOT NULL default '0',
- timestamp int unsigned NOT NULL default '0',
- PRIMARY KEY (nid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {system} (
- filename varchar(255) NOT NULL default '',
- name varchar(255) NOT NULL default '',
- type varchar(255) NOT NULL default '',
- owner varchar(255) NOT NULL default '',
- status int NOT NULL default '0',
- throttle tinyint DEFAULT '0' NOT NULL,
- bootstrap int NOT NULL default '0',
- schema_version smallint NOT NULL default -1,
- weight int NOT NULL default '0',
- info text,
- PRIMARY KEY (filename),
- KEY (weight)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {term_data} (
- tid int unsigned NOT NULL auto_increment,
- vid int unsigned NOT NULL default '0',
- name varchar(255) NOT NULL default '',
- description longtext,
- weight tinyint NOT NULL default '0',
- PRIMARY KEY (tid),
- KEY vid (vid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {term_hierarchy} (
- tid int unsigned NOT NULL default '0',
- parent int unsigned NOT NULL default '0',
- KEY tid (tid),
- KEY parent (parent),
- PRIMARY KEY (tid, parent)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- 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 (vid,tid,nid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {term_relation} (
- trid int NOT NULL AUTO_INCREMENT,
- tid1 int unsigned NOT NULL default '0',
- tid2 int unsigned NOT NULL default '0',
- PRIMARY KEY (trid),
- KEY tid1 (tid1),
- KEY tid2 (tid2)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {term_synonym} (
- tsid int NOT NULL AUTO_INCREMENT,
- tid int unsigned NOT NULL default '0',
- name varchar(255) NOT NULL default '',
- PRIMARY KEY (tsid),
- KEY tid (tid),
- KEY name (name(3))
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {users} (
- uid int unsigned NOT NULL default '0',
- name varchar(60) NOT NULL default '',
- pass varchar(32) NOT NULL default '',
- mail varchar(64) default '',
- mode tinyint NOT NULL default '0',
- sort tinyint default '0',
- threshold tinyint default '0',
- theme varchar(255) NOT NULL default '',
- signature varchar(255) NOT NULL default '',
- created int NOT NULL default '0',
- access int NOT NULL default '0',
- login int NOT NULL default '0',
- status tinyint NOT NULL default '0',
- timezone varchar(8) default NULL,
- language varchar(12) NOT NULL default '',
- picture varchar(255) NOT NULL DEFAULT '',
- init varchar(64) default '',
- data longtext,
- PRIMARY KEY (uid),
- UNIQUE KEY name (name),
- KEY created (created),
- KEY access (access)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {users_roles} (
- uid int unsigned NOT NULL default '0',
- rid int unsigned NOT NULL default '0',
- PRIMARY KEY (uid, rid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {variable} (
- name varchar(128) NOT NULL default '',
- value longtext NOT NULL,
- language varchar(12) NOT NULL default '',
- PRIMARY KEY (name, language)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {vocabulary} (
- vid int unsigned NOT NULL auto_increment,
- name varchar(255) NOT NULL default '',
- description longtext,
- help varchar(255) NOT NULL default '',
- relations tinyint unsigned NOT NULL default '0',
- hierarchy tinyint unsigned NOT NULL default '0',
- multiple tinyint unsigned NOT NULL default '0',
- required tinyint unsigned NOT NULL default '0',
- tags tinyint unsigned NOT NULL default '0',
- module varchar(255) NOT NULL default '',
- weight tinyint NOT NULL default '0',
- PRIMARY KEY (vid)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- db_query("CREATE TABLE {vocabulary_node_types} (
- vid int unsigned NOT NULL DEFAULT '0',
- type varchar(32) NOT NULL DEFAULT '',
- PRIMARY KEY (vid, type)
- ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
-
- break;
- case 'pgsql':
+ switch ($GLOBALS['db_type']) {
+ case 'mysql':
+ case 'mysqli':
+ // As of Drupal 6, users.uid is an auto-incrementing column, but
+ // previously it was not. Below, we insert a row with uid 0 to
+ // represent user anonymous. By default, mysql treats that as
+ // requesting the next sequence value which, of course, is uid
+ // 1! This statement turns off that behavior for the duration
+ // of the current request, which is all we need.
+ //
+ // Note that this statement must be run any time the uid column
+ // is inserted or altered. That includes loading mysqldump
+ // backups, but mysqldump puts this statement in all backups for
+ // this exact reason. It also includes any Schema API
+ // table-altering operations on the users table.
+ db_query("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");
+ break;
+ case 'pgsql':
/* create unsigned types */
db_query("CREATE DOMAIN int_unsigned integer CHECK (VALUE >= 0)");
db_query("CREATE DOMAIN smallint_unsigned smallint CHECK (VALUE >= 0)");
@@ -692,492 +223,13 @@ function system_install() {
\'SELECT CASE WHEN $1 THEN $2 ELSE $3 END;\'
LANGUAGE \'sql\''
);
+ break;
+ }
- /* create tables */
- db_query("CREATE TABLE {access} (
- aid serial,
- mask varchar(255) NOT NULL default '',
- type varchar(255) NOT NULL default '',
- status smallint NOT NULL default '0',
- PRIMARY KEY (aid)
- )");
-
- db_query("CREATE TABLE {authmap} (
- aid serial CHECK (aid >= 0),
- uid int NOT NULL default '0',
- authname varchar(128) NOT NULL default '',
- module varchar(128) NOT NULL default '',
- PRIMARY KEY (aid),
- UNIQUE (authname)
- )");
-
- db_query("CREATE TABLE {batch} (
- bid serial CHECK (bid >= 0),
- token varchar(64) NOT NULL default '',
- timestamp int NOT NULL default '0',
- batch text,
- PRIMARY KEY (bid)
- )");
- db_query("CREATE INDEX {batch}_token_idx ON {batch} (token)");
-
- db_query("CREATE TABLE {blocks} (
- bid serial,
- module varchar(64) DEFAULT '' NOT NULL,
- delta varchar(32) NOT NULL default '0',
- theme varchar(255) NOT NULL default '',
- status smallint DEFAULT '0' NOT NULL,
- weight smallint DEFAULT '0' NOT NULL,
- region varchar(64) DEFAULT 'left' NOT NULL,
- custom smallint DEFAULT '0' NOT NULL,
- throttle smallint DEFAULT '0' NOT NULL,
- visibility smallint DEFAULT '0' NOT NULL,
- pages text DEFAULT '' NOT NULL,
- title varchar(64) DEFAULT '' NOT NULL,
- PRIMARY KEY (bid)
- )");
-
- db_query("CREATE TABLE {boxes} (
- bid serial,
- body text,
- info varchar(128) NOT NULL default '',
- format smallint NOT NULL default '0',
- PRIMARY KEY (bid),
- UNIQUE (info)
- )");
-
- db_query("CREATE TABLE {cache} (
- cid varchar(255) NOT NULL default '',
- data bytea,
- expire int NOT NULL default '0',
- created int NOT NULL default '0',
- headers text,
- serialized smallint NOT NULL default '0',
- PRIMARY KEY (cid)
- )");
- db_query("CREATE TABLE {cache_filter} (
- cid varchar(255) NOT NULL default '',
- data bytea,
- expire int NOT NULL default '0',
- created int NOT NULL default '0',
- headers text,
- serialized smallint NOT NULL default '0',
- PRIMARY KEY (cid)
- )");
- db_query("CREATE TABLE {cache_page} (
- cid varchar(255) NOT NULL default '',
- data bytea,
- expire int NOT NULL default '0',
- created int NOT NULL default '0',
- headers text,
- serialized smallint NOT NULL default '0',
- PRIMARY KEY (cid)
- )");
- db_query("CREATE TABLE {cache_form} (
- cid varchar(255) NOT NULL default '',
- data bytea,
- expire int NOT NULL default '0',
- created int NOT NULL default '0',
- headers text,
- serialized smallint NOT NULL default '0',
- PRIMARY KEY (cid)
- )");
- db_query("CREATE INDEX {cache}_expire_idx ON {cache} (expire)");
- db_query("CREATE INDEX {cache_filter}_expire_idx ON {cache_filter} (expire)");
- db_query("CREATE INDEX {cache_page}_expire_idx ON {cache_page} (expire)");
- db_query("CREATE INDEX {cache_form}_expire_idx ON {cache_form} (expire)");
-
- db_query("CREATE TABLE {comments} (
- cid serial,
- pid int NOT NULL default '0',
- nid int NOT NULL default '0',
- uid int NOT NULL default '0',
- subject varchar(64) NOT NULL default '',
- comment text NOT NULL,
- hostname varchar(128) NOT NULL default '',
- timestamp int NOT NULL default '0',
- score int NOT NULL default '0',
- status smallint_unsigned NOT NULL default '0',
- format smallint NOT NULL default '0',
- thread varchar(255) NOT NULL,
- users text,
- name varchar(60) default NULL,
- mail varchar(64) default NULL,
- homepage varchar(255) default NULL,
- PRIMARY KEY (cid)
- )");
- db_query("CREATE INDEX {comments}_nid_idx ON {comments} (nid)");
- db_query("CREATE INDEX {comments}_status_idx ON {comments} (status)");
-
- db_query("CREATE TABLE {node_comment_statistics} (
- nid serial CHECK (nid >= 0),
- last_comment_timestamp int NOT NULL default '0',
- last_comment_name varchar(60) default NULL,
- last_comment_uid int NOT NULL default '0',
- comment_count int_unsigned NOT NULL default '0',
- PRIMARY KEY (nid)
- )");
- db_query("CREATE INDEX {node_comment_statistics}_node_comment_timestamp_idx ON {node_comment_statistics} (last_comment_timestamp)");
-
- db_query("CREATE TABLE {files} (
- fid serial CHECK (fid >= 0),
- nid int_unsigned NOT NULL default 0,
- filename varchar(255) NOT NULL default '',
- filepath varchar(255) NOT NULL default '',
- filemime varchar(255) NOT NULL default '',
- filesize int_unsigned NOT NULL default 0,
- PRIMARY KEY (fid)
- )");
- db_query("CREATE INDEX {files}_nid_idx ON {files} (nid)");
-
- db_query("CREATE TABLE {file_revisions} (
- fid int_unsigned NOT NULL default 0,
- vid int_unsigned NOT NULL default 0,
- description varchar(255) NOT NULL default '',
- list smallint_unsigned NOT NULL default 0,
- PRIMARY KEY (fid, vid)
- )");
- db_query("CREATE INDEX {file_revisions}_vid_idx ON {file_revisions} (vid)");
-
- db_query("CREATE TABLE {filter_formats} (
- format serial,
- name varchar(255) NOT NULL default '',
- roles varchar(255) NOT NULL default '',
- cache smallint NOT NULL default '0',
- PRIMARY KEY (format),
- UNIQUE (name)
- )");
-
- db_query("CREATE TABLE {filters} (
- fid serial,
- format int NOT NULL default '0',
- module varchar(64) NOT NULL default '',
- delta smallint DEFAULT '0' NOT NULL,
- weight smallint DEFAULT '0' NOT NULL,
- PRIMARY KEY (fid)
- )");
- db_query("CREATE INDEX {filters}_weight_idx ON {filters} (weight)");
-
- db_query("CREATE TABLE {flood} (
- fid serial,
- event varchar(64) NOT NULL default '',
- hostname varchar(128) NOT NULL default '',
- timestamp int NOT NULL default '0',
- PRIMARY KEY (fid)
- )");
-
- db_query("CREATE TABLE {history} (
- uid int NOT NULL default '0',
- nid int NOT NULL default '0',
- timestamp int NOT NULL default '0',
- PRIMARY KEY (uid,nid)
- )");
-
- db_query("CREATE TABLE {menu_router} (
- path varchar(255) NOT NULL default '',
- load_functions varchar(255) NOT NULL default '',
- to_arg_functions varchar(255) NOT NULL default '',
- access_callback varchar(255) NOT NULL default '',
- access_arguments text,
- page_callback varchar(255) NOT NULL default '',
- page_arguments text,
- fit int NOT NULL default 0,
- number_parts int NOT NULL default 0,
- tab_parent varchar(255) NOT NULL default '',
- tab_root varchar(255) NOT NULL default '',
- title varchar(255) NOT NULL default '',
- title_callback varchar(255) NOT NULL default '',
- title_arguments varchar(255) NOT NULL default '',
- type int NOT NULL default 0,
- block_callback varchar(255) NOT NULL default '',
- description TEXT,
- position varchar(255) NOT NULL default '',
- weight int NOT NULL default 0,
- file text,
- PRIMARY KEY (path)
- )");
- db_query("CREATE INDEX {menu_router}_fit_idx ON {menu_router} (fit)");
- db_query("CREATE INDEX {menu_router}_tab_parent_idx ON {menu_router} (tab_parent)");
-
- db_query("CREATE TABLE {menu_links} (
- menu_name varchar(64) NOT NULL default '',
- mlid serial,
- plid int NOT NULL default '0',
- href varchar(255) NOT NULL default '',
- router_path varchar(255) NOT NULL default '',
- hidden smallint NOT NULL default '0',
- external smallint NOT NULL default '0',
- has_children int NOT NULL default '0',
- expanded smallint NOT NULL default '0',
- weight int NOT NULL default '0',
- depth int NOT NULL default '0',
- p1 int NOT NULL default '0',
- p2 int NOT NULL default '0',
- p3 int NOT NULL default '0',
- p4 int NOT NULL default '0',
- p5 int NOT NULL default '0',
- p6 int NOT NULL default '0',
- module varchar(255) NOT NULL default 'system',
- link_title varchar(255) NOT NULL default '',
- options text,
- PRIMARY KEY (mlid)
- )");
- db_query("CREATE INDEX {menu_links}_parents_idx ON {menu_links} (plid, p1, p2, p3, p4, p5)");
- db_query("CREATE INDEX {menu_links}_menu_name_idx ON {menu_links} (menu_name, href)");
- db_query("CREATE INDEX {menu_links}_expanded_children_idx ON {menu_links} (expanded, has_children)");
-
- db_query("CREATE TABLE {node} (
- nid serial CHECK (nid >= 0),
- vid int_unsigned NOT NULL default '0',
- type varchar(32) NOT NULL default '',
- language varchar(12) NOT NULL default '',
- title varchar(128) NOT NULL default '',
- uid int NOT NULL default '0',
- status int NOT NULL default '1',
- created int NOT NULL default '0',
- changed int NOT NULL default '0',
- comment int NOT NULL default '0',
- promote int NOT NULL default '0',
- moderate int NOT NULL default '0',
- sticky int NOT NULL default '0',
- PRIMARY KEY (nid),
- UNIQUE (nid, vid),
- UNIQUE (vid)
- )");
- db_query("CREATE INDEX {node}_node_type_idx ON {node} (substr (type, 1, 4))");
- db_query("CREATE INDEX {node}_node_title_type_idx ON {node} (title, substr(type, 1, 4))");
- db_query("CREATE INDEX {node}_status_idx ON {node} (status)");
- db_query("CREATE INDEX {node}_uid_idx ON {node} (uid)");
- db_query("CREATE INDEX {node}_node_moderate_idx ON {node} (moderate)");
- db_query("CREATE INDEX {node}_node_promote_status_idx ON {node} (promote, status)");
- db_query("CREATE INDEX {node}_node_created_idx ON {node} (created)");
- db_query("CREATE INDEX {node}_node_changed_idx ON {node} (changed)");
- db_query("CREATE INDEX {node}_node_status_type_idx ON {node} (status, type, nid)");
- db_query("CREATE INDEX {node}_nid_idx ON {node} (nid)");
-
- db_query("CREATE TABLE {node_access} (
- nid int_unsigned NOT NULL default '0',
- gid int_unsigned NOT NULL default '0',
- realm varchar(255) NOT NULL default '',
- grant_view smallint_unsigned NOT NULL default '0',
- grant_update smallint_unsigned NOT NULL default '0',
- grant_delete smallint_unsigned NOT NULL default '0',
- PRIMARY KEY (nid,gid,realm)
- )");
-
- db_query("CREATE TABLE {node_revisions} (
- nid int_unsigned NOT NULL,
- vid serial CHECK (vid >= 0),
- uid int NOT NULL default '0',
- title varchar(128) NOT NULL default '',
- body text NOT NULL default '',
- teaser text NOT NULL default '',
- log text NOT NULL default '',
- timestamp int NOT NULL default '0',
- format int NOT NULL default '0',
- PRIMARY KEY (vid)
- )");
- db_query("CREATE INDEX {node_revisions}_nid_idx ON {node_revisions} (nid)");
- db_query("CREATE INDEX {node_revisions}_uid_idx ON {node_revisions} (uid)");
-
- db_query("CREATE TABLE {node_type} (
- type varchar(32) NOT NULL,
- name varchar(255) NOT NULL default '',
- module varchar(255) NOT NULL,
- description text NOT NULL,
- help text NOT NULL,
- has_title smallint_unsigned NOT NULL,
- title_label varchar(255) NOT NULL default '',
- has_body smallint_unsigned NOT NULL,
- body_label varchar(255) NOT NULL default '',
- min_word_count smallint_unsigned NOT NULL,
- custom smallint NOT NULL DEFAULT '0',
- modified smallint NOT NULL DEFAULT '0',
- locked smallint NOT NULL DEFAULT '0',
- orig_type varchar(255) NOT NULL default '',
- PRIMARY KEY (type)
- )");
-
- db_query("CREATE TABLE {url_alias} (
- pid serial CHECK (pid >= 0),
- src varchar(128) NOT NULL default '',
- dst varchar(128) NOT NULL default '',
- language varchar(12) NOT NULL default '',
- PRIMARY KEY (pid)
- )");
- db_query("CREATE INDEX {url_alias}_src_idx ON {url_alias} (src)");
- db_query("CREATE UNIQUE INDEX {url_alias}_dst_language_idx ON {url_alias} (dst, language)");
-
- db_query("CREATE TABLE {permission} (
- pid serial,
- rid int_unsigned NOT NULL default '0',
- perm text,
- tid int_unsigned NOT NULL default '0',
- PRIMARY KEY (pid)
- )");
- db_query("CREATE INDEX {permission}_rid_idx ON {permission} (rid)");
-
- db_query("CREATE TABLE {role} (
- rid serial CHECK (rid >= 0),
- name varchar(64) NOT NULL default '',
- PRIMARY KEY (rid),
- UNIQUE (name)
- )");
-
- db_query("CREATE TABLE {blocks_roles} (
- module varchar(64) NOT NULL,
- delta varchar(32) NOT NULL,
- rid int_unsigned NOT NULL,
- PRIMARY KEY (module, delta, rid)
- )");
-
- db_query("CREATE TABLE {sessions} (
- uid int_unsigned NOT NULL,
- sid varchar(64) NOT NULL default '',
- hostname varchar(128) NOT NULL default '',
- timestamp int NOT NULL default '0',
- cache int NOT NULL default '0',
- session text,
- PRIMARY KEY (sid)
- )");
- db_query("CREATE INDEX {sessions}_uid_idx ON {sessions} (uid)");
- db_query("CREATE INDEX {sessions}_timestamp_idx ON {sessions} (timestamp)");
-
-/* Only used for MySQL
- db_query("CREATE TABLE {sequences} (
- name varchar(255) NOT NULL default '',
- id int_unsigned NOT NULL default '0',
- PRIMARY KEY (name)
- )"); */
-
- db_query("CREATE TABLE {node_counter} (
- nid int NOT NULL default '0',
- totalcount bigint_unsigned NOT NULL default '0',
- daycount int_unsigned NOT NULL default '0',
- timestamp int_unsigned NOT NULL default '0',
- PRIMARY KEY (nid)
- )");
-
- db_query("CREATE TABLE {system} (
- filename varchar(255) NOT NULL default '',
- name varchar(255) NOT NULL default '',
- type varchar(255) NOT NULL default '',
- owner varchar(255) NOT NULL default '',
- status int NOT NULL default '0',
- throttle smallint DEFAULT '0' NOT NULL,
- bootstrap int NOT NULL default '0',
- schema_version smallint NOT NULL default -1,
- weight int NOT NULL default '0',
- info text,
- PRIMARY KEY (filename)
- )");
- db_query("CREATE INDEX {system}_weight_idx ON {system} (weight)");
-
- db_query("CREATE TABLE {term_data} (
- tid serial CHECK (tid >= 0),
- vid int_unsigned NOT NULL default '0',
- name varchar(255) NOT NULL default '',
- description text,
- weight smallint NOT NULL default '0',
- PRIMARY KEY (tid)
- )");
- db_query("CREATE INDEX {term_data}_vid_idx ON {term_data} (vid)");
-
- db_query("CREATE TABLE {term_hierarchy} (
- tid int_unsigned NOT NULL default '0',
- parent int_unsigned NOT NULL default '0',
- PRIMARY KEY (tid, parent)
- )");
- db_query("CREATE INDEX {term_hierarchy}_tid_idx ON {term_hierarchy} (tid)");
- db_query("CREATE INDEX {term_hierarchy}_parent_idx ON {term_hierarchy} (parent)");
-
- 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,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} (
- trid serial,
- tid1 int_unsigned NOT NULL default '0',
- tid2 int_unsigned NOT NULL default '0',
- PRIMARY KEY (trid)
- )");
- db_query("CREATE INDEX {term_relation}_tid1_idx ON {term_relation} (tid1)");
- db_query("CREATE INDEX {term_relation}_tid2_idx ON {term_relation} (tid2)");
-
- db_query("CREATE TABLE {term_synonym} (
- tsid serial,
- tid int_unsigned NOT NULL default '0',
- name varchar(255) NOT NULL default '',
- PRIMARY KEY (tsid)
- )");
- db_query("CREATE INDEX {term_synonym}_tid_idx ON {term_synonym} (tid)");
- db_query("CREATE INDEX {term_synonym}_name_idx ON {term_synonym} (substr(name, 1, 3))");
-
- db_query("CREATE TABLE {users} (
- uid serial CHECK (uid >= 0),
- name varchar(60) NOT NULL default '',
- pass varchar(32) NOT NULL default '',
- mail varchar(64) default '',
- mode smallint NOT NULL default '0',
- sort smallint default '0',
- threshold smallint default '0',
- theme varchar(255) NOT NULL default '',
- signature varchar(255) NOT NULL default '',
- created int NOT NULL default '0',
- access int NOT NULL default '0',
- login int NOT NULL default '0',
- status smallint NOT NULL default '0',
- timezone varchar(8) default NULL,
- language varchar(12) NOT NULL default '',
- picture varchar(255) NOT NULL DEFAULT '',
- init varchar(64) default '',
- data text,
- PRIMARY KEY (uid),
- UNIQUE (name)
- )");
- db_query("CREATE INDEX {users}_access_idx ON {users} (access)");
- db_query("CREATE INDEX {users}_created_idx ON {users} (created)");
-
- db_query("CREATE TABLE {users_roles} (
- uid int_unsigned NOT NULL default '0',
- rid int_unsigned NOT NULL default '0',
- PRIMARY KEY (uid, rid)
- )");
-
- db_query("CREATE TABLE {variable} (
- name varchar(128) NOT NULL default '',
- value text NOT NULL,
- language varchar(12) NOT NULL default '',
- PRIMARY KEY (name, language)
- )");
-
- db_query("CREATE TABLE {vocabulary} (
- vid serial CHECK (vid >= 0),
- name varchar(255) NOT NULL default '',
- description text,
- help varchar(255) NOT NULL default '',
- relations smallint_unsigned NOT NULL default '0',
- hierarchy smallint_unsigned NOT NULL default '0',
- multiple smallint_unsigned NOT NULL default '0',
- required smallint_unsigned NOT NULL default '0',
- tags smallint_unsigned NOT NULL default '0',
- module varchar(255) NOT NULL default '',
- weight smallint NOT NULL default '0',
- PRIMARY KEY (vid)
- )");
-
- db_query("CREATE TABLE {vocabulary_node_types} (
- vid int_unsigned NOT NULL DEFAULT '0',
- type varchar(32) NOT NULL DEFAULT '',
- PRIMARY KEY (vid, type)
- )");
-
- break;
+ // Create tables.
+ $modules = array('system', 'filter', 'block', 'user', 'node', 'menu', 'comment', 'taxonomy');
+ foreach ($modules as $module) {
+ drupal_install_schema($module);
}
// Load system theme data appropriately.
@@ -4093,6 +3145,147 @@ function system_update_6018() {
}
/**
+ * Reconcile small differences in the previous, manually created mysql
+ * and pgsql schemas so they are the same and can be represented by a
+ * single schema structure.
+ *
+ * Note that the mysql and pgsql cases make different changes. This
+ * is because each schema needs to be tweaked in different ways to
+ * comform to the new schema structure. Also, since they operate on
+ * tables defined by many optional core modules which may not ever
+ * have been installed, they must test each table for existence. If
+ * the modules are first installed after this update exists the tables
+ * will be created from the schema structure and will start out
+ * correct.
+ */
+function system_update_6019() {
+ $ret = array();
+
+ switch ($GLOBALS['db_type']) {
+ case 'pgsql':
+ // Remove default ''.
+ if (db_table_exists('aggregator_feed')) {
+ db_field_set_no_default($ret, 'aggregator_feed', 'description');
+ db_field_set_no_default($ret, 'aggregator_feed', 'image');
+ }
+ db_field_set_no_default($ret, 'blocks', 'pages');
+ if (db_table_exists('contact')) {
+ db_field_set_no_default($ret, 'contact', 'recipients');
+ db_field_set_no_default($ret, 'contact', 'reply');
+ }
+ db_field_set_no_default($ret, 'watchdog', 'location');
+ db_field_set_no_default($ret, 'node_revisions', 'body');
+ db_field_set_no_default($ret, 'node_revisions', 'teaser');
+ db_field_set_no_default($ret, 'node_revisions', 'log');
+
+ // Update from pgsql 'float' (which means 'double precision') to
+ // schema 'float' (which in pgsql means 'real').
+ if (db_table_exists('search_index')) {
+ db_update_field($ret, 'search_index', 'score');
+ }
+ if (db_table_exists('search_total')) {
+ db_update_field($ret, 'search_total', 'count');
+ }
+
+ // Fix index menu.pid: pgsql code incorrectly had it on parent, not pid.
+ if (db_table_exists('menu')) {
+ db_drop_index($ret, 'menu', 'pid');
+ db_add_index($ret, 'menu', 'pid', array('pid'));
+ }
+
+ // Replace unique index dst_language with a unique constraint. The
+ // result is the same but the unique key fits our current schema
+ // structure. Also, the postgres documentation implies that
+ // unique constraints are preferable to unique indexes. See
+ // http://www.postgresql.org/docs/8.2/interactive/indexes-unique.html.
+ if (db_table_exists('url_alias')) {
+ db_drop_index($ret, 'url_alias', 'dst_language');
+ db_add_unique_key($ret, 'url_alias', 'dst_language',
+ array('dst', 'language'));
+ }
+
+ // Fix term_node pkey: mysql and pgsql code had different orders.
+ if (db_table_exists('term_node')) {
+ db_drop_primary_key($ret, 'term_node');
+ db_add_primary_key($ret, 'term_node', array('vid', 'tid', 'nid'));
+ }
+
+ // Remove defaults on batch columns.
+ if (db_table_exists('batch')) {
+ db_field_set_no_default($ret, 'batch', 'token');
+ db_field_set_no_default($ret, 'batch', 'timestamp');
+ }
+
+ // Fix index locales_source.source.
+ if (db_table_exists('locales_source')) {
+ db_drop_index($ret, 'locales_source', 'source');
+ db_add_index($ret, 'locales_source', 'source',
+ array(array('source', 30)));
+ }
+
+ // Rename unique key node.nid to node.nid_vid.
+ db_drop_unique_key($ret, 'node', 'nid');
+ db_add_unique_key($ret, 'node', 'nid_vid', array('nid', 'vid'));
+
+ break;
+
+ case 'mysql':
+ case 'mysqli':
+ // Rename key 'link' to 'url'.
+ if (db_table_exists('aggregator_feed')) {
+ db_drop_unique_key($ret, 'aggregator_feed', 'link');
+ db_add_unique_key($ret, 'aggregator_feed', 'url', array('url'));
+ }
+
+ // Change to size => small.
+ if (db_table_exists('boxes')) {
+ db_update_field($ret, 'boxes', 'format');
+ }
+
+ // Change to size => small.
+ // Rename index 'lid' to 'nid'.
+ if (db_table_exists('comments')) {
+ db_update_field($ret, 'comments', 'format');
+ db_drop_index($ret, 'comments', 'lid');
+ db_add_index($ret, 'comments', 'nid', array('nid'));
+ }
+
+ // Rename index 'lang' to 'language'.
+ if (db_table_exists('locales_target')) {
+ db_drop_index($ret, 'locales_target', 'lang');
+ db_add_index($ret, 'locales_target', 'language', array('language'));
+ }
+
+ // Change to size => small.
+ db_update_field($ret, 'cache', 'serialized');
+ db_update_field($ret, 'cache_filter', 'serialized');
+ db_update_field($ret, 'cache_page', 'serialized');
+ db_update_field($ret, 'cache_form', 'serialized');
+
+ // Remove default => 0, set auto increment.
+ db_update_field($ret, 'files', 'fid');
+
+ // Remove default => 0, set auto increment.
+ $ret[] = update_sql("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");
+ db_update_field($ret, 'users', 'uid');
+
+ // Set auto increment.
+ db_update_field($ret, 'node_revisions', 'vid');
+
+ // Set auto increment.
+ db_update_field($ret, 'boxes', 'bid');
+
+ // Set auto increment, unsigned.
+ db_update_field($ret, 'batch', 'bid');
+
+ break;
+ }
+
+ return $ret;
+}
+
+
+/**
* @} End of "defgroup updates-5.x-to-6.x"
* The next series of updates should start at 7000.
*/