alter Table Transactions ADD Column (ObjectType varchar(64) not null); update Transactions set ObjectType = 'RT::Ticket'; alter table Transactions drop column EffectiveTicket; alter table Transactions add column ReferenceType varchar(255) NULL; alter table Transactions add column OldReference integer NULL; alter table Transactions add column NewReference integer NULL; alter table Transactions drop index transactions1; alter table Transactions change Ticket ObjectId integer NOT NULL DEFAULT 0 ; CREATE INDEX Transactions1 ON Transactions (ObjectType, ObjectId); alter table TicketCustomFieldValues rename ObjectCustomFieldValues; alter table ObjectCustomFieldValues change Ticket ObjectId integer NOT NULL DEFAULT 0 ; alter table ObjectCustomFieldValues add column ObjectType varchar(255) not null; update ObjectCustomFieldValues set ObjectType = 'RT::Ticket'; alter table ObjectCustomFieldValues add column Current bool default 1; alter table ObjectCustomFieldValues add column LargeContent LONGTEXT NULL; alter table ObjectCustomFieldValues add column ContentType varchar(80) NULL; alter table ObjectCustomFieldValues add column ContentEncoding varchar(80) NULL; # These could fail if there's no such index and there's no "drop index if exists" syntax #alter table ObjectCustomFieldValues drop index ticketcustomfieldvalues1; #alter table ObjectCustomFieldValues drop index ticketcustomfieldvalues2; alter table ObjectCustomFieldValues add index ObjectCustomFieldValues1 (Content); alter table ObjectCustomFieldValues add index ObjectCustomFieldValues2 (CustomField,ObjectType,ObjectId); CREATE TABLE ObjectCustomFields ( id INTEGER NOT NULL AUTO_INCREMENT, CustomField int NOT NULL , ObjectId integer NOT NULL, SortOrder integer NOT NULL DEFAULT 0 , Creator integer NOT NULL DEFAULT 0 , Created DATETIME NULL , LastUpdatedBy integer NOT NULL DEFAULT 0 , LastUpdated DATETIME NULL , PRIMARY KEY (id) ) TYPE=InnoDB; INSERT into ObjectCustomFields (id, CustomField, ObjectId, SortOrder, Creator, LastUpdatedBy) SELECT null, id, Queue, SortOrder, Creator, LastUpdatedBy from CustomFields; alter table CustomFields add column LookupType varchar(255) NOT NULL; alter table CustomFields add column Repeated int2 NOT NULL DEFAULT 0 ; alter table CustomFields add column Pattern varchar(255) NULL; alter table CustomFields add column MaxValues integer; # See above # alter table CustomFields drop index CustomFields1; UPDATE CustomFields SET MaxValues = 0 WHERE Type LIKE '%Multiple'; UPDATE CustomFields SET MaxValues = 1 WHERE Type LIKE '%Single'; UPDATE CustomFields SET Type = 'Select' WHERE Type LIKE 'Select%'; UPDATE CustomFields SET Type = 'Freeform' WHERE Type LIKE 'Freeform%'; UPDATE CustomFields Set LookupType = 'RT::Queue-RT::Ticket'; alter table CustomFields drop column Queue;