Skip to content

Commit d0c8879

Browse files
Revert "Issue apache#32280/ bug fix: WHERE segment with ON CONFLICT segment in INSE…" (#3)
This reverts commit ed4a82e.
1 parent 6d16aff commit d0c8879

File tree

13 files changed

+25
-471
lines changed

13 files changed

+25
-471
lines changed

RELEASE-NOTES.md

-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@
9999
1. Encrypt: Use sql bind info in EncryptInsertPredicateColumnTokenGenerator to avoid wrong column table mapping - [#34110](https://github.com/apache/shardingsphere/pull/34110)
100100
1. Mode: Fixes `JDBCRepository` improper handling of H2-database in memory mode - [#33281](https://github.com/apache/shardingsphere/issues/33281)
101101
1. Mode: Fixes duplicate column names added when index changed in DDL - [#33982](https://github.com/apache/shardingsphere/issues/33281)
102-
1. SQL Binder: Fixes bug: throwing exception while using WHERE statement in ON CONFLICT with INSERT INTO in Postgres [#32280](https://github.com/apache/shardingsphere/issues/32280)
103102

104103
### Change Logs
105104

infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/insert/values/OnConflictUpdateContext.java

-113
This file was deleted.

infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContext.java

-28
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.apache.shardingsphere.infra.binder.context.segment.insert.values.InsertSelectContext;
2626
import org.apache.shardingsphere.infra.binder.context.segment.insert.values.InsertValueContext;
2727
import org.apache.shardingsphere.infra.binder.context.segment.insert.values.OnDuplicateUpdateContext;
28-
import org.apache.shardingsphere.infra.binder.context.segment.insert.values.OnConflictUpdateContext;
2928
import org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
3029
import org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
3130
import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
@@ -44,7 +43,6 @@
4443
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.assignment.InsertValuesSegment;
4544
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.assignment.SetAssignmentSegment;
4645
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
47-
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.OnConflictKeyColumnsSegment;
4846
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.OnDuplicateKeyColumnsSegment;
4947
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.combine.CombineSegment;
5048
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.BinaryOperationExpression;
@@ -54,7 +52,6 @@
5452
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.WithSegment;
5553
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
5654
import org.apache.shardingsphere.sql.parser.statement.core.statement.dml.InsertStatement;
57-
import org.apache.shardingsphere.sql.parser.statement.core.extractor.TableExtractor;
5855

5956
import java.util.ArrayList;
6057
import java.util.Collection;
@@ -95,9 +92,6 @@ public final class InsertStatementContext extends CommonSQLStatementContext impl
9592
@Getter
9693
private OnDuplicateUpdateContext onDuplicateKeyUpdateValueContext;
9794

98-
@Getter
99-
private OnConflictUpdateContext onConflictKeyUpdateValueContext;
100-
10195
private GeneratedKeyContext generatedKeyContext;
10296

10397
public InsertStatementContext(final ShardingSphereMetaData metaData, final List<Object> params, final InsertStatement sqlStatement, final String currentDatabaseName) {
@@ -185,18 +179,6 @@ private Optional<OnDuplicateUpdateContext> getOnDuplicateKeyUpdateValueContext(f
185179
return Optional.of(onDuplicateUpdateContext);
186180
}
187181

188-
private Optional<OnConflictUpdateContext> getOnConflictKeyUpdateValueContext(final List<Object> params, final AtomicInteger parametersOffset) {
189-
Optional<OnConflictKeyColumnsSegment> onConflictKeyColumnsSegment = getSqlStatement().getOnConflictKeyColumns();
190-
if (!onConflictKeyColumnsSegment.isPresent()) {
191-
return Optional.empty();
192-
}
193-
Collection<ColumnAssignmentSegment> onConflictKeyColumns = onConflictKeyColumnsSegment.get().getColumns();
194-
Optional<WhereSegment> whereSegment = getSqlStatement().getOnConflictKeyColumns().flatMap(OnConflictKeyColumnsSegment::getWhere);
195-
OnConflictUpdateContext onConflictUpdateContext = new OnConflictUpdateContext(onConflictKeyColumns, params, parametersOffset.get(), whereSegment);
196-
parametersOffset.addAndGet(onConflictUpdateContext.getParameterCount());
197-
return Optional.of(onConflictUpdateContext);
198-
}
199-
200182
private Collection<SimpleTableSegment> getAllSimpleTableSegments() {
201183
TableExtractor tableExtractor = new TableExtractor();
202184
tableExtractor.extractTablesFromInsert(getSqlStatement());
@@ -246,15 +228,6 @@ public List<Object> getOnDuplicateKeyUpdateParameters() {
246228
return null == onDuplicateKeyUpdateValueContext ? new ArrayList<>() : onDuplicateKeyUpdateValueContext.getParameters();
247229
}
248230

249-
/**
250-
* Get on duplicate key update parameters.
251-
*
252-
* @return on duplicate key update parameters
253-
*/
254-
public List<Object> getOnConflictKeyUpdateParameters() {
255-
return null == onConflictKeyUpdateValueContext ? new ArrayList<>() : onConflictKeyUpdateValueContext.getParameters();
256-
}
257-
258231
/**
259232
* Get generated key context.
260233
*
@@ -342,7 +315,6 @@ public void setUpParameters(final List<Object> params) {
342315
insertValueContexts = getInsertValueContexts(params, parametersOffset, valueExpressions);
343316
insertSelectContext = getInsertSelectContext(metaData, params, parametersOffset, currentDatabaseName).orElse(null);
344317
onDuplicateKeyUpdateValueContext = getOnDuplicateKeyUpdateValueContext(params, parametersOffset).orElse(null);
345-
onConflictKeyUpdateValueContext = getOnConflictKeyUpdateValueContext(params, parametersOffset).orElse(null);
346318
ShardingSphereSchema schema = getSchema(metaData, currentDatabaseName);
347319
generatedKeyContext = new GeneratedKeyContextEngine(getSqlStatement(), schema).createGenerateKeyContext(insertColumnNamesAndIndexes, insertValueContexts, params).orElse(null);
348320
}

infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/InsertStatementBinder.java

-7
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ColumnProjectionSegment;
3333
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionSegment;
3434
import org.apache.shardingsphere.sql.parser.statement.core.statement.dml.InsertStatement;
35-
import org.apache.shardingsphere.sql.parser.statement.postgresql.dml.PostgreSQLInsertStatement;
3635

3736
import java.util.Collection;
3837
import java.util.stream.Collectors;
@@ -64,12 +63,6 @@ private InsertStatement copy(final InsertStatement sqlStatement) {
6463
result.getValues().addAll(sqlStatement.getValues());
6564
sqlStatement.getSetAssignment().ifPresent(result::setSetAssignment);
6665
sqlStatement.getOnDuplicateKeyColumns().ifPresent(result::setOnDuplicateKeyColumns);
67-
sqlStatement.getOnConflictKeyColumns().ifPresent(segment -> {
68-
if (result instanceof PostgreSQLInsertStatement) {
69-
((PostgreSQLInsertStatement) result).setOnConflictKeyColumnsSegment(segment);
70-
}
71-
});
72-
sqlStatement.getWithSegment().ifPresent(result::setWithSegment);
7366
sqlStatement.getOutputSegment().ifPresent(result::setOutputSegment);
7467
sqlStatement.getMultiTableInsertType().ifPresent(result::setMultiTableInsertType);
7568
sqlStatement.getMultiTableInsertIntoSegment().ifPresent(result::setMultiTableInsertIntoSegment);

0 commit comments

Comments
 (0)