Merged V2.2 to HEAD

7633: Fixed compilation fallout from PropertyValue changes
   7640: Build Fix - missing purges for some stores
   7645: Fixed line endings
   7646: Tweaks to MySQL QName upgrade script after doing large 1.4.3 to 2.2 upgrade.
   7648: Give more time per thread to cater for slow executions of test threads
   7649: Fixed QName query flush modes


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8440 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2008-03-06 19:42:52 +00:00
parent d389ff1936
commit ab80624ce0
8 changed files with 275 additions and 200 deletions

View File

@@ -1,157 +1,157 @@
-- --
-- Title: Update for permissions schema changes -- Title: Update for permissions schema changes
-- Database: MySQL InnoDB -- Database: MySQL InnoDB
-- Since: V2.2 Schema 85 -- Since: V2.2 Schema 85
-- Author: Andy Hind -- Author: Andy Hind
-- --
-- Please contact support@alfresco.com if you need assistance with the upgrade. -- Please contact support@alfresco.com if you need assistance with the upgrade.
-- --
CREATE TABLE alf_acl_change_set ( CREATE TABLE alf_acl_change_set (
id BIGINT NOT NULL AUTO_INCREMENT, id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL, version BIGINT NOT NULL,
primary key (id) primary key (id)
) type=InnoDB; ) type=InnoDB;
-- Add to ACL -- Add to ACL
ALTER TABLE alf_access_control_list ALTER TABLE alf_access_control_list
ADD COLUMN type INT NOT NULL DEFAULT 0, ADD COLUMN type INT NOT NULL DEFAULT 0,
ADD COLUMN latest BOOLEAN NOT NULL DEFAULT TRUE, ADD COLUMN latest BOOLEAN NOT NULL DEFAULT TRUE,
ADD COLUMN acl_id VARCHAR(36) NOT NULL DEFAULT 'UNSET', ADD COLUMN acl_id VARCHAR(36) NOT NULL DEFAULT 'UNSET',
ADD COLUMN acl_version BIGINT NOT NULL DEFAULT 1, ADD COLUMN acl_version BIGINT NOT NULL DEFAULT 1,
ADD COLUMN inherited_acl BIGINT, ADD COLUMN inherited_acl BIGINT,
ADD COLUMN is_versioned BOOLEAN NOT NULL DEFAULT FALSE, ADD COLUMN is_versioned BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN requires_version BOOLEAN NOT NULL DEFAULT FALSE, ADD COLUMN requires_version BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN acl_change_set BIGINT, ADD COLUMN acl_change_set BIGINT,
ADD COLUMN inherits_from BIGINT; ADD COLUMN inherits_from BIGINT;
CREATE INDEX fk_alf_acl_acs ON alf_access_control_list (acl_change_set); 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); 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 UPDATE alf_access_control_list acl
set acl_id = (acl.id); set acl_id = (acl.id);
ALTER TABLE alf_access_control_list ALTER TABLE alf_access_control_list
ADD UNIQUE (acl_id, latest, acl_version); ADD UNIQUE (acl_id, latest, acl_version);
-- Create ACL member list -- Create ACL member list
CREATE TABLE alf_acl_member ( CREATE TABLE alf_acl_member (
id BIGINT NOT NULL AUTO_INCREMENT, id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL, version BIGINT NOT NULL,
acl_id BIGINT NOT NULL, acl_id BIGINT NOT NULL,
ace_id BIGINT NOT NULL, ace_id BIGINT NOT NULL,
pos INT NOT NULL, pos INT NOT NULL,
primary key (id), primary key (id),
unique(acl_id, ace_id, pos) unique(acl_id, ace_id, pos)
) type=InnoDB; ) type=InnoDB;
CREATE INDEX fk_alf_aclm_acl ON alf_acl_member (acl_id); 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); 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); 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_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; ALTER TABLE alf_access_control_entry DROP INDEX acl_id;
-- Extend ACE -- Extend ACE
ALTER TABLE alf_access_control_entry ALTER TABLE alf_access_control_entry
ADD COLUMN auth_id BIGINT NOT NULL DEFAULT -1, ADD COLUMN auth_id BIGINT NOT NULL DEFAULT -1,
ADD COLUMN applies INT NOT NULL DEFAULT 0, ADD COLUMN applies INT NOT NULL DEFAULT 0,
ADD COLUMN context_id BIGINT; ADD COLUMN context_id BIGINT;
-- remove unused -- remove unused
DROP TABLE alf_auth_ext_keys; DROP TABLE alf_auth_ext_keys;
-- remove authority constraint -- remove authority constraint
ALTER TABLE alf_access_control_entry DROP INDEX FKFFF41F99B25A50BF, DROP FOREIGN KEY FKFFF41F99B25A50BF; ALTER TABLE alf_access_control_entry DROP INDEX FKFFF41F99B25A50BF, DROP FOREIGN KEY FKFFF41F99B25A50BF;
-- restructure authority -- restructure authority
ALTER TABLE alf_authority ALTER TABLE alf_authority
DROP PRIMARY KEY, DROP PRIMARY KEY,
ADD COLUMN id BIGINT NOT NULL AUTO_INCREMENT, ADD COLUMN id BIGINT NOT NULL AUTO_INCREMENT,
CHANGE recipient authority VARCHAR(100), CHANGE recipient authority VARCHAR(100),
ADD primary key (id), ADD primary key (id),
ADD UNIQUE (authority); ADD UNIQUE (authority);
-- migrate data - fix up FK refs to authority -- migrate data - fix up FK refs to authority
UPDATE alf_access_control_entry ace UPDATE alf_access_control_entry ace
set auth_id = (select id from alf_authority a where a.authority = ace.authority_id); set auth_id = (select id from alf_authority a where a.authority = ace.authority_id);
-- migrate data - build equivalent ACL entries -- migrate data - build equivalent ACL entries
INSERT INTO alf_acl_member (version, acl_id, ace_id, pos) INSERT INTO alf_acl_member (version, acl_id, ace_id, pos)
select 1, acl_id, id, 0 from alf_access_control_entry; select 1, acl_id, id, 0 from alf_access_control_entry;
-- Create ACE context -- Create ACE context
CREATE TABLE alf_ace_context ( CREATE TABLE alf_ace_context (
id BIGINT NOT NULL AUTO_INCREMENT, id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL, version BIGINT NOT NULL,
class_context VARCHAR(1024), class_context VARCHAR(1024),
property_context VARCHAR(1024), property_context VARCHAR(1024),
kvp_context VARCHAR(1024), kvp_context VARCHAR(1024),
primary key (id) primary key (id)
) type=InnoDB; ) type=InnoDB;
-- Create auth aliases table -- Create auth aliases table
CREATE TABLE alf_authority_alias ( CREATE TABLE alf_authority_alias (
id BIGINT NOT NULL AUTO_INCREMENT, id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL, version BIGINT NOT NULL,
auth_id BIGINT NOT NULL, auth_id BIGINT NOT NULL,
alias_id BIGINT NOT NULL, alias_id BIGINT NOT NULL,
primary key (id), primary key (id),
UNIQUE (auth_id, alias_id) UNIQUE (auth_id, alias_id)
) type=InnoDB; ) type=InnoDB;
CREATE INDEX fk_alf_autha_ali ON alf_authority_alias (alias_id); 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); 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); 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); 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 -- Tidy up unused cols on ace table and add the FK contstraint back
-- finish take out of ACL_ID -- 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 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 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 DROP COLUMN acl_id, DROP COLUMN authority_id;
ALTER TABLE alf_access_control_entry ALTER TABLE alf_access_control_entry
CHANGE auth_id authority_id BIGINT NOT NULL; CHANGE auth_id authority_id BIGINT NOT NULL;
CREATE INDEX fk_alf_ace_auth ON alf_access_control_entry (authority_id); 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); 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); 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); 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); 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); 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 members to point to the first use of an access control entry
UPDATE alf_acl_member mem UPDATE alf_acl_member mem
SET ace_id = (SELECT min(ace2.id) FROM alf_access_control_entry ace1 SET ace_id = (SELECT min(ace2.id) FROM alf_access_control_entry ace1
JOIN alf_access_control_entry ace2 JOIN alf_access_control_entry ace2
ON ace1.permission_id = ace2.permission_id AND ON ace1.permission_id = ace2.permission_id AND
ace1.authority_id = ace2.authority_id AND ace1.authority_id = ace2.authority_id AND
ace1.allowed = ace2.allowed AND ace1.allowed = ace2.allowed AND
ace1.applies = ace2.applies ace1.applies = ace2.applies
WHERE ace1.id = mem.ace_id ); WHERE ace1.id = mem.ace_id );
-- Remove duplicate aces the mysql way (as you can not use the deleted table in the where clause ...) -- 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; 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; 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; DROP TEMPORARY TABLE tmp_to_delete;
-- Add constraint for duplicate acls -- Add constraint for duplicate acls
ALTER TABLE alf_access_control_entry ALTER TABLE alf_access_control_entry
ADD UNIQUE (permission_id, authority_id, allowed, applies, context_id); ADD UNIQUE (permission_id, authority_id, allowed, applies, context_id);
-- --
-- Record script finish -- Record script finish
-- --
DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.2-ACL'; DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.2-ACL';
INSERT INTO alf_applied_patch 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) (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report)
VALUES VALUES
( (
'patch.db-V2.2-ACL', 'Manually executed script upgrade V2.2: Update acl schema', 'patch.db-V2.2-ACL', 'Manually executed script upgrade V2.2: Update acl schema',
0, 84, -1, 85, null, 'UNKOWN', 1, 1, 'Script completed' 0, 84, -1, 85, null, 'UNKOWN', 1, 1, 'Script completed'
); );

View File

@@ -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_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; 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_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; 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 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_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_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_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 -- Record script finish

View File

@@ -79,35 +79,35 @@ CREATE INDEX tidx_tqn_ln ON t_qnames (localname);
-- Populate the table with all known static QNames -- Populate the table with all known static QNames
INSERT INTO t_qnames (qname) INSERT INTO t_qnames (qname)
( (
SELECT type_qname FROM alf_node SELECT DISTINCT type_qname FROM alf_node
); );
INSERT INTO t_qnames (qname) INSERT INTO t_qnames (qname)
( (
SELECT qname FROM alf_node_aspects SELECT DISTINCT qname FROM alf_node_aspects
); );
INSERT INTO t_qnames (qname) INSERT INTO t_qnames (qname)
( (
SELECT qname FROM alf_node_properties SELECT DISTINCT qname FROM alf_node_properties
); );
INSERT INTO t_qnames (qname) INSERT INTO t_qnames (qname)
( (
SELECT name FROM avm_aspects_new SELECT DISTINCT name FROM avm_aspects_new
); );
INSERT INTO t_qnames (qname) 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) INSERT INTO t_qnames (qname)
( (
SELECT qname FROM avm_store_properties SELECT DISTINCT qname FROM avm_store_properties
); );
INSERT INTO t_qnames (qname) 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) 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 -- Extract the namespace and localnames from the QNames
UPDATE t_qnames SET namespace = SUBSTR(SUBSTRING_INDEX(qname, '}', 1), 2); 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 -- 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 DROP PRIMARY KEY; -- (optional)
ALTER TABLE alf_node_aspects ADD COLUMN qname_id BIGINT NULL AFTER node_id; 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 DROP COLUMN qname;
ALTER TABLE alf_node_aspects MODIFY COLUMN qname_id BIGINT NOT NULL AFTER node_id; 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); ALTER TABLE alf_node_aspects ADD PRIMARY KEY (node_id, qname_id);
-- --

View File

@@ -428,6 +428,13 @@ public class AVMServicePermissionsTest extends TestCase
finally finally
{ {
avmService.purgeStore(storeName); 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 finally
{ {
avmService.purgeStore(storeName); 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 finally
{ {
avmService.purgeStore(storeName); 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 finally
{ {
avmService.purgeStore(storeName); avmService.purgeStore(storeName);
avmService.purgeStore(storeName+"-a-");
} }
} }
@@ -1988,6 +2011,7 @@ public class AVMServicePermissionsTest extends TestCase
finally finally
{ {
avmService.purgeStore(storeName); avmService.purgeStore(storeName);
avmService.purgeStore(storeName+"-a-");
} }
} }
@@ -2306,6 +2330,7 @@ public class AVMServicePermissionsTest extends TestCase
finally finally
{ {
avmService.purgeStore(storeName); avmService.purgeStore(storeName);
avmService.purgeStore(storeName+"-a-");
} }
} }
@@ -2383,6 +2408,7 @@ public class AVMServicePermissionsTest extends TestCase
finally finally
{ {
avmService.purgeStore(storeName); avmService.purgeStore(storeName);
avmService.purgeStore(storeName+"-a-");
} }
} }
} }

View File

@@ -771,6 +771,14 @@ public class PropertyValue implements Cloneable, Serializable
return actualType == null ? null : actualType.getOrdinalNumber(); 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) public void setActualType(Integer actualType)
{ {
ValueType type = PropertyValue.valueTypesByOrdinalNumber.get(actualType); ValueType type = PropertyValue.valueTypesByOrdinalNumber.get(actualType);

View File

@@ -200,8 +200,8 @@ public class QNameDAOTest extends TestCase
readyLatch.await(5, TimeUnit.SECONDS); readyLatch.await(5, TimeUnit.SECONDS);
// Let the threads go // Let the threads go
startLatch.countDown(); startLatch.countDown();
// Wait for them all to be done (within limits) // Wait for them all to be done (within limit of 10 seconds per thread)
doneLatch.await(threadCount, TimeUnit.SECONDS); doneLatch.await(threadCount * 10, TimeUnit.SECONDS);
if (doneLatch.getCount() > 0) if (doneLatch.getCount() > 0)
{ {
fail("Still waiting for threads to finish"); fail("Still waiting for threads to finish");

View File

@@ -35,6 +35,8 @@ import org.alfresco.repo.domain.NamespaceEntity;
import org.alfresco.repo.domain.QNameDAO; import org.alfresco.repo.domain.QNameDAO;
import org.alfresco.repo.domain.QNameEntity; import org.alfresco.repo.domain.QNameEntity;
import org.alfresco.service.namespace.QName; 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.Query;
import org.hibernate.Session; import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateCallback;
@@ -48,6 +50,8 @@ import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
*/ */
public class HibernateQNameDAOImpl extends HibernateDaoSupport implements QNameDAO 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_NS_BY_URI = "qname.GetNamespaceByUri";
private static final String QUERY_GET_QNAME_BY_URI_AND_LOCALNAME = "qname.GetQNameByUriAndLocalName"; 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) public NamespaceEntity newNamespaceEntity(String namespaceUri)
{ {
if (logger.isDebugEnabled())
{
logger.debug("Persisting Namespace: " + namespaceUri);
}
NamespaceEntity namespace = new NamespaceEntityImpl(); NamespaceEntity namespace = new NamespaceEntityImpl();
namespace.setUri(namespaceUri); namespace.setUri(namespaceUri);
// Persist // Persist
@@ -186,6 +194,10 @@ public class HibernateQNameDAOImpl extends HibernateDaoSupport implements QNameD
public QNameEntity newQNameEntity(QName qname) public QNameEntity newQNameEntity(QName qname)
{ {
if (logger.isDebugEnabled())
{
logger.debug("Persisting QName: " + qname);
}
final String namespaceUri = qname.getNamespaceURI(); final String namespaceUri = qname.getNamespaceURI();
final String localName = qname.getLocalName(); final String localName = qname.getLocalName();
NamespaceEntity namespace = getNamespaceEntity(namespaceUri); NamespaceEntity namespace = getNamespaceEntity(namespaceUri);

View File

@@ -59,7 +59,7 @@
<version column="version" name="version" type="long" /> <version column="version" name="version" type="long" />
</class> </class>
<query name="qname.GetNamespaceByUri" flush-mode="never" cacheable="false"> <query name="qname.GetNamespaceByUri" cacheable="false">
select select
namespace namespace
from from
@@ -68,7 +68,7 @@
namespace.uri = :namespaceUri namespace.uri = :namespaceUri
</query> </query>
<query name="qname.GetQNameByUriAndLocalName" flush-mode="never" cacheable="false"> <query name="qname.GetQNameByUriAndLocalName" cacheable="false">
select select
qname qname
from from