mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-07 18:25:23 +00:00
21242: ALF-2879: XAM Connector changes - Fixed setting of store name - Added properties: - xam.archive.retentionPeriodDays=0 - xam.archive.addLock=true 21244: ALF-2879: Updated readme.txt 21262: ALF-3611 - tweak AVM orphan reaper test (PurgeTestP) 21277: Fix ALF-889 - WCM/AVM folder disappears when cut-and-paste into itself - fixed cycle check before rename/move - added -ve unit test - externalized existing cycle error messages 21284: ALF-2879: XAM Connector changes - Listen to store selector policies (incl. workaround for policy listening) - Set XAM retention (code is setting the value, but not successfully tested against test servers) 21285: StoreSelectorPolicies.OnContentMovedPolicy is deprecated. Use StoreSelectorPolicies.AfterMoveContentPolicy. - Deprecated so old policy still exists and works - Will remove for 3.4 (maybe) 21293: Fix ALF-3245: stream not closed in DictionaryBootstrap.onDictionaryInit() 21303: ALF-2879: XAM Connector changes - Throw ContentIOException if setBaseRetention fails 21313: ALF-2879: XAM Connector changes - Round ms to nearest second - Log actual ms value being set for retention 21322: Fix AVMNodeService.createNode to close output stream and avoid "Too many open files" (also add example AVMFileFolderPerformanceTester) 21331: ALF-2879: XAM Connector changes - Removed duplicate setting of base retention - Left code hooks for setting of other metadata 21368: Merged V3.3 to V3.3-BUG-FIX 21213: Merged DEV/TEMPORARY to V3.3 21200: ALF-2978: IMAP cannot bind to all the interfaces (0.0.0.0) “imap.server.host” property can be used for setting IP address / network adapter to listen on for IMAP protocol. 21219: Merged PATCHES/V3.2.1 to V3.3 21216: ALF-3779: A few bug fixes to --FOREACH handling in SchemaBootstrap - New system.upgrade.default.batchsize property to control overall default batch size - Added in a few more missed --FOREACH markers 21211: ALF-3779: Remaining scripts converted to use --FOREACH (as logs finally provided by test prove that they need it too!) 21210: (RECORD ONLY) Incremented version label 21209: ALF-3779: Solution to allow batching of mass updates in upgrade scripts into smaller transactions - A special preceding comment in this format specifies a numeric table column to control the batching and a global property specifying the batch size --FOREACH table.column batch.size.property - If the property isn't specified in alfresco-global.properties, the default batch size is 10,000 - INSERT / UPDATE / DELETE statements can then tack on extra conditions on ${LOWERBOUND} and ${UPPERBOUND} variables. E.g. WHERE n.id >= ${LOWERBOUND} AND n.id <= ${UPPERBOUND} - The statements are substituted and executed for each batch range up to the maximum value of the column - 2.1 and 2.2 MySQL upgrades reimplemented this way 21207: Extra debug logging to track index triggering activity 21295: Merged HEAD to V3.3 21255: Parameter encoding 21298: Merged V3.2 to V3.3 21297: ALF-3889: JBPMDeployProcessServlet is now disabled by default and enabled with this in alfresco-global.properties system.workflow.deployservlet.enabled=true 21317: dod5015: Parameter encoding 21363: Merged PATCHES/V3.2.1 to V3.3 21338: (RECORD ONLY) Incremented version label 21335: ALF-3779: Correction to error in --FOREACH range restriction for UPDATE statement 21290: ALF-3960: ArrayIndexOutOfBoundsException when we set mergerMergeFactor > mergerTargetOverlays 21278: (RECORD ONLY) Merged PATCHES/V3.1.2 to PATCHES/V3.2.1 21264: ALF-3889: JBPMDeployProcessServlet not accessible by default - Should only be enabled in development environment 21364: Merged PATCHES/V3.1.2 to V3.3 (RECORD ONLY) 21264: ALF-3889: JBPMDeployProcessServlet not accessible by default - Should only be enabled in development environment 21365: Merged PATCHES/V3.2.0 to V3.3 (RECORD ONLY) 21276: Merged PATCHES/V3.1.2 to PATCHES/V3.2.0 21264: ALF-3889: JBPMDeployProcessServlet not accessible by default - Should only be enabled in development environment 21366: Merged PATCHES/V3.2.r to V3.3 (RECORD ONLY) 21279: Merged PATCHES/V3.1.2 to PATCHES/V3.2.r 21264: ALF-3889: JBPMDeployProcessServlet not accessible by default - Should only be enabled in development environment 21367: Merged PATCHES/V3.3.1 to V3.3 (RECORD ONLY) 21343: Incremented version label 21342: ALF-3997: Merged V3.3-BUG-FIX to PATCHES/V3.3.1 20623: Fix for ALF-3188 : Access Denied when updating doc via CIFS 21282: Merged PATCHES/V3.1.2 to PATCHES/V3.3.1 21264: ALF-3889: JBPMDeployProcessServlet not accessible by default - Should only be enabled in development environment 21239: Created hotfix branch off ENTERPRISE/V3.3.1 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21369 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
197 lines
7.3 KiB
SQL
197 lines
7.3 KiB
SQL
--
|
|
-- Title: Update for permissions schema changes
|
|
-- Database: MySQL InnoDB
|
|
-- Since: V2.2 Schema 85
|
|
-- Author: Andy Hind
|
|
--
|
|
-- Please contact support@alfresco.com if you need assistance with the upgrade.
|
|
--
|
|
|
|
CREATE TABLE alf_acl_change_set (
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|
version BIGINT NOT NULL,
|
|
primary key (id)
|
|
) ENGINE=InnoDB;
|
|
|
|
|
|
-- Add to ACL
|
|
ALTER TABLE alf_access_control_list
|
|
ADD COLUMN type INT NOT NULL DEFAULT 0,
|
|
ADD COLUMN latest BOOLEAN NOT NULL DEFAULT TRUE,
|
|
ADD COLUMN acl_id VARCHAR(36) NOT NULL DEFAULT 'UNSET',
|
|
ADD COLUMN acl_version BIGINT NOT NULL DEFAULT 1,
|
|
ADD COLUMN inherited_acl BIGINT,
|
|
ADD COLUMN is_versioned BOOLEAN NOT NULL DEFAULT FALSE,
|
|
ADD COLUMN requires_version BOOLEAN NOT NULL DEFAULT FALSE,
|
|
ADD COLUMN acl_change_set BIGINT,
|
|
ADD COLUMN inherits_from BIGINT,
|
|
ADD INDEX fk_alf_acl_acs (acl_change_set),
|
|
ADD CONSTRAINT fk_alf_acl_acs FOREIGN KEY (acl_change_set) REFERENCES alf_acl_change_set (id),
|
|
ADD INDEX idx_alf_acl_inh (inherits, inherits_from);
|
|
|
|
--FOREACH alf_access_control_list.id system.upgrade.alf_access_control_list.batchsize
|
|
UPDATE alf_access_control_list acl
|
|
set acl_id = (acl.id)
|
|
WHERE acl.id >= ${LOWERBOUND} AND acl.id <= ${UPPERBOUND};
|
|
|
|
|
|
ALTER TABLE alf_access_control_list
|
|
ADD UNIQUE (acl_id, latest, acl_version);
|
|
|
|
-- Create ACL member list
|
|
CREATE TABLE alf_acl_member (
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|
version BIGINT NOT NULL,
|
|
acl_id BIGINT NOT NULL,
|
|
ace_id BIGINT NOT NULL,
|
|
pos INT NOT NULL,
|
|
INDEX fk_alf_aclm_acl (acl_id),
|
|
CONSTRAINT fk_alf_aclm_acl FOREIGN KEY (acl_id) REFERENCES alf_access_control_list (id),
|
|
INDEX fk_alf_aclm_ace (ace_id),
|
|
CONSTRAINT fk_alf_aclm_ace FOREIGN KEY (ace_id) REFERENCES alf_access_control_entry (id),
|
|
primary key (id),
|
|
unique(acl_id, ace_id, pos)
|
|
) ENGINE=InnoDB;
|
|
|
|
ALTER TABLE alf_access_control_entry DROP INDEX acl_id;
|
|
|
|
-- Extend ACE
|
|
ALTER TABLE alf_access_control_entry
|
|
ADD COLUMN auth_id BIGINT NOT NULL DEFAULT -1,
|
|
ADD COLUMN applies INT NOT NULL DEFAULT 0,
|
|
ADD COLUMN context_id BIGINT;
|
|
|
|
-- remove unused
|
|
DROP TABLE alf_auth_ext_keys;
|
|
|
|
-- remove authority constraint
|
|
ALTER TABLE alf_access_control_entry DROP INDEX FKFFF41F99B25A50BF, DROP FOREIGN KEY FKFFF41F99B25A50BF; -- (optional)
|
|
|
|
-- restructure authority
|
|
ALTER TABLE alf_authority
|
|
DROP PRIMARY KEY,
|
|
ADD COLUMN id BIGINT NOT NULL AUTO_INCREMENT,
|
|
ADD COLUMN crc BIGINT,
|
|
CHANGE recipient authority VARCHAR(100),
|
|
ADD INDEX idx_alf_auth_aut (authority),
|
|
ADD primary key (id),
|
|
ADD UNIQUE (authority, crc);
|
|
|
|
-- migrate data - fix up FK refs to authority
|
|
--FOREACH alf_access_control_entry.id system.upgrade.alf_access_control_entry.batchsize
|
|
UPDATE alf_access_control_entry ace
|
|
set auth_id = (select id from alf_authority a where a.authority = ace.authority_id)
|
|
WHERE ace.id >= ${LOWERBOUND} AND ace.id <= ${UPPERBOUND};
|
|
|
|
|
|
-- migrate data - build equivalent ACL entries
|
|
--FOREACH alf_access_control_list.id system.upgrade.alf_acl_member.batchsize
|
|
INSERT INTO alf_acl_member (version, acl_id, ace_id, pos)
|
|
select 1, ace.acl_id, ace.id, 0
|
|
from alf_access_control_entry ace join alf_access_control_list acl on acl.id = ace.acl_id
|
|
where acl.id >= ${LOWERBOUND} AND acl.id <= ${UPPERBOUND};
|
|
|
|
-- Create ACE context
|
|
CREATE TABLE alf_ace_context (
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|
version BIGINT NOT NULL,
|
|
class_context VARCHAR(1024),
|
|
property_context VARCHAR(1024),
|
|
kvp_context VARCHAR(1024),
|
|
primary key (id)
|
|
) ENGINE=InnoDB;
|
|
|
|
|
|
-- Create auth aliases table
|
|
CREATE TABLE alf_authority_alias (
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|
version BIGINT NOT NULL,
|
|
auth_id BIGINT NOT NULL,
|
|
alias_id BIGINT NOT NULL,
|
|
INDEX fk_alf_autha_ali (alias_id),
|
|
CONSTRAINT fk_alf_autha_ali FOREIGN KEY (alias_id) REFERENCES alf_authority (id),
|
|
INDEX fk_alf_autha_aut (auth_id),
|
|
CONSTRAINT fk_alf_autha_aut FOREIGN KEY (auth_id) REFERENCES alf_authority (id),
|
|
primary key (id),
|
|
UNIQUE (auth_id, alias_id)
|
|
) ENGINE=InnoDB;
|
|
|
|
|
|
-- Tidy up unused cols on ace table and add the FK contstraint back
|
|
-- finish take out of ACL_ID
|
|
ALTER TABLE alf_access_control_entry
|
|
DROP INDEX FKFFF41F99B9553F6C, DROP FOREIGN KEY FKFFF41F99B9553F6C,
|
|
DROP INDEX FKFFF41F9960601995, DROP FOREIGN KEY FKFFF41F9960601995,
|
|
DROP COLUMN acl_id, DROP COLUMN authority_id,
|
|
CHANGE auth_id authority_id BIGINT NOT NULL,
|
|
ADD INDEX fk_alf_ace_auth (authority_id),
|
|
ADD CONSTRAINT fk_alf_ace_auth FOREIGN KEY (authority_id) REFERENCES alf_authority (id),
|
|
ADD INDEX fk_alf_ace_perm (permission_id),
|
|
ADD CONSTRAINT fk_alf_ace_perm FOREIGN KEY (permission_id) REFERENCES alf_permission (id),
|
|
ADD INDEX fk_alf_ace_ctx (context_id),
|
|
ADD CONSTRAINT fk_alf_ace_ctx FOREIGN KEY (context_id) REFERENCES alf_ace_context (id)
|
|
;
|
|
|
|
|
|
CREATE TABLE alf_tmp_min_ace (
|
|
min BIGINT NOT NULL,
|
|
permission_id BIGINT NOT NULL,
|
|
authority_id BIGINT NOT NULL,
|
|
allowed BIT(1) NOT NULL,
|
|
applies INT NOT NULL,
|
|
UNIQUE (permission_id, authority_id, allowed, applies)
|
|
) ENGINE=InnoDB;
|
|
|
|
--FOREACH alf_access_control_entry.authority_id system.upgrade.alf_tmp_min_ace.batchsize
|
|
INSERT INTO alf_tmp_min_ace (min, permission_id, authority_id, allowed, applies)
|
|
SELECT
|
|
min(ace1.id),
|
|
ace1.permission_id,
|
|
ace1.authority_id,
|
|
ace1.allowed,
|
|
ace1.applies
|
|
FROM
|
|
alf_access_control_entry ace1
|
|
WHERE
|
|
ace1.authority_id >= ${LOWERBOUND} AND ace1.authority_id <= ${UPPERBOUND}
|
|
GROUP BY
|
|
ace1.permission_id, ace1.authority_id, ace1.allowed, ace1.applies
|
|
;
|
|
|
|
|
|
-- Update members to point to the first use of an access control entry
|
|
--FOREACH alf_acl_member.id system.upgrade.alf_acl_member.batchsize
|
|
UPDATE alf_acl_member mem
|
|
SET ace_id = (SELECT help.min FROM alf_access_control_entry ace
|
|
JOIN alf_tmp_min_ace help
|
|
ON help.permission_id = ace.permission_id AND
|
|
help.authority_id = ace.authority_id AND
|
|
help.allowed = ace.allowed AND
|
|
help.applies = ace.applies
|
|
WHERE ace.id = mem.ace_id )
|
|
WHERE mem.id >= ${LOWERBOUND} AND mem.id <= ${UPPERBOUND};
|
|
DROP TABLE alf_tmp_min_ace;
|
|
|
|
-- Remove duplicate aces the mysql way (as you can not use the deleted table in the where clause ...)
|
|
|
|
CREATE TABLE tmp_to_delete SELECT ace.id FROM alf_acl_member mem RIGHT OUTER JOIN alf_access_control_entry ace ON mem.ace_id = ace.id WHERE mem.ace_id IS NULL;
|
|
DELETE FROM ace USING alf_access_control_entry ace JOIN tmp_to_delete t ON ace.id = t.id;
|
|
DROP TABLE tmp_to_delete;
|
|
|
|
-- Add constraint for duplicate acls
|
|
|
|
ALTER TABLE alf_access_control_entry
|
|
ADD UNIQUE (permission_id, authority_id, allowed, applies, context_id);
|
|
|
|
--
|
|
-- Record script finish
|
|
--
|
|
DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.2-ACL';
|
|
INSERT INTO alf_applied_patch
|
|
(id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report)
|
|
VALUES
|
|
(
|
|
'patch.db-V2.2-ACL', 'Manually executed script upgrade V2.2: Update acl schema',
|
|
0, 119, -1, 120, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'Script completed'
|
|
);
|