You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2026/04/13 01:56:23 UTC

(shardingsphere) branch master updated: Fix DatabaseIdentifierContextFactoryTest (#38614)

This is an automated email from the ASF dual-hosted git repository.

menghaoran 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 be47363cb18 Fix DatabaseIdentifierContextFactoryTest (#38614)
be47363cb18 is described below

commit be47363cb183f8dcaf5c2b1b206b4320276e1d45
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Mon Apr 13 09:56:15 2026 +0800

    Fix DatabaseIdentifierContextFactoryTest (#38614)
---
 .../DatabaseIdentifierContextFactoryTest.java      | 85 ++++++++--------------
 1 file changed, 30 insertions(+), 55 deletions(-)

diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java
index 6b1fee885e9..ff40b6a6fc6 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java
@@ -25,7 +25,6 @@ import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.config.props.MetadataIdentifierCaseSensitivity;
-import org.apache.shardingsphere.infra.exception.kernel.metadata.AmbiguousIdentifierException;
 import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 import org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
 import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
@@ -59,7 +58,6 @@ import java.util.logging.Logger;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertThrows;
 
 class DatabaseIdentifierContextFactoryTest {
     
@@ -232,58 +230,58 @@ class DatabaseIdentifierContextFactoryTest {
     @ParameterizedTest(name = "{0}")
     @MethodSource("createWithMixedStoredCaseSchemaLookupArguments")
     void assertCreateFindMixedStoredCaseSchemaIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
-                                                          final IdentifierValue lookupIdentifier, final String expectedSchemaName, final String expectedExceptionMessage) {
+                                                          final IdentifierValue lookupIdentifier, final String expectedSchemaName) {
         DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.create(protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
         IdentifierIndex<String> schemaIndex = createIdentifierIndex(actual, IdentifierScope.SCHEMA, "foo_schema", "FOO_SCHEMA");
-        assertFindResult(schemaIndex, lookupIdentifier, expectedSchemaName, expectedExceptionMessage);
+        assertThat(schemaIndex.find(lookupIdentifier), is(getExpectedResult(expectedSchemaName)));
     }
     
     @ParameterizedTest(name = "{0}")
     @MethodSource("createWithMixedStoredCaseTableLookupArguments")
     void assertCreateFindMixedStoredCaseTableIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
-                                                         final IdentifierValue lookupIdentifier, final String expectedTableName, final String expectedExceptionMessage) {
+                                                         final IdentifierValue lookupIdentifier, final String expectedTableName) {
         DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.create(protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
         IdentifierIndex<String> tableIndex = createIdentifierIndex(actual, IdentifierScope.TABLE, "foo_tbl", "FOO_TBL");
-        assertFindResult(tableIndex, lookupIdentifier, expectedTableName, expectedExceptionMessage);
+        assertThat(tableIndex.find(lookupIdentifier), is(getExpectedResult(expectedTableName)));
     }
     
     @ParameterizedTest(name = "{0}")
     @MethodSource("createWithMixedStoredCaseColumnLookupArguments")
     void assertCreateFindMixedStoredCaseColumnIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
-                                                          final IdentifierValue lookupIdentifier, final String expectedColumnName, final String expectedExceptionMessage) {
+                                                          final IdentifierValue lookupIdentifier, final String expectedColumnName) {
         DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.create(protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
         IdentifierIndex<String> columnIndex = createIdentifierIndex(actual, IdentifierScope.COLUMN, "foo_col", "FOO_COL");
-        assertFindResult(columnIndex, lookupIdentifier, expectedColumnName, expectedExceptionMessage);
+        assertThat(columnIndex.find(lookupIdentifier), is(getExpectedResult(expectedColumnName)));
     }
     
     @ParameterizedTest(name = "{0}")
     @MethodSource("refreshWithMixedStoredCaseSchemaLookupArguments")
     void assertRefreshFindMixedStoredCaseSchemaIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
-                                                           final IdentifierValue lookupIdentifier, final String expectedSchemaName, final String expectedExceptionMessage) {
+                                                           final IdentifierValue lookupIdentifier, final String expectedSchemaName) {
         DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.createDefault();
         DatabaseIdentifierContextFactory.refresh(actual, protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
         IdentifierIndex<String> schemaIndex = createIdentifierIndex(actual, IdentifierScope.SCHEMA, "foo_schema", "FOO_SCHEMA");
-        assertFindResult(schemaIndex, lookupIdentifier, expectedSchemaName, expectedExceptionMessage);
+        assertThat(schemaIndex.find(lookupIdentifier), is(getExpectedResult(expectedSchemaName)));
     }
     
     @ParameterizedTest(name = "{0}")
     @MethodSource("refreshWithMixedStoredCaseTableLookupArguments")
     void assertRefreshFindMixedStoredCaseTableIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
-                                                          final IdentifierValue lookupIdentifier, final String expectedTableName, final String expectedExceptionMessage) {
+                                                          final IdentifierValue lookupIdentifier, final String expectedTableName) {
         DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.createDefault();
         DatabaseIdentifierContextFactory.refresh(actual, protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
         IdentifierIndex<String> tableIndex = createIdentifierIndex(actual, IdentifierScope.TABLE, "foo_tbl", "FOO_TBL");
-        assertFindResult(tableIndex, lookupIdentifier, expectedTableName, expectedExceptionMessage);
+        assertThat(tableIndex.find(lookupIdentifier), is(getExpectedResult(expectedTableName)));
     }
     
     @ParameterizedTest(name = "{0}")
     @MethodSource("refreshWithMixedStoredCaseColumnLookupArguments")
     void assertRefreshFindMixedStoredCaseColumnIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
-                                                           final IdentifierValue lookupIdentifier, final String expectedColumnName, final String expectedExceptionMessage) {
+                                                           final IdentifierValue lookupIdentifier, final String expectedColumnName) {
         DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.createDefault();
         DatabaseIdentifierContextFactory.refresh(actual, protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
         IdentifierIndex<String> columnIndex = createIdentifierIndex(actual, IdentifierScope.COLUMN, "foo_col", "FOO_COL");
-        assertFindResult(columnIndex, lookupIdentifier, expectedColumnName, expectedExceptionMessage);
+        assertThat(columnIndex.find(lookupIdentifier), is(getExpectedResult(expectedColumnName)));
     }
     
     private static Stream<Arguments> createWithProtocolTypeAndPropsArguments() {
@@ -436,16 +434,6 @@ class DatabaseIdentifierContextFactoryTest {
         return null == expectedName ? Optional.empty() : Optional.of(expectedName);
     }
     
-    private static void assertFindResult(final IdentifierIndex<String> identifierIndex, final IdentifierValue lookupIdentifier,
-                                         final String expectedName, final String expectedExceptionMessage) {
-        if (null == expectedExceptionMessage) {
-            assertThat(identifierIndex.find(lookupIdentifier), is(getExpectedResult(expectedName)));
-            return;
-        }
-        AmbiguousIdentifierException actual = assertThrows(AmbiguousIdentifierException.class, () -> identifierIndex.find(lookupIdentifier));
-        assertThat(actual.getMessage(), is(expectedExceptionMessage));
-    }
-    
     private static Stream<Arguments> createInsensitiveQuotedExactLookupArguments(final String databaseName, final DatabaseType protocolType,
                                                                                  final ResourceMetaData resourceMetaData, final String lowerActualName,
                                                                                  final String quoteCharacter) {
@@ -540,48 +528,40 @@ class DatabaseIdentifierContextFactoryTest {
                                                                                       final String quoteCharacter) {
         String upperActualName = lowerActualName.toUpperCase(Locale.ENGLISH);
         return Stream.of(
-                createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName, null),
-                createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName, null),
-                createMixedLookupArgument(databaseName + " treats unquoted lower lookup as ambiguous", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, null,
-                        createAmbiguousIdentifierMessage(lowerActualName, lowerActualName, upperActualName)),
-                createMixedLookupArgument(databaseName + " treats unquoted upper lookup as ambiguous", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, null,
-                        createAmbiguousIdentifierMessage(upperActualName, lowerActualName, upperActualName)));
+                createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName),
+                createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName),
+                createMixedLookupArgument(databaseName + " finds lower actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, lowerActualName),
+                createMixedLookupArgument(databaseName + " finds upper actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, upperActualName));
     }
     
     private static Stream<Arguments> createNormalizedMixedLookupArguments(final String databaseName, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
                                                                           final String lowerActualName, final String quoteCharacter) {
         String upperActualName = lowerActualName.toUpperCase(Locale.ENGLISH);
         return Stream.of(
-                createMixedLookupArgument(databaseName + " treats quoted lower lookup as ambiguous", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, null,
-                        createAmbiguousIdentifierMessage(lowerActualName, lowerActualName, upperActualName)),
-                createMixedLookupArgument(databaseName + " treats quoted upper lookup as ambiguous", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, null,
-                        createAmbiguousIdentifierMessage(upperActualName, lowerActualName, upperActualName)),
-                createMixedLookupArgument(databaseName + " treats unquoted lower lookup as ambiguous", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, null,
-                        createAmbiguousIdentifierMessage(lowerActualName, lowerActualName, upperActualName)),
-                createMixedLookupArgument(databaseName + " treats unquoted upper lookup as ambiguous", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, null,
-                        createAmbiguousIdentifierMessage(upperActualName, lowerActualName, upperActualName)));
+                createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName),
+                createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName),
+                createMixedLookupArgument(databaseName + " finds lower actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, lowerActualName),
+                createMixedLookupArgument(databaseName + " finds upper actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, upperActualName));
     }
     
     private static Stream<Arguments> createLowerCaseMixedLookupArguments(final String databaseName, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
                                                                          final String lowerActualName, final String quoteCharacter) {
         String upperActualName = lowerActualName.toUpperCase(Locale.ENGLISH);
         return Stream.of(
-                createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName, null),
-                createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName, null),
-                createMixedLookupArgument(databaseName + " finds lower actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, lowerActualName, null),
-                createMixedLookupArgument(databaseName + " finds lower actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, lowerActualName,
-                        null));
+                createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName),
+                createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName),
+                createMixedLookupArgument(databaseName + " finds lower actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, lowerActualName),
+                createMixedLookupArgument(databaseName + " finds lower actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, lowerActualName));
     }
     
     private static Stream<Arguments> createUpperCaseMixedLookupArguments(final String databaseName, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
                                                                          final String lowerActualName, final String quoteCharacter) {
         String upperActualName = lowerActualName.toUpperCase(Locale.ENGLISH);
         return Stream.of(
-                createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName, null),
-                createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName, null),
-                createMixedLookupArgument(databaseName + " finds upper actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, upperActualName, null),
-                createMixedLookupArgument(databaseName + " finds upper actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, upperActualName,
-                        null));
+                createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName),
+                createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName),
+                createMixedLookupArgument(databaseName + " finds upper actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, upperActualName),
+                createMixedLookupArgument(databaseName + " finds upper actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, upperActualName));
     }
     
     private static Arguments createLookupArgument(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData, final String actualName,
@@ -590,19 +570,14 @@ class DatabaseIdentifierContextFactoryTest {
     }
     
     private static Arguments createMixedLookupArgument(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
-                                                       final String lookupName, final boolean quoted, final String quoteCharacter,
-                                                       final String expectedName, final String expectedExceptionMessage) {
-        return Arguments.of(name, protocolType, resourceMetaData, createIdentifierValue(lookupName, quoted, quoteCharacter), expectedName, expectedExceptionMessage);
+                                                       final String lookupName, final boolean quoted, final String quoteCharacter, final String expectedName) {
+        return Arguments.of(name, protocolType, resourceMetaData, createIdentifierValue(lookupName, quoted, quoteCharacter), expectedName);
     }
     
     private static IdentifierValue createIdentifierValue(final String lookupName, final boolean quoted, final String quoteCharacter) {
         return new IdentifierValue(quoted ? quoteCharacter + lookupName + quoteCharacter : lookupName);
     }
     
-    private static String createAmbiguousIdentifierMessage(final String identifierName, final String lowerActualName, final String upperActualName) {
-        return String.format("Identifier '%s' is ambiguous, matched actual identifiers: %s, %s.", identifierName, lowerActualName, upperActualName);
-    }
-    
     private static ResourceMetaData createResourceMetaDataWithFirstDataSource() {
         return createResourceMetaDataWithStorageUrls("jdbc:mysql://localhost:3306/foo_db");
     }