This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 df3367b Fix aggregate distinct column error (#15616)
df3367b is described below
commit df3367b713ea5e57d5c60477320bee27232c22c7
Author: tuichenchuxin <[email protected]>
AuthorDate: Fri Feb 25 14:14:13 2022 +0800
Fix aggregate distinct column error (#15616)
* Fix aggregate distinct column error
* Fix Ci fail
---
.../core/resultset/ShardingSphereResultSet.java | 32 ++++++++++++++++++++++
.../resultset/ShardingSphereResultSetMetaData.java | 26 ++++++++++++++----
.../response/header/query/QueryHeaderBuilder.java | 13 +++++++--
.../header/query/impl/MySQLQueryHeaderBuilder.java | 5 ++--
.../query/impl/OpenGaussQueryHeaderBuilder.java | 6 ++--
.../query/impl/PostgreSQLQueryHeaderBuilder.java | 3 +-
.../impl/OpenGaussQueryHeaderBuilderTest.java | 4 +--
.../impl/PostgreSQLQueryHeaderBuilderTest.java | 2 +-
.../cases/dql/dql-integration-test-cases.xml | 7 ++---
9 files changed, 75 insertions(+), 23 deletions(-)
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSet.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSet.java
index 626cbd4..b1e325f 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSet.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSet.java
@@ -19,6 +19,11 @@ package org.apache.shardingsphere.driver.jdbc.core.resultset;
import org.apache.commons.collections4.map.CaseInsensitiveMap;
import org.apache.shardingsphere.driver.jdbc.adapter.AbstractResultSetAdapter;
+import org.apache.shardingsphere.driver.jdbc.exception.SQLExceptionErrorCode;
+import
org.apache.shardingsphere.infra.binder.segment.select.projection.DerivedColumn;
+import
org.apache.shardingsphere.infra.binder.segment.select.projection.Projection;
+import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
@@ -68,6 +73,9 @@ public final class ShardingSphereResultSet extends
AbstractResultSetAdapter {
}
private Map<String, Integer> createColumnLabelAndIndexMap(final
ResultSetMetaData resultSetMetaData) throws SQLException {
+ if (hasSelectExpandProjections()) {
+ return createColumnLabelAndIndexMapWithExpandProjections();
+ }
Map<String, Integer> result = new
CaseInsensitiveMap<>(resultSetMetaData.getColumnCount(), 1);
for (int columnIndex = resultSetMetaData.getColumnCount(); columnIndex
> 0; columnIndex--) {
result.put(resultSetMetaData.getColumnLabel(columnIndex),
columnIndex);
@@ -75,6 +83,30 @@ public final class ShardingSphereResultSet extends
AbstractResultSetAdapter {
return result;
}
+ private Map<String, Integer>
createColumnLabelAndIndexMapWithExpandProjections() throws SQLException {
+ SelectStatementContext statementContext = (SelectStatementContext)
getExecutionContext().getSqlStatementContext();
+ Map<String, Integer> result = new
CaseInsensitiveMap<>(statementContext.getProjectionsContext().getExpandProjections().size(),
1);
+ for (int columnIndex =
statementContext.getProjectionsContext().getExpandProjections().size();
columnIndex > 0; columnIndex--) {
+ checkColumnIndex(columnIndex);
+ Projection projection =
statementContext.getProjectionsContext().getExpandProjections().get(columnIndex
- 1);
+
result.put(DerivedColumn.isDerivedColumnName(projection.getColumnLabel()) ?
projection.getExpression() : projection.getColumnLabel(), columnIndex);
+ }
+ return result;
+ }
+
+ private boolean hasSelectExpandProjections() {
+ SQLStatementContext<?> sqlStatementContext =
getExecutionContext().getSqlStatementContext();
+ return sqlStatementContext instanceof SelectStatementContext &&
!((SelectStatementContext)
sqlStatementContext).getProjectionsContext().getExpandProjections().isEmpty();
+ }
+
+ private void checkColumnIndex(final int column) throws SQLException {
+ List<Projection> actualProjections = ((SelectStatementContext)
getExecutionContext().getSqlStatementContext()).getProjectionsContext().getExpandProjections();
+ if (column > actualProjections.size()) {
+ SQLExceptionErrorCode errorCode =
SQLExceptionErrorCode.COLUMN_INDEX_OUT_OF_RANGE;
+ throw new SQLException(errorCode.getErrorMessage(),
errorCode.getSqlState(), errorCode.getErrorCode());
+ }
+ }
+
@Override
public boolean next() throws SQLException {
return mergeResultSet.next();
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetMetaData.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetMetaData.java
index df1673d..be295dd 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetMetaData.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetMetaData.java
@@ -20,7 +20,9 @@ package org.apache.shardingsphere.driver.jdbc.core.resultset;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.driver.jdbc.adapter.WrapperAdapter;
import org.apache.shardingsphere.driver.jdbc.exception.SQLExceptionErrorCode;
+import
org.apache.shardingsphere.infra.binder.segment.select.projection.DerivedColumn;
import
org.apache.shardingsphere.infra.binder.segment.select.projection.Projection;
+import
org.apache.shardingsphere.infra.binder.segment.select.projection.impl.AggregationDistinctProjection;
import
org.apache.shardingsphere.infra.binder.segment.select.projection.impl.ColumnProjection;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
@@ -94,21 +96,27 @@ public final class ShardingSphereResultSetMetaData extends
WrapperAdapter implem
@Override
public String getColumnLabel(final int column) throws SQLException {
+ if (hasSelectExpandProjections()) {
+ 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 resultSetMetaData.getColumnLabel(column);
}
@Override
public String getColumnName(final int column) throws SQLException {
if (hasSelectExpandProjections()) {
- List<Projection> actualProjections = ((SelectStatementContext)
sqlStatementContext).getProjectionsContext().getExpandProjections();
- if (column > actualProjections.size()) {
- SQLExceptionErrorCode errorCode =
SQLExceptionErrorCode.COLUMN_INDEX_OUT_OF_RANGE;
- throw new SQLException(errorCode.getErrorMessage(),
errorCode.getSqlState(), errorCode.getErrorCode());
- }
+ checkColumnIndex(column);
Projection projection = ((SelectStatementContext)
sqlStatementContext).getProjectionsContext().getExpandProjections().get(column
- 1);
if (projection instanceof ColumnProjection) {
return ((ColumnProjection) projection).getName();
}
+ if (projection instanceof AggregationDistinctProjection) {
+ return
DerivedColumn.isDerivedColumnName(projection.getColumnLabel()) ?
projection.getExpression() : projection.getColumnLabel();
+ }
}
return resultSetMetaData.getColumnName(column);
}
@@ -117,6 +125,14 @@ public final class ShardingSphereResultSetMetaData extends
WrapperAdapter implem
return sqlStatementContext instanceof SelectStatementContext &&
!((SelectStatementContext)
sqlStatementContext).getProjectionsContext().getExpandProjections().isEmpty();
}
+ private void checkColumnIndex(final int column) throws SQLException {
+ List<Projection> actualProjections = ((SelectStatementContext)
sqlStatementContext).getProjectionsContext().getExpandProjections();
+ if (column > actualProjections.size()) {
+ SQLExceptionErrorCode errorCode =
SQLExceptionErrorCode.COLUMN_INDEX_OUT_OF_RANGE;
+ throw new SQLException(errorCode.getErrorMessage(),
errorCode.getSqlState(), errorCode.getErrorCode());
+ }
+ }
+
@Override
public String getSchemaName(final int column) {
return DefaultSchema.LOGIC_NAME;
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilder.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilder.java
index a8bb630..3ac7385 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilder.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilder.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.proxy.backend.response.header.query;
import org.apache.commons.lang3.concurrent.LazyInitializer;
+import
org.apache.shardingsphere.infra.binder.segment.select.projection.DerivedColumn;
import
org.apache.shardingsphere.infra.binder.segment.select.projection.Projection;
import
org.apache.shardingsphere.infra.binder.segment.select.projection.ProjectionsContext;
import
org.apache.shardingsphere.infra.binder.segment.select.projection.impl.ColumnProjection;
@@ -46,7 +47,7 @@ public abstract class QueryHeaderBuilder implements
DatabaseTypeAwareSPI {
*/
public final QueryHeader build(final QueryResultMetaData
queryResultMetaData, final ShardingSphereMetaData metaData,
final int columnIndex, final
LazyInitializer<DataNodeContainedRule> dataNodeContainedRule) throws
SQLException {
- return doBuild(queryResultMetaData, metaData,
queryResultMetaData.getColumnName(columnIndex), columnIndex,
dataNodeContainedRule);
+ return doBuild(queryResultMetaData, metaData,
queryResultMetaData.getColumnName(columnIndex),
queryResultMetaData.getColumnLabel(columnIndex), columnIndex,
dataNodeContainedRule);
}
/**
@@ -62,7 +63,13 @@ public abstract class QueryHeaderBuilder implements
DatabaseTypeAwareSPI {
*/
public final QueryHeader build(final ProjectionsContext
projectionsContext, final QueryResultMetaData queryResultMetaData,
final ShardingSphereMetaData metaData,
final int columnIndex, final LazyInitializer<DataNodeContainedRule>
dataNodeContainedRule) throws SQLException {
- return doBuild(queryResultMetaData, metaData,
getColumnName(projectionsContext, queryResultMetaData, columnIndex),
columnIndex, dataNodeContainedRule);
+ return doBuild(queryResultMetaData, metaData,
getColumnName(projectionsContext, queryResultMetaData, columnIndex),
+ getColumnLabel(projectionsContext, queryResultMetaData,
columnIndex), columnIndex, dataNodeContainedRule);
+ }
+
+ 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);
}
private String getColumnName(final ProjectionsContext projectionsContext,
final QueryResultMetaData queryResultMetaData, final int columnIndex) throws
SQLException {
@@ -70,6 +77,6 @@ public abstract class QueryHeaderBuilder implements
DatabaseTypeAwareSPI {
return projection instanceof ColumnProjection ? ((ColumnProjection)
projection).getName() : queryResultMetaData.getColumnName(columnIndex);
}
- protected abstract QueryHeader doBuild(QueryResultMetaData
queryResultMetaData, ShardingSphereMetaData metaData, String columnName, int
columnIndex,
+ protected abstract QueryHeader doBuild(QueryResultMetaData
queryResultMetaData, ShardingSphereMetaData metaData, String columnName, String
columnLabel, int columnIndex,
LazyInitializer<DataNodeContainedRule> dataNodeContainedRule) throws
SQLException;
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilder.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilder.java
index 6c85d55..4949501 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilder.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/MySQLQueryHeaderBuilder.java
@@ -43,8 +43,8 @@ public final class MySQLQueryHeaderBuilder extends
QueryHeaderBuilder {
@SneakyThrows(ConcurrentException.class)
@Override
- protected QueryHeader doBuild(final QueryResultMetaData
queryResultMetaData, final ShardingSphereMetaData metaData, final String
columnName, final int columnIndex,
- final LazyInitializer<DataNodeContainedRule>
dataNodeContainedRule) throws SQLException {
+ protected QueryHeader doBuild(final QueryResultMetaData
queryResultMetaData, final ShardingSphereMetaData metaData, final String
columnName, final String columnLabel,
+ final int columnIndex, final
LazyInitializer<DataNodeContainedRule> dataNodeContainedRule) throws
SQLException {
String schemaName = null == metaData ? "" : metaData.getName();
String actualTableName = queryResultMetaData.getTableName(columnIndex);
String tableName;
@@ -57,7 +57,6 @@ public final class MySQLQueryHeaderBuilder extends
QueryHeaderBuilder {
tableName = actualTableName;
primaryKey = false;
}
- String columnLabel = queryResultMetaData.getColumnLabel(columnIndex);
int columnType = queryResultMetaData.getColumnType(columnIndex);
String columnTypeName =
queryResultMetaData.getColumnTypeName(columnIndex);
int columnLength = queryResultMetaData.getColumnLength(columnIndex);
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilder.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilder.java
index 970dca2..680789f 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilder.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilder.java
@@ -39,8 +39,8 @@ public final class OpenGaussQueryHeaderBuilder extends
QueryHeaderBuilder {
}
@Override
- protected QueryHeader doBuild(final QueryResultMetaData
queryResultMetaData, final ShardingSphereMetaData metaData, final String
columnName, final int columnIndex,
- final LazyInitializer<DataNodeContainedRule>
dataNodeContainedRule) throws SQLException {
- return delegated.doBuild(queryResultMetaData, metaData, columnName,
columnIndex, dataNodeContainedRule);
+ protected QueryHeader doBuild(final QueryResultMetaData
queryResultMetaData, final ShardingSphereMetaData metaData, final String
columnName, final String columnLabel,
+ final int columnIndex, final
LazyInitializer<DataNodeContainedRule> dataNodeContainedRule) throws
SQLException {
+ return delegated.doBuild(queryResultMetaData, metaData, columnName,
columnLabel, columnIndex, dataNodeContainedRule);
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilder.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilder.java
index 52c030a..f15b8d5 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilder.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilder.java
@@ -43,9 +43,8 @@ public final class PostgreSQLQueryHeaderBuilder extends
QueryHeaderBuilder {
}
@Override
- protected QueryHeader doBuild(final QueryResultMetaData
queryResultMetaData, final ShardingSphereMetaData metaData, final String
columnName,
+ protected QueryHeader doBuild(final QueryResultMetaData
queryResultMetaData, final ShardingSphereMetaData metaData, final String
columnName, final String columnLabel,
final int columnIndex, final
LazyInitializer<DataNodeContainedRule> unused) throws SQLException {
- String columnLabel = queryResultMetaData.getColumnLabel(columnIndex);
int columnType = queryResultMetaData.getColumnType(columnIndex);
String columnTypeName =
queryResultMetaData.getColumnTypeName(columnIndex);
int columnLength = queryResultMetaData.getColumnLength(columnIndex);
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilderTest.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilderTest.java
index 681268b..c4f04e4 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilderTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/OpenGaussQueryHeaderBuilderTest.java
@@ -44,8 +44,8 @@ public final class OpenGaussQueryHeaderBuilderTest {
when(queryResultMetaData.getColumnType(columnIndex)).thenReturn(Types.INTEGER);
when(queryResultMetaData.getColumnTypeName(columnIndex)).thenReturn("int");
when(queryResultMetaData.getColumnLength(columnIndex)).thenReturn(11);
- QueryHeader expected = new
PostgreSQLQueryHeaderBuilder().doBuild(queryResultMetaData, null, null,
columnIndex, null);
- QueryHeader actual = new
OpenGaussQueryHeaderBuilder().doBuild(queryResultMetaData, null, null,
columnIndex, null);
+ QueryHeader expected = new
PostgreSQLQueryHeaderBuilder().doBuild(queryResultMetaData, null, null,
queryResultMetaData.getColumnLabel(columnIndex), columnIndex, null);
+ QueryHeader actual = new
OpenGaussQueryHeaderBuilder().doBuild(queryResultMetaData, null, null,
queryResultMetaData.getColumnLabel(columnIndex), columnIndex, null);
assertThat(actual.getColumnLabel(), is(expected.getColumnLabel()));
assertThat(actual.getColumnType(), is(expected.getColumnType()));
assertThat(actual.getColumnTypeName(),
is(expected.getColumnTypeName()));
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilderTest.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilderTest.java
index b9a18b5..755ff18 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilderTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/header/query/impl/PostgreSQLQueryHeaderBuilderTest.java
@@ -39,7 +39,7 @@ public final class PostgreSQLQueryHeaderBuilderTest {
when(queryResultMetaData.getColumnType(columnIndex)).thenReturn(Types.INTEGER);
when(queryResultMetaData.getColumnTypeName(columnIndex)).thenReturn("int");
when(queryResultMetaData.getColumnLength(columnIndex)).thenReturn(11);
- QueryHeader actual = new
PostgreSQLQueryHeaderBuilder().doBuild(queryResultMetaData, null, null,
columnIndex, null);
+ QueryHeader actual = new
PostgreSQLQueryHeaderBuilder().doBuild(queryResultMetaData, null, null,
queryResultMetaData.getColumnLabel(columnIndex), columnIndex, null);
assertThat(actual.getColumnLabel(), is("label"));
assertThat(actual.getColumnType(), is(Types.INTEGER));
assertThat(actual.getColumnTypeName(), is("int"));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
index 0ecdb71..9704650 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
@@ -451,10 +451,9 @@
<assertion expected-data-source-name="read_dataset" />
</test-case>
- <!-- FIXME #15591 Expected: is "count(distinct order_id)", but: was
"aggregation_distinct_derived_0"-->
-<!-- <test-case sql="SELECT COUNT(DISTINCT order_id), SUM(DISTINCT
order_id) FROM t_order WHERE order_id < 1100" db-types="MySQL"
scenario-types="db,tbl,dbtbl_with_readwrite_splitting,readwrite_splitting">-->
-<!-- <assertion expected-data-source-name="read_dataset" />-->
-<!-- </test-case>-->
+ <test-case sql="SELECT COUNT(DISTINCT order_id), SUM(DISTINCT order_id)
FROM t_order WHERE order_id < 1100" db-types="MySQL"
scenario-types="db,tbl,dbtbl_with_readwrite_splitting,readwrite_splitting">
+ <assertion expected-data-source-name="read_dataset" />
+ </test-case>
<test-case sql="SELECT COUNT(DISTINCT user_id + order_id) c FROM t_order
WHERE order_id < 1100"
scenario-types="db,tbl,dbtbl_with_readwrite_splitting,readwrite_splitting">
<assertion expected-data-source-name="read_dataset" />