mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merged V3.0 to HEAD
12123: Merged V2.2 to V3.0 11466: Fixed sql-query DELETE syntax 11614: Flush after putChild, fix for ETWOTWO-777 11641: Merged V2.1 to V2.2 11632: Improvements for AVM index FULL and AUTO rebuild. 11646: Upgrade scripts tweaks: 11650: Added unit test to confirm fix of ETWOTWO-740 11674: Added missing EHCache definitions for QName, Namespace and Locale caches 11825: Fixed Eclipse classpath addition of path for Oracle JDBC driver 12125: ETHREEOH-899: Image transformations do not follow Options 12127: Merged V2.2 to V3.0 11675: Node DAO optimizations 11680: Full Fix for ETWOTWO-777 + more protection for nested write transactions beneath read transactions. 11729: AVM creates and deletes no longer update the directory mod time - ETWOTWO-801 11738: Fix for ETWOTWO - fixed check for TX propagation mode 11748: Fixed ETWOTWO-578: RepositoryWebService fetchMore() does not fetch last node 11749: Incorporate feedback from ACT-5440: MySQL-specific tweaks to the upgrade scripts 11750: Moved t_qnames_dyn section to after t_qnames 11752: Fixed ETWOTWO-734: ImporterComponent uses Lucene queries 11785: Build Fix:Remove auto created person TX commit fro DB 11853: Fix for ETWOTWO-687 - missed a case when generating lists of actions for modified files list 11940: Stress test main method for ETWOTWO-744 11950: Fixed ETWOTWO-909 and ETWOTWO-911 11987: Dirty checking for attribute related DAOs 12008: Fixed test for transaction-requiring AttributeService 12128: Merged V2.2 to V3.0 11530: Merged V2.1 to V2.2 11499: Defensive clear of the security context to avoid any ticket sharing for a given user - ETWOTWO-326 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@12501 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -40,54 +40,6 @@ CREATE TABLE alf_qname
|
||||
UNIQUE (ns_id, local_name)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Create temporary table for dynamic (child) QNames
|
||||
CREATE TABLE t_qnames_dyn
|
||||
(
|
||||
qname VARCHAR(255) NOT NULL,
|
||||
namespace VARCHAR(100),
|
||||
namespace_id BIGINT,
|
||||
local_name VARCHAR(200),
|
||||
INDEX tidx_qnd_qn (qname),
|
||||
INDEX tidx_qnd_ns (namespace)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Populate the table with the child association paths
|
||||
-- Query OK, 415312 rows affected (1 min 11.91 sec)
|
||||
INSERT INTO t_qnames_dyn (qname)
|
||||
(
|
||||
SELECT distinct(qname) FROM alf_child_assoc
|
||||
);
|
||||
|
||||
-- Extract the Namespace
|
||||
-- Query OK, 415312 rows affected (20.03 sec)
|
||||
UPDATE t_qnames_dyn SET namespace = CONCAT('FILLER-', SUBSTR(SUBSTRING_INDEX(qname, '}', 1), 2));
|
||||
|
||||
-- Extract the Localname
|
||||
-- Query OK, 415312 rows affected (16.22 sec)
|
||||
UPDATE t_qnames_dyn SET local_name = SUBSTRING_INDEX(qname, '}', -1);
|
||||
|
||||
-- Move the namespaces to the their new home
|
||||
-- Query OK, 4 rows affected (34.59 sec)
|
||||
INSERT INTO alf_namespace (uri, version)
|
||||
(
|
||||
SELECT
|
||||
distinct(x.namespace), 1
|
||||
FROM
|
||||
(
|
||||
SELECT t.namespace, n.uri FROM t_qnames_dyn t LEFT OUTER JOIN alf_namespace n ON (n.uri = t.namespace)
|
||||
) x
|
||||
WHERE
|
||||
x.uri IS NULL
|
||||
);
|
||||
|
||||
-- Record the new namespace IDs
|
||||
-- Query OK, 415312 rows affected (10.41 sec)
|
||||
UPDATE t_qnames_dyn t SET t.namespace_id = (SELECT ns.id FROM alf_namespace ns WHERE ns.uri = t.namespace);
|
||||
|
||||
-- Recoup some storage
|
||||
ALTER TABLE t_qnames_dyn DROP COLUMN namespace;
|
||||
OPTIMIZE TABLE t_qnames_dyn;
|
||||
|
||||
-- Create temporary table to hold static QNames
|
||||
CREATE TABLE t_qnames
|
||||
(
|
||||
@@ -188,6 +140,62 @@ UPDATE t_qnames t SET t.qname_id =
|
||||
WHERE ns.uri = t.namespace AND q.local_name = t.localname
|
||||
);
|
||||
|
||||
-- ----------------------------
|
||||
-- SHORTCUT:
|
||||
-- Up to this point, we have been extracting static data. The data can be dumped and loaded
|
||||
-- to do faster testing of the ugprades:
|
||||
-- mysqldump derek1 alf_qname alf_namespace t_qnames > extracted-qnames.sql
|
||||
-- Load the dump file and continue from this point
|
||||
-- ----------------------------
|
||||
|
||||
-- Create temporary table for dynamic (child) QNames
|
||||
CREATE TABLE t_qnames_dyn
|
||||
(
|
||||
qname VARCHAR(255) NOT NULL,
|
||||
namespace VARCHAR(100),
|
||||
namespace_id BIGINT,
|
||||
local_name VARCHAR(200),
|
||||
INDEX tidx_qnd_qn (qname),
|
||||
INDEX tidx_qnd_ns (namespace)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Populate the table with the child association paths
|
||||
-- Query OK, 415312 rows affected (1 min 11.91 sec)
|
||||
INSERT INTO t_qnames_dyn (qname)
|
||||
(
|
||||
SELECT distinct(qname) FROM alf_child_assoc
|
||||
);
|
||||
|
||||
-- Extract the Namespace
|
||||
-- Query OK, 415312 rows affected (20.03 sec)
|
||||
UPDATE t_qnames_dyn SET namespace = CONCAT('FILLER-', SUBSTR(SUBSTRING_INDEX(qname, '}', 1), 2));
|
||||
|
||||
-- Extract the Localname
|
||||
-- Query OK, 415312 rows affected (16.22 sec)
|
||||
UPDATE t_qnames_dyn SET local_name = SUBSTRING_INDEX(qname, '}', -1);
|
||||
|
||||
-- Move the namespaces to the their new home
|
||||
-- Query OK, 4 rows affected (34.59 sec)
|
||||
INSERT INTO alf_namespace (uri, version)
|
||||
(
|
||||
SELECT
|
||||
distinct(x.namespace), 1
|
||||
FROM
|
||||
(
|
||||
SELECT t.namespace, n.uri FROM t_qnames_dyn t LEFT OUTER JOIN alf_namespace n ON (n.uri = t.namespace)
|
||||
) x
|
||||
WHERE
|
||||
x.uri IS NULL
|
||||
);
|
||||
|
||||
-- Record the new namespace IDs
|
||||
-- Query OK, 415312 rows affected (10.41 sec)
|
||||
UPDATE t_qnames_dyn t SET t.namespace_id = (SELECT ns.id FROM alf_namespace ns WHERE ns.uri = t.namespace);
|
||||
|
||||
-- Recoup some storage
|
||||
ALTER TABLE t_qnames_dyn DROP COLUMN namespace;
|
||||
OPTIMIZE TABLE t_qnames_dyn;
|
||||
|
||||
-- ----------------------------
|
||||
-- Populate the Permissions --
|
||||
-- ----------------------------
|
||||
@@ -263,24 +271,40 @@ INSERT INTO t_alf_store (version, protocol, identifier, root_node_id)
|
||||
SELECT 1, protocol, identifier, root_node_id FROM alf_store
|
||||
;
|
||||
|
||||
-- Add type_qname index for nodes
|
||||
CREATE INDEX tidx_node_tqn ON alf_node (type_qname);
|
||||
-- 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;
|
||||
INSERT INTO t_summary_nstat (node_id, transaction_id)
|
||||
SELECT node_id, transaction_id FROM alf_node_status WHERE node_id IS NOT NULL;
|
||||
|
||||
-- Copy data over
|
||||
LOCK TABLES
|
||||
t_alf_node WRITE,
|
||||
alf_node AS n READ,
|
||||
t_summary_nstat AS nstat READ,
|
||||
t_alf_store AS s READ,
|
||||
t_qnames AS q READ
|
||||
;
|
||||
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_creator, audit_created, audit_modifier, audit_modified, audit_accessed
|
||||
)
|
||||
SELECT
|
||||
SELECT STRAIGHT_JOIN
|
||||
n.id, 1, s.id, n.uuid, nstat.transaction_id, false, q.qname_id, n.acl_id,
|
||||
null, null, null, null
|
||||
null, null, null, null, null
|
||||
FROM
|
||||
alf_node n
|
||||
JOIN t_qnames q ON (q.qname = n.type_qname)
|
||||
JOIN alf_node_status nstat ON (nstat.node_id = n.id)
|
||||
JOIN t_alf_store s ON (s.protocol = nstat.protocol AND s.identifier = nstat.identifier)
|
||||
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)
|
||||
;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t_summary_nstat;
|
||||
|
||||
-- Hook the store up to the root node
|
||||
ALTER TABLE t_alf_store
|
||||
@@ -327,8 +351,8 @@ CREATE TABLE t_alf_child_assoc
|
||||
version BIGINT NOT NULL,
|
||||
parent_node_id BIGINT NOT NULL,
|
||||
type_qname_id BIGINT NOT NULL,
|
||||
child_node_name VARCHAR(50) 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(100) NOT NULL,
|
||||
@@ -344,24 +368,31 @@ CREATE TABLE t_alf_child_assoc
|
||||
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, child_node_name_crc)
|
||||
UNIQUE (parent_node_id, type_qname_id, child_node_name_crc, child_node_name)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
-- Query OK, 830217 rows affected (11 min 59.10 sec)
|
||||
LOCK TABLES
|
||||
t_alf_child_assoc WRITE,
|
||||
alf_child_assoc AS ca READ,
|
||||
t_qnames_dyn AS tqndyn READ,
|
||||
t_qnames AS tqn READ
|
||||
;
|
||||
INSERT INTO t_alf_child_assoc
|
||||
(
|
||||
id, version,
|
||||
parent_node_id, child_node_id,
|
||||
child_node_name, child_node_name_crc,
|
||||
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
|
||||
SELECT STRAIGHT_JOIN
|
||||
ca.id, 1,
|
||||
ca.parent_node_id, ca.child_node_id,
|
||||
ca.child_node_name, child_node_name_crc,
|
||||
ca.parent_node_id,
|
||||
tqn.qname_id,
|
||||
ca.child_node_name_crc, ca.child_node_name,
|
||||
ca.child_node_id,
|
||||
tqndyn.namespace_id, tqndyn.local_name,
|
||||
ca.is_primary, ca.assoc_index
|
||||
FROM
|
||||
@@ -369,6 +400,7 @@ INSERT INTO t_alf_child_assoc
|
||||
JOIN t_qnames_dyn tqndyn ON (ca.qname = tqndyn.qname)
|
||||
JOIN t_qnames tqn ON (ca.type_qname = tqn.qname)
|
||||
;
|
||||
UNLOCK TABLES;
|
||||
|
||||
-- Clean up
|
||||
DROP TABLE t_qnames_dyn;
|
||||
@@ -396,20 +428,26 @@ CREATE TABLE t_alf_node_assoc
|
||||
UNIQUE (source_node_id, target_node_id, type_qname_id)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
LOCK TABLES
|
||||
t_alf_node_assoc WRITE,
|
||||
alf_node_assoc AS na READ,
|
||||
t_qnames AS tqn READ
|
||||
;
|
||||
INSERT INTO t_alf_node_assoc
|
||||
(
|
||||
id, version,
|
||||
source_node_id, target_node_id,
|
||||
type_qname_id
|
||||
)
|
||||
SELECT
|
||||
SELECT STRAIGHT_JOIN
|
||||
na.id, 1,
|
||||
na.source_node_id, na.source_node_id,
|
||||
na.source_node_id, na.target_node_id,
|
||||
tqn.qname_id
|
||||
FROM
|
||||
alf_node_assoc na
|
||||
JOIN t_qnames tqn ON (na.type_qname = tqn.qname)
|
||||
;
|
||||
UNLOCK TABLES;
|
||||
|
||||
-- Clean up
|
||||
DROP TABLE alf_node_assoc;
|
||||
@@ -463,8 +501,12 @@ CREATE TABLE t_alf_node_aspects
|
||||
PRIMARY KEY (node_id, qname_id)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
LOCK TABLES
|
||||
t_alf_node_aspects WRITE,
|
||||
alf_node_aspects AS na READ,
|
||||
t_qnames AS tqn READ
|
||||
;
|
||||
-- Note the omission of sys:referencable. This is implicit.
|
||||
-- Query OK, 415051 rows affected (17.59 sec)
|
||||
INSERT INTO t_alf_node_aspects
|
||||
(
|
||||
node_id, qname_id
|
||||
@@ -476,11 +518,9 @@ INSERT INTO t_alf_node_aspects
|
||||
alf_node_aspects na
|
||||
JOIN t_qnames tqn ON (na.qname = tqn.qname)
|
||||
WHERE
|
||||
tqn.qname NOT IN
|
||||
(
|
||||
'{http://www.alfresco.org/model/system/1.0}referenceable'
|
||||
)
|
||||
tqn.qname != '{http://www.alfresco.org/model/system/1.0}referenceable'
|
||||
;
|
||||
UNLOCK TABLES;
|
||||
|
||||
-- Clean up
|
||||
DROP TABLE alf_node_aspects;
|
||||
@@ -609,6 +649,7 @@ ALTER TABLE t_avm_store_properties RENAME TO avm_store_properties;
|
||||
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,
|
||||
@@ -618,7 +659,6 @@ CREATE TABLE t_avm_node_properties
|
||||
double_value DOUBLE PRECISION,
|
||||
string_value TEXT,
|
||||
serializable_value BLOB,
|
||||
qname_id BIGINT NOT NULL,
|
||||
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),
|
||||
@@ -722,16 +762,23 @@ CREATE TABLE t_alf_node_properties
|
||||
) TYPE=InnoDB;
|
||||
|
||||
-- Copy values over
|
||||
LOCK TABLES
|
||||
t_alf_node_properties WRITE,
|
||||
alf_node_properties AS np READ,
|
||||
t_prop_types AS ptypes_actual READ,
|
||||
t_prop_types AS ptypes_persisted READ,
|
||||
t_qnames AS tqn READ
|
||||
;
|
||||
INSERT INTO t_alf_node_properties
|
||||
(
|
||||
node_id, qname_id, list_index, locale_id,
|
||||
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, tqn.qname_id, -1, 1,
|
||||
np.node_id, tqn.qname_id, 1, -1,
|
||||
ptypes_actual.type_id, ptypes_persisted.type_id,
|
||||
np.boolean_value, np.long_value, np.float_value, np.double_value,
|
||||
np.string_value,
|
||||
@@ -744,6 +791,7 @@ INSERT INTO t_alf_node_properties
|
||||
WHERE
|
||||
np.attribute_value IS NULL
|
||||
;
|
||||
UNLOCK TABLES;
|
||||
-- Update cm:auditable properties on the nodes
|
||||
UPDATE t_alf_node n SET audit_creator =
|
||||
(
|
||||
@@ -798,6 +846,19 @@ UPDATE t_alf_node n SET audit_modified =
|
||||
qn.local_name = 'modified'
|
||||
);
|
||||
-- Remove the unused cm:auditable properties
|
||||
-- SHORTCUT:
|
||||
-- The qname_id values can be determined up front
|
||||
-- SELECT * FROM
|
||||
-- alf_qname
|
||||
-- JOIN alf_namespace ON (alf_qname.ns_id = alf_namespace.id)
|
||||
-- WHERE
|
||||
-- alf_namespace.uri = 'FILLER-http://www.alfresco.org/model/content/1.0' AND
|
||||
-- alf_qname.local_name IN ('creator', 'created', 'modifier', 'modified')
|
||||
-- ;
|
||||
-- DELETE t_alf_node_properties
|
||||
-- FROM t_alf_node_properties
|
||||
-- WHERE
|
||||
-- qname_id IN (13, 14, 23, 24);
|
||||
DELETE t_alf_node_properties
|
||||
FROM t_alf_node_properties
|
||||
JOIN alf_qname ON (t_alf_node_properties.qname_id = alf_qname.id)
|
||||
@@ -810,14 +871,14 @@ DELETE t_alf_node_properties
|
||||
-- Copy all MLText values over
|
||||
INSERT INTO t_alf_node_properties
|
||||
(
|
||||
node_id, qname_id, list_index, locale_id,
|
||||
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, tqn.qname_id, -1, loc.id,
|
||||
np.node_id, tqn.qname_id, loc.id, -1,
|
||||
-1, 0,
|
||||
FALSE, 0, 0, 0,
|
||||
a2.string_value,
|
||||
@@ -838,6 +899,7 @@ 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
|
||||
;
|
||||
DELETE FROM t_alf_node_properties WHERE actual_type_n = -1;
|
||||
|
||||
-- Delete the node properties and move the fixed values over
|
||||
DROP TABLE alf_node_properties;
|
||||
|
@@ -63,20 +63,38 @@ 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;
|
||||
INSERT INTO t_summary_nstat (node_id, transaction_id)
|
||||
SELECT node_id, transaction_id FROM alf_node_status WHERE node_id IS NOT NULL;
|
||||
|
||||
-- Copy data over
|
||||
LOCK TABLES
|
||||
t_alf_node WRITE,
|
||||
alf_node AS n READ,
|
||||
t_summary_nstat AS nstat READ,
|
||||
t_alf_store AS s READ
|
||||
;
|
||||
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_creator, audit_created, audit_modifier, audit_modified, audit_accessed
|
||||
)
|
||||
SELECT
|
||||
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, null, null, null, null
|
||||
FROM
|
||||
alf_node n
|
||||
JOIN alf_node_status nstat ON (nstat.node_id = n.id)
|
||||
JOIN t_alf_store s ON (s.protocol = nstat.protocol AND s.identifier = nstat.identifier)
|
||||
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)
|
||||
;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t_summary_nstat;
|
||||
|
||||
-- Hook the store up to the root node
|
||||
ALTER TABLE t_alf_store
|
||||
@@ -123,8 +141,8 @@ CREATE TABLE t_alf_child_assoc
|
||||
version BIGINT NOT NULL,
|
||||
parent_node_id BIGINT NOT NULL,
|
||||
type_qname_id BIGINT NOT NULL,
|
||||
child_node_name VARCHAR(50) 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(100) NOT NULL,
|
||||
@@ -140,28 +158,35 @@ CREATE TABLE t_alf_child_assoc
|
||||
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, child_node_name_crc)
|
||||
UNIQUE (parent_node_id, type_qname_id, child_node_name_crc, child_node_name)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
LOCK TABLES
|
||||
t_alf_child_assoc WRITE,
|
||||
alf_child_assoc AS ca READ
|
||||
;
|
||||
INSERT INTO t_alf_child_assoc
|
||||
(
|
||||
id, version,
|
||||
parent_node_id, child_node_id,
|
||||
child_node_name, child_node_name_crc,
|
||||
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
|
||||
SELECT STRAIGHT_JOIN
|
||||
ca.id, 1,
|
||||
ca.parent_node_id, ca.child_node_id,
|
||||
ca.child_node_name, child_node_name_crc,
|
||||
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
|
||||
;
|
||||
UNLOCK TABLES;
|
||||
|
||||
-- Clean up
|
||||
DROP TABLE alf_child_assoc;
|
||||
@@ -188,19 +213,24 @@ CREATE TABLE t_alf_node_assoc
|
||||
UNIQUE (source_node_id, target_node_id, type_qname_id)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
LOCK TABLES
|
||||
t_alf_node_assoc WRITE,
|
||||
alf_node_assoc AS na READ
|
||||
;
|
||||
INSERT INTO t_alf_node_assoc
|
||||
(
|
||||
id, version,
|
||||
source_node_id, target_node_id,
|
||||
type_qname_id
|
||||
)
|
||||
SELECT
|
||||
SELECT STRAIGHT_JOIN
|
||||
na.id, 1,
|
||||
na.source_node_id, na.source_node_id,
|
||||
na.source_node_id, na.target_node_id,
|
||||
na.type_qname_id
|
||||
FROM
|
||||
alf_node_assoc na
|
||||
;
|
||||
UNLOCK TABLES;
|
||||
|
||||
-- Clean up
|
||||
DROP TABLE alf_node_assoc;
|
||||
@@ -254,6 +284,12 @@ CREATE TABLE t_alf_node_aspects
|
||||
PRIMARY KEY (node_id, qname_id)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
LOCK TABLES
|
||||
t_alf_node_aspects WRITE,
|
||||
alf_node_aspects AS na READ,
|
||||
alf_qname AS qn READ,
|
||||
alf_namespace AS ns READ
|
||||
;
|
||||
-- Note the omission of sys:referencable. This is implicit.
|
||||
INSERT INTO t_alf_node_aspects
|
||||
(
|
||||
@@ -270,6 +306,7 @@ INSERT INTO t_alf_node_aspects
|
||||
ns.uri != 'http://www.alfresco.org/model/system/1.0' OR
|
||||
qn.local_name != 'referenceable'
|
||||
;
|
||||
UNLOCK TABLES;
|
||||
|
||||
-- Clean up
|
||||
DROP TABLE alf_node_aspects;
|
||||
@@ -353,6 +390,7 @@ ALTER TABLE t_avm_store_properties RENAME TO avm_store_properties;
|
||||
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,
|
||||
@@ -362,7 +400,6 @@ CREATE TABLE t_avm_node_properties
|
||||
double_value DOUBLE PRECISION,
|
||||
string_value TEXT,
|
||||
serializable_value BLOB,
|
||||
qname_id BIGINT NOT NULL,
|
||||
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),
|
||||
@@ -441,16 +478,20 @@ CREATE TABLE t_alf_node_properties
|
||||
) TYPE=InnoDB;
|
||||
|
||||
-- Copy values over
|
||||
LOCK TABLES
|
||||
t_alf_node_properties WRITE,
|
||||
alf_node_properties AS np READ
|
||||
;
|
||||
INSERT INTO t_alf_node_properties
|
||||
(
|
||||
node_id, qname_id, list_index, locale_id,
|
||||
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.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,
|
||||
@@ -460,6 +501,7 @@ INSERT INTO t_alf_node_properties
|
||||
WHERE
|
||||
np.attribute_value IS NULL
|
||||
;
|
||||
UNLOCK TABLES;
|
||||
-- Update cm:auditable properties on the nodes
|
||||
UPDATE t_alf_node n SET audit_creator =
|
||||
(
|
||||
@@ -553,6 +595,7 @@ 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
|
||||
;
|
||||
DELETE FROM t_alf_node_properties WHERE actual_type_n = -1;
|
||||
|
||||
-- Delete the node properties and move the fixed values over
|
||||
DROP TABLE alf_node_properties;
|
||||
|
Reference in New Issue
Block a user