This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 2e33b07 Refactor encrypt alter column (#14219)
2e33b07 is described below
commit 2e33b07fd41a1e5fd64e83334ae8cfbcc69c9563
Author: tuichenchuxin <[email protected]>
AuthorDate: Wed Dec 22 18:28:26 2021 +0800
Refactor encrypt alter column (#14219)
* add unsupported sql for pg/og doc
* Refactor encrypt alter.
* Refactor encrypt alter.
---
.../impl/EncryptAlterTableTokenGenerator.java | 176 ++++++++++-----------
.../rewrite/token/pojo/EncryptAlterTableToken.java | 2 +-
.../impl/MySQLDDLStatementSQLVisitor.java | 7 +-
...ent.java => ChangeColumnDefinitionSegment.java} | 4 +-
.../alter/ModifyColumnDefinitionSegment.java | 3 -
.../common/statement/ddl/AlterTableStatement.java | 3 +
.../ddl/impl/AlterTableStatementAssert.java | 22 +++
.../definition/ExpectedChangeColumnDefinition.java | 42 +++++
.../statement/ddl/AlterTableStatementTestCase.java | 4 +
.../src/main/resources/case/ddl/alter-table.xml | 15 +-
.../encrypt/case/alter_for_query_with_cipher.xml | 6 +
.../encrypt/case/alter_for_query_with_plain.xml | 18 +--
12 files changed, 184 insertions(+), 118 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/impl/EncryptAlterTableTokenGenerator.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/impl/EncryptAlterTableTokenGenerator.java
index e09572e..25f31c1 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/impl/EncryptAlterTableTokenGenerator.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/impl/EncryptAlterTableTokenGenerator.java
@@ -28,11 +28,13 @@ import
org.apache.shardingsphere.infra.rewrite.sql.token.pojo.Substitutable;
import
org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.RemoveToken;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.ColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.AddColumnDefinitionSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ChangeColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.DropColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ModifyColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.position.ColumnPositionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
+import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
@@ -54,6 +56,7 @@ public final class EncryptAlterTableTokenGenerator extends
BaseEncryptSQLTokenGe
String tableName =
alterTableStatementContext.getSqlStatement().getTable().getTableName().getIdentifier().getValue();
Collection<SQLToken> result = new
LinkedList<>(getAddColumnTokens(tableName,
alterTableStatementContext.getSqlStatement().getAddColumnDefinitions()));
result.addAll(getModifyColumnTokens(tableName,
alterTableStatementContext.getSqlStatement().getModifyColumnDefinitions()));
+ result.addAll(getChangeColumnTokens(tableName,
alterTableStatementContext.getSqlStatement().getChangeColumnDefinitions()));
Collection<SQLToken> dropCollection = getDropColumnTokens(tableName,
alterTableStatementContext.getSqlStatement().getDropColumnDefinitions());
String databaseName =
alterTableStatementContext.getDatabaseType().getName();
if ("SQLServer".equals(databaseName)) {
@@ -112,13 +115,18 @@ public final class EncryptAlterTableTokenGenerator
extends BaseEncryptSQLTokenGe
return result;
}
- private Collection<SQLToken> getAddColumnTokens(final String tableName,
final String columnName,
+ private Collection<SQLToken> getAddColumnTokens(final String tableName,
final String columnName,
final
AddColumnDefinitionSegment addColumnDefinitionSegment, final
ColumnDefinitionSegment columnDefinitionSegment) {
Collection<SQLToken> result = new LinkedList<>();
- result.add(new RemoveToken(addColumnDefinitionSegment.getStartIndex()
- 1, columnDefinitionSegment.getStopIndex() + 1));
- result.add(getCipherColumn(tableName, columnName,
columnDefinitionSegment));
- getAssistedQueryColumn(tableName, columnName,
columnDefinitionSegment).ifPresent(result::add);
- getPlainColumn(tableName, columnName,
columnDefinitionSegment).ifPresent(result::add);
+ result.add(new RemoveToken(columnDefinitionSegment.getStartIndex(),
columnDefinitionSegment.getColumnName().getStopIndex()));
+ result.add(new
EncryptAlterTableToken(columnDefinitionSegment.getColumnName().getStopIndex() +
1, columnDefinitionSegment.getColumnName().getStopIndex(),
+ getEncryptRule().getCipherColumn(tableName, columnName),
null));
+ Optional<String> assistedQueryColumn =
getEncryptRule().findAssistedQueryColumn(tableName, columnName);
+ assistedQueryColumn.map(optional -> new EncryptAlterTableToken(
+ addColumnDefinitionSegment.getStopIndex() + 1,
columnDefinitionSegment.getColumnName().getStopIndex(), optional, ", ADD
COLUMN")).ifPresent(result::add);
+ Optional<String> plainColumn =
getEncryptRule().findPlainColumn(tableName, columnName);
+ plainColumn.map(optional -> new EncryptAlterTableToken(
+ addColumnDefinitionSegment.getStopIndex() + 1,
columnDefinitionSegment.getColumnName().getStopIndex(), optional, ", ADD
COLUMN")).ifPresent(result::add);
return result;
}
@@ -142,35 +150,83 @@ public final class EncryptAlterTableTokenGenerator
extends BaseEncryptSQLTokenGe
ColumnDefinitionSegment segment = each.getColumnDefinition();
String columnName =
segment.getColumnName().getIdentifier().getValue();
Optional<EncryptAlgorithm> encryptor =
getEncryptRule().findEncryptor(tableName, columnName);
- Optional<EncryptAlgorithm> encryptorPrevious =
getEncryptRule().findEncryptor(tableName,
-
Optional.ofNullable(each.getPreviousColumn()).map(columnSegment ->
columnSegment.getIdentifier().getValue()).orElse(""));
- if (encryptor.isPresent() || encryptorPrevious.isPresent()) {
- result.addAll(getModifyColumnTokens(tableName, columnName,
each, segment));
+ if (encryptor.isPresent()) {
+ result.addAll(getModifyColumnTokens(tableName, columnName,
each));
}
- getModifyColumnPositionToken(tableName,
each).ifPresent(result::add);
+ each.getColumnPosition().flatMap(columnPositionSegment ->
getColumnPositionToken(tableName,
columnPositionSegment)).ifPresent(result::add);
}
return result;
}
- private Collection<SQLToken> getModifyColumnTokens(final String tableName,
final String columnName,
- final
ModifyColumnDefinitionSegment modifyColumnDefinitionSegment, final
ColumnDefinitionSegment columnDefinitionSegment) {
+ private Collection<SQLToken> getModifyColumnTokens(final String tableName,
final String columnName,
+ final
ModifyColumnDefinitionSegment modifyColumnDefinitionSegment) {
Collection<SQLToken> result = new LinkedList<>();
- result.add(new
RemoveToken(modifyColumnDefinitionSegment.getStartIndex() - 1,
modifyColumnDefinitionSegment.getStopIndex()));
- result.add(getCipherColumn(tableName, columnName,
modifyColumnDefinitionSegment, columnDefinitionSegment));
- getAssistedQueryColumn(tableName, columnName,
modifyColumnDefinitionSegment, columnDefinitionSegment).ifPresent(result::add);
- getPlainColumn(tableName, columnName, modifyColumnDefinitionSegment,
columnDefinitionSegment).ifPresent(result::add);
+ ColumnDefinitionSegment columnDefinitionSegment =
modifyColumnDefinitionSegment.getColumnDefinition();
+ result.add(new
RemoveToken(columnDefinitionSegment.getColumnName().getStartIndex(),
columnDefinitionSegment.getColumnName().getStopIndex()));
+ result.add(new
EncryptAlterTableToken(columnDefinitionSegment.getColumnName().getStopIndex() +
1, columnDefinitionSegment.getColumnName().getStopIndex(),
+ getEncryptRule().getCipherColumn(tableName, columnName),
null));
+ getEncryptRule().findAssistedQueryColumn(tableName,
columnName).map(optional -> new
EncryptAlterTableToken(modifyColumnDefinitionSegment.getStopIndex() + 1,
+ columnDefinitionSegment.getColumnName().getStopIndex(),
optional, ", MODIFY COLUMN")).ifPresent(result::add);
+ getEncryptRule().findPlainColumn(tableName, columnName).map(optional
-> new EncryptAlterTableToken(modifyColumnDefinitionSegment.getStopIndex() + 1,
+ columnDefinitionSegment.getColumnName().getStopIndex(),
optional, ", MODIFY COLUMN")).ifPresent(result::add);
return result;
}
- private Optional<SQLToken> getModifyColumnPositionToken(final String
tableName, final ModifyColumnDefinitionSegment modifyColumnDefinitionSegment) {
- Optional<EncryptAlgorithm> encryptor =
modifyColumnDefinitionSegment.getColumnPosition().filter(positionSegment ->
null != positionSegment.getColumnName())
+ private Optional<SQLToken> getColumnPositionToken(final String tableName,
final ColumnPositionSegment columnPositionSegment) {
+ Optional<EncryptAlgorithm> encryptor =
Optional.of(columnPositionSegment).filter(positionSegment -> null !=
positionSegment.getColumnName())
.flatMap(positionSegment ->
getEncryptRule().findEncryptor(tableName,
positionSegment.getColumnName().getIdentifier().getValue()));
if (encryptor.isPresent()) {
- return
Optional.of(getPositionColumnToken(modifyColumnDefinitionSegment.getColumnPosition().get(),
tableName));
+ return Optional.of(getPositionColumnToken(columnPositionSegment,
tableName));
}
return Optional.empty();
}
+ private Collection<SQLToken> getChangeColumnTokens(final String tableName,
final Collection<ChangeColumnDefinitionSegment> changeColumnDefinitions) {
+ Collection<SQLToken> result = new LinkedList<>();
+ for (ChangeColumnDefinitionSegment each : changeColumnDefinitions) {
+ result.addAll(getPreviousColumnTokens(tableName, each));
+ result.addAll(getColumnTokens(tableName, each));
+ each.getColumnPosition().flatMap(columnPositionSegment ->
getColumnPositionToken(tableName,
columnPositionSegment)).ifPresent(result::add);
+ if (null != each.getPreviousColumn()) {
+ String previousColumnName =
each.getPreviousColumn().getIdentifier().getValue();
+ getEncryptRule().findAssistedQueryColumn(tableName,
previousColumnName).map(optional ->
+ new EncryptAlterTableToken(each.getStopIndex() + 1,
each.getColumnDefinition().getColumnName().getStopIndex(),
+
each.getColumnDefinition().getColumnName().getIdentifier().getValue() +
"_assisted", ", CHANGE COLUMN " + optional)).ifPresent(result::add);
+ getEncryptRule().findPlainColumn(tableName,
previousColumnName).map(optional ->
+ new EncryptAlterTableToken(each.getStopIndex() + 1,
each.getColumnDefinition().getColumnName().getStopIndex(),
+
each.getColumnDefinition().getColumnName().getIdentifier().getValue() +
"_plain", ", CHANGE COLUMN " + optional)).ifPresent(result::add);
+ }
+ }
+ return result;
+ }
+
+ private Collection<? extends SQLToken> getColumnTokens(final String
tableName, final ChangeColumnDefinitionSegment segment) {
+ if (null == segment.getPreviousColumn() || null ==
segment.getPreviousColumn().getIdentifier().getValue()
+ || !getEncryptRule().findEncryptor(tableName,
segment.getPreviousColumn().getIdentifier().getValue()).isPresent()) {
+ return Collections.emptyList();
+ }
+ if (null == segment.getColumnDefinition() || null ==
segment.getColumnDefinition().getColumnName() || null ==
segment.getColumnDefinition().getColumnName().getIdentifier().getValue()) {
+ return Collections.emptyList();
+ }
+ Collection<SQLToken> result = new LinkedList<>();
+ result.add(new
RemoveToken(segment.getColumnDefinition().getColumnName().getStartIndex(),
segment.getColumnDefinition().getColumnName().getStopIndex()));
+ result.add(new
EncryptAlterTableToken(segment.getColumnDefinition().getColumnName().getStopIndex()
+ 1, segment.getColumnDefinition().getColumnName().getStopIndex(),
+
segment.getColumnDefinition().getColumnName().getIdentifier().getValue() +
"_cipher", null));
+ return result;
+ }
+
+ private Collection<? extends SQLToken> getPreviousColumnTokens(final
String tableName, final ChangeColumnDefinitionSegment segment) {
+ if (null == segment.getPreviousColumn() || null ==
segment.getPreviousColumn().getIdentifier().getValue()
+ || !getEncryptRule().findEncryptor(tableName,
segment.getPreviousColumn().getIdentifier().getValue()).isPresent()) {
+ return Collections.emptyList();
+ }
+ Collection<SQLToken> result = new LinkedList<>();
+ result.add(new
RemoveToken(segment.getPreviousColumn().getStartIndex(),
segment.getPreviousColumn().getStopIndex()));
+ result.add(new
EncryptAlterTableToken(segment.getPreviousColumn().getStopIndex() + 1,
segment.getPreviousColumn().getStopIndex(),
+ getEncryptRule().getCipherColumn(tableName,
segment.getPreviousColumn().getIdentifier().getValue()), null));
+ return result;
+ }
+
private Collection<SQLToken> getDropColumnTokens(final String tableName,
final Collection<DropColumnDefinitionSegment> columnDefinitionSegments) {
Collection<SQLToken> result = new LinkedList<>();
for (DropColumnDefinitionSegment each : columnDefinitionSegments) {
@@ -186,9 +242,6 @@ public final class EncryptAlterTableTokenGenerator extends
BaseEncryptSQLTokenGe
Optional<EncryptAlgorithm> encryptor =
getEncryptRule().findEncryptor(tableName, columnName);
if (encryptor.isPresent()) {
result.addAll(getDropColumnTokens(tableName, columnName, each,
dropColumnDefinitionSegment));
- } else {
- result.add(new
RemoveToken(dropColumnDefinitionSegment.getStartIndex() - 1,
each.getStopIndex()));
- result.add(new EncryptAlterTableToken(each.getStopIndex() + 1,
each.getStopIndex(), columnName, "DROP COLUMN"));
}
}
return result;
@@ -197,79 +250,12 @@ public final class EncryptAlterTableTokenGenerator
extends BaseEncryptSQLTokenGe
private Collection<SQLToken> getDropColumnTokens(final String tableName,
final String columnName,
final ColumnSegment
columnSegment, final DropColumnDefinitionSegment dropColumnDefinitionSegment) {
Collection<SQLToken> result = new LinkedList<>();
- result.add(new RemoveToken(dropColumnDefinitionSegment.getStartIndex()
- 1, columnSegment.getStopIndex()));
- result.add(getCipherColumn(tableName, columnName, columnSegment));
- getAssistedQueryColumn(tableName, columnName,
columnSegment).ifPresent(result::add);
- getPlainColumn(tableName, columnName,
columnSegment).ifPresent(result::add);
+ result.add(new RemoveToken(columnSegment.getStartIndex(),
columnSegment.getStopIndex()));
+ result.add(new EncryptAlterTableToken(columnSegment.getStopIndex() +
1, columnSegment.getStopIndex(), getEncryptRule().getCipherColumn(tableName,
columnName), null));
+ getEncryptRule().findAssistedQueryColumn(tableName,
columnName).map(optional -> new
EncryptAlterTableToken(dropColumnDefinitionSegment.getStopIndex() + 1,
+ dropColumnDefinitionSegment.getStopIndex(), optional, ", DROP
COLUMN")).ifPresent(result::add);
+ getEncryptRule().findPlainColumn(tableName, columnName).map(optional
-> new EncryptAlterTableToken(dropColumnDefinitionSegment.getStopIndex() + 1,
+ dropColumnDefinitionSegment.getStopIndex(), optional, ", DROP
COLUMN")).ifPresent(result::add);
return result;
}
-
- private EncryptAlterTableToken getCipherColumn(final String tableName,
final String columnName, final ColumnDefinitionSegment columnDefinitionSegment)
{
- String cipherColumn = getEncryptRule().getCipherColumn(tableName,
columnName);
- return new
EncryptAlterTableToken(columnDefinitionSegment.getStopIndex() + 1,
columnDefinitionSegment.getStartIndex() + columnName.length(), cipherColumn,
"ADD COLUMN");
- }
-
- private EncryptAlterTableToken getCipherColumn(final String tableName,
final String columnName,
- final
ModifyColumnDefinitionSegment modifyColumnDefinitionSegment, final
ColumnDefinitionSegment columnDefinitionSegment) {
- String previousColumnName =
Optional.ofNullable(modifyColumnDefinitionSegment.getPreviousColumn()).map(segment
-> segment.getIdentifier().getValue()).orElse("");
- String cipherColumnPrevious = (!previousColumnName.isEmpty())
- ? getEncryptRule().getCipherColumn(tableName,
previousColumnName) : "";
- String encryptColumnName = cipherColumnPrevious.isEmpty()
- ? getEncryptRule().getCipherColumn(tableName, columnName) :
columnDefinitionSegment.getColumnName().getQualifiedName() + "_cipher";
- String encryptCommand = cipherColumnPrevious.isEmpty() ? "MODIFY
COLUMN" : "CHANGE COLUMN " + cipherColumnPrevious;
- return new
EncryptAlterTableToken(modifyColumnDefinitionSegment.getStopIndex() + 1,
columnDefinitionSegment.getDataType().getStartIndex() - 1, encryptColumnName,
encryptCommand);
- }
-
- private EncryptAlterTableToken getCipherColumn(final String tableName,
final String columnName, final ColumnSegment columnSegment) {
- String cipherColumn = getEncryptRule().getCipherColumn(tableName,
columnName);
- return new EncryptAlterTableToken(columnSegment.getStopIndex() + 1,
columnSegment.getStopIndex(), cipherColumn, "DROP COLUMN");
- }
-
- private Optional<EncryptAlterTableToken> getAssistedQueryColumn(final
String tableName, final String columnName, final ColumnDefinitionSegment
columnDefinitionSegment) {
- Optional<String> assistedQueryColumn =
getEncryptRule().findAssistedQueryColumn(tableName, columnName);
- return assistedQueryColumn.map(optional -> new EncryptAlterTableToken(
- columnDefinitionSegment.getStopIndex() + 1,
columnDefinitionSegment.getStartIndex() + columnName.length(), optional, ", ADD
COLUMN"));
- }
-
- private Optional<EncryptAlterTableToken> getAssistedQueryColumn(final
String tableName, final String columnName,
- final
ModifyColumnDefinitionSegment modifyColumnDefinitionSegment, final
ColumnDefinitionSegment columnDefinitionSegment) {
- Optional<String> previousColumn =
Optional.ofNullable(modifyColumnDefinitionSegment.getPreviousColumn()).map(segment
-> segment.getIdentifier().getValue());
- if (!previousColumn.isPresent()) {
- Optional<String> assistedQueryColumn =
getEncryptRule().findAssistedQueryColumn(tableName, columnName);
- return assistedQueryColumn.map(optional -> new
EncryptAlterTableToken(
- modifyColumnDefinitionSegment.getStopIndex() + 1,
columnDefinitionSegment.getDataType().getStartIndex() - 1, optional, ", MODIFY
COLUMN"));
- }
- Optional<String> assistedQueryColumnPrevious =
previousColumn.flatMap(each ->
getEncryptRule().findAssistedQueryColumn(tableName, each));
- return assistedQueryColumnPrevious.map(optional -> new
EncryptAlterTableToken(modifyColumnDefinitionSegment.getStopIndex() + 1,
columnDefinitionSegment.getDataType().getStartIndex() - 1,
- columnDefinitionSegment.getColumnName().getQualifiedName() +
"_assisted", ", CHANGE COLUMN " + optional));
- }
-
- private Optional<EncryptAlterTableToken> getAssistedQueryColumn(final
String tableName, final String columnName, final ColumnSegment columnSegment) {
- Optional<String> assistedQueryColumn =
getEncryptRule().findAssistedQueryColumn(tableName, columnName);
- return assistedQueryColumn.map(optional -> new
EncryptAlterTableToken(columnSegment.getStopIndex() + 1,
columnSegment.getStopIndex(), optional, ", DROP COLUMN"));
- }
-
- private Optional<EncryptAlterTableToken> getPlainColumn(final String
tableName, final String columnName, final ColumnDefinitionSegment
columnDefinitionSegment) {
- Optional<String> plainColumn =
getEncryptRule().findPlainColumn(tableName, columnName);
- return plainColumn.map(optional -> new EncryptAlterTableToken(
- columnDefinitionSegment.getStopIndex() + 1,
columnDefinitionSegment.getStartIndex() + columnName.length(), optional, ", ADD
COLUMN"));
- }
-
- private Optional<EncryptAlterTableToken> getPlainColumn(final String
tableName, final String columnName,
- final
ModifyColumnDefinitionSegment modifyColumnDefinitionSegment, final
ColumnDefinitionSegment columnDefinitionSegment) {
- Optional<String> previousColumn =
Optional.ofNullable(modifyColumnDefinitionSegment.getPreviousColumn()).map(segment
-> segment.getIdentifier().getValue());
- if (!previousColumn.isPresent()) {
- Optional<String> plainColumn =
getEncryptRule().findPlainColumn(tableName, columnName);
- return plainColumn.map(optional -> new EncryptAlterTableToken(
- modifyColumnDefinitionSegment.getStopIndex() + 1,
columnDefinitionSegment.getDataType().getStartIndex() - 1, optional, ", MODIFY
COLUMN"));
- }
- Optional<String> plainColumnPrevious = previousColumn.flatMap(each ->
getEncryptRule().findPlainColumn(tableName, each));
- return plainColumnPrevious.map(optional -> new
EncryptAlterTableToken(modifyColumnDefinitionSegment.getStopIndex() + 1,
columnDefinitionSegment.getDataType().getStartIndex() - 1,
- columnDefinitionSegment.getColumnName().getQualifiedName() +
"_plain", ", CHANGE COLUMN " + optional));
- }
-
- private Optional<EncryptAlterTableToken> getPlainColumn(final String
tableName, final String columnName, final ColumnSegment columnSegment) {
- Optional<String> plainColumn =
getEncryptRule().findPlainColumn(tableName, columnName);
- return plainColumn.map(optional -> new
EncryptAlterTableToken(columnSegment.getStopIndex() + 1,
columnSegment.getStopIndex(), optional, ", DROP COLUMN"));
- }
}
diff --git
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptAlterTableToken.java
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptAlterTableToken.java
index e665dfe..42e7b04 100644
---
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptAlterTableToken.java
+++
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptAlterTableToken.java
@@ -47,6 +47,6 @@ public final class EncryptAlterTableToken extends SQLToken
implements Substituta
return columnName;
}
// TODO refactor alter table token
- return String.format(" %s %s ", operationType, columnName);
+ return String.format("%s %s", operationType, columnName);
}
}
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
index be70bb3..48bdf77 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
@@ -97,6 +97,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.charset.Chars
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.charset.CollateClauseSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.ColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.AddColumnDefinitionSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ChangeColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.DropColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ModifyColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.position.ColumnAfterPositionSegment;
@@ -264,6 +265,8 @@ public final class MySQLDDLStatementSQLVisitor extends
MySQLStatementSQLVisitor
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
} else if (each instanceof ModifyColumnDefinitionSegment) {
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
+ } else if (each instanceof ChangeColumnDefinitionSegment) {
+
result.getChangeColumnDefinitions().add((ChangeColumnDefinitionSegment) each);
} else if (each instanceof DropColumnDefinitionSegment) {
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
} else if (each instanceof AddConstraintDefinitionSegment) {
@@ -385,8 +388,8 @@ public final class MySQLDDLStatementSQLVisitor extends
MySQLStatementSQLVisitor
return modifyColumnDefinition;
}
- private ModifyColumnDefinitionSegment
generateModifyColumnDefinitionSegment(final ChangeColumnContext ctx) {
- ModifyColumnDefinitionSegment result = new
ModifyColumnDefinitionSegment(ctx.getStart().getStartIndex(),
ctx.getStop().getStopIndex(), (ColumnDefinitionSegment)
visit(ctx.columnDefinition()));
+ private ChangeColumnDefinitionSegment
generateModifyColumnDefinitionSegment(final ChangeColumnContext ctx) {
+ ChangeColumnDefinitionSegment result = new
ChangeColumnDefinitionSegment(ctx.getStart().getStartIndex(),
ctx.getStop().getStopIndex(), (ColumnDefinitionSegment)
visit(ctx.columnDefinition()));
result.setPreviousColumn(new
ColumnSegment(ctx.columnInternalRef.getStart().getStartIndex(),
ctx.columnInternalRef.getStop().getStopIndex(),
new IdentifierValue(ctx.columnInternalRef.getText())));
if (null != ctx.place()) {
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/column/alter/ModifyColumnDefinitionSegment.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/column/alter/ChangeColumnDefinitionSegment.java
similarity index 94%
copy from
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/column/alter/ModifyColumnDefinitionSegment.java
copy to
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/column/alter/ChangeColumnDefinitionSegment.java
index a8ff939..aa800ce 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/column/alter/ModifyColumnDefinitionSegment.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/column/alter/ChangeColumnDefinitionSegment.java
@@ -28,12 +28,12 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.Column
import java.util.Optional;
/**
- * Modify column definition segment.
+ * Change column definition segment.
*/
@RequiredArgsConstructor
@Getter
@Setter
-public final class ModifyColumnDefinitionSegment implements
AlterDefinitionSegment {
+public final class ChangeColumnDefinitionSegment implements
AlterDefinitionSegment {
private final int startIndex;
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/column/alter/ModifyColumnDefinitionSegment.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/column/alter/ModifyColumnDefinitionSegment.java
index a8ff939..57628d6 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/column/alter/ModifyColumnDefinitionSegment.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/ddl/column/alter/ModifyColumnDefinitionSegment.java
@@ -23,7 +23,6 @@ import lombok.Setter;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.AlterDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.ColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.position.ColumnPositionSegment;
-import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import java.util.Optional;
@@ -41,8 +40,6 @@ public final class ModifyColumnDefinitionSegment implements
AlterDefinitionSegme
private final ColumnDefinitionSegment columnDefinition;
- private ColumnSegment previousColumn;
-
private ColumnPositionSegment columnPosition;
/**
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterTableStatement.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterTableStatement.java
index fae8c6b..9be9904 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterTableStatement.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterTableStatement.java
@@ -21,6 +21,7 @@ import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.AddColumnDefinitionSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ChangeColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.DropColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ModifyColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.alter.AddConstraintDefinitionSegment;
@@ -53,6 +54,8 @@ public abstract class AlterTableStatement extends
AbstractSQLStatement implement
private final Collection<ModifyColumnDefinitionSegment>
modifyColumnDefinitions = new LinkedList<>();
+ private final Collection<ChangeColumnDefinitionSegment>
changeColumnDefinitions = new LinkedList<>();
+
private final Collection<DropColumnDefinitionSegment>
dropColumnDefinitions = new LinkedList<>();
private final Collection<AddConstraintDefinitionSegment>
addConstraintDefinitions = new LinkedList<>();
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AlterTableStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AlterTableStatementAssert.java
index 3fdebfc..91664c4 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AlterTableStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/AlterTableStatementAssert.java
@@ -21,6 +21,7 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.ColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.AddColumnDefinitionSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ChangeColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.DropColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ModifyColumnDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.alter.AddConstraintDefinitionSegment;
@@ -38,6 +39,7 @@ import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.d
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.definition.ConstraintDefinitionAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.table.TableAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.definition.ExpectedAddColumnDefinition;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.definition.ExpectedChangeColumnDefinition;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.definition.ExpectedColumnDefinition;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.definition.ExpectedModifyColumnDefinition;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterTableStatementTestCase;
@@ -73,6 +75,7 @@ public final class AlterTableStatementAssert {
assertAddColumnDefinitions(assertContext, actual, expected);
assertAddConstraintDefinitions(assertContext, actual, expected);
assertModifyColumnDefinitions(assertContext, actual, expected);
+ assertChangeColumnDefinitions(assertContext, actual, expected);
assertDropColumns(assertContext, actual, expected);
assertConvertTable(assertContext, actual, expected);
}
@@ -151,6 +154,25 @@ public final class AlterTableStatementAssert {
}
}
+ private static void assertChangeColumnDefinitions(final
SQLCaseAssertContext assertContext, final AlterTableStatement actual, final
AlterTableStatementTestCase expected) {
+ assertThat(assertContext.getText("Change column definitions size
assertion error: "), actual.getChangeColumnDefinitions().size(),
is(expected.getChangeColumns().size()));
+ int count = 0;
+ for (ChangeColumnDefinitionSegment each :
actual.getChangeColumnDefinitions()) {
+ ExpectedChangeColumnDefinition expectedChangeColumnDefinition =
expected.getChangeColumns().get(count);
+ ColumnDefinitionAssert.assertIs(assertContext,
each.getColumnDefinition(),
expectedChangeColumnDefinition.getColumnDefinition());
+ if (each.getColumnPosition().isPresent()) {
+ assertNotNull(assertContext.getText("Column position should
exist."), expectedChangeColumnDefinition.getColumnPosition());
+ ColumnPositionAssert.assertIs(assertContext,
each.getColumnPosition().get(),
expectedChangeColumnDefinition.getColumnPosition());
+ } else {
+ assertNull(assertContext.getText("Column position should not
exist."), expectedChangeColumnDefinition.getColumnPosition());
+ }
+ if (null != each.getPreviousColumn()) {
+ ColumnAssert.assertIs(assertContext, each.getPreviousColumn(),
expectedChangeColumnDefinition.getPreviousColumn());
+ }
+ count++;
+ }
+ }
+
private static void assertDropColumns(final SQLCaseAssertContext
assertContext, final AlterTableStatement actual, final
AlterTableStatementTestCase expected) {
Collection<ColumnSegment> actualDropColumns = getDropColumns(actual);
assertThat(assertContext.getText("Drop columns size assertion error:
"), actualDropColumns.size(), is(expected.getDropColumns().size()));
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/definition/ExpectedChangeColumnDefinition.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/definition/ExpectedChangeColumnDefinition.java
new file mode 100644
index 0000000..4eeb5b9
--- /dev/null
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/segment/impl/definition/ExpectedChangeColumnDefinition.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.definition;
+
+import lombok.Getter;
+import lombok.Setter;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.AbstractExpectedSQLSegment;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.column.ExpectedColumn;
+
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * Expected change column definition.
+ */
+@Getter
+@Setter
+public final class ExpectedChangeColumnDefinition extends
AbstractExpectedSQLSegment {
+
+ @XmlElement(name = "column-definition")
+ private ExpectedColumnDefinition columnDefinition;
+
+ @XmlElement(name = "column-position")
+ private ExpectedColumnPosition columnPosition;
+
+ @XmlElement(name = "previousColumn")
+ private ExpectedColumn previousColumn;
+}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterTableStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterTableStatementTestCase.java
index e5d7c4f..db1d52f 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterTableStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterTableStatementTestCase.java
@@ -21,6 +21,7 @@ import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.column.ExpectedColumn;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.definition.ExpectedAddColumnDefinition;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.definition.ExpectedChangeColumnDefinition;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.definition.ExpectedConstraintDefinition;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.definition.ExpectedConvertTableDefinition;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.definition.ExpectedModifyColumnDefinition;
@@ -56,6 +57,9 @@ public final class AlterTableStatementTestCase extends
SQLParserTestCase {
@XmlElement(name = "modify-column")
private final List<ExpectedModifyColumnDefinition> modifyColumns = new
LinkedList<>();
+ @XmlElement(name = "change-column")
+ private final List<ExpectedChangeColumnDefinition> changeColumns = new
LinkedList<>();
+
@XmlElement(name = "drop-column")
private final List<ExpectedColumn> dropColumns = new LinkedList<>();
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-table.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-table.xml
index 9947140..7c87afc 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-table.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-table.xml
@@ -517,11 +517,12 @@
<alter-table sql-case-id="alter_table_change_column">
<table name="t_order" start-index="12" stop-index="18" />
- <modify-column>
+ <change-column>
<column-definition type="VARCHAR" start-index="35" stop-index="53">
<column name="column4" start-index="35" stop-index="41" />
</column-definition>
- </modify-column>
+ <previousColumn name="user_id" start-index="27" stop-index="33" />
+ </change-column>
</alter-table>
<alter-table sql-case-id="alter_table_add_primary_key">
@@ -609,11 +610,12 @@
<alter-table sql-case-id="alter_table_change_unsigned_not_null">
<table name="t1" start-index="12" stop-index="13" />
- <modify-column>
+ <change-column>
<column-definition type="real" start-index="25" stop-index="49">
<column name="c2" />
</column-definition>
- </modify-column>
+ <previousColumn name="c1" start-index="22" stop-index="23" />
+ </change-column>
</alter-table>
<alter-table sql-case-id="alter_table_modify_unsigned_not_null">
@@ -636,11 +638,12 @@
<alter-table sql-case-id="alter_table_change_unsigned_zerofill_not_null">
<table name="t1" start-index="12" stop-index="13" />
- <modify-column>
+ <change-column>
<column-definition type="real" start-index="25" stop-index="58">
<column name="c2" />
</column-definition>
- </modify-column>
+ <previousColumn name="c1" start-index="22" stop-index="23" />
+ </change-column>
</alter-table>
<alter-table sql-case-id="alter_table_add_partition">
diff --git
a/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/alter_for_query_with_cipher.xml
b/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/alter_for_query_with_cipher.xml
index 950247c..b30e9f8 100644
---
a/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/alter_for_query_with_cipher.xml
+++
b/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/alter_for_query_with_cipher.xml
@@ -36,4 +36,10 @@
<input sql="ALTER TABLE t_account MODIFY COLUMN status text AFTER
amount"/>
<output sql="ALTER TABLE t_account MODIFY COLUMN status text AFTER
cipher_amount"/>
</rewrite-assertion>
+
+ <rewrite-assertion id="add_column_with_cipher" db-types="MySQL">
+ <input sql="ALTER TABLE t_account ADD COLUMN amount INT"/>
+ <output sql="ALTER TABLE t_account ADD COLUMN cipher_amount INT"/>
+ </rewrite-assertion>
+
</rewrite-assertions>
diff --git
a/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/alter_for_query_with_plain.xml
b/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/alter_for_query_with_plain.xml
index 2c30a93..f32000b 100644
---
a/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/alter_for_query_with_plain.xml
+++
b/shardingsphere-test/shardingsphere-rewrite-test/src/test/resources/scenario/encrypt/case/alter_for_query_with_plain.xml
@@ -18,32 +18,32 @@
<rewrite-assertions yaml-rule="scenario/encrypt/config/query-with-plain.yaml">
<rewrite-assertion id="add_column_for_plain" db-types="MySQL">
- <input sql="ALTER TABLE t_account_bak ADD COLUMN id int not null ,
ADD COLUMN password varchar(255) not null default ''" />
- <output sql="ALTER TABLE t_account_bak ADD COLUMN id int not null ,
ADD COLUMN cipher_password varchar(255) not null default '' , ADD COLUMN
assisted_query_password varchar(255) not null default '' , ADD COLUMN
plain_password varchar(255) not null default ''" />
+ <input sql="ALTER TABLE t_account_bak ADD COLUMN id int not null, ADD
COLUMN password varchar(255) not null default ''" />
+ <output sql="ALTER TABLE t_account_bak ADD COLUMN id int not null, ADD
COLUMN cipher_password varchar(255) not null default '', ADD COLUMN
assisted_query_password varchar(255) not null default '', ADD COLUMN
plain_password varchar(255) not null default ''" />
</rewrite-assertion>
<rewrite-assertion id="modify_column_for_plain" db-types="MySQL">
<input sql="ALTER TABLE t_account_bak MODIFY COLUMN password
varchar(255) not null default ''" />
- <output sql="ALTER TABLE t_account_bak MODIFY COLUMN cipher_password
varchar(255) not null default '' , MODIFY COLUMN assisted_query_password
varchar(255) not null default '' , MODIFY COLUMN plain_password varchar(255)
not null default ''" />
+ <output sql="ALTER TABLE t_account_bak MODIFY COLUMN cipher_password
varchar(255) not null default '', MODIFY COLUMN assisted_query_password
varchar(255) not null default '', MODIFY COLUMN plain_password varchar(255) not
null default ''" />
</rewrite-assertion>
<rewrite-assertion id="change_column_for_plain" db-types="MySQL">
<input sql="ALTER TABLE t_account_bak CHANGE COLUMN password
password_new varchar(255) not null default ''" />
- <output sql="ALTER TABLE t_account_bak CHANGE COLUMN cipher_password
password_new_cipher varchar(255) not null default '' , CHANGE COLUMN
assisted_query_password password_new_assisted varchar(255) not null default ''
, CHANGE COLUMN plain_password password_new_plain varchar(255) not null default
''" />
+ <output sql="ALTER TABLE t_account_bak CHANGE COLUMN cipher_password
password_new_cipher varchar(255) not null default '', CHANGE COLUMN
assisted_query_password password_new_assisted varchar(255) not null default '',
CHANGE COLUMN plain_password password_new_plain varchar(255) not null default
''" />
</rewrite-assertion>
<rewrite-assertion id="drop_column_for_plain" db-types="MySQL">
<input sql="ALTER TABLE t_account_bak DROP COLUMN password" />
- <output sql="ALTER TABLE t_account_bak DROP COLUMN cipher_password ,
DROP COLUMN assisted_query_password , DROP COLUMN plain_password " />
+ <output sql="ALTER TABLE t_account_bak DROP COLUMN cipher_password,
DROP COLUMN assisted_query_password, DROP COLUMN plain_password" />
</rewrite-assertion>
<rewrite-assertion id="drop_columns_for_plain" db-types="MySQL">
- <input sql="ALTER TABLE t_account_bak DROP COLUMN password , DROP
COLUMN amount" />
- <output sql="ALTER TABLE t_account_bak DROP COLUMN cipher_password ,
DROP COLUMN assisted_query_password , DROP COLUMN plain_password , DROP
COLUMN cipher_amount , DROP COLUMN plain_amount " />
+ <input sql="ALTER TABLE t_account_bak DROP COLUMN password, DROP
COLUMN amount" />
+ <output sql="ALTER TABLE t_account_bak DROP COLUMN cipher_password,
DROP COLUMN assisted_query_password, DROP COLUMN plain_password, DROP COLUMN
cipher_amount, DROP COLUMN plain_amount" />
</rewrite-assertion>
<rewrite-assertion id="drop_mix_columns_for_plain" db-types="MySQL">
- <input sql="ALTER TABLE t_account_bak DROP COLUMN password , DROP
COLUMN id" />
- <output sql="ALTER TABLE t_account_bak DROP COLUMN cipher_password ,
DROP COLUMN assisted_query_password , DROP COLUMN plain_password , DROP
COLUMN id " />
+ <input sql="ALTER TABLE t_account_bak DROP COLUMN password, DROP
COLUMN id" />
+ <output sql="ALTER TABLE t_account_bak DROP COLUMN cipher_password,
DROP COLUMN assisted_query_password, DROP COLUMN plain_password, DROP COLUMN
id" />
</rewrite-assertion>
</rewrite-assertions>