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 {