Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename databaseName to currentDatabaseName in ConnectionSession, ShardingSphereConnection #31887

Merged
merged 3 commits into from
Jun 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -128,15 +128,15 @@ public final class SQLStatementContextFactory {
* @param metaData metadata
* @param params SQL parameters
* @param sqlStatement SQL statement
* @param defaultDatabaseName default database name
* @param currentDatabaseName current database name
* @return SQL statement context
*/
public static SQLStatementContext newInstance(final ShardingSphereMetaData metaData, final List<Object> params, final SQLStatement sqlStatement, final String defaultDatabaseName) {
public static SQLStatementContext newInstance(final ShardingSphereMetaData metaData, final List<Object> params, final SQLStatement sqlStatement, final String currentDatabaseName) {
if (sqlStatement instanceof DMLStatement) {
return getDMLStatementContext(metaData, params, (DMLStatement) sqlStatement, defaultDatabaseName);
return getDMLStatementContext(metaData, params, (DMLStatement) sqlStatement, currentDatabaseName);
}
if (sqlStatement instanceof DDLStatement) {
return getDDLStatementContext(metaData, params, (DDLStatement) sqlStatement, defaultDatabaseName);
return getDDLStatementContext(metaData, params, (DDLStatement) sqlStatement, currentDatabaseName);
}
if (sqlStatement instanceof DCLStatement) {
return getDCLStatementContext((DCLStatement) sqlStatement);
Expand All @@ -148,9 +148,9 @@ public static SQLStatementContext newInstance(final ShardingSphereMetaData metaD
}

private static SQLStatementContext getDMLStatementContext(final ShardingSphereMetaData metaData,
final List<Object> params, final DMLStatement sqlStatement, final String defaultDatabaseName) {
final List<Object> params, final DMLStatement sqlStatement, final String currentDatabaseName) {
if (sqlStatement instanceof SelectStatement) {
return new SelectStatementContext(metaData, params, (SelectStatement) sqlStatement, defaultDatabaseName, Collections.emptyList());
return new SelectStatementContext(metaData, params, (SelectStatement) sqlStatement, currentDatabaseName, Collections.emptyList());
}
if (sqlStatement instanceof UpdateStatement) {
return new UpdateStatementContext((UpdateStatement) sqlStatement);
Expand All @@ -159,7 +159,7 @@ private static SQLStatementContext getDMLStatementContext(final ShardingSphereMe
return new DeleteStatementContext((DeleteStatement) sqlStatement);
}
if (sqlStatement instanceof InsertStatement) {
return new InsertStatementContext(metaData, params, (InsertStatement) sqlStatement, defaultDatabaseName);
return new InsertStatementContext(metaData, params, (InsertStatement) sqlStatement, currentDatabaseName);
}
if (sqlStatement instanceof CallStatement) {
return new CallStatementContext((CallStatement) sqlStatement);
Expand All @@ -183,7 +183,7 @@ private static SQLStatementContext getDMLStatementContext(final ShardingSphereMe
}

private static SQLStatementContext getDDLStatementContext(final ShardingSphereMetaData metaData, final List<Object> params,
final DDLStatement sqlStatement, final String defaultDatabaseName) {
final DDLStatement sqlStatement, final String currentDatabaseName) {
if (sqlStatement instanceof CreateSchemaStatement) {
return new CreateSchemaStatementContext((CreateSchemaStatement) sqlStatement);
}
Expand Down Expand Up @@ -233,7 +233,7 @@ private static SQLStatementContext getDDLStatementContext(final ShardingSphereMe
return new CommentStatementContext((CommentStatement) sqlStatement);
}
if (sqlStatement instanceof CursorStatement) {
return new CursorStatementContext(metaData, params, (CursorStatement) sqlStatement, defaultDatabaseName);
return new CursorStatementContext(metaData, params, (CursorStatement) sqlStatement, currentDatabaseName);
}
if (sqlStatement instanceof CloseStatement) {
return new CloseStatementContext((CloseStatement) sqlStatement);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,10 @@ public final class CursorStatementContext extends CommonSQLStatementContext impl
private final SelectStatementContext selectStatementContext;

public CursorStatementContext(final ShardingSphereMetaData metaData, final List<Object> params,
final CursorStatement sqlStatement, final String defaultDatabaseName) {
final CursorStatement sqlStatement, final String currentDatabaseName) {
super(sqlStatement);
tablesContext = new TablesContext(getSimpleTableSegments(), getDatabaseType());
selectStatementContext = new SelectStatementContext(metaData, params, sqlStatement.getSelect(), defaultDatabaseName, Collections.emptyList());
selectStatementContext = new SelectStatementContext(metaData, params, sqlStatement.getSelect(), currentDatabaseName, Collections.emptyList());
whereSegments.addAll(selectStatementContext.getWhereSegments());
columnSegments.addAll(selectStatementContext.getColumnSegments());
joinConditions.addAll(selectStatementContext.getJoinConditions());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public final class InsertStatementContext extends CommonSQLStatementContext impl

private final ShardingSphereMetaData metaData;

private final String defaultDatabaseName;
private final String currentDatabaseName;

private final List<String> insertColumnNames;

Expand All @@ -81,25 +81,25 @@ public final class InsertStatementContext extends CommonSQLStatementContext impl

private GeneratedKeyContext generatedKeyContext;

public InsertStatementContext(final ShardingSphereMetaData metaData, final List<Object> params, final InsertStatement sqlStatement, final String defaultDatabaseName) {
public InsertStatementContext(final ShardingSphereMetaData metaData, final List<Object> params, final InsertStatement sqlStatement, final String currentDatabaseName) {
super(sqlStatement);
this.metaData = metaData;
this.defaultDatabaseName = defaultDatabaseName;
this.currentDatabaseName = currentDatabaseName;
insertColumnNames = getInsertColumnNames();
valueExpressions = getAllValueExpressions(sqlStatement);
AtomicInteger parametersOffset = new AtomicInteger(0);
insertValueContexts = getInsertValueContexts(params, parametersOffset, valueExpressions);
insertSelectContext = getInsertSelectContext(metaData, params, parametersOffset, defaultDatabaseName).orElse(null);
insertSelectContext = getInsertSelectContext(metaData, params, parametersOffset, currentDatabaseName).orElse(null);
onDuplicateKeyUpdateValueContext = getOnDuplicateKeyUpdateValueContext(params, parametersOffset).orElse(null);
tablesContext = new TablesContext(getAllSimpleTableSegments(), getDatabaseType());
ShardingSphereSchema schema = getSchema(metaData, defaultDatabaseName);
ShardingSphereSchema schema = getSchema(metaData, currentDatabaseName);
columnNames = containsInsertColumns() ? insertColumnNames
: Optional.ofNullable(sqlStatement.getTable()).map(optional -> schema.getVisibleColumnNames(optional.getTableName().getIdentifier().getValue())).orElseGet(Collections::emptyList);
generatedKeyContext = new GeneratedKeyContextEngine(sqlStatement, schema).createGenerateKeyContext(insertColumnNames, insertValueContexts, params).orElse(null);
}

private ShardingSphereSchema getSchema(final ShardingSphereMetaData metaData, final String defaultDatabaseName) {
String databaseName = tablesContext.getDatabaseName().orElse(defaultDatabaseName);
private ShardingSphereSchema getSchema(final ShardingSphereMetaData metaData, final String currentDatabaseName) {
String databaseName = tablesContext.getDatabaseName().orElse(currentDatabaseName);
ShardingSpherePreconditions.checkNotNull(databaseName, NoDatabaseSelectedException::new);
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
ShardingSpherePreconditions.checkNotNull(database, () -> new UnknownDatabaseException(databaseName));
Expand All @@ -124,12 +124,12 @@ private List<InsertValueContext> getInsertValueContexts(final List<Object> param
}

private Optional<InsertSelectContext> getInsertSelectContext(final ShardingSphereMetaData metaData, final List<Object> params,
final AtomicInteger paramsOffset, final String defaultDatabaseName) {
final AtomicInteger paramsOffset, final String currentDatabaseName) {
if (!getSqlStatement().getInsertSelect().isPresent()) {
return Optional.empty();
}
SubquerySegment insertSelectSegment = getSqlStatement().getInsertSelect().get();
SelectStatementContext selectStatementContext = new SelectStatementContext(metaData, params, insertSelectSegment.getSelect(), defaultDatabaseName, Collections.emptyList());
SelectStatementContext selectStatementContext = new SelectStatementContext(metaData, params, insertSelectSegment.getSelect(), currentDatabaseName, Collections.emptyList());
selectStatementContext.setSubqueryType(SubqueryType.INSERT_SELECT_SUBQUERY);
InsertSelectContext insertSelectContext = new InsertSelectContext(selectStatementContext, params, paramsOffset.get());
paramsOffset.addAndGet(insertSelectContext.getParameterCount());
Expand Down Expand Up @@ -267,9 +267,9 @@ public InsertStatement getSqlStatement() {
public void setUpParameters(final List<Object> params) {
AtomicInteger parametersOffset = new AtomicInteger(0);
insertValueContexts = getInsertValueContexts(params, parametersOffset, valueExpressions);
insertSelectContext = getInsertSelectContext(metaData, params, parametersOffset, defaultDatabaseName).orElse(null);
insertSelectContext = getInsertSelectContext(metaData, params, parametersOffset, currentDatabaseName).orElse(null);
onDuplicateKeyUpdateValueContext = getOnDuplicateKeyUpdateValueContext(params, parametersOffset).orElse(null);
ShardingSphereSchema schema = getSchema(metaData, defaultDatabaseName);
ShardingSphereSchema schema = getSchema(metaData, currentDatabaseName);
generatedKeyContext = new GeneratedKeyContextEngine(getSqlStatement(), schema).createGenerateKeyContext(insertColumnNames, insertValueContexts, params).orElse(null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -112,29 +112,29 @@ public final class SelectStatementContext extends CommonSQLStatementContext impl

private PaginationContext paginationContext;

public SelectStatementContext(final ShardingSphereMetaData metaData, final List<Object> params, final SelectStatement sqlStatement, final String defaultDatabaseName,
public SelectStatementContext(final ShardingSphereMetaData metaData, final List<Object> params, final SelectStatement sqlStatement, final String currentDatabaseName,
final Collection<TableSegment> inheritedTables) {
super(sqlStatement);
extractWhereSegments(whereSegments, sqlStatement);
ColumnExtractUtils.extractColumnSegments(columnSegments, whereSegments);
Collection<TableSegment> tableSegments = getAllTableSegments(inheritedTables);
ExpressionExtractUtils.extractJoinConditions(joinConditions, whereSegments);
subqueryContexts = createSubqueryContexts(metaData, params, defaultDatabaseName, tableSegments);
subqueryContexts = createSubqueryContexts(metaData, params, currentDatabaseName, tableSegments);
tablesContext = new TablesContext(tableSegments, subqueryContexts, getDatabaseType());
groupByContext = new GroupByContextEngine().createGroupByContext(sqlStatement);
orderByContext = new OrderByContextEngine().createOrderBy(sqlStatement, groupByContext);
projectionsContext = new ProjectionsContextEngine(getDatabaseType()).createProjectionsContext(getSqlStatement().getProjections(), groupByContext, orderByContext);
paginationContext = new PaginationContextEngine(getDatabaseType()).createPaginationContext(sqlStatement, projectionsContext, params, whereSegments);
containsEnhancedTable = isContainsEnhancedTable(metaData, tablesContext.getDatabaseNames(), defaultDatabaseName);
containsEnhancedTable = isContainsEnhancedTable(metaData, tablesContext.getDatabaseNames(), currentDatabaseName);
}

private boolean isContainsEnhancedTable(final ShardingSphereMetaData metaData, final Collection<String> databaseNames, final String defaultDatabaseName) {
private boolean isContainsEnhancedTable(final ShardingSphereMetaData metaData, final Collection<String> databaseNames, final String currentDatabaseName) {
for (String each : databaseNames) {
if (isContainsEnhancedTable(metaData, each, getTablesContext().getTableNames())) {
return true;
}
}
return isContainsEnhancedTable(metaData, defaultDatabaseName, getTablesContext().getTableNames());
return isContainsEnhancedTable(metaData, currentDatabaseName, getTablesContext().getTableNames());
}

private boolean isContainsEnhancedTable(final ShardingSphereMetaData metaData, final String databaseName, final Collection<String> tableNames) {
Expand All @@ -158,12 +158,12 @@ private Collection<TableMapperRuleAttribute> getTableMapperRuleAttributes(final
return database.getRuleMetaData().getAttributes(TableMapperRuleAttribute.class);
}

private Map<Integer, SelectStatementContext> createSubqueryContexts(final ShardingSphereMetaData metaData, final List<Object> params, final String defaultDatabaseName,
private Map<Integer, SelectStatementContext> createSubqueryContexts(final ShardingSphereMetaData metaData, final List<Object> params, final String currentDatabaseName,
final Collection<TableSegment> tableSegments) {
Collection<SubquerySegment> subquerySegments = SubqueryExtractUtils.getSubquerySegments(getSqlStatement());
Map<Integer, SelectStatementContext> result = new HashMap<>(subquerySegments.size(), 1F);
for (SubquerySegment each : subquerySegments) {
SelectStatementContext subqueryContext = new SelectStatementContext(metaData, params, each.getSelect(), defaultDatabaseName, tableSegments);
SelectStatementContext subqueryContext = new SelectStatementContext(metaData, params, each.getSelect(), currentDatabaseName, tableSegments);
subqueryContext.setSubqueryType(each.getSubqueryType());
result.put(each.getStartIndex(), subqueryContext);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public final class SQLBindEngine {

private final ShardingSphereMetaData metaData;

private final String defaultDatabaseName;
private final String currentDatabaseName;

private final HintValueContext hintValueContext;

Expand All @@ -60,45 +60,45 @@ public final class SQLBindEngine {
* @return SQL statement context
*/
public SQLStatementContext bind(final SQLStatement sqlStatement, final List<Object> params) {
SQLStatement buoundedSQLStatement = bind(sqlStatement, metaData, defaultDatabaseName);
return SQLStatementContextFactory.newInstance(metaData, params, buoundedSQLStatement, defaultDatabaseName);
SQLStatement buoundedSQLStatement = bind(sqlStatement, metaData, currentDatabaseName);
return SQLStatementContextFactory.newInstance(metaData, params, buoundedSQLStatement, currentDatabaseName);
}

private SQLStatement bind(final SQLStatement statement, final ShardingSphereMetaData metaData, final String defaultDatabaseName) {
private SQLStatement bind(final SQLStatement statement, final ShardingSphereMetaData metaData, final String currentDatabaseName) {
if (hintValueContext.findHintDataSourceName().isPresent()) {
return statement;
}
if (statement instanceof DMLStatement) {
return bindDMLStatement(statement, metaData, defaultDatabaseName);
return bindDMLStatement(statement, metaData, currentDatabaseName);
}
if (statement instanceof DDLStatement) {
return bindDDLStatement(statement, metaData, defaultDatabaseName);
return bindDDLStatement(statement, metaData, currentDatabaseName);
}
return statement;
}

private static SQLStatement bindDMLStatement(final SQLStatement statement, final ShardingSphereMetaData metaData, final String defaultDatabaseName) {
private static SQLStatement bindDMLStatement(final SQLStatement statement, final ShardingSphereMetaData metaData, final String currentDatabaseName) {
if (statement instanceof SelectStatement) {
return new SelectStatementBinder().bind((SelectStatement) statement, metaData, defaultDatabaseName);
return new SelectStatementBinder().bind((SelectStatement) statement, metaData, currentDatabaseName);
}
if (statement instanceof InsertStatement) {
return new InsertStatementBinder().bind((InsertStatement) statement, metaData, defaultDatabaseName);
return new InsertStatementBinder().bind((InsertStatement) statement, metaData, currentDatabaseName);
}
if (statement instanceof UpdateStatement) {
return new UpdateStatementBinder().bind((UpdateStatement) statement, metaData, defaultDatabaseName);
return new UpdateStatementBinder().bind((UpdateStatement) statement, metaData, currentDatabaseName);
}
if (statement instanceof DeleteStatement) {
return new DeleteStatementBinder().bind((DeleteStatement) statement, metaData, defaultDatabaseName);
return new DeleteStatementBinder().bind((DeleteStatement) statement, metaData, currentDatabaseName);
}
if (statement instanceof MergeStatement) {
return new MergeStatementBinder().bind((MergeStatement) statement, metaData, defaultDatabaseName);
return new MergeStatementBinder().bind((MergeStatement) statement, metaData, currentDatabaseName);
}
return statement;
}

private static SQLStatement bindDDLStatement(final SQLStatement statement, final ShardingSphereMetaData metaData, final String defaultDatabaseName) {
private static SQLStatement bindDDLStatement(final SQLStatement statement, final ShardingSphereMetaData metaData, final String currentDatabaseName) {
if (statement instanceof CursorStatement) {
return new CursorStatementBinder().bind((CursorStatement) statement, metaData, defaultDatabaseName);
return new CursorStatementBinder().bind((CursorStatement) statement, metaData, currentDatabaseName);
}
return statement;
}
Expand Down
Loading