Files
alfresco-community-repo/config/alfresco/dbscripts/upgrade/2.2/org.hibernate.dialect.MySQLInnoDBDialect/upgrade-from-2.2SP1.sql
Dave Ward 3feaed5d5a Merged V3.3-BUG-FIX to HEAD
21384: ALF-2879: XAM Connector changes
      - Added callbacks for code to modify the XSet fields
      - Changed XAMArchivedAspect to use callback (moved code out of XAMContentStore)
      - Added XAMNodePropertyWriter to set metadata including some global properties and node-specific values
      - See readme.txt for details
   21393: ALF-2879: XAM Connector changes
      - Sprinkled DEBUG logging around
      - Updated readme.txt with logging details
      - Metadata writing tested and no changes required
   21403: ALF-2879: XAM Connector changes
      - Workaround ContentStoreSelector bug present in V3.3.2 - NodeRef context not present during write
      - Added bug back into ContentStoreSelector for testing and verified that metadata is written to XSet
   21487: Merged V3.3 to V3.3-BUG-FIX
      21374: ALF-4028: In "createNode", save the ScriptNode before calling cmis.applyVersioningState to ensure updated properties have been saved.
      21389: Add main to run index check against current repository by hand
      21390: ALF-4016: Files uploaded to ts are not visible
         - multi-threaded tracking never abandons an index chunk
         - warns of long running transaction chunks
         - logging change
      21392: ALF-4016: Files uploaded to ts are not visible
         - make sure FTS update exceptions can not lead to a TX commit and deletions
      21428: NFS fixes to return the current file size in the post op attributes if the file is open, fixes to rename to close the current file if open before the rename, also delete the target file for a rename if it exists as per NFS v3 spec. ALF-3181, ALF-3954, ALF-3955, ALF-3956, ALF-3957.
      21443: Merged PATCHES/V3.2.1 to V3.3
         21396: ALF-3779, ALF-4025: Corrected driving column in alf_node_status --FOREACH statement to handle null node_ids and added --FOREACH for building of t_summary_nstat
      21455: Remove old language pack pieces
      21458: Fix linux install for some distros (ALF-4000)
      21467: Merged DEV/TEMPORARY to V3.3
         21444: ALF-3962 : Message 'The current implementation of the version service does not support the creation of branches.' being thrown from Version2ServiceImpl
            1. Change AbstractVersionServiceImpl.invokeCalculateVersionLabel to make SerialVersionLabelPolicy behaviour default rather than the versionNumber when calculating new version label. 
            2. Change Version2ServiceImpl to handle any existing corrupted version histories that are marked with version label "0" (see Version2ServiceImpl. checkForCorruptedVersions method). 
            3. Unit tests was updated.
         21464: Reimplemented according to David's review.
            1. Update logic of checkForCorruptedVersions method in Version2ServiceImpl. A reusable protected method (getAllVersions) was created containing the shared code.
            2. Update unit test to include tests for the corrupt version fixing behaviour.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21488 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2010-07-29 13:10:48 +00:00

691 lines
22 KiB
SQL

--
-- Title: Upgrade V2.2 SP1 or SP2
-- Database: MySQL
-- Since: V2.2 Schema 91
-- Author: Derek Hulley
--
-- MLText values must be pulled back from attributes into localizable properties.
-- NodeStatus has been moved to alf_node.
-- Auditable properties have been moved to alf_node.
-- alf_node contains the old alf_node_status information.
--
-- Please contact support@alfresco.com if you need assistance with the upgrade.
--
-- -------------------
-- Build new Store --
-- -------------------
CREATE TABLE t_alf_store
(
id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL,
protocol VARCHAR(50) NOT NULL,
identifier VARCHAR(100) NOT NULL,
root_node_id BIGINT,
PRIMARY KEY (id),
UNIQUE (protocol, identifier)
) TYPE=InnoDB;
-- --------------------------
-- Populate the ADM nodes --
-- --------------------------
CREATE TABLE t_alf_node (
id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL,
store_id BIGINT NOT NULL,
uuid VARCHAR(36) NOT NULL,
transaction_id BIGINT NOT NULL,
node_deleted bit NOT NULL,
type_qname_id BIGINT NOT NULL,
acl_id BIGINT,
audit_creator VARCHAR(255),
audit_created VARCHAR(30),
audit_modifier VARCHAR(255),
audit_modified VARCHAR(30),
audit_accessed VARCHAR(30),
INDEX idx_alf_node_del (node_deleted),
INDEX fk_alf_node_acl (acl_id),
INDEX fk_alf_node_tqn (type_qname_id),
INDEX fk_alf_node_txn (transaction_id),
INDEX fk_alf_node_store (store_id),
CONSTRAINT fk_alf_node_acl FOREIGN KEY (acl_id) REFERENCES alf_access_control_list (id),
CONSTRAINT fk_alf_node_tqn FOREIGN KEY (type_qname_id) REFERENCES alf_qname (id),
CONSTRAINT fk_alf_node_txn FOREIGN KEY (transaction_id) REFERENCES alf_transaction (id),
CONSTRAINT fk_alf_node_store FOREIGN KEY (store_id) REFERENCES t_alf_store (id),
PRIMARY KEY (id),
UNIQUE (store_id, uuid)
) TYPE=InnoDB;
-- Fill the store table
INSERT INTO t_alf_store (version, protocol, identifier, root_node_id)
SELECT 1, protocol, identifier, root_node_id FROM alf_store
;
-- Summarize the alf_node_status table
CREATE TABLE t_summary_nstat
(
node_id BIGINT(20) NOT NULL,
transaction_id BIGINT(20) DEFAULT NULL,
PRIMARY KEY (node_id)
) TYPE=InnoDB;
--FOREACH alf_node_status.node_id system.upgrade.t_summary_nstat.batchsize
INSERT INTO t_summary_nstat (node_id, transaction_id)
SELECT node_id, transaction_id
FROM alf_node_status
WHERE node_id IS NOT NULL
AND node_id >= ${LOWERBOUND} AND node_id <= ${UPPERBOUND};
-- Copy data over
--FOREACH alf_node.id system.upgrade.t_alf_node.batchsize
INSERT INTO t_alf_node
(
id, version, store_id, uuid, transaction_id, node_deleted, type_qname_id, acl_id,
audit_creator, audit_created, audit_modifier, audit_modified, audit_accessed
)
SELECT STRAIGHT_JOIN
n.id, 1, s.id, n.uuid, nstat.transaction_id, false, n.type_qname_id, n.acl_id,
null, null, null, null, null
FROM
alf_node n
JOIN t_summary_nstat nstat ON (nstat.node_id = n.id)
JOIN t_alf_store s ON (s.protocol = n.protocol AND s.identifier = n.identifier)
WHERE
n.id >= ${LOWERBOUND} AND n.id <= ${UPPERBOUND}
;
DROP TABLE t_summary_nstat;
-- Hook the store up to the root node
ALTER TABLE t_alf_store
ADD INDEX fk_alf_store_root (root_node_id),
ADD CONSTRAINT fk_alf_store_root FOREIGN KEY (root_node_id) REFERENCES t_alf_node (id)
;
-- -----------------------------
-- Populate Version Counter --
-- -----------------------------
CREATE TABLE t_alf_version_count
(
id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL,
store_id BIGINT NOT NULL UNIQUE,
version_count INTEGER NOT NULL,
INDEX fk_alf_vc_store (store_id),
CONSTRAINT fk_alf_vc_store FOREIGN KEY (store_id) REFERENCES t_alf_store (id),
PRIMARY KEY (id)
) TYPE=InnoDB;
INSERT INTO t_alf_version_count
(
version, store_id, version_count
)
SELECT
1, s.id, vc.version_count
FROM
alf_version_count vc
JOIN t_alf_store s ON (s.protocol = vc.protocol AND s.identifier = vc.identifier)
;
DROP TABLE alf_version_count;
ALTER TABLE t_alf_version_count RENAME TO alf_version_count;
-- -----------------------------
-- Populate the Child Assocs --
-- -----------------------------
CREATE TABLE t_alf_child_assoc
(
id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL,
parent_node_id BIGINT NOT NULL,
type_qname_id BIGINT NOT NULL,
child_node_name_crc BIGINT NOT NULL,
child_node_name VARCHAR(50) NOT NULL,
child_node_id BIGINT NOT NULL,
qname_ns_id BIGINT NOT NULL,
qname_localname VARCHAR(255) NOT NULL,
is_primary BIT,
assoc_index INTEGER,
INDEX idx_alf_cass_qnln (qname_localname),
INDEX fk_alf_cass_pnode (parent_node_id),
INDEX fk_alf_cass_cnode (child_node_id),
INDEX fk_alf_cass_tqn (type_qname_id),
INDEX fk_alf_cass_qnns (qname_ns_id),
CONSTRAINT fk_alf_cass_pnode foreign key (parent_node_id) REFERENCES t_alf_node (id),
CONSTRAINT fk_alf_cass_cnode foreign key (child_node_id) REFERENCES t_alf_node (id),
CONSTRAINT fk_alf_cass_tqn foreign key (type_qname_id) REFERENCES alf_qname (id),
CONSTRAINT fk_alf_cass_qnns foreign key (qname_ns_id) REFERENCES alf_namespace (id),
PRIMARY KEY (id),
UNIQUE (parent_node_id, type_qname_id, child_node_name_crc, child_node_name)
) TYPE=InnoDB;
--FOREACH alf_child_assoc.id system.upgrade.t_alf_child_assoc.batchsize
INSERT INTO t_alf_child_assoc
(
id, version,
parent_node_id,
type_qname_id,
child_node_name_crc, child_node_name,
child_node_id,
qname_ns_id, qname_localname,
is_primary, assoc_index
)
SELECT STRAIGHT_JOIN
ca.id, 1,
ca.parent_node_id,
ca.type_qname_id,
ca.child_node_name_crc, ca.child_node_name,
ca.child_node_id,
ca.qname_ns_id, ca.qname_localname,
ca.is_primary, ca.assoc_index
FROM
alf_child_assoc ca
WHERE
ca.id >= ${LOWERBOUND} AND ca.id <= ${UPPERBOUND}
;
-- Clean up
DROP TABLE alf_child_assoc;
ALTER TABLE t_alf_child_assoc RENAME TO alf_child_assoc;
-- ----------------------------
-- Populate the Node Assocs --
-- ----------------------------
CREATE TABLE t_alf_node_assoc
(
id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL,
source_node_id BIGINT NOT NULL,
target_node_id BIGINT NOT NULL,
type_qname_id BIGINT NOT NULL,
INDEX fk_alf_nass_snode (source_node_id),
INDEX fk_alf_nass_tnode (target_node_id),
INDEX fk_alf_nass_tqn (type_qname_id),
CONSTRAINT fk_alf_nass_snode FOREIGN KEY (source_node_id) REFERENCES t_alf_node (id),
CONSTRAINT fk_alf_nass_tnode FOREIGN KEY (target_node_id) REFERENCES t_alf_node (id),
CONSTRAINT fk_alf_nass_tqn FOREIGN KEY (type_qname_id) REFERENCES alf_qname (id),
PRIMARY KEY (id),
UNIQUE (source_node_id, target_node_id, type_qname_id)
) TYPE=InnoDB;
--FOREACH alf_node_assoc.id system.upgrade.t_alf_node_assoc.batchsize
INSERT INTO t_alf_node_assoc
(
id, version,
source_node_id, target_node_id,
type_qname_id
)
SELECT STRAIGHT_JOIN
na.id, 1,
na.source_node_id, na.target_node_id,
na.type_qname_id
FROM
alf_node_assoc na
WHERE
na.id >= ${LOWERBOUND} AND na.id <= ${UPPERBOUND}
;
-- Clean up
DROP TABLE alf_node_assoc;
ALTER TABLE t_alf_node_assoc RENAME TO alf_node_assoc;
-- ----------------------------
-- Populate the Usage Deltas --
-- ----------------------------
CREATE TABLE t_alf_usage_delta
(
id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL,
node_id BIGINT NOT NULL,
delta_size BIGINT NOT NULL,
INDEX fk_alf_usaged_n (node_id),
CONSTRAINT fk_alf_usaged_n FOREIGN KEY (node_id) REFERENCES t_alf_node (id),
PRIMARY KEY (id)
) TYPE=InnoDB;
INSERT INTO t_alf_usage_delta
(
id, version,
node_id,
delta_size
)
SELECT
ud.id, 1,
ud.node_id,
ud.delta_size
FROM
alf_usage_delta ud
; -- (optional)
-- Clean up
DROP TABLE alf_usage_delta; -- (optional)
ALTER TABLE t_alf_usage_delta RENAME TO alf_usage_delta;
-- -----------------------------
-- Populate the Node Aspects --
-- -----------------------------
CREATE TABLE t_alf_node_aspects
(
node_id BIGINT NOT NULL,
qname_id BIGINT NOT NULL,
INDEX fk_alf_nasp_n (node_id),
INDEX fk_alf_nasp_qn (qname_id),
CONSTRAINT fk_alf_nasp_n FOREIGN KEY (node_id) REFERENCES t_alf_node (id),
CONSTRAINT fk_alf_nasp_qn FOREIGN KEY (qname_id) REFERENCES alf_qname (id),
PRIMARY KEY (node_id, qname_id)
) TYPE=InnoDB;
--FOREACH alf_node_aspects.node_id system.upgrade.t_alf_node_aspects.batchsize
-- Note the omission of sys:referencable. This is implicit.
INSERT INTO t_alf_node_aspects
(
node_id, qname_id
)
SELECT
na.node_id,
qname_id
FROM
alf_node_aspects na
JOIN alf_qname qn ON (na.qname_id = qn.id)
JOIN alf_namespace ns ON (qn.ns_id = ns.id)
WHERE
ns.uri != 'http://www.alfresco.org/model/system/1.0' OR
qn.local_name != 'referenceable'
AND na.node_id >= ${LOWERBOUND} AND na.node_id <= ${UPPERBOUND}
;
-- Clean up
DROP TABLE alf_node_aspects;
ALTER TABLE t_alf_node_aspects RENAME TO alf_node_aspects;
-- ---------------------------------
-- Populate the AVM Node Aspects --
-- ---------------------------------
CREATE TABLE t_avm_aspects
(
node_id BIGINT NOT NULL,
qname_id BIGINT NOT NULL,
INDEX fk_avm_nasp_n (node_id),
INDEX fk_avm_nasp_qn (qname_id),
CONSTRAINT fk_avm_nasp_n FOREIGN KEY (node_id) REFERENCES avm_nodes (id),
CONSTRAINT fk_avm_nasp_qn FOREIGN KEY (qname_id) REFERENCES alf_qname (id),
PRIMARY KEY (node_id, qname_id)
) TYPE=InnoDB;
--FOREACH avm_aspects_new.id system.upgrade.t_avm_aspects.batchsize
INSERT INTO t_avm_aspects
(
node_id, qname_id
)
SELECT
anew.id,
anew.qname_id
FROM
avm_aspects_new anew
WHERE
anew.id >= ${LOWERBOUND} AND anew.id <= ${UPPERBOUND}
;
-- Clean up
DROP TABLE avm_aspects;
DROP TABLE avm_aspects_new;
ALTER TABLE t_avm_aspects RENAME TO avm_aspects;
-- ----------------------------------
-- Migrate Sundry Property Tables --
-- ----------------------------------
-- Modify the avm_store_properties table
CREATE TABLE t_avm_store_properties
(
id BIGINT NOT NULL AUTO_INCREMENT,
avm_store_id BIGINT,
qname_id BIGINT NOT NULL,
actual_type_n integer NOT NULL,
persisted_type_n integer NOT NULL,
multi_valued bit NOT NULL,
boolean_value bit,
long_value BIGINT,
float_value float,
double_value DOUBLE PRECISION,
string_value TEXT,
serializable_value blob,
INDEX fk_avm_sprop_store (avm_store_id),
INDEX fk_avm_sprop_qname (qname_id),
CONSTRAINT fk_avm_sprop_store FOREIGN KEY (avm_store_id) REFERENCES avm_stores (id),
CONSTRAINT fk_avm_sprop_qname FOREIGN KEY (qname_id) REFERENCES alf_qname (id),
PRIMARY KEY (id)
) TYPE=InnoDB;
--FOREACH avm_store_properties.avm_store_id system.upgrade.t_avm_store_properties.batchsize
INSERT INTO t_avm_store_properties
(
avm_store_id,
qname_id,
actual_type_n, persisted_type_n,
multi_valued, boolean_value, long_value, float_value, double_value, string_value, serializable_value
)
SELECT
p.avm_store_id,
p.qname_id,
p.actual_type_n, p.persisted_type_n,
p.multi_valued, p.boolean_value, p.long_value, p.float_value, p.double_value, p.string_value, p.serializable_value
FROM
avm_store_properties p
WHERE
p.avm_store_id >= ${LOWERBOUND} AND p.avm_store_id <= ${UPPERBOUND}
;
DROP TABLE avm_store_properties;
ALTER TABLE t_avm_store_properties RENAME TO avm_store_properties;
-- Modify the avm_node_properties_new table
CREATE TABLE t_avm_node_properties
(
node_id BIGINT NOT NULL,
qname_id BIGINT NOT NULL,
actual_type_n INTEGER NOT NULL,
persisted_type_n INTEGER NOT NULL,
multi_valued BIT NOT NULL,
boolean_value BIT,
long_value BIGINT,
float_value FLOAT,
double_value DOUBLE PRECISION,
string_value TEXT,
serializable_value BLOB,
INDEX fk_avm_nprop_n (node_id),
INDEX fk_avm_nprop_qn (qname_id),
CONSTRAINT fk_avm_nprop_n FOREIGN KEY (node_id) REFERENCES avm_nodes (id),
CONSTRAINT fk_avm_nprop_qn FOREIGN KEY (qname_id) REFERENCES alf_qname (id),
PRIMARY KEY (node_id, qname_id)
) TYPE=InnoDB;
--FOREACH avm_node_properties_new.node_id system.upgrade.t_avm_node_properties.batchsize
INSERT INTO t_avm_node_properties
(
node_id,
qname_id,
actual_type_n, persisted_type_n,
multi_valued, boolean_value, long_value, float_value, double_value, string_value, serializable_value
)
SELECT
p.node_id,
p.qname_id,
p.actual_type_n, p.persisted_type_n,
p.multi_valued, p.boolean_value, p.long_value, p.float_value, p.double_value, p.string_value, p.serializable_value
FROM
avm_node_properties_new p
WHERE
p.node_id >= ${LOWERBOUND} AND p.node_id <= ${UPPERBOUND}
;
DROP TABLE avm_node_properties_new;
DROP TABLE avm_node_properties;
ALTER TABLE t_avm_node_properties RENAME TO avm_node_properties;
-- -----------------
-- Build Locales --
-- -----------------
CREATE TABLE alf_locale
(
id BIGINT NOT NULL AUTO_INCREMENT,
version BIGINT NOT NULL DEFAULT 1,
locale_str VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
UNIQUE (locale_str)
) TYPE=InnoDB;
INSERT INTO alf_locale (id, locale_str) VALUES (1, '.default');
-- Locales come from the attribute table which was used to support MLText persistence
INSERT INTO alf_locale (locale_str)
SELECT DISTINCT(ma.mkey)
FROM alf_node_properties np
JOIN alf_attributes a1 ON (np.attribute_value = a1.id)
JOIN alf_map_attribute_entries ma ON (ma.map_id = a1.id)
;
-- -------------------------------
-- Migrate ADM Property Tables --
-- -------------------------------
CREATE TABLE t_alf_node_properties
(
node_id BIGINT NOT NULL,
qname_id BIGINT NOT NULL,
locale_id BIGINT NOT NULL,
list_index INTEGER NOT NULL,
actual_type_n INTEGER NOT NULL,
persisted_type_n INTEGER NOT NULL,
boolean_value BIT,
long_value BIGINT,
float_value FLOAT,
double_value DOUBLE PRECISION,
string_value TEXT,
serializable_value BLOB,
INDEX fk_alf_nprop_n (node_id),
INDEX fk_alf_nprop_qn (qname_id),
INDEX fk_alf_nprop_loc (locale_id),
CONSTRAINT fk_alf_nprop_n FOREIGN KEY (node_id) REFERENCES t_alf_node (id),
CONSTRAINT fk_alf_nprop_qn FOREIGN KEY (qname_id) REFERENCES alf_qname (id),
CONSTRAINT fk_alf_nprop_loc FOREIGN KEY (locale_id) REFERENCES alf_locale (id),
PRIMARY KEY (node_id, qname_id, list_index, locale_id)
) TYPE=InnoDB;
--BEGIN TXN
-- Copy values over
--FOREACH alf_node_properties.node_id system.upgrade.t_alf_node_properties.batchsize
INSERT INTO t_alf_node_properties
(
node_id, qname_id, locale_id, list_index,
actual_type_n, persisted_type_n,
boolean_value, long_value, float_value, double_value,
string_value,
serializable_value
)
SELECT
np.node_id, np.qname_id, 1, -1,
np.actual_type_n, np.persisted_type_n,
np.boolean_value, np.long_value, np.float_value, np.double_value,
np.string_value,
np.serializable_value
FROM
alf_node_properties np
WHERE
np.attribute_value IS NULL
AND np.node_id >= ${LOWERBOUND} AND np.node_id <= ${UPPERBOUND}
;
-- Update cm:auditable properties on the nodes
--FOREACH t_alf_node.id system.upgrade.t_alf_node.batchsize
UPDATE t_alf_node n SET audit_creator =
(
SELECT
string_value
FROM
t_alf_node_properties np
JOIN alf_qname qn ON (np.qname_id = qn.id)
JOIN alf_namespace ns ON (qn.ns_id = ns.id)
WHERE
np.node_id = n.id AND
ns.uri = 'http://www.alfresco.org/model/content/1.0' AND
qn.local_name = 'creator' AND
n.id >= ${LOWERBOUND} AND n.id <= ${UPPERBOUND}
);
--FOREACH t_alf_node.id system.upgrade.t_alf_node.batchsize
UPDATE t_alf_node n SET audit_created =
(
SELECT
string_value
FROM
t_alf_node_properties np
JOIN alf_qname qn ON (np.qname_id = qn.id)
JOIN alf_namespace ns ON (qn.ns_id = ns.id)
WHERE
np.node_id = n.id AND
ns.uri = 'http://www.alfresco.org/model/content/1.0' AND
qn.local_name = 'created' AND
n.id >= ${LOWERBOUND} AND n.id <= ${UPPERBOUND}
);
--FOREACH t_alf_node.id system.upgrade.t_alf_node.batchsize
UPDATE t_alf_node n SET audit_modifier =
(
SELECT
string_value
FROM
t_alf_node_properties np
JOIN alf_qname qn ON (np.qname_id = qn.id)
JOIN alf_namespace ns ON (qn.ns_id = ns.id)
WHERE
np.node_id = n.id AND
ns.uri = 'http://www.alfresco.org/model/content/1.0' AND
qn.local_name = 'modifier' AND
n.id >= ${LOWERBOUND} AND n.id <= ${UPPERBOUND}
);
--FOREACH t_alf_node.id system.upgrade.t_alf_node.batchsize
UPDATE t_alf_node n SET audit_modified =
(
SELECT
string_value
FROM
t_alf_node_properties np
JOIN alf_qname qn ON (np.qname_id = qn.id)
JOIN alf_namespace ns ON (qn.ns_id = ns.id)
WHERE
np.node_id = n.id AND
ns.uri = 'http://www.alfresco.org/model/content/1.0' AND
qn.local_name = 'modified' AND
n.id >= ${LOWERBOUND} AND n.id <= ${UPPERBOUND}
);
-- Remove the unused cm:auditable properties
--FOREACH t_alf_node_properties.node_id system.upgrade.t_alf_node_properties.batchsize
DELETE t_alf_node_properties
FROM t_alf_node_properties
JOIN alf_qname ON (t_alf_node_properties.qname_id = alf_qname.id)
JOIN alf_namespace ON (alf_qname.ns_id = alf_namespace.id)
WHERE
alf_namespace.uri = 'http://www.alfresco.org/model/content/1.0' AND
alf_qname.local_name IN ('creator', 'created', 'modifier', 'modified') AND
t_alf_node_properties.node_id >= ${LOWERBOUND} AND t_alf_node_properties.node_id <= ${UPPERBOUND}
;
-- Copy all MLText values over
--FOREACH alf_node_properties.node_id system.upgrade.t_alf_node_properties.batchsize
INSERT INTO t_alf_node_properties
(
node_id, qname_id, list_index, locale_id,
actual_type_n, persisted_type_n,
boolean_value, long_value, float_value, double_value,
string_value,
serializable_value
)
SELECT
np.node_id, np.qname_id, -1, loc.id,
-1, 0,
FALSE, 0, 0, 0,
a2.string_value,
a2.serializable_value
FROM
alf_node_properties np
JOIN alf_attributes a1 ON (np.attribute_value = a1.id)
JOIN alf_map_attribute_entries ma ON (ma.map_id = a1.id)
JOIN alf_locale loc ON (ma.mkey = loc.locale_str)
JOIN alf_attributes a2 ON (ma.attribute_id = a2.id)
WHERE
np.node_id >= ${LOWERBOUND} AND np.node_id <= ${UPPERBOUND}
; -- (OPTIONAL)
--FOREACH t_alf_node_properties.node_id system.upgrade.t_alf_node_properties.batchsize
UPDATE t_alf_node_properties
SET actual_type_n = 6, persisted_type_n = 6, serializable_value = NULL
WHERE actual_type_n = -1 AND string_value IS NOT NULL
AND t_alf_node_properties.node_id >= ${LOWERBOUND} AND t_alf_node_properties.node_id <= ${UPPERBOUND}
;
--FOREACH t_alf_node_properties.node_id system.upgrade.t_alf_node_properties.batchsize
UPDATE t_alf_node_properties
SET actual_type_n = 9, persisted_type_n = 9
WHERE actual_type_n = -1 AND serializable_value IS NOT NULL
AND t_alf_node_properties.node_id >= ${LOWERBOUND} AND t_alf_node_properties.node_id <= ${UPPERBOUND}
;
--FOREACH t_alf_node_properties.node_id system.upgrade.t_alf_node_properties.batchsize
DELETE FROM t_alf_node_properties
WHERE actual_type_n = -1
AND t_alf_node_properties.node_id >= ${LOWERBOUND} AND t_alf_node_properties.node_id <= ${UPPERBOUND}
;
-- Delete the node properties and move the fixed values over
DROP TABLE alf_node_properties;
ALTER TABLE t_alf_node_properties RENAME TO alf_node_properties;
CREATE TABLE t_del_attributes
(
id BIGINT NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO t_del_attributes
SELECT id FROM alf_attributes WHERE type = 'M'
;
DELETE t_del_attributes
FROM t_del_attributes
JOIN alf_map_attribute_entries ma ON (ma.attribute_id = t_del_attributes.id)
;
DELETE t_del_attributes
FROM t_del_attributes
JOIN alf_list_attribute_entries la ON (la.attribute_id = t_del_attributes.id)
;
DELETE t_del_attributes
FROM t_del_attributes
JOIN alf_global_attributes ga ON (ga.attribute = t_del_attributes.id)
;
INSERT INTO t_del_attributes
SELECT a.id FROM t_del_attributes t
JOIN alf_map_attribute_entries ma ON (ma.map_id = t.id)
JOIN alf_attributes a ON (ma.attribute_id = a.id)
;
DELETE alf_map_attribute_entries
FROM alf_map_attribute_entries
JOIN t_del_attributes t ON (alf_map_attribute_entries.map_id = t.id)
;
DELETE alf_list_attribute_entries
FROM alf_list_attribute_entries
JOIN t_del_attributes t ON (alf_list_attribute_entries.list_id = t.id)
;
DELETE alf_attributes
FROM alf_attributes
JOIN t_del_attributes t ON (alf_attributes.id = t.id)
;
DROP TABLE t_del_attributes;
-- ------------------
-- Final clean up --
-- ------------------
DROP TABLE alf_node_status;
ALTER TABLE alf_store DROP FOREIGN KEY fk_alf_store_rn;
DROP TABLE alf_node;
ALTER TABLE t_alf_node RENAME TO alf_node;
DROP TABLE alf_store;
ALTER TABLE t_alf_store RENAME TO alf_store;
CREATE INDEX idx_alf_auth_aut ON alf_authority (authority); -- (optional)
-- ----------------
-- JBPM Differences
-- ----------------
ALTER TABLE jbpm_processinstance DROP INDEX key_; -- (optional)
CREATE INDEX idx_procin_key ON jbpm_processinstance (key_); -- (optional)
--
-- Record script finish
--
DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.2-Upgrade-From-2.2SP1';
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-Upgrade-From-2.2SP1', 'Manually executed script upgrade V2.2: Upgraded V2.2 SP1 or SP2',
86, 90, -1, 91, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'Script completed'
);