escape the keywords for splitPk

This commit is contained in:
johnrobbet 2022-03-07 18:13:01 +08:00
parent 2d37cf10b9
commit 1a5f1f0288
2 changed files with 26 additions and 5 deletions

View File

@ -53,6 +53,21 @@ public class OceanBaseReader extends Reader {
@Override @Override
public List<Configuration> split(int adviceNumber) { public List<Configuration> split(int adviceNumber) {
String splitPk = originalConfig.getString(Key.SPLIT_PK);
List<String> quotedColumns = originalConfig.getList(Key.COLUMN_LIST, String.class);
if (splitPk != null && splitPk.length() > 0 && quotedColumns != null) {
String escapeChar = ObReaderUtils.isOracleMode(originalConfig.getString(ObReaderKey.OB_COMPATIBILITY_MODE))
? "\"" : "`";
if (!splitPk.startsWith(escapeChar) && !splitPk.endsWith(escapeChar)) {
splitPk = escapeChar + splitPk + escapeChar;
}
for (String column : quotedColumns) {
if (column.equals(splitPk)) {
LOG.info("splitPk is an ob reserved keyword, set to {}", splitPk);
originalConfig.set(Key.SPLIT_PK, splitPk);
}
}
}
return this.readerJob.split(this.originalConfig, adviceNumber); return this.readerJob.split(this.originalConfig, adviceNumber);
} }