Derek Hulley 97654618ad Fix for AR-1432: Patches for FK indexes
Fix for AR-1433: Upgrade failures on PostgreSQL
Partial fix for AR-160: Concurrency fix for version counter
Partial fix for AR-1483: Synchronization issues

This is an overhaul of the current state of the upgrade scripts.  All redundant scripts have been ripped out and replaced
with fresh 2.1 scripts.  Indexes for FK relationships have been put in place where required.  Several edge cases have been
dealt with including columns being added to two indexes, Sybase not allowing column additions for NOT NULL columns of
certain types, etc.

These changes have been tested for 1.4.0 -> 2.0 -> 2.1 on
MySQL
Oracle
Sybase
PostgreSQL

Found a bug in the VersionCounter Hibernate classes where the optimistic version support was not implemented.



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6216 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2007-07-11 23:38:59 +00:00

115 lines
5.7 KiB
SQL

--
-- Title: Ensure that all Foreign Key indexes are present
-- Database: PostgreSQL
-- Since: V2.1 Schema 64
-- Author: Derek Hulley
--
-- Please contact support@alfresco.com if you need assistance with the upgrade.
--
-- All dialects, with the exception of MySQL, will not have FK-related indexes
-- automatically generated by Hibernate. Quite a few indexes here will be present
-- in the database already, but the list depends on the particular upgrade path
-- taken. In order to reduce the number of scripts that need to be run to cater for
-- these diverse scenarios, this script just attempts to create each and every
-- index that would be created for a new install. The statements are optional, apart
-- from the control statements to check for the presence of the required tables.
-- JBPM
-- JBPM tables have explicit indexes where required. Adding FK indexes here
-- leads to duplication, and on MySQL, this is exactly what happens.
-- Repository
SELECT COUNT(*) FROM alf_access_control_entry;
CREATE INDEX FKFFF41F9960601995 ON alf_access_control_entry (permission_id);(optional)
CREATE INDEX FKFFF41F99B25A50BF ON alf_access_control_entry (authority_id);(optional)
CREATE INDEX FKFFF41F99B9553F6C ON alf_access_control_entry (acl_id);(optional)
SELECT COUNT(*) FROM alf_auth_ext_keys;
CREATE INDEX FK8A749A657B7FDE43 ON alf_auth_ext_keys (id);(optional)
SELECT COUNT(*) FROM alf_child_assoc;
CREATE INDEX FKFFC5468E74173FF4 ON alf_child_assoc (child_node_id);(optional)
CREATE INDEX FKFFC5468E8E50E582 ON alf_child_assoc (parent_node_id);(optional)
SELECT COUNT(*) FROM alf_node;
CREATE INDEX FK60EFB626B9553F6C ON alf_node (acl_id);(optional)
CREATE INDEX FK60EFB626D24ADD25 ON alf_node (protocol, identifier);(optional)
SELECT COUNT(*) FROM alf_node_properties;
CREATE INDEX FK7D4CF8EC7F2C8017 ON alf_node_properties (node_id);(optional)
CREATE INDEX FK7D4CF8EC40E780DC ON alf_node_properties (attribute_value);(optional)
SELECT COUNT(*) FROM alf_node_aspects;
CREATE INDEX FKD654E027F2C8017 ON alf_node_aspects (node_id);(optional)
SELECT COUNT(*) FROM alf_node_assoc;
CREATE INDEX FKE1A550BCB69C43F3 ON alf_node_assoc (source_node_id);(optional)
CREATE INDEX FKE1A550BCA8FC7769 ON alf_node_assoc (target_node_id);(optional)
SELECT COUNT(*) FROM alf_node_status;
CREATE INDEX FK71C2002B7F2C8017 ON alf_node_status (node_id);(optional)
SELECT COUNT(*) FROM alf_store;
CREATE INDEX FKBD4FF53D22DBA5BA ON alf_store (root_node_id);(optional)
--
-- Transaction tables
--
CREATE INDEX FK71C2002B9E57C13D ON alf_node_status (transaction_id);(optional)
SELECT COUNT(*) FROM alf_transaction;
CREATE INDEX FKB8761A3A9AE340B7 ON alf_transaction (server_id);(optional)
--
-- Audit tables
--
SELECT COUNT(*) FROM alf_audit_fact;
CREATE INDEX FKEAD1817484342E39 ON alf_audit_fact (audit_date_id);(optional)
CREATE INDEX FKEAD18174A0F9B8D9 ON alf_audit_fact (audit_source_id);(optional)
CREATE INDEX FKEAD18174F524CFD7 ON alf_audit_fact (audit_conf_id);(optional)
--
-- Attribute tables
--
SELECT COUNT(*) FROM alf_attributes;
CREATE INDEX fk_attr_n_acl ON alf_attributes (acl_id);(optional)
SELECT COUNT(*) FROM alf_global_attributes;
CREATE INDEX FK64D0B9CF69B9F16A ON alf_global_attributes (attribute);(optional)
SELECT COUNT(*) FROM alf_list_attribute_entries;
CREATE INDEX FKC7D52FB0ACD8822C ON alf_list_attribute_entries (list_id);(optional)
CREATE INDEX FKC7D52FB02C5AB86C ON alf_list_attribute_entries (attribute_id);(optional)
SELECT COUNT(*) FROM alf_map_attribute_entries;
CREATE INDEX FK335CAE262C5AB86C ON alf_map_attribute_entries (attribute_id);(optional)
CREATE INDEX FK335CAE26AEAC208C ON alf_map_attribute_entries (map_id);(optional)
-- AVM
SELECT COUNT(*) FROM avm_aspects;
CREATE INDEX fk_avm_asp_node ON avm_aspects (node_id);(optional)
SELECT COUNT(*) FROM avm_aspects_new;
CREATE INDEX FKD3FD9F95EDCD4A96 ON avm_aspects_new (id);(optional)
SELECT COUNT(*) FROM avm_child_entries;
CREATE INDEX fk_avm_ce_child ON avm_child_entries (child_id);(optional)
CREATE INDEX fk_avm_ce_parent ON avm_child_entries (parent_id);(optional)
SELECT COUNT(*) FROM avm_history_links;
CREATE INDEX fk_avm_hl_desc ON avm_history_links (descendent);(optional)
CREATE INDEX fk_avm_hl_ancestor ON avm_history_links (ancestor);(optional)
SELECT COUNT(*) FROM avm_merge_links;
CREATE INDEX fk_avm_ml_from ON avm_merge_links (mfrom);(optional)
CREATE INDEX fk_avm_ml_to ON avm_merge_links (mto);(optional)
SELECT COUNT(*) FROM avm_node_properties_new;
CREATE INDEX FK44A37C8A6BD529F3 ON avm_node_properties_new (node_id);(optional)
CREATE INDEX fk_avm_np_node ON avm_node_properties (node_id);(optional)
SELECT COUNT(*) FROM avm_nodes;
CREATE INDEX fk_avm_n_acl ON avm_nodes (acl_id);(optional)
CREATE INDEX fk_avm_n_store ON avm_nodes (store_new_id);(optional)
SELECT COUNT(*) FROM avm_store_properties;
CREATE INDEX fk_avm_sp_store ON avm_store_properties (avm_store_id);(optional)
SELECT COUNT(*) FROM avm_stores;
CREATE INDEX fk_avm_s_root ON avm_stores (current_root_id);(optional)
SELECT COUNT(*) FROM avm_version_roots;
CREATE INDEX fk_avm_vr_store ON avm_version_roots (avm_store_id);(optional)
CREATE INDEX fk_avm_vr_root ON avm_version_roots (root_id);(optional)
--
-- Record script finish
--
DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-FKIndexes';
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.1-FKIndexes', 'Manually executed script upgrade V2.1: Ensure existence of V2.1 FK indexes',
0, 63, -1, 64, null, 'UNKOWN', TRUE, TRUE, 'Script completed'
);