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 e8852c4805f Rename getExpression to getColumnName in Projection
interface (#27297)
e8852c4805f is described below
commit e8852c4805f98fdf62842bffe59f253c91c491f5
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Jul 19 16:50:37 2023 +0800
Rename getExpression to getColumnName in Projection interface (#27297)
---
.../encrypt/merge/dql/EncryptMergedResult.java | 2 +-
.../generator/EncryptProjectionTokenGenerator.java | 4 ++--
.../mask/merge/dql/MaskAlgorithmMetaData.java | 2 +-
.../generator/impl/ProjectionsTokenGenerator.java | 2 +-
.../rewrite/token/ProjectionsTokenGeneratorTest.java | 2 +-
.../binder/segment/select/projection/Projection.java | 20 ++++++++++----------
.../select/projection/ProjectionsContext.java | 10 +++++-----
.../select/projection/engine/ProjectionEngine.java | 2 +-
.../projection/engine/ProjectionsContextEngine.java | 2 +-
.../impl/AggregationDistinctProjection.java | 8 ++++----
.../projection/impl/AggregationProjection.java | 15 +++++----------
.../select/projection/impl/ColumnProjection.java | 2 +-
.../select/projection/impl/DerivedProjection.java | 9 +++++++--
.../select/projection/impl/ExpressionProjection.java | 9 +++++++--
.../projection/impl/ParameterMarkerProjection.java | 2 +-
.../select/projection/impl/ShorthandProjection.java | 10 +++++-----
.../select/projection/impl/SubqueryProjection.java | 15 ++++++++++-----
.../infra/binder/segment/table/TablesContext.java | 12 ++++++------
.../binder/statement/dml/SelectStatementContext.java | 2 +-
.../select/projection/ProjectionsContextTest.java | 4 ++--
.../projection/impl/AggregationProjectionTest.java | 2 +-
.../projection/impl/ShorthandProjectionTest.java | 2 +-
.../resultset/ShardingSphereResultSetMetaData.java | 4 ++--
.../core/resultset/ShardingSphereResultSetUtils.java | 2 +-
.../resultset/SQLFederationResultSet.java | 2 +-
.../resultset/SQLFederationResultSetMetaData.java | 2 +-
.../header/query/QueryHeaderBuilderEngine.java | 2 +-
.../admin/executor/NoResourceShowExecutor.java | 2 +-
.../binary/prepare/MySQLComStmtPrepareExecutor.java | 2 +-
29 files changed, 82 insertions(+), 72 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
index d4b231aeff6..bf02065f086 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
@@ -78,7 +78,7 @@ public final class EncryptMergedResult implements
MergedResult {
}
private Optional<String> findTableName(final ColumnProjection
columnProjection, final Map<String, String> columnTableNames) {
- String tableName =
columnTableNames.get(columnProjection.getExpression());
+ String tableName =
columnTableNames.get(columnProjection.getColumnName());
if (null != tableName) {
return Optional.of(tableName);
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
index 75980dd3e31..525cfd32680 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
@@ -91,7 +91,7 @@ public final class EncryptProjectionTokenGenerator implements
CollectionSQLToken
if (each instanceof ColumnProjectionSegment) {
ColumnProjectionSegment columnSegment =
(ColumnProjectionSegment) each;
ColumnProjection columnProjection =
buildColumnProjection(columnSegment);
- String tableName =
columnTableNames.get(columnProjection.getExpression());
+ String tableName =
columnTableNames.get(columnProjection.getColumnName());
if (null == tableName) {
continue;
}
@@ -122,7 +122,7 @@ public final class EncryptProjectionTokenGenerator
implements CollectionSQLToken
final
SelectStatementContext selectStatementContext, final SubqueryType subqueryType,
final Map<String, String> columnTableNames) {
List<Projection> projections = new LinkedList<>();
for (Projection each : actualColumns) {
- String tableName = columnTableNames.get(each.getExpression());
+ String tableName = columnTableNames.get(each.getColumnName());
Optional<EncryptTable> encryptTable = null == tableName ?
Optional.empty() : encryptRule.findEncryptTable(tableName);
if (!encryptTable.isPresent() ||
!encryptTable.get().isEncryptColumn(each.getColumnLabel()) ||
containsTableSubquery(selectStatementContext)) {
projections.add(each.getAlias().map(optional -> (Projection)
new ColumnProjection(null, optional, null)).orElse(each));
diff --git
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskAlgorithmMetaData.java
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskAlgorithmMetaData.java
index 5c0757c2af4..5f8ecaaab7d 100644
---
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskAlgorithmMetaData.java
+++
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskAlgorithmMetaData.java
@@ -73,7 +73,7 @@ public final class MaskAlgorithmMetaData {
}
private Optional<String> findTableName(final ColumnProjection
columnProjection, final Map<String, String> columnTableNames) {
- String tableName =
columnTableNames.get(columnProjection.getExpression());
+ String tableName =
columnTableNames.get(columnProjection.getColumnName());
if (null != tableName) {
return Optional.of(tableName);
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ProjectionsTokenGenerator.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ProjectionsTokenGenerator.java
index 377db5803e0..20f5eb43223 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ProjectionsTokenGenerator.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ProjectionsTokenGenerator.java
@@ -100,7 +100,7 @@ public final class ProjectionsTokenGenerator implements
OptionalSQLTokenGenerato
if (projection instanceof AggregationDistinctProjection) {
return ((AggregationDistinctProjection)
projection).getDistinctInnerExpression() + " AS " +
projection.getAlias().get().getValue() + " ";
}
- return projection.getExpression() + " AS " +
projection.getAlias().get().getValue() + " ";
+ return projection.getColumnName() + " AS " +
projection.getAlias().get().getValue() + " ";
}
private String getDerivedProjectionTextFromColumnOrderByItemSegment(final
DerivedProjection projection, final TableExtractor tableExtractor, final
RouteUnit routeUnit,
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/ProjectionsTokenGeneratorTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/ProjectionsTokenGeneratorTest.java
index ae6e59337f0..e05c888d762 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/ProjectionsTokenGeneratorTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/ProjectionsTokenGeneratorTest.java
@@ -151,7 +151,7 @@ class ProjectionsTokenGeneratorTest {
DerivedProjection result = mock(DerivedProjection.class);
when(result.getDerivedProjectionSegment()).thenReturn(null);
when(result.getAlias()).thenReturn(Optional.of(new
IdentifierValue(TEST_OTHER_DERIVED_PROJECTION_ALIAS)));
-
when(result.getExpression()).thenReturn(TEST_OTHER_DERIVED_PROJECTION_EXPRESSION);
+
when(result.getColumnName()).thenReturn(TEST_OTHER_DERIVED_PROJECTION_EXPRESSION);
return result;
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/Projection.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/Projection.java
index 91cd960b15a..80af9bcdf10 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/Projection.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/Projection.java
@@ -27,25 +27,25 @@ import java.util.Optional;
public interface Projection {
/**
- * Get expression.
+ * Get column name.
*
- * @return expression
+ * @return column name
*/
- String getExpression();
+ String getColumnName();
/**
- * Get alias.
- *
- * @return alias
+ * Get column label.
+ *
+ * @return column label
*/
- Optional<IdentifierValue> getAlias();
+ String getColumnLabel();
/**
- * Get columnLabel.
+ * Get alias.
*
- * @return columnLabel
+ * @return alias
*/
- String getColumnLabel();
+ Optional<IdentifierValue> getAlias();
/**
* Transform subquery projection.
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/ProjectionsContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/ProjectionsContext.java
index 523c7b27ac6..152dd927a6a 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/ProjectionsContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/ProjectionsContext.java
@@ -113,10 +113,10 @@ public final class ProjectionsContext {
Optional<Projection> projection =
((ShorthandProjection)
each).getActualColumns().stream().filter(optional ->
projectionName.equalsIgnoreCase(getOriginalColumnName(optional))).findFirst();
if (projection.isPresent()) {
- return projection.map(Projection::getExpression);
+ return projection.map(Projection::getColumnName);
}
}
- if
(projectionName.equalsIgnoreCase(SQLUtils.getExactlyValue(each.getExpression())))
{
+ if
(projectionName.equalsIgnoreCase(SQLUtils.getExactlyValue(each.getColumnName())))
{
return each.getAlias().map(IdentifierValue::getValue);
}
}
@@ -124,7 +124,7 @@ public final class ProjectionsContext {
}
private String getOriginalColumnName(final Projection projection) {
- return projection instanceof ColumnProjection ? ((ColumnProjection)
projection).getOriginalName().getValue() : projection.getExpression();
+ return projection instanceof ColumnProjection ? ((ColumnProjection)
projection).getOriginalName().getValue() : projection.getColumnName();
}
/**
@@ -136,7 +136,7 @@ public final class ProjectionsContext {
public Optional<Integer> findProjectionIndex(final String projectionName) {
int result = 1;
for (Projection each : projections) {
- if
(projectionName.equalsIgnoreCase(SQLUtils.getExactlyValue(each.getExpression())))
{
+ if
(projectionName.equalsIgnoreCase(SQLUtils.getExactlyValue(each.getColumnName())))
{
return Optional.of(result);
}
result++;
@@ -163,7 +163,7 @@ public final class ProjectionsContext {
private boolean isContainsLastInsertIdProjection(final
Collection<Projection> projections) {
for (Projection each : projections) {
- if
(LAST_INSERT_ID_FUNCTION_EXPRESSION.equalsIgnoreCase(SQLUtils.getExactlyExpression(each.getExpression())))
{
+ if
(LAST_INSERT_ID_FUNCTION_EXPRESSION.equalsIgnoreCase(SQLUtils.getExactlyExpression(each.getColumnName())))
{
return true;
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionEngine.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionEngine.java
index d318ba9bada..1424703ba4f 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionEngine.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionEngine.java
@@ -219,7 +219,7 @@ public final class ProjectionEngine {
Collection<Projection> remainingProjections = new LinkedList<>();
for (Projection each : getOriginalProjections(joinTable,
projectionSegment)) {
Collection<Projection> actualProjections =
getActualProjections(Collections.singletonList(each));
- if (joinTable.getUsing().isEmpty() && !joinTable.isNatural() ||
null != owner && each.getExpression().contains(owner.getValue())) {
+ if (joinTable.getUsing().isEmpty() && !joinTable.isNatural() ||
null != owner && each.getColumnName().contains(owner.getValue())) {
result.addAll(actualProjections);
} else {
remainingProjections.addAll(actualProjections);
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionsContextEngine.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionsContextEngine.java
index d5458b77e0c..005d9ba713d 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionsContextEngine.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionsContextEngine.java
@@ -150,6 +150,6 @@ public final class ProjectionsContextEngine {
}
private boolean isSameQualifiedName(final Projection projection, final
String text) {
- return
SQLUtils.getExactlyValue(text).equalsIgnoreCase(SQLUtils.getExactlyValue(projection.getExpression()));
+ return
SQLUtils.getExactlyValue(text).equalsIgnoreCase(SQLUtils.getExactlyValue(projection.getColumnName()));
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationDistinctProjection.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationDistinctProjection.java
index 2ed89fa7571..db30990cfc8 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationDistinctProjection.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationDistinctProjection.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.binder.segment.select.projection.impl;
+import lombok.EqualsAndHashCode;
import lombok.Getter;
import
org.apache.shardingsphere.infra.binder.segment.select.projection.Projection;
import org.apache.shardingsphere.infra.database.spi.DatabaseType;
@@ -26,6 +27,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.Identifi
/**
* Aggregation distinct projection.
*/
+@EqualsAndHashCode(callSuper = true)
@Getter
public final class AggregationDistinctProjection extends AggregationProjection
{
@@ -54,9 +56,7 @@ public final class AggregationDistinctProjection extends
AggregationProjection {
@Override
public Projection transformSubqueryProjection(final IdentifierValue
subqueryTableAlias, final IdentifierValue originalOwner, final IdentifierValue
originalName) {
- if (getAlias().isPresent()) {
- return new ColumnProjection(subqueryTableAlias, getAlias().get(),
null);
- }
- return new AggregationDistinctProjection(startIndex, stopIndex,
getType(), getInnerExpression(), null, distinctInnerExpression,
getDatabaseType());
+ return getAlias().isPresent() ? new
ColumnProjection(subqueryTableAlias, getAlias().get(), null)
+ : new AggregationDistinctProjection(startIndex, stopIndex,
getType(), getInnerExpression(), null, distinctInnerExpression,
getDatabaseType());
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationProjection.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationProjection.java
index 598bfa77ba2..5c955a28b3d 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationProjection.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationProjection.java
@@ -54,23 +54,18 @@ public class AggregationProjection implements Projection {
private int index = -1;
@Override
- public final String getExpression() {
+ public final String getColumnName() {
return type.name() + innerExpression;
}
@Override
- public final Optional<IdentifierValue> getAlias() {
- return Optional.ofNullable(alias);
+ public String getColumnLabel() {
+ return getAlias().map(IdentifierValue::getValue).orElseGet(() ->
databaseType.getDefaultSchema().isPresent() ? type.name().toLowerCase() :
getColumnName());
}
- /**
- * Get column label.
- *
- * @return column label
- */
@Override
- public String getColumnLabel() {
- return getAlias().map(IdentifierValue::getValue).orElseGet(() ->
databaseType.getDefaultSchema().isPresent() ? type.name().toLowerCase() :
getExpression());
+ public final Optional<IdentifierValue> getAlias() {
+ return Optional.ofNullable(alias);
}
@Override
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ColumnProjection.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ColumnProjection.java
index 30eddead84e..8b0c6a7ae7d 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ColumnProjection.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ColumnProjection.java
@@ -72,7 +72,7 @@ public final class ColumnProjection implements Projection {
}
@Override
- public String getExpression() {
+ public String getColumnName() {
return null == owner ? name.getValue() : owner.getValue() + "." +
name.getValue();
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/DerivedProjection.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/DerivedProjection.java
index c842bc1d1a3..8d5a3fca1e3 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/DerivedProjection.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/DerivedProjection.java
@@ -43,8 +43,8 @@ public final class DerivedProjection implements Projection {
private final SQLSegment derivedProjectionSegment;
@Override
- public Optional<IdentifierValue> getAlias() {
- return Optional.ofNullable(alias);
+ public String getColumnName() {
+ return expression;
}
@Override
@@ -52,6 +52,11 @@ public final class DerivedProjection implements Projection {
return getAlias().map(IdentifierValue::getValue).orElse(expression);
}
+ @Override
+ public Optional<IdentifierValue> getAlias() {
+ return Optional.ofNullable(alias);
+ }
+
@Override
public Projection transformSubqueryProjection(final IdentifierValue
subqueryTableAlias, final IdentifierValue originalOwner, final IdentifierValue
originalName) {
return getAlias().isPresent() ? new
ColumnProjection(subqueryTableAlias, getAlias().get(), null) : new
DerivedProjection(expression, alias, derivedProjectionSegment);
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ExpressionProjection.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ExpressionProjection.java
index a6e93d18bb2..5659da8c30d 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ExpressionProjection.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ExpressionProjection.java
@@ -40,8 +40,8 @@ public final class ExpressionProjection implements Projection
{
private final IdentifierValue alias;
@Override
- public Optional<IdentifierValue> getAlias() {
- return Optional.ofNullable(alias);
+ public String getColumnName() {
+ return expression;
}
@Override
@@ -49,6 +49,11 @@ public final class ExpressionProjection implements
Projection {
return getAlias().map(IdentifierValue::getValue).orElse(expression);
}
+ @Override
+ public Optional<IdentifierValue> getAlias() {
+ return Optional.ofNullable(alias);
+ }
+
@Override
public Projection transformSubqueryProjection(final IdentifierValue
subqueryTableAlias, final IdentifierValue originalOwner, final IdentifierValue
originalName) {
return getAlias().isPresent() ? new
ColumnProjection(subqueryTableAlias, getAlias().get(), null) : new
ExpressionProjection(expression, alias);
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ParameterMarkerProjection.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ParameterMarkerProjection.java
index e484394b053..e855bcb1674 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ParameterMarkerProjection.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ParameterMarkerProjection.java
@@ -43,7 +43,7 @@ public final class ParameterMarkerProjection implements
Projection {
private final IdentifierValue alias;
@Override
- public String getExpression() {
+ public String getColumnName() {
return String.valueOf(parameterMarkerIndex);
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ShorthandProjection.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ShorthandProjection.java
index fdd7f913655..339d1fd35c1 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ShorthandProjection.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ShorthandProjection.java
@@ -42,18 +42,18 @@ public final class ShorthandProjection implements
Projection {
private final Collection<Projection> actualColumns;
@Override
- public String getExpression() {
+ public String getColumnName() {
return null == owner ? "*" : owner.getValue() + ".*";
}
@Override
- public Optional<IdentifierValue> getAlias() {
- return Optional.empty();
+ public String getColumnLabel() {
+ return "*";
}
@Override
- public String getColumnLabel() {
- return "*";
+ public Optional<IdentifierValue> getAlias() {
+ return Optional.empty();
}
/**
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/SubqueryProjection.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/SubqueryProjection.java
index dec00e0b232..d7e74945867 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/SubqueryProjection.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/SubqueryProjection.java
@@ -45,6 +45,16 @@ public final class SubqueryProjection implements Projection {
private final DatabaseType databaseType;
+ @Override
+ public String getColumnLabel() {
+ return getAlias().map(IdentifierValue::getValue).orElse(expression);
+ }
+
+ @Override
+ public String getColumnName() {
+ return expression;
+ }
+
@Override
public Optional<IdentifierValue> getAlias() {
return null == alias ? buildDefaultAlias(databaseType) :
Optional.of(alias);
@@ -57,11 +67,6 @@ public final class SubqueryProjection implements Projection {
return Optional.of(new IdentifierValue(expression));
}
- @Override
- public String getColumnLabel() {
- return getAlias().map(IdentifierValue::getValue).orElse(expression);
- }
-
@Override
public Projection transformSubqueryProjection(final IdentifierValue
subqueryTableAlias, final IdentifierValue originalOwner, final IdentifierValue
originalName) {
return getAlias().isPresent() ? new
ColumnProjection(subqueryTableAlias, getAlias().get(), null) : new
SubqueryProjection(expression, projection, alias, databaseType);
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/table/TablesContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/table/TablesContext.java
index 781192dbae1..557b1125c07 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/table/TablesContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/table/TablesContext.java
@@ -181,13 +181,13 @@ public final class TablesContext {
}
Map<String, String> result = new LinkedHashMap<>(columns.size(), 1F);
for (ColumnProjection each : columns) {
- if (ownerTableNames.containsKey(each.getExpression())) {
+ if (ownerTableNames.containsKey(each.getColumnName())) {
continue;
}
- Collection<SubqueryTableContext> subqueryTableContexts =
subqueryTables.getOrDefault(each.getOwner(), Collections.emptyList());
+ Collection<SubqueryTableContext> subqueryTableContexts =
each.getOwner().map(optional ->
subqueryTables.get(each.getOwner().get().getValue())).orElseGet(Collections::emptyList);
for (SubqueryTableContext subqueryTableContext :
subqueryTableContexts) {
- if
(subqueryTableContext.getColumnNames().contains(each.getName())) {
- result.put(each.getExpression(),
subqueryTableContext.getTableName());
+ if
(subqueryTableContext.getColumnNames().contains(each.getName().getValue())) {
+ result.put(each.getColumnName(),
subqueryTableContext.getTableName());
}
}
}
@@ -207,7 +207,7 @@ public final class TablesContext {
String tableName =
simpleTableSegments.iterator().next().getTableName().getIdentifier().getValue();
Map<String, String> result = new
TreeMap<>(String.CASE_INSENSITIVE_ORDER);
for (ColumnProjection each : columns) {
- result.putIfAbsent(each.getExpression(), tableName);
+ result.putIfAbsent(each.getColumnName(), tableName);
}
return result;
}
@@ -227,7 +227,7 @@ public final class TablesContext {
Map<String, Collection<String>> result = new
TreeMap<>(String.CASE_INSENSITIVE_ORDER);
for (ColumnProjection each : columns) {
if (each.getOwner().isPresent()) {
- result.computeIfAbsent(each.getOwner().get().getValue(),
unused -> new LinkedList<>()).add(each.getExpression());
+ result.computeIfAbsent(each.getOwner().get().getValue(),
unused -> new LinkedList<>()).add(each.getColumnName());
}
}
return result;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
index 46cb79eacfd..70c59b55a64 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
@@ -293,7 +293,7 @@ public final class SelectStatementContext extends
CommonSQLStatementContext impl
String rawName = SQLUtils.getExactlyValue(((TextOrderByItemSegment)
orderByItem).getText());
for (Projection each : projectionsContext.getProjections()) {
Optional<String> result =
each.getAlias().map(IdentifierValue::getValue);
- if
(SQLUtils.getExactlyExpression(rawName).equalsIgnoreCase(SQLUtils.getExactlyExpression(SQLUtils.getExactlyValue(each.getExpression()))))
{
+ if
(SQLUtils.getExactlyExpression(rawName).equalsIgnoreCase(SQLUtils.getExactlyExpression(SQLUtils.getExactlyValue(each.getColumnName()))))
{
return result;
}
if (rawName.equalsIgnoreCase(result.orElse(null))) {
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/ProjectionsContextTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/ProjectionsContextTest.java
index 2f45cc770f4..d7e0a3543d3 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/ProjectionsContextTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/ProjectionsContextTest.java
@@ -77,14 +77,14 @@ class ProjectionsContextTest {
void assertFindAlias() {
Projection projection = getColumnProjectionWithAlias();
ProjectionsContext projectionsContext = new ProjectionsContext(0, 0,
true, Collections.singleton(projection));
-
assertTrue(projectionsContext.findAlias(projection.getExpression()).isPresent());
+
assertTrue(projectionsContext.findAlias(projection.getColumnName()).isPresent());
}
@Test
void assertFindProjectionIndex() {
Projection projection = getColumnProjection();
ProjectionsContext projectionsContext = new ProjectionsContext(0, 0,
true, Collections.singleton(projection));
- Optional<Integer> actual =
projectionsContext.findProjectionIndex(projection.getExpression());
+ Optional<Integer> actual =
projectionsContext.findProjectionIndex(projection.getColumnName());
assertTrue(actual.isPresent());
assertThat(actual.get(), is(1));
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationProjectionTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationProjectionTest.java
index 569f736ec72..6dca8fd0d49 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationProjectionTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/AggregationProjectionTest.java
@@ -36,7 +36,7 @@ class AggregationProjectionTest {
@Test
void assertGetExpression() {
Projection projection = new
AggregationProjection(AggregationType.COUNT, "( A.\"DIRECTION\" )", null,
mock(DatabaseType.class));
- assertThat(projection.getExpression(), is("COUNT( A.\"DIRECTION\" )"));
+ assertThat(projection.getColumnName(), is("COUNT( A.\"DIRECTION\" )"));
}
@Test
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ShorthandProjectionTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ShorthandProjectionTest.java
index 7555bc427e8..2d723308d68 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ShorthandProjectionTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/select/projection/impl/ShorthandProjectionTest.java
@@ -31,7 +31,7 @@ class ShorthandProjectionTest {
@Test
void assertGetExpression() {
- assertThat(new ShorthandProjection(new IdentifierValue("owner"),
Collections.emptyList()).getExpression(), is("owner.*"));
+ assertThat(new ShorthandProjection(new IdentifierValue("owner"),
Collections.emptyList()).getColumnName(), is("owner.*"));
}
@Test
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetMetaData.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetMetaData.java
index c91ac1df616..0c2b5f15916 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetMetaData.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetMetaData.java
@@ -102,7 +102,7 @@ public final class ShardingSphereResultSetMetaData extends
WrapperAdapter implem
checkColumnIndex(column);
Projection projection = ((SelectStatementContext)
sqlStatementContext).getProjectionsContext().getExpandProjections().get(column
- 1);
if (projection instanceof AggregationDistinctProjection) {
- return
DerivedColumn.isDerivedColumnName(projection.getColumnLabel()) ?
projection.getExpression() : projection.getColumnLabel();
+ return
DerivedColumn.isDerivedColumnName(projection.getColumnLabel()) ?
projection.getColumnName() : projection.getColumnLabel();
}
}
return resultSetMetaData.getColumnLabel(column);
@@ -117,7 +117,7 @@ public final class ShardingSphereResultSetMetaData extends
WrapperAdapter implem
return ((ColumnProjection) projection).getName().getValue();
}
if (projection instanceof AggregationDistinctProjection) {
- return
DerivedColumn.isDerivedColumnName(projection.getColumnLabel()) ?
projection.getExpression() : projection.getColumnLabel();
+ return
DerivedColumn.isDerivedColumnName(projection.getColumnLabel()) ?
projection.getColumnName() : projection.getColumnLabel();
}
}
return resultSetMetaData.getColumnName(column);
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtils.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtils.java
index 02662aa8230..12c05237f84 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtils.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtils.java
@@ -62,7 +62,7 @@ public final class ShardingSphereResultSetUtils {
Map<String, Integer> result = new
CaseInsensitiveMap<>(actualProjections.size(), 1F);
for (int columnIndex = actualProjections.size(); columnIndex > 0;
columnIndex--) {
Projection projection = actualProjections.get(columnIndex - 1);
-
result.put(DerivedColumn.isDerivedColumnName(projection.getColumnLabel()) ?
projection.getExpression() : projection.getColumnLabel(), columnIndex);
+
result.put(DerivedColumn.isDerivedColumnName(projection.getColumnLabel()) ?
projection.getColumnName() : projection.getColumnLabel(), columnIndex);
}
return result;
}
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
index 06ab874e1b0..8cb815f610c 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
@@ -98,7 +98,7 @@ public final class SQLFederationResultSet extends
AbstractUnsupportedOperationRe
private String getColumnLabel(final Projection projection, final
DatabaseType databaseType) {
if (projection instanceof AggregationDistinctProjection) {
- return databaseType.getDefaultSchema().isPresent() ?
((AggregationDistinctProjection) projection).getType().name().toLowerCase() :
projection.getExpression();
+ return databaseType.getDefaultSchema().isPresent() ?
((AggregationDistinctProjection) projection).getType().name().toLowerCase() :
projection.getColumnName();
}
return projection.getColumnLabel();
}
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSetMetaData.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSetMetaData.java
index 0472c59c3da..c3cd0fb5a97 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSetMetaData.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSetMetaData.java
@@ -186,7 +186,7 @@ public final class SQLFederationResultSetMetaData extends
WrapperAdapter impleme
if (projection instanceof ColumnProjection) {
Map<String, String> tableNamesByColumnProjection =
selectStatementContext.getTablesContext().findTableNamesByColumnProjection(Collections.singletonList((ColumnProjection)
projection), schema);
- return
Optional.of(tableNamesByColumnProjection.get(projection.getExpression()));
+ return
Optional.of(tableNamesByColumnProjection.get(projection.getColumnName()));
}
return Optional.empty();
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilderEngine.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilderEngine.java
index 4b59e3f053a..58215ee9093 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilderEngine.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilderEngine.java
@@ -71,7 +71,7 @@ public final class QueryHeaderBuilderEngine {
private String getColumnLabel(final ProjectionsContext projectionsContext,
final QueryResultMetaData queryResultMetaData, final int columnIndex) throws
SQLException {
Projection projection =
projectionsContext.getExpandProjections().get(columnIndex - 1);
- return DerivedColumn.isDerivedColumnName(projection.getColumnLabel())
? projection.getExpression() : queryResultMetaData.getColumnLabel(columnIndex);
+ return DerivedColumn.isDerivedColumnName(projection.getColumnLabel())
? projection.getColumnName() : queryResultMetaData.getColumnLabel(columnIndex);
}
private String getColumnName(final ProjectionsContext projectionsContext,
final QueryResultMetaData queryResultMetaData, final int columnIndex) throws
SQLException {
diff --git
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/NoResourceShowExecutor.java
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/NoResourceShowExecutor.java
index e566dae9a37..47ff4c2479e 100644
---
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/NoResourceShowExecutor.java
+++
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/NoResourceShowExecutor.java
@@ -61,7 +61,7 @@ public final class NoResourceShowExecutor implements
DatabaseAdminQueryExecutor
TableSegment tableSegment = sqlStatement.getFrom();
expressions =
sqlStatement.getProjections().getProjections().stream().filter(each -> !(each
instanceof ShorthandProjectionSegment))
.map(each -> new ProjectionEngine(null,
Collections.emptyMap(), null).createProjection(tableSegment, each))
- .filter(Optional::isPresent).map(each ->
each.get().getAlias().isPresent() ? each.get().getAlias().get() :
each.get().getExpression()).collect(Collectors.toList());
+ .filter(Optional::isPresent).map(each ->
each.get().getAlias().isPresent() ? each.get().getAlias().get() :
each.get().getColumnName()).collect(Collectors.toList());
mergedResult = new TransparentMergedResult(getQueryResult());
}
diff --git
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
index f19c63b1adb..00e8b6206b7 100644
---
a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
+++
b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
@@ -149,7 +149,7 @@ public final class MySQLComStmtPrepareExecutor implements
CommandExecutor {
for (Projection each : projections) {
// TODO Calculate column definition flag for other projection types
if (each instanceof ColumnProjection && null !=
((ColumnProjection) each).getOriginalName()) {
-
result.add(Optional.ofNullable(columnToTableMap.get(each.getExpression())).map(schema::getTable)
+
result.add(Optional.ofNullable(columnToTableMap.get(each.getColumnName())).map(schema::getTable)
.map(table ->
table.getColumns().get(((ColumnProjection) each).getOriginalName().getValue()))
.map(column ->
createMySQLColumnDefinition41Packet(characterSet,
calculateColumnDefinitionFlag(column),
MySQLBinaryColumnType.valueOfJDBCType(column.getDataType())))
.orElseGet(() ->
createMySQLColumnDefinition41Packet(characterSet, 0,
MySQLBinaryColumnType.VAR_STRING)));