Skip to content

Commit

Permalink
0004973: use utf8mb4 when available
Browse files Browse the repository at this point in the history
  • Loading branch information
erilong committed May 5, 2021
1 parent dd19e0c commit 30bb846
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
Expand Up @@ -66,6 +66,8 @@ public class MySqlSymmetricDialect extends AbstractSymmetricDialect implements I
private String functionTemplateKeySuffix = null;

private boolean isConvertZeroDateToNull;

private String characterSet;

public MySqlSymmetricDialect(IParameterService parameterService, IDatabasePlatform platform) {
super(parameterService, platform);
Expand All @@ -82,7 +84,6 @@ public MySqlSymmetricDialect(IParameterService parameterService, IDatabasePlatfo
log.warn("Cannot convert zero dates to null because unable to verify sql_mode: {}", e.getMessage());
}
}
this.triggerTemplate = new MySqlTriggerTemplate(this, isConvertZeroDateToNull);

int[] versions = Version.parseVersion(getProductVersion());
if (getMajorVersion() == 5 && (getMinorVersion() == 0 || (getMinorVersion() == 1 && versions[2] < 23))) {
Expand All @@ -91,7 +92,10 @@ public MySqlSymmetricDialect(IParameterService parameterService, IDatabasePlatfo
this.functionTemplateKeySuffix = PRE_5_7_6;
} else {
this.functionTemplateKeySuffix = POST_5_7_6;
}
}

characterSet = parameterService.getString(ParameterConstants.DB_MASTER_COLLATION, Version.isOlderThanVersion(getProductVersion(), "5.5.3") ? "utf8" : "utf8mb4");
this.triggerTemplate = new MySqlTriggerTemplate(this, isConvertZeroDateToNull, characterSet);
}

@Override
Expand Down
Expand Up @@ -28,7 +28,7 @@

public class MySqlTriggerTemplate extends AbstractTriggerTemplate {

public MySqlTriggerTemplate(ISymmetricDialect symmetricDialect, boolean isConvertZeroDateToNull) {
public MySqlTriggerTemplate(ISymmetricDialect symmetricDialect, boolean isConvertZeroDateToNull, String characterSet) {
super(symmetricDialect);
emptyColumnTemplate = "''" ;
stringColumnTemplate = "cast(if($(tableAlias).`$(columnName)` is null,'',concat('\"',replace(replace($(tableAlias).`$(columnName)`,'\\\\','\\\\\\\\'),'\"','\\\\\"'),'\"')) as char)\n" ;
Expand Down Expand Up @@ -87,8 +87,8 @@ public MySqlTriggerTemplate(ISymmetricDialect symmetricDialect, boolean isConver
sqlTemplates.put("updateTriggerTemplate" ,
"create trigger $(triggerName) after update on $(schemaName)$(tableName) \n" +
" for each row begin \n" +
" DECLARE var_row_data mediumtext character set utf8; \n" +
" DECLARE var_old_data mediumtext character set utf8; \n" +
" DECLARE var_row_data mediumtext character set " + characterSet + ";\n" +
" DECLARE var_old_data mediumtext character set " + characterSet + ";\n" +
" $(custom_before_update_text) \n" +
" if $(syncOnUpdateCondition) and $(syncOnIncomingBatchCondition) then \n" +
" set var_row_data = concat($(columns)); \n" +
Expand Down

0 comments on commit 30bb846

Please sign in to comment.