This commit is contained in:
2026-11-04 12:21:59 +08:00
parent 78ecd2e039
commit 46bc137e99
53 changed files with 3508 additions and 1432 deletions
@@ -15,7 +15,7 @@ class Phase5PdaDeploymentSqlContractTest {
StandardCharsets.UTF_8);
String normalized = sql.replaceAll("\\s+", "");
assertTrue(sql.contains("warehouse_id varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL"));
assertTrue(sql.contains("warehouse_id varchar(128) COLLATE utf8mb4_0900_ai_ci NOT NULL"));
assertTrue(sql.contains("completion_idempotency_key varchar(255)"));
assertTrue(normalized.contains("UNIQUEKEYuk_ll_dispatch_order_no(dispatch_no)"));
assertTrue(normalized.contains("UNIQUEKEYuk_ll_outbound_no(outbound_no)"));
@@ -47,7 +47,7 @@ class DispatchCandidateMySqlReadOnlyTest {
var project=DispatchCandidatePageMapper.Sql.class.getDeclaredMethod("project",String.class,Set.class,boolean.class);
project.setAccessible(true);
String general="SELECT "+fields.stream().sorted().map(f->"_utf8mb4'洛杉矶-001' COLLATE utf8mb4_general_ci AS "+f).collect(Collectors.joining(","));
String unicode=general.replace("utf8mb4_general_ci","utf8mb4_unicode_ci");
String unicode=general.replace("utf8mb4_general_ci","utf8mb4_0900_ai_ci");
try(var connection=connect();var statement=connection.createStatement()) {
statement.setQueryTimeout(10);
var failure=assertThrows(SQLException.class,()->statement.executeQuery(general+" UNION ALL "+unicode));
@@ -298,7 +298,7 @@ class DispatchMergedRelabelPersistenceTest {
public static class H2CandidateLanguageDriver extends org.apache.ibatis.scripting.xmltags.XMLLanguageDriver {
@Override public org.apache.ibatis.mapping.SqlSource createSqlSource(org.apache.ibatis.session.Configuration configuration,String script,Class<?> parameterType) {
return super.createSqlSource(configuration,script.replaceAll(
"CONVERT\\((s\\.\\w+|NULL) USING utf8mb4\\) COLLATE utf8mb4_unicode_ci","$1"),parameterType);
"CONVERT\\((s\\.\\w+|NULL) USING utf8mb4\\) COLLATE utf8mb4_0900_ai_ci","$1"),parameterType);
}
}
}
@@ -34,14 +34,14 @@ class ReturnInventoryMovementSqlTest {
var block = Pattern.compile("(?s)(?:CREATE TABLE (?:IF NOT EXISTS )?|ALTER TABLE )" + entry.getKey() + "\\b.*?;").matcher(sql);
assertTrue(block.find(), file + ": " + entry.getKey());
for (String column : entry.getValue()) {
assertTrue(Pattern.compile("(?i)\\b" + column + "\\s+varchar\\(\\d+\\) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci").matcher(block.group()).find(),
assertTrue(Pattern.compile("(?i)\\b" + column + "\\s+varchar\\(\\d+\\) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci").matcher(block.group()).find(),
file + ": " + entry.getKey() + "." + column);
}
}
}
String standalone = Files.readString(Path.of("src/main/resources/db/return-sku-conversion.sql"));
for (String column : fields.get("ll_return_sku_conversion"))
assertTrue(Pattern.compile("\\b" + column + "\\s+VARCHAR\\(\\d+\\) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci").matcher(standalone).find());
assertTrue(Pattern.compile("\\b" + column + "\\s+VARCHAR\\(\\d+\\) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci").matcher(standalone).find());
}
@Test
@@ -58,7 +58,7 @@ class ReturnSkuConversionPersistenceTest {
+ (f.getName().equals("id") ? " PRIMARY KEY" : "")).collect(Collectors.joining(","));
jdbc.execute("CREATE TABLE " + entity.getAnnotation(TableName.class).value() + " (" + columns + ")"
+ (mysqlMode ? " ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE="
+ (entity == ReturnInventoryCartonItem.class ? "utf8mb4_0900_ai_ci" : "utf8mb4_unicode_ci") : ""));
+ (entity == ReturnInventoryCartonItem.class ? "utf8mb4_0900_ai_ci" : "utf8mb4_0900_ai_ci") : ""));
}
jdbc.execute("CREATE UNIQUE INDEX balance_sku ON ll_return_inventory_balance(customer_id,overseas_warehouse_id,sku_code)");
jdbc.execute("CREATE UNIQUE INDEX conversion_round ON ll_return_sku_conversion(item_id,round_key,old_sku_code,new_sku_code)");
@@ -35,7 +35,7 @@ final class ReturnSkuMySqlTestDatabase implements AutoCloseable {
try(var connection=administration.getConnection();var statement=connection.createStatement()) {
if(!"information_schema".equals(connection.getCatalog()) || !"MySQL".equals(connection.getMetaData().getDatabaseProductName())
|| connection.getMetaData().getDatabaseMajorVersion()!=8) throw new IllegalStateException("Expected TEST MySQL 8 administrative read catalog");
statement.execute("CREATE DATABASE `"+schema+"` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
statement.execute("CREATE DATABASE `"+schema+"` CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci");
created=true;
} catch(SQLException failure) { throw new IllegalStateException("TEST isolated schema creation failed; SQLState="+failure.getSQLState()); }
source=new DriverManagerDataSource(prefix+schema+options,user,password) {