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 684605b0a1d Fix merge exception without encrypt rule in database 
(#33708)
684605b0a1d is described below

commit 684605b0a1d39fc45729b02b240587a8d5535c2e
Author: ZhangCheng <[email protected]>
AuthorDate: Mon Nov 18 18:42:54 2024 +0800

    Fix merge exception without encrypt rule in database (#33708)
    
    * Fix merge exception without encrypt rule in database
    
    * Fix merge exception without encrypt rule in database
---
 RELEASE-NOTES.md                                                    | 1 +
 .../shardingsphere/encrypt/merge/dql/EncryptMergedResult.java       | 6 +++---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 07d2a65984f..8620c4dccfb 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -32,6 +32,7 @@
 1. Sharding: Remove ShardingRouteAlgorithmException check logic temporarily to 
support different actual table name config - 
[#33367](https://github.com/apache/shardingsphere/pull/33367)
 1. Sharding: Fix SQL COUNT with GROUP BY to prevent incorrect row returns - 
[#33380](https://github.com/apache/shardingsphere/pull/33380)
 1. Sharding: Fix avg, sum, min, max function return empty data when no query 
result return - [#33449](https://github.com/apache/shardingsphere/pull/33449)
+1. Encrypt: Fix merge exception without encrypt rule in database - 
[#33708](https://github.com/apache/shardingsphere/pull/33708)
 
 ### Change Logs
 
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
index c36d8075c8e..654378c557f 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java
@@ -65,12 +65,12 @@ public final class EncryptMergedResult implements 
MergedResult {
         ShardingSphereDatabase database = 
metaData.containsDatabase(columnProjection.get().getColumnBoundInfo().getOriginalDatabase().getValue())
                 ? 
metaData.getDatabase(columnProjection.get().getColumnBoundInfo().getOriginalDatabase().getValue())
                 : this.database;
-        EncryptRule rule = 
database.getRuleMetaData().getSingleRule(EncryptRule.class);
-        if (!rule.findEncryptTable(originalTableName).map(optional -> 
optional.isEncryptColumn(originalColumnName)).orElse(false)) {
+        Optional<EncryptRule> rule = 
database.getRuleMetaData().findSingleRule(EncryptRule.class);
+        if (!rule.isPresent() || 
!rule.get().findEncryptTable(originalTableName).map(optional -> 
optional.isEncryptColumn(originalColumnName)).orElse(false)) {
             return mergedResult.getValue(columnIndex, type);
         }
         Object cipherValue = mergedResult.getValue(columnIndex, Object.class);
-        EncryptColumn encryptColumn = 
rule.getEncryptTable(originalTableName).getEncryptColumn(originalColumnName);
+        EncryptColumn encryptColumn = 
rule.get().getEncryptTable(originalTableName).getEncryptColumn(originalColumnName);
         String schemaName = 
selectStatementContext.getTablesContext().getSchemaName()
                 .orElseGet(() -> new 
DatabaseTypeRegistry(selectStatementContext.getDatabaseType()).getDefaultSchemaName(database.getName()));
         try {

Reply via email to