mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
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:
@@ -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'
|
||||
);
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
||||
--
|
||||
|
Reference in New Issue
Block a user