diff --git a/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.2-ACL.sql b/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.2-ACL.sql
index 9eed82db12..565761e88c 100644
--- a/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.2-ACL.sql
+++ b/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.2-ACL.sql
@@ -1,157 +1,157 @@
---
--- 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)
-) type=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;
-CREATE INDEX fk_alf_acl_acs ON alf_access_control_list (acl_change_set);
-ALTER TABLE alf_access_control_list ADD CONSTRAINT fk_alf_acl_acs FOREIGN KEY (acl_change_set) REFERENCES alf_acl_change_set (id);
-
-UPDATE alf_access_control_list acl
- set acl_id = (acl.id);
-
-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,
- primary key (id),
- unique(acl_id, ace_id, pos)
-) type=InnoDB;
-CREATE INDEX fk_alf_aclm_acl ON alf_acl_member (acl_id);
-ALTER TABLE alf_acl_member ADD CONSTRAINT fk_alf_aclm_acl FOREIGN KEY (acl_id) REFERENCES alf_access_control_list (id);
-CREATE INDEX fk_alf_aclm_ace ON alf_acl_member (ace_id);
-ALTER TABLE alf_acl_member ADD CONSTRAINT fk_alf_aclm_ace FOREIGN KEY (ace_id) REFERENCES alf_access_control_entry (id);
-
-
-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;
-
--- restructure authority
-ALTER TABLE alf_authority
- DROP PRIMARY KEY,
- ADD COLUMN id BIGINT NOT NULL AUTO_INCREMENT,
- CHANGE recipient authority VARCHAR(100),
- ADD primary key (id),
- ADD UNIQUE (authority);
-
--- migrate data - fix up FK refs to authority
-UPDATE alf_access_control_entry ace
- set auth_id = (select id from alf_authority a where a.authority = ace.authority_id);
-
-
--- migrate data - build equivalent ACL entries
-INSERT INTO alf_acl_member (version, acl_id, ace_id, pos)
- select 1, acl_id, id, 0 from alf_access_control_entry;
-
--- 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)
- ) type=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,
- primary key (id),
- UNIQUE (auth_id, alias_id)
-) type=InnoDB;
-CREATE INDEX fk_alf_autha_ali ON alf_authority_alias (alias_id);
-ALTER TABLE alf_authority_alias ADD CONSTRAINT fk_alf_autha_ali FOREIGN KEY (alias_id) REFERENCES alf_authority (id);
-CREATE INDEX fk_alf_autha_aut ON alf_authority_alias (auth_id);
-ALTER TABLE alf_authority_alias ADD CONSTRAINT fk_alf_autha_aut FOREIGN KEY (auth_id) REFERENCES alf_authority (id);
-
-
--- 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;
-ALTER TABLE alf_access_control_entry DROP INDEX FKFFF41F9960601995, DROP FOREIGN KEY FKFFF41F9960601995;
-ALTER TABLE alf_access_control_entry DROP COLUMN acl_id, DROP COLUMN authority_id;
-ALTER TABLE alf_access_control_entry
- CHANGE auth_id authority_id BIGINT NOT NULL;
-CREATE INDEX fk_alf_ace_auth ON alf_access_control_entry (authority_id);
-ALTER TABLE alf_access_control_entry ADD CONSTRAINT fk_alf_ace_auth FOREIGN KEY (authority_id) REFERENCES alf_authority (id);
-CREATE INDEX fk_alf_ace_perm ON alf_access_control_entry (permission_id);
-ALTER TABLE alf_access_control_entry ADD CONSTRAINT fk_alf_ace_perm FOREIGN KEY (permission_id) REFERENCES alf_permission (id);
-CREATE INDEX fk_alf_ace_ctx ON alf_access_control_entry (context_id);
-ALTER TABLE alf_access_control_entry ADD CONSTRAINT fk_alf_ace_ctx FOREIGN KEY (context_id) REFERENCES alf_ace_context (id);
-
-
-
--- Update members to point to the first use of an access control entry
-UPDATE alf_acl_member mem
- SET ace_id = (SELECT min(ace2.id) FROM alf_access_control_entry ace1
- JOIN alf_access_control_entry ace2
- ON ace1.permission_id = ace2.permission_id AND
- ace1.authority_id = ace2.authority_id AND
- ace1.allowed = ace2.allowed AND
- ace1.applies = ace2.applies
- WHERE ace1.id = mem.ace_id );
-
--- Remove duplicate aces the mysql way (as you can not use the deleted table in the where clause ...)
-
-CREATE TEMPORARY 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 alf_access_control_entry ace USING alf_access_control_entry ace JOIN tmp_to_delete t ON ace.id = t.id;
-DROP TEMPORARY 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, 84, -1, 85, null, 'UNKOWN', 1, 1, 'Script completed'
+--
+-- 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)
+) type=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;
+CREATE INDEX fk_alf_acl_acs ON alf_access_control_list (acl_change_set);
+ALTER TABLE alf_access_control_list ADD CONSTRAINT fk_alf_acl_acs FOREIGN KEY (acl_change_set) REFERENCES alf_acl_change_set (id);
+
+UPDATE alf_access_control_list acl
+ set acl_id = (acl.id);
+
+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,
+ primary key (id),
+ unique(acl_id, ace_id, pos)
+) type=InnoDB;
+CREATE INDEX fk_alf_aclm_acl ON alf_acl_member (acl_id);
+ALTER TABLE alf_acl_member ADD CONSTRAINT fk_alf_aclm_acl FOREIGN KEY (acl_id) REFERENCES alf_access_control_list (id);
+CREATE INDEX fk_alf_aclm_ace ON alf_acl_member (ace_id);
+ALTER TABLE alf_acl_member ADD CONSTRAINT fk_alf_aclm_ace FOREIGN KEY (ace_id) REFERENCES alf_access_control_entry (id);
+
+
+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;
+
+-- restructure authority
+ALTER TABLE alf_authority
+ DROP PRIMARY KEY,
+ ADD COLUMN id BIGINT NOT NULL AUTO_INCREMENT,
+ CHANGE recipient authority VARCHAR(100),
+ ADD primary key (id),
+ ADD UNIQUE (authority);
+
+-- migrate data - fix up FK refs to authority
+UPDATE alf_access_control_entry ace
+ set auth_id = (select id from alf_authority a where a.authority = ace.authority_id);
+
+
+-- migrate data - build equivalent ACL entries
+INSERT INTO alf_acl_member (version, acl_id, ace_id, pos)
+ select 1, acl_id, id, 0 from alf_access_control_entry;
+
+-- 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)
+ ) type=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,
+ primary key (id),
+ UNIQUE (auth_id, alias_id)
+) type=InnoDB;
+CREATE INDEX fk_alf_autha_ali ON alf_authority_alias (alias_id);
+ALTER TABLE alf_authority_alias ADD CONSTRAINT fk_alf_autha_ali FOREIGN KEY (alias_id) REFERENCES alf_authority (id);
+CREATE INDEX fk_alf_autha_aut ON alf_authority_alias (auth_id);
+ALTER TABLE alf_authority_alias ADD CONSTRAINT fk_alf_autha_aut FOREIGN KEY (auth_id) REFERENCES alf_authority (id);
+
+
+-- 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;
+ALTER TABLE alf_access_control_entry DROP INDEX FKFFF41F9960601995, DROP FOREIGN KEY FKFFF41F9960601995;
+ALTER TABLE alf_access_control_entry DROP COLUMN acl_id, DROP COLUMN authority_id;
+ALTER TABLE alf_access_control_entry
+ CHANGE auth_id authority_id BIGINT NOT NULL;
+CREATE INDEX fk_alf_ace_auth ON alf_access_control_entry (authority_id);
+ALTER TABLE alf_access_control_entry ADD CONSTRAINT fk_alf_ace_auth FOREIGN KEY (authority_id) REFERENCES alf_authority (id);
+CREATE INDEX fk_alf_ace_perm ON alf_access_control_entry (permission_id);
+ALTER TABLE alf_access_control_entry ADD CONSTRAINT fk_alf_ace_perm FOREIGN KEY (permission_id) REFERENCES alf_permission (id);
+CREATE INDEX fk_alf_ace_ctx ON alf_access_control_entry (context_id);
+ALTER TABLE alf_access_control_entry ADD CONSTRAINT fk_alf_ace_ctx FOREIGN KEY (context_id) REFERENCES alf_ace_context (id);
+
+
+
+-- Update members to point to the first use of an access control entry
+UPDATE alf_acl_member mem
+ SET ace_id = (SELECT min(ace2.id) FROM alf_access_control_entry ace1
+ JOIN alf_access_control_entry ace2
+ ON ace1.permission_id = ace2.permission_id AND
+ ace1.authority_id = ace2.authority_id AND
+ ace1.allowed = ace2.allowed AND
+ ace1.applies = ace2.applies
+ WHERE ace1.id = mem.ace_id );
+
+-- Remove duplicate aces the mysql way (as you can not use the deleted table in the where clause ...)
+
+CREATE TEMPORARY 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 alf_access_control_entry ace USING alf_access_control_entry ace JOIN tmp_to_delete t ON ace.id = t.id;
+DROP TEMPORARY 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, 84, -1, 85, null, 'UNKOWN', 1, 1, 'Script completed'
);
\ No newline at end of file
diff --git a/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/upgrade-1-drop-indexes-and-constraints.sql b/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/upgrade-1-drop-indexes-and-constraints.sql
index 5d29e81726..2cd7f72b48 100644
--- a/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/upgrade-1-drop-indexes-and-constraints.sql
+++ b/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/upgrade-1-drop-indexes-and-constraints.sql
@@ -21,29 +21,29 @@ ALTER TABLE alf_acl_member DROP INDEX fk_alf_aclm_ace, DROP FOREIGN KEY fk_alf_a
ALTER TABLE alf_attributes DROP INDEX fk_attributes_n_acl, DROP FOREIGN KEY fk_attributes_n_acl; -- (optional)
-ALTER TABLE alf_audit_date DROP INDEX adt_woy_idx;
+ALTER TABLE alf_audit_date DROP INDEX adt_woy_idx; -- (optional)
-ALTER TABLE alf_audit_date DROP INDEX adt_date_idx;
+ALTER TABLE alf_audit_date DROP INDEX adt_date_idx; -- (optional)
-ALTER TABLE alf_audit_date DROP INDEX adt_y_idx;
+ALTER TABLE alf_audit_date DROP INDEX adt_y_idx; -- (optional)
-ALTER TABLE alf_audit_date DROP INDEX adt_q_idx;
+ALTER TABLE alf_audit_date DROP INDEX adt_q_idx; -- (optional)
-ALTER TABLE alf_audit_date DROP INDEX adt_m_idx;
+ALTER TABLE alf_audit_date DROP INDEX adt_m_idx; -- (optional)
-ALTER TABLE alf_audit_date DROP INDEX adt_dow_idx;
+ALTER TABLE alf_audit_date DROP INDEX adt_dow_idx; -- (optional)
-ALTER TABLE alf_audit_date DROP INDEX adt_doy_idx;
+ALTER TABLE alf_audit_date DROP INDEX adt_doy_idx; -- (optional)
-ALTER TABLE alf_audit_date DROP INDEX adt_dom_idx;
+ALTER TABLE alf_audit_date DROP INDEX adt_dom_idx; -- (optional)
-ALTER TABLE alf_audit_date DROP INDEX adt_hy_idx;
+ALTER TABLE alf_audit_date DROP INDEX adt_hy_idx; -- (optional)
-ALTER TABLE alf_audit_date DROP INDEX adt_wom_idx;
+ALTER TABLE alf_audit_date DROP INDEX adt_wom_idx; -- (optional)
-ALTER TABLE alf_audit_fact DROP INDEX adt_user_idx;
+ALTER TABLE alf_audit_fact DROP INDEX adt_user_idx; -- (optional)
-ALTER TABLE alf_audit_fact DROP INDEX adt_store_idx;
+ALTER TABLE alf_audit_fact DROP INDEX adt_store_idx; -- (optional)
ALTER TABLE alf_audit_fact DROP INDEX FKEAD18174A0F9B8D9, DROP FOREIGN KEY FKEAD18174A0F9B8D9;
@@ -51,11 +51,11 @@ ALTER TABLE alf_audit_fact DROP INDEX FKEAD1817484342E39, DROP FOREIGN KEY FKEAD
ALTER TABLE alf_audit_fact DROP INDEX FKEAD18174F524CFD7, DROP FOREIGN KEY FKEAD18174F524CFD7;
-ALTER TABLE alf_audit_source DROP INDEX app_source_app_idx;
+ALTER TABLE alf_audit_source DROP INDEX app_source_app_idx; -- (optional)
-ALTER TABLE alf_audit_source DROP INDEX app_source_ser_idx;
+ALTER TABLE alf_audit_source DROP INDEX app_source_ser_idx; -- (optional)
-ALTER TABLE alf_audit_source DROP INDEX app_source_met_idx;
+ALTER TABLE alf_audit_source DROP INDEX app_source_met_idx; -- (optional)
ALTER TABLE alf_child_assoc DROP INDEX FKFFC5468E8E50E582, DROP FOREIGN KEY FKFFC5468E8E50E582;
@@ -96,45 +96,45 @@ ALTER TABLE alf_transaction DROP INDEX idx_commit_time_ms; -- (optional)
ALTER TABLE alf_transaction DROP INDEX FKB8761A3A9AE340B7, DROP FOREIGN KEY FKB8761A3A9AE340B7;
-ALTER TABLE avm_aspects DROP INDEX fk_avm_asp_node, DROP FOREIGN KEY fk_avm_asp_node;
+ALTER TABLE avm_aspects DROP INDEX fk_avm_asp_node, DROP FOREIGN KEY fk_avm_asp_node; --(optional)
ALTER TABLE avm_aspects_new DROP INDEX FKD3FD9F95EDCD4A96, DROP FOREIGN KEY FKD3FD9F95EDCD4A96; -- (optional)
-ALTER TABLE avm_child_entries DROP INDEX fk_avm_ce_child, DROP FOREIGN KEY fk_avm_ce_child;
+ALTER TABLE avm_child_entries DROP INDEX fk_avm_ce_child, DROP FOREIGN KEY fk_avm_ce_child; --(optional)
-ALTER TABLE avm_child_entries DROP INDEX fk_avm_ce_parent, DROP FOREIGN KEY fk_avm_ce_parent;
+ALTER TABLE avm_child_entries DROP INDEX fk_avm_ce_parent, DROP FOREIGN KEY fk_avm_ce_parent; --(optional)
-ALTER TABLE avm_history_links DROP INDEX fk_avm_hl_desc, DROP FOREIGN KEY fk_avm_hl_desc;
+ALTER TABLE avm_history_links DROP INDEX fk_avm_hl_desc, DROP FOREIGN KEY fk_avm_hl_desc; --(optional)
-ALTER TABLE avm_history_links DROP INDEX fk_avm_hl_ancestor, DROP FOREIGN KEY fk_avm_hl_ancestor;
+ALTER TABLE avm_history_links DROP INDEX fk_avm_hl_ancestor, DROP FOREIGN KEY fk_avm_hl_ancestor; --(optional)
-ALTER TABLE avm_merge_links DROP INDEX fk_avm_ml_to, DROP FOREIGN KEY fk_avm_ml_to;
+ALTER TABLE avm_merge_links DROP INDEX fk_avm_ml_to, DROP FOREIGN KEY fk_avm_ml_to; --(optional)
-ALTER TABLE avm_merge_links DROP INDEX fk_avm_ml_from, DROP FOREIGN KEY fk_avm_ml_from;
+ALTER TABLE avm_merge_links DROP INDEX fk_avm_ml_from, DROP FOREIGN KEY fk_avm_ml_from; --(optional)
-ALTER TABLE avm_node_properties DROP INDEX idx_avm_np_name;
+ALTER TABLE avm_node_properties DROP INDEX idx_avm_np_name; --(optional)
-ALTER TABLE avm_node_properties DROP INDEX fk_avm_np_node, DROP FOREIGN KEY fk_avm_np_node;
+ALTER TABLE avm_node_properties DROP INDEX fk_avm_np_node, DROP FOREIGN KEY fk_avm_np_node; --(optional)
ALTER TABLE avm_node_properties_new DROP INDEX FK44A37C8A6BD529F3, DROP FOREIGN KEY FK44A37C8A6BD529F3; -- (optional)
-ALTER TABLE avm_nodes DROP INDEX fk_avm_n_acl, DROP FOREIGN KEY fk_avm_n_acl;
+ALTER TABLE avm_nodes DROP INDEX fk_avm_n_acl, DROP FOREIGN KEY fk_avm_n_acl; --(optional)
-ALTER TABLE avm_nodes DROP INDEX fk_avm_n_store, DROP FOREIGN KEY fk_avm_n_store;
+ALTER TABLE avm_nodes DROP INDEX fk_avm_n_store, DROP FOREIGN KEY fk_avm_n_store; --(optional)
-ALTER TABLE avm_store_properties DROP INDEX idx_avm_sp_name;
+ALTER TABLE avm_store_properties DROP INDEX idx_avm_sp_name; --(optional)
-ALTER TABLE avm_store_properties DROP INDEX fk_avm_sp_store, DROP FOREIGN KEY fk_avm_sp_store;
+ALTER TABLE avm_store_properties DROP INDEX fk_avm_sp_store, DROP FOREIGN KEY fk_avm_sp_store; --(optional)
-ALTER TABLE avm_stores DROP INDEX fk_avm_s_root, DROP FOREIGN KEY fk_avm_s_root;
+ALTER TABLE avm_stores DROP INDEX fk_avm_s_root, DROP FOREIGN KEY fk_avm_s_root; --(optional)
ALTER TABLE avm_version_layered_node_entry DROP INDEX FK182E672DEB9D70C, DROP FOREIGN KEY FK182E672DEB9D70C; -- (optional)
-ALTER TABLE avm_version_roots DROP INDEX idx_avm_vr_version;
+ALTER TABLE avm_version_roots DROP INDEX idx_avm_vr_version; --(optional)
-ALTER TABLE avm_version_roots DROP INDEX fk_avm_vr_root, DROP FOREIGN KEY fk_avm_vr_root;
+ALTER TABLE avm_version_roots DROP INDEX fk_avm_vr_root, DROP FOREIGN KEY fk_avm_vr_root; --(optional)
-ALTER TABLE avm_version_roots DROP INDEX fk_avm_vr_store, DROP FOREIGN KEY fk_avm_vr_store;
+ALTER TABLE avm_version_roots DROP INDEX fk_avm_vr_store, DROP FOREIGN KEY fk_avm_vr_store; --(optional)
--
-- Record script finish
diff --git a/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/upgrade-2-move-qnames.sql b/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/upgrade-2-move-qnames.sql
index bda2ee8f37..4bfbb9a865 100644
--- a/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/upgrade-2-move-qnames.sql
+++ b/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/upgrade-2-move-qnames.sql
@@ -79,35 +79,35 @@ CREATE INDEX tidx_tqn_ln ON t_qnames (localname);
-- Populate the table with all known static QNames
INSERT INTO t_qnames (qname)
(
- SELECT type_qname FROM alf_node
+ SELECT DISTINCT type_qname FROM alf_node
);
INSERT INTO t_qnames (qname)
(
- SELECT qname FROM alf_node_aspects
+ SELECT DISTINCT qname FROM alf_node_aspects
);
INSERT INTO t_qnames (qname)
(
- SELECT qname FROM alf_node_properties
+ SELECT DISTINCT qname FROM alf_node_properties
);
INSERT INTO t_qnames (qname)
(
- SELECT name FROM avm_aspects_new
+ SELECT DISTINCT name FROM avm_aspects_new
);
INSERT INTO t_qnames (qname)
(
- SELECT qname FROM avm_node_properties_new
+ SELECT DISTINCT qname FROM avm_node_properties_new
);
INSERT INTO t_qnames (qname)
(
- SELECT qname FROM avm_store_properties
+ SELECT DISTINCT qname FROM avm_store_properties
);
INSERT INTO t_qnames (qname)
(
- SELECT type_qname FROM alf_node_assoc
+ SELECT DISTINCT type_qname FROM alf_node_assoc
);
INSERT INTO t_qnames (qname)
(
- SELECT type_qname FROM alf_child_assoc
+ SELECT DISTINCT type_qname FROM alf_child_assoc
);
-- Extract the namespace and localnames from the QNames
UPDATE t_qnames SET namespace = SUBSTR(SUBSTRING_INDEX(qname, '}', 1), 2);
@@ -159,6 +159,8 @@ ALTER TABLE alf_node MODIFY COLUMN type_qname_id BIGINT NOT NULL AFTER uuid;
--
-- DATA REPLACEMENT: alf_node_aspects.qname
+-- Due to the the potentially-missing primary key on the original table, it is
+-- possible to have duplicates. These are removed.
--
ALTER TABLE alf_node_aspects DROP PRIMARY KEY; -- (optional)
ALTER TABLE alf_node_aspects ADD COLUMN qname_id BIGINT NULL AFTER node_id;
@@ -171,6 +173,33 @@ UPDATE alf_node_aspects na set na.qname_id =
);
ALTER TABLE alf_node_aspects DROP COLUMN qname;
ALTER TABLE alf_node_aspects MODIFY COLUMN qname_id BIGINT NOT NULL AFTER node_id;
+CREATE TABLE t_dup_aspects
+(
+ node_id BIGINT NOT NULL,
+ qname_id BIGINT NOT NULL
+);
+INSERT INTO t_dup_aspects (node_id, qname_id)
+(
+ SELECT
+ node_id, qname_id
+ FROM
+ alf_node_aspects
+ GROUP BY
+ node_id, qname_id
+ HAVING
+ count(*) > 1
+);
+DELETE FROM alf_node_aspects na
+ USING alf_node_aspects na
+ JOIN t_dup_aspects t ON (t.node_id = na.node_id AND t.qname_id = na.qname_id);
+INSERT INTO alf_node_aspects (node_id, qname_id)
+(
+ SELECT
+ node_id, qname_id
+ FROM
+ t_dup_aspects
+);
+DROP TABLE t_dup_aspects;
ALTER TABLE alf_node_aspects ADD PRIMARY KEY (node_id, qname_id);
--
diff --git a/source/java/org/alfresco/repo/avm/AVMServicePermissionsTest.java b/source/java/org/alfresco/repo/avm/AVMServicePermissionsTest.java
index 1ce18ff183..8a0b56fc52 100644
--- a/source/java/org/alfresco/repo/avm/AVMServicePermissionsTest.java
+++ b/source/java/org/alfresco/repo/avm/AVMServicePermissionsTest.java
@@ -428,6 +428,13 @@ public class AVMServicePermissionsTest extends TestCase
finally
{
avmService.purgeStore(storeName);
+ avmService.purgeStore(storeName + "-layer-base");
+ avmService.purgeStore(storeName + "-layer-a");
+ avmService.purgeStore(storeName + "-layer-b");
+ avmService.purgeStore(storeName + "-layer-c");
+ avmService.purgeStore(storeName + "-layer-d");
+ avmService.purgeStore(storeName + "-layer-layer-base");
+ avmService.purgeStore(storeName + "-layer-layer-layer-base");
}
}
@@ -589,6 +596,13 @@ public class AVMServicePermissionsTest extends TestCase
finally
{
avmService.purgeStore(storeName);
+ avmService.purgeStore(storeName + "-layer-base");
+ avmService.purgeStore(storeName + "-layer-a");
+ avmService.purgeStore(storeName + "-layer-b");
+ avmService.purgeStore(storeName + "-layer-c");
+ avmService.purgeStore(storeName + "-layer-d");
+ avmService.purgeStore(storeName + "-layer-layer-base");
+ avmService.purgeStore(storeName + "-layer-layer-layer-base");
}
}
@@ -742,6 +756,13 @@ public class AVMServicePermissionsTest extends TestCase
finally
{
avmService.purgeStore(storeName);
+ avmService.purgeStore(storeName + "-layer-base");
+ avmService.purgeStore(storeName + "-layer-a");
+ avmService.purgeStore(storeName + "-layer-b");
+ avmService.purgeStore(storeName + "-layer-c");
+ avmService.purgeStore(storeName + "-layer-d");
+ avmService.purgeStore(storeName + "-layer-layer-base");
+ avmService.purgeStore(storeName + "-layer-layer-layer-base");
}
}
@@ -1622,6 +1643,8 @@ public class AVMServicePermissionsTest extends TestCase
finally
{
avmService.purgeStore(storeName);
+ avmService.purgeStore(storeName+"-a-");
+
}
}
@@ -1988,6 +2011,7 @@ public class AVMServicePermissionsTest extends TestCase
finally
{
avmService.purgeStore(storeName);
+ avmService.purgeStore(storeName+"-a-");
}
}
@@ -2306,6 +2330,7 @@ public class AVMServicePermissionsTest extends TestCase
finally
{
avmService.purgeStore(storeName);
+ avmService.purgeStore(storeName+"-a-");
}
}
@@ -2383,6 +2408,7 @@ public class AVMServicePermissionsTest extends TestCase
finally
{
avmService.purgeStore(storeName);
+ avmService.purgeStore(storeName+"-a-");
}
}
}
diff --git a/source/java/org/alfresco/repo/domain/PropertyValue.java b/source/java/org/alfresco/repo/domain/PropertyValue.java
index 333aba4fd3..0e56d6479f 100644
--- a/source/java/org/alfresco/repo/domain/PropertyValue.java
+++ b/source/java/org/alfresco/repo/domain/PropertyValue.java
@@ -771,6 +771,14 @@ public class PropertyValue implements Cloneable, Serializable
return actualType == null ? null : actualType.getOrdinalNumber();
}
+ /**
+ * @return Returns the actual type's String representation
+ */
+ public String getActualTypeString()
+ {
+ return actualType == null ? null : actualType.toString();
+ }
+
public void setActualType(Integer actualType)
{
ValueType type = PropertyValue.valueTypesByOrdinalNumber.get(actualType);
diff --git a/source/java/org/alfresco/repo/domain/QNameDAOTest.java b/source/java/org/alfresco/repo/domain/QNameDAOTest.java
index 5ab3a4c0ce..c5b775b6ce 100644
--- a/source/java/org/alfresco/repo/domain/QNameDAOTest.java
+++ b/source/java/org/alfresco/repo/domain/QNameDAOTest.java
@@ -200,8 +200,8 @@ public class QNameDAOTest extends TestCase
readyLatch.await(5, TimeUnit.SECONDS);
// Let the threads go
startLatch.countDown();
- // Wait for them all to be done (within limits)
- doneLatch.await(threadCount, TimeUnit.SECONDS);
+ // Wait for them all to be done (within limit of 10 seconds per thread)
+ doneLatch.await(threadCount * 10, TimeUnit.SECONDS);
if (doneLatch.getCount() > 0)
{
fail("Still waiting for threads to finish");
diff --git a/source/java/org/alfresco/repo/domain/hibernate/HibernateQNameDAOImpl.java b/source/java/org/alfresco/repo/domain/hibernate/HibernateQNameDAOImpl.java
index 20fb4aa5cd..731031648b 100644
--- a/source/java/org/alfresco/repo/domain/hibernate/HibernateQNameDAOImpl.java
+++ b/source/java/org/alfresco/repo/domain/hibernate/HibernateQNameDAOImpl.java
@@ -35,6 +35,8 @@ import org.alfresco.repo.domain.NamespaceEntity;
import org.alfresco.repo.domain.QNameDAO;
import org.alfresco.repo.domain.QNameEntity;
import org.alfresco.service.namespace.QName;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
@@ -48,6 +50,8 @@ import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
*/
public class HibernateQNameDAOImpl extends HibernateDaoSupport implements QNameDAO
{
+ private static Log logger = LogFactory.getLog(HibernateQNameDAOImpl.class);
+
private static final String QUERY_GET_NS_BY_URI = "qname.GetNamespaceByUri";
private static final String QUERY_GET_QNAME_BY_URI_AND_LOCALNAME = "qname.GetQNameByUriAndLocalName";
@@ -98,6 +102,10 @@ public class HibernateQNameDAOImpl extends HibernateDaoSupport implements QNameD
public NamespaceEntity newNamespaceEntity(String namespaceUri)
{
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Persisting Namespace: " + namespaceUri);
+ }
NamespaceEntity namespace = new NamespaceEntityImpl();
namespace.setUri(namespaceUri);
// Persist
@@ -186,6 +194,10 @@ public class HibernateQNameDAOImpl extends HibernateDaoSupport implements QNameD
public QNameEntity newQNameEntity(QName qname)
{
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Persisting QName: " + qname);
+ }
final String namespaceUri = qname.getNamespaceURI();
final String localName = qname.getLocalName();
NamespaceEntity namespace = getNamespaceEntity(namespaceUri);
diff --git a/source/java/org/alfresco/repo/domain/hibernate/QName.hbm.xml b/source/java/org/alfresco/repo/domain/hibernate/QName.hbm.xml
index f4d9c7974a..7d2d72f6f1 100644
--- a/source/java/org/alfresco/repo/domain/hibernate/QName.hbm.xml
+++ b/source/java/org/alfresco/repo/domain/hibernate/QName.hbm.xml
@@ -59,7 +59,7 @@
-
+
select
namespace
from
@@ -68,7 +68,7 @@
namespace.uri = :namespaceUri
-
+
select
qname
from