This is an automated email from the ASF dual-hosted git repository. chengzhang 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 e2670039d17 Fix wrong jdbc database metadata pass through logic (#34959) e2670039d17 is described below commit e2670039d17c0f2ae7794fb149ad8df8d8176cb1 Author: Zhengqiang Duan <duanzhengqi...@apache.org> AuthorDate: Wed Mar 12 09:03:31 2025 +0800 Fix wrong jdbc database metadata pass through logic (#34959) Co-authored-by: shardingsphere <d...@shardingsphere.apache.org> --- RELEASE-NOTES.md | 1 + .../jdbc/adapter/AdaptedDatabaseMetaData.java | 56 +++++++++++----------- .../ShardingSphereDatabaseMetaDataTest.java | 55 ++++++++++----------- 3 files changed, 57 insertions(+), 55 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 35574b0b0c2..d70664219bd 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -34,6 +34,7 @@ 1. Mode: Fixes the exception to missing renamed schema name when alter schema - [#34465](https://github.com/apache/shardingsphere/pull/34465) 1. SQL Parser: Fix set OnDuplicateKeyColumnsSegment on PostgreSQLInsertStatement - [#34425](https://github.com/apache/shardingsphere/pull/34425) 1. SQL Parser: Fix mysql sql parser error when sql contains implicit concat expression - [#34660](https://github.com/apache/shardingsphere/pull/34660) +1. JDBC: Fix wrong jdbc database metadata pass through logic - [#34959](https://github.com/apache/shardingsphere/pull/34959) ### Change Logs diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AdaptedDatabaseMetaData.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AdaptedDatabaseMetaData.java index 17bf480d52b..bcd0c56eda1 100644 --- a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AdaptedDatabaseMetaData.java +++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AdaptedDatabaseMetaData.java @@ -138,7 +138,7 @@ public abstract class AdaptedDatabaseMetaData extends WrapperAdapter implements @Override public final boolean supportsMixedCaseIdentifiers() throws SQLException { - return databaseMetaData.storesMixedCaseIdentifiers(); + return databaseMetaData.supportsMixedCaseIdentifiers(); } @Override @@ -243,7 +243,7 @@ public abstract class AdaptedDatabaseMetaData extends WrapperAdapter implements @Override public final boolean supportsConvert(final int fromType, final int toType) throws SQLException { - return databaseMetaData.supportsConvert(); + return databaseMetaData.supportsConvert(fromType, toType); } @Override @@ -702,67 +702,67 @@ public abstract class AdaptedDatabaseMetaData extends WrapperAdapter implements } @Override - public final boolean ownInsertsAreVisible(final int type) { - return true; + public final boolean ownInsertsAreVisible(final int type) throws SQLException { + return databaseMetaData.ownInsertsAreVisible(type); } @Override - public final boolean ownUpdatesAreVisible(final int type) { - return true; + public final boolean ownUpdatesAreVisible(final int type) throws SQLException { + return databaseMetaData.ownUpdatesAreVisible(type); } @Override - public final boolean ownDeletesAreVisible(final int type) { - return true; + public final boolean ownDeletesAreVisible(final int type) throws SQLException { + return databaseMetaData.ownDeletesAreVisible(type); } @Override - public final boolean othersInsertsAreVisible(final int type) { - return true; + public final boolean othersInsertsAreVisible(final int type) throws SQLException { + return databaseMetaData.othersInsertsAreVisible(type); } @Override - public final boolean othersUpdatesAreVisible(final int type) { - return true; + public final boolean othersUpdatesAreVisible(final int type) throws SQLException { + return databaseMetaData.othersUpdatesAreVisible(type); } @Override - public final boolean othersDeletesAreVisible(final int type) { - return true; + public final boolean othersDeletesAreVisible(final int type) throws SQLException { + return databaseMetaData.othersDeletesAreVisible(type); } @Override - public final boolean insertsAreDetected(final int type) { - return true; + public final boolean insertsAreDetected(final int type) throws SQLException { + return databaseMetaData.insertsAreDetected(type); } @Override - public final boolean updatesAreDetected(final int type) { - return true; + public final boolean updatesAreDetected(final int type) throws SQLException { + return databaseMetaData.updatesAreDetected(type); } @Override - public final boolean deletesAreDetected(final int type) { - return true; + public final boolean deletesAreDetected(final int type) throws SQLException { + return databaseMetaData.deletesAreDetected(type); } @Override - public final boolean supportsResultSetType(final int type) { - return true; + public final boolean supportsResultSetType(final int type) throws SQLException { + return databaseMetaData.supportsResultSetType(type); } @Override - public final boolean supportsResultSetConcurrency(final int type, final int concurrency) { - return true; + public final boolean supportsResultSetConcurrency(final int type, final int concurrency) throws SQLException { + return databaseMetaData.supportsResultSetConcurrency(type, concurrency); } @Override - public final boolean supportsResultSetHoldability(final int holdability) { - return true; + public final boolean supportsResultSetHoldability(final int holdability) throws SQLException { + return databaseMetaData.supportsResultSetHoldability(holdability); } @Override - public final boolean supportsTransactionIsolationLevel(final int level) { - return true; + public final boolean supportsTransactionIsolationLevel(final int level) throws SQLException { + return databaseMetaData.supportsTransactionIsolationLevel(level); } } diff --git a/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java b/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java index 895439242c5..11210596578 100644 --- a/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java +++ b/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java @@ -49,7 +49,6 @@ import java.util.Collections; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -776,68 +775,70 @@ class ShardingSphereDatabaseMetaDataTest { } @Test - void assertOwnInsertsAreVisible() { - assertTrue(shardingSphereDatabaseMetaData.ownInsertsAreVisible(ResultSet.TYPE_FORWARD_ONLY)); + void assertOwnInsertsAreVisible() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.ownInsertsAreVisible(ResultSet.TYPE_FORWARD_ONLY), is(databaseMetaData.ownInsertsAreVisible(ResultSet.TYPE_FORWARD_ONLY))); } @Test - void assertOwnUpdatesAreVisible() { - assertTrue(shardingSphereDatabaseMetaData.ownUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY)); + void assertOwnUpdatesAreVisible() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.ownUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY), is(databaseMetaData.ownUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY))); } @Test - void assertOwnDeletesAreVisible() { - assertTrue(shardingSphereDatabaseMetaData.ownDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY)); + void assertOwnDeletesAreVisible() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.ownDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY), is(databaseMetaData.ownDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY))); } @Test - void assertOthersInsertsAreVisible() { - assertTrue(shardingSphereDatabaseMetaData.othersInsertsAreVisible(ResultSet.TYPE_FORWARD_ONLY)); + void assertOthersInsertsAreVisible() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.othersInsertsAreVisible(ResultSet.TYPE_FORWARD_ONLY), is(databaseMetaData.othersInsertsAreVisible(ResultSet.TYPE_FORWARD_ONLY))); } @Test - void assertOthersUpdatesAreVisible() { - assertTrue(shardingSphereDatabaseMetaData.othersUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY)); + void assertOthersUpdatesAreVisible() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.othersUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY), is(databaseMetaData.othersUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY))); } @Test - void assertOthersDeletesAreVisible() { - assertTrue(shardingSphereDatabaseMetaData.othersDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY)); + void assertOthersDeletesAreVisible() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.othersDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY), is(databaseMetaData.othersDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY))); } @Test - void assertInsertsAreDetected() { - assertTrue(shardingSphereDatabaseMetaData.insertsAreDetected(ResultSet.TYPE_FORWARD_ONLY)); + void assertInsertsAreDetected() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.insertsAreDetected(ResultSet.TYPE_FORWARD_ONLY), is(databaseMetaData.insertsAreDetected(ResultSet.TYPE_FORWARD_ONLY))); } @Test - void assertUpdatesAreDetected() { - assertTrue(shardingSphereDatabaseMetaData.updatesAreDetected(ResultSet.TYPE_FORWARD_ONLY)); + void assertUpdatesAreDetected() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.updatesAreDetected(ResultSet.TYPE_FORWARD_ONLY), is(databaseMetaData.updatesAreDetected(ResultSet.TYPE_FORWARD_ONLY))); } @Test - void assertDeletesAreDetected() { - assertTrue(shardingSphereDatabaseMetaData.deletesAreDetected(ResultSet.TYPE_FORWARD_ONLY)); + void assertDeletesAreDetected() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.deletesAreDetected(ResultSet.TYPE_FORWARD_ONLY), is(databaseMetaData.deletesAreDetected(ResultSet.TYPE_FORWARD_ONLY))); } @Test - void assertSupportsResultSetType() { - assertTrue(shardingSphereDatabaseMetaData.supportsResultSetType(ResultSet.TYPE_FORWARD_ONLY)); + void assertSupportsResultSetType() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.supportsResultSetType(ResultSet.TYPE_FORWARD_ONLY), is(databaseMetaData.supportsResultSetType(ResultSet.TYPE_FORWARD_ONLY))); } @Test - void assertSupportsResultSetConcurrency() { - assertTrue(shardingSphereDatabaseMetaData.supportsResultSetConcurrency(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)); + void assertSupportsResultSetConcurrency() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.supportsResultSetConcurrency(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY), + is(databaseMetaData.supportsResultSetConcurrency(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY))); } @Test - void assertSupportsResultSetHoldability() { - assertTrue(shardingSphereDatabaseMetaData.supportsResultSetHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT)); + void assertSupportsResultSetHoldability() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.supportsResultSetHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT), + is(databaseMetaData.supportsResultSetHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT))); } @Test - void assertSupportsTransactionIsolationLevel() { - assertTrue(shardingSphereDatabaseMetaData.supportsTransactionIsolationLevel(Connection.TRANSACTION_NONE)); + void assertSupportsTransactionIsolationLevel() throws SQLException { + assertThat(shardingSphereDatabaseMetaData.supportsTransactionIsolationLevel(Connection.TRANSACTION_NONE), is(databaseMetaData.supportsTransactionIsolationLevel(Connection.TRANSACTION_NONE))); } @Test