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 ebcc6ddceea Add encryption rewrite test of the SQLServer delete 
statement (#30574)
ebcc6ddceea is described below

commit ebcc6ddceea61dc614278f4b9604bb07fdaf2895
Author: yydeng626 <yydeng...@gmail.com>
AuthorDate: Fri Mar 22 09:10:02 2024 +0800

    Add encryption rewrite test of the SQLServer delete statement (#30574)
    
    * Add encryption rewrite test of the SQLServer delete statement
    
    * remove schema test case
    
    * optimize the database name value logic
    add encrypt with database and schema test case
---
 .../test/it/rewrite/engine/SQLRewriterIT.java        | 12 ++++++------
 .../case/query-with-cipher/dml/delete/delete.xml     | 20 ++++++++++++++++++++
 .../resources/scenario/sharding/case/dml/select.xml  |  2 +-
 3 files changed, 27 insertions(+), 7 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 5aeadcb6728..e154914c23d 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
@@ -133,18 +133,18 @@ public abstract class SQLRewriterIT {
         SQLStatement sqlStatement = sqlStatementParserEngine.parse(sql, false);
         Collection<ShardingSphereRule> databaseRules = 
createDatabaseRules(databaseConfig, schemaName, sqlStatement, databaseType);
         RuleMetaData databaseRuleMetaData = new RuleMetaData(databaseRules);
-        ShardingSphereDatabase database = new 
ShardingSphereDatabase(schemaName, databaseType, resourceMetaData, 
databaseRuleMetaData, mockSchemas(schemaName));
+        ShardingSphereDatabase database = new 
ShardingSphereDatabase(DefaultDatabase.LOGIC_NAME, databaseType, 
resourceMetaData, databaseRuleMetaData, mockSchemas(schemaName));
         Map<String, ShardingSphereDatabase> databases = new HashMap<>(2, 1F);
-        databases.put(schemaName, database);
+        databases.put(database.getName(), 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, 
schemaName, hintValueContext).bind(sqlStatement, Collections.emptyList());
+        SQLStatementContext sqlStatementContext = new SQLBindEngine(metaData, 
database.getName(), hintValueContext).bind(sqlStatement, 
Collections.emptyList());
         if (sqlStatementContext instanceof ParameterAware) {
             ((ParameterAware) 
sqlStatementContext).setUpParameters(testParams.getInputParameters());
         }
         if (sqlStatementContext instanceof CursorDefinitionAware) {
-            ((CursorDefinitionAware) 
sqlStatementContext).setUpCursorDefinition(createCursorDefinition(schemaName, 
metaData, sqlStatementParserEngine));
+            ((CursorDefinitionAware) 
sqlStatementContext).setUpCursorDefinition(createCursorDefinition(database.getName(),
 metaData, sqlStatementParserEngine));
         }
         QueryContext queryContext = new QueryContext(sqlStatementContext, sql, 
testParams.getInputParameters(), hintValueContext);
         ConfigurationProperties props = new 
ConfigurationProperties(rootConfig.getProps());
@@ -174,9 +174,9 @@ public abstract class SQLRewriterIT {
         return result;
     }
     
-    private CursorStatementContext createCursorDefinition(final String 
schemaName, final ShardingSphereMetaData metaData, final 
SQLStatementParserEngine sqlStatementParserEngine) {
+    private CursorStatementContext createCursorDefinition(final String 
databaseName, 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, 
schemaName, new HintValueContext()).bind(sqlStatement, Collections.emptyList());
+        return (CursorStatementContext) new SQLBindEngine(metaData, 
databaseName, 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 99ef9e65388..657d388372f 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
@@ -46,4 +46,24 @@
         <input sql="DELETE t FROM t_account t WHERE t.account_id = 1 AND 
t.password = 'aaa' AND t.password like 'aaa' AND t.amount = 1000 AND t.status = 
'OK'" />
         <output sql="DELETE t FROM t_account t WHERE t.account_id = 1 AND 
t.assisted_query_password = 'assisted_query_aaa' AND t.like_query_password like 
'like_query_aaa' AND t.cipher_amount = 'encrypt_1000' AND t.status = 'OK'" />
     </rewrite-assertion>
+    
+    <rewrite-assertion id="delete_user_for_parameters" db-types="SQLServer">
+        <input sql="DELETE FROM t_user WHERE user_id = ? and user_name = ? and 
user_name like ? and password = ?  and email = ?" parameters="1, test_user, 
test_%, admin123, ad...@gmail.com" />
+        <output sql="DELETE FROM t_user WHERE user_id = ? and user_name_cipher 
= ? and user_name_like like ? and password_cipher = ?  and email_cipher = ?" 
parameters="1, o07WOpLlazifLKU747nd8w==, udtu_%, beO6rTHBW9jmVeSPPb62QA==, 
zclI1Wk2uaVYHyNckTRYzA==" />
+    </rewrite-assertion>
+    
+    <rewrite-assertion id="delete_user_for_literals" db-types="SQLServer">
+        <input sql="DELETE FROM t_user WHERE user_id = 2 and user_name = 
'test_user' and user_name like 'test_%' and password = 'admin123'  and email = 
'ad...@gmail.com'" />
+        <output sql="DELETE FROM t_user WHERE user_id = 2 and user_name_cipher 
= 'o07WOpLlazifLKU747nd8w==' and user_name_like like 'udtu_%' and 
password_cipher = 'beO6rTHBW9jmVeSPPb62QA=='  and email_cipher = 
'zclI1Wk2uaVYHyNckTRYzA=='" />
+    </rewrite-assertion>
+    
+    <rewrite-assertion id="delete_user_with_alias_for_literals" 
db-types="SQLServer">
+        <input sql="DELETE t FROM t_user as t WHERE t.user_id = 3 and 
t.user_name = 'test_user' and t.user_name like 'test_%' and t.password = 
'admin123'  and t.email = 'ad...@gmail.com'" />
+        <output sql="DELETE t FROM t_user as t WHERE t.user_id = 3 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-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 = 'ad...@gmail.com'" />
+        <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/sharding/case/dml/select.xml 
b/test/it/rewriter/src/test/resources/scenario/sharding/case/dml/select.xml
index d72d7f1503e..1ec3880f2e9 100644
--- a/test/it/rewriter/src/test/resources/scenario/sharding/case/dml/select.xml
+++ b/test/it/rewriter/src/test/resources/scenario/sharding/case/dml/select.xml
@@ -543,7 +543,7 @@
     </rewrite-assertion>
 
     <rewrite-assertion id="select_with_database_name_and_schema_name_in_table" 
db-types="PostgreSQL,openGauss">
-        <input sql="SELECT account_id FROM public.public.t_account WHERE 
account_id = ?" parameters="100" />
+        <input sql="SELECT account_id FROM logic_db.public.t_account WHERE 
account_id = ?" parameters="100" />
         <output sql="SELECT account_id FROM public.t_account_0 WHERE 
account_id = ?" parameters="100" />
     </rewrite-assertion>
 

Reply via email to