This is an automated email from the ASF dual-hosted git repository.
panjuan 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 232c6f8785e Add PipelineInventoryDumpSQLBuilder (#27194)
232c6f8785e is described below
commit 232c6f8785ed40414925707d3bb4ecdfee6e51d2
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jul 14 16:42:01 2023 +0800
Add PipelineInventoryDumpSQLBuilder (#27194)
---
.../api/config/ingest/DumperConfiguration.java | 6 +-
.../PipelineInventoryDumpSQLBuilder.java | 96 ++++++++++++++++++++++
.../sqlbuilder/PipelineSQLBuilderEngine.java | 70 ++--------------
.../data/pipeline/core/dumper/InventoryDumper.java | 18 ++--
.../PipelineInventoryDumpSQLBuilderTest.java | 56 +++++++++++++
.../sqlbuilder/PipelineSQLBuilderEngineTest.java | 34 ++------
6 files changed, 179 insertions(+), 101 deletions(-)
diff --git
a/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/config/ingest/DumperConfiguration.java
b/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/config/ingest/DumperConfiguration.java
index 37c2033f6e2..044658d2aa9 100644
---
a/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/config/ingest/DumperConfiguration.java
+++
b/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/config/ingest/DumperConfiguration.java
@@ -107,12 +107,12 @@ public class DumperConfiguration {
}
/**
- * Get column name list of table.
+ * Get column names.
*
* @param logicTableName logic table name
- * @return column names of table
+ * @return column names
*/
- public Optional<List<String>> getColumnNameList(final LogicTableName
logicTableName) {
+ public Optional<List<String>> getColumnNames(final LogicTableName
logicTableName) {
Set<ColumnName> columnNames = null != targetTableColumnsMap ?
targetTableColumnsMap.get(logicTableName) : null;
if (null == columnNames) {
return Optional.empty();
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineInventoryDumpSQLBuilder.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineInventoryDumpSQLBuilder.java
new file mode 100644
index 00000000000..74d3a0a599d
--- /dev/null
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineInventoryDumpSQLBuilder.java
@@ -0,0 +1,96 @@
+/*
+ * 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.data.pipeline.common.sqlbuilder;
+
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * Pipeline inventory dump SQL builder.
+ */
+public final class PipelineInventoryDumpSQLBuilder {
+
+ private final PipelineSQLSegmentBuilder sqlSegmentBuilder;
+
+ public PipelineInventoryDumpSQLBuilder(final DatabaseType databaseType) {
+ sqlSegmentBuilder = new PipelineSQLSegmentBuilder(databaseType);
+ }
+
+ /**
+ * Build divisible inventory dump SQL.
+ *
+ * @param schemaName schema name
+ * @param tableName table name
+ * @param columnNames column names
+ * @param uniqueKey unique key
+ * @return built SQL
+ */
+ public String buildDivisibleSQL(final String schemaName, final String
tableName, final List<String> columnNames, final String uniqueKey) {
+ String qualifiedTableName =
sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName);
+ String escapedUniqueKey =
sqlSegmentBuilder.getEscapedIdentifier(uniqueKey);
+ return String.format("SELECT %s FROM %s WHERE %s>=? AND %s<=? ORDER BY
%s ASC", buildQueryColumns(columnNames), qualifiedTableName, escapedUniqueKey,
escapedUniqueKey, escapedUniqueKey);
+ }
+
+ /**
+ * Build divisible inventory dump SQL with unlimited value.
+ *
+ * @param schemaName schema name
+ * @param tableName table name
+ * @param columnNames column names
+ * @param uniqueKey unique key
+ * @return built SQL
+ */
+ public String buildUnlimitedDivisibleSQL(final String schemaName, final
String tableName, final List<String> columnNames, final String uniqueKey) {
+ String qualifiedTableName =
sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName);
+ String escapedUniqueKey =
sqlSegmentBuilder.getEscapedIdentifier(uniqueKey);
+ return String.format("SELECT %s FROM %s WHERE %s>=? ORDER BY %s ASC",
buildQueryColumns(columnNames), qualifiedTableName, escapedUniqueKey,
escapedUniqueKey);
+ }
+
+ /**
+ * Build indivisible inventory dump first SQL.
+ *
+ * @param schemaName schema name
+ * @param tableName table name
+ * @param columnNames column names
+ * @param uniqueKey unique key
+ * @return built SQL
+ */
+ public String buildIndivisibleSQL(final String schemaName, final String
tableName, final List<String> columnNames, final String uniqueKey) {
+ String qualifiedTableName =
sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName);
+ String quotedUniqueKey =
sqlSegmentBuilder.getEscapedIdentifier(uniqueKey);
+ return String.format("SELECT %s FROM %s ORDER BY %s ASC",
buildQueryColumns(columnNames), qualifiedTableName, quotedUniqueKey);
+ }
+
+ private String buildQueryColumns(final List<String> columnNames) {
+ return
columnNames.stream().map(sqlSegmentBuilder::getEscapedIdentifier).collect(Collectors.joining(","));
+ }
+
+ /**
+ * Build fetch all inventory dump SQL.
+ *
+ * @param schemaName schema name
+ * @param tableName tableName
+ * @return built SQL
+ */
+ public String buildFetchAllSQL(final String schemaName, final String
tableName) {
+ String qualifiedTableName =
sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName);
+ return String.format("SELECT * FROM %s", qualifiedTableName);
+ }
+}
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLBuilderEngine.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLBuilderEngine.java
index 0c945e9bae0..3d9e02b3a46 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLBuilderEngine.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLBuilderEngine.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.data.pipeline.common.sqlbuilder;
+import lombok.Getter;
import org.apache.shardingsphere.data.pipeline.api.ingest.record.Column;
import org.apache.shardingsphere.data.pipeline.api.ingest.record.DataRecord;
import
org.apache.shardingsphere.data.pipeline.spi.sqlbuilder.DialectPipelineSQLBuilder;
@@ -41,6 +42,9 @@ public final class PipelineSQLBuilderEngine {
private static final String DELETE_SQL_CACHE_KEY_PREFIX = "DELETE_";
+ @Getter
+ private final PipelineInventoryDumpSQLBuilder inventoryDumpSQLBuilder;
+
private final DialectPipelineSQLBuilder dialectSQLBuilder;
private final PipelineSQLSegmentBuilder sqlSegmentBuilder;
@@ -48,6 +52,7 @@ public final class PipelineSQLBuilderEngine {
private final ConcurrentMap<String, String> sqlCacheMap;
public PipelineSQLBuilderEngine(final DatabaseType databaseType) {
+ inventoryDumpSQLBuilder = new
PipelineInventoryDumpSQLBuilder(databaseType);
dialectSQLBuilder =
DatabaseTypedSPILoader.getService(DialectPipelineSQLBuilder.class,
databaseType);
sqlSegmentBuilder = new PipelineSQLSegmentBuilder(databaseType);
sqlCacheMap = new ConcurrentHashMap<>();
@@ -63,67 +68,6 @@ public final class PipelineSQLBuilderEngine {
return dialectSQLBuilder.buildCreateSchemaSQL(schemaName);
}
- /**
- * Build divisible inventory dump SQL.
- *
- * @param schemaName schema name
- * @param tableName table name
- * @param columnNames column names
- * @param uniqueKey unique key
- * @return divisible inventory dump SQL
- */
- public String buildDivisibleInventoryDumpSQL(final String schemaName,
final String tableName, final List<String> columnNames, final String uniqueKey)
{
- String qualifiedTableName =
sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName);
- String escapedUniqueKey =
sqlSegmentBuilder.getEscapedIdentifier(uniqueKey);
- return String.format("SELECT %s FROM %s WHERE %s>=? AND %s<=? ORDER BY
%s ASC", buildQueryColumns(columnNames), qualifiedTableName, escapedUniqueKey,
escapedUniqueKey, escapedUniqueKey);
- }
-
- /**
- * Build divisible inventory dump SQL without limited value.
- *
- * @param schemaName schema name
- * @param tableName table name
- * @param columnNames column names
- * @param uniqueKey unique key
- * @return divisible inventory dump SQL without end value
- */
- public String buildNoLimitedDivisibleInventoryDumpSQL(final String
schemaName, final String tableName, final List<String> columnNames, final
String uniqueKey) {
- String qualifiedTableName =
sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName);
- String escapedUniqueKey =
sqlSegmentBuilder.getEscapedIdentifier(uniqueKey);
- return String.format("SELECT %s FROM %s WHERE %s>=? ORDER BY %s ASC",
buildQueryColumns(columnNames), qualifiedTableName, escapedUniqueKey,
escapedUniqueKey);
- }
-
- private String buildQueryColumns(final List<String> columnNames) {
- return columnNames.isEmpty() ? "*" :
columnNames.stream().map(sqlSegmentBuilder::getEscapedIdentifier).collect(Collectors.joining(","));
- }
-
- /**
- * Build indivisible inventory dump first SQL.
- *
- * @param schemaName schema name
- * @param tableName table name
- * @param columnNames column names
- * @param uniqueKey unique key
- * @return indivisible inventory dump SQL
- */
- public String buildIndivisibleInventoryDumpSQL(final String schemaName,
final String tableName, final List<String> columnNames, final String uniqueKey)
{
- String qualifiedTableName =
sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName);
- String quotedUniqueKey =
sqlSegmentBuilder.getEscapedIdentifier(uniqueKey);
- return String.format("SELECT %s FROM %s ORDER BY %s ASC",
buildQueryColumns(columnNames), qualifiedTableName, quotedUniqueKey);
- }
-
- /**
- * Build no unique key inventory dump SQL.
- *
- * @param schemaName schema name
- * @param tableName tableName
- * @return inventory dump all SQL
- */
- public String buildNoUniqueKeyInventoryDumpSQL(final String schemaName,
final String tableName) {
- String qualifiedTableName =
sqlSegmentBuilder.getQualifiedTableName(schemaName, tableName);
- return String.format("SELECT * FROM %s", qualifiedTableName);
- }
-
/**
* Build insert SQL.
*
@@ -280,6 +224,10 @@ public final class PipelineSQLBuilderEngine {
: String.format("SELECT %s FROM %s WHERE %s>? ORDER BY %s
ASC", buildQueryColumns(columnNames), qualifiedTableName, quotedUniqueKey,
quotedUniqueKey);
}
+ private String buildQueryColumns(final List<String> columnNames) {
+ return columnNames.isEmpty() ? "*" :
columnNames.stream().map(sqlSegmentBuilder::getEscapedIdentifier).collect(Collectors.joining(","));
+ }
+
/**
* Build check empty SQL.
*
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/dumper/InventoryDumper.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/dumper/InventoryDumper.java
index 52e80609743..124e9be7b9c 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/dumper/InventoryDumper.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/dumper/InventoryDumper.java
@@ -40,6 +40,7 @@ import
org.apache.shardingsphere.data.pipeline.common.ingest.position.FinishedPo
import
org.apache.shardingsphere.data.pipeline.common.ingest.position.PlaceholderPosition;
import
org.apache.shardingsphere.data.pipeline.common.ingest.position.pk.PrimaryKeyPosition;
import
org.apache.shardingsphere.data.pipeline.common.ingest.position.pk.PrimaryKeyPositionFactory;
+import
org.apache.shardingsphere.data.pipeline.common.sqlbuilder.PipelineInventoryDumpSQLBuilder;
import
org.apache.shardingsphere.data.pipeline.common.sqlbuilder.PipelineSQLBuilderEngine;
import
org.apache.shardingsphere.data.pipeline.common.util.JDBCStreamQueryUtils;
import org.apache.shardingsphere.data.pipeline.common.util.PipelineJdbcUtils;
@@ -155,23 +156,24 @@ public final class InventoryDumper extends
AbstractLifecycleExecutor implements
if (!Strings.isNullOrEmpty(dumperConfig.getQuerySQL())) {
return dumperConfig.getQuerySQL();
}
+ PipelineInventoryDumpSQLBuilder inventoryDumpSQLBuilder =
sqlBuilderEngine.getInventoryDumpSQLBuilder();
LogicTableName logicTableName = new
LogicTableName(dumperConfig.getLogicTableName());
String schemaName = dumperConfig.getSchemaName(logicTableName);
if (!dumperConfig.hasUniqueKey()) {
- return
sqlBuilderEngine.buildNoUniqueKeyInventoryDumpSQL(schemaName,
dumperConfig.getActualTableName());
+ return inventoryDumpSQLBuilder.buildFetchAllSQL(schemaName,
dumperConfig.getActualTableName());
}
- PrimaryKeyPosition<?> position = (PrimaryKeyPosition<?>)
dumperConfig.getPosition();
+ PrimaryKeyPosition<?> primaryKeyPosition = (PrimaryKeyPosition<?>)
dumperConfig.getPosition();
PipelineColumnMetaData firstColumn =
dumperConfig.getUniqueKeyColumns().get(0);
- List<String> columnNames =
dumperConfig.getColumnNameList(logicTableName).orElse(Collections.singletonList("*"));
+ List<String> columnNames =
dumperConfig.getColumnNames(logicTableName).orElse(Collections.singletonList("*"));
if (PipelineJdbcUtils.isIntegerColumn(firstColumn.getDataType()) ||
PipelineJdbcUtils.isStringColumn(firstColumn.getDataType())) {
- if (null != position.getBeginValue() && null !=
position.getEndValue()) {
- return
sqlBuilderEngine.buildDivisibleInventoryDumpSQL(schemaName,
dumperConfig.getActualTableName(), columnNames, firstColumn.getName());
+ if (null != primaryKeyPosition.getBeginValue() && null !=
primaryKeyPosition.getEndValue()) {
+ return inventoryDumpSQLBuilder.buildDivisibleSQL(schemaName,
dumperConfig.getActualTableName(), columnNames, firstColumn.getName());
}
- if (null != position.getBeginValue() && null ==
position.getEndValue()) {
- return
sqlBuilderEngine.buildNoLimitedDivisibleInventoryDumpSQL(schemaName,
dumperConfig.getActualTableName(), columnNames, firstColumn.getName());
+ if (null != primaryKeyPosition.getBeginValue() && null ==
primaryKeyPosition.getEndValue()) {
+ return
inventoryDumpSQLBuilder.buildUnlimitedDivisibleSQL(schemaName,
dumperConfig.getActualTableName(), columnNames, firstColumn.getName());
}
}
- return sqlBuilderEngine.buildIndivisibleInventoryDumpSQL(schemaName,
dumperConfig.getActualTableName(), columnNames, firstColumn.getName());
+ return inventoryDumpSQLBuilder.buildIndivisibleSQL(schemaName,
dumperConfig.getActualTableName(), columnNames, firstColumn.getName());
}
private void setParameters(final PreparedStatement preparedStatement)
throws SQLException {
diff --git
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineInventoryDumpSQLBuilderTest.java
b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineInventoryDumpSQLBuilderTest.java
new file mode 100644
index 00000000000..153935b5424
--- /dev/null
+++
b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineInventoryDumpSQLBuilderTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.data.pipeline.common.sqlbuilder;
+
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+class PipelineInventoryDumpSQLBuilderTest {
+
+ private final PipelineInventoryDumpSQLBuilder inventoryDumpSQLBuilder =
new
PipelineInventoryDumpSQLBuilder(TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"));
+
+ @Test
+ void assertBuildDivisibleSQL() {
+ String actual = inventoryDumpSQLBuilder.buildDivisibleSQL(null,
"t_order", Arrays.asList("order_id", "user_id", "status"), "order_id");
+ assertThat(actual, is("SELECT order_id,user_id,status FROM t_order
WHERE order_id>=? AND order_id<=? ORDER BY order_id ASC"));
+ }
+
+ @Test
+ void assertBuildUnlimitedDivisibleSQL() {
+ String actual =
inventoryDumpSQLBuilder.buildUnlimitedDivisibleSQL(null, "t_order",
Arrays.asList("order_id", "user_id", "status"), "order_id");
+ assertThat(actual, is("SELECT order_id,user_id,status FROM t_order
WHERE order_id>=? ORDER BY order_id ASC"));
+ }
+
+ @Test
+ void assertBuildIndivisibleSQL() {
+ String actual = inventoryDumpSQLBuilder.buildIndivisibleSQL(null,
"t_order", Arrays.asList("order_id", "user_id", "status"), "order_id");
+ assertThat(actual, is("SELECT order_id,user_id,status FROM t_order
ORDER BY order_id ASC"));
+ }
+
+ @Test
+ void assertBuildFetchAllSQL() {
+ String actual = inventoryDumpSQLBuilder.buildFetchAllSQL(null,
"t_order");
+ assertThat(actual, is("SELECT * FROM t_order"));
+ }
+}
diff --git
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLBuilderEngineTest.java
b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLBuilderEngineTest.java
index bf5568e0da1..b690d6b703e 100644
---
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLBuilderEngineTest.java
+++
b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLBuilderEngineTest.java
@@ -37,30 +37,6 @@ class PipelineSQLBuilderEngineTest {
private final PipelineSQLBuilderEngine sqlBuilderEngine = new
PipelineSQLBuilderEngine(TypedSPILoader.getService(DatabaseType.class, "H2"));
- @Test
- void assertBuildDivisibleInventoryDumpSQL() {
- String actual = sqlBuilderEngine.buildDivisibleInventoryDumpSQL(null,
"t_order", Collections.singletonList("*"), "order_id");
- assertThat(actual, is("SELECT * FROM t_order WHERE order_id>=? AND
order_id<=? ORDER BY order_id ASC"));
- actual = sqlBuilderEngine.buildDivisibleInventoryDumpSQL(null,
"t_order", Arrays.asList("order_id", "user_id", "status"), "order_id");
- assertThat(actual, is("SELECT order_id,user_id,status FROM t_order
WHERE order_id>=? AND order_id<=? ORDER BY order_id ASC"));
- }
-
- @Test
- void assertBuildDivisibleInventoryDumpSQLNoEnd() {
- String actual =
sqlBuilderEngine.buildNoLimitedDivisibleInventoryDumpSQL(null, "t_order",
Collections.singletonList("*"), "order_id");
- assertThat(actual, is("SELECT * FROM t_order WHERE order_id>=? ORDER
BY order_id ASC"));
- actual =
sqlBuilderEngine.buildNoLimitedDivisibleInventoryDumpSQL(null, "t_order",
Arrays.asList("order_id", "user_id", "status"), "order_id");
- assertThat(actual, is("SELECT order_id,user_id,status FROM t_order
WHERE order_id>=? ORDER BY order_id ASC"));
- }
-
- @Test
- void assertBuildIndivisibleInventoryDumpSQL() {
- String actual =
sqlBuilderEngine.buildIndivisibleInventoryDumpSQL(null, "t_order",
Collections.singletonList("*"), "order_id");
- assertThat(actual, is("SELECT * FROM t_order ORDER BY order_id ASC"));
- actual = sqlBuilderEngine.buildIndivisibleInventoryDumpSQL(null,
"t_order", Arrays.asList("order_id", "user_id", "status"), "order_id");
- assertThat(actual, is("SELECT order_id,user_id,status FROM t_order
ORDER BY order_id ASC"));
- }
-
@Test
void assertBuildQueryAllOrderingSQLFirstQuery() {
String actual = sqlBuilderEngine.buildQueryAllOrderingSQL(null,
"t_order", Collections.singletonList("*"), "order_id", true);
@@ -125,20 +101,20 @@ class PipelineSQLBuilderEngineTest {
@Test
void assertBuildDeleteSQLWithoutUniqueKey() {
- String actual = sqlBuilderEngine.buildDeleteSQL(null,
mockDataRecordWithoutUniqueKey("t_order"),
-
RecordUtils.extractConditionColumns(mockDataRecordWithoutUniqueKey("t_order"),
Collections.emptySet()));
+ String actual = sqlBuilderEngine.buildDeleteSQL(null,
mockDataRecordWithoutUniqueKey(),
+
RecordUtils.extractConditionColumns(mockDataRecordWithoutUniqueKey(),
Collections.emptySet()));
assertThat(actual, is("DELETE FROM t_order WHERE id = ? AND name =
?"));
}
@Test
void assertBuildUpdateSQLWithoutShardingColumns() {
- DataRecord dataRecord = mockDataRecordWithoutUniqueKey("t_order");
+ DataRecord dataRecord = mockDataRecordWithoutUniqueKey();
String actual = sqlBuilderEngine.buildUpdateSQL(null, dataRecord,
mockConditionColumns(dataRecord));
assertThat(actual, is("UPDATE t_order SET name = ? WHERE id = ? AND
name = ?"));
}
- private DataRecord mockDataRecordWithoutUniqueKey(final String tableName) {
- DataRecord result = new DataRecord(IngestDataChangeType.INSERT,
tableName, new PlaceholderPosition(), 4);
+ private DataRecord mockDataRecordWithoutUniqueKey() {
+ DataRecord result = new DataRecord(IngestDataChangeType.INSERT,
"t_order", new PlaceholderPosition(), 4);
result.addColumn(new Column("id", "", false, false));
result.addColumn(new Column("name", "", true, false));
return result;