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 627375173ce Support encrypt rewriter test with custom databaseName 
config (#30598)
627375173ce is described below

commit 627375173ce5755b77ea47209bead06f1e11542e
Author: LotusMoon <[email protected]>
AuthorDate: Fri Mar 22 10:16:17 2024 +0800

    Support encrypt rewriter test with custom databaseName config (#30598)
    
    * Support encrypt rewriter with custom databaseName config
    
    * Resolving code conflicts
---
 .../test/it/rewrite/engine/SQLRewriterIT.java             | 15 ++++++++-------
 .../encrypt/case/query-with-cipher/dml/delete/delete.xml  |  2 +-
 .../query-with-cipher/dml/select/select-projection.xml    |  8 ++++----
 .../case/query-with-cipher/dml/select/select-where.xml    |  5 +++++
 .../scenario/encrypt/config/query-with-cipher.yaml        |  2 ++
 5 files changed, 20 insertions(+), 12 deletions(-)

diff --git 
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
 
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
index e154914c23d..dd68a4ad6dd 100644
--- 
a/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
+++ 
b/test/it/rewriter/src/test/java/org/apache/shardingsphere/test/it/rewrite/engine/SQLRewriterIT.java
@@ -126,25 +126,26 @@ public abstract class SQLRewriterIT {
         DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, testParams.getDatabaseType());
         ResourceMetaData resourceMetaData = mock(ResourceMetaData.class, 
RETURNS_DEEP_STUBS);
         
when(resourceMetaData.getStorageUnits()).thenReturn(databaseConfig.getStorageUnits());
-        String schemaName = new 
DatabaseTypeRegistry(databaseType).getDefaultSchemaName(DefaultDatabase.LOGIC_NAME);
+        String databaseName = null != rootConfig.getDatabaseName() ? 
rootConfig.getDatabaseName() : DefaultDatabase.LOGIC_NAME;
+        String schemaName = new 
DatabaseTypeRegistry(databaseType).getDefaultSchemaName(databaseName);
         SQLStatementParserEngine sqlStatementParserEngine = new 
SQLStatementParserEngine(TypedSPILoader.getService(DatabaseType.class, 
testParams.getDatabaseType()),
                 sqlParserRule.getSqlStatementCache(), 
sqlParserRule.getParseTreeCache());
         String sql = SQLHintUtils.removeHint(testParams.getInputSQL());
         SQLStatement sqlStatement = sqlStatementParserEngine.parse(sql, false);
         Collection<ShardingSphereRule> databaseRules = 
createDatabaseRules(databaseConfig, schemaName, sqlStatement, databaseType);
         RuleMetaData databaseRuleMetaData = new RuleMetaData(databaseRules);
-        ShardingSphereDatabase database = new 
ShardingSphereDatabase(DefaultDatabase.LOGIC_NAME, databaseType, 
resourceMetaData, databaseRuleMetaData, mockSchemas(schemaName));
+        ShardingSphereDatabase database = new 
ShardingSphereDatabase(databaseName, databaseType, resourceMetaData, 
databaseRuleMetaData, mockSchemas(schemaName));
         Map<String, ShardingSphereDatabase> databases = new HashMap<>(2, 1F);
-        databases.put(database.getName(), database);
+        databases.put(databaseName, database);
         RuleMetaData globalRuleMetaData = new 
RuleMetaData(createGlobalRules());
         ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(databases, mock(ResourceMetaData.class), 
globalRuleMetaData, mock(ConfigurationProperties.class));
         HintValueContext hintValueContext = 
SQLHintUtils.extractHint(testParams.getInputSQL());
-        SQLStatementContext sqlStatementContext = new SQLBindEngine(metaData, 
database.getName(), hintValueContext).bind(sqlStatement, 
Collections.emptyList());
+        SQLStatementContext sqlStatementContext = new SQLBindEngine(metaData, 
databaseName, hintValueContext).bind(sqlStatement, Collections.emptyList());
         if (sqlStatementContext instanceof ParameterAware) {
             ((ParameterAware) 
sqlStatementContext).setUpParameters(testParams.getInputParameters());
         }
         if (sqlStatementContext instanceof CursorDefinitionAware) {
-            ((CursorDefinitionAware) 
sqlStatementContext).setUpCursorDefinition(createCursorDefinition(database.getName(),
 metaData, sqlStatementParserEngine));
+            ((CursorDefinitionAware) 
sqlStatementContext).setUpCursorDefinition(createCursorDefinition(databaseName, 
metaData, sqlStatementParserEngine));
         }
         QueryContext queryContext = new QueryContext(sqlStatementContext, sql, 
testParams.getInputParameters(), hintValueContext);
         ConfigurationProperties props = new 
ConfigurationProperties(rootConfig.getProps());
@@ -174,9 +175,9 @@ public abstract class SQLRewriterIT {
         return result;
     }
     
-    private CursorStatementContext createCursorDefinition(final String 
databaseName, final ShardingSphereMetaData metaData, final 
SQLStatementParserEngine sqlStatementParserEngine) {
+    private CursorStatementContext createCursorDefinition(final String 
schemaName, final ShardingSphereMetaData metaData, final 
SQLStatementParserEngine sqlStatementParserEngine) {
         SQLStatement sqlStatement = sqlStatementParserEngine.parse("CURSOR 
t_account_cursor FOR SELECT * FROM t_account WHERE account_id = 100", false);
-        return (CursorStatementContext) new SQLBindEngine(metaData, 
databaseName, new HintValueContext()).bind(sqlStatement, 
Collections.emptyList());
+        return (CursorStatementContext) new SQLBindEngine(metaData, 
schemaName, new HintValueContext()).bind(sqlStatement, Collections.emptyList());
     }
     
     protected abstract void mockDataSource(Map<String, DataSource> 
dataSources) throws SQLException;
diff --git 
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/delete/delete.xml
 
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/delete/delete.xml
index 657d388372f..a8c7d4505c5 100644
--- 
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/delete/delete.xml
+++ 
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/delete/delete.xml
@@ -63,7 +63,7 @@
     </rewrite-assertion>
     
     <rewrite-assertion 
id="delete_user_with_database_and_schema_and_alias_for_literals" 
db-types="SQLServer">
-        <input sql="DELETE t FROM logic_db.dbo.t_user as t WHERE t.user_id = 4 
and t.user_name = 'test_user' and t.user_name like 'test_%' and t.password = 
'admin123'  and t.email = '[email protected]'" />
+        <input sql="DELETE t FROM encrypt.dbo.t_user as t WHERE t.user_id = 4 
and t.user_name = 'test_user' and t.user_name like 'test_%' and t.password = 
'admin123'  and t.email = '[email protected]'" />
         <output sql="DELETE t FROM dbo.t_user as t WHERE t.user_id = 4 and 
t.user_name_cipher = 'o07WOpLlazifLKU747nd8w==' and t.user_name_like like 
'udtu_%' and t.password_cipher = 'beO6rTHBW9jmVeSPPb62QA=='  and t.email_cipher 
= 'zclI1Wk2uaVYHyNckTRYzA=='" />
     </rewrite-assertion>
 </rewrite-assertions>
diff --git 
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-projection.xml
 
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-projection.xml
index c83971595a3..5898c838db8 100644
--- 
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-projection.xml
+++ 
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-projection.xml
@@ -63,22 +63,22 @@
     </rewrite-assertion>
     
     <rewrite-assertion 
id="select_with_schema_name_in_shorthand_projection_for_parameters" 
db-types="MySQL">
-        <input sql="SELECT logic_db.t_account.* FROM t_account WHERE 
account_id = ? AND certificate_number = ? AND certificate_number LIKE ?" 
parameters="100, 200, 300" />
+        <input sql="SELECT encrypt.t_account.* FROM t_account WHERE account_id 
= ? AND certificate_number = ? AND certificate_number LIKE ?" parameters="100, 
200, 300" />
         <output sql="SELECT t_account.`account_id`, 
t_account.`cipher_certificate_number` AS `certificate_number`, 
t_account.`cipher_password` AS `password`, t_account.`cipher_amount` AS 
`amount` FROM t_account WHERE account_id = ? AND 
assisted_query_certificate_number = ? AND like_query_certificate_number LIKE ?" 
parameters="100, assisted_query_200, like_query_300" />
     </rewrite-assertion>
     
     <rewrite-assertion 
id="select_with_schema_name_in_shorthand_projection_for_literals" 
db-types="MySQL">
-        <input sql="SELECT logic_db.t_account.* FROM t_account WHERE 
account_id = 100 AND certificate_number = 200 AND certificate_number LIKE 300" 
/>
+        <input sql="SELECT encrypt.t_account.* FROM t_account WHERE account_id 
= 100 AND certificate_number = 200 AND certificate_number LIKE 300" />
         <output sql="SELECT t_account.`account_id`, 
t_account.`cipher_certificate_number` AS `certificate_number`, 
t_account.`cipher_password` AS `password`, t_account.`cipher_amount` AS 
`amount` FROM t_account WHERE account_id = 100 AND 
assisted_query_certificate_number = 'assisted_query_200' AND 
like_query_certificate_number LIKE 'like_query_300'" />
     </rewrite-assertion>
     
     <rewrite-assertion 
id="select_with_schema_name_in_column_projection_for_parameters" 
db-types="MySQL">
-        <input sql="SELECT logic_db.t_account.account_id FROM t_account WHERE 
account_id = ?" parameters="100" />
+        <input sql="SELECT encrypt.t_account.account_id FROM t_account WHERE 
account_id = ?" parameters="100" />
         <output sql="SELECT t_account.account_id FROM t_account WHERE 
account_id = ?" parameters="100" />
     </rewrite-assertion>
     
     <rewrite-assertion 
id="select_with_schema_name_in_column_projection_for_literals" db-types="MySQL">
-        <input sql="SELECT logic_db.t_account.account_id FROM t_account WHERE 
account_id = 100" />
+        <input sql="SELECT encrypt.t_account.account_id FROM t_account WHERE 
account_id = 100" />
         <output sql="SELECT t_account.account_id FROM t_account WHERE 
account_id = 100" />
     </rewrite-assertion>
 
diff --git 
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-where.xml
 
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-where.xml
index 7e244df8ec7..0deb537d050 100644
--- 
a/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-where.xml
+++ 
b/test/it/rewriter/src/test/resources/scenario/encrypt/case/query-with-cipher/dml/select/select-where.xml
@@ -103,4 +103,9 @@
         <input sql="SELECT * FROM dbo.t_user"/>
         <output sql="SELECT t_user.[user_id], t_user.[user_name_cipher] AS 
[user_name], t_user.[password_cipher] AS [password], t_user.[email_cipher] AS 
[email], t_user.[user_telephone_cipher] AS [telephone], t_user.[creation_date] 
FROM dbo.t_user"/>
     </rewrite-assertion>
+
+    <rewrite-assertion id="select_from_user_with_schema_and_database" 
db-types="SQLServer">
+        <input sql="SELECT * FROM encrypt.dbo.t_user"/>
+        <output sql="SELECT t_user.[user_id], t_user.[user_name_cipher] AS 
[user_name], t_user.[password_cipher] AS [password], t_user.[email_cipher] AS 
[email], t_user.[user_telephone_cipher] AS [telephone], t_user.[creation_date] 
FROM dbo.t_user"/>
+    </rewrite-assertion>
 </rewrite-assertions>
diff --git 
a/test/it/rewriter/src/test/resources/scenario/encrypt/config/query-with-cipher.yaml
 
b/test/it/rewriter/src/test/resources/scenario/encrypt/config/query-with-cipher.yaml
index 40a27d8c5fd..c0ee0ebf2cf 100644
--- 
a/test/it/rewriter/src/test/resources/scenario/encrypt/config/query-with-cipher.yaml
+++ 
b/test/it/rewriter/src/test/resources/scenario/encrypt/config/query-with-cipher.yaml
@@ -19,6 +19,8 @@ dataSources:
   encrypt_ds:
     dataSourceClassName: 
org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource
 
+databaseName: encrypt
+
 rules:
 - !ENCRYPT
   tables:

Reply via email to