diff --git a/.travis.yml b/.travis.yml index 5f7b6d1ceb..2fccd4cc6a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,7 +55,7 @@ jobs: before_script: - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.3.10 + - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0 script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext01TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - name: "Repository - AppContext02TestSuite" @@ -70,7 +70,7 @@ jobs: before_script: - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.3.10 + - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0 script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - name: "Repository - AppContext04TestSuite" @@ -78,7 +78,7 @@ jobs: before_script: - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.3.10 + - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0 script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - name: "Repository - AppContext05TestSuite" @@ -97,7 +97,7 @@ jobs: before_script: - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.3.10 + - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0 script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContext06TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - name: "Repository - AppContextExtraTestSuite" @@ -105,7 +105,7 @@ jobs: before_script: - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.3.10 + - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0 script: travis_wait 20 mvn -B test -pl repository -Dtest=AppContextExtraTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - name: "Repository - MiscContextTestSuite" @@ -113,7 +113,7 @@ jobs: before_script: - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.3.10 + - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0 script: travis_wait 20 mvn -B test -pl repository -Dtest=MiscContextTestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - name: "Repository - SearchTestSuite" @@ -205,7 +205,7 @@ jobs: before_script: - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.3.10 + - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0 script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext02TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - name: "Remote-api - AppContext03TestSuite" @@ -213,7 +213,7 @@ jobs: before_script: - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.3.10 + - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0 script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext03TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - name: "Remote-api - AppContext04TestSuite" @@ -221,7 +221,7 @@ jobs: before_script: - docker run -d -p 5433:5432 -e POSTGRES_PASSWORD=alfresco -e POSTGRES_USER=alfresco -e POSTGRES_DB=alfresco postgres:13.1 postgres -c 'max_connections=300' - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1 - - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.3.10 + - docker run -d -p 8090:8090 -e JAVA_OPTS=" -Xms256m -Xmx256m" alfresco/alfresco-transform-core-aio:2.4.0 script: travis_wait 20 mvn -B test -pl remote-api -Dtest=AppContext04TestSuite -Ddb.driver=org.postgresql.Driver -Ddb.name=alfresco -Ddb.url=jdbc:postgresql://localhost:5433/alfresco -Ddb.username=alfresco -Ddb.password=alfresco - name: "Remote-api - AppContextExtraTestSuite" diff --git a/core/pom.xml b/core/pom.xml index 265bf6c5f8..c19b82f3c2 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -7,7 +7,7 @@ org.alfresco alfresco-community-repo - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/data-model/pom.xml b/data-model/pom.xml index 2ce95c8e7a..a293548463 100644 --- a/data-model/pom.xml +++ b/data-model/pom.xml @@ -7,7 +7,7 @@ org.alfresco alfresco-community-repo - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/packaging/distribution/pom.xml b/packaging/distribution/pom.xml index 8fc86bc906..3140f06ff8 100644 --- a/packaging/distribution/pom.xml +++ b/packaging/distribution/pom.xml @@ -9,6 +9,6 @@ org.alfresco alfresco-community-repo-packaging - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/packaging/docker-alfresco/pom.xml b/packaging/docker-alfresco/pom.xml index 1e5ef82144..9f4ea18b96 100644 --- a/packaging/docker-alfresco/pom.xml +++ b/packaging/docker-alfresco/pom.xml @@ -7,7 +7,7 @@ org.alfresco alfresco-community-repo-packaging - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/packaging/pom.xml b/packaging/pom.xml index 948de582c1..83fbad52ff 100644 --- a/packaging/pom.xml +++ b/packaging/pom.xml @@ -7,7 +7,7 @@ org.alfresco alfresco-community-repo - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/packaging/tests/environment/.env b/packaging/tests/environment/.env index bf5f645726..c402b66a21 100644 --- a/packaging/tests/environment/.env +++ b/packaging/tests/environment/.env @@ -1,4 +1,4 @@ -TRANSFORMERS_TAG=2.3.10 +TRANSFORMERS_TAG=2.4.0 SOLR6_TAG=2.0.1 POSTGRES_TAG=13.1 ACTIVEMQ_TAG=5.16.1 diff --git a/packaging/tests/pom.xml b/packaging/tests/pom.xml index fd36db2795..e9e090c903 100644 --- a/packaging/tests/pom.xml +++ b/packaging/tests/pom.xml @@ -6,7 +6,7 @@ org.alfresco alfresco-community-repo-packaging - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/packaging/tests/tas-cmis/pom.xml b/packaging/tests/tas-cmis/pom.xml index 4a8b4105f6..f44a3ca69d 100644 --- a/packaging/tests/tas-cmis/pom.xml +++ b/packaging/tests/tas-cmis/pom.xml @@ -9,7 +9,7 @@ org.alfresco alfresco-community-repo-tests - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/packaging/tests/tas-email/pom.xml b/packaging/tests/tas-email/pom.xml index f7449c59f4..cfd92e19cb 100644 --- a/packaging/tests/tas-email/pom.xml +++ b/packaging/tests/tas-email/pom.xml @@ -9,7 +9,7 @@ org.alfresco alfresco-community-repo-tests - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/packaging/tests/tas-integration/pom.xml b/packaging/tests/tas-integration/pom.xml index f6e0200af1..059b06527e 100644 --- a/packaging/tests/tas-integration/pom.xml +++ b/packaging/tests/tas-integration/pom.xml @@ -9,7 +9,7 @@ org.alfresco alfresco-community-repo-tests - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/packaging/tests/tas-restapi/pom.xml b/packaging/tests/tas-restapi/pom.xml index 9b90336551..b01f16dd64 100644 --- a/packaging/tests/tas-restapi/pom.xml +++ b/packaging/tests/tas-restapi/pom.xml @@ -9,7 +9,7 @@ org.alfresco alfresco-community-repo-tests - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/packaging/tests/tas-webdav/pom.xml b/packaging/tests/tas-webdav/pom.xml index 38970e471b..aae8cf64bf 100644 --- a/packaging/tests/tas-webdav/pom.xml +++ b/packaging/tests/tas-webdav/pom.xml @@ -9,7 +9,7 @@ org.alfresco alfresco-community-repo-tests - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/packaging/war/pom.xml b/packaging/war/pom.xml index e36009bbf4..7bda6efb4c 100644 --- a/packaging/war/pom.xml +++ b/packaging/war/pom.xml @@ -7,7 +7,7 @@ org.alfresco alfresco-community-repo-packaging - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/pom.xml b/pom.xml index d8ef7e5600..dd3a0d286e 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 alfresco-community-repo - 11.23-SNAPSHOT + 11.35-SNAPSHOT pom Alfresco Community Repo Parent @@ -44,7 +44,7 @@ 1.0.12 6.0 - 2.4 + 2.4.1 7.1 6.0.1 1.2.15 @@ -622,7 +622,7 @@ com.drewnoakes metadata-extractor - 2.15.0 + 2.16.0 diff --git a/remote-api/pom.xml b/remote-api/pom.xml index 0bd72e0b0c..df4b784333 100644 --- a/remote-api/pom.xml +++ b/remote-api/pom.xml @@ -7,7 +7,7 @@ org.alfresco alfresco-community-repo - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/repository/pom.xml b/repository/pom.xml index 5fc7335807..17ded7f181 100644 --- a/repository/pom.xml +++ b/repository/pom.xml @@ -7,7 +7,7 @@ org.alfresco alfresco-community-repo - 11.23-SNAPSHOT + 11.35-SNAPSHOT diff --git a/repository/src/main/java/org/alfresco/repo/invitation/InvitationServiceImpl.java b/repository/src/main/java/org/alfresco/repo/invitation/InvitationServiceImpl.java index ea9aeb9a51..524461d524 100644 --- a/repository/src/main/java/org/alfresco/repo/invitation/InvitationServiceImpl.java +++ b/repository/src/main/java/org/alfresco/repo/invitation/InvitationServiceImpl.java @@ -1997,17 +1997,29 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli private void sendInviteEmail(InviteSender inviteSender, List invitePropNames, String inviteId, String emailTemplateXpath, String emailSubjectKey, Map executionVariables) { - if (isSendEmails()) + // Do nothing if emails disabled. + if (isSendEmails() == false) + { + return; + } + + // send email to the invitee if possible - but don't fail the invitation if email cannot be sent + try { Map properties = makePropertiesFromContextVariables(executionVariables, invitePropNames); String packageRef = getPackageRef(executionVariables); properties.put(InviteNominatedSender.WF_PACKAGE, packageRef); - + properties.put(InviteNominatedSender.WF_INSTANCE_ID, inviteId); - + inviteSender.sendMail(emailTemplateXpath, emailSubjectKey, properties); } + catch (Exception e) + { + // Swallow exception + logger.error("unable to send invite email", e); + } } diff --git a/repository/src/main/java/org/alfresco/repo/rendition2/TransformationOptionsConverter.java b/repository/src/main/java/org/alfresco/repo/rendition2/TransformationOptionsConverter.java index dd1dca3074..107abb945d 100644 --- a/repository/src/main/java/org/alfresco/repo/rendition2/TransformationOptionsConverter.java +++ b/repository/src/main/java/org/alfresco/repo/rendition2/TransformationOptionsConverter.java @@ -2,7 +2,7 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2020 Alfresco Software Limited + * Copyright (C) 2005 - 2021 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -52,6 +52,7 @@ import java.util.Set; import java.util.StringJoiner; import static org.alfresco.repo.content.MimetypeMap.MIMETYPE_PDF; +import static org.alfresco.repo.content.transform.magick.ImageTransformationOptions.OPT_COMMAND_OPTIONS; import static org.alfresco.repo.rendition2.RenditionDefinition2.ALLOW_ENLARGEMENT; import static org.alfresco.repo.rendition2.RenditionDefinition2.ALLOW_PDF_ENLARGEMENT; import static org.alfresco.repo.rendition2.RenditionDefinition2.ALPHA_REMOVE; @@ -122,6 +123,7 @@ public class TransformationOptionsConverter implements InitializingBean IMAGE_OPTIONS.addAll(RESIZE_OPTIONS); IMAGE_OPTIONS.add(AUTO_ORIENT); IMAGE_OPTIONS.add(ALPHA_REMOVE); + IMAGE_OPTIONS.add(OPT_COMMAND_OPTIONS); } private static Set PDF_OPTIONS = new HashSet<>(Arrays.asList(new String[] @@ -284,6 +286,8 @@ public class TransformationOptionsConverter implements InitializingBean } opts.setSourceOptionsList(sourceOptionsList); } + + ifSet(options, OPT_COMMAND_OPTIONS, (v) -> opts.setCommandOptions(v)); } } else @@ -361,13 +365,11 @@ public class TransformationOptionsConverter implements InitializingBean { ImageTransformationOptions opts = (ImageTransformationOptions) options; - // TODO We don't support this any more for security reasons, however it might be possible to - // extract some of the well know values and add them to the newer ImageMagick transform options. + // From a security viewpoint it would be better not to support the option of passing anything to + // ImageMagick. It might be possible to extract some of the well know values and add them to the + // T-Engine engine_config. String commandOptions = opts.getCommandOptions(); - if (commandOptions != null && !commandOptions.isBlank()) - { - logger.error("ImageMagick commandOptions are no longer supported for security reasons: " + commandOptions); - } + ifSet(commandOptions != null && !commandOptions.isBlank(), map, OPT_COMMAND_OPTIONS, commandOptions); ImageResizeOptions imageResizeOptions = opts.getResizeOptions(); if (imageResizeOptions != null) diff --git a/repository/src/main/java/org/alfresco/util/schemacomp/SchemaDifferenceHelper.java b/repository/src/main/java/org/alfresco/util/schemacomp/SchemaDifferenceHelper.java index 9b12bcafd1..e6785f8f8c 100644 --- a/repository/src/main/java/org/alfresco/util/schemacomp/SchemaDifferenceHelper.java +++ b/repository/src/main/java/org/alfresco/util/schemacomp/SchemaDifferenceHelper.java @@ -78,19 +78,20 @@ public class SchemaDifferenceHelper public String findPatchCausingDifference(Difference difference) { - for (SchemaUpgradeScriptPatch patch: optionalUpgradePatches) + String differenceText = describe(difference); + for (SchemaUpgradeScriptPatch patch : optionalUpgradePatches) { - if (!isPatchApplied(patch)) - { - List problemPatterns = getProblemsPatterns(patch); - for (String problemPattern: problemPatterns) - { - if (describe(difference).matches(problemPattern)) - { - return patch.getId(); - } - } - } + if (!isPatchApplied(patch)) + { + List problemPatterns = getProblemsPatterns(patch); + for (String problemPattern : problemPatterns) + { + if (differenceText.matches(problemPattern)) + { + return patch.getId(); + } + } + } } return null; diff --git a/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/AlfrescoCreate-RepoTables.sql b/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/AlfrescoCreate-RepoTables.sql index f106adb6a8..76a1107baa 100644 --- a/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/AlfrescoCreate-RepoTables.sql +++ b/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/AlfrescoCreate-RepoTables.sql @@ -162,28 +162,16 @@ CREATE TABLE alf_authority_alias CONSTRAINT fk_alf_autha_ali FOREIGN KEY (alias_id) REFERENCES alf_authority (id) ) ENGINE=InnoDB; -CREATE TABLE alf_server -( - id BIGINT NOT NULL AUTO_INCREMENT, - version BIGINT NOT NULL, - ip_address VARCHAR(39) NOT NULL, - PRIMARY KEY (id), - UNIQUE KEY ip_address (ip_address) -) ENGINE=InnoDB; - CREATE TABLE alf_transaction ( id BIGINT NOT NULL AUTO_INCREMENT, version BIGINT NOT NULL, - server_id BIGINT, change_txn_id VARCHAR(56) NOT NULL, commit_time_ms BIGINT, PRIMARY KEY (id), KEY idx_alf_txn_ctms (commit_time_ms, id), KEY idx_alf_txn_ctms_sc (commit_time_ms), - key idx_alf_txn_id_ctms (id, commit_time_ms), - KEY fk_alf_txn_svr (server_id), - CONSTRAINT fk_alf_txn_svr FOREIGN KEY (server_id) REFERENCES alf_server (id) + key idx_alf_txn_id_ctms (id, commit_time_ms) ) ENGINE=InnoDB; CREATE TABLE alf_store diff --git a/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/Schema-Reference-ALF.xml b/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/Schema-Reference-ALF.xml index 09b0fc371b..515393e8e4 100644 --- a/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/Schema-Reference-ALF.xml +++ b/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/Schema-Reference-ALF.xml @@ -2474,38 +2474,6 @@ - - - - bigint - false - true - - - bigint - false - false - - - varchar(39) - false - false - - - - - id - - - - - - - ip_address - - - -
@@ -2652,17 +2620,12 @@ false false - - bigint - true - false - - + varchar(56) false false - + bigint true false @@ -2673,13 +2636,6 @@ id - - - server_id - alf_server - id - - @@ -2698,11 +2654,6 @@ commit_time_ms - - - server_id - -
diff --git a/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/AlfrescoCreate-RepoTables.sql b/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/AlfrescoCreate-RepoTables.sql index b5176f5fa6..5740ad18d5 100644 --- a/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/AlfrescoCreate-RepoTables.sql +++ b/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/AlfrescoCreate-RepoTables.sql @@ -174,31 +174,18 @@ CREATE UNIQUE INDEX auth_id ON alf_authority_alias (auth_id, alias_id); CREATE INDEX fk_alf_autha_ali ON alf_authority_alias (alias_id); CREATE INDEX fk_alf_autha_aut ON alf_authority_alias (auth_id); -CREATE SEQUENCE alf_server_seq START WITH 1 INCREMENT BY 1; -CREATE TABLE alf_server -( - id INT8 NOT NULL, - version INT8 NOT NULL, - ip_address VARCHAR(39) NOT NULL, - PRIMARY KEY (id) -); -CREATE UNIQUE INDEX ip_address ON alf_server (ip_address); - CREATE SEQUENCE alf_transaction_seq START WITH 1 INCREMENT BY 1; CREATE TABLE alf_transaction ( id INT8 NOT NULL, version INT8 NOT NULL, - server_id INT8, change_txn_id VARCHAR(56) NOT NULL, commit_time_ms INT8, - PRIMARY KEY (id), - CONSTRAINT fk_alf_txn_svr FOREIGN KEY (server_id) REFERENCES alf_server (id) + PRIMARY KEY (id) ); CREATE INDEX idx_alf_txn_ctms ON alf_transaction (commit_time_ms, id); CREATE INDEX idx_alf_txn_ctms_sc ON alf_transaction (commit_time_ms); CREATE INDEX idx_alf_txn_id_ctms ON alf_transaction (id, commit_time_ms); -CREATE INDEX fk_alf_txn_svr ON alf_transaction (server_id); CREATE SEQUENCE alf_store_seq START WITH 1 INCREMENT BY 1; CREATE TABLE alf_store diff --git a/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Schema-Reference-ALF.xml b/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Schema-Reference-ALF.xml index 9b549e4ec5..bd5079c166 100644 --- a/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Schema-Reference-ALF.xml +++ b/repository/src/main/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Schema-Reference-ALF.xml @@ -44,7 +44,6 @@ - @@ -2545,38 +2544,6 @@
- - - - int8 - false - false - - - int8 - false - false - - - varchar(39) - false - false - - - - - id - - - - - - - ip_address - - - -
@@ -2723,17 +2690,12 @@ false false - - int8 - true - false - - + varchar(56) false false - + int8 true false @@ -2744,19 +2706,7 @@ id - - - server_id - alf_server - id - - - - - server_id - - commit_time_ms diff --git a/repository/src/main/resources/alfresco/dbscripts/db-schema-context.xml b/repository/src/main/resources/alfresco/dbscripts/db-schema-context.xml index 9f1c79fb9d..606cfc0f1a 100644 --- a/repository/src/main/resources/alfresco/dbscripts/db-schema-context.xml +++ b/repository/src/main/resources/alfresco/dbscripts/db-schema-context.xml @@ -56,6 +56,7 @@ + diff --git a/repository/src/main/resources/alfresco/dbscripts/upgrade/7.1.0/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/remove-alf_server-table.sql b/repository/src/main/resources/alfresco/dbscripts/upgrade/7.1.0/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/remove-alf_server-table.sql new file mode 100644 index 0000000000..7c8086d884 --- /dev/null +++ b/repository/src/main/resources/alfresco/dbscripts/upgrade/7.1.0/org.alfresco.repo.domain.dialect.MySQLInnoDBDialect/remove-alf_server-table.sql @@ -0,0 +1,31 @@ +-- +-- Title: Remove alf_server table +-- Database: MySQL +-- Since: V6.3 +-- Author: David Edwards +-- Author: Alex Mukha +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- + +SET FOREIGN_KEY_CHECKS=0; + +DROP TABLE alf_server; + +ALTER TABLE alf_transaction + DROP FOREIGN KEY fk_alf_txn_svr, + DROP COLUMN server_id; + +SET FOREIGN_KEY_CHECKS=1; + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V7.1.0-remove-alf_server-table'; +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-V7.1.0-remove-alf_server-table', 'Remove alf_server table', + 0, 15000, -1, 15001, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'alf_server table and constraints removed' + ); diff --git a/repository/src/main/resources/alfresco/dbscripts/upgrade/7.1.0/org.alfresco.repo.domain.dialect.PostgreSQLDialect/remove-alf_server-table.sql b/repository/src/main/resources/alfresco/dbscripts/upgrade/7.1.0/org.alfresco.repo.domain.dialect.PostgreSQLDialect/remove-alf_server-table.sql new file mode 100644 index 0000000000..357afd3339 --- /dev/null +++ b/repository/src/main/resources/alfresco/dbscripts/upgrade/7.1.0/org.alfresco.repo.domain.dialect.PostgreSQLDialect/remove-alf_server-table.sql @@ -0,0 +1,26 @@ +-- +-- Title: Remove alf_server table +-- Database: PostgreSQL +-- Since: V6.3 +-- Author: Bruno Bossola +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- + +ALTER TABLE alf_transaction + DROP CONSTRAINT IF EXISTS fk_alf_txn_svr, + DROP COLUMN IF EXISTS server_id; + +DROP TABLE IF EXISTS alf_server; + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V7.1.0-remove-alf_server-table'; +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-V7.1.0-remove-alf_server-table', 'Removes alf_server table and constraints', + 0, 15000, -1, 15001, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'alf_server table and constraints removed' + ); diff --git a/repository/src/main/resources/alfresco/dbscripts/upgrade/7.1.0/remove-alf_server-table.patterns b/repository/src/main/resources/alfresco/dbscripts/upgrade/7.1.0/remove-alf_server-table.patterns new file mode 100644 index 0000000000..04e338851a --- /dev/null +++ b/repository/src/main/resources/alfresco/dbscripts/upgrade/7.1.0/remove-alf_server-table.patterns @@ -0,0 +1,7 @@ +(?i).*expected column .*alf_transaction\.change_txn_id\.order="3".* +(?i).*expected column .*alf_transaction\.commit_time_ms\.order="4".* +(?i).*unexpected column found in database with path: .*alf_transaction\.server_id +(?i).*unexpected foreign key found in database with path: .*alf_transaction\.fk_alf_txn_svr +(?i).*unexpected index found in database with path: .*alf_transaction\.fk_alf_txn_svr +(?i).*unexpected sequence found in database with path: .*alf_server_seq +(?i).*unexpected table found in database with path: .*alf_server diff --git a/repository/src/main/resources/alfresco/messages/patch-service.properties b/repository/src/main/resources/alfresco/messages/patch-service.properties index 49682fd571..ef0c0c90c0 100644 --- a/repository/src/main/resources/alfresco/messages/patch-service.properties +++ b/repository/src/main/resources/alfresco/messages/patch-service.properties @@ -402,4 +402,8 @@ patch.db-V5.2-remove-jbpm-tables-from-db.description=Removes all JBPM related ta patch.db-V6.0-change-set-indexes.description=Add additional indexes to support acl tracking. -patch.db-V6.3-add-indexes-node-transaction.description=Create additional indexes on alf_node and alf_transaction \ No newline at end of file +patch.db-V6.3-add-indexes-node-transaction.description=Create additional indexes on alf_node and alf_transaction + +patch.db-V7.1.0-remove-alf_server-table.description=Removes alf_server table and constraints + + diff --git a/repository/src/main/resources/alfresco/patch/patch-services-context.xml b/repository/src/main/resources/alfresco/patch/patch-services-context.xml index 6d78a839ca..49a5b90d25 100644 --- a/repository/src/main/resources/alfresco/patch/patch-services-context.xml +++ b/repository/src/main/resources/alfresco/patch/patch-services-context.xml @@ -1409,4 +1409,22 @@ classpath:alfresco/dbscripts/upgrade/6.3/${db.script.dialect}/add-indexes-node-transaction.sql - + + + patch.db-V7.1.0-remove-alf_server-table + patch.db-V7.1.0-remove-alf_server-table.description + 0 + 15000 + 15001 + + classpath:alfresco/dbscripts/upgrade/7.1.0/${db.script.dialect}/remove-alf_server-table.sql + + + classpath:alfresco/dbscripts/upgrade/7.1.0/remove-alf_server-table.patterns + + ${system.remove-alf_server-table-from-db.ignored} + + + + diff --git a/repository/src/main/resources/alfresco/repository.properties b/repository/src/main/resources/alfresco/repository.properties index b7f27589da..45289872f0 100644 --- a/repository/src/main/resources/alfresco/repository.properties +++ b/repository/src/main/resources/alfresco/repository.properties @@ -3,7 +3,7 @@ repository.name=Main Repository # Schema number -version.schema=15000 +version.schema=15001 # Directory configuration @@ -1239,3 +1239,6 @@ system.new-node-transaction-indexes.ignored=true # Allows the configuration of maximum limits of the temp files to be deleted or the maximum time allowed to run for the job system.tempFileCleaner.maxFilesToDelete= system.tempFileCleaner.maxTimeToRun= + +# Property to long running migration to remove alf_server in v7+ patch.db-V7.1.0-remove-alf_server-table +system.remove-alf_server-table-from-db.ignored=true diff --git a/repository/src/test/java/org/alfresco/repo/rendition2/TransformationOptionsConverterTest.java b/repository/src/test/java/org/alfresco/repo/rendition2/TransformationOptionsConverterTest.java index 61aab59b7f..5763efe600 100644 --- a/repository/src/test/java/org/alfresco/repo/rendition2/TransformationOptionsConverterTest.java +++ b/repository/src/test/java/org/alfresco/repo/rendition2/TransformationOptionsConverterTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2020 Alfresco Software Limited + * Copyright (C) 2005 - 2021 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -565,4 +565,18 @@ public class TransformationOptionsConverterTest "timeout=-1 " ); } + + @Test + public void testCommandOptionsFromOldOptions() + { + ImageTransformationOptions oldOptions = new ImageTransformationOptions(); + oldOptions.setCommandOptions("-resize 350x50> -background none -gravity center"); + + assertConverterToMapAndBack(oldOptions, MIMETYPE_IMAGE_JPEG, MIMETYPE_IMAGE_PNG, + "ImageTransformationOptions [commandOptions=-resize 350x50> -background none -gravity center, " + + "resizeOptions=null, autoOrient=true]]", + "autoOrient=true " + // this is a default - so is also set when uploading a logo + "commandOptions=-resize 350x50> -background none -gravity center " + + "timeout=-1 "); + } } \ No newline at end of file diff --git a/repository/src/test/java/org/alfresco/util/schemacomp/SchemaBootstrapTest.java b/repository/src/test/java/org/alfresco/util/schemacomp/SchemaBootstrapTest.java index f1bfe14f5f..7a1fff1ea0 100644 --- a/repository/src/test/java/org/alfresco/util/schemacomp/SchemaBootstrapTest.java +++ b/repository/src/test/java/org/alfresco/util/schemacomp/SchemaBootstrapTest.java @@ -33,23 +33,44 @@ import java.io.PrintWriter; import java.util.Arrays; import java.util.List; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpression; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; + import org.alfresco.repo.admin.patch.impl.SchemaUpgradeScriptPatch; import org.alfresco.repo.domain.schema.SchemaBootstrap; import org.alfresco.test_category.OwnJVMTestsCategory; import org.alfresco.util.test.junitrules.ApplicationContextInit; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.RuleChain; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; @Category({OwnJVMTestsCategory.class}) public class SchemaBootstrapTest { - private static final String BOOTSTRAP_TEST_CONTEXT = "classpath*:alfresco/dbscripts/test-bootstrap-context.xml"; + private static final String BOOTSTRAP_TEST_CONTEXT = "classpath*:alfresco/dbscripts/bootstrap-context-test.xml"; + private static final String MAIN_SCHEMA_REFERENCE_FILE = "classpath:alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Schema-Reference-ALF.xml"; + private static final String TEST_SCHEMA_REFERENCE_FILE = "classpath:alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Test-Schema-Reference-ALF.xml"; private static final List TEST_SCHEMA_REFERENCE_URLS = Arrays.asList( - "classpath:alfresco/dbscripts/create/${db.script.dialect}/Test-Schema-Reference-ALF.xml", - "classpath:alfresco/dbscripts/create/${db.script.dialect}/Schema-Reference-ACT.xml"); + TEST_SCHEMA_REFERENCE_FILE, + "classpath:alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Schema-Reference-ACT.xml"); private static ApplicationContextInit APP_CONTEXT_INIT = ApplicationContextInit.createStandardContextWithOverrides(BOOTSTRAP_TEST_CONTEXT); @@ -59,6 +80,17 @@ public class SchemaBootstrapTest private SchemaBootstrap schemaBootstrap; private SchemaUpgradeScriptPatch optionalPatch; + @BeforeClass + public static void beforeClass() throws Exception + { + ResourcePatternResolver rpr = new PathMatchingResourcePatternResolver(SchemaBootstrapTest.class.getClassLoader()); + Document schemaRefXML = loadXML(rpr.getResource(MAIN_SCHEMA_REFERENCE_FILE)); + Node indexes = getIndexesNode(schemaRefXML); + indexes.appendChild(createTestIndex(schemaRefXML)); + Resource testSchemaRef = rpr.getResource(TEST_SCHEMA_REFERENCE_FILE); + updateTestSchemaReferenceFile(testSchemaRef, schemaRefXML); + } + @Before public void setUp() throws Exception { @@ -83,4 +115,47 @@ public class SchemaBootstrapTest + optionalPatch.getId() + " has been run")); } + private static void updateTestSchemaReferenceFile(Resource testSchemaRef, Document newDoc) throws Exception + { + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + StreamResult result = new StreamResult(testSchemaRef.getFile()); + DOMSource source = new DOMSource(newDoc); + transformer.transform(source, result); + } + + private static Element createTestIndex(Document document) + { + Element testIndex = document.createElement("index"); + testIndex.setAttribute("name", "idx_alf_node_test"); + testIndex.setAttribute("unique", "false"); + + Element columnNames = document.createElement("columnnames"); + for (String colName: Arrays.asList("acl_id", "audit_creator")) + { + Element columnName = document.createElement("columnname"); + columnName.setNodeValue(colName); + columnNames.appendChild(columnName); + } + testIndex.appendChild(columnNames); + + return testIndex; + } + + private static Node getIndexesNode(Document document) throws XPathExpressionException + { + XPathFactory xPathfactory = XPathFactory.newInstance(); + XPath xpath = xPathfactory.newXPath(); + XPathExpression expr = xpath.compile("/schema/objects/table[@name='alf_node']/indexes"); + Node indexes = (Node)expr.evaluate(document, XPathConstants.NODE); + return indexes; + } + + private static Document loadXML(Resource resource) throws Exception + { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder; + builder = factory.newDocumentBuilder(); + return builder.parse(resource.getInputStream()); + } } diff --git a/repository/src/test/java/org/alfresco/util/schemacomp/SchemaDifferenceHelperUnitTest.java b/repository/src/test/java/org/alfresco/util/schemacomp/SchemaDifferenceHelperUnitTest.java index 2592e45600..ec5fd4e2cf 100644 --- a/repository/src/test/java/org/alfresco/util/schemacomp/SchemaDifferenceHelperUnitTest.java +++ b/repository/src/test/java/org/alfresco/util/schemacomp/SchemaDifferenceHelperUnitTest.java @@ -43,6 +43,7 @@ import org.alfresco.repo.admin.patch.AppliedPatch; import org.alfresco.repo.admin.patch.PatchService; import org.alfresco.repo.admin.patch.impl.SchemaUpgradeScriptPatch; import org.alfresco.repo.domain.dialect.Dialect; +import org.alfresco.util.schemacomp.model.DbObject; import org.alfresco.util.schemacomp.model.Index; import org.alfresco.util.schemacomp.model.Schema; import org.alfresco.util.schemacomp.model.Table; @@ -125,8 +126,7 @@ public class SchemaDifferenceHelperUnitTest private Difference createDifference() { - Difference difference = new Difference(Where.IN_BOTH_BUT_DIFFERENCE, mock(DbProperty.class), mock(DbProperty.class)); - return difference; + return new Difference(Where.IN_BOTH_BUT_DIFFERENCE, new DbProperty(mock(DbObject.class)), new DbProperty(mock(DbObject.class))); } private Index createTableIndex(String tableName) diff --git a/repository/src/test/java/org/alfresco/util/schemacomp/SchemaReferenceFileTest.java b/repository/src/test/java/org/alfresco/util/schemacomp/SchemaReferenceFileTest.java index 5c620c075d..2488f8be5e 100644 --- a/repository/src/test/java/org/alfresco/util/schemacomp/SchemaReferenceFileTest.java +++ b/repository/src/test/java/org/alfresco/util/schemacomp/SchemaReferenceFileTest.java @@ -2,7 +2,7 @@ * #%L * Alfresco Repository * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited + * Copyright (C) 2005 - 2021 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -25,47 +25,47 @@ */ package org.alfresco.util.schemacomp; - -import static org.junit.Assert.fail; +import static org.junit.Assert.assertTrue; import java.io.ByteArrayOutputStream; import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; import org.alfresco.repo.domain.schema.SchemaBootstrap; import org.alfresco.test_category.OwnJVMTestsCategory; import org.alfresco.util.ApplicationContextHelper; import org.alfresco.util.testing.category.DBTests; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; import org.springframework.context.support.ClassPathXmlApplicationContext; /** - * Test intended for use in the continuous integration system that checks whether the - * schema reference file (for whichever database the tests are being run against) - * is in sync with the actual schema. If the test fails (and the schema comparator is - * in working order) then the most likely cause is that a new up-to-date schema reference file - * needs to be created. + * Test intended for use in the continuous integration system that checks + * whether the schema reference file (for whichever database the tests are being + * run against) is in sync with the actual schema. If the test fails (and the + * schema comparator is in working order) then the most likely cause is that a + * new up-to-date schema reference file needs to be created. *

* Schema reference files are created using the {@link DbToXML} tool. *

- * Note: if no reference file exists then the test will pass, this is to allow piece meal - * introduction of schmea reference files. + * Note: if no reference file exists then the test will pass, this is to allow + * piece meal introduction of schmea reference files. * * @see DbToXML * @author Matt Ward */ -@Category({OwnJVMTestsCategory.class, DBTests.class}) +@Category({ OwnJVMTestsCategory.class, DBTests.class }) public class SchemaReferenceFileTest { private ClassPathXmlApplicationContext ctx; private SchemaBootstrap schemaBootstrap; - + @Before public void setUp() throws Exception { - ctx = (ClassPathXmlApplicationContext) ApplicationContextHelper.getApplicationContext(); + ctx = (ClassPathXmlApplicationContext) ApplicationContextHelper.getApplicationContext(); schemaBootstrap = (SchemaBootstrap) ctx.getBean("schemaBootstrap"); } @@ -74,12 +74,28 @@ public class SchemaReferenceFileTest { ByteArrayOutputStream buff = new ByteArrayOutputStream(); PrintWriter out = new PrintWriter(buff); - int numProblems = schemaBootstrap.validateSchema(null, out); + int maybeProblems = schemaBootstrap.validateSchema(null, out); out.flush(); - - if (numProblems > 0) + + if (maybeProblems > 0) { - fail(buff.toString()); + List errors = computeRealErrors(buff); + assertTrue("\n"+buff, errors.isEmpty()); } } + + private List computeRealErrors(ByteArrayOutputStream buff) + { + String[] lines = buff.toString().split("\\n"); + + List errors = new ArrayList<>(); + for (int i = 0; i < lines.length; i++) + { + String line = lines[i].trim(); + if (line.isEmpty()) + break; + errors.add(line); + } + return errors; + } } diff --git a/repository/src/test/resources/alfresco/dbscripts/test-bootstrap-context.xml b/repository/src/test/resources/alfresco/dbscripts/bootstrap-context-test.xml similarity index 100% rename from repository/src/test/resources/alfresco/dbscripts/test-bootstrap-context.xml rename to repository/src/test/resources/alfresco/dbscripts/bootstrap-context-test.xml diff --git a/repository/src/test/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Test-Schema-Reference-ALF.xml b/repository/src/test/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Test-Schema-Reference-ALF.xml index 927a2fc2a2..0089785445 100644 --- a/repository/src/test/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Test-Schema-Reference-ALF.xml +++ b/repository/src/test/resources/alfresco/dbscripts/create/org.alfresco.repo.domain.dialect.PostgreSQLDialect/Test-Schema-Reference-ALF.xml @@ -44,7 +44,6 @@ - @@ -2551,38 +2550,6 @@

- - - - int8 - false - false - - - int8 - false - false - - - varchar(39) - false - false - - - - - id - - - - - - - ip_address - - - -
@@ -2729,17 +2696,12 @@ false false - - int8 - true - false - - + varchar(56) false false - + int8 true false @@ -2750,19 +2712,7 @@ id - - - server_id - alf_server - id - - - - - server_id - - commit_time_ms