提交 55427d08 编写于 作者: beckhampu's avatar beckhampu

Merge remote-tracking branch 'upstream/dev' into sharding-ui

......@@ -47,12 +47,6 @@ public final class EncryptInsertOptimizeEngine implements EncryptOptimizeEngine<
for (Collection<ExpressionSegment> each : sqlStatement.getAllValueExpressions()) {
InsertValue insertValue = createInsertValue(columnNames, encryptDerivedColumnNames, each, derivedColumnCount, parameters, parametersOffset);
result.getInsertValues().add(insertValue);
if (encryptRule.containsQueryAssistedColumn(tableName)) {
fillAssistedQueryInsertValue(encryptRule, insertValue.getParameters(), tableName, columnNames, insertValue);
}
if (encryptRule.containsPlainColumn(tableName)) {
fillPlainInsertValue(encryptRule, insertValue.getParameters(), tableName, columnNames, insertValue);
}
parametersOffset += insertValue.getParametersCount();
}
return result;
......@@ -64,21 +58,4 @@ public final class EncryptInsertOptimizeEngine implements EncryptOptimizeEngine<
allColumnNames.addAll(derivedColumnNames);
return new InsertValue(allColumnNames, assignments, derivedColumnsCount, parameters, parametersOffset);
}
private void fillAssistedQueryInsertValue(final EncryptRule encryptRule,
final List<Object> parameters, final String tableName, final Collection<String> columnNames, final InsertValue insertValue) {
for (String each : columnNames) {
if (encryptRule.getAssistedQueryColumn(tableName, each).isPresent()) {
insertValue.appendValue((Comparable<?>) insertValue.getValue(each), parameters);
}
}
}
private void fillPlainInsertValue(final EncryptRule encryptRule, final List<Object> parameters, final String tableName, final Collection<String> columnNames, final InsertValue insertValue) {
for (String each : columnNames) {
if (encryptRule.getPlainColumn(tableName, each).isPresent()) {
insertValue.appendValue((Comparable<?>) insertValue.getValue(each), parameters);
}
}
}
}
......@@ -30,7 +30,6 @@ import org.apache.shardingsphere.core.parse.sql.segment.dml.column.ColumnSegment
import org.apache.shardingsphere.core.parse.sql.segment.dml.column.OnDuplicateKeyColumnsSegment;
import org.apache.shardingsphere.core.parse.sql.segment.dml.expr.ExpressionSegment;
import org.apache.shardingsphere.core.parse.sql.statement.dml.InsertStatement;
import org.apache.shardingsphere.core.rule.EncryptRule;
import org.apache.shardingsphere.core.rule.ShardingRule;
import java.util.Collection;
......@@ -77,13 +76,6 @@ public final class ShardingInsertOptimizeEngine implements ShardingOptimizeEngin
if (isGeneratedValue) {
insertValue.appendValue(generatedValues.next(), insertValue.getParameters());
}
EncryptRule encryptRule = shardingRule.getEncryptRule();
if (encryptRule.containsQueryAssistedColumn(tableName)) {
fillAssistedQueryInsertValue(encryptRule, insertValue.getParameters(), tableName, columnNames, insertValue);
}
if (encryptRule.containsPlainColumn(tableName)) {
fillPlainInsertValue(encryptRule, insertValue.getParameters(), tableName, columnNames, insertValue);
}
parametersOffset += insertValue.getParametersCount();
}
return result;
......@@ -126,21 +118,4 @@ public final class ShardingInsertOptimizeEngine implements ShardingOptimizeEngin
allColumnNames.addAll(derivedColumnNames);
return new InsertValue(allColumnNames, assignments, derivedColumnsCount, parameters, parametersOffset);
}
private void fillAssistedQueryInsertValue(final EncryptRule encryptRule,
final List<Object> parameters, final String tableName, final Collection<String> columnNames, final InsertValue insertValue) {
for (String each : columnNames) {
if (encryptRule.getAssistedQueryColumn(tableName, each).isPresent()) {
insertValue.appendValue((Comparable<?>) insertValue.getValue(each), parameters);
}
}
}
private void fillPlainInsertValue(final EncryptRule encryptRule, final List<Object> parameters, final String tableName, final Collection<String> columnNames, final InsertValue insertValue) {
for (String each : columnNames) {
if (encryptRule.getPlainColumn(tableName, each).isPresent()) {
insertValue.appendValue((Comparable<?>) insertValue.getValue(each), parameters);
}
}
}
}
......@@ -120,9 +120,6 @@ public final class EncryptInsertOptimizeEngineTest {
assertTrue(actual.getInsertValues().get(0).getParameters().isEmpty());
assertThat(actual.getInsertValues().get(0).getValue("col1"), is((Object) 1));
assertThat(actual.getInsertValues().get(0).getValue("col2"), is((Object) 2));
assertThat(actual.getInsertValues().get(0).getValue("query1"), is((Object) 1));
assertThat(actual.getInsertValues().get(0).getValue("query2"), is((Object) 2));
}
private InsertStatement createInsertStatementWithValuesWithoutPlaceHolderWithQueryEncrypt() {
......@@ -143,7 +140,6 @@ public final class EncryptInsertOptimizeEngineTest {
assertTrue(actual.getInsertValues().get(0).getParameters().isEmpty());
assertThat(actual.getInsertValues().get(0).getValue("col1"), is((Object) 1));
assertThat(actual.getInsertValues().get(0).getValue("col2"), is((Object) 2));
}
private InsertStatement createInsertStatementWithSetWithoutPlaceHolderWithEncrypt() {
......@@ -162,12 +158,9 @@ public final class EncryptInsertOptimizeEngineTest {
EncryptInsertOptimizeEngine optimizeEngine = new EncryptInsertOptimizeEngine();
EncryptInsertOptimizedStatement actual = optimizeEngine.optimize(encryptRule, mock(TableMetas.class), "", parametersWithValues, insertStatement);
assertThat(actual.getInsertValues().size(), is(1));
assertThat(actual.getInsertValues().get(0).getParameters().size(), is(4));
assertThat(actual.getInsertValues().get(0).getParameters().size(), is(2));
assertThat(actual.getInsertValues().get(0).getParameters().get(0), is((Object) 1));
assertThat(actual.getInsertValues().get(0).getParameters().get(1), is((Object) 2));
assertThat(actual.getInsertValues().get(0).getParameters().get(2), is((Object) 1));
assertThat(actual.getInsertValues().get(0).getParameters().get(3), is((Object) 2));
}
private InsertStatement createInsertStatementWithSetWithPlaceHolderWithQueryEncrypt() {
......
......@@ -43,6 +43,7 @@ import org.apache.shardingsphere.core.rule.ShardingRule;
import org.apache.shardingsphere.spi.encrypt.ShardingEncryptor;
import org.apache.shardingsphere.spi.encrypt.ShardingQueryAssistedEncryptor;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
......@@ -115,13 +116,37 @@ public final class SQLRewriteEngine {
}
private void encryptInsertOptimizedStatement(final EncryptRule encryptRule, final EncryptInsertOptimizedStatement insertOptimizedStatement) {
String tableName = insertOptimizedStatement.getTables().getSingleTableName();
for (InsertValue insertValue : insertOptimizedStatement.getInsertValues()) {
if (encryptRule.containsQueryAssistedColumn(tableName)) {
fillAssistedQueryInsertValue(encryptRule, insertValue.getParameters(), tableName, insertOptimizedStatement.getColumnNames(), insertValue);
}
if (encryptRule.containsPlainColumn(tableName)) {
fillPlainInsertValue(encryptRule, insertValue.getParameters(), tableName, insertOptimizedStatement.getColumnNames(), insertValue);
}
for (String each : insertOptimizedStatement.getColumnNames()) {
encryptInsertValue(encryptRule, insertValue, insertOptimizedStatement.getTables().getSingleTableName(), each);
}
}
}
private void fillAssistedQueryInsertValue(final EncryptRule encryptRule,
final List<Object> parameters, final String tableName, final Collection<String> columnNames, final InsertValue insertValue) {
for (String each : columnNames) {
if (encryptRule.getAssistedQueryColumn(tableName, each).isPresent()) {
insertValue.appendValue((Comparable<?>) insertValue.getValue(each), parameters);
}
}
}
private void fillPlainInsertValue(final EncryptRule encryptRule, final List<Object> parameters, final String tableName, final Collection<String> columnNames, final InsertValue insertValue) {
for (String each : columnNames) {
if (encryptRule.getPlainColumn(tableName, each).isPresent()) {
insertValue.appendValue((Comparable<?>) insertValue.getValue(each), parameters);
}
}
}
private void encryptInsertValue(final EncryptRule encryptRule, final InsertValue insertValue, final String tableName, final String columnName) {
Optional<ShardingEncryptor> shardingEncryptor = encryptRule.getShardingEncryptor(tableName, columnName);
if (!shardingEncryptor.isPresent()) {
......
......@@ -58,7 +58,7 @@
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<imageName>shardingsphere/sharding-proxy:4.0.0-RC2</imageName>
<imageName>apache/sharding-proxy:4.0.0-RC3</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
......
......@@ -18,7 +18,7 @@
FROM java:7
MAINTAINER ShardingSphere "dev@shardingsphere.incubator.apache.org"
ENV CURRENT_VERSION 4.0.0-RC2
ENV CURRENT_VERSION 4.0.0-RC3
ENV APP_NAME apache-shardingsphere-incubating
ENV MODULE_NAME sharding-proxy
ENV LOCAL_PATH /opt/sharding-proxy
......
......@@ -21,7 +21,7 @@
<parent>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-orchestration</artifactId>
<version>4.0.0-RC2-SNAPSHOT</version>
<version>4.0.0-RC3-SNAPSHOT</version>
</parent>
<artifactId>sharding-orchestration-zookeeper-curator-integration-test</artifactId>
<name>${project.artifactId}</name>
......
......@@ -36,7 +36,7 @@ public final class MySQLServerInfo {
/**
* Server version.
*/
public static final String SERVER_VERSION = "5.6.0-Sharding-Proxy 4.0.0-RC2";
public static final String SERVER_VERSION = "5.6.0-Sharding-Proxy 4.0.0-RC3";
/**
* Charset code 0x21 is utf8_general_ci.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册