Permalink
Please sign in to comment.
Browse files
Fix SCHEDULE_REPLY_CANCEL_WORK schema upgrade problem.
git-svn-id: https://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk@14698 e27351fd-9f3e-4f54-a53b-843176b1656c
- Loading branch information...
Showing
with
2,506 additions
and 346 deletions.
- +1 −1 txdav/common/datastore/sql_schema/current-oracle-dialect.sql
- +1 −1 txdav/common/datastore/sql_schema/current.sql
- +9 −60 txdav/common/datastore/sql_schema/old/oracle-dialect/v52.sql
- +979 −0 txdav/common/datastore/sql_schema/old/oracle-dialect/v53.sql
- +10 −71 txdav/common/datastore/sql_schema/old/postgres-dialect/v52.sql
- +1,213 −0 txdav/common/datastore/sql_schema/old/postgres-dialect/v53.sql
- +3 −81 txdav/common/datastore/sql_schema/upgrades/oracle-dialect/upgrade_from_51_to_52.sql
- +71 −27 txdav/common/datastore/sql_schema/upgrades/oracle-dialect/upgrade_from_52_to_53.sql
- +61 −0 txdav/common/datastore/sql_schema/upgrades/oracle-dialect/upgrade_from_53_to_54.sql
- +3 −73 txdav/common/datastore/sql_schema/upgrades/postgres-dialect/upgrade_from_51_to_52.sql
- +63 −27 txdav/common/datastore/sql_schema/upgrades/postgres-dialect/upgrade_from_52_to_53.sql
- +61 −0 txdav/common/datastore/sql_schema/upgrades/postgres-dialect/upgrade_from_53_to_54.sql
- +31 −5 txdav/common/datastore/upgrade/sql/test/test_upgrade_with_data.py
2
txdav/common/datastore/sql_schema/current-oracle-dialect.sql
2
txdav/common/datastore/sql_schema/current.sql
69
txdav/common/datastore/sql_schema/old/oracle-dialect/v52.sql
979
txdav/common/datastore/sql_schema/old/oracle-dialect/v53.sql
| @@ -0,0 +1,979 @@ | ||
| +create sequence RESOURCE_ID_SEQ; | ||
| +create sequence JOB_SEQ; | ||
| +create sequence INSTANCE_ID_SEQ; | ||
| +create sequence ATTACHMENT_ID_SEQ; | ||
| +create sequence REVISION_SEQ; | ||
| +create sequence WORKITEM_SEQ; | ||
| +create table NODE_INFO ( | ||
| + "HOSTNAME" nvarchar2(255), | ||
| + "PID" integer not null, | ||
| + "PORT" integer not null, | ||
| + "TIME" timestamp default CURRENT_TIMESTAMP at time zone 'UTC' not null, | ||
| + primary key ("HOSTNAME", "PORT") | ||
| +); | ||
| + | ||
| +create table NAMED_LOCK ( | ||
| + "LOCK_NAME" nvarchar2(255) primary key | ||
| +); | ||
| + | ||
| +create table JOB ( | ||
| + "JOB_ID" integer primary key, | ||
| + "WORK_TYPE" nvarchar2(255), | ||
| + "PRIORITY" integer default 0, | ||
| + "WEIGHT" integer default 0, | ||
| + "NOT_BEFORE" timestamp not null, | ||
| + "ASSIGNED" timestamp default null, | ||
| + "OVERDUE" timestamp default null, | ||
| + "FAILED" integer default 0 | ||
| +); | ||
| + | ||
| +create table CALENDAR_HOME ( | ||
| + "RESOURCE_ID" integer primary key, | ||
| + "OWNER_UID" nvarchar2(255), | ||
| + "STATUS" integer default 0 not null, | ||
| + "DATAVERSION" integer default 0 not null, | ||
| + unique ("OWNER_UID", "STATUS") | ||
| +); | ||
| + | ||
| +create table HOME_STATUS ( | ||
| + "ID" integer primary key, | ||
| + "DESCRIPTION" nvarchar2(16) unique | ||
| +); | ||
| + | ||
| +insert into HOME_STATUS (DESCRIPTION, ID) values ('normal', 0); | ||
| +insert into HOME_STATUS (DESCRIPTION, ID) values ('external', 1); | ||
| +insert into HOME_STATUS (DESCRIPTION, ID) values ('purging', 2); | ||
| +insert into HOME_STATUS (DESCRIPTION, ID) values ('migrating', 3); | ||
| +insert into HOME_STATUS (DESCRIPTION, ID) values ('disabled', 4); | ||
| +create table CALENDAR ( | ||
| + "RESOURCE_ID" integer primary key | ||
| +); | ||
| + | ||
| +create table CALENDAR_HOME_METADATA ( | ||
| + "RESOURCE_ID" integer primary key references CALENDAR_HOME on delete cascade, | ||
| + "QUOTA_USED_BYTES" integer default 0 not null, | ||
| + "DEFAULT_EVENTS" integer default null references CALENDAR on delete set null, | ||
| + "DEFAULT_TASKS" integer default null references CALENDAR on delete set null, | ||
| + "DEFAULT_POLLS" integer default null references CALENDAR on delete set null, | ||
| + "ALARM_VEVENT_TIMED" nclob default null, | ||
| + "ALARM_VEVENT_ALLDAY" nclob default null, | ||
| + "ALARM_VTODO_TIMED" nclob default null, | ||
| + "ALARM_VTODO_ALLDAY" nclob default null, | ||
| + "AVAILABILITY" nclob default null, | ||
| + "CREATED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC' | ||
| +); | ||
| + | ||
| +create table CALENDAR_METADATA ( | ||
| + "RESOURCE_ID" integer primary key references CALENDAR on delete cascade, | ||
| + "SUPPORTED_COMPONENTS" nvarchar2(255) default null, | ||
| + "CREATED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC' | ||
| +); | ||
| + | ||
| +create table CALENDAR_MIGRATION ( | ||
| + "CALENDAR_HOME_RESOURCE_ID" integer references CALENDAR_HOME on delete cascade, | ||
| + "REMOTE_RESOURCE_ID" integer not null, | ||
| + "LOCAL_RESOURCE_ID" integer references CALENDAR on delete cascade, | ||
| + "LAST_SYNC_TOKEN" nvarchar2(255), | ||
| + primary key ("CALENDAR_HOME_RESOURCE_ID", "REMOTE_RESOURCE_ID") | ||
| +); | ||
| + | ||
| +create table NOTIFICATION_HOME ( | ||
| + "RESOURCE_ID" integer primary key, | ||
| + "OWNER_UID" nvarchar2(255), | ||
| + "STATUS" integer default 0 not null, | ||
| + "DATAVERSION" integer default 0 not null, | ||
| + unique ("OWNER_UID", "STATUS") | ||
| +); | ||
| + | ||
| +create table NOTIFICATION ( | ||
| + "RESOURCE_ID" integer primary key, | ||
| + "NOTIFICATION_HOME_RESOURCE_ID" integer not null references NOTIFICATION_HOME, | ||
| + "NOTIFICATION_UID" nvarchar2(255), | ||
| + "NOTIFICATION_TYPE" nvarchar2(255), | ||
| + "NOTIFICATION_DATA" nclob, | ||
| + "MD5" nchar(32), | ||
| + "CREATED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + unique ("NOTIFICATION_UID", "NOTIFICATION_HOME_RESOURCE_ID") | ||
| +); | ||
| + | ||
| +create table CALENDAR_BIND ( | ||
| + "CALENDAR_HOME_RESOURCE_ID" integer not null references CALENDAR_HOME, | ||
| + "CALENDAR_RESOURCE_ID" integer not null references CALENDAR on delete cascade, | ||
| + "CALENDAR_RESOURCE_NAME" nvarchar2(255), | ||
| + "BIND_MODE" integer not null, | ||
| + "BIND_STATUS" integer not null, | ||
| + "BIND_REVISION" integer default 0 not null, | ||
| + "BIND_UID" nvarchar2(36) default null, | ||
| + "MESSAGE" nclob, | ||
| + "TRANSP" integer default 0 not null, | ||
| + "ALARM_VEVENT_TIMED" nclob default null, | ||
| + "ALARM_VEVENT_ALLDAY" nclob default null, | ||
| + "ALARM_VTODO_TIMED" nclob default null, | ||
| + "ALARM_VTODO_ALLDAY" nclob default null, | ||
| + "TIMEZONE" nclob default null, | ||
| + primary key ("CALENDAR_HOME_RESOURCE_ID", "CALENDAR_RESOURCE_ID"), | ||
| + unique ("CALENDAR_HOME_RESOURCE_ID", "CALENDAR_RESOURCE_NAME") | ||
| +); | ||
| + | ||
| +create table CALENDAR_BIND_MODE ( | ||
| + "ID" integer primary key, | ||
| + "DESCRIPTION" nvarchar2(16) unique | ||
| +); | ||
| + | ||
| +insert into CALENDAR_BIND_MODE (DESCRIPTION, ID) values ('own', 0); | ||
| +insert into CALENDAR_BIND_MODE (DESCRIPTION, ID) values ('read', 1); | ||
| +insert into CALENDAR_BIND_MODE (DESCRIPTION, ID) values ('write', 2); | ||
| +insert into CALENDAR_BIND_MODE (DESCRIPTION, ID) values ('direct', 3); | ||
| +insert into CALENDAR_BIND_MODE (DESCRIPTION, ID) values ('indirect', 4); | ||
| +insert into CALENDAR_BIND_MODE (DESCRIPTION, ID) values ('group', 5); | ||
| +insert into CALENDAR_BIND_MODE (DESCRIPTION, ID) values ('group_read', 6); | ||
| +insert into CALENDAR_BIND_MODE (DESCRIPTION, ID) values ('group_write', 7); | ||
| +create table CALENDAR_BIND_STATUS ( | ||
| + "ID" integer primary key, | ||
| + "DESCRIPTION" nvarchar2(16) unique | ||
| +); | ||
| + | ||
| +insert into CALENDAR_BIND_STATUS (DESCRIPTION, ID) values ('invited', 0); | ||
| +insert into CALENDAR_BIND_STATUS (DESCRIPTION, ID) values ('accepted', 1); | ||
| +insert into CALENDAR_BIND_STATUS (DESCRIPTION, ID) values ('declined', 2); | ||
| +insert into CALENDAR_BIND_STATUS (DESCRIPTION, ID) values ('invalid', 3); | ||
| +insert into CALENDAR_BIND_STATUS (DESCRIPTION, ID) values ('deleted', 4); | ||
| +create table CALENDAR_TRANSP ( | ||
| + "ID" integer primary key, | ||
| + "DESCRIPTION" nvarchar2(16) unique | ||
| +); | ||
| + | ||
| +insert into CALENDAR_TRANSP (DESCRIPTION, ID) values ('opaque', 0); | ||
| +insert into CALENDAR_TRANSP (DESCRIPTION, ID) values ('transparent', 1); | ||
| +create table CALENDAR_OBJECT ( | ||
| + "RESOURCE_ID" integer primary key, | ||
| + "CALENDAR_RESOURCE_ID" integer not null references CALENDAR on delete cascade, | ||
| + "RESOURCE_NAME" nvarchar2(255), | ||
| + "ICALENDAR_TEXT" nclob, | ||
| + "ICALENDAR_UID" nvarchar2(255), | ||
| + "ICALENDAR_TYPE" nvarchar2(255), | ||
| + "ATTACHMENTS_MODE" integer default 0 not null, | ||
| + "DROPBOX_ID" nvarchar2(255), | ||
| + "ORGANIZER" nvarchar2(255), | ||
| + "RECURRANCE_MIN" date, | ||
| + "RECURRANCE_MAX" date, | ||
| + "ACCESS" integer default 0 not null, | ||
| + "SCHEDULE_OBJECT" integer default 0, | ||
| + "SCHEDULE_TAG" nvarchar2(36) default null, | ||
| + "SCHEDULE_ETAGS" nclob default null, | ||
| + "PRIVATE_COMMENTS" integer default 0 not null, | ||
| + "MD5" nchar(32), | ||
| + "CREATED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "DATAVERSION" integer default 0 not null, | ||
| + unique ("CALENDAR_RESOURCE_ID", "RESOURCE_NAME") | ||
| +); | ||
| + | ||
| +create table CALENDAR_OBJ_ATTACHMENTS_MODE ( | ||
| + "ID" integer primary key, | ||
| + "DESCRIPTION" nvarchar2(16) unique | ||
| +); | ||
| + | ||
| +insert into CALENDAR_OBJ_ATTACHMENTS_MODE (DESCRIPTION, ID) values ('none', 0); | ||
| +insert into CALENDAR_OBJ_ATTACHMENTS_MODE (DESCRIPTION, ID) values ('read', 1); | ||
| +insert into CALENDAR_OBJ_ATTACHMENTS_MODE (DESCRIPTION, ID) values ('write', 2); | ||
| +create table CALENDAR_ACCESS_TYPE ( | ||
| + "ID" integer primary key, | ||
| + "DESCRIPTION" nvarchar2(32) unique | ||
| +); | ||
| + | ||
| +insert into CALENDAR_ACCESS_TYPE (DESCRIPTION, ID) values ('', 0); | ||
| +insert into CALENDAR_ACCESS_TYPE (DESCRIPTION, ID) values ('public', 1); | ||
| +insert into CALENDAR_ACCESS_TYPE (DESCRIPTION, ID) values ('private', 2); | ||
| +insert into CALENDAR_ACCESS_TYPE (DESCRIPTION, ID) values ('confidential', 3); | ||
| +insert into CALENDAR_ACCESS_TYPE (DESCRIPTION, ID) values ('restricted', 4); | ||
| +create table TIME_RANGE ( | ||
| + "INSTANCE_ID" integer primary key, | ||
| + "CALENDAR_RESOURCE_ID" integer not null references CALENDAR on delete cascade, | ||
| + "CALENDAR_OBJECT_RESOURCE_ID" integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + "FLOATING" integer not null, | ||
| + "START_DATE" timestamp not null, | ||
| + "END_DATE" timestamp not null, | ||
| + "FBTYPE" integer not null, | ||
| + "TRANSPARENT" integer not null | ||
| +); | ||
| + | ||
| +create table FREE_BUSY_TYPE ( | ||
| + "ID" integer primary key, | ||
| + "DESCRIPTION" nvarchar2(16) unique | ||
| +); | ||
| + | ||
| +insert into FREE_BUSY_TYPE (DESCRIPTION, ID) values ('unknown', 0); | ||
| +insert into FREE_BUSY_TYPE (DESCRIPTION, ID) values ('free', 1); | ||
| +insert into FREE_BUSY_TYPE (DESCRIPTION, ID) values ('busy', 2); | ||
| +insert into FREE_BUSY_TYPE (DESCRIPTION, ID) values ('busy-unavailable', 3); | ||
| +insert into FREE_BUSY_TYPE (DESCRIPTION, ID) values ('busy-tentative', 4); | ||
| +create table PERUSER ( | ||
| + "TIME_RANGE_INSTANCE_ID" integer not null references TIME_RANGE on delete cascade, | ||
| + "USER_ID" nvarchar2(255), | ||
| + "TRANSPARENT" integer not null, | ||
| + "ADJUSTED_START_DATE" timestamp default null, | ||
| + "ADJUSTED_END_DATE" timestamp default null, | ||
| + primary key ("TIME_RANGE_INSTANCE_ID", "USER_ID") | ||
| +); | ||
| + | ||
| +create table CALENDAR_OBJECT_MIGRATION ( | ||
| + "CALENDAR_HOME_RESOURCE_ID" integer references CALENDAR_HOME on delete cascade, | ||
| + "REMOTE_RESOURCE_ID" integer not null, | ||
| + "LOCAL_RESOURCE_ID" integer references CALENDAR_OBJECT on delete cascade, | ||
| + primary key ("CALENDAR_HOME_RESOURCE_ID", "REMOTE_RESOURCE_ID") | ||
| +); | ||
| + | ||
| +create table ATTACHMENT ( | ||
| + "ATTACHMENT_ID" integer primary key, | ||
| + "CALENDAR_HOME_RESOURCE_ID" integer not null references CALENDAR_HOME, | ||
| + "DROPBOX_ID" nvarchar2(255), | ||
| + "CONTENT_TYPE" nvarchar2(255), | ||
| + "SIZE" integer not null, | ||
| + "MD5" nchar(32), | ||
| + "CREATED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "PATH" nvarchar2(1024) | ||
| +); | ||
| + | ||
| +create table ATTACHMENT_CALENDAR_OBJECT ( | ||
| + "ATTACHMENT_ID" integer not null references ATTACHMENT on delete cascade, | ||
| + "MANAGED_ID" nvarchar2(255), | ||
| + "CALENDAR_OBJECT_RESOURCE_ID" integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + primary key ("ATTACHMENT_ID", "CALENDAR_OBJECT_RESOURCE_ID"), | ||
| + unique ("MANAGED_ID", "CALENDAR_OBJECT_RESOURCE_ID") | ||
| +); | ||
| + | ||
| +create table ATTACHMENT_MIGRATION ( | ||
| + "CALENDAR_HOME_RESOURCE_ID" integer references CALENDAR_HOME on delete cascade, | ||
| + "REMOTE_RESOURCE_ID" integer not null, | ||
| + "LOCAL_RESOURCE_ID" integer references ATTACHMENT on delete cascade, | ||
| + primary key ("CALENDAR_HOME_RESOURCE_ID", "REMOTE_RESOURCE_ID") | ||
| +); | ||
| + | ||
| +create table RESOURCE_PROPERTY ( | ||
| + "RESOURCE_ID" integer not null, | ||
| + "NAME" nvarchar2(255), | ||
| + "VALUE" nclob, | ||
| + "VIEWER_UID" nvarchar2(255), | ||
| + primary key ("RESOURCE_ID", "NAME", "VIEWER_UID") | ||
| +); | ||
| + | ||
| +create table ADDRESSBOOK_HOME ( | ||
| + "RESOURCE_ID" integer primary key, | ||
| + "ADDRESSBOOK_PROPERTY_STORE_ID" integer not null, | ||
| + "OWNER_UID" nvarchar2(255), | ||
| + "STATUS" integer default 0 not null, | ||
| + "DATAVERSION" integer default 0 not null, | ||
| + unique ("OWNER_UID", "STATUS") | ||
| +); | ||
| + | ||
| +create table ADDRESSBOOK_HOME_METADATA ( | ||
| + "RESOURCE_ID" integer primary key references ADDRESSBOOK_HOME on delete cascade, | ||
| + "QUOTA_USED_BYTES" integer default 0 not null, | ||
| + "CREATED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC' | ||
| +); | ||
| + | ||
| +create table SHARED_ADDRESSBOOK_BIND ( | ||
| + "ADDRESSBOOK_HOME_RESOURCE_ID" integer not null references ADDRESSBOOK_HOME, | ||
| + "OWNER_HOME_RESOURCE_ID" integer not null references ADDRESSBOOK_HOME on delete cascade, | ||
| + "ADDRESSBOOK_RESOURCE_NAME" nvarchar2(255), | ||
| + "BIND_MODE" integer not null, | ||
| + "BIND_STATUS" integer not null, | ||
| + "BIND_REVISION" integer default 0 not null, | ||
| + "BIND_UID" nvarchar2(36) default null, | ||
| + "MESSAGE" nclob, | ||
| + primary key ("ADDRESSBOOK_HOME_RESOURCE_ID", "OWNER_HOME_RESOURCE_ID"), | ||
| + unique ("ADDRESSBOOK_HOME_RESOURCE_ID", "ADDRESSBOOK_RESOURCE_NAME") | ||
| +); | ||
| + | ||
| +create table ADDRESSBOOK_OBJECT ( | ||
| + "RESOURCE_ID" integer primary key, | ||
| + "ADDRESSBOOK_HOME_RESOURCE_ID" integer not null references ADDRESSBOOK_HOME on delete cascade, | ||
| + "RESOURCE_NAME" nvarchar2(255), | ||
| + "VCARD_TEXT" nclob, | ||
| + "VCARD_UID" nvarchar2(255), | ||
| + "KIND" integer not null, | ||
| + "MD5" nchar(32), | ||
| + "CREATED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "DATAVERSION" integer default 0 not null, | ||
| + unique ("ADDRESSBOOK_HOME_RESOURCE_ID", "RESOURCE_NAME"), | ||
| + unique ("ADDRESSBOOK_HOME_RESOURCE_ID", "VCARD_UID") | ||
| +); | ||
| + | ||
| +create table ADDRESSBOOK_OBJECT_KIND ( | ||
| + "ID" integer primary key, | ||
| + "DESCRIPTION" nvarchar2(16) unique | ||
| +); | ||
| + | ||
| +insert into ADDRESSBOOK_OBJECT_KIND (DESCRIPTION, ID) values ('person', 0); | ||
| +insert into ADDRESSBOOK_OBJECT_KIND (DESCRIPTION, ID) values ('group', 1); | ||
| +insert into ADDRESSBOOK_OBJECT_KIND (DESCRIPTION, ID) values ('resource', 2); | ||
| +insert into ADDRESSBOOK_OBJECT_KIND (DESCRIPTION, ID) values ('location', 3); | ||
| +create table ABO_MEMBERS ( | ||
| + "GROUP_ID" integer not null, | ||
| + "ADDRESSBOOK_ID" integer not null references ADDRESSBOOK_HOME on delete cascade, | ||
| + "MEMBER_ID" integer not null, | ||
| + "REVISION" integer not null, | ||
| + "REMOVED" integer default 0 not null, | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + primary key ("GROUP_ID", "MEMBER_ID", "REVISION") | ||
| +); | ||
| + | ||
| +create table ABO_FOREIGN_MEMBERS ( | ||
| + "GROUP_ID" integer not null references ADDRESSBOOK_OBJECT on delete cascade, | ||
| + "ADDRESSBOOK_ID" integer not null references ADDRESSBOOK_HOME on delete cascade, | ||
| + "MEMBER_ADDRESS" nvarchar2(255), | ||
| + primary key ("GROUP_ID", "MEMBER_ADDRESS") | ||
| +); | ||
| + | ||
| +create table SHARED_GROUP_BIND ( | ||
| + "ADDRESSBOOK_HOME_RESOURCE_ID" integer not null references ADDRESSBOOK_HOME, | ||
| + "GROUP_RESOURCE_ID" integer not null references ADDRESSBOOK_OBJECT on delete cascade, | ||
| + "GROUP_ADDRESSBOOK_NAME" nvarchar2(255), | ||
| + "BIND_MODE" integer not null, | ||
| + "BIND_STATUS" integer not null, | ||
| + "BIND_REVISION" integer default 0 not null, | ||
| + "BIND_UID" nvarchar2(36) default null, | ||
| + "MESSAGE" nclob, | ||
| + primary key ("ADDRESSBOOK_HOME_RESOURCE_ID", "GROUP_RESOURCE_ID"), | ||
| + unique ("ADDRESSBOOK_HOME_RESOURCE_ID", "GROUP_ADDRESSBOOK_NAME") | ||
| +); | ||
| + | ||
| +create table CALENDAR_OBJECT_REVISIONS ( | ||
| + "CALENDAR_HOME_RESOURCE_ID" integer not null references CALENDAR_HOME, | ||
| + "CALENDAR_RESOURCE_ID" integer references CALENDAR, | ||
| + "CALENDAR_NAME" nvarchar2(255) default null, | ||
| + "RESOURCE_NAME" nvarchar2(255), | ||
| + "REVISION" integer not null, | ||
| + "DELETED" integer not null, | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + unique ("CALENDAR_HOME_RESOURCE_ID", "CALENDAR_RESOURCE_ID", "CALENDAR_NAME", "RESOURCE_NAME") | ||
| +); | ||
| + | ||
| +create table ADDRESSBOOK_OBJECT_REVISIONS ( | ||
| + "ADDRESSBOOK_HOME_RESOURCE_ID" integer not null references ADDRESSBOOK_HOME, | ||
| + "OWNER_HOME_RESOURCE_ID" integer references ADDRESSBOOK_HOME, | ||
| + "ADDRESSBOOK_NAME" nvarchar2(255) default null, | ||
| + "OBJECT_RESOURCE_ID" integer default 0, | ||
| + "RESOURCE_NAME" nvarchar2(255), | ||
| + "REVISION" integer not null, | ||
| + "DELETED" integer not null, | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + unique ("ADDRESSBOOK_HOME_RESOURCE_ID", "OWNER_HOME_RESOURCE_ID", "ADDRESSBOOK_NAME", "RESOURCE_NAME") | ||
| +); | ||
| + | ||
| +create table NOTIFICATION_OBJECT_REVISIONS ( | ||
| + "NOTIFICATION_HOME_RESOURCE_ID" integer not null references NOTIFICATION_HOME on delete cascade, | ||
| + "RESOURCE_NAME" nvarchar2(255), | ||
| + "REVISION" integer not null, | ||
| + "DELETED" integer not null, | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + unique ("NOTIFICATION_HOME_RESOURCE_ID", "RESOURCE_NAME") | ||
| +); | ||
| + | ||
| +create table APN_SUBSCRIPTIONS ( | ||
| + "TOKEN" nvarchar2(255), | ||
| + "RESOURCE_KEY" nvarchar2(255), | ||
| + "MODIFIED" integer not null, | ||
| + "SUBSCRIBER_GUID" nvarchar2(255), | ||
| + "USER_AGENT" nvarchar2(255) default null, | ||
| + "IP_ADDR" nvarchar2(255) default null, | ||
| + primary key ("TOKEN", "RESOURCE_KEY") | ||
| +); | ||
| + | ||
| +create table IMIP_TOKENS ( | ||
| + "TOKEN" nvarchar2(255), | ||
| + "ORGANIZER" nvarchar2(255), | ||
| + "ATTENDEE" nvarchar2(255), | ||
| + "ICALUID" nvarchar2(255), | ||
| + "ACCESSED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + primary key ("ORGANIZER", "ATTENDEE", "ICALUID") | ||
| +); | ||
| + | ||
| +create table IMIP_INVITATION_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "FROM_ADDR" nvarchar2(255), | ||
| + "TO_ADDR" nvarchar2(255), | ||
| + "ICALENDAR_TEXT" nclob | ||
| +); | ||
| + | ||
| +create table IMIP_POLLING_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB | ||
| +); | ||
| + | ||
| +create table IMIP_REPLY_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "ORGANIZER" nvarchar2(255), | ||
| + "ATTENDEE" nvarchar2(255), | ||
| + "ICALENDAR_TEXT" nclob | ||
| +); | ||
| + | ||
| +create table PUSH_NOTIFICATION_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "PUSH_ID" nvarchar2(255), | ||
| + "PUSH_PRIORITY" integer not null | ||
| +); | ||
| + | ||
| +create table GROUP_CACHER_POLLING_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB | ||
| +); | ||
| + | ||
| +create table GROUP_REFRESH_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "GROUP_UID" nvarchar2(255) | ||
| +); | ||
| + | ||
| +create table GROUP_DELEGATE_CHANGES_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "DELEGATOR_UID" nvarchar2(255), | ||
| + "READ_DELEGATE_UID" nvarchar2(255), | ||
| + "WRITE_DELEGATE_UID" nvarchar2(255) | ||
| +); | ||
| + | ||
| +create table GROUPS ( | ||
| + "GROUP_ID" integer primary key, | ||
| + "NAME" nvarchar2(255), | ||
| + "GROUP_UID" nvarchar2(255) unique, | ||
| + "MEMBERSHIP_HASH" nvarchar2(255), | ||
| + "EXTANT" integer default 1, | ||
| + "CREATED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC', | ||
| + "MODIFIED" timestamp default CURRENT_TIMESTAMP at time zone 'UTC' | ||
| +); | ||
| + | ||
| +create table GROUP_MEMBERSHIP ( | ||
| + "GROUP_ID" integer not null references GROUPS on delete cascade, | ||
| + "MEMBER_UID" nvarchar2(255), | ||
| + primary key ("GROUP_ID", "MEMBER_UID") | ||
| +); | ||
| + | ||
| +create table GROUP_ATTENDEE_RECONCILE_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "RESOURCE_ID" integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + "GROUP_ID" integer not null references GROUPS on delete cascade | ||
| +); | ||
| + | ||
| +create table GROUP_ATTENDEE ( | ||
| + "GROUP_ID" integer not null references GROUPS on delete cascade, | ||
| + "RESOURCE_ID" integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + "MEMBERSHIP_HASH" nvarchar2(255), | ||
| + primary key ("GROUP_ID", "RESOURCE_ID") | ||
| +); | ||
| + | ||
| +create table GROUP_SHAREE_RECONCILE_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "CALENDAR_ID" integer not null references CALENDAR on delete cascade, | ||
| + "GROUP_ID" integer not null references GROUPS on delete cascade | ||
| +); | ||
| + | ||
| +create table GROUP_SHAREE ( | ||
| + "GROUP_ID" integer not null references GROUPS on delete cascade, | ||
| + "CALENDAR_ID" integer not null references CALENDAR on delete cascade, | ||
| + "GROUP_BIND_MODE" integer not null, | ||
| + "MEMBERSHIP_HASH" nvarchar2(255), | ||
| + primary key ("GROUP_ID", "CALENDAR_ID") | ||
| +); | ||
| + | ||
| +create table DELEGATES ( | ||
| + "DELEGATOR" nvarchar2(255), | ||
| + "DELEGATE" nvarchar2(255), | ||
| + "READ_WRITE" integer not null, | ||
| + primary key ("DELEGATOR", "READ_WRITE", "DELEGATE") | ||
| +); | ||
| + | ||
| +create table DELEGATE_GROUPS ( | ||
| + "DELEGATOR" nvarchar2(255), | ||
| + "GROUP_ID" integer not null references GROUPS on delete cascade, | ||
| + "READ_WRITE" integer not null, | ||
| + "IS_EXTERNAL" integer not null, | ||
| + primary key ("DELEGATOR", "READ_WRITE", "GROUP_ID") | ||
| +); | ||
| + | ||
| +create table EXTERNAL_DELEGATE_GROUPS ( | ||
| + "DELEGATOR" nvarchar2(255) primary key, | ||
| + "GROUP_UID_READ" nvarchar2(255), | ||
| + "GROUP_UID_WRITE" nvarchar2(255) | ||
| +); | ||
| + | ||
| +create table CALENDAR_OBJECT_SPLITTER_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "RESOURCE_ID" integer not null references CALENDAR_OBJECT on delete cascade | ||
| +); | ||
| + | ||
| +create table CALENDAR_OBJECT_UPGRADE_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "RESOURCE_ID" integer not null references CALENDAR_OBJECT on delete cascade | ||
| +); | ||
| + | ||
| +create table FIND_MIN_VALID_REVISION_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB | ||
| +); | ||
| + | ||
| +create table REVISION_CLEANUP_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB | ||
| +); | ||
| + | ||
| +create table INBOX_CLEANUP_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB | ||
| +); | ||
| + | ||
| +create table CLEANUP_ONE_INBOX_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "HOME_ID" integer not null unique references CALENDAR_HOME on delete cascade | ||
| +); | ||
| + | ||
| +create table SCHEDULE_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "ICALENDAR_UID" nvarchar2(255), | ||
| + "WORK_TYPE" nvarchar2(255) | ||
| +); | ||
| + | ||
| +create table SCHEDULE_REFRESH_WORK ( | ||
| + "WORK_ID" integer primary key references SCHEDULE_WORK on delete cascade, | ||
| + "HOME_RESOURCE_ID" integer not null references CALENDAR_HOME on delete cascade, | ||
| + "RESOURCE_ID" integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + "ATTENDEE_COUNT" integer | ||
| +); | ||
| + | ||
| +create table SCHEDULE_REFRESH_ATTENDEES ( | ||
| + "RESOURCE_ID" integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + "ATTENDEE" nvarchar2(255), | ||
| + primary key ("RESOURCE_ID", "ATTENDEE") | ||
| +); | ||
| + | ||
| +create table SCHEDULE_AUTO_REPLY_WORK ( | ||
| + "WORK_ID" integer primary key references SCHEDULE_WORK on delete cascade, | ||
| + "HOME_RESOURCE_ID" integer not null references CALENDAR_HOME on delete cascade, | ||
| + "RESOURCE_ID" integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + "PARTSTAT" nvarchar2(255) | ||
| +); | ||
| + | ||
| +create table SCHEDULE_ORGANIZER_WORK ( | ||
| + "WORK_ID" integer primary key references SCHEDULE_WORK on delete cascade, | ||
| + "SCHEDULE_ACTION" integer not null, | ||
| + "HOME_RESOURCE_ID" integer not null references CALENDAR_HOME on delete cascade, | ||
| + "RESOURCE_ID" integer, | ||
| + "ICALENDAR_TEXT_OLD" nclob, | ||
| + "ICALENDAR_TEXT_NEW" nclob, | ||
| + "ATTENDEE_COUNT" integer, | ||
| + "SMART_MERGE" integer | ||
| +); | ||
| + | ||
| +create table SCHEDULE_ACTION ( | ||
| + "ID" integer primary key, | ||
| + "DESCRIPTION" nvarchar2(16) unique | ||
| +); | ||
| + | ||
| +insert into SCHEDULE_ACTION (DESCRIPTION, ID) values ('create', 0); | ||
| +insert into SCHEDULE_ACTION (DESCRIPTION, ID) values ('modify', 1); | ||
| +insert into SCHEDULE_ACTION (DESCRIPTION, ID) values ('modify-cancelled', 2); | ||
| +insert into SCHEDULE_ACTION (DESCRIPTION, ID) values ('remove', 3); | ||
| +create table SCHEDULE_ORGANIZER_SEND_WORK ( | ||
| + "WORK_ID" integer primary key references SCHEDULE_WORK on delete cascade, | ||
| + "SCHEDULE_ACTION" integer not null, | ||
| + "HOME_RESOURCE_ID" integer not null references CALENDAR_HOME on delete cascade, | ||
| + "RESOURCE_ID" integer, | ||
| + "ATTENDEE" nvarchar2(255), | ||
| + "ITIP_MSG" nclob, | ||
| + "NO_REFRESH" integer | ||
| +); | ||
| + | ||
| +create table SCHEDULE_REPLY_WORK ( | ||
| + "WORK_ID" integer primary key references SCHEDULE_WORK on delete cascade, | ||
| + "HOME_RESOURCE_ID" integer not null references CALENDAR_HOME on delete cascade, | ||
| + "RESOURCE_ID" integer, | ||
| + "ITIP_MSG" nclob | ||
| +); | ||
| + | ||
| +create table PRINCIPAL_PURGE_POLLING_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB | ||
| +); | ||
| + | ||
| +create table PRINCIPAL_PURGE_CHECK_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "UID" nvarchar2(255) | ||
| +); | ||
| + | ||
| +create table PRINCIPAL_PURGE_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "UID" nvarchar2(255) | ||
| +); | ||
| + | ||
| +create table PRINCIPAL_PURGE_HOME_WORK ( | ||
| + "WORK_ID" integer primary key, | ||
| + "JOB_ID" integer not null references JOB, | ||
| + "HOME_RESOURCE_ID" integer not null references CALENDAR_HOME on delete cascade | ||
| +); | ||
| + | ||
| +create table CALENDARSERVER ( | ||
| + "NAME" nvarchar2(255) primary key, | ||
| + "VALUE" nvarchar2(255) | ||
| +); | ||
| + | ||
| +insert into CALENDARSERVER (NAME, VALUE) values ('VERSION', '53'); | ||
| +insert into CALENDARSERVER (NAME, VALUE) values ('CALENDAR-DATAVERSION', '6'); | ||
| +insert into CALENDARSERVER (NAME, VALUE) values ('ADDRESSBOOK-DATAVERSION', '2'); | ||
| +insert into CALENDARSERVER (NAME, VALUE) values ('NOTIFICATION-DATAVERSION', '1'); | ||
| +insert into CALENDARSERVER (NAME, VALUE) values ('MIN-VALID-REVISION', '1'); | ||
| +create index CALENDAR_HOME_METADAT_3cb9049e on CALENDAR_HOME_METADATA ( | ||
| + DEFAULT_EVENTS | ||
| +); | ||
| + | ||
| +create index CALENDAR_HOME_METADAT_d55e5548 on CALENDAR_HOME_METADATA ( | ||
| + DEFAULT_TASKS | ||
| +); | ||
| + | ||
| +create index CALENDAR_HOME_METADAT_910264ce on CALENDAR_HOME_METADATA ( | ||
| + DEFAULT_POLLS | ||
| +); | ||
| + | ||
| +create index CALENDAR_MIGRATION_LO_0525c72b on CALENDAR_MIGRATION ( | ||
| + LOCAL_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index NOTIFICATION_NOTIFICA_f891f5f9 on NOTIFICATION ( | ||
| + NOTIFICATION_HOME_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index CALENDAR_BIND_RESOURC_e57964d4 on CALENDAR_BIND ( | ||
| + CALENDAR_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_CALEN_a9a453a9 on CALENDAR_OBJECT ( | ||
| + CALENDAR_RESOURCE_ID, | ||
| + ICALENDAR_UID | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_CALEN_c4dc619c on CALENDAR_OBJECT ( | ||
| + CALENDAR_RESOURCE_ID, | ||
| + RECURRANCE_MAX, | ||
| + RECURRANCE_MIN | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_ICALE_82e731d5 on CALENDAR_OBJECT ( | ||
| + ICALENDAR_UID | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_DROPB_de041d80 on CALENDAR_OBJECT ( | ||
| + DROPBOX_ID | ||
| +); | ||
| + | ||
| +create index TIME_RANGE_CALENDAR_R_beb6e7eb on TIME_RANGE ( | ||
| + CALENDAR_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index TIME_RANGE_CALENDAR_O_acf37bd1 on TIME_RANGE ( | ||
| + CALENDAR_OBJECT_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_MIGRA_0502cbef on CALENDAR_OBJECT_MIGRATION ( | ||
| + CALENDAR_HOME_RESOURCE_ID, | ||
| + LOCAL_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_MIGRA_3577efd9 on CALENDAR_OBJECT_MIGRATION ( | ||
| + LOCAL_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index ATTACHMENT_CALENDAR_H_0078845c on ATTACHMENT ( | ||
| + CALENDAR_HOME_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index ATTACHMENT_DROPBOX_ID_5073cf23 on ATTACHMENT ( | ||
| + DROPBOX_ID | ||
| +); | ||
| + | ||
| +create index ATTACHMENT_CALENDAR_O_81508484 on ATTACHMENT_CALENDAR_OBJECT ( | ||
| + CALENDAR_OBJECT_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index ATTACHMENT_MIGRATION__804bf85e on ATTACHMENT_MIGRATION ( | ||
| + CALENDAR_HOME_RESOURCE_ID, | ||
| + LOCAL_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index ATTACHMENT_MIGRATION__816947fe on ATTACHMENT_MIGRATION ( | ||
| + LOCAL_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index SHARED_ADDRESSBOOK_BI_e9a2e6d4 on SHARED_ADDRESSBOOK_BIND ( | ||
| + OWNER_HOME_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index ABO_MEMBERS_ADDRESSBO_4effa879 on ABO_MEMBERS ( | ||
| + ADDRESSBOOK_ID | ||
| +); | ||
| + | ||
| +create index ABO_MEMBERS_MEMBER_ID_8d66adcf on ABO_MEMBERS ( | ||
| + MEMBER_ID | ||
| +); | ||
| + | ||
| +create index ABO_FOREIGN_MEMBERS_A_1fd2c5e9 on ABO_FOREIGN_MEMBERS ( | ||
| + ADDRESSBOOK_ID | ||
| +); | ||
| + | ||
| +create index SHARED_GROUP_BIND_RES_cf52f95d on SHARED_GROUP_BIND ( | ||
| + GROUP_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_REVIS_6d9d929c on CALENDAR_OBJECT_REVISIONS ( | ||
| + CALENDAR_RESOURCE_ID, | ||
| + RESOURCE_NAME, | ||
| + DELETED, | ||
| + REVISION | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_REVIS_265c8acf on CALENDAR_OBJECT_REVISIONS ( | ||
| + CALENDAR_RESOURCE_ID, | ||
| + REVISION | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_REVIS_550b1c56 on CALENDAR_OBJECT_REVISIONS ( | ||
| + CALENDAR_HOME_RESOURCE_ID, | ||
| + REVISION | ||
| +); | ||
| + | ||
| +create index ADDRESSBOOK_OBJECT_RE_00fe8288 on ADDRESSBOOK_OBJECT_REVISIONS ( | ||
| + OWNER_HOME_RESOURCE_ID, | ||
| + RESOURCE_NAME, | ||
| + DELETED, | ||
| + REVISION | ||
| +); | ||
| + | ||
| +create index ADDRESSBOOK_OBJECT_RE_45004780 on ADDRESSBOOK_OBJECT_REVISIONS ( | ||
| + OWNER_HOME_RESOURCE_ID, | ||
| + REVISION | ||
| +); | ||
| + | ||
| +create index NOTIFICATION_OBJECT_R_036a9cee on NOTIFICATION_OBJECT_REVISIONS ( | ||
| + NOTIFICATION_HOME_RESOURCE_ID, | ||
| + REVISION | ||
| +); | ||
| + | ||
| +create index APN_SUBSCRIPTIONS_RES_9610d78e on APN_SUBSCRIPTIONS ( | ||
| + RESOURCE_KEY | ||
| +); | ||
| + | ||
| +create index IMIP_TOKENS_TOKEN_e94b918f on IMIP_TOKENS ( | ||
| + TOKEN | ||
| +); | ||
| + | ||
| +create index IMIP_INVITATION_WORK__586d064c on IMIP_INVITATION_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index IMIP_POLLING_WORK_JOB_d5535891 on IMIP_POLLING_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index IMIP_REPLY_WORK_JOB_I_bf4ae73e on IMIP_REPLY_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index PUSH_NOTIFICATION_WOR_8bbab117 on PUSH_NOTIFICATION_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index PUSH_NOTIFICATION_WOR_3a3ee588 on PUSH_NOTIFICATION_WORK ( | ||
| + PUSH_ID | ||
| +); | ||
| + | ||
| +create index GROUP_CACHER_POLLING__6eb3151c on GROUP_CACHER_POLLING_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index GROUP_REFRESH_WORK_JO_717ede20 on GROUP_REFRESH_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index GROUP_REFRESH_WORK_GR_0325f3a8 on GROUP_REFRESH_WORK ( | ||
| + GROUP_UID | ||
| +); | ||
| + | ||
| +create index GROUP_DELEGATE_CHANGE_8bf9e6d8 on GROUP_DELEGATE_CHANGES_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index GROUP_DELEGATE_CHANGE_d8f7af69 on GROUP_DELEGATE_CHANGES_WORK ( | ||
| + DELEGATOR_UID | ||
| +); | ||
| + | ||
| +create index GROUP_MEMBERSHIP_MEMB_0ca508e8 on GROUP_MEMBERSHIP ( | ||
| + MEMBER_UID | ||
| +); | ||
| + | ||
| +create index GROUP_ATTENDEE_RECONC_da73d3c2 on GROUP_ATTENDEE_RECONCILE_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index GROUP_ATTENDEE_RECONC_b894ee7a on GROUP_ATTENDEE_RECONCILE_WORK ( | ||
| + RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index GROUP_ATTENDEE_RECONC_5eabc549 on GROUP_ATTENDEE_RECONCILE_WORK ( | ||
| + GROUP_ID | ||
| +); | ||
| + | ||
| +create index GROUP_ATTENDEE_RESOUR_855124dc on GROUP_ATTENDEE ( | ||
| + RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index GROUP_SHAREE_RECONCIL_9aad0858 on GROUP_SHAREE_RECONCILE_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index GROUP_SHAREE_RECONCIL_4dc60f78 on GROUP_SHAREE_RECONCILE_WORK ( | ||
| + CALENDAR_ID | ||
| +); | ||
| + | ||
| +create index GROUP_SHAREE_RECONCIL_1d14c921 on GROUP_SHAREE_RECONCILE_WORK ( | ||
| + GROUP_ID | ||
| +); | ||
| + | ||
| +create index GROUP_SHAREE_CALENDAR_28a88850 on GROUP_SHAREE ( | ||
| + CALENDAR_ID | ||
| +); | ||
| + | ||
| +create index DELEGATE_TO_DELEGATOR_5e149b11 on DELEGATES ( | ||
| + DELEGATE, | ||
| + READ_WRITE, | ||
| + DELEGATOR | ||
| +); | ||
| + | ||
| +create index DELEGATE_GROUPS_GROUP_25117446 on DELEGATE_GROUPS ( | ||
| + GROUP_ID | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_SPLIT_af71dcda on CALENDAR_OBJECT_SPLITTER_WORK ( | ||
| + RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_SPLIT_33603b72 on CALENDAR_OBJECT_SPLITTER_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_UPGRA_a5c181eb on CALENDAR_OBJECT_UPGRADE_WORK ( | ||
| + RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_UPGRA_39d6f8f9 on CALENDAR_OBJECT_UPGRADE_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index FIND_MIN_VALID_REVISI_78d17400 on FIND_MIN_VALID_REVISION_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index REVISION_CLEANUP_WORK_eb062686 on REVISION_CLEANUP_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index INBOX_CLEANUP_WORK_JO_799132bd on INBOX_CLEANUP_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index CLEANUP_ONE_INBOX_WOR_375dac36 on CLEANUP_ONE_INBOX_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_WORK_JOB_ID_65e810ee on SCHEDULE_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_WORK_ICALEND_089f33dc on SCHEDULE_WORK ( | ||
| + ICALENDAR_UID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_REFRESH_WORK_26084c7b on SCHEDULE_REFRESH_WORK ( | ||
| + HOME_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_REFRESH_WORK_989efe54 on SCHEDULE_REFRESH_WORK ( | ||
| + RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_AUTO_REPLY_W_0256478d on SCHEDULE_AUTO_REPLY_WORK ( | ||
| + HOME_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_AUTO_REPLY_W_0755e754 on SCHEDULE_AUTO_REPLY_WORK ( | ||
| + RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_ORGANIZER_WO_18ce4edd on SCHEDULE_ORGANIZER_WORK ( | ||
| + HOME_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_ORGANIZER_WO_14702035 on SCHEDULE_ORGANIZER_WORK ( | ||
| + RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_ORGANIZER_SE_9ec9f827 on SCHEDULE_ORGANIZER_SEND_WORK ( | ||
| + HOME_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_ORGANIZER_SE_699fefc4 on SCHEDULE_ORGANIZER_SEND_WORK ( | ||
| + RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_REPLY_WORK_H_745af8cf on SCHEDULE_REPLY_WORK ( | ||
| + HOME_RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index SCHEDULE_REPLY_WORK_R_11bd3fbb on SCHEDULE_REPLY_WORK ( | ||
| + RESOURCE_ID | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_POLLI_6383e68a on PRINCIPAL_PURGE_POLLING_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_CHECK_b0c024c1 on PRINCIPAL_PURGE_CHECK_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_CHECK_198388a5 on PRINCIPAL_PURGE_CHECK_WORK ( | ||
| + "UID" | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_WORK__7a8141a3 on PRINCIPAL_PURGE_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_WORK__db35cfdc on PRINCIPAL_PURGE_WORK ( | ||
| + "UID" | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_HOME__f35eea7a on PRINCIPAL_PURGE_HOME_WORK ( | ||
| + JOB_ID | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_HOME__967e4480 on PRINCIPAL_PURGE_HOME_WORK ( | ||
| + HOME_RESOURCE_ID | ||
| +); | ||
| + | ||
| +-- Extra schema to add to current-oracle-dialect.sql |
81
txdav/common/datastore/sql_schema/old/postgres-dialect/v52.sql
1,213
txdav/common/datastore/sql_schema/old/postgres-dialect/v53.sql
| @@ -0,0 +1,1213 @@ | ||
| +-- -*- test-case-name: txdav.caldav.datastore.test.test_sql,txdav.carddav.datastore.test.test_sql -*- | ||
| + | ||
| +---- | ||
| +-- Copyright (c) 2010-2015 Apple Inc. All rights reserved. | ||
| +-- | ||
| +-- Licensed 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. | ||
| +---- | ||
| + | ||
| + | ||
| +----------------- | ||
| +-- Resource ID -- | ||
| +----------------- | ||
| + | ||
| +create sequence RESOURCE_ID_SEQ; | ||
| + | ||
| + | ||
| +------------------------- | ||
| +-- Cluster Bookkeeping -- | ||
| +------------------------- | ||
| + | ||
| +-- Information about a process connected to this database. | ||
| + | ||
| +-- Note that this must match the node info schema in twext.enterprise.queue. | ||
| +create table NODE_INFO ( | ||
| + HOSTNAME varchar(255) not null, | ||
| + PID integer not null, | ||
| + PORT integer not null, | ||
| + TIME timestamp not null default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + | ||
| + primary key (HOSTNAME, PORT) | ||
| +); | ||
| + | ||
| +-- Unique named locks. This table should always be empty, but rows are | ||
| +-- temporarily created in order to prevent undesirable concurrency. | ||
| +create table NAMED_LOCK ( | ||
| + LOCK_NAME varchar(255) primary key | ||
| +); | ||
| + | ||
| + | ||
| +-------------------- | ||
| +-- Jobs -- | ||
| +-------------------- | ||
| + | ||
| +create sequence JOB_SEQ; | ||
| + | ||
| +create table JOB ( | ||
| + JOB_ID integer primary key default nextval('JOB_SEQ'), --implicit index | ||
| + WORK_TYPE varchar(255) not null, | ||
| + PRIORITY integer default 0, | ||
| + WEIGHT integer default 0, | ||
| + NOT_BEFORE timestamp not null, | ||
| + ASSIGNED timestamp default null, | ||
| + OVERDUE timestamp default null, | ||
| + FAILED integer default 0 | ||
| +); | ||
| + | ||
| +------------------- | ||
| +-- Calendar Home -- | ||
| +------------------- | ||
| + | ||
| +create table CALENDAR_HOME ( | ||
| + RESOURCE_ID integer primary key default nextval('RESOURCE_ID_SEQ'), -- implicit index | ||
| + OWNER_UID varchar(255) not null, -- implicit index | ||
| + STATUS integer default 0 not null, -- enum HOME_STATUS | ||
| + DATAVERSION integer default 0 not null, | ||
| + | ||
| + unique (OWNER_UID, STATUS) -- implicit index | ||
| +); | ||
| + | ||
| +-- Enumeration of statuses | ||
| + | ||
| +create table HOME_STATUS ( | ||
| + ID integer primary key, | ||
| + DESCRIPTION varchar(16) not null unique | ||
| +); | ||
| + | ||
| +insert into HOME_STATUS values (0, 'normal' ); | ||
| +insert into HOME_STATUS values (1, 'external'); | ||
| +insert into HOME_STATUS values (2, 'purging'); | ||
| +insert into HOME_STATUS values (3, 'migrating'); | ||
| +insert into HOME_STATUS values (4, 'disabled'); | ||
| + | ||
| + | ||
| +-------------- | ||
| +-- Calendar -- | ||
| +-------------- | ||
| + | ||
| +create table CALENDAR ( | ||
| + RESOURCE_ID integer primary key default nextval('RESOURCE_ID_SEQ') -- implicit index | ||
| +); | ||
| + | ||
| + | ||
| +---------------------------- | ||
| +-- Calendar Home Metadata -- | ||
| +---------------------------- | ||
| + | ||
| +create table CALENDAR_HOME_METADATA ( | ||
| + RESOURCE_ID integer primary key references CALENDAR_HOME on delete cascade, -- implicit index | ||
| + QUOTA_USED_BYTES integer default 0 not null, | ||
| + DEFAULT_EVENTS integer default null references CALENDAR on delete set null, | ||
| + DEFAULT_TASKS integer default null references CALENDAR on delete set null, | ||
| + DEFAULT_POLLS integer default null references CALENDAR on delete set null, | ||
| + ALARM_VEVENT_TIMED text default null, | ||
| + ALARM_VEVENT_ALLDAY text default null, | ||
| + ALARM_VTODO_TIMED text default null, | ||
| + ALARM_VTODO_ALLDAY text default null, | ||
| + AVAILABILITY text default null, | ||
| + CREATED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP) | ||
| +); | ||
| + | ||
| +create index CALENDAR_HOME_METADATA_DEFAULT_EVENTS on | ||
| + CALENDAR_HOME_METADATA(DEFAULT_EVENTS); | ||
| +create index CALENDAR_HOME_METADATA_DEFAULT_TASKS on | ||
| + CALENDAR_HOME_METADATA(DEFAULT_TASKS); | ||
| +create index CALENDAR_HOME_METADATA_DEFAULT_POLLS on | ||
| + CALENDAR_HOME_METADATA(DEFAULT_POLLS); | ||
| + | ||
| + | ||
| +----------------------- | ||
| +-- Calendar Metadata -- | ||
| +----------------------- | ||
| + | ||
| +create table CALENDAR_METADATA ( | ||
| + RESOURCE_ID integer primary key references CALENDAR on delete cascade, -- implicit index | ||
| + SUPPORTED_COMPONENTS varchar(255) default null, | ||
| + CREATED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP) | ||
| +); | ||
| + | ||
| + | ||
| +------------------------ | ||
| +-- Calendar Migration -- | ||
| +------------------------ | ||
| + | ||
| +create table CALENDAR_MIGRATION ( | ||
| + CALENDAR_HOME_RESOURCE_ID integer references CALENDAR_HOME on delete cascade, | ||
| + REMOTE_RESOURCE_ID integer not null, | ||
| + LOCAL_RESOURCE_ID integer references CALENDAR on delete cascade, | ||
| + LAST_SYNC_TOKEN varchar(255), | ||
| + | ||
| + primary key (CALENDAR_HOME_RESOURCE_ID, REMOTE_RESOURCE_ID) -- implicit index | ||
| +); | ||
| + | ||
| +create index CALENDAR_MIGRATION_LOCAL_RESOURCE_ID on | ||
| + CALENDAR_MIGRATION(LOCAL_RESOURCE_ID); | ||
| + | ||
| + | ||
| +--------------------------- | ||
| +-- Sharing Notifications -- | ||
| +--------------------------- | ||
| + | ||
| +create table NOTIFICATION_HOME ( | ||
| + RESOURCE_ID integer primary key default nextval('RESOURCE_ID_SEQ'), -- implicit index | ||
| + OWNER_UID varchar(255) not null, -- implicit index | ||
| + STATUS integer default 0 not null, -- enum HOME_STATUS | ||
| + DATAVERSION integer default 0 not null, | ||
| + | ||
| + unique (OWNER_UID, STATUS) -- implicit index | ||
| +); | ||
| + | ||
| +create table NOTIFICATION ( | ||
| + RESOURCE_ID integer primary key default nextval('RESOURCE_ID_SEQ'), -- implicit index | ||
| + NOTIFICATION_HOME_RESOURCE_ID integer not null references NOTIFICATION_HOME, | ||
| + NOTIFICATION_UID varchar(255) not null, | ||
| + NOTIFICATION_TYPE varchar(255) not null, | ||
| + NOTIFICATION_DATA text not null, | ||
| + MD5 char(32) not null, | ||
| + CREATED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + | ||
| + unique (NOTIFICATION_UID, NOTIFICATION_HOME_RESOURCE_ID) -- implicit index | ||
| +); | ||
| + | ||
| +create index NOTIFICATION_NOTIFICATION_HOME_RESOURCE_ID on | ||
| + NOTIFICATION(NOTIFICATION_HOME_RESOURCE_ID); | ||
| + | ||
| + | ||
| +------------------- | ||
| +-- Calendar Bind -- | ||
| +------------------- | ||
| + | ||
| +-- Joins CALENDAR_HOME and CALENDAR | ||
| + | ||
| +create table CALENDAR_BIND ( | ||
| + CALENDAR_HOME_RESOURCE_ID integer not null references CALENDAR_HOME, | ||
| + CALENDAR_RESOURCE_ID integer not null references CALENDAR on delete cascade, | ||
| + CALENDAR_RESOURCE_NAME varchar(255) not null, | ||
| + BIND_MODE integer not null, -- enum CALENDAR_BIND_MODE | ||
| + BIND_STATUS integer not null, -- enum CALENDAR_BIND_STATUS | ||
| + BIND_REVISION integer default 0 not null, | ||
| + BIND_UID varchar(36) default null, | ||
| + MESSAGE text, | ||
| + TRANSP integer default 0 not null, -- enum CALENDAR_TRANSP | ||
| + ALARM_VEVENT_TIMED text default null, | ||
| + ALARM_VEVENT_ALLDAY text default null, | ||
| + ALARM_VTODO_TIMED text default null, | ||
| + ALARM_VTODO_ALLDAY text default null, | ||
| + TIMEZONE text default null, | ||
| + | ||
| + primary key (CALENDAR_HOME_RESOURCE_ID, CALENDAR_RESOURCE_ID), -- implicit index | ||
| + unique (CALENDAR_HOME_RESOURCE_ID, CALENDAR_RESOURCE_NAME) -- implicit index | ||
| +); | ||
| + | ||
| +create index CALENDAR_BIND_RESOURCE_ID on | ||
| + CALENDAR_BIND(CALENDAR_RESOURCE_ID); | ||
| + | ||
| +-- Enumeration of calendar bind modes | ||
| + | ||
| +create table CALENDAR_BIND_MODE ( | ||
| + ID integer primary key, | ||
| + DESCRIPTION varchar(16) not null unique | ||
| +); | ||
| + | ||
| +insert into CALENDAR_BIND_MODE values (0, 'own' ); | ||
| +insert into CALENDAR_BIND_MODE values (1, 'read' ); | ||
| +insert into CALENDAR_BIND_MODE values (2, 'write'); | ||
| +insert into CALENDAR_BIND_MODE values (3, 'direct'); | ||
| +insert into CALENDAR_BIND_MODE values (4, 'indirect'); | ||
| +insert into CALENDAR_BIND_MODE values (5, 'group'); | ||
| +insert into CALENDAR_BIND_MODE values (6, 'group_read'); | ||
| +insert into CALENDAR_BIND_MODE values (7, 'group_write'); | ||
| + | ||
| +-- Enumeration of statuses | ||
| + | ||
| +create table CALENDAR_BIND_STATUS ( | ||
| + ID integer primary key, | ||
| + DESCRIPTION varchar(16) not null unique | ||
| +); | ||
| + | ||
| +insert into CALENDAR_BIND_STATUS values (0, 'invited' ); | ||
| +insert into CALENDAR_BIND_STATUS values (1, 'accepted'); | ||
| +insert into CALENDAR_BIND_STATUS values (2, 'declined'); | ||
| +insert into CALENDAR_BIND_STATUS values (3, 'invalid'); | ||
| +insert into CALENDAR_BIND_STATUS values (4, 'deleted'); | ||
| + | ||
| + | ||
| +-- Enumeration of transparency | ||
| + | ||
| +create table CALENDAR_TRANSP ( | ||
| + ID integer primary key, | ||
| + DESCRIPTION varchar(16) not null unique | ||
| +); | ||
| + | ||
| +insert into CALENDAR_TRANSP values (0, 'opaque' ); | ||
| +insert into CALENDAR_TRANSP values (1, 'transparent'); | ||
| + | ||
| + | ||
| +--------------------- | ||
| +-- Calendar Object -- | ||
| +--------------------- | ||
| + | ||
| +create table CALENDAR_OBJECT ( | ||
| + RESOURCE_ID integer primary key default nextval('RESOURCE_ID_SEQ'), -- implicit index | ||
| + CALENDAR_RESOURCE_ID integer not null references CALENDAR on delete cascade, | ||
| + RESOURCE_NAME varchar(255) not null, | ||
| + ICALENDAR_TEXT text not null, | ||
| + ICALENDAR_UID varchar(255) not null, | ||
| + ICALENDAR_TYPE varchar(255) not null, | ||
| + ATTACHMENTS_MODE integer default 0 not null, -- enum CALENDAR_OBJ_ATTACHMENTS_MODE | ||
| + DROPBOX_ID varchar(255), | ||
| + ORGANIZER varchar(255), | ||
| + RECURRANCE_MIN date, -- minimum date that recurrences have been expanded to. | ||
| + RECURRANCE_MAX date, -- maximum date that recurrences have been expanded to. | ||
| + ACCESS integer default 0 not null, | ||
| + SCHEDULE_OBJECT boolean default false, | ||
| + SCHEDULE_TAG varchar(36) default null, | ||
| + SCHEDULE_ETAGS text default null, | ||
| + PRIVATE_COMMENTS boolean default false not null, | ||
| + MD5 char(32) not null, | ||
| + CREATED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + DATAVERSION integer default 0 not null, | ||
| + | ||
| + unique (CALENDAR_RESOURCE_ID, RESOURCE_NAME) -- implicit index | ||
| + | ||
| + -- since the 'inbox' is a 'calendar resource' for the purpose of storing | ||
| + -- calendar objects, this constraint has to be selectively enforced by the | ||
| + -- application layer. | ||
| + | ||
| + -- unique (CALENDAR_RESOURCE_ID, ICALENDAR_UID) | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_CALENDAR_RESOURCE_ID_AND_ICALENDAR_UID on | ||
| + CALENDAR_OBJECT(CALENDAR_RESOURCE_ID, ICALENDAR_UID); | ||
| + | ||
| +create index CALENDAR_OBJECT_CALENDAR_RESOURCE_ID_RECURRANCE_MAX_MIN on | ||
| + CALENDAR_OBJECT(CALENDAR_RESOURCE_ID, RECURRANCE_MAX, RECURRANCE_MIN); | ||
| + | ||
| +create index CALENDAR_OBJECT_ICALENDAR_UID on | ||
| + CALENDAR_OBJECT(ICALENDAR_UID); | ||
| + | ||
| +create index CALENDAR_OBJECT_DROPBOX_ID on | ||
| + CALENDAR_OBJECT(DROPBOX_ID); | ||
| + | ||
| +-- Enumeration of attachment modes | ||
| + | ||
| +create table CALENDAR_OBJ_ATTACHMENTS_MODE ( | ||
| + ID integer primary key, | ||
| + DESCRIPTION varchar(16) not null unique | ||
| +); | ||
| + | ||
| +insert into CALENDAR_OBJ_ATTACHMENTS_MODE values (0, 'none' ); | ||
| +insert into CALENDAR_OBJ_ATTACHMENTS_MODE values (1, 'read' ); | ||
| +insert into CALENDAR_OBJ_ATTACHMENTS_MODE values (2, 'write'); | ||
| + | ||
| + | ||
| +-- Enumeration of calendar access types | ||
| + | ||
| +create table CALENDAR_ACCESS_TYPE ( | ||
| + ID integer primary key, | ||
| + DESCRIPTION varchar(32) not null unique | ||
| +); | ||
| + | ||
| +insert into CALENDAR_ACCESS_TYPE values (0, '' ); | ||
| +insert into CALENDAR_ACCESS_TYPE values (1, 'public' ); | ||
| +insert into CALENDAR_ACCESS_TYPE values (2, 'private' ); | ||
| +insert into CALENDAR_ACCESS_TYPE values (3, 'confidential' ); | ||
| +insert into CALENDAR_ACCESS_TYPE values (4, 'restricted' ); | ||
| + | ||
| + | ||
| +----------------- | ||
| +-- Instance ID -- | ||
| +----------------- | ||
| + | ||
| +create sequence INSTANCE_ID_SEQ; | ||
| + | ||
| + | ||
| +---------------- | ||
| +-- Time Range -- | ||
| +---------------- | ||
| + | ||
| +create table TIME_RANGE ( | ||
| + INSTANCE_ID integer primary key default nextval('INSTANCE_ID_SEQ'), -- implicit index | ||
| + CALENDAR_RESOURCE_ID integer not null references CALENDAR on delete cascade, | ||
| + CALENDAR_OBJECT_RESOURCE_ID integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + FLOATING boolean not null, | ||
| + START_DATE timestamp not null, | ||
| + END_DATE timestamp not null, | ||
| + FBTYPE integer not null, | ||
| + TRANSPARENT boolean not null | ||
| +); | ||
| + | ||
| +create index TIME_RANGE_CALENDAR_RESOURCE_ID on | ||
| + TIME_RANGE(CALENDAR_RESOURCE_ID); | ||
| +create index TIME_RANGE_CALENDAR_OBJECT_RESOURCE_ID on | ||
| + TIME_RANGE(CALENDAR_OBJECT_RESOURCE_ID); | ||
| + | ||
| + | ||
| +-- Enumeration of free/busy types | ||
| + | ||
| +create table FREE_BUSY_TYPE ( | ||
| + ID integer primary key, | ||
| + DESCRIPTION varchar(16) not null unique | ||
| +); | ||
| + | ||
| +insert into FREE_BUSY_TYPE values (0, 'unknown' ); | ||
| +insert into FREE_BUSY_TYPE values (1, 'free' ); | ||
| +insert into FREE_BUSY_TYPE values (2, 'busy' ); | ||
| +insert into FREE_BUSY_TYPE values (3, 'busy-unavailable'); | ||
| +insert into FREE_BUSY_TYPE values (4, 'busy-tentative' ); | ||
| + | ||
| + | ||
| +------------------- | ||
| +-- Per-user data -- | ||
| +------------------- | ||
| + | ||
| +create table PERUSER ( | ||
| + TIME_RANGE_INSTANCE_ID integer not null references TIME_RANGE on delete cascade, | ||
| + USER_ID varchar(255) not null, | ||
| + TRANSPARENT boolean not null, | ||
| + ADJUSTED_START_DATE timestamp default null, | ||
| + ADJUSTED_END_DATE timestamp default null, | ||
| + | ||
| + primary key (TIME_RANGE_INSTANCE_ID, USER_ID) -- implicit index | ||
| +); | ||
| + | ||
| + | ||
| +------------------------------- | ||
| +-- Calendar Object Migration -- | ||
| +------------------------------- | ||
| + | ||
| +create table CALENDAR_OBJECT_MIGRATION ( | ||
| + CALENDAR_HOME_RESOURCE_ID integer references CALENDAR_HOME on delete cascade, | ||
| + REMOTE_RESOURCE_ID integer not null, | ||
| + LOCAL_RESOURCE_ID integer references CALENDAR_OBJECT on delete cascade, | ||
| + | ||
| + primary key (CALENDAR_HOME_RESOURCE_ID, REMOTE_RESOURCE_ID) -- implicit index | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_MIGRATION_HOME_LOCAL on | ||
| + CALENDAR_OBJECT_MIGRATION(CALENDAR_HOME_RESOURCE_ID, LOCAL_RESOURCE_ID); | ||
| +create index CALENDAR_OBJECT_MIGRATION_LOCAL_RESOURCE_ID on | ||
| + CALENDAR_OBJECT_MIGRATION(LOCAL_RESOURCE_ID); | ||
| + | ||
| + | ||
| +---------------- | ||
| +-- Attachment -- | ||
| +---------------- | ||
| + | ||
| +create sequence ATTACHMENT_ID_SEQ; | ||
| + | ||
| +create table ATTACHMENT ( | ||
| + ATTACHMENT_ID integer primary key default nextval('ATTACHMENT_ID_SEQ'), -- implicit index | ||
| + CALENDAR_HOME_RESOURCE_ID integer not null references CALENDAR_HOME, | ||
| + DROPBOX_ID varchar(255), | ||
| + CONTENT_TYPE varchar(255) not null, | ||
| + SIZE integer not null, | ||
| + MD5 char(32) not null, | ||
| + CREATED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + PATH varchar(1024) not null | ||
| +); | ||
| + | ||
| +create index ATTACHMENT_CALENDAR_HOME_RESOURCE_ID on | ||
| + ATTACHMENT(CALENDAR_HOME_RESOURCE_ID); | ||
| + | ||
| +create index ATTACHMENT_DROPBOX_ID on | ||
| + ATTACHMENT(DROPBOX_ID); | ||
| + | ||
| +-- Many-to-many relationship between attachments and calendar objects | ||
| +create table ATTACHMENT_CALENDAR_OBJECT ( | ||
| + ATTACHMENT_ID integer not null references ATTACHMENT on delete cascade, | ||
| + MANAGED_ID varchar(255) not null, | ||
| + CALENDAR_OBJECT_RESOURCE_ID integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + | ||
| + primary key (ATTACHMENT_ID, CALENDAR_OBJECT_RESOURCE_ID), -- implicit index | ||
| + unique (MANAGED_ID, CALENDAR_OBJECT_RESOURCE_ID) --implicit index | ||
| +); | ||
| + | ||
| +create index ATTACHMENT_CALENDAR_OBJECT_CALENDAR_OBJECT_RESOURCE_ID on | ||
| + ATTACHMENT_CALENDAR_OBJECT(CALENDAR_OBJECT_RESOURCE_ID); | ||
| + | ||
| +----------------------------------- | ||
| +-- Calendar Attachment Migration -- | ||
| +----------------------------------- | ||
| + | ||
| +create table ATTACHMENT_MIGRATION ( | ||
| + CALENDAR_HOME_RESOURCE_ID integer references CALENDAR_HOME on delete cascade, | ||
| + REMOTE_RESOURCE_ID integer not null, | ||
| + LOCAL_RESOURCE_ID integer references ATTACHMENT on delete cascade, | ||
| + | ||
| + primary key (CALENDAR_HOME_RESOURCE_ID, REMOTE_RESOURCE_ID) -- implicit index | ||
| +); | ||
| + | ||
| +create index ATTACHMENT_MIGRATION_HOME_LOCAL on | ||
| + ATTACHMENT_MIGRATION(CALENDAR_HOME_RESOURCE_ID, LOCAL_RESOURCE_ID); | ||
| +create index ATTACHMENT_MIGRATION_LOCAL_RESOURCE_ID on | ||
| + ATTACHMENT_MIGRATION(LOCAL_RESOURCE_ID); | ||
| + | ||
| + | ||
| +----------------------- | ||
| +-- Resource Property -- | ||
| +----------------------- | ||
| + | ||
| +create table RESOURCE_PROPERTY ( | ||
| + RESOURCE_ID integer not null, -- foreign key: *.RESOURCE_ID | ||
| + NAME varchar(255) not null, | ||
| + VALUE text not null, -- FIXME: xml? | ||
| + VIEWER_UID varchar(255), | ||
| + | ||
| + primary key (RESOURCE_ID, NAME, VIEWER_UID) -- implicit index | ||
| +); | ||
| + | ||
| + | ||
| +---------------------- | ||
| +-- AddressBook Home -- | ||
| +---------------------- | ||
| + | ||
| +create table ADDRESSBOOK_HOME ( | ||
| + RESOURCE_ID integer primary key default nextval('RESOURCE_ID_SEQ'), -- implicit index | ||
| + ADDRESSBOOK_PROPERTY_STORE_ID integer default nextval('RESOURCE_ID_SEQ') not null, -- implicit index | ||
| + OWNER_UID varchar(255) not null, | ||
| + STATUS integer default 0 not null, -- enum HOME_STATUS | ||
| + DATAVERSION integer default 0 not null, | ||
| + | ||
| + unique (OWNER_UID, STATUS) -- implicit index | ||
| +); | ||
| + | ||
| + | ||
| +------------------------------- | ||
| +-- AddressBook Home Metadata -- | ||
| +------------------------------- | ||
| + | ||
| +create table ADDRESSBOOK_HOME_METADATA ( | ||
| + RESOURCE_ID integer primary key references ADDRESSBOOK_HOME on delete cascade, -- implicit index | ||
| + QUOTA_USED_BYTES integer default 0 not null, | ||
| + CREATED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP) | ||
| +); | ||
| + | ||
| + | ||
| +----------------------------- | ||
| +-- Shared AddressBook Bind -- | ||
| +----------------------------- | ||
| + | ||
| +-- Joins sharee ADDRESSBOOK_HOME and owner ADDRESSBOOK_HOME | ||
| + | ||
| +create table SHARED_ADDRESSBOOK_BIND ( | ||
| + ADDRESSBOOK_HOME_RESOURCE_ID integer not null references ADDRESSBOOK_HOME, | ||
| + OWNER_HOME_RESOURCE_ID integer not null references ADDRESSBOOK_HOME on delete cascade, | ||
| + ADDRESSBOOK_RESOURCE_NAME varchar(255) not null, | ||
| + BIND_MODE integer not null, -- enum CALENDAR_BIND_MODE | ||
| + BIND_STATUS integer not null, -- enum CALENDAR_BIND_STATUS | ||
| + BIND_REVISION integer default 0 not null, | ||
| + BIND_UID varchar(36) default null, | ||
| + MESSAGE text, -- FIXME: xml? | ||
| + | ||
| + primary key (ADDRESSBOOK_HOME_RESOURCE_ID, OWNER_HOME_RESOURCE_ID), -- implicit index | ||
| + unique (ADDRESSBOOK_HOME_RESOURCE_ID, ADDRESSBOOK_RESOURCE_NAME) -- implicit index | ||
| +); | ||
| + | ||
| +create index SHARED_ADDRESSBOOK_BIND_RESOURCE_ID on | ||
| + SHARED_ADDRESSBOOK_BIND(OWNER_HOME_RESOURCE_ID); | ||
| + | ||
| + | ||
| +------------------------ | ||
| +-- AddressBook Object -- | ||
| +------------------------ | ||
| + | ||
| +create table ADDRESSBOOK_OBJECT ( | ||
| + RESOURCE_ID integer primary key default nextval('RESOURCE_ID_SEQ'), -- implicit index | ||
| + ADDRESSBOOK_HOME_RESOURCE_ID integer not null references ADDRESSBOOK_HOME on delete cascade, | ||
| + RESOURCE_NAME varchar(255) not null, | ||
| + VCARD_TEXT text not null, | ||
| + VCARD_UID varchar(255) not null, | ||
| + KIND integer not null, -- enum ADDRESSBOOK_OBJECT_KIND | ||
| + MD5 char(32) not null, | ||
| + CREATED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + DATAVERSION integer default 0 not null, | ||
| + | ||
| + unique (ADDRESSBOOK_HOME_RESOURCE_ID, RESOURCE_NAME), -- implicit index | ||
| + unique (ADDRESSBOOK_HOME_RESOURCE_ID, VCARD_UID) -- implicit index | ||
| +); | ||
| + | ||
| + | ||
| +----------------------------- | ||
| +-- AddressBook Object kind -- | ||
| +----------------------------- | ||
| + | ||
| +create table ADDRESSBOOK_OBJECT_KIND ( | ||
| + ID integer primary key, | ||
| + DESCRIPTION varchar(16) not null unique | ||
| +); | ||
| + | ||
| +insert into ADDRESSBOOK_OBJECT_KIND values (0, 'person'); | ||
| +insert into ADDRESSBOOK_OBJECT_KIND values (1, 'group' ); | ||
| +insert into ADDRESSBOOK_OBJECT_KIND values (2, 'resource'); | ||
| +insert into ADDRESSBOOK_OBJECT_KIND values (3, 'location'); | ||
| + | ||
| + | ||
| +---------------------------------- | ||
| +-- Revisions, forward reference -- | ||
| +---------------------------------- | ||
| + | ||
| +create sequence REVISION_SEQ; | ||
| + | ||
| +--------------------------------- | ||
| +-- Address Book Object Members -- | ||
| +--------------------------------- | ||
| + | ||
| +create table ABO_MEMBERS ( | ||
| + GROUP_ID integer not null, -- references ADDRESSBOOK_OBJECT on delete cascade, -- AddressBook Object's (kind=='group') RESOURCE_ID | ||
| + ADDRESSBOOK_ID integer not null references ADDRESSBOOK_HOME on delete cascade, | ||
| + MEMBER_ID integer not null, -- references ADDRESSBOOK_OBJECT, -- member AddressBook Object's RESOURCE_ID | ||
| + REVISION integer default nextval('REVISION_SEQ') not null, | ||
| + REMOVED boolean default false not null, | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + | ||
| + primary key (GROUP_ID, MEMBER_ID, REVISION) -- implicit index | ||
| +); | ||
| + | ||
| +create index ABO_MEMBERS_ADDRESSBOOK_ID on | ||
| + ABO_MEMBERS(ADDRESSBOOK_ID); | ||
| +create index ABO_MEMBERS_MEMBER_ID on | ||
| + ABO_MEMBERS(MEMBER_ID); | ||
| + | ||
| +------------------------------------------ | ||
| +-- Address Book Object Foreign Members -- | ||
| +------------------------------------------ | ||
| + | ||
| +create table ABO_FOREIGN_MEMBERS ( | ||
| + GROUP_ID integer not null references ADDRESSBOOK_OBJECT on delete cascade, -- AddressBook Object's (kind=='group') RESOURCE_ID | ||
| + ADDRESSBOOK_ID integer not null references ADDRESSBOOK_HOME on delete cascade, | ||
| + MEMBER_ADDRESS varchar(255) not null, -- member AddressBook Object's 'calendar' address | ||
| + | ||
| + primary key (GROUP_ID, MEMBER_ADDRESS) -- implicit index | ||
| +); | ||
| + | ||
| +create index ABO_FOREIGN_MEMBERS_ADDRESSBOOK_ID on | ||
| + ABO_FOREIGN_MEMBERS(ADDRESSBOOK_ID); | ||
| + | ||
| +----------------------- | ||
| +-- Shared Group Bind -- | ||
| +----------------------- | ||
| + | ||
| +-- Joins ADDRESSBOOK_HOME and ADDRESSBOOK_OBJECT (kind == group) | ||
| + | ||
| +create table SHARED_GROUP_BIND ( | ||
| + ADDRESSBOOK_HOME_RESOURCE_ID integer not null references ADDRESSBOOK_HOME, | ||
| + GROUP_RESOURCE_ID integer not null references ADDRESSBOOK_OBJECT on delete cascade, | ||
| + GROUP_ADDRESSBOOK_NAME varchar(255) not null, | ||
| + BIND_MODE integer not null, -- enum CALENDAR_BIND_MODE | ||
| + BIND_STATUS integer not null, -- enum CALENDAR_BIND_STATUS | ||
| + BIND_REVISION integer default 0 not null, | ||
| + BIND_UID varchar(36) default null, | ||
| + MESSAGE text, -- FIXME: xml? | ||
| + | ||
| + primary key (ADDRESSBOOK_HOME_RESOURCE_ID, GROUP_RESOURCE_ID), -- implicit index | ||
| + unique (ADDRESSBOOK_HOME_RESOURCE_ID, GROUP_ADDRESSBOOK_NAME) -- implicit index | ||
| +); | ||
| + | ||
| +create index SHARED_GROUP_BIND_RESOURCE_ID on | ||
| + SHARED_GROUP_BIND(GROUP_RESOURCE_ID); | ||
| + | ||
| + | ||
| +--------------- | ||
| +-- Revisions -- | ||
| +--------------- | ||
| + | ||
| +-- create sequence REVISION_SEQ; | ||
| + | ||
| + | ||
| +------------------------------- | ||
| +-- Calendar Object Revisions -- | ||
| +------------------------------- | ||
| + | ||
| +create table CALENDAR_OBJECT_REVISIONS ( | ||
| + CALENDAR_HOME_RESOURCE_ID integer not null references CALENDAR_HOME, | ||
| + CALENDAR_RESOURCE_ID integer references CALENDAR, | ||
| + CALENDAR_NAME varchar(255) default null, | ||
| + RESOURCE_NAME varchar(255), | ||
| + REVISION integer default nextval('REVISION_SEQ') not null, | ||
| + DELETED boolean not null, | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + | ||
| + unique(CALENDAR_HOME_RESOURCE_ID, CALENDAR_RESOURCE_ID, CALENDAR_NAME, RESOURCE_NAME) -- implicit index | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_REVISIONS_RESOURCE_ID_RESOURCE_NAME_DELETED_REVISION | ||
| + on CALENDAR_OBJECT_REVISIONS(CALENDAR_RESOURCE_ID, RESOURCE_NAME, DELETED, REVISION); | ||
| + | ||
| +create index CALENDAR_OBJECT_REVISIONS_RESOURCE_ID_REVISION | ||
| + on CALENDAR_OBJECT_REVISIONS(CALENDAR_RESOURCE_ID, REVISION); | ||
| + | ||
| +create index CALENDAR_OBJECT_REVISIONS_HOME_RESOURCE_ID_REVISION | ||
| + on CALENDAR_OBJECT_REVISIONS(CALENDAR_HOME_RESOURCE_ID, REVISION); | ||
| + | ||
| + | ||
| +---------------------------------- | ||
| +-- AddressBook Object Revisions -- | ||
| +---------------------------------- | ||
| + | ||
| +create table ADDRESSBOOK_OBJECT_REVISIONS ( | ||
| + ADDRESSBOOK_HOME_RESOURCE_ID integer not null references ADDRESSBOOK_HOME, | ||
| + OWNER_HOME_RESOURCE_ID integer references ADDRESSBOOK_HOME, | ||
| + ADDRESSBOOK_NAME varchar(255) default null, | ||
| + OBJECT_RESOURCE_ID integer default 0, | ||
| + RESOURCE_NAME varchar(255), | ||
| + REVISION integer default nextval('REVISION_SEQ') not null, | ||
| + DELETED boolean not null, | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + | ||
| + unique(ADDRESSBOOK_HOME_RESOURCE_ID, OWNER_HOME_RESOURCE_ID, ADDRESSBOOK_NAME, RESOURCE_NAME) -- implicit index | ||
| +); | ||
| + | ||
| +create index ADDRESSBOOK_OBJECT_REVISIONS_OWNER_HOME_RESOURCE_ID_RESOURCE_NAME_DELETED_REVISION | ||
| + on ADDRESSBOOK_OBJECT_REVISIONS(OWNER_HOME_RESOURCE_ID, RESOURCE_NAME, DELETED, REVISION); | ||
| + | ||
| +create index ADDRESSBOOK_OBJECT_REVISIONS_OWNER_HOME_RESOURCE_ID_REVISION | ||
| + on ADDRESSBOOK_OBJECT_REVISIONS(OWNER_HOME_RESOURCE_ID, REVISION); | ||
| + | ||
| + | ||
| +----------------------------------- | ||
| +-- Notification Object Revisions -- | ||
| +----------------------------------- | ||
| + | ||
| +create table NOTIFICATION_OBJECT_REVISIONS ( | ||
| + NOTIFICATION_HOME_RESOURCE_ID integer not null references NOTIFICATION_HOME on delete cascade, | ||
| + RESOURCE_NAME varchar(255), | ||
| + REVISION integer default nextval('REVISION_SEQ') not null, | ||
| + DELETED boolean not null, | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + | ||
| + unique (NOTIFICATION_HOME_RESOURCE_ID, RESOURCE_NAME) -- implicit index | ||
| +); | ||
| + | ||
| +create index NOTIFICATION_OBJECT_REVISIONS_RESOURCE_ID_REVISION | ||
| + on NOTIFICATION_OBJECT_REVISIONS(NOTIFICATION_HOME_RESOURCE_ID, REVISION); | ||
| + | ||
| + | ||
| +------------------------------------------- | ||
| +-- Apple Push Notification Subscriptions -- | ||
| +------------------------------------------- | ||
| + | ||
| +create table APN_SUBSCRIPTIONS ( | ||
| + TOKEN varchar(255) not null, | ||
| + RESOURCE_KEY varchar(255) not null, | ||
| + MODIFIED integer not null, | ||
| + SUBSCRIBER_GUID varchar(255) not null, | ||
| + USER_AGENT varchar(255) default null, | ||
| + IP_ADDR varchar(255) default null, | ||
| + | ||
| + primary key (TOKEN, RESOURCE_KEY) -- implicit index | ||
| +); | ||
| + | ||
| +create index APN_SUBSCRIPTIONS_RESOURCE_KEY | ||
| + on APN_SUBSCRIPTIONS(RESOURCE_KEY); | ||
| + | ||
| + | ||
| +----------------- | ||
| +-- IMIP Tokens -- | ||
| +----------------- | ||
| + | ||
| +create table IMIP_TOKENS ( | ||
| + TOKEN varchar(255) not null, | ||
| + ORGANIZER varchar(255) not null, | ||
| + ATTENDEE varchar(255) not null, | ||
| + ICALUID varchar(255) not null, | ||
| + ACCESSED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + | ||
| + primary key (ORGANIZER, ATTENDEE, ICALUID) -- implicit index | ||
| +); | ||
| + | ||
| +create index IMIP_TOKENS_TOKEN | ||
| + on IMIP_TOKENS(TOKEN); | ||
| + | ||
| + | ||
| +---------------- | ||
| +-- Work Items -- | ||
| +---------------- | ||
| + | ||
| +create sequence WORKITEM_SEQ; | ||
| + | ||
| + | ||
| +--------------------------- | ||
| +-- IMIP Inivitation Work -- | ||
| +--------------------------- | ||
| + | ||
| +create table IMIP_INVITATION_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + FROM_ADDR varchar(255) not null, | ||
| + TO_ADDR varchar(255) not null, | ||
| + ICALENDAR_TEXT text not null | ||
| +); | ||
| + | ||
| +create index IMIP_INVITATION_WORK_JOB_ID on | ||
| + IMIP_INVITATION_WORK(JOB_ID); | ||
| + | ||
| +----------------------- | ||
| +-- IMIP Polling Work -- | ||
| +----------------------- | ||
| + | ||
| +create table IMIP_POLLING_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null | ||
| +); | ||
| + | ||
| +create index IMIP_POLLING_WORK_JOB_ID on | ||
| + IMIP_POLLING_WORK(JOB_ID); | ||
| + | ||
| + | ||
| +--------------------- | ||
| +-- IMIP Reply Work -- | ||
| +--------------------- | ||
| + | ||
| +create table IMIP_REPLY_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + ORGANIZER varchar(255) not null, | ||
| + ATTENDEE varchar(255) not null, | ||
| + ICALENDAR_TEXT text not null | ||
| +); | ||
| + | ||
| +create index IMIP_REPLY_WORK_JOB_ID on | ||
| + IMIP_REPLY_WORK(JOB_ID); | ||
| + | ||
| + | ||
| +------------------------ | ||
| +-- Push Notifications -- | ||
| +------------------------ | ||
| + | ||
| +create table PUSH_NOTIFICATION_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + PUSH_ID varchar(255) not null, | ||
| + PUSH_PRIORITY integer not null -- 1:low 5:medium 10:high | ||
| +); | ||
| + | ||
| +create index PUSH_NOTIFICATION_WORK_JOB_ID on | ||
| + PUSH_NOTIFICATION_WORK(JOB_ID); | ||
| +create index PUSH_NOTIFICATION_WORK_PUSH_ID on | ||
| + PUSH_NOTIFICATION_WORK(PUSH_ID); | ||
| + | ||
| +----------------- | ||
| +-- GroupCacher -- | ||
| +----------------- | ||
| + | ||
| +create table GROUP_CACHER_POLLING_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null | ||
| +); | ||
| + | ||
| +create index GROUP_CACHER_POLLING_WORK_JOB_ID on | ||
| + GROUP_CACHER_POLLING_WORK(JOB_ID); | ||
| + | ||
| +create table GROUP_REFRESH_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + GROUP_UID varchar(255) not null | ||
| +); | ||
| + | ||
| +create index GROUP_REFRESH_WORK_JOB_ID on | ||
| + GROUP_REFRESH_WORK(JOB_ID); | ||
| +create index GROUP_REFRESH_WORK_GROUP_UID on | ||
| + GROUP_REFRESH_WORK(GROUP_UID); | ||
| + | ||
| +create table GROUP_DELEGATE_CHANGES_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + DELEGATOR_UID varchar(255) not null, | ||
| + READ_DELEGATE_UID varchar(255) not null, | ||
| + WRITE_DELEGATE_UID varchar(255) not null | ||
| +); | ||
| + | ||
| +create index GROUP_DELEGATE_CHANGES_WORK_JOB_ID on | ||
| + GROUP_DELEGATE_CHANGES_WORK(JOB_ID); | ||
| +create index GROUP_DELEGATE_CHANGES_WORK_DELEGATOR_UID on | ||
| + GROUP_DELEGATE_CHANGES_WORK(DELEGATOR_UID); | ||
| + | ||
| +create table GROUPS ( | ||
| + GROUP_ID integer primary key default nextval('RESOURCE_ID_SEQ'), -- implicit index | ||
| + NAME varchar(255) not null, | ||
| + GROUP_UID varchar(255) not null unique, -- implicit index | ||
| + MEMBERSHIP_HASH varchar(255) not null, | ||
| + EXTANT integer default 1, | ||
| + CREATED timestamp default timezone('UTC', CURRENT_TIMESTAMP), | ||
| + MODIFIED timestamp default timezone('UTC', CURRENT_TIMESTAMP) | ||
| +); | ||
| + | ||
| +create table GROUP_MEMBERSHIP ( | ||
| + GROUP_ID integer not null references GROUPS on delete cascade, | ||
| + MEMBER_UID varchar(255) not null, | ||
| + | ||
| + primary key (GROUP_ID, MEMBER_UID) | ||
| +); | ||
| + | ||
| +create index GROUP_MEMBERSHIP_MEMBER on | ||
| + GROUP_MEMBERSHIP(MEMBER_UID); | ||
| + | ||
| +create table GROUP_ATTENDEE_RECONCILE_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer not null references JOB, | ||
| + RESOURCE_ID integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + GROUP_ID integer not null references GROUPS on delete cascade | ||
| +); | ||
| + | ||
| +create index GROUP_ATTENDEE_RECONCILE_WORK_JOB_ID on | ||
| + GROUP_ATTENDEE_RECONCILE_WORK(JOB_ID); | ||
| +create index GROUP_ATTENDEE_RECONCILE_WORK_RESOURCE_ID on | ||
| + GROUP_ATTENDEE_RECONCILE_WORK(RESOURCE_ID); | ||
| +create index GROUP_ATTENDEE_RECONCILE_WORK_GROUP_ID on | ||
| + GROUP_ATTENDEE_RECONCILE_WORK(GROUP_ID); | ||
| + | ||
| + | ||
| +create table GROUP_ATTENDEE ( | ||
| + GROUP_ID integer not null references GROUPS on delete cascade, | ||
| + RESOURCE_ID integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + MEMBERSHIP_HASH varchar(255) not null, | ||
| + | ||
| + primary key (GROUP_ID, RESOURCE_ID) | ||
| +); | ||
| + | ||
| +create index GROUP_ATTENDEE_RESOURCE_ID on | ||
| + GROUP_ATTENDEE(RESOURCE_ID); | ||
| + | ||
| + | ||
| +create table GROUP_SHAREE_RECONCILE_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer not null references JOB, | ||
| + CALENDAR_ID integer not null references CALENDAR on delete cascade, | ||
| + GROUP_ID integer not null references GROUPS on delete cascade | ||
| +); | ||
| + | ||
| +create index GROUP_SHAREE_RECONCILE_WORK_JOB_ID on | ||
| + GROUP_SHAREE_RECONCILE_WORK(JOB_ID); | ||
| +create index GROUP_SHAREE_RECONCILE_WORK_CALENDAR_ID on | ||
| + GROUP_SHAREE_RECONCILE_WORK(CALENDAR_ID); | ||
| +create index GROUP_SHAREE_RECONCILE_WORK_GROUP_ID on | ||
| + GROUP_SHAREE_RECONCILE_WORK(GROUP_ID); | ||
| + | ||
| + | ||
| +create table GROUP_SHAREE ( | ||
| + GROUP_ID integer not null references GROUPS on delete cascade, | ||
| + CALENDAR_ID integer not null references CALENDAR on delete cascade, | ||
| + GROUP_BIND_MODE integer not null, -- enum CALENDAR_BIND_MODE | ||
| + MEMBERSHIP_HASH varchar(255) not null, | ||
| + | ||
| + primary key (GROUP_ID, CALENDAR_ID) | ||
| +); | ||
| + | ||
| +create index GROUP_SHAREE_CALENDAR_ID on | ||
| + GROUP_SHAREE(CALENDAR_ID); | ||
| + | ||
| +--------------- | ||
| +-- Delegates -- | ||
| +--------------- | ||
| + | ||
| +create table DELEGATES ( | ||
| + DELEGATOR varchar(255) not null, | ||
| + DELEGATE varchar(255) not null, | ||
| + READ_WRITE integer not null, -- 1 = ReadWrite, 0 = ReadOnly | ||
| + | ||
| + primary key (DELEGATOR, READ_WRITE, DELEGATE) | ||
| +); | ||
| +create index DELEGATE_TO_DELEGATOR on | ||
| + DELEGATES(DELEGATE, READ_WRITE, DELEGATOR); | ||
| + | ||
| +create table DELEGATE_GROUPS ( | ||
| + DELEGATOR varchar(255) not null, | ||
| + GROUP_ID integer not null references GROUPS on delete cascade, | ||
| + READ_WRITE integer not null, -- 1 = ReadWrite, 0 = ReadOnly | ||
| + IS_EXTERNAL integer not null, -- 1 = External, 0 = Internal | ||
| + | ||
| + primary key (DELEGATOR, READ_WRITE, GROUP_ID) | ||
| +); | ||
| +create index DELEGATE_GROUPS_GROUP_ID on | ||
| + DELEGATE_GROUPS(GROUP_ID); | ||
| + | ||
| +create table EXTERNAL_DELEGATE_GROUPS ( | ||
| + DELEGATOR varchar(255) primary key, | ||
| + GROUP_UID_READ varchar(255), | ||
| + GROUP_UID_WRITE varchar(255) | ||
| +); | ||
| + | ||
| +-------------------------- | ||
| +-- Object Splitter Work -- | ||
| +-------------------------- | ||
| + | ||
| +create table CALENDAR_OBJECT_SPLITTER_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + RESOURCE_ID integer not null references CALENDAR_OBJECT on delete cascade | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_SPLITTER_WORK_RESOURCE_ID on | ||
| + CALENDAR_OBJECT_SPLITTER_WORK(RESOURCE_ID); | ||
| +create index CALENDAR_OBJECT_SPLITTER_WORK_JOB_ID on | ||
| + CALENDAR_OBJECT_SPLITTER_WORK(JOB_ID); | ||
| + | ||
| +------------------------- | ||
| +-- Object Upgrade Work -- | ||
| +------------------------- | ||
| + | ||
| +create table CALENDAR_OBJECT_UPGRADE_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + RESOURCE_ID integer not null references CALENDAR_OBJECT on delete cascade | ||
| +); | ||
| + | ||
| +create index CALENDAR_OBJECT_UPGRADE_WORK_RESOURCE_ID on | ||
| + CALENDAR_OBJECT_UPGRADE_WORK(RESOURCE_ID); | ||
| +create index CALENDAR_OBJECT_UPGRADE_WORK_JOB_ID on | ||
| + CALENDAR_OBJECT_UPGRADE_WORK(JOB_ID); | ||
| + | ||
| +--------------------------- | ||
| +-- Revision Cleanup Work -- | ||
| +--------------------------- | ||
| + | ||
| +create table FIND_MIN_VALID_REVISION_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null | ||
| +); | ||
| + | ||
| +create index FIND_MIN_VALID_REVISION_WORK_JOB_ID on | ||
| + FIND_MIN_VALID_REVISION_WORK(JOB_ID); | ||
| + | ||
| +create table REVISION_CLEANUP_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null | ||
| +); | ||
| + | ||
| +create index REVISION_CLEANUP_WORK_JOB_ID on | ||
| + REVISION_CLEANUP_WORK(JOB_ID); | ||
| + | ||
| +------------------------ | ||
| +-- Inbox Cleanup Work -- | ||
| +------------------------ | ||
| + | ||
| +create table INBOX_CLEANUP_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null | ||
| +); | ||
| + | ||
| +create index INBOX_CLEANUP_WORK_JOB_ID on | ||
| + INBOX_CLEANUP_WORK(JOB_ID); | ||
| + | ||
| +create table CLEANUP_ONE_INBOX_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + HOME_ID integer not null unique references CALENDAR_HOME on delete cascade -- implicit index | ||
| +); | ||
| + | ||
| +create index CLEANUP_ONE_INBOX_WORK_JOB_ID on | ||
| + CLEANUP_ONE_INBOX_WORK(JOB_ID); | ||
| + | ||
| +------------------- | ||
| +-- Schedule Work -- | ||
| +------------------- | ||
| + | ||
| +create table SCHEDULE_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + ICALENDAR_UID varchar(255) not null, | ||
| + WORK_TYPE varchar(255) not null | ||
| +); | ||
| + | ||
| +create index SCHEDULE_WORK_JOB_ID on | ||
| + SCHEDULE_WORK(JOB_ID); | ||
| +create index SCHEDULE_WORK_ICALENDAR_UID on | ||
| + SCHEDULE_WORK(ICALENDAR_UID); | ||
| + | ||
| +--------------------------- | ||
| +-- Schedule Refresh Work -- | ||
| +--------------------------- | ||
| + | ||
| +create table SCHEDULE_REFRESH_WORK ( | ||
| + WORK_ID integer primary key references SCHEDULE_WORK on delete cascade, -- implicit index | ||
| + HOME_RESOURCE_ID integer not null references CALENDAR_HOME on delete cascade, | ||
| + RESOURCE_ID integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + ATTENDEE_COUNT integer | ||
| +); | ||
| + | ||
| +create index SCHEDULE_REFRESH_WORK_HOME_RESOURCE_ID on | ||
| + SCHEDULE_REFRESH_WORK(HOME_RESOURCE_ID); | ||
| +create index SCHEDULE_REFRESH_WORK_RESOURCE_ID on | ||
| + SCHEDULE_REFRESH_WORK(RESOURCE_ID); | ||
| + | ||
| +create table SCHEDULE_REFRESH_ATTENDEES ( | ||
| + RESOURCE_ID integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + ATTENDEE varchar(255) not null, | ||
| + | ||
| + primary key (RESOURCE_ID, ATTENDEE) | ||
| +); | ||
| + | ||
| +------------------------------ | ||
| +-- Schedule Auto Reply Work -- | ||
| +------------------------------ | ||
| + | ||
| +create table SCHEDULE_AUTO_REPLY_WORK ( | ||
| + WORK_ID integer primary key references SCHEDULE_WORK on delete cascade, -- implicit index | ||
| + HOME_RESOURCE_ID integer not null references CALENDAR_HOME on delete cascade, | ||
| + RESOURCE_ID integer not null references CALENDAR_OBJECT on delete cascade, | ||
| + PARTSTAT varchar(255) not null | ||
| +); | ||
| + | ||
| +create index SCHEDULE_AUTO_REPLY_WORK_HOME_RESOURCE_ID on | ||
| + SCHEDULE_AUTO_REPLY_WORK(HOME_RESOURCE_ID); | ||
| +create index SCHEDULE_AUTO_REPLY_WORK_RESOURCE_ID on | ||
| + SCHEDULE_AUTO_REPLY_WORK(RESOURCE_ID); | ||
| + | ||
| +----------------------------- | ||
| +-- Schedule Organizer Work -- | ||
| +----------------------------- | ||
| + | ||
| +create table SCHEDULE_ORGANIZER_WORK ( | ||
| + WORK_ID integer primary key references SCHEDULE_WORK on delete cascade, -- implicit index | ||
| + SCHEDULE_ACTION integer not null, -- Enum SCHEDULE_ACTION | ||
| + HOME_RESOURCE_ID integer not null references CALENDAR_HOME on delete cascade, | ||
| + RESOURCE_ID integer, -- this references a possibly non-existent CALENDAR_OBJECT | ||
| + ICALENDAR_TEXT_OLD text, | ||
| + ICALENDAR_TEXT_NEW text, | ||
| + ATTENDEE_COUNT integer, | ||
| + SMART_MERGE boolean | ||
| +); | ||
| + | ||
| +create index SCHEDULE_ORGANIZER_WORK_HOME_RESOURCE_ID on | ||
| + SCHEDULE_ORGANIZER_WORK(HOME_RESOURCE_ID); | ||
| +create index SCHEDULE_ORGANIZER_WORK_RESOURCE_ID on | ||
| + SCHEDULE_ORGANIZER_WORK(RESOURCE_ID); | ||
| + | ||
| +-- Enumeration of schedule actions | ||
| + | ||
| +create table SCHEDULE_ACTION ( | ||
| + ID integer primary key, | ||
| + DESCRIPTION varchar(16) not null unique | ||
| +); | ||
| + | ||
| +insert into SCHEDULE_ACTION values (0, 'create'); | ||
| +insert into SCHEDULE_ACTION values (1, 'modify'); | ||
| +insert into SCHEDULE_ACTION values (2, 'modify-cancelled'); | ||
| +insert into SCHEDULE_ACTION values (3, 'remove'); | ||
| + | ||
| +---------------------------------- | ||
| +-- Schedule Organizer Send Work -- | ||
| +---------------------------------- | ||
| + | ||
| +create table SCHEDULE_ORGANIZER_SEND_WORK ( | ||
| + WORK_ID integer primary key references SCHEDULE_WORK on delete cascade, -- implicit index | ||
| + SCHEDULE_ACTION integer not null, -- Enum SCHEDULE_ACTION | ||
| + HOME_RESOURCE_ID integer not null references CALENDAR_HOME on delete cascade, | ||
| + RESOURCE_ID integer, -- this references a possibly non-existent CALENDAR_OBJECT | ||
| + ATTENDEE varchar(255) not null, | ||
| + ITIP_MSG text, | ||
| + NO_REFRESH boolean | ||
| +); | ||
| + | ||
| +create index SCHEDULE_ORGANIZER_SEND_WORK_HOME_RESOURCE_ID on | ||
| + SCHEDULE_ORGANIZER_SEND_WORK(HOME_RESOURCE_ID); | ||
| +create index SCHEDULE_ORGANIZER_SEND_WORK_RESOURCE_ID on | ||
| + SCHEDULE_ORGANIZER_SEND_WORK(RESOURCE_ID); | ||
| + | ||
| +------------------------- | ||
| +-- Schedule Reply Work -- | ||
| +------------------------- | ||
| + | ||
| +create table SCHEDULE_REPLY_WORK ( | ||
| + WORK_ID integer primary key references SCHEDULE_WORK on delete cascade, -- implicit index | ||
| + HOME_RESOURCE_ID integer not null references CALENDAR_HOME on delete cascade, | ||
| + RESOURCE_ID integer, -- this references a possibly non-existent CALENDAR_OBJECT | ||
| + ITIP_MSG text | ||
| +); | ||
| + | ||
| +create index SCHEDULE_REPLY_WORK_HOME_RESOURCE_ID on | ||
| + SCHEDULE_REPLY_WORK(HOME_RESOURCE_ID); | ||
| +create index SCHEDULE_REPLY_WORK_RESOURCE_ID on | ||
| + SCHEDULE_REPLY_WORK(RESOURCE_ID); | ||
| + | ||
| +---------------------------------- | ||
| +-- Principal Purge Polling Work -- | ||
| +---------------------------------- | ||
| + | ||
| +create table PRINCIPAL_PURGE_POLLING_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_POLLING_WORK_JOB_ID on | ||
| + PRINCIPAL_PURGE_POLLING_WORK(JOB_ID); | ||
| + | ||
| +-------------------------------- | ||
| +-- Principal Purge Check Work -- | ||
| +-------------------------------- | ||
| + | ||
| +create table PRINCIPAL_PURGE_CHECK_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + UID varchar(255) not null | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_CHECK_WORK_JOB_ID on | ||
| + PRINCIPAL_PURGE_CHECK_WORK(JOB_ID); | ||
| +create index PRINCIPAL_PURGE_CHECK_WORK_UID on | ||
| + PRINCIPAL_PURGE_CHECK_WORK(UID); | ||
| + | ||
| +-------------------------- | ||
| +-- Principal Purge Work -- | ||
| +-------------------------- | ||
| + | ||
| +create table PRINCIPAL_PURGE_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + UID varchar(255) not null | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_WORK_JOB_ID on | ||
| + PRINCIPAL_PURGE_WORK(JOB_ID); | ||
| +create index PRINCIPAL_PURGE_WORK_UID on | ||
| + PRINCIPAL_PURGE_WORK(UID); | ||
| + | ||
| + | ||
| +-------------------------------- | ||
| +-- Principal Home Remove Work -- | ||
| +-------------------------------- | ||
| + | ||
| +create table PRINCIPAL_PURGE_HOME_WORK ( | ||
| + WORK_ID integer primary key default nextval('WORKITEM_SEQ'), -- implicit index | ||
| + JOB_ID integer references JOB not null, | ||
| + HOME_RESOURCE_ID integer not null references CALENDAR_HOME on delete cascade | ||
| +); | ||
| + | ||
| +create index PRINCIPAL_PURGE_HOME_WORK_JOB_ID on | ||
| + PRINCIPAL_PURGE_HOME_WORK(JOB_ID); | ||
| +create index PRINCIPAL_PURGE_HOME_HOME_RESOURCE_ID on | ||
| + PRINCIPAL_PURGE_HOME_WORK(HOME_RESOURCE_ID); | ||
| + | ||
| + | ||
| +-------------------- | ||
| +-- Schema Version -- | ||
| +-------------------- | ||
| + | ||
| +create table CALENDARSERVER ( | ||
| + NAME varchar(255) primary key, -- implicit index | ||
| + VALUE varchar(255) | ||
| +); | ||
| + | ||
| +insert into CALENDARSERVER values ('VERSION', '53'); | ||
| +insert into CALENDARSERVER values ('CALENDAR-DATAVERSION', '6'); | ||
| +insert into CALENDARSERVER values ('ADDRESSBOOK-DATAVERSION', '2'); | ||
| +insert into CALENDARSERVER values ('NOTIFICATION-DATAVERSION', '1'); | ||
| +insert into CALENDARSERVER values ('MIN-VALID-REVISION', '1'); |
84
txdav/common/datastore/sql_schema/upgrades/oracle-dialect/upgrade_from_51_to_52.sql
98
txdav/common/datastore/sql_schema/upgrades/oracle-dialect/upgrade_from_52_to_53.sql
61
txdav/common/datastore/sql_schema/upgrades/oracle-dialect/upgrade_from_53_to_54.sql
| @@ -0,0 +1,61 @@ | ||
| +---- | ||
| +-- Copyright (c) 2012-2015 Apple Inc. All rights reserved. | ||
| +-- | ||
| +-- Licensed 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. | ||
| +---- | ||
| + | ||
| +--------------------------------------------------- | ||
| +-- Upgrade database schema from VERSION 53 to 54 -- | ||
| +--------------------------------------------------- | ||
| + | ||
| +-- New columns | ||
| +alter table CALENDAR_HOME_METADATA | ||
| + add ("TRASH" integer default null references CALENDAR on delete set null); | ||
| + | ||
| +create index CALENDAR_HOME_METADAT_475de898 on CALENDAR_HOME_METADATA ( | ||
| + TRASH | ||
| +); | ||
| + | ||
| + | ||
| +-- New columns | ||
| +alter table CALENDAR_METADATA | ||
| + add ("CHILD_TYPE" integer default 0 not null) | ||
| + add ("TRASHED" timestamp default null) | ||
| + add ("IS_IN_TRASH" integer default 0 not null); | ||
| + | ||
| +-- Enumeration of child type | ||
| + | ||
| +create table CHILD_TYPE ( | ||
| + "ID" integer primary key, | ||
| + "DESCRIPTION" nvarchar2(16) unique | ||
| +); | ||
| + | ||
| +insert into CHILD_TYPE (DESCRIPTION, ID) values ('normal', 0); | ||
| +insert into CHILD_TYPE (DESCRIPTION, ID) values ('inbox', 1); | ||
| +insert into CHILD_TYPE (DESCRIPTION, ID) values ('trash', 2); | ||
| + | ||
| + | ||
| +-- New columns | ||
| +alter table CALENDAR_OBJECT | ||
| + add ("TRASHED" timestamp default null) | ||
| + add ("ORIGINAL_COLLECTION" integer default null); | ||
| + | ||
| + | ||
| +-- New columns | ||
| +alter table ADDRESSBOOK_OBJECT | ||
| + add ("TRASHED" timestamp default null) | ||
| + add ("IS_IN_TRASH" integer default 0 not null); | ||
| + | ||
| + | ||
| +-- update the version | ||
| +update CALENDARSERVER set VALUE = '54' where NAME = 'VERSION'; |
76
txdav/common/datastore/sql_schema/upgrades/postgres-dialect/upgrade_from_51_to_52.sql
90
txdav/common/datastore/sql_schema/upgrades/postgres-dialect/upgrade_from_52_to_53.sql
61
txdav/common/datastore/sql_schema/upgrades/postgres-dialect/upgrade_from_53_to_54.sql
| @@ -0,0 +1,61 @@ | ||
| +---- | ||
| +-- Copyright (c) 2012-2015 Apple Inc. All rights reserved. | ||
| +-- | ||
| +-- Licensed 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. | ||
| +---- | ||
| + | ||
| +--------------------------------------------------- | ||
| +-- Upgrade database schema from VERSION 53 to 54 -- | ||
| +--------------------------------------------------- | ||
| + | ||
| +-- New columns | ||
| +alter table CALENDAR_HOME_METADATA | ||
| + add column TRASH integer default null references CALENDAR on delete set null; | ||
| + | ||
| +create index CALENDAR_HOME_METADATA_TRASH on | ||
| + CALENDAR_HOME_METADATA(TRASH); | ||
| + | ||
| + | ||
| +-- New columns | ||
| +alter table CALENDAR_METADATA | ||
| + add column CHILD_TYPE integer default 0 not null, | ||
| + add column TRASHED timestamp default null, | ||
| + add column IS_IN_TRASH boolean default false not null; | ||
| + | ||
| +-- Enumeration of child type | ||
| + | ||
| +create table CHILD_TYPE ( | ||
| + ID integer primary key, | ||
| + DESCRIPTION varchar(16) not null unique | ||
| +); | ||
| + | ||
| +insert into CHILD_TYPE values (0, 'normal'); | ||
| +insert into CHILD_TYPE values (1, 'inbox'); | ||
| +insert into CHILD_TYPE values (2, 'trash'); | ||
| + | ||
| + | ||
| +-- New columns | ||
| +alter table CALENDAR_OBJECT | ||
| + add column TRASHED timestamp default null, | ||
| + add column ORIGINAL_COLLECTION integer default null; | ||
| + | ||
| + | ||
| +-- New columns | ||
| +alter table ADDRESSBOOK_OBJECT | ||
| + add column TRASHED timestamp default null, | ||
| + add column IS_IN_TRASH boolean default false not null; | ||
| + | ||
| + | ||
| + | ||
| +-- update the version | ||
| +update CALENDARSERVER set VALUE = '54' where NAME = 'VERSION'; |
36
txdav/common/datastore/upgrade/sql/test/test_upgrade_with_data.py
0 comments on commit
1d07e28