ACS-1180 ACS 7 Stacks: MySQL 8 (#336)

This commit is contained in:
Alan Davis
2021-03-05 11:37:47 +00:00
committed by GitHub
parent f77ceb2072
commit d60cd5ed1c
4 changed files with 35 additions and 19 deletions

View File

@@ -142,13 +142,12 @@ jobs:
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
# One failing test to do with the schema reference files. ACS-1180
# - name: "Repository - MySQL 8 tests"
# if: commit_message !~ /\[skip db\]/
# before_script:
# - docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mysql:8 --transaction-isolation='READ-COMMITTED'
# - docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
# script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - MySQL 8 tests"
if: commit_message !~ /\[skip db\]/
before_script:
- docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=alfresco -e MYSQL_USER=alfresco -e MYSQL_DATABASE=alfresco -e MYSQL_PASSWORD=alfresco mysql:8 --transaction-isolation='READ-COMMITTED'
- docker run -d -p 61616:61616 -p 5672:5672 alfresco/alfresco-activemq:5.16.1
script: travis_wait 20 mvn -B test -pl repository -Dtest=AllDBTestsTestSuite -Ddb.driver=com.mysql.jdbc.Driver -Ddb.name=alfresco -Ddb.url=jdbc:mysql://localhost:3307/alfresco -Ddb.username=alfresco -Ddb.password=alfresco
- name: "Repository - PostgreSQL 10.9 tests"
if: commit_message !~ /\[skip db\]/

View File

@@ -32,8 +32,12 @@ import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;
import javax.sql.DataSource;
@@ -41,10 +45,10 @@ import org.alfresco.repo.domain.dialect.Dialect;
import org.alfresco.repo.domain.dialect.TypeNames;
import org.alfresco.service.descriptor.Descriptor;
import org.alfresco.service.descriptor.DescriptorService;
import org.alfresco.util.DBScriptUtil;
import org.alfresco.util.DatabaseMetaDataHelper;
import org.alfresco.util.DialectUtil;
import org.alfresco.util.PropertyCheck;
import org.alfresco.util.DBScriptUtil;
import org.alfresco.util.schemacomp.model.Column;
import org.alfresco.util.schemacomp.model.ForeignKey;
import org.alfresco.util.schemacomp.model.Index;
@@ -257,6 +261,7 @@ public class ExportDb
tableTypes = new String[] { "TABLE", "VIEW", "SEQUENCE" };
}
// No tables are returned when using MySQL8 - maybe this issue can be solved if we update the MySQL JDBC driver that we use (the new driver class is `com.mysql.cj.jdbc.Driver').
final ResultSet tables = dbmd.getTables(null, schemaName, prefixFilter, tableTypes);
processTables(dbmd, tables);
@@ -331,10 +336,11 @@ public class ExportDb
columns.close();
// Primary key
// Primary key - beware that getPrimaryKeys gets primary keys ordered by their column name
final ResultSet primarykeycols = dbmd.getPrimaryKeys(null, tables.getString("TABLE_SCHEM"), tableName);
PrimaryKey pk = null;
Map<Integer, String> keySeqsAndColumnNames = new LinkedHashMap<>();
while (primarykeycols.next())
{
@@ -343,12 +349,23 @@ public class ExportDb
String pkName = primarykeycols.getString("PK_NAME");
pk = new PrimaryKey(pkName);
}
String columnName = primarykeycols.getString("COLUMN_NAME");
pk.getColumnNames().add(columnName);
// We should add columns ordered by the KEY_SEQ rather than by the column name
// Populating map with key sequences and column names for a proper sorting later.
int columnOrder = primarykeycols.getInt("KEY_SEQ");
pk.getColumnOrders().add(columnOrder);
String columnName = primarykeycols.getString("COLUMN_NAME");
keySeqsAndColumnNames.put(columnOrder, columnName);
}
List<String> keyseqSortedColumnNames = new LinkedList<>();
List<Integer> keySeqSortedColumnOrders = keySeqsAndColumnNames.keySet().stream().sorted().collect(Collectors.toList());
for (int keySeq: keySeqSortedColumnOrders)
{
keyseqSortedColumnNames.add(keySeqsAndColumnNames.get(keySeq));
}
pk.setColumnOrders(keySeqSortedColumnOrders);
pk.setColumnNames(keyseqSortedColumnNames);
primarykeycols.close();
// If this table has a primary key, add it.

View File

@@ -898,8 +898,8 @@
</columns>
<primarykey name="PRIMARY">
<columnnames>
<columnname order="2">GROUP_ID_</columnname>
<columnname order="1">USER_ID_</columnname>
<columnname order="2">GROUP_ID_</columnname>
</columnnames>
</primarykey>
<foreignkeys>

View File

@@ -1885,10 +1885,10 @@
</columns>
<primarykey name="PRIMARY">
<columnnames>
<columnname order="3">list_index</columnname>
<columnname order="4">locale_id</columnname>
<columnname order="1">node_id</columnname>
<columnname order="2">qname_id</columnname>
<columnname order="3">list_index</columnname>
<columnname order="4">locale_id</columnname>
</columnnames>
</primarykey>
<foreignkeys>
@@ -2174,9 +2174,9 @@
</columns>
<primarykey name="PRIMARY">
<columnnames>
<columnname order="1">root_prop_id</columnname>
<columnname order="2">contained_in</columnname>
<columnname order="3">prop_index</columnname>
<columnname order="1">root_prop_id</columnname>
</columnnames>
</primarykey>
<foreignkeys>
@@ -2543,8 +2543,8 @@
</columns>
<primarykey name="PRIMARY">
<columnnames>
<columnname order="2">node_id</columnname>
<columnname order="1">user_node_id</columnname>
<columnname order="2">node_id</columnname>
</columnnames>
</primarykey>
<foreignkeys>