You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/08/03 11:52:57 UTC
[shardingsphere] branch master updated: Reduce cost of logical
operator match (#11620)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 14bf4a0 Reduce cost of logical operator match (#11620)
14bf4a0 is described below
commit 14bf4a0b691d8364768374ed32816a14f88dbfb5
Author: 吴伟杰 <wu...@apache.org>
AuthorDate: Tue Aug 3 19:52:29 2021 +0800
Reduce cost of logical operator match (#11620)
---
.../sql/common/constant/LogicalOperator.java | 29 +++++++++++++++-------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/LogicalOperator.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/LogicalOperator.java
index 75a12a9..be8b6f2 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/LogicalOperator.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/constant/LogicalOperator.java
@@ -17,23 +17,34 @@
package org.apache.shardingsphere.sql.parser.sql.common.constant;
-import java.util.Arrays;
-import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Optional;
-import java.util.TreeSet;
/**
* Logical operator.
*/
public enum LogicalOperator {
- AND("AND", "&&"),
- OR("OR", "||");
+ AND, OR;
- private final Collection<String> texts = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
+ private static final Map<String, LogicalOperator> MAPS = new HashMap<>(16, 1);
- LogicalOperator(final String... texts) {
- this.texts.addAll(Arrays.asList(texts));
+ static {
+ MAPS.put("and", AND);
+ MAPS.put("And", AND);
+ MAPS.put("aNd", AND);
+ MAPS.put("anD", AND);
+ MAPS.put("ANd", AND);
+ MAPS.put("AnD", AND);
+ MAPS.put("aND", AND);
+ MAPS.put("AND", AND);
+ MAPS.put("&&", AND);
+ MAPS.put("or", OR);
+ MAPS.put("Or", OR);
+ MAPS.put("oR", OR);
+ MAPS.put("OR", OR);
+ MAPS.put("||", OR);
}
/**
@@ -43,6 +54,6 @@ public enum LogicalOperator {
* @return logical operator value
*/
public static Optional<LogicalOperator> valueFrom(final String text) {
- return Arrays.stream(values()).filter(each -> each.texts.contains(text)).findFirst();
+ return Optional.ofNullable(MAPS.get(text));
}
}