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 cbbfd5e9ef6 fix as `owner.name` rewrite missing `` (#30649)
cbbfd5e9ef6 is described below
commit cbbfd5e9ef62821d0adccb68f0669b76b32df4ea
Author: Chuxin Chen <[email protected]>
AuthorDate: Wed Mar 27 09:03:01 2024 +0800
fix as `owner.name` rewrite missing `` (#30649)
* fix as `owner.name` rewrite missing ``
* fix as `owner.name` rewrite missing ``
* fix as `owner.name` rewrite missing ``
* fix as `owner.name` rewrite missing ``
* fix as `owner.name` rewrite missing ``
---
.../generator/EncryptGroupByItemTokenGenerator.java | 5 +++--
.../generator/EncryptIndexColumnTokenGenerator.java | 2 +-
.../EncryptPredicateColumnTokenGenerator.java | 5 +++--
.../generator/EncryptProjectionTokenGenerator.java | 7 ++-----
.../insert/EncryptInsertCipherNameTokenGenerator.java | 2 +-
.../EncryptGroupByItemTokenGeneratorTest.java | 1 +
.../EncryptPredicateColumnTokenGeneratorTest.java | 3 +++
.../generator/EncryptProjectionTokenGeneratorTest.java | 1 +
.../pojo/generic/SubstitutableColumnNameToken.java | 18 ++++++------------
.../pojo/generic/SubstitutableColumnNameTokenTest.java | 13 ++++++++-----
10 files changed, 29 insertions(+), 28 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGenerator.java
index 7a5b93253eb..5838b9b1d60 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGenerator.java
@@ -94,8 +94,9 @@ public final class EncryptGroupByItemTokenGenerator
implements CollectionSQLToke
int stopIndex = each.getStopIndex();
EncryptColumn encryptColumn =
encryptTable.get().getEncryptColumn(columnName);
SubstitutableColumnNameToken encryptColumnNameToken =
encryptColumn.getAssistedQuery()
- .map(optional -> new
SubstitutableColumnNameToken(startIndex, stopIndex,
createColumnProjections(optional.getName(),
each.getIdentifier().getQuoteCharacter())))
- .orElseGet(() -> new
SubstitutableColumnNameToken(startIndex, stopIndex,
createColumnProjections(encryptColumn.getCipher().getName(),
each.getIdentifier().getQuoteCharacter())));
+ .map(optional -> new
SubstitutableColumnNameToken(startIndex, stopIndex,
createColumnProjections(optional.getName(),
each.getIdentifier().getQuoteCharacter()), databaseType))
+ .orElseGet(() -> new
SubstitutableColumnNameToken(startIndex, stopIndex,
createColumnProjections(encryptColumn.getCipher().getName(),
each.getIdentifier().getQuoteCharacter()),
+ databaseType));
result.add(encryptColumnNameToken);
}
return result;
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptIndexColumnTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptIndexColumnTokenGenerator.java
index 05c23e2b20b..2cb05486a45 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptIndexColumnTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptIndexColumnTokenGenerator.java
@@ -85,7 +85,7 @@ public final class EncryptIndexColumnTokenGenerator
implements CollectionSQLToke
private Optional<SQLToken> getQueryColumnToken(final int startIndex, final
int stopIndex, final String queryColumnName, final QuoteCharacter
quoteCharacter) {
Collection<Projection> columnProjections =
getColumnProjections(queryColumnName, quoteCharacter);
- return Optional.of(new SubstitutableColumnNameToken(startIndex,
stopIndex, columnProjections, quoteCharacter));
+ return Optional.of(new SubstitutableColumnNameToken(startIndex,
stopIndex, columnProjections, databaseType));
}
private Collection<Projection> getColumnProjections(final String
columnName, final QuoteCharacter quoteCharacter) {
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
index 0d8f6e7653b..9296a332bc7 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGenerator.java
@@ -107,12 +107,13 @@ public final class EncryptPredicateColumnTokenGenerator
implements CollectionSQL
int stopIndex = columnSegment.getStopIndex();
if (includesLike(whereSegments, columnSegment)) {
ShardingSpherePreconditions.checkState(encryptColumn.getLikeQuery().isPresent(),
() -> new UnsupportedEncryptSQLException("LIKE"));
- return new SubstitutableColumnNameToken(startIndex, stopIndex,
createColumnProjections(encryptColumn.getLikeQuery().get().getName(),
columnSegment.getIdentifier().getQuoteCharacter()));
+ return new SubstitutableColumnNameToken(startIndex, stopIndex,
createColumnProjections(encryptColumn.getLikeQuery().get().getName(),
columnSegment.getIdentifier().getQuoteCharacter()),
+ databaseType);
}
Collection<Projection> columnProjections =
encryptColumn.getAssistedQuery().map(optional ->
createColumnProjections(optional.getName(),
columnSegment.getIdentifier().getQuoteCharacter()))
.orElseGet(() ->
createColumnProjections(encryptColumn.getCipher().getName(),
columnSegment.getIdentifier().getQuoteCharacter()));
- return new SubstitutableColumnNameToken(startIndex, stopIndex,
columnProjections);
+ return new SubstitutableColumnNameToken(startIndex, stopIndex,
columnProjections, databaseType);
}
private boolean includesLike(final Collection<WhereSegment> whereSegments,
final ColumnSegment targetColumnSegment) {
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 bd05308a6ac..c797737c7f0 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
@@ -31,10 +31,8 @@ import
org.apache.shardingsphere.infra.binder.context.segment.select.projection.
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.InsertStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
-import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
import
org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
import
org.apache.shardingsphere.infra.rewrite.sql.token.generator.CollectionSQLTokenGenerator;
@@ -127,7 +125,7 @@ public final class EncryptProjectionTokenGenerator
implements CollectionSQLToken
final
ColumnProjection columnProjection, final SubqueryType subqueryType) {
Collection<Projection> projections =
generateProjections(encryptColumn, columnProjection, subqueryType, false);
int startIndex = columnSegment.getColumn().getOwner().isPresent() ?
columnSegment.getColumn().getOwner().get().getStopIndex() + 2 :
columnSegment.getColumn().getStartIndex();
- return new SubstitutableColumnNameToken(startIndex,
columnSegment.getStopIndex(), projections);
+ return new SubstitutableColumnNameToken(startIndex,
columnSegment.getStopIndex(), projections, databaseType);
}
private SubstitutableColumnNameToken generateSQLToken(final
ShorthandProjectionSegment segment, final Collection<Projection> actualColumns,
@@ -148,8 +146,7 @@ public final class EncryptProjectionTokenGenerator
implements CollectionSQLToken
}
int startIndex = segment.getOwner().isPresent() ?
segment.getOwner().get().getStartIndex() : segment.getStartIndex();
previousSQLTokens.removeIf(each -> each.getStartIndex() == startIndex);
- DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(selectStatementContext.getDatabaseType()).getDialectDatabaseMetaData();
- return new SubstitutableColumnNameToken(startIndex,
segment.getStopIndex(), projections,
dialectDatabaseMetaData.getQuoteCharacter());
+ return new SubstitutableColumnNameToken(startIndex,
segment.getStopIndex(), projections, selectStatementContext.getDatabaseType());
}
private Collection<Projection> generateProjections(final EncryptColumn
encryptColumn, final ColumnProjection columnProjection,
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
index 621d0b60b72..0b28529a8a1 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertCipherNameTokenGenerator.java
@@ -75,7 +75,7 @@ public final class EncryptInsertCipherNameTokenGenerator
implements CollectionSQ
if (encryptTable.isEncryptColumn(columnName)) {
Collection<Projection> projections =
Collections.singleton(new ColumnProjection(null,
encryptTable.getEncryptColumn(columnName).getCipher().getName(), null,
insertStatementContext.getDatabaseType()));
- result.add(new
SubstitutableColumnNameToken(each.getStartIndex(), each.getStopIndex(),
projections));
+ result.add(new
SubstitutableColumnNameToken(each.getStartIndex(), each.getStopIndex(),
projections, insertStatementContext.getDatabaseType()));
}
}
return result;
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGeneratorTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGeneratorTest.java
index 08ce51aa100..16e5f08e93d 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGeneratorTest.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptGroupByItemTokenGeneratorTest.java
@@ -58,6 +58,7 @@ class EncryptGroupByItemTokenGeneratorTest {
generator.setEncryptRule(mockEncryptRule());
generator.setDatabaseName("db_schema");
generator.setSchemas(Collections.singletonMap("test",
mock(ShardingSphereSchema.class)));
+ generator.setDatabaseType(databaseType);
}
private EncryptRule mockEncryptRule() {
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGeneratorTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGeneratorTest.java
index a0be83c9cd1..824bb94040f 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGeneratorTest.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptPredicateColumnTokenGeneratorTest.java
@@ -19,9 +19,11 @@ package
org.apache.shardingsphere.encrypt.rewrite.token.generator;
import
org.apache.shardingsphere.encrypt.rewrite.token.generator.fixture.EncryptGeneratorFixtureBuilder;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.SQLToken;
import
org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.SubstitutableColumnNameToken;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -53,6 +55,7 @@ class EncryptPredicateColumnTokenGeneratorTest {
void assertGenerateSQLTokenFromGenerateNewSQLToken() {
generator.setDatabaseName(DefaultDatabase.LOGIC_NAME);
generator.setSchemas(Collections.emptyMap());
+
generator.setDatabaseType(TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"));
Collection<SQLToken> substitutableColumnNameTokens =
generator.generateSQLTokens(EncryptGeneratorFixtureBuilder.createUpdateStatementContext());
assertThat(substitutableColumnNameTokens.size(), is(1));
assertThat(((SubstitutableColumnNameToken)
substitutableColumnNameTokens.iterator().next()).toString(null),
is("pwd_assist"));
diff --git
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGeneratorTest.java
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGeneratorTest.java
index 346af625002..3271885d7ec 100644
---
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGeneratorTest.java
+++
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGeneratorTest.java
@@ -62,6 +62,7 @@ class EncryptProjectionTokenGeneratorTest {
@BeforeEach
void setup() {
generator.setEncryptRule(mockEncryptRule());
+ generator.setDatabaseType(databaseType);
}
private EncryptRule mockEncryptRule() {
diff --git
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameToken.java
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameToken.java
index 1bc5ffbd1aa..8931d3d4dad 100644
---
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameToken.java
+++
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameToken.java
@@ -23,6 +23,8 @@ import lombok.Getter;
import
org.apache.shardingsphere.infra.binder.context.segment.select.projection.Projection;
import
org.apache.shardingsphere.infra.binder.context.segment.select.projection.impl.ColumnProjection;
import
org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.RouteUnitAware;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.SQLToken;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.Substitutable;
@@ -52,19 +54,11 @@ public final class SubstitutableColumnNameToken extends
SQLToken implements Subs
private final QuoteCharacter quoteCharacter;
- public SubstitutableColumnNameToken(final int startIndex, final int
stopIndex, final Collection<Projection> projections) {
+ public SubstitutableColumnNameToken(final int startIndex, final int
stopIndex, final Collection<Projection> projections, final DatabaseType
databaseType) {
super(startIndex);
this.stopIndex = stopIndex;
this.lastColumn = false;
- this.quoteCharacter = QuoteCharacter.NONE;
- this.projections = projections;
- }
-
- public SubstitutableColumnNameToken(final int startIndex, final int
stopIndex, final Collection<Projection> projections, final QuoteCharacter
quoteCharacter) {
- super(startIndex);
- this.stopIndex = stopIndex;
- this.lastColumn = false;
- this.quoteCharacter = quoteCharacter;
+ this.quoteCharacter = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getQuoteCharacter();
this.projections = projections;
}
@@ -114,9 +108,9 @@ public final class SubstitutableColumnNameToken extends
SQLToken implements Subs
String actualTableOwner =
logicActualTableNames.getOrDefault(owner.getValue(), owner.getValue());
builder.append(getValueWithQuoteCharacters(new
IdentifierValue(actualTableOwner, owner.getQuoteCharacter()))).append('.');
}
-
builder.append(columnProjection.getName().getValueWithQuoteCharacters());
+
builder.append(getValueWithQuoteCharacters(columnProjection.getName()));
if (columnProjection.getAlias().isPresent()) {
- builder.append(" AS
").append(columnProjection.getAlias().get().getValueWithQuoteCharacters());
+ builder.append(" AS
").append(getValueWithQuoteCharacters(columnProjection.getAlias().get()));
}
}
diff --git
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameTokenTest.java
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameTokenTest.java
index 3aee39b4c57..0cce658c661 100644
---
a/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameTokenTest.java
+++
b/infra/rewrite/src/test/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameTokenTest.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.infra.binder.context.segment.select.projection.
import
org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.SubqueryProjectionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
import org.junit.jupiter.api.Test;
@@ -40,24 +41,26 @@ class SubstitutableColumnNameTokenTest {
@Test
void assertToString() {
Collection<Projection> projections = Collections.singletonList(new
ColumnProjection(null, "id", null, mock(DatabaseType.class)));
- assertThat(new SubstitutableColumnNameToken(0, 1,
projections).toString(mock(RouteUnit.class)), is("id"));
+ assertThat(new SubstitutableColumnNameToken(0, 1, projections,
TypedSPILoader.getService(DatabaseType.class,
"MySQL")).toString(mock(RouteUnit.class)), is("id"));
}
@Test
void assertToStringWithQuote() {
Collection<Projection> projections = Collections.singletonList(new
ColumnProjection(null,
new IdentifierValue("id", QuoteCharacter.BACK_QUOTE), new
IdentifierValue("id", QuoteCharacter.BACK_QUOTE), mock(DatabaseType.class)));
- assertThat(new SubstitutableColumnNameToken(0, 1, projections,
QuoteCharacter.BACK_QUOTE).toString(mock(RouteUnit.class)), is("`id` AS `id`"));
+ assertThat(new SubstitutableColumnNameToken(0, 1, projections,
TypedSPILoader.getService(DatabaseType.class,
"MySQL")).toString(mock(RouteUnit.class)), is("`id` AS `id`"));
}
@Test
void assertToStringWithOwnerQuote() {
Collection<Projection> projectionsWithOwnerQuote =
Collections.singletonList(new ColumnProjection(new IdentifierValue("temp",
QuoteCharacter.BACK_QUOTE),
new IdentifierValue("id", QuoteCharacter.BACK_QUOTE), new
IdentifierValue("id", QuoteCharacter.BACK_QUOTE), mock(DatabaseType.class)));
- assertThat(new SubstitutableColumnNameToken(0, 1,
projectionsWithOwnerQuote,
QuoteCharacter.BACK_QUOTE).toString(mock(RouteUnit.class)), is("`temp`.`id` AS
`id`"));
+ assertThat(new SubstitutableColumnNameToken(0, 1,
projectionsWithOwnerQuote, TypedSPILoader.getService(DatabaseType.class,
"MySQL")).toString(mock(RouteUnit.class)),
+ is("`temp`.`id` AS `id`"));
Collection<Projection> projectionsWithoutOwnerQuote =
Collections.singletonList(new ColumnProjection(new IdentifierValue("temp",
QuoteCharacter.NONE),
new IdentifierValue("id", QuoteCharacter.BACK_QUOTE), new
IdentifierValue("id", QuoteCharacter.BACK_QUOTE), mock(DatabaseType.class)));
- assertThat(new SubstitutableColumnNameToken(0, 1,
projectionsWithoutOwnerQuote,
QuoteCharacter.BACK_QUOTE).toString(mock(RouteUnit.class)), is("temp.`id` AS
`id`"));
+ assertThat(new SubstitutableColumnNameToken(0, 1,
projectionsWithoutOwnerQuote, TypedSPILoader.getService(DatabaseType.class,
"MySQL")).toString(mock(RouteUnit.class)),
+ is("temp.`id` AS `id`"));
}
@Test
@@ -66,6 +69,6 @@ class SubstitutableColumnNameTokenTest {
new IdentifierValue("id", QuoteCharacter.BACK_QUOTE), new
IdentifierValue("id", QuoteCharacter.BACK_QUOTE), mock(DatabaseType.class)),
new SubqueryProjection(new SubqueryProjectionSegment(null,
"(SELECT name FROM t_order)"), new ColumnProjection(null, "name", null,
mock(DatabaseType.class)),
new IdentifierValue("name"),
mock(DatabaseType.class)));
- assertThat(new SubstitutableColumnNameToken(0, 1, projections,
QuoteCharacter.BACK_QUOTE).toString(mock(RouteUnit.class)), is("`temp`.`id` AS
`id`, `name`"));
+ assertThat(new SubstitutableColumnNameToken(0, 1, projections,
TypedSPILoader.getService(DatabaseType.class,
"MySQL")).toString(mock(RouteUnit.class)), is("`temp`.`id` AS `id`, `name`"));
}
}