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`"));
     }
 }

Reply via email to