blob: 0e4e5728dc50b55aa7ff5a347a4be5939686c1c8 [file] [log] [blame]
#**
310-to-400-migration.vm: Velocity template that generates vendor-specific database scripts
DON'T RUN THIS, IT'S NOT A DATABASE CREATION SCRIPT!!!
**#
create table rag_properties (
name varchar(255) not null primary key,
value $db.TEXT_SQL_TYPE
);
create table rag_planet (
id varchar(48) not null primary key,
handle varchar(32) not null,
title varchar(255) not null,
description varchar(255)
);
alter table rag_planet add constraint ragp_handle_uq unique ( handle );
-- ensure that every weblog entry has a valid locale
#if ($db.DBTYPE != "POSTGRESQL")
update weblogentry e set
e.pubtime=pubtime,
e.updatetime=updatetime,
e.locale=(select locale from website where website.id=e.websiteid)
where e.locale is null or length(e.locale)=0;
#else
update weblogentry set
pubtime=pubtime,
updatetime=updatetime,
locale=(select locale from website where website.id=websiteid)
where locale is null or length(locale)=0;
#end
-- add new planet_id column to planet group table
#addColumnNull("rag_group" "planet_id" "varchar(48)")
-- upgrade old planet users to work with the new Roller Planet code
-- all groups must have a planet now, so provide a default planet and
-- put all existing groups in the new default planet
insert into rag_planet (id,title,handle) values ('zzz_default_planet_zzz','Default Planet','default');
update rag_group set planet_id='zzz_default_planet_zzz';
-- upgrade the way hierarchical objects are modeled
-- add new parentid column to weblogcategory table
#addColumnNull("weblogcategory" "parentid" "varchar(48)")
create index ws_parentid_idx on weblogcategory( parentid );
-- add new path column to weblogcategory table
#addColumnNull("weblogcategory" "path" "varchar(255)")
create index ws_path_idx on weblogcategory( path );
-- need to add this index for existing folder.parentid
create index fo_parentid_idx on folder( parentid );
-- add new path column to folder table
#addColumnNull("folder" "path" "varchar(255)")
create index fo_path_idx on folder( path );
-- update comment handling
-- add new fields to comment table to support CommentValidators
#addColumnNull("roller_comment" "referrer" "varchar(255)")
#addColumnNull("roller_comment" "useragent" "varchar(255)")
-- add new field to support comment plugins and content-type
#addColumnNull("roller_comment" "plugins" "varchar(255)")
#addColumnNotNull("roller_comment" "contenttype" "varchar(128)" "'text/plain'")
-- add new status field to comment table to simplify queries
#addColumnNotNull("roller_comment" "status" "varchar(20)" "'APPROVED'")
-- new status column needs an index
create index co_status_idx on roller_comment(status);
-- update existing data to use new status column
update roller_comment set status = 'APPROVED', posttime=posttime where approved=$db.BOOLEAN_TRUE;
update roller_comment set status = 'PENDING', posttime=posttime where pending=$db.BOOLEAN_TRUE;
update roller_comment set status = 'SPAM', posttime=posttime where spam=$db.BOOLEAN_TRUE;
update roller_comment set status = 'DISAPPROVED', posttime=posttime
where approved=$db.BOOLEAN_FALSE and spam=$db.BOOLEAN_FALSE and pending=$db.BOOLEAN_FALSE;
-- better support for doing scheduled entries
-- add new status option 'SCHEDULED' for future published entries
update weblogentry set status = 'SCHEDULED', pubtime=pubtime, updatetime=updatetime where pubtime > current_timestamp;
-- add new client column to roller_tasklock table
#addColumnNull("roller_tasklock" "client" "varchar(255)")
-- new column to support account activation by email
#addColumnNull("rolleruser" "activationcode" "varchar(48)")
-- new column to support screen name and populate with user names
#addColumnNotNull("rolleruser" "screenname" "varchar(255)" "'unspecified'")
update rolleruser set screenname = username;
-- new column to allow setting of path to icon for website
#addColumnNull("website" "icon" "varchar(255)")
-- new column to allow setting of short website about text
#addColumnNull("website" "about" "varchar(255)")
-- new column to allow setting of page template content-type
#addColumnNull("webpage" "outputtype" "varchar(48)")
-- add new action column to webpage table, default value is custom
#addColumnNotNull("webpage" "action" "varchar(16)" "'custom'")
update webpage set action = 'weblog' where name = 'Weblog';
-- add new custom stylesheet column to website table
#addColumnNull("website" "customstylesheet" "varchar(128)")
-- fix blogs which have unchecked showalllangs but did not check enablemultilang
update website set enablemultilang=$db.BOOLEAN_TRUE, datecreated=datecreated where showalllangs=$db.BOOLEAN_FALSE;
-- some missing foreign key constraints
alter table roller_user_permissions add constraint up_userid_fk
foreign key ( user_id ) references rolleruser( id ) $!db.ADDL_FK_PARAMS ;
alter table roller_user_permissions add constraint up_websiteid_fk
foreign key ( website_id ) references website( id ) $!db.ADDL_FK_PARAMS ;
-- some various indexes to improve performance
create index rhc_dailyhits_idx on roller_hitcounts( dailyhits );
create index we_combo1_idx on weblogentry(status, pubtime, websiteid);
create index we_combo2_idx on weblogentry(websiteid, pubtime, status);
create index co_combo1_idx on roller_comment(status, posttime);
-- remove old indexes that are no longer of value
#dropIndex('weblogentry' 'we_pubentry_idx')
-- fix wacky indexs which ended up with a size constraint
#dropIndex('rag_entry' 'rage_sid_idx')
create index rage_sid_idx on rag_entry(subscription_id);
#dropIndex('rag_group_subscription' 'raggs_gid_idx')
create index raggs_gid_idx on rag_group_subscription(group_id);
#dropIndex('rag_group_subscription' 'raggs_sid_idx')
create index raggs_sid_idx on rag_group_subscription(subscription_id);
-- remove no-longer-used needed tables
-- remove old rollerconfig table which has been deprecated since 1.2
#dropTableIfExists('rollerconfig')
-- remove old id column of group subscription table
-- #dropColumn('rag_group_subscription' 'id')
-- remove old approved, spam, pending columns from comment table
#dropColumn('roller_comment' 'approved')
#dropColumn('roller_comment' 'spam')
#dropColumn('roller_comment' 'pending')
-- remove bastard columns and indexes (optional)
-- #dropIndex('weblogentry' 'index_we_pubtime_idx')
-- #dropIndex('roller_comment' 'co_pending_idx')
-- #dropIndex('roller_comment' 'co_approved_idx')
-- #dropColumn('website' 'userid')
-- #dropColumn('website' 'weblogdayid')
-- #dropColumn('weblogentry' 'publishentry')
-- #dropColumn('weblogentry' 'link')
-- #dropTableIfExists('usercookie')
-- #dropTableIfExists('rag_config')
-- #dropTableIfExists('folderassoc')
-- #dropTableIfExists('weblogcategoryassoc')