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 b18367e95e4 Fix sonar issues on Combine this loop with the one that
starts (#25829)
b18367e95e4 is described below
commit b18367e95e4dc977d9d2ee506b1036f04c4104de
Author: Liang Zhang <[email protected]>
AuthorDate: Sun May 21 22:18:55 2023 +0800
Fix sonar issues on Combine this loop with the one that starts (#25829)
---
.../statement/dml/DeleteStatementContext.java | 15 ++++++++++-----
.../StandaloneContextManagerBuilderTest.java | 2 +-
.../connector/ProxyDatabaseConnectionManager.java | 20 ++++++++++++--------
.../asserts/segment/orderby/OrderByItemAssert.java | 21 ++++++++++++++++-----
4 files changed, 39 insertions(+), 19 deletions(-)
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/DeleteStatementContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/DeleteStatementContext.java
index 034fcd705af..92f05d3a6c7 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/DeleteStatementContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/DeleteStatementContext.java
@@ -60,13 +60,10 @@ public final class DeleteStatementContext extends
CommonSQLStatementContext impl
}
private Collection<SimpleTableSegment> filterAliasDeleteTable(final
Collection<SimpleTableSegment> tableSegments) {
- Map<String, SimpleTableSegment> aliasTableSegmentMap = new
HashMap<>(tableSegments.size(), 1f);
- for (SimpleTableSegment each : tableSegments) {
- each.getAlias().ifPresent(optional ->
aliasTableSegmentMap.putIfAbsent(optional, each));
- }
Collection<SimpleTableSegment> result = new LinkedList<>();
+ Map<String, SimpleTableSegment> aliasAndTableSegmentMap =
getAliasAndTableSegmentMap(tableSegments);
for (SimpleTableSegment each : tableSegments) {
- SimpleTableSegment aliasDeleteTable =
aliasTableSegmentMap.get(each.getTableName().getIdentifier().getValue());
+ SimpleTableSegment aliasDeleteTable =
aliasAndTableSegmentMap.get(each.getTableName().getIdentifier().getValue());
if (null == aliasDeleteTable || aliasDeleteTable.equals(each)) {
result.add(each);
}
@@ -74,6 +71,14 @@ public final class DeleteStatementContext extends
CommonSQLStatementContext impl
return result;
}
+ private Map<String, SimpleTableSegment> getAliasAndTableSegmentMap(final
Collection<SimpleTableSegment> tableSegments) {
+ Map<String, SimpleTableSegment> result = new
HashMap<>(tableSegments.size(), 1);
+ for (SimpleTableSegment each : tableSegments) {
+ each.getAlias().ifPresent(optional -> result.putIfAbsent(optional,
each));
+ }
+ return result;
+ }
+
@Override
public DeleteStatement getSqlStatement() {
return (DeleteStatement) super.getSqlStatement();
diff --git
a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilderTest.java
b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilderTest.java
index 9345e5462d0..af0843a7d03 100644
---
a/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilderTest.java
+++
b/mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilderTest.java
@@ -52,7 +52,7 @@ class StandaloneContextManagerBuilderTest {
assertNotNull(repository.getDirectly(GlobalNode.getGlobalRuleNode()));
assertNotNull(repository.getDirectly(DatabaseMetaDataNode.getMetaDataDataSourcePath("foo_db",
"0")));
assertNotNull(repository.getDirectly(DatabaseMetaDataNode.getRulePath("foo_db",
"0")));
- }
+ }
}
private ContextManagerBuilderParameter
createContextManagerBuilderParameter() {
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
index 00e8103a2e4..551a54938d5 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
@@ -125,20 +125,25 @@ public final class ProxyDatabaseConnectionManager
implements DatabaseConnectionM
}
String databaseType =
connections.iterator().next().getMetaData().getDatabaseProductName();
List<String> setSQLs =
connectionSession.getRequiredSessionVariableRecorder().toSetSQLs(databaseType);
- SQLException sqlException = null;
+ try {
+ executeSetSessionVariables(connections, setSQLs);
+ } catch (final SQLException ex) {
+ releaseConnection(connections, ex);
+ throw ex;
+ }
+ }
+
+ private void executeSetSessionVariables(final List<Connection>
connections, final List<String> setSQLs) throws SQLException {
for (Connection each : connections) {
try (Statement statement = each.createStatement()) {
for (String eachSetSQL : setSQLs) {
statement.execute(eachSetSQL);
}
- } catch (final SQLException ex) {
- sqlException = ex;
- break;
}
}
- if (null == sqlException) {
- return;
- }
+ }
+
+ private void releaseConnection(final List<Connection> connections, final
SQLException sqlException) {
for (Connection each : connections) {
try {
each.close();
@@ -146,7 +151,6 @@ public final class ProxyDatabaseConnectionManager
implements DatabaseConnectionM
sqlException.setNextException(ex);
}
}
- throw sqlException;
}
private void replayMethodsInvocation(final Connection target) throws
SQLException {
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/orderby/OrderByItemAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/orderby/OrderByItemAssert.java
index 923c8aeb801..a6c549c144f 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/orderby/OrderByItemAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/orderby/OrderByItemAssert.java
@@ -53,11 +53,16 @@ public final class OrderByItemAssert {
* @param assertContext assert context
* @param actual actual order by segments
* @param expected expected order by
- * @param type type of assertion, should be Order by or Group by
+ * @param type type of assertion, should be order by or group by
*/
- public static void assertIs(final SQLCaseAssertContext assertContext,
- final Collection<OrderByItemSegment> actual,
final ExpectedOrderByClause expected, final String type) {
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final Collection<OrderByItemSegment> actual, final ExpectedOrderByClause
expected, final String type) {
assertThat(assertContext.getText(String.format("%s items size
assertion error: ", type)), actual.size(), is(expected.getItemSize()));
+ assertColumnOrderByItems(assertContext, actual, expected, type);
+ assertIndexOrderByItems(assertContext, actual, expected, type);
+ assertExpressionOrderByItems(assertContext, actual, expected, type);
+ }
+
+ private static void assertColumnOrderByItems(final SQLCaseAssertContext
assertContext, final Collection<OrderByItemSegment> actual, final
ExpectedOrderByClause expected, final String type) {
int count = 0;
for (OrderByItemSegment each : actual) {
if (each instanceof ColumnOrderByItemSegment) {
@@ -66,7 +71,10 @@ public final class OrderByItemAssert {
count++;
}
}
- count = 0;
+ }
+
+ private static void assertIndexOrderByItems(final SQLCaseAssertContext
assertContext, final Collection<OrderByItemSegment> actual, final
ExpectedOrderByClause expected, final String type) {
+ int count = 0;
for (OrderByItemSegment each : actual) {
if (each instanceof IndexOrderByItemSegment) {
assertOrderInfo(assertContext, each,
expected.getIndexItems().get(count), type);
@@ -74,7 +82,10 @@ public final class OrderByItemAssert {
count++;
}
}
- count = 0;
+ }
+
+ private static void assertExpressionOrderByItems(final
SQLCaseAssertContext assertContext, final Collection<OrderByItemSegment>
actual, final ExpectedOrderByClause expected, final String type) {
+ int count = 0;
for (OrderByItemSegment each : actual) {
if (each instanceof ExpressionOrderByItemSegment) {
assertOrderInfo(assertContext, each,
expected.getExpressionItems().get(count), type);