From 97654618ad2f677f619e97954cc0c29be57342d4 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Wed, 11 Jul 2007 23:38:59 +0000 Subject: [PATCH] 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 --- config/alfresco/bootstrap-context.xml | 10 +- .../AlfrescoPostCreate-2.0-FKIndexes.sql | 53 -------- .../AlfrescoPostCreate-2.0-FKIndexes.sql | 10 -- .../AlfrescoPostCreate-2.1-FKIndexes.sql | 70 +++++++++++ .../AlfrescoPostCreate-2.1-FKIndexes.sql | 14 +++ ...escoSchemaUpdate-1.4-PostgresFKIndexes.sql | 15 --- ...escoSchemaUpdate-1.4-PostgresFKIndexes.sql | 42 ------- .../AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql | 35 ------ ...frescoSchemaUpdate-2.0-ExplicitIndexes.sql | 60 --------- .../AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql | 22 ---- .../AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql | 35 ------ ...frescoSchemaUpdate-2.0-ExplicitIndexes.sql | 66 ---------- ...frescoSchemaUpdate-2.1-ExplicitIndexes.sql | 113 +++++++++++++++++ .../AlfrescoSchemaUpdate-2.1-FKIndexes.sql | 115 ++++++++++++++++++ ...lfrescoSchemaUpdate-2.1-NotNullColumns.sql | 21 ++++ ...lfrescoSchemaUpdate-2.1-VersionColumns.sql | 7 +- .../AlfrescoSchemaUpdate-2.1-FKIndexes.sql | 24 ++++ ...frescoSchemaUpdate-2.1-ExplicitIndexes.sql | 113 +++++++++++++++++ .../AlfrescoSchemaUpdate-2.1-FKIndexes.sql | 115 ++++++++++++++++++ .../AlfrescoSchemaUpdate-2.1-JBPMData.sql | 29 +++++ ...lfrescoSchemaUpdate-2.1-JBPMProcessKey.sql | 22 ++++ ...lfrescoSchemaUpdate-2.1-NotNullColumns.sql | 21 ++++ ...lfrescoSchemaUpdate-2.1-VersionColumns.sql | 33 +++++ .../_pg_keypositions-function.sql | 0 ...lfrescoSchemaUpdate-2.1-NotNullColumns.sql | 53 ++++++++ .../alfresco/patch/patch-services-context.xml | 93 +++++++------- config/alfresco/version.properties | 2 +- .../domain/hibernate/VersionCount.hbm.xml | 6 + .../domain/hibernate/VersionCountImpl.java | 19 ++- 29 files changed, 819 insertions(+), 399 deletions(-) delete mode 100644 config/alfresco/dbscripts/create/2.0/org.hibernate.dialect.Dialect/AlfrescoPostCreate-2.0-FKIndexes.sql delete mode 100644 config/alfresco/dbscripts/create/2.0/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-2.0-FKIndexes.sql create mode 100644 config/alfresco/dbscripts/create/2.1/org.hibernate.dialect.Dialect/AlfrescoPostCreate-2.1-FKIndexes.sql create mode 100644 config/alfresco/dbscripts/create/2.1/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-2.1-FKIndexes.sql delete mode 100644 config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql delete mode 100644 config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql delete mode 100644 config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql delete mode 100644 config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.0-ExplicitIndexes.sql delete mode 100644 config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql delete mode 100644 config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql delete mode 100644 config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.0-ExplicitIndexes.sql create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-ExplicitIndexes.sql create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-ExplicitIndexes.sql create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-JBPMData.sql create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-JBPMProcessKey.sql create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-VersionColumns.sql rename config/alfresco/dbscripts/upgrade/{2.0 => 2.1}/org.hibernate.dialect.PostgreSQLDialect/_pg_keypositions-function.sql (100%) create mode 100644 config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.SybaseDialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml index ef59239827..59fa7e6449 100644 --- a/config/alfresco/bootstrap-context.xml +++ b/config/alfresco/bootstrap-context.xml @@ -35,7 +35,7 @@ - classpath:alfresco/dbscripts/create/2.0/${db.script.dialect}/AlfrescoPostCreate-2.0-FKIndexes.sql + classpath:alfresco/dbscripts/create/2.1/${db.script.dialect}/AlfrescoPostCreate-2.1-FKIndexes.sql @@ -46,15 +46,15 @@ - + - - + + - + diff --git a/config/alfresco/dbscripts/create/2.0/org.hibernate.dialect.Dialect/AlfrescoPostCreate-2.0-FKIndexes.sql b/config/alfresco/dbscripts/create/2.0/org.hibernate.dialect.Dialect/AlfrescoPostCreate-2.0-FKIndexes.sql deleted file mode 100644 index c52d7b15eb..0000000000 --- a/config/alfresco/dbscripts/create/2.0/org.hibernate.dialect.Dialect/AlfrescoPostCreate-2.0-FKIndexes.sql +++ /dev/null @@ -1,53 +0,0 @@ --- --- Title: Post-Create Foreign Key indexes --- Database: Generic --- Since: V2.0 Schema 38 --- Author: Derek Hulley --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- - --- Repository -CREATE INDEX FKFFF41F9960601995 ON alf_access_control_entry (permission_id); -CREATE INDEX FKFFF41F99B25A50BF ON alf_access_control_entry (authority_id); -CREATE INDEX FKFFF41F99B9553F6C ON alf_access_control_entry (acl_id); -CREATE INDEX FK8A749A657B7FDE43 ON alf_auth_ext_keys (id); -CREATE INDEX FKFFC5468E74173FF4 ON alf_child_assoc (child_node_id); -CREATE INDEX FKFFC5468E8E50E582 ON alf_child_assoc (parent_node_id); -CREATE INDEX FK60EFB626B9553F6C ON alf_node (acl_id); -CREATE INDEX FK60EFB626D24ADD25 ON alf_node (protocol, identifier); -CREATE INDEX FK7D4CF8EC7F2C8017 ON alf_node_properties (node_id); -CREATE INDEX FKD654E027F2C8017 ON alf_node_aspects (node_id); -CREATE INDEX FKE1A550BCB69C43F3 ON alf_node_assoc (source_node_id); -CREATE INDEX FKE1A550BCA8FC7769 ON alf_node_assoc (target_node_id); -CREATE INDEX FK71C2002B7F2C8017 ON alf_node_status (node_id); -CREATE INDEX FKBD4FF53D22DBA5BA ON alf_store (root_node_id); - --- --- Transaction tables --- -CREATE INDEX FK71C2002B9E57C13D ON alf_node_status (transaction_id); -CREATE INDEX FKB8761A3A9AE340B7 ON alf_transaction (server_id); - --- --- Audit tables --- -CREATE INDEX FKEAD1817484342E39 ON alf_audit_fact (audit_date_id); -CREATE INDEX FKEAD18174A0F9B8D9 ON alf_audit_fact (audit_source_id); -CREATE INDEX FKEAD18174F524CFD7 ON alf_audit_fact (audit_conf_id); - --- AVM -CREATE INDEX fk_avm_asp_node ON avm_aspects (node_id); -CREATE INDEX fk_avm_ce_child ON avm_child_entries (child_id); -CREATE INDEX fk_avm_ce_parent ON avm_child_entries (parent_id); -CREATE INDEX fk_avm_hl_desc ON avm_history_links (descendent); -CREATE INDEX fk_avm_hl_ancestor ON avm_history_links (ancestor); -CREATE INDEX fk_avm_ml_from ON avm_merge_links (mfrom); -CREATE INDEX fk_avm_ml_to ON avm_merge_links (mto); -CREATE INDEX fk_avm_np_node ON avm_node_properties (node_id); -CREATE INDEX fk_avm_n_acl ON avm_nodes (acl_id); -CREATE INDEX fk_avm_n_store ON avm_nodes (store_new_id); -CREATE INDEX fk_avm_sp_store ON avm_store_properties (avm_store_id); -CREATE INDEX fk_avm_s_root ON avm_stores (current_root_id); -CREATE INDEX fk_avm_vr_store ON avm_version_roots (avm_store_id); -CREATE INDEX fk_avm_vr_root ON avm_version_roots (root_id); diff --git a/config/alfresco/dbscripts/create/2.0/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-2.0-FKIndexes.sql b/config/alfresco/dbscripts/create/2.0/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-2.0-FKIndexes.sql deleted file mode 100644 index 674078042b..0000000000 --- a/config/alfresco/dbscripts/create/2.0/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-2.0-FKIndexes.sql +++ /dev/null @@ -1,10 +0,0 @@ --- --- Title: Post-Create AVM Foreign Key indexes --- Database: MySQL --- Since: V2.0 Schema 38 --- Author: Derek Hulley --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- - --- The MySQL dialects apply the FK indexes by default diff --git a/config/alfresco/dbscripts/create/2.1/org.hibernate.dialect.Dialect/AlfrescoPostCreate-2.1-FKIndexes.sql b/config/alfresco/dbscripts/create/2.1/org.hibernate.dialect.Dialect/AlfrescoPostCreate-2.1-FKIndexes.sql new file mode 100644 index 0000000000..c15a98afb6 --- /dev/null +++ b/config/alfresco/dbscripts/create/2.1/org.hibernate.dialect.Dialect/AlfrescoPostCreate-2.1-FKIndexes.sql @@ -0,0 +1,70 @@ +-- +-- Title: Post-Create Foreign Key indexes +-- Database: Generic +-- Since: V2.0 Schema 63 +-- Author: Derek Hulley +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- + +-- JBPM +-- JBPM tables have explicit indexes where required. Adding FK indexes here +-- leads to duplication, and on MySQL, this is exactly what happens. + +-- Repository +CREATE INDEX FKFFF41F9960601995 ON alf_access_control_entry (permission_id); +CREATE INDEX FKFFF41F99B25A50BF ON alf_access_control_entry (authority_id); +CREATE INDEX FKFFF41F99B9553F6C ON alf_access_control_entry (acl_id); +CREATE INDEX FK8A749A657B7FDE43 ON alf_auth_ext_keys (id); +CREATE INDEX FKFFC5468E74173FF4 ON alf_child_assoc (child_node_id); +CREATE INDEX FKFFC5468E8E50E582 ON alf_child_assoc (parent_node_id); +CREATE INDEX FK60EFB626B9553F6C ON alf_node (acl_id); +CREATE INDEX FK60EFB626D24ADD25 ON alf_node (protocol, identifier); +CREATE INDEX FK7D4CF8EC7F2C8017 ON alf_node_properties (node_id); +CREATE INDEX FK7D4CF8EC40E780DC ON alf_node_properties (attribute_value); +CREATE INDEX FKD654E027F2C8017 ON alf_node_aspects (node_id); +CREATE INDEX FKE1A550BCB69C43F3 ON alf_node_assoc (source_node_id); +CREATE INDEX FKE1A550BCA8FC7769 ON alf_node_assoc (target_node_id); +CREATE INDEX FK71C2002B7F2C8017 ON alf_node_status (node_id); +CREATE INDEX FKBD4FF53D22DBA5BA ON alf_store (root_node_id); + +-- +-- Transaction tables +-- +CREATE INDEX FK71C2002B9E57C13D ON alf_node_status (transaction_id); +CREATE INDEX FKB8761A3A9AE340B7 ON alf_transaction (server_id); + +-- +-- Audit tables +-- +CREATE INDEX FKEAD1817484342E39 ON alf_audit_fact (audit_date_id); +CREATE INDEX FKEAD18174A0F9B8D9 ON alf_audit_fact (audit_source_id); +CREATE INDEX FKEAD18174F524CFD7 ON alf_audit_fact (audit_conf_id); + +-- +-- Attribute tables +-- +CREATE INDEX fk_attr_n_acl ON alf_attributes (acl_id); +--CREATE INDEX FK64D0B9CF69B9F16A ON alf_global_attributes (attribute); This is auto-indexed +CREATE INDEX FKC7D52FB0ACD8822C ON alf_list_attribute_entries (list_id); +CREATE INDEX FKC7D52FB02C5AB86C ON alf_list_attribute_entries (attribute_id); +CREATE INDEX FK335CAE262C5AB86C ON alf_map_attribute_entries (attribute_id); +CREATE INDEX FK335CAE26AEAC208C ON alf_map_attribute_entries (map_id); + +-- AVM +CREATE INDEX fk_avm_asp_node ON avm_aspects (node_id); +CREATE INDEX FKD3FD9F95EDCD4A96 ON avm_aspects_new (id); +CREATE INDEX fk_avm_ce_child ON avm_child_entries (child_id); +CREATE INDEX fk_avm_ce_parent ON avm_child_entries (parent_id); +CREATE INDEX fk_avm_hl_desc ON avm_history_links (descendent); +CREATE INDEX fk_avm_hl_ancestor ON avm_history_links (ancestor); +CREATE INDEX fk_avm_ml_from ON avm_merge_links (mfrom); +CREATE INDEX fk_avm_ml_to ON avm_merge_links (mto); +CREATE INDEX FK44A37C8A6BD529F3 ON avm_node_properties_new (node_id); +CREATE INDEX fk_avm_np_node ON avm_node_properties (node_id); +CREATE INDEX fk_avm_n_acl ON avm_nodes (acl_id); +CREATE INDEX fk_avm_n_store ON avm_nodes (store_new_id); +CREATE INDEX fk_avm_sp_store ON avm_store_properties (avm_store_id); +CREATE INDEX fk_avm_s_root ON avm_stores (current_root_id); +CREATE INDEX fk_avm_vr_store ON avm_version_roots (avm_store_id); +CREATE INDEX fk_avm_vr_root ON avm_version_roots (root_id); diff --git a/config/alfresco/dbscripts/create/2.1/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-2.1-FKIndexes.sql b/config/alfresco/dbscripts/create/2.1/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-2.1-FKIndexes.sql new file mode 100644 index 0000000000..c4e01b517a --- /dev/null +++ b/config/alfresco/dbscripts/create/2.1/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-2.1-FKIndexes.sql @@ -0,0 +1,14 @@ +-- +-- Title: Post-Create Foreign Key indexes +-- Database: MySQL +-- Since: V2.0 Schema 63 +-- Author: Derek Hulley +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- + +-- Remove pointless duplicated FK indexes +ALTER TABLE alf_global_attributes DROP INDEX FK64D0B9CF69B9F16A; + + +-- The MySQL dialects apply the FK indexes by default diff --git a/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql b/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql deleted file mode 100644 index 427cee8419..0000000000 --- a/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql +++ /dev/null @@ -1,15 +0,0 @@ --- --- Foreign Key Indexes for PostgreSQL databases. (Generic Schema 1.4) --- - --- --- Record script finish --- -delete from alf_applied_patch where id = 'patch.db-V1.4-PostgresFKIndexes'; -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-V1.4-PostgresFKIndexes', 'Manually execute script AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql', - 21, 24, -1, 25, null, 'UNKOWN', 1, 1, 'Script completed' - ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql b/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql deleted file mode 100644 index 8fbc02d686..0000000000 --- a/config/alfresco/dbscripts/upgrade/1.4/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql +++ /dev/null @@ -1,42 +0,0 @@ --- --- Foreign Key Indexes for PostgreSQL databases. (PostgreSQL Schema 1.4) --- -CREATE INDEX FKFFF41F9960601995 ON alf_access_control_entry (permission_id); -CREATE INDEX FKFFF41F99B25A50BF ON alf_access_control_entry (authority_id); -CREATE INDEX FKFFF41F99B9553F6C ON alf_access_control_entry (acl_id); -CREATE INDEX FK8A749A657B7FDE43 ON alf_auth_ext_keys (id); -CREATE INDEX FKFFC5468E74173FF4 ON alf_child_assoc (child_node_id); -CREATE INDEX FKFFC5468E8E50E582 ON alf_child_assoc (parent_node_id); -CREATE INDEX FK60EFB626B9553F6C ON alf_node (acl_id); -CREATE INDEX FK60EFB626D24ADD25 ON alf_node (protocol, identifier); -CREATE INDEX FK7D4CF8EC7F2C8017 ON alf_node_properties (node_id); -CREATE INDEX FKD654E027F2C8017 ON alf_node_aspects (node_id); -CREATE INDEX FKE1A550BCB69C43F3 ON alf_node_assoc (source_node_id); -CREATE INDEX FKE1A550BCA8FC7769 ON alf_node_assoc (target_node_id); -CREATE INDEX FK71C2002B7F2C8017 ON alf_node_status (node_id); -CREATE INDEX FKBD4FF53D22DBA5BA ON alf_store (root_node_id); - --- --- Transaction tables --- -CREATE INDEX FK71C2002B9E57C13D ON alf_node_status (transaction_id); -CREATE INDEX FKB8761A3A9AE340B7 ON alf_transaction (server_id); - --- --- New audit tables --- -CREATE INDEX FKEAD1817484342E39 ON alf_audit_fact (audit_date_id); -CREATE INDEX FKEAD18174A0F9B8D9 ON alf_audit_fact (audit_source_id); -CREATE INDEX FKEAD18174F524CFD7 ON alf_audit_fact (audit_conf_id); - --- --- Record script finish --- -delete from alf_applied_patch where id = 'patch.db-V1.4-PostgresFKIndexes'; -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-V1.4-PostgresFKIndexes', 'Manually execute script AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql', - 21, 24, -1, 25, null, 'UNKOWN', TRUE, TRUE, 'Script completed' - ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql b/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql deleted file mode 100644 index b6a5946b5b..0000000000 --- a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql +++ /dev/null @@ -1,35 +0,0 @@ --- --- Title: AVM Foreign Key indexes --- Database: Generic --- Since: V2.0 Schema 38 --- Author: Derek Hulley --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- - -CREATE INDEX fk_avm_asp_node ON avm_aspects (node_id); -CREATE INDEX fk_avm_ce_child ON avm_child_entries (child_id); -CREATE INDEX fk_avm_ce_parent ON avm_child_entries (parent_id); -CREATE INDEX fk_avm_hl_desc ON avm_history_links (descendent); -CREATE INDEX fk_avm_hl_ancestor ON avm_history_links (ancestor); -CREATE INDEX fk_avm_ml_from ON avm_merge_links (mfrom); -CREATE INDEX fk_avm_ml_to ON avm_merge_links (mto); -CREATE INDEX fk_avm_np_node ON avm_node_properties (node_id); -CREATE INDEX fk_avm_n_acl ON avm_nodes (acl_id); -CREATE INDEX fk_avm_n_store ON avm_nodes (store_new_id); -CREATE INDEX fk_avm_sp_store ON avm_store_properties (avm_store_id); -CREATE INDEX fk_avm_s_root ON avm_stores (current_root_id); -CREATE INDEX fk_avm_vr_store ON avm_version_roots (avm_store_id); -CREATE INDEX fk_avm_vr_root ON avm_version_roots (root_id); - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.0-AVMFKIndexes'; -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.0-AVMFKIndexes', 'Manually executed script upgrade V2.0: AVM Foreign Key Indexes', - 0, 37, -1, 38, null, 'UNKOWN', 1, 1, 'Script completed' - ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.0-ExplicitIndexes.sql b/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.0-ExplicitIndexes.sql deleted file mode 100644 index 9911294d56..0000000000 --- a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.0-ExplicitIndexes.sql +++ /dev/null @@ -1,60 +0,0 @@ --- --- Title: Explicit indexes --- Database: Generic --- Since: V2.0 Schema 38 --- Author: Derek Hulley --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- --- None of the Hibernate dialects will generate statements for explicit indexes --- when creating new tables for an existing database. We need to check that the --- indexes for the AUDIT, JBPM and AVM tables are present. --- --- This script must be executed after Hibernate-generated scripts have been executed. --- Where the updates are being applied long after the tables may have been created, --- the index creation statements are optional. The the select statements ensure that --- the script is only executed once the appropriate tables have been created. --- - --- JBPM tables -SELECT COUNT(*) FROM JBPM_POOLEDACTOR; -CREATE INDEX IDX_PLDACTR_ACTID ON JBPM_POOLEDACTOR (ACTORID_);(optional) -SELECT COUNT(*) FROM JBPM_TASKINSTANCE; -CREATE INDEX IDX_TASK_ACTORID ON JBPM_TASKINSTANCE (ACTORID_);(optional) - --- Audit tables -SELECT COUNT(*) FROM alf_audit_date; -CREATE INDEX adt_q_idx ON alf_audit_date (quarter);(optional) -CREATE INDEX adt_dow_idx ON alf_audit_date (day_of_week);(optional) -CREATE INDEX adt_date_idx ON alf_audit_date (date_only);(optional) -CREATE INDEX adt_y_idx ON alf_audit_date (year);(optional) -CREATE INDEX adt_hy_idx ON alf_audit_date (halfYear);(optional) -CREATE INDEX adt_wom_idx ON alf_audit_date (week_of_month);(optional) -CREATE INDEX adt_dom_idx ON alf_audit_date (day_of_month);(optional) -CREATE INDEX adt_m_idx ON alf_audit_date (month);(optional) -CREATE INDEX adt_doy_idx ON alf_audit_date (day_of_year);(optional) -CREATE INDEX adt_woy_idx ON alf_audit_date (week_of_year);(optional) -SELECT COUNT(*) FROM alf_audit_fact; -CREATE INDEX adt_user_idx ON alf_audit_fact (user_id);(optional) -CREATE INDEX adt_store_idx ON alf_audit_fact (store_protocol, store_id, node_uuid);(optional) -SELECT COUNT(*) FROM alf_audit_source; -CREATE INDEX app_source_met_idx ON alf_audit_source (method);(optional) -CREATE INDEX app_source_app_idx ON alf_audit_source (application);(optional) -CREATE INDEX app_source_ser_idx ON alf_audit_source (service);(optional) - --- AVM tables: These are new so are not optional -CREATE INDEX idx_avm_np_name ON avm_node_properties (qname); -CREATE INDEX idx_avm_sp_name ON avm_store_properties (qname); -CREATE INDEX idx_avm_vr_version ON avm_version_roots (version_id); - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.0-ExplicitIndexes'; -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.0-ExplicitIndexes', 'Manually executed script upgrade V2.0: Explicit Indexes', - 0, 37, -1, 38, null, 'UNKOWN', 1, 1, 'Script completed' - ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql b/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql deleted file mode 100644 index 6a6246717f..0000000000 --- a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql +++ /dev/null @@ -1,22 +0,0 @@ --- --- Title: AVM Foreign Key indexes --- Database: MySQL --- Since: V2.0 Schema 38 --- Author: Derek Hulley --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- - --- The MySQL dialects apply the FK indexes by default - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.0-AVMFKIndexes'; -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.0-AVMFKIndexes', 'Manually executed script upgrade V2.0: AVM Foreign Key Indexes', - 0, 37, -1, 38, now(), 'UNKOWN', 1, 1, 'Script completed' - ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql b/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql deleted file mode 100644 index 3985a05789..0000000000 --- a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql +++ /dev/null @@ -1,35 +0,0 @@ --- --- Title: AVM Foreign Key indexes --- Database: PostgreSQL --- Since: V2.0 Schema 38 --- Author: Derek Hulley --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- - -CREATE INDEX fk_avm_asp_node ON avm_aspects (node_id); -CREATE INDEX fk_avm_ce_child ON avm_child_entries (child_id); -CREATE INDEX fk_avm_ce_parent ON avm_child_entries (parent_id); -CREATE INDEX fk_avm_hl_desc ON avm_history_links (descendent); -CREATE INDEX fk_avm_hl_ancestor ON avm_history_links (ancestor); -CREATE INDEX fk_avm_ml_from ON avm_merge_links (mfrom); -CREATE INDEX fk_avm_ml_to ON avm_merge_links (mto); -CREATE INDEX fk_avm_np_node ON avm_node_properties (node_id); -CREATE INDEX fk_avm_n_acl ON avm_nodes (acl_id); -CREATE INDEX fk_avm_n_store ON avm_nodes (store_new_id); -CREATE INDEX fk_avm_sp_store ON avm_store_properties (avm_store_id); -CREATE INDEX fk_avm_s_root ON avm_stores (current_root_id); -CREATE INDEX fk_avm_vr_store ON avm_version_roots (avm_store_id); -CREATE INDEX fk_avm_vr_root ON avm_version_roots (root_id); - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.0-AVMFKIndexes'; -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.0-AVMFKIndexes', 'Manually executed script upgrade V2.0: AVM Foreign Key Indexes', - 0, 37, -1, 38, null, 'UNKOWN', TRUE, TRUE, 'Script completed' - ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.0-ExplicitIndexes.sql b/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.0-ExplicitIndexes.sql deleted file mode 100644 index c610b0f361..0000000000 --- a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.0-ExplicitIndexes.sql +++ /dev/null @@ -1,66 +0,0 @@ --- --- Title: Explicit indexes --- Database: PostgreSQL --- Since: V2.0 Schema 38 --- Author: Derek Hulley --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- --- PostgreSQL cannot handle optional statements (statements that may fail) in the --- transaction. --- - --- JBPM tables -DROP INDEX IF EXISTS IDX_PLDACTR_ACTID; -CREATE INDEX IDX_PLDACTR_ACTID ON JBPM_POOLEDACTOR (ACTORID_); -DROP INDEX IF EXISTS IDX_TASK_ACTORID; -CREATE INDEX IDX_TASK_ACTORID ON JBPM_TASKINSTANCE (ACTORID_); - --- Audit tables -DROP INDEX IF EXISTS adt_q_idx; -CREATE INDEX adt_q_idx ON alf_audit_date (quarter); -DROP INDEX IF EXISTS adt_dow_idx; -CREATE INDEX adt_dow_idx ON alf_audit_date (day_of_week); -DROP INDEX IF EXISTS adt_date_idx; -CREATE INDEX adt_date_idx ON alf_audit_date (date_only); -DROP INDEX IF EXISTS adt_y_idx; -CREATE INDEX adt_y_idx ON alf_audit_date (year); -DROP INDEX IF EXISTS adt_hy_idx; -CREATE INDEX adt_hy_idx ON alf_audit_date (halfYear); -DROP INDEX IF EXISTS adt_wom_idx; -CREATE INDEX adt_wom_idx ON alf_audit_date (week_of_month); -DROP INDEX IF EXISTS adt_dom_idx; -CREATE INDEX adt_dom_idx ON alf_audit_date (day_of_month); -DROP INDEX IF EXISTS adt_m_idx; -CREATE INDEX adt_m_idx ON alf_audit_date (month); -DROP INDEX IF EXISTS adt_doy_idx; -CREATE INDEX adt_doy_idx ON alf_audit_date (day_of_year); -DROP INDEX IF EXISTS adt_woy_idx; -CREATE INDEX adt_woy_idx ON alf_audit_date (week_of_year); -DROP INDEX IF EXISTS adt_user_idx; -CREATE INDEX adt_user_idx ON alf_audit_fact (user_id); -DROP INDEX IF EXISTS adt_store_idx; -CREATE INDEX adt_store_idx ON alf_audit_fact (store_protocol, store_id, node_uuid); -DROP INDEX IF EXISTS app_source_met_idx; -CREATE INDEX app_source_met_idx ON alf_audit_source (method); -DROP INDEX IF EXISTS app_source_app_idx; -CREATE INDEX app_source_app_idx ON alf_audit_source (application); -DROP INDEX IF EXISTS app_source_ser_idx; -CREATE INDEX app_source_ser_idx ON alf_audit_source (service); - --- AVM tables: These are new so are not optional -CREATE INDEX idx_avm_np_name ON avm_node_properties (qname); -CREATE INDEX idx_avm_sp_name ON avm_store_properties (qname); -CREATE INDEX idx_avm_vr_version ON avm_version_roots (version_id); - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.0-ExplicitIndexes'; -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.0-ExplicitIndexes', 'Manually executed script upgrade V2.0: Explicit Indexes', - 0, 37, -1, 38, null, 'UNKOWN', TRUE, TRUE, 'Script completed' - ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-ExplicitIndexes.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-ExplicitIndexes.sql new file mode 100644 index 0000000000..ea97c3ddd8 --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-ExplicitIndexes.sql @@ -0,0 +1,113 @@ +-- +-- Title: Ensure that all expicit indexes are present +-- Database: Generic +-- Since: V2.1 Schema 64 +-- Author: Derek Hulley +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- +-- During an upgrade, explicit indexes are not added. This script ensures that +-- all explicit indexes that would be available after a clean boot are also +-- available for an upgrade. + +-- JBPM +SELECT COUNT(*) FROM JBPM_ACTION; +CREATE INDEX IDX_ACTION_EVENT ON JBPM_ACTION (EVENT_);(optional) +CREATE INDEX IDX_ACTION_ACTNDL ON JBPM_ACTION (ACTIONDELEGATION_);(optional) +CREATE INDEX IDX_ACTION_PROCDF ON JBPM_ACTION (PROCESSDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_COMMENT; +CREATE INDEX IDX_COMMENT_TOKEN ON JBPM_COMMENT (TOKEN_);(optional) +CREATE INDEX IDX_COMMENT_TSK ON JBPM_COMMENT (TASKINSTANCE_);(optional) +SELECT COUNT(*) FROM JBPM_DELEGATION; +CREATE INDEX IDX_DELEG_PRCD ON JBPM_DELEGATION (PROCESSDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_JOB; +CREATE INDEX IDX_JOB_TSKINST ON JBPM_JOB (TASKINSTANCE_);(optional) +CREATE INDEX IDX_JOB_PRINST ON JBPM_JOB (PROCESSINSTANCE_);(optional) +CREATE INDEX IDX_JOB_TOKEN ON JBPM_JOB (TOKEN_);(optional) +SELECT COUNT(*) FROM JBPM_MODULEDEFINITION; +CREATE INDEX IDX_MODDEF_PROCDF ON JBPM_MODULEDEFINITION (PROCESSDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_MODULEINSTANCE; +CREATE INDEX IDX_MODINST_PRINST ON JBPM_MODULEINSTANCE (PROCESSINSTANCE_);(optional) +SELECT COUNT(*) FROM JBPM_NODE; +CREATE INDEX IDX_PSTATE_SBPRCDEF ON JBPM_NODE (SUBPROCESSDEFINITION_);(optional) +CREATE INDEX IDX_NODE_SUPRSTATE ON JBPM_NODE (SUPERSTATE_);(optional) +CREATE INDEX IDX_NODE_PROCDEF ON JBPM_NODE (PROCESSDEFINITION_);(optional) +CREATE INDEX IDX_NODE_ACTION ON JBPM_NODE (ACTION_);(optional) +SELECT COUNT(*) FROM JBPM_POOLEDACTOR; +CREATE INDEX IDX_PLDACTR_ACTID ON JBPM_POOLEDACTOR (ACTORID_);(optional) +CREATE INDEX IDX_TSKINST_SWLANE ON JBPM_POOLEDACTOR (SWIMLANEINSTANCE_);(optional) +SELECT COUNT(*) FROM JBPM_PROCESSDEFINITION; +CREATE INDEX IDX_PROCDEF_STRTST ON JBPM_PROCESSDEFINITION (STARTSTATE_);(optional) +SELECT COUNT(*) FROM JBPM_PROCESSINSTANCE; +CREATE INDEX IDX_PROCIN_ROOTTK ON JBPM_PROCESSINSTANCE (ROOTTOKEN_);(optional) +CREATE INDEX IDX_PROCIN_SPROCTK ON JBPM_PROCESSINSTANCE (SUPERPROCESSTOKEN_);(optional) +CREATE INDEX IDX_PROCIN_PROCDEF ON JBPM_PROCESSINSTANCE (PROCESSDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_RUNTIMEACTION; +CREATE INDEX IDX_RTACTN_PRCINST ON JBPM_RUNTIMEACTION (PROCESSINSTANCE_);(optional) +CREATE INDEX IDX_RTACTN_ACTION ON JBPM_RUNTIMEACTION (ACTION_);(optional) +SELECT COUNT(*) FROM JBPM_SWIMLANEINSTANCE; +CREATE INDEX IDX_SWIMLINST_SL ON JBPM_SWIMLANEINSTANCE (SWIMLANE_);(optional) +SELECT COUNT(*) FROM JBPM_TASK; +CREATE INDEX IDX_TASK_TSKNODE ON JBPM_TASK (TASKNODE_);(optional) +CREATE INDEX IDX_TASK_PROCDEF ON JBPM_TASK (PROCESSDEFINITION_);(optional) +CREATE INDEX IDX_TASK_TASKMGTDF ON JBPM_TASK (TASKMGMTDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_TASKINSTANCE; +CREATE INDEX IDX_TASKINST_TOKN ON JBPM_TASKINSTANCE (TOKEN_);(optional) +CREATE INDEX IDX_TASKINST_TSK ON JBPM_TASKINSTANCE (TASK_, PROCINST_);(optional) +CREATE INDEX IDX_TSKINST_TMINST ON JBPM_TASKINSTANCE (TASKMGMTINSTANCE_);(optional) +CREATE INDEX IDX_TSKINST_SLINST ON JBPM_TASKINSTANCE (SWIMLANINSTANCE_);(optional) +CREATE INDEX IDX_TASK_ACTORID ON JBPM_TASKINSTANCE (ACTORID_);(optional) +SELECT COUNT(*) FROM JBPM_TOKEN; +CREATE INDEX IDX_TOKEN_PROCIN ON JBPM_TOKEN (PROCESSINSTANCE_);(optional) +CREATE INDEX IDX_TOKEN_SUBPI ON JBPM_TOKEN (SUBPROCESSINSTANCE_);(optional) +CREATE INDEX IDX_TOKEN_NODE ON JBPM_TOKEN (NODE_);(optional) +CREATE INDEX IDX_TOKEN_PARENT ON JBPM_TOKEN (PARENT_);(optional) +SELECT COUNT(*) FROM JBPM_TOKENVARIABLEMAP; +CREATE INDEX IDX_TKVARMAP_CTXT ON JBPM_TOKENVARIABLEMAP (CONTEXTINSTANCE_);(optional) +CREATE INDEX IDX_TKVVARMP_TOKEN ON JBPM_TOKENVARIABLEMAP (TOKEN_);(optional) +SELECT COUNT(*) FROM JBPM_TRANSITION; +CREATE INDEX IDX_TRANSIT_TO ON JBPM_TRANSITION (TO_);(optional) +CREATE INDEX IDX_TRANSIT_FROM ON JBPM_TRANSITION (FROM_);(optional) +CREATE INDEX IDX_TRANS_PROCDEF ON JBPM_TRANSITION (PROCESSDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_VARIABLEINSTANCE; +CREATE INDEX IDX_VARINST_TKVARMP ON JBPM_VARIABLEINSTANCE (TOKENVARIABLEMAP_);(optional) +CREATE INDEX IDX_VARINST_PRCINS ON JBPM_VARIABLEINSTANCE (PROCESSINSTANCE_);(optional) +CREATE INDEX IDX_VARINST_TK ON JBPM_VARIABLEINSTANCE (TOKEN_);(optional) + +SELECT COUNT(*) FROM alf_audit_date; +CREATE INDEX adt_q_idx ON alf_audit_date (quarter);(optional) +CREATE INDEX adt_dow_idx ON alf_audit_date (day_of_week);(optional) +CREATE INDEX adt_date_idx ON alf_audit_date (date_only);(optional) +CREATE INDEX adt_y_idx ON alf_audit_date (year);(optional) +CREATE INDEX adt_hy_idx ON alf_audit_date (halfYear);(optional) +CREATE INDEX adt_wom_idx ON alf_audit_date (week_of_month);(optional) +CREATE INDEX adt_dom_idx ON alf_audit_date (day_of_month);(optional) +CREATE INDEX adt_m_idx ON alf_audit_date (month);(optional) +CREATE INDEX adt_doy_idx ON alf_audit_date (day_of_year);(optional) +CREATE INDEX adt_woy_idx ON alf_audit_date (week_of_year);(optional) +SELECT COUNT(*) FROM alf_audit_fact; +CREATE INDEX adt_user_idx ON alf_audit_fact (user_id);(optional) +CREATE INDEX adt_store_idx ON alf_audit_fact (store_protocol, store_id, node_uuid);(optional) +SELECT COUNT(*) FROM alf_audit_source; +CREATE INDEX app_source_met_idx ON alf_audit_source (method);(optional) +CREATE INDEX app_source_app_idx ON alf_audit_source (application);(optional) +CREATE INDEX app_source_ser_idx ON alf_audit_source (service);(optional) + +SELECT COUNT(*) FROM avm_node_properties; +CREATE INDEX idx_avm_np_name ON avm_node_properties (qname);(optional) +SELECT COUNT(*) FROM avm_store_properties; +CREATE INDEX idx_avm_sp_name ON avm_store_properties (qname);(optional) +SELECT COUNT(*) FROM avm_version_roots; +CREATE INDEX idx_avm_vr_version ON avm_version_roots (version_id);(optional) + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-ExplicitIndexes'; +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-ExplicitIndexes', 'Manually executed script upgrade V2.1: Ensure existence of V2.1 Explicit indexes', + 0, 63, -1, 64, null, 'UNKOWN', 1, 1, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql new file mode 100644 index 0000000000..51a37927d5 --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql @@ -0,0 +1,115 @@ +-- +-- Title: Ensure that all Foreign Key indexes are present +-- Database: Generic +-- 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', 1, 1, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql new file mode 100644 index 0000000000..031aa1132c --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql @@ -0,0 +1,21 @@ +-- +-- Title: Add text columns that allow null +-- Database: Generic +-- Since: V2.1 Schema 64 +-- Author: Derek Hulley +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- +-- This is a Sybase issue, so nothing is required here. + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-NotNullColumns'; +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-NotNullColumns', 'Manually executed script upgrade V2.1: Add nullable columns', + 0, 63, -1, 64, null, 'UNKOWN', 1, 1, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-VersionColumns.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-VersionColumns.sql index e4b0a3f472..a369bc6030 100644 --- a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-VersionColumns.sql +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-VersionColumns.sql @@ -18,15 +18,16 @@ UPDATE alf_access_control_list SET version = 1 WHERE version IS NULL; UPDATE alf_access_control_entry SET version = 1 WHERE version IS NULL; UPDATE alf_permission SET version = 1 WHERE version IS NULL; UPDATE alf_authority SET version = 1 WHERE version IS NULL; +UPDATE alf_version_count SET version = 1 WHERE version IS NULL; -- -- Record script finish -- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-VersionColumns'; +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-VersionColumns2'; 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-VersionColumns', 'Manually executed script upgrade V2.1: Created initial version number for ADM entities', - 0, 53, -1, 54, null, 'UNKOWN', 1, 1, 'Script completed' + 'patch.db-V2.1-VersionColumns2', 'Manually executed script upgrade V2.1: Created initial version number for ADM entities', + 0, 63, -1, 64, null, 'UNKOWN', 1, 1, 'Script completed' ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql new file mode 100644 index 0000000000..f8f12fc7b0 --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql @@ -0,0 +1,24 @@ +-- +-- Title: Ensure that all Foreign Key indexes are present +-- Database: MySQL InnoDB +-- Since: V2.1 Schema 64 +-- Author: Derek Hulley +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- +-- The MySQL InnoDB Dialect has special support for foreign keys. + +-- Remove pointless duplicated FK indexes +ALTER TABLE alf_global_attributes DROP INDEX FK64D0B9CF69B9F16A; + +-- +-- 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', 1, 1, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-ExplicitIndexes.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-ExplicitIndexes.sql new file mode 100644 index 0000000000..4702c2a70e --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-ExplicitIndexes.sql @@ -0,0 +1,113 @@ +-- +-- Title: Ensure that all expicit 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. +-- +-- During an upgrade, explicit indexes are not added. This script ensures that +-- all explicit indexes that would be available after a clean boot are also +-- available for an upgrade. + +-- JBPM +SELECT COUNT(*) FROM JBPM_ACTION; +CREATE INDEX IDX_ACTION_EVENT ON JBPM_ACTION (EVENT_);(optional) +CREATE INDEX IDX_ACTION_ACTNDL ON JBPM_ACTION (ACTIONDELEGATION_);(optional) +CREATE INDEX IDX_ACTION_PROCDF ON JBPM_ACTION (PROCESSDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_COMMENT; +CREATE INDEX IDX_COMMENT_TOKEN ON JBPM_COMMENT (TOKEN_);(optional) +CREATE INDEX IDX_COMMENT_TSK ON JBPM_COMMENT (TASKINSTANCE_);(optional) +SELECT COUNT(*) FROM JBPM_DELEGATION; +CREATE INDEX IDX_DELEG_PRCD ON JBPM_DELEGATION (PROCESSDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_JOB; +CREATE INDEX IDX_JOB_TSKINST ON JBPM_JOB (TASKINSTANCE_);(optional) +CREATE INDEX IDX_JOB_PRINST ON JBPM_JOB (PROCESSINSTANCE_);(optional) +CREATE INDEX IDX_JOB_TOKEN ON JBPM_JOB (TOKEN_);(optional) +SELECT COUNT(*) FROM JBPM_MODULEDEFINITION; +CREATE INDEX IDX_MODDEF_PROCDF ON JBPM_MODULEDEFINITION (PROCESSDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_MODULEINSTANCE; +CREATE INDEX IDX_MODINST_PRINST ON JBPM_MODULEINSTANCE (PROCESSINSTANCE_);(optional) +SELECT COUNT(*) FROM JBPM_NODE; +CREATE INDEX IDX_PSTATE_SBPRCDEF ON JBPM_NODE (SUBPROCESSDEFINITION_);(optional) +CREATE INDEX IDX_NODE_SUPRSTATE ON JBPM_NODE (SUPERSTATE_);(optional) +CREATE INDEX IDX_NODE_PROCDEF ON JBPM_NODE (PROCESSDEFINITION_);(optional) +CREATE INDEX IDX_NODE_ACTION ON JBPM_NODE (ACTION_);(optional) +SELECT COUNT(*) FROM JBPM_POOLEDACTOR; +CREATE INDEX IDX_PLDACTR_ACTID ON JBPM_POOLEDACTOR (ACTORID_);(optional) +CREATE INDEX IDX_TSKINST_SWLANE ON JBPM_POOLEDACTOR (SWIMLANEINSTANCE_);(optional) +SELECT COUNT(*) FROM JBPM_PROCESSDEFINITION; +CREATE INDEX IDX_PROCDEF_STRTST ON JBPM_PROCESSDEFINITION (STARTSTATE_);(optional) +SELECT COUNT(*) FROM JBPM_PROCESSINSTANCE; +CREATE INDEX IDX_PROCIN_ROOTTK ON JBPM_PROCESSINSTANCE (ROOTTOKEN_);(optional) +CREATE INDEX IDX_PROCIN_SPROCTK ON JBPM_PROCESSINSTANCE (SUPERPROCESSTOKEN_);(optional) +CREATE INDEX IDX_PROCIN_PROCDEF ON JBPM_PROCESSINSTANCE (PROCESSDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_RUNTIMEACTION; +CREATE INDEX IDX_RTACTN_PRCINST ON JBPM_RUNTIMEACTION (PROCESSINSTANCE_);(optional) +CREATE INDEX IDX_RTACTN_ACTION ON JBPM_RUNTIMEACTION (ACTION_);(optional) +SELECT COUNT(*) FROM JBPM_SWIMLANEINSTANCE; +CREATE INDEX IDX_SWIMLINST_SL ON JBPM_SWIMLANEINSTANCE (SWIMLANE_);(optional) +SELECT COUNT(*) FROM JBPM_TASK; +CREATE INDEX IDX_TASK_TSKNODE ON JBPM_TASK (TASKNODE_);(optional) +CREATE INDEX IDX_TASK_PROCDEF ON JBPM_TASK (PROCESSDEFINITION_);(optional) +CREATE INDEX IDX_TASK_TASKMGTDF ON JBPM_TASK (TASKMGMTDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_TASKINSTANCE; +CREATE INDEX IDX_TASKINST_TOKN ON JBPM_TASKINSTANCE (TOKEN_);(optional) +CREATE INDEX IDX_TASKINST_TSK ON JBPM_TASKINSTANCE (TASK_, PROCINST_);(optional) +CREATE INDEX IDX_TSKINST_TMINST ON JBPM_TASKINSTANCE (TASKMGMTINSTANCE_);(optional) +CREATE INDEX IDX_TSKINST_SLINST ON JBPM_TASKINSTANCE (SWIMLANINSTANCE_);(optional) +CREATE INDEX IDX_TASK_ACTORID ON JBPM_TASKINSTANCE (ACTORID_);(optional) +SELECT COUNT(*) FROM JBPM_TOKEN; +CREATE INDEX IDX_TOKEN_PROCIN ON JBPM_TOKEN (PROCESSINSTANCE_);(optional) +CREATE INDEX IDX_TOKEN_SUBPI ON JBPM_TOKEN (SUBPROCESSINSTANCE_);(optional) +CREATE INDEX IDX_TOKEN_NODE ON JBPM_TOKEN (NODE_);(optional) +CREATE INDEX IDX_TOKEN_PARENT ON JBPM_TOKEN (PARENT_);(optional) +SELECT COUNT(*) FROM JBPM_TOKENVARIABLEMAP; +CREATE INDEX IDX_TKVARMAP_CTXT ON JBPM_TOKENVARIABLEMAP (CONTEXTINSTANCE_);(optional) +CREATE INDEX IDX_TKVVARMP_TOKEN ON JBPM_TOKENVARIABLEMAP (TOKEN_);(optional) +SELECT COUNT(*) FROM JBPM_TRANSITION; +CREATE INDEX IDX_TRANSIT_TO ON JBPM_TRANSITION (TO_);(optional) +CREATE INDEX IDX_TRANSIT_FROM ON JBPM_TRANSITION (FROM_);(optional) +CREATE INDEX IDX_TRANS_PROCDEF ON JBPM_TRANSITION (PROCESSDEFINITION_);(optional) +SELECT COUNT(*) FROM JBPM_VARIABLEINSTANCE; +CREATE INDEX IDX_VARINST_TKVARMP ON JBPM_VARIABLEINSTANCE (TOKENVARIABLEMAP_);(optional) +CREATE INDEX IDX_VARINST_PRCINS ON JBPM_VARIABLEINSTANCE (PROCESSINSTANCE_);(optional) +CREATE INDEX IDX_VARINST_TK ON JBPM_VARIABLEINSTANCE (TOKEN_);(optional) + +SELECT COUNT(*) FROM alf_audit_date; +CREATE INDEX adt_q_idx ON alf_audit_date (quarter);(optional) +CREATE INDEX adt_dow_idx ON alf_audit_date (day_of_week);(optional) +CREATE INDEX adt_date_idx ON alf_audit_date (date_only);(optional) +CREATE INDEX adt_y_idx ON alf_audit_date (year);(optional) +CREATE INDEX adt_hy_idx ON alf_audit_date (halfYear);(optional) +CREATE INDEX adt_wom_idx ON alf_audit_date (week_of_month);(optional) +CREATE INDEX adt_dom_idx ON alf_audit_date (day_of_month);(optional) +CREATE INDEX adt_m_idx ON alf_audit_date (month);(optional) +CREATE INDEX adt_doy_idx ON alf_audit_date (day_of_year);(optional) +CREATE INDEX adt_woy_idx ON alf_audit_date (week_of_year);(optional) +SELECT COUNT(*) FROM alf_audit_fact; +CREATE INDEX adt_user_idx ON alf_audit_fact (user_id);(optional) +CREATE INDEX adt_store_idx ON alf_audit_fact (store_protocol, store_id, node_uuid);(optional) +SELECT COUNT(*) FROM alf_audit_source; +CREATE INDEX app_source_met_idx ON alf_audit_source (method);(optional) +CREATE INDEX app_source_app_idx ON alf_audit_source (application);(optional) +CREATE INDEX app_source_ser_idx ON alf_audit_source (service);(optional) + +SELECT COUNT(*) FROM avm_node_properties; +CREATE INDEX idx_avm_np_name ON avm_node_properties (qname);(optional) +SELECT COUNT(*) FROM avm_store_properties; +CREATE INDEX idx_avm_sp_name ON avm_store_properties (qname);(optional) +SELECT COUNT(*) FROM avm_version_roots; +CREATE INDEX idx_avm_vr_version ON avm_version_roots (version_id);(optional) + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-ExplicitIndexes'; +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-ExplicitIndexes', 'Manually executed script upgrade V2.1: Ensure existence of V2.1 Explicit indexes', + 0, 63, -1, 64, null, 'UNKOWN', TRUE, TRUE, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql new file mode 100644 index 0000000000..d0e9ead513 --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-FKIndexes.sql @@ -0,0 +1,115 @@ +-- +-- 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' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-JBPMData.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-JBPMData.sql new file mode 100644 index 0000000000..27d12f42c6 --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-JBPMData.sql @@ -0,0 +1,29 @@ +-- +-- Title: Jbpm 3.1.2 -> 3.2 Data Migration +-- Database: PostgreSQL +-- Since: V2.1 Schema 52 +-- Author: David Caruana +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- + +UPDATE JBPM_TASK SET PRIORITY_ = 2; +UPDATE JBPM_NODE SET ISASYNCEXCL_ = FALSE; +UPDATE JBPM_MODULEINSTANCE SET VERSION_ = 0; +UPDATE JBPM_POOLEDACTOR SET VERSION_ = 0; +UPDATE JBPM_SWIMLANEINSTANCE SET VERSION_ = 0; +UPDATE JBPM_TASKINSTANCE SET VERSION_ = 0; +UPDATE JBPM_TOKENVARIABLEMAP SET VERSION_ = 0; +UPDATE JBPM_VARIABLEINSTANCE SET VERSION_ = 0; + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-JBPMUpdate'; +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-JBPMUpdate', 'Manually executed script upgrade V2.1: JBPM 3.1.2 to 3.2 Data Upgrade', + 0, 51, -1, 52, null, 'UNKOWN', TRUE, TRUE, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-JBPMProcessKey.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-JBPMProcessKey.sql new file mode 100644 index 0000000000..183a879ed5 --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-JBPMProcessKey.sql @@ -0,0 +1,22 @@ +-- +-- Title: Jbpm 3.2 Process Instance Key +-- Database: PostgreSQL +-- Since: V2.1 Schema 63 +-- Author: David Caruana +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- + +UPDATE JBPM_PROCESSINSTANCE SET KEY_ = ID_ WHERE KEY_ IS NULL; + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-JBPMProcessKey'; +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-JBPMProcessKey', 'Manually executed script upgrade V2.1: JBPM 3.2 Process Instance Key', + 0, 62, -1, 63, null, 'UNKOWN', TRUE, TRUE, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql new file mode 100644 index 0000000000..1eca3086ec --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql @@ -0,0 +1,21 @@ +-- +-- Title: Add text columns that allow null +-- Database: PostgreSQL +-- Since: V2.1 Schema 64 +-- Author: Derek Hulley +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- +-- This is a Sybase issue, so nothing is required here. + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-NotNullColumns'; +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-NotNullColumns', 'Manually executed script upgrade V2.1: Add nullable columns', + 0, 63, -1, 64, null, 'UNKOWN', TRUE, TRUE, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-VersionColumns.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-VersionColumns.sql new file mode 100644 index 0000000000..877f7fdd8c --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/AlfrescoSchemaUpdate-2.1-VersionColumns.sql @@ -0,0 +1,33 @@ +-- +-- Title: Fill 'version' columns with data +-- Database: PostgreSQL +-- Since: V2.1 Schema 54 +-- Author: Derek Hulley +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- + +UPDATE alf_store SET version = 1 WHERE version IS NULL; +UPDATE alf_node SET version = 1 WHERE version IS NULL; +UPDATE alf_child_assoc SET version = 1 WHERE version IS NULL; +UPDATE alf_node_assoc SET version = 1 WHERE version IS NULL; +UPDATE alf_node_status SET version = 1 WHERE version IS NULL; +UPDATE alf_transaction SET version = 1 WHERE version IS NULL; +UPDATE alf_server SET version = 1 WHERE version IS NULL; +UPDATE alf_access_control_list SET version = 1 WHERE version IS NULL; +UPDATE alf_access_control_entry SET version = 1 WHERE version IS NULL; +UPDATE alf_permission SET version = 1 WHERE version IS NULL; +UPDATE alf_authority SET version = 1 WHERE version IS NULL; +UPDATE alf_version_count SET version = 1 WHERE version IS NULL; + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-VersionColumns2'; +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-VersionColumns2', 'Manually executed script upgrade V2.1: Created initial version number for ADM entities', + 0, 63, -1, 64, null, 'UNKOWN', TRUE, TRUE, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.PostgreSQLDialect/_pg_keypositions-function.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/_pg_keypositions-function.sql similarity index 100% rename from config/alfresco/dbscripts/upgrade/2.0/org.hibernate.dialect.PostgreSQLDialect/_pg_keypositions-function.sql rename to config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.PostgreSQLDialect/_pg_keypositions-function.sql diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.SybaseDialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.SybaseDialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql new file mode 100644 index 0000000000..44647d61c8 --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.SybaseDialect/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql @@ -0,0 +1,53 @@ +-- +-- Title: ADD text columns that allow null +-- Database: Sybase +-- Since: V2.1 Schema 64 +-- Author: Derek Hulley +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- +-- Sybase won't allow ALTER TABLE commands where the text columns are not null. +-- Where the nullability is not explicitly set, Sybase assumes NOT NULL. + +-- JBPM +ALTER TABLE JBPM_NODE ADD DESCRIPTION_ text NULL; +ALTER TABLE JBPM_NODE ADD ISASYNCEXCL_ tinyint DEFAULT 0; +ALTER TABLE JBPM_NODE ADD SUBPROCNAME_ text NULL; +ALTER TABLE JBPM_NODE ADD SCRIPT_ numeric(19,0) NULL; +ALTER TABLE JBPM_PROCESSDEFINITION ADD CLASS_ char(1) NOT NULL DEFAULT 'P'; +ALTER TABLE JBPM_PROCESSDEFINITION ADD DESCRIPTION_ text NULL; +ALTER TABLE JBPM_PROCESSINSTANCE ADD KEY_ text NULL; +ALTER TABLE JBPM_TASK ADD CONDITION_ text NULL; +ALTER TABLE JBPM_TASK ADD PRIORITY_ int DEFAULT 2; +ALTER TABLE JBPM_TASKINSTANCE ADD PROCINST_ numeric(19,0) NULL; +ALTER TABLE JBPM_TOKEN ADD LOCK_ text NULL; +ALTER TABLE JBPM_TRANSITION ADD DESCRIPTION_ text NULL; +ALTER TABLE JBPM_TRANSITION ADD CONDITION_ text NULL; + +-- ALFRESCO +ALTER TABLE alf_access_control_entry ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_access_control_list ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_authority ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_child_assoc ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_node ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_node_assoc ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_node_properties ADD attribute_value numeric(19,0) NULL; +ALTER TABLE alf_node_status ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_permission ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_server ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_store ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_transaction ADD version numeric(19,0) DEFAULT 0; +ALTER TABLE alf_version_count ADD version numeric(19,0) DEFAULT 0; + + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-NotNullColumns'; +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-NotNullColumns', 'Manually executed script upgrade V2.1: ADD nullable text columns for Sybase', + 0, 63, -1, 64, null, 'UNKOWN', 1, 1, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/patch/patch-services-context.xml b/config/alfresco/patch/patch-services-context.xml index 14664122ad..efc47dcf36 100644 --- a/config/alfresco/patch/patch-services-context.xml +++ b/config/alfresco/patch/patch-services-context.xml @@ -527,22 +527,6 @@ - - patch.db-V1.4-PostgresFKIndexes - patch.schemaUpgradeScript.description - 21 - 51 - 52 - - classpath:alfresco/dbscripts/upgrade/1.4/${db.script.dialect}/AlfrescoSchemaUpdate-1.4-PostgresFKIndexes.sql - - - - - - - - patch.multilingualBootstrap patch.multilingualBootstrap.description @@ -648,28 +632,6 @@ - - patch.db-V2.0-ExplicitIndexes - patch.schemaUpgradeScript.description - 0 - 37 - 38 - - classpath:alfresco/dbscripts/upgrade/2.0/${db.script.dialect}/AlfrescoSchemaUpdate-2.0-ExplicitIndexes.sql - - - - - patch.db-V2.0-AVMFKIndexes - patch.schemaUpgradeScript.description - 0 - 37 - 38 - - classpath:alfresco/dbscripts/upgrade/2.0/${db.script.dialect}/AlfrescoSchemaUpdate-2.0-AVMFKIndexes.sql - - - patch.db-V2.1-JBPMUpdate patch.schemaUpgradeScript.description @@ -680,6 +642,17 @@ classpath:alfresco/dbscripts/upgrade/2.1/${db.script.dialect}/AlfrescoSchemaUpdate-2.1-JBPMData.sql + + + patch.db-V2.1-NotNullColumns + patch.schemaUpgradeScript.description + 0 + 51 + 52 + + classpath:alfresco/dbscripts/upgrade/2.1/${db.script.dialect}/AlfrescoSchemaUpdate-2.1-NotNullColumns.sql + + patch.groupNamesAsIdentifiers @@ -743,17 +716,6 @@ - - patch.db-V2.1-VersionColumns - patch.schemaUpgradeScript.description - 0 - 53 - 54 - - classpath:alfresco/dbscripts/upgrade/2.1/${db.script.dialect}/AlfrescoSchemaUpdate-2.1-VersionColumns.sql - - - patch.webscriptsExtension patch.webscriptsExtension.description @@ -896,4 +858,37 @@ + + patch.db-V2.1-FKIndexes + patch.schemaUpgradeScript.description + 0 + 63 + 64 + + classpath:alfresco/dbscripts/upgrade/2.1/${db.script.dialect}/AlfrescoSchemaUpdate-2.1-FKIndexes.sql + + + + + patch.db-V2.1-ExplicitIndexes + patch.schemaUpgradeScript.description + 0 + 63 + 64 + + classpath:alfresco/dbscripts/upgrade/2.1/${db.script.dialect}/AlfrescoSchemaUpdate-2.1-ExplicitIndexes.sql + + + + + patch.db-V2.1-VersionColumns2 + patch.schemaUpgradeScript.description + 0 + 63 + 64 + + classpath:alfresco/dbscripts/upgrade/2.1/${db.script.dialect}/AlfrescoSchemaUpdate-2.1-VersionColumns.sql + + + diff --git a/config/alfresco/version.properties b/config/alfresco/version.properties index 14c3d18bf3..8ff0422941 100644 --- a/config/alfresco/version.properties +++ b/config/alfresco/version.properties @@ -19,4 +19,4 @@ version.build=@build-number@ # Schema number -version.schema=63 +version.schema=64 diff --git a/source/java/org/alfresco/repo/domain/hibernate/VersionCount.hbm.xml b/source/java/org/alfresco/repo/domain/hibernate/VersionCount.hbm.xml index ad7fcfe2fb..4a0c2a102c 100644 --- a/source/java/org/alfresco/repo/domain/hibernate/VersionCount.hbm.xml +++ b/source/java/org/alfresco/repo/domain/hibernate/VersionCount.hbm.xml @@ -14,12 +14,18 @@ dynamic-insert="false" select-before-update="false" optimistic-lock="version" > + + + + + + diff --git a/source/java/org/alfresco/repo/domain/hibernate/VersionCountImpl.java b/source/java/org/alfresco/repo/domain/hibernate/VersionCountImpl.java index 022d989640..97fa223638 100644 --- a/source/java/org/alfresco/repo/domain/hibernate/VersionCountImpl.java +++ b/source/java/org/alfresco/repo/domain/hibernate/VersionCountImpl.java @@ -39,8 +39,7 @@ public class VersionCountImpl implements VersionCount, Serializable private static final long serialVersionUID = 6420375860928877809L; private StoreKey key; - @SuppressWarnings("unused") - private long version; // used by Hibernate for concurrency + private long version; private int versionCount; public VersionCountImpl() @@ -89,11 +88,25 @@ public class VersionCountImpl implements VersionCount, Serializable return key; } - public synchronized void setKey(StoreKey key) + public void setKey(StoreKey key) { this.key = key; } + public Long getVersion() + { + return version; + } + + /** + * For Hibernate use + */ + @SuppressWarnings("unused") + private void setVersion(Long version) + { + this.version = version; + } + /** * For Hibernate use */