diff --git a/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/migrate-locale-multilingual.sql b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/migrate-locale-multilingual.sql index 92924790f5..02a2d4283c 100644 --- a/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/migrate-locale-multilingual.sql +++ b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.MySQLInnoDBDialect/migrate-locale-multilingual.sql @@ -15,7 +15,7 @@ CREATE TABLE tmp_locale_upgrade KEY idx_tmp_loc_str_v (string_value(42)) ) ENGINE=InnoDB; ---ASSIGN:locale_qname_id=id +--ASSIGN:locale_qname_id=id!-1 SELECT alf_qname.id AS id FROM alf_qname JOIN alf_namespace ON (alf_namespace.id = alf_qname.ns_id) WHERE diff --git a/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/migrate-locale-multilingual.sql b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/migrate-locale-multilingual.sql index c808e382aa..ce878ec266 100644 --- a/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/migrate-locale-multilingual.sql +++ b/config/alfresco/dbscripts/upgrade/4.2/org.hibernate.dialect.PostgreSQLDialect/migrate-locale-multilingual.sql @@ -16,7 +16,7 @@ CREATE TABLE tmp_locale_upgrade CREATE INDEX idx_tmp_loc_n_id ON tmp_locale_upgrade (node_id); CREATE INDEX idx_tmp_loc_str_v ON tmp_locale_upgrade (string_value); ---ASSIGN:locale_qname_id=id +--ASSIGN:locale_qname_id=id!-1 SELECT alf_qname.id AS id FROM alf_qname JOIN alf_namespace ON (alf_namespace.id = alf_qname.ns_id) WHERE diff --git a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java index a29e10e4c7..2150226578 100644 --- a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java +++ b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java @@ -1254,6 +1254,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean StringBuilder sb = new StringBuilder(1024); String fetchVarName = null; String fetchColumnName = null; + Object defaultFetchValue = null; boolean doBatch = false; int batchUpperLimit = 0; int batchSize = 1; @@ -1314,13 +1315,18 @@ public class SchemaBootstrap extends AbstractLifecycleBean throw AlfrescoRuntimeException.create(ERR_STATEMENT_VAR_ASSIGNMENT_BEFORE_SQL, (line - 1), scriptUrl); } String assignStr = sql.substring(9, sql.length()); - String[] assigns = assignStr.split("="); + String[] fetchMapping = assignStr.split("!"); + String[] assigns = fetchMapping[0].split("="); if (assigns.length != 2 || assigns[0].length() == 0 || assigns[1].length() == 0) { throw AlfrescoRuntimeException.create(ERR_STATEMENT_VAR_ASSIGNMENT_FORMAT, (line - 1), scriptUrl); } fetchVarName = assigns[0]; fetchColumnName = assigns[1]; + if (fetchMapping.length > 1 && fetchMapping[1].length() > 0) + { + defaultFetchValue = fetchMapping[1]; + } continue; } // Handle looping control @@ -1474,12 +1480,20 @@ public class SchemaBootstrap extends AbstractLifecycleBean Object fetchedVal = executeStatement(connection, sql, fetchColumnName, optional, line, scriptFile); if (fetchVarName != null && fetchColumnName != null) { - varAssignments.put(fetchVarName, fetchedVal); + if (fetchedVal != null) + { + varAssignments.put(fetchVarName, fetchedVal); + } + else + { + varAssignments.put(fetchVarName, defaultFetchValue); + } } } sb.setLength(0); fetchVarName = null; fetchColumnName = null; + defaultFetchValue = null; doBatch = false; batchUpperLimit = 0; batchSize = 1;