blob: 2b2cc6f3494edf6ae7acb07bc889176902645d58 [file] [log] [blame]
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements. The ASF licenses this file to You
-- under the Apache License, Version 2.0 (the "License"); you may not
-- use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License. For additional information regarding
-- copyright in this work, please see the NOTICE file in the top level
-- directory of this distribution.
-- User permissions within a website
-- permission_mask: bitmask 000 limited, 001 author, 011 admin
-- pending: pending user acceptance of invitation to join website
create table roller_user_permissions (
id varchar(48) not null primary key,
website_id varchar(48) not null,
user_id varchar(48) not null,
permission_mask integer not null,
pending boolean default true not null
);
-- Add new handle field to uniquely identify websites in URLs
alter table website add column handle varchar(255);
alter table website alter handle set default '';
update website set handle='';
alter table website alter handle set not null ;
alter table website add column datecreated timestamp;
alter table website alter datecreated set default '20050101';
update website set datecreated='20050101';
alter table website alter datecreated set not null;
alter table website add column emailaddress varchar(255);
alter table website alter emailaddress set default '';
update website set emailaddress='';
alter table website alter handle set not null;
create index website_handle_index on website(handle);
-- this constraint won't work for upgrades until the handle column is
-- populated with data, otherwise all columns are '' which will not
-- satisfy the 'unique' condition
-- alter table website add constraint website_handle_uq unique (handle);
-- Add userid to weblogentry so we can track original creator of entry
alter table weblogentry add column userid varchar(48);
alter table weblogentry alter userid set default '';
update weblogentry set userid='';
alter table weblogentry alter userid set not null;
alter table weblogentry add column status varchar(20);
alter table weblogentry alter status set default '';
update weblogentry set status='';
alter table weblogentry alter status set not null;
create index we_status_idx on weblogentry(status);
create index weblogentry_userid_index on weblogentry(userid);
alter table rolleruser add column isenabled boolean;
alter table rolleruser alter isenabled set default true;
update rolleruser set isenabled=true;
alter table rolleruser alter isenabled set not null;
alter table rolleruser add column locale varchar(50);
alter table rolleruser alter locale set default '';
update rolleruser set locale='';
alter table rolleruser alter locale set not null;
alter table rolleruser add column timezone varchar(50);
alter table rolleruser alter timezone set default '';
update rolleruser set timezone='';
alter table rolleruser alter timezone set not null;
create index user_isenabled_index on rolleruser( isenabled );
-- -----------------------------------------------------
-- Audit log records time and comment about change
-- user_id: user that made change
-- object_id: id of associated object, if any
-- object_class: name of associated object class (e.g. WeblogEntryData)
-- comment: description of change
-- change_time: time that change was made
create table roller_audit_log (
id varchar(48) not null primary key,
user_id varchar(48) not null,
object_id varchar(48),
object_class varchar(255),
comment_text varchar(255) not null,
change_time timestamp
);
-- -----------------------------------------------------
-- make "pubtime" use NULL for default values. this allows us to leave
-- the "pubtime" for an entry unset until the entry is actually published.
--
-- sadly this needs to be done in a specific manner for each db, so check
-- the db_*.properties file for each db to see how it's done.
alter table weblogentry alter pubtime drop not null;
-- -----------------------------------------------------
-- For ROL-754. MySQL 5.x introduced a new keyword "condition"
-- which made the use of "condition" as a column name in the "pingtarget" table illegal.
-- This renames the column to "conditioncode". There is a corresponding change in the
-- Hibernate mapping metadata.
-- Create the new column. If your database will not autopopulate new columns with default values, you may
-- have to remove the "not null" clause here.
alter table pingtarget add column conditioncode integer;
alter table pingtarget alter conditioncode set default 0;
update pingtarget set conditioncode=0;
alter table pingtarget alter conditioncode set not null;
-- Transfer old column data to the new column. This is not critical as currently it is not used, and
-- later the data will be generated by usage in the ping processor.
update pingtarget set conditioncode=condition;
-- Drop the old column
-- Don't do this until you're sure you don't need to back-off to Roller 1.2
-- alter table pingtarget drop column condition;
-- -----------------------------------------------------
-- Removing all indexes, foreign key with long names to support DB2
alter table website drop foreign key website_userid_fk;
alter table userrole drop foreign key userrole_userid_fk;
alter table webpage drop foreign key weblogpage_websiteid_fk;
alter table weblogentry drop foreign key weblogentry_websiteid_fk;
alter table weblogentry drop foreign key weblogentry_categoryid_fk;
alter table weblogcategory drop foreign key weblogcategory_websiteid_fk;
alter table comment drop foreign key comment_entryid_fk;
alter table entryattribute drop foreign key att_entryid_fk;
alter table referer drop foreign key referer_entryid_fk;
alter table referer drop foreign key referer_websiteid_fk;
alter table folder drop foreign key folder_websiteid_fk;
alter table bookmark drop foreign key bookmark_folderid_fk;
alter table newsfeed drop foreign key newsfeed_websiteid_fk;
alter table pingtarget drop foreign key pingtarget_websiteid_fk;
alter table autoping drop foreign key autoping_websiteid_fk;
alter table autoping drop foreign key autoping_pingtargetid_fk;
alter table pingcategory drop foreign key pingcategory_autopingid_fk;
alter table pingcategory drop foreign key pingcategory_categoryid_fk;
alter table userrole drop index userrole_userid_index;
alter table userrole drop index userrole_username_index;
alter table usercookie drop index usercookie_username_index;
alter table usercookie drop index usercookie_cookieid_index;
alter table webpage drop index webpage_name_index;
alter table webpage drop index webpage_link_index;
alter table webpage drop index webpage_id_index;
alter table website drop index website_id_index;
alter table website drop index website_userid_index;
alter table website drop index website_isenabled_index;
alter table folder drop index folder_websiteid_index;
alter table folderassoc drop index folderassoc_folderid_index;
alter table folderassoc drop index folderassoc_ancestorid_index;
alter table folderassoc drop index folderassoc_relation_index;
alter table bookmark drop index bookmark_folderid_index;
alter table weblogcategory drop index weblogcategory_websiteid_index;
alter table weblogcategoryassoc drop index weblogcategoryassoc_categoryid_index;
alter table weblogcategoryassoc drop index weblogcategoryassoc_ancestorid_index;
alter table weblogcategoryassoc drop index weblogcategoryassoc_relation_index;
alter table weblogentry drop index weblogentry_websiteid_index;
alter table weblogentry drop index weblogentry_categoryid_index;
alter table weblogentry drop index weblogentry_pubtime_index;
alter table weblogentry drop index weblogentry_pinnedtomain_index;
alter table weblogentry drop index weblogentry_publishentry_index;
alter table newsfeed drop index newsfeed_websiteid_index;
alter table comment drop index comment_entryid_index;
alter table pingtarget drop index pingtarget_websiteid_index;
alter table autoping drop index autoping_websiteid_index;
alter table autoping drop index autoping_pingtargetid_index;
alter table pingcategory drop index pingcategory_autopingid_index;
alter table pingcategory drop index pingcategory_categoryid_index;
alter table pingqueueentry drop index pingqueueentry_entrytime_index;
alter table pingqueueentry drop index pingqueueentry_pingtargetid_index;
alter table pingqueueentry drop index pingqueueentry_websiteid_index;
alter table referer drop index referer_websiteid_index;
alter table referer drop index referer_entryid_index;
alter table referer drop index referer_refurl_index;
alter table referer drop index referer_requrl_index;
alter table referer drop index referer_datestr_index;
alter table referer drop index referer_refpermalink_index;
alter table referer drop index referer_duplicate_index;
alter table entryattribute drop index entryattribute_entryid_index;
alter table rag_group_subscription drop index rag_group_subscription_gid;
alter table rag_group_subscription drop index rag_group_subscription_sid;
alter table rag_group drop index rag_group_handle;
alter table rag_subscription drop index rag_subscription_feed_url;
alter table rag_entry drop index rag_entry_sid;
-- Adding all new indexes with short names
create index ur_userid_idx on userrole( userid );
create index ur_username_idx on userrole( username );
create index uc_username_idx on usercookie( username );
create index uc_cookieid_idx on usercookie( cookieid );
create index wp_name_idx on webpage( name );
create index wp_link_idx on webpage( link );
create index wp_id_idx on webpage( websiteid );
create index ws_userid_idx on website(userid);
create index ws_isenabled_idx on website(isenabled);
create index fo_websiteid_idx on folder( websiteid );
create index fa_folderid_idx on folderassoc( folderid );
create index fa_ancestorid_idx on folderassoc( ancestorid );
create index fa_relation_idx on folderassoc( relation );
create index bm_folderid_idx on bookmark( folderid );
create index wc_websiteid_idx on weblogcategory( websiteid );
create index wca_categoryid_idx on weblogcategoryassoc( categoryid );
create index wca_ancestorid_idx on weblogcategoryassoc( ancestorid );
create index wca_relation_idx on weblogcategoryassoc( relation );
create index we_websiteid_idx on weblogentry( websiteid );
create index we_categoryid_idx on weblogentry( categoryid );
create index we_pubtime_idx on weblogentry( pubtime,publishentry,websiteid );
create index we_pinnedtom_idx on weblogentry(pinnedtomain);
create index we_pubentry_idx on weblogentry(publishentry);
create index we_userid_idx on weblogentry(userid);
create index nf_websiteid_idx on newsfeed( websiteid );
create index co_entryid_idx on comment( entryid );
create index pt_websiteid_idx on pingtarget( websiteid );
create index ap_websiteid_idx on autoping( websiteid );
create index ap_pingtid_idx on autoping( pingtargetid );
create index pc_autopingid_idx on pingcategory( autopingid );
create index pc_categoryid_idx on pingcategory( categoryid );
create index pqe_entrytime_idx on pingqueueentry( entrytime );
create index pqe_pingtid_idx on pingqueueentry( pingtargetid );
create index pqe_websiteid_idx on pingqueueentry( websiteid );
create index ref_websiteid_idx on referer( websiteid );
create index ref_entryid_idx on referer( entryid );
create index ref_refurl_idx on referer( refurl );
create index ref_requrl_idx on referer( requrl );
create index ref_datestr_idx on referer( datestr );
create index ref_refpermlnk_idx on referer( refpermalink );
create index ref_duplicate_idx on referer( duplicate );
create index ea_entryid_idx on entryattribute( entryid );
create index raggs_gid_idx on rag_group_subscription(group_id);
create index raggs_sid_idx on rag_group_subscription(subscription_id);
create index rage_sid_idx on rag_entry(subscription_id);
-- Now add the foreign key relationships
-- user, role and website
alter table website add constraint ws_userid_fk
foreign key ( userid ) references rolleruser ( id ) ;
alter table userrole add constraint ur_userid_fk
foreign key ( userid ) references rolleruser( id ) ;
-- page, entry, category, comment
alter table webpage add constraint wp_websiteid_fk
foreign key ( websiteid ) references website( id ) ;
alter table weblogentry add constraint we_websiteid_fk
foreign key ( websiteid ) references website( id ) ;
alter table weblogentry add constraint wc_categoryid_fk
foreign key ( categoryid ) references weblogcategory( id ) ;
alter table weblogcategory add constraint wc_websiteid_fk
foreign key ( websiteid ) references website( id ) ;
alter table comment add constraint co_entryid_fk
foreign key ( entryid ) references weblogentry( id ) ;
alter table entryattribute add constraint att_entryid_fk
foreign key ( entryid ) references weblogentry( id ) ;
-- referer
alter table referer add constraint ref_entryid_fk
foreign key ( entryid ) references weblogentry( id ) ;
alter table referer add constraint ref_websiteid_fk
foreign key ( websiteid ) references website( id ) ;
-- folder and bookmark
alter table folder add constraint fo_websiteid_fk
foreign key ( websiteid ) references website( id ) ;
alter table bookmark add constraint bm_folderid_fk
foreign key ( folderid ) references folder( id ) ;
-- newsfeed
alter table newsfeed add constraint nf_websiteid_fk
foreign key ( websiteid ) references website( id ) ;
-- pingtarget, autoping, pingcategory
alter table pingtarget add constraint pt_websiteid_fk
foreign key (websiteid) references website(id) ;
alter table autoping add constraint ap_websiteid_fk
foreign key (websiteid) references website(id) ;
alter table autoping add constraint ap_pingtargetid_fk
foreign key (pingtargetid) references pingtarget(id) ;
alter table pingcategory add constraint pc_autopingid_fk
foreign key (autopingid) references autoping(id) ;
alter table pingcategory add constraint pc_categoryid_fk
foreign key (categoryid) references weblogcategory(id) ;
-- Oracle compatability DDL
alter table comment rename to roller_comment;