提交 64680918 编写于 作者: T terrymanu

for #1990, refactor InsertColumnValues

上级 5b7d4e57
......@@ -32,4 +32,38 @@
# limitations under the License.
#
#
# 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.
#
#
# 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.
#
org.apache.shardingsphere.core.parsing.hook.fixture.ParsingHookFixture
......@@ -70,9 +70,7 @@ public final class EncryptInsertOptimizeEngine implements OptimizeEngine {
}
private InsertColumnValues createInsertColumnValues() {
InsertColumnValues result = new InsertColumnValues(insertStatement.getInsertValuesToken().getType());
result.getColumnNames().addAll(insertStatement.getInsertColumnNames());
return result;
return new InsertColumnValues(insertStatement.getInsertValuesToken().getType(), insertStatement.getInsertColumnNames());
}
private List<Object> getCurrentParameters(final int beginCount, final int increment) {
......
......@@ -93,9 +93,7 @@ public final class InsertOptimizeEngine implements OptimizeEngine {
}
private InsertColumnValues createInsertColumnValues() {
InsertColumnValues result = new InsertColumnValues(insertStatement.getInsertValuesToken().getType());
result.getColumnNames().addAll(insertStatement.getInsertColumnNames());
return result;
return new InsertColumnValues(insertStatement.getInsertValuesToken().getType(), insertStatement.getInsertColumnNames());
}
private Iterator<Comparable<?>> createGeneratedKeys() {
......
......@@ -20,7 +20,6 @@ package org.apache.shardingsphere.core.optimizer.result;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.core.parsing.lexer.token.DefaultKeyword;
import org.apache.shardingsphere.core.parsing.parser.expression.SQLExpression;
import org.apache.shardingsphere.core.parsing.parser.expression.SQLNumberExpression;
......@@ -40,7 +39,6 @@ import java.util.Set;
* @author panjuan
*/
@Getter
@RequiredArgsConstructor
public final class InsertColumnValues {
private final DefaultKeyword type;
......@@ -49,17 +47,19 @@ public final class InsertColumnValues {
private final List<InsertColumnValue> columnValues = new LinkedList<>();
public InsertColumnValues(final DefaultKeyword type, final List<String> columnNames) {
this.type = type;
this.columnNames.addAll(columnNames);
}
/**
* Add insert column value.
*
* @param columnValues column values
* @param columnParameters column parameters
* @param columnParameters column parameters
*/
public void addInsertColumnValue(final List<SQLExpression> columnValues, final List<Object> columnParameters) {
InsertColumnValue result = new InsertColumnValue();
result.values.addAll(columnValues);
result.parameters.addAll(columnParameters);
this.columnValues.add(result);
this.columnValues.add(new InsertColumnValue(columnValues, columnParameters));
}
/**
......@@ -81,8 +81,13 @@ public final class InsertColumnValues {
private final List<DataNode> dataNodes = new LinkedList<>();
public InsertColumnValue(final List<SQLExpression> values, final List<Object> parameters) {
this.values.addAll(values);
this.parameters.addAll(parameters);
}
/**
* Update column value.
* Set column value.
*
* @param columnName column name
* @param columnValue column value
......
......@@ -24,7 +24,6 @@ import org.apache.shardingsphere.core.parsing.parser.expression.SQLExpression;
import org.apache.shardingsphere.core.parsing.parser.expression.SQLNumberExpression;
import org.apache.shardingsphere.core.parsing.parser.expression.SQLPlaceholderExpression;
import org.apache.shardingsphere.core.parsing.parser.expression.SQLTextExpression;
import org.junit.Before;
import org.junit.Test;
import java.util.Collections;
......@@ -36,15 +35,9 @@ import static org.junit.Assert.assertThat;
public class InsertColumnValuesTest {
private InsertColumnValues insertColumnValuesWithSet = new InsertColumnValues(DefaultKeyword.SET);
private InsertColumnValues insertColumnValuesWithSet = new InsertColumnValues(DefaultKeyword.SET, Lists.newArrayList("id", "value", "status"));
private InsertColumnValues insertColumnValuesWithValues = new InsertColumnValues(DefaultKeyword.VALUES);
@Before
public void setUp() {
insertColumnValuesWithSet.getColumnNames().addAll(Lists.newArrayList("id", "value", "status"));
insertColumnValuesWithValues.getColumnNames().addAll(Lists.newArrayList("id", "value", "status"));
}
private InsertColumnValues insertColumnValuesWithValues = new InsertColumnValues(DefaultKeyword.VALUES, Lists.newArrayList("id", "value", "status"));
@Test
public void assertAddInsertColumnValueWithSet() {
......
......@@ -177,12 +177,9 @@ public final class SQLRewriteEngineTest {
sqlExpressions.add(new SQLPlaceholderExpression(0));
sqlExpressions.add(new SQLPlaceholderExpression(1));
sqlExpressions.add(new SQLPlaceholderExpression(2));
InsertColumnValues insertColumnValues = new InsertColumnValues(DefaultKeyword.VALUES);
InsertColumnValues insertColumnValues = new InsertColumnValues(DefaultKeyword.VALUES, Arrays.asList("name", "age", "id"));
insertColumnValues.addInsertColumnValue(sqlExpressions, parameters);
insertColumnValues.getColumnValues().get(0).getDataNodes().add(new DataNode("db0.table_1"));
insertColumnValues.getColumnNames().add("name");
insertColumnValues.getColumnNames().add("age");
insertColumnValues.getColumnNames().add("id");
TableUnit tableUnit = new TableUnit("db0");
tableUnit.getRoutingTables().add(new RoutingTable("table_x", "table_1"));
SQLRewriteEngine rewriteEngine = new SQLRewriteEngine(shardingRule, "INSERT INTO table_x (name, age) VALUES (?, ?)",
......@@ -205,9 +202,7 @@ public final class SQLRewriteEngineTest {
List<SQLExpression> sqlExpressions = new LinkedList<>();
sqlExpressions.add(new SQLPlaceholderExpression(0));
sqlExpressions.add(new SQLPlaceholderExpression(1));
InsertColumnValues insertColumnValues = new InsertColumnValues(DefaultKeyword.VALUES);
insertColumnValues.getColumnNames().add("name");
insertColumnValues.getColumnNames().add("id");
InsertColumnValues insertColumnValues = new InsertColumnValues(DefaultKeyword.VALUES, Arrays.asList("name", "id"));
insertColumnValues.addInsertColumnValue(sqlExpressions, parameters);
insertColumnValues.getColumnValues().get(0).getDataNodes().add(new DataNode("db0.table_1"));
TableUnit tableUnit = new TableUnit("db0");
......@@ -228,9 +223,7 @@ public final class SQLRewriteEngineTest {
List<SQLExpression> sqlExpressions = new LinkedList<>();
sqlExpressions.add(new SQLNumberExpression(10));
sqlExpressions.add(new SQLNumberExpression(1));
InsertColumnValues insertColumnValues = new InsertColumnValues(DefaultKeyword.VALUES);
insertColumnValues.getColumnNames().add("name");
insertColumnValues.getColumnNames().add("id");
InsertColumnValues insertColumnValues = new InsertColumnValues(DefaultKeyword.VALUES, Arrays.asList("name", "id"));
insertColumnValues.addInsertColumnValue(sqlExpressions, new LinkedList<>());
insertColumnValues.getColumnValues().get(0).getDataNodes().add(new DataNode("db0.table_1"));
TableUnit tableUnit = new TableUnit("db0");
......@@ -254,9 +247,7 @@ public final class SQLRewriteEngineTest {
List<SQLExpression> sqlExpressions = new LinkedList<>();
sqlExpressions.add(new SQLNumberExpression(10));
sqlExpressions.add(new SQLNumberExpression(1));
InsertColumnValues insertColumnValues = new InsertColumnValues(DefaultKeyword.VALUES);
insertColumnValues.getColumnNames().add("name");
insertColumnValues.getColumnNames().add("id");
InsertColumnValues insertColumnValues = new InsertColumnValues(DefaultKeyword.VALUES, Arrays.asList("name", "id"));
insertColumnValues.addInsertColumnValue(sqlExpressions, new LinkedList<>());
insertColumnValues.getColumnValues().get(0).getDataNodes().add(new DataNode("db0.table_1"));
TableUnit tableUnit = new TableUnit("db0");
......@@ -277,9 +268,7 @@ public final class SQLRewriteEngineTest {
insertStatement.addSQLToken(new TableToken(12, 0, "table_x", "`", "`"));
insertStatement.setInsertValuesListLastIndex(34);
insertStatement.addSQLToken(new InsertValuesToken(21, DefaultKeyword.VALUES));
InsertColumnValues insertColumnValues = new InsertColumnValues(DefaultKeyword.VALUES);
insertColumnValues.getColumnNames().add("name");
insertColumnValues.getColumnNames().add("id");
InsertColumnValues insertColumnValues = new InsertColumnValues(DefaultKeyword.VALUES, Arrays.asList("name", "id"));
List<SQLExpression> sqlExpressions = new LinkedList<>();
sqlExpressions.add(new SQLPlaceholderExpression(0));
sqlExpressions.add(new SQLPlaceholderExpression(1));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册