This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 e20e6a177db Add test cases on TablesContext (#33213)
e20e6a177db is described below
commit e20e6a177db964c5b7e6901c005590a4bbb06268
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Oct 11 18:36:59 2024 +0800
Add test cases on TablesContext (#33213)
---
.../context/segment/table/TablesContext.java | 8 ++---
.../context/segment/table/TablesContextTest.java | 39 ++++++++++++++--------
2 files changed, 30 insertions(+), 17 deletions(-)
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
index 58e34a2aa33..e656b6f4762 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
@@ -69,16 +69,16 @@ public final class TablesContext {
private final Map<String, IdentifierValue> tableNameAliasMap = new
HashMap<>();
- public TablesContext(final SimpleTableSegment tableSegment, final
DatabaseType databaseType, final String currentDatabaseName) {
- this(null == tableSegment ? Collections.emptyList() :
Collections.singletonList(tableSegment), databaseType, currentDatabaseName);
+ public TablesContext(final SimpleTableSegment table, final DatabaseType
databaseType, final String currentDatabaseName) {
+ this(null == table ? Collections.emptyList() :
Collections.singletonList(table), databaseType, currentDatabaseName);
}
public TablesContext(final Collection<SimpleTableSegment> tables, final
DatabaseType databaseType, final String currentDatabaseName) {
this(tables, Collections.emptyMap(), databaseType,
currentDatabaseName);
}
- public TablesContext(final Collection<? extends TableSegment> tables,
final Map<Integer, SelectStatementContext> subqueryContexts, final DatabaseType
databaseType,
- final String currentDatabaseName) {
+ public TablesContext(final Collection<? extends TableSegment> tables,
final Map<Integer, SelectStatementContext> subqueryContexts,
+ final DatabaseType databaseType, final String
currentDatabaseName) {
if (tables.isEmpty()) {
return;
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContextTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContextTest.java
index b9cff285b59..4ab7dabc18d 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContextTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContextTest.java
@@ -28,6 +28,7 @@ import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.Alias
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
import org.junit.jupiter.api.Test;
@@ -49,10 +50,22 @@ import static org.mockito.Mockito.when;
class TablesContextTest {
+ private final DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "FIXTURE");
+
+ @Test
+ void assertGetTableNamesWithoutTableSegments() {
+ assertTrue(new TablesContext(Collections.emptyList(),
Collections.emptyMap(), databaseType,
DefaultDatabase.LOGIC_NAME).getTableNames().isEmpty());
+ }
+
+ @Test
+ void assertGetTableNamesWithoutSimpleTableSegments() {
+ assertTrue(new
TablesContext(Collections.singleton(mock(TableSegment.class)),
Collections.emptyMap(), databaseType,
DefaultDatabase.LOGIC_NAME).getTableNames().isEmpty());
+ }
+
@Test
void assertGetTableNames() {
- TablesContext tablesContext = new
TablesContext(Arrays.asList(createTableSegment("table_1", "tbl_1"),
- createTableSegment("table_2", "tbl_2")),
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME);
+ TablesContext tablesContext = new TablesContext(
+ Arrays.asList(createTableSegment("table_1", "tbl_1"),
createTableSegment("table_2", "tbl_2"), createTableSegment("DUAL", "dual")),
databaseType, DefaultDatabase.LOGIC_NAME);
assertThat(tablesContext.getTableNames(), is(new
HashSet<>(Arrays.asList("table_1", "table_2"))));
}
@@ -60,7 +73,7 @@ class TablesContextTest {
void assertInstanceCreatedWhenNoExceptionThrown() {
SimpleTableSegment tableSegment = new SimpleTableSegment(new
TableNameSegment(0, 10, new IdentifierValue("tbl")));
tableSegment.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("schema")));
- TablesContext tablesContext = new
TablesContext(Collections.singleton(tableSegment),
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME);
+ TablesContext tablesContext = new
TablesContext(Collections.singleton(tableSegment), databaseType,
DefaultDatabase.LOGIC_NAME);
assertThat(tablesContext.getDatabaseName(), is(Optional.of("schema")));
assertThat(tablesContext.getSchemaName(), is(Optional.of("schema")));
assertThat(tablesContext.getTableNames(),
is(Collections.singleton("tbl")));
@@ -70,7 +83,7 @@ class TablesContextTest {
void assertFindTableNameWhenSingleTable() {
SimpleTableSegment tableSegment = createTableSegment("table_1",
"tbl_1");
ColumnSegment columnSegment = createColumnSegment(null, "col");
- Map<String, String> actual = new
TablesContext(Collections.singletonList(tableSegment),
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME)
+ Map<String, String> actual = new
TablesContext(Collections.singletonList(tableSegment), databaseType,
DefaultDatabase.LOGIC_NAME)
.findTableNames(Collections.singletonList(columnSegment),
mock(ShardingSphereSchema.class));
assertFalse(actual.isEmpty());
assertThat(actual.get("col"), is("table_1"));
@@ -81,7 +94,7 @@ class TablesContextTest {
SimpleTableSegment tableSegment1 = createTableSegment("table_1",
"tbl_1");
SimpleTableSegment tableSegment2 = createTableSegment("table_2",
"tbl_2");
ColumnSegment columnSegment = createColumnSegment("table_1", "col");
- Map<String, String> actual = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2),
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME)
+ Map<String, String> actual = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2), databaseType,
DefaultDatabase.LOGIC_NAME)
.findTableNames(Collections.singletonList(columnSegment),
mock(ShardingSphereSchema.class));
assertFalse(actual.isEmpty());
assertThat(actual.get("table_1.col"), is("table_1"));
@@ -92,7 +105,7 @@ class TablesContextTest {
SimpleTableSegment tableSegment1 = createTableSegment("table_1",
"tbl_1");
SimpleTableSegment tableSegment2 = createTableSegment("table_2",
"tbl_2");
ColumnSegment columnSegment = createColumnSegment(null, "col");
- Map<String, String> actual = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2),
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME)
+ Map<String, String> actual = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2), databaseType,
DefaultDatabase.LOGIC_NAME)
.findTableNames(Collections.singletonList(columnSegment),
mock(ShardingSphereSchema.class));
assertTrue(actual.isEmpty());
}
@@ -105,7 +118,7 @@ class TablesContextTest {
when(schema.getAllColumnNames("table_1")).thenReturn(Collections.singletonList("col"));
ColumnSegment columnSegment = createColumnSegment(null, "col");
Map<String, String> actual = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2),
- TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME).findTableNames(Collections.singletonList(columnSegment),
schema);
+ databaseType,
DefaultDatabase.LOGIC_NAME).findTableNames(Collections.singletonList(columnSegment),
schema);
assertFalse(actual.isEmpty());
assertThat(actual.get("col"), is("table_1"));
}
@@ -120,7 +133,7 @@ class TablesContextTest {
new ShardingSphereSchema(DefaultDatabase.LOGIC_NAME,
Stream.of(table).collect(Collectors.toMap(ShardingSphereTable::getName, value
-> value)), Collections.emptyMap());
ColumnSegment columnSegment = createColumnSegment(null, "COL");
Map<String, String> actual = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2),
- TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME).findTableNames(Collections.singletonList(columnSegment),
schema);
+ databaseType,
DefaultDatabase.LOGIC_NAME).findTableNames(Collections.singletonList(columnSegment),
schema);
assertFalse(actual.isEmpty());
assertThat(actual.get("col"), is("TABLE_1"));
}
@@ -146,7 +159,7 @@ class TablesContextTest {
tableSegment1.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("sharding_db_1")));
SimpleTableSegment tableSegment2 = createTableSegment("table_1",
"tbl_1");
tableSegment2.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("sharding_db_1")));
- TablesContext tablesContext = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2),
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME);
+ TablesContext tablesContext = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2), databaseType,
DefaultDatabase.LOGIC_NAME);
assertTrue(tablesContext.getDatabaseName().isPresent());
assertThat(tablesContext.getDatabaseName().get(), is("sharding_db_1"));
}
@@ -157,7 +170,7 @@ class TablesContextTest {
tableSegment1.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("sharding_db_1")));
SimpleTableSegment tableSegment2 = createTableSegment("table_2",
"tbl_2");
tableSegment2.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("sharding_db_1")));
- TablesContext tablesContext = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2),
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME);
+ TablesContext tablesContext = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2), databaseType,
DefaultDatabase.LOGIC_NAME);
assertTrue(tablesContext.getDatabaseName().isPresent());
assertThat(tablesContext.getDatabaseName().get(), is("sharding_db_1"));
}
@@ -169,7 +182,7 @@ class TablesContextTest {
SimpleTableSegment tableSegment2 = createTableSegment("table_1",
"tbl_1");
tableSegment2.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("sharding_db_2")));
assertThrows(IllegalStateException.class,
- () -> new TablesContext(Arrays.asList(tableSegment1,
tableSegment2), TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME).getDatabaseName());
+ () -> new TablesContext(Arrays.asList(tableSegment1,
tableSegment2), databaseType, DefaultDatabase.LOGIC_NAME).getDatabaseName());
}
@Test
@@ -179,7 +192,7 @@ class TablesContextTest {
SimpleTableSegment tableSegment2 = createTableSegment("table_2",
"tbl_2");
tableSegment2.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("sharding_db_2")));
assertThrows(IllegalStateException.class,
- () -> new TablesContext(Arrays.asList(tableSegment1,
tableSegment2), TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME).getDatabaseName());
+ () -> new TablesContext(Arrays.asList(tableSegment1,
tableSegment2), databaseType, DefaultDatabase.LOGIC_NAME).getDatabaseName());
}
@Test
@@ -188,7 +201,7 @@ class TablesContextTest {
tableSegment1.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("sharding_db_1")));
SimpleTableSegment tableSegment2 = createTableSegment("table_2",
"tbl_2");
tableSegment2.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("sharding_db_1")));
- TablesContext tablesContext = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2),
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"),
DefaultDatabase.LOGIC_NAME);
+ TablesContext tablesContext = new
TablesContext(Arrays.asList(tableSegment1, tableSegment2), databaseType,
DefaultDatabase.LOGIC_NAME);
assertTrue(tablesContext.getSchemaName().isPresent());
assertThat(tablesContext.getSchemaName().get(), is("sharding_db_1"));
}