You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2020/10/22 13:22:20 UTC
[shardingsphere] branch master updated: Create SQLParsedResultCache
(#7893)
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 a5600f6 Create SQLParsedResultCache (#7893)
a5600f6 is described below
commit a5600f60a333312b2f24579632f0a76dc7470528
Author: Juan Pan(Trista) <pa...@apache.org>
AuthorDate: Thu Oct 22 21:21:45 2020 +0800
Create SQLParsedResultCache (#7893)
---
.../sql/parser/engine/SQLParsedResultCache.java | 23 ++++++++---
.../parser/engine/ast/ASTSQLParsedResultCache.java | 48 ----------------------
.../sql/parser/engine/ast/ASTSQLParserEngine.java | 3 +-
.../standard/StandardSQLParsedResultCache.java | 48 ----------------------
.../standard/StandardSQLParserEngine.java | 5 ++-
...acheTest.java => SQLParsedResultCacheTest.java} | 10 ++---
6 files changed, 27 insertions(+), 110 deletions(-)
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/SQLParsedResultCache.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/SQLParsedResultCache.java
index 8bcd20e..2b59d50 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/SQLParsedResultCache.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/SQLParsedResultCache.java
@@ -17,20 +17,27 @@
package org.apache.shardingsphere.sql.parser.engine;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+
import java.util.Optional;
/**
- * SQL parsed result cache.
+ * Standard SQL parsed result cache.
*/
-public interface SQLParsedResultCache<T> {
+public final class SQLParsedResultCache<T> {
+
+ private final Cache<String, T> cache = CacheBuilder.newBuilder().softValues().initialCapacity(2000).maximumSize(65535).build();
/**
* Put SQL and parsed result into cache.
- *
+ *
* @param sql SQL
* @param parsedResult parsed result
*/
- void put(String sql, T parsedResult);
+ public void put(final String sql, final T parsedResult) {
+ cache.put(sql, parsedResult);
+ }
/**
* Get parsed result.
@@ -38,10 +45,14 @@ public interface SQLParsedResultCache<T> {
* @param sql SQL
* @return parsed result
*/
- Optional<T> get(String sql);
+ public Optional<T> get(final String sql) {
+ return Optional.ofNullable(cache.getIfPresent(sql));
+ }
/**
* Clear cache.
*/
- void clear();
+ public synchronized void clear() {
+ cache.invalidateAll();
+ }
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/ast/ASTSQLParsedResultCache.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/ast/ASTSQLParsedResultCache.java
deleted file mode 100644
index 6df879c..0000000
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/ast/ASTSQLParsedResultCache.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.sql.parser.engine.ast;
-
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import org.antlr.v4.runtime.tree.ParseTree;
-import org.apache.shardingsphere.sql.parser.engine.SQLParsedResultCache;
-
-import java.util.Optional;
-
-/**
- * AST SQL parsed result cache.
- */
-public final class ASTSQLParsedResultCache implements SQLParsedResultCache<ParseTree> {
-
- private final Cache<String, ParseTree> cache = CacheBuilder.newBuilder().softValues().initialCapacity(2000).maximumSize(65535).build();
-
- @Override
- public void put(final String sql, final ParseTree parseTree) {
- cache.put(sql, parseTree);
- }
-
- @Override
- public Optional<ParseTree> get(final String sql) {
- return Optional.ofNullable(cache.getIfPresent(sql));
- }
-
- @Override
- public synchronized void clear() {
- cache.invalidateAll();
- }
-}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/ast/ASTSQLParserEngine.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/ast/ASTSQLParserEngine.java
index 185bbec..9952e1b 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/ast/ASTSQLParserEngine.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/ast/ASTSQLParserEngine.java
@@ -21,6 +21,7 @@ import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.tree.ParseTree;
import org.apache.shardingsphere.sql.parser.core.parser.SQLParserExecutor;
import org.apache.shardingsphere.sql.parser.engine.SQLParserEngine;
+import org.apache.shardingsphere.sql.parser.engine.SQLParsedResultCache;
import java.util.Optional;
@@ -32,7 +33,7 @@ public final class ASTSQLParserEngine implements SQLParserEngine<ParseTree> {
private final String databaseTypeName;
- private final ASTSQLParsedResultCache cache = new ASTSQLParsedResultCache();
+ private final SQLParsedResultCache<ParseTree> cache = new SQLParsedResultCache<>();
@Override
public ParseTree parse(final String sql, final boolean useCache) {
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/statement/standard/StandardSQLParsedResultCache.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/statement/standard/StandardSQLParsedResultCache.java
deleted file mode 100644
index 6b68019..0000000
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/statement/standard/StandardSQLParsedResultCache.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.sql.parser.engine.statement.standard;
-
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import org.apache.shardingsphere.sql.parser.engine.SQLParsedResultCache;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
-
-import java.util.Optional;
-
-/**
- * Standard SQL parsed result cache.
- */
-public final class StandardSQLParsedResultCache implements SQLParsedResultCache<SQLStatement> {
-
- private final Cache<String, SQLStatement> cache = CacheBuilder.newBuilder().softValues().initialCapacity(2000).maximumSize(65535).build();
-
- @Override
- public void put(final String sql, final SQLStatement sqlStatement) {
- cache.put(sql, sqlStatement);
- }
-
- @Override
- public Optional<SQLStatement> get(final String sql) {
- return Optional.ofNullable(cache.getIfPresent(sql));
- }
-
- @Override
- public synchronized void clear() {
- cache.invalidateAll();
- }
-}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/statement/standard/StandardSQLParserEngine.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/statement/standard/StandardSQLParserEngine.java
index 465ccd3..28ea534 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/statement/standard/StandardSQLParserEngine.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/engine/statement/standard/StandardSQLParserEngine.java
@@ -20,10 +20,11 @@ package org.apache.shardingsphere.sql.parser.engine.statement.standard;
import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.tree.ParseTree;
import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitorType;
+import org.apache.shardingsphere.sql.parser.core.parser.SQLParserExecutor;
import org.apache.shardingsphere.sql.parser.core.visitor.SQLVisitorFactory;
import org.apache.shardingsphere.sql.parser.core.visitor.SQLVisitorRule;
+import org.apache.shardingsphere.sql.parser.engine.SQLParsedResultCache;
import org.apache.shardingsphere.sql.parser.engine.statement.StatementSQLParserEngine;
-import org.apache.shardingsphere.sql.parser.core.parser.SQLParserExecutor;
import org.apache.shardingsphere.sql.parser.hook.ParsingHookRegistry;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -37,7 +38,7 @@ public final class StandardSQLParserEngine implements StatementSQLParserEngine {
private final String databaseTypeName;
- private final StandardSQLParsedResultCache cache = new StandardSQLParsedResultCache();
+ private final SQLParsedResultCache<SQLStatement> cache = new SQLParsedResultCache<>();
private final ParsingHookRegistry parsingHookRegistry = ParsingHookRegistry.getInstance();
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/cache/StandardSQLParsedResultCacheTest.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/cache/SQLParsedResultCacheTest.java
similarity index 83%
rename from shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/cache/StandardSQLParsedResultCacheTest.java
rename to shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/cache/SQLParsedResultCacheTest.java
index 16bdcdd..cb576ec 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/cache/StandardSQLParsedResultCacheTest.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/cache/SQLParsedResultCacheTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.sql.parser.cache;
-import org.apache.shardingsphere.sql.parser.engine.statement.standard.StandardSQLParsedResultCache;
+import org.apache.shardingsphere.sql.parser.engine.SQLParsedResultCache;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLSelectStatement;
import org.junit.Test;
@@ -27,11 +27,11 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
-public final class StandardSQLParsedResultCacheTest {
+public final class SQLParsedResultCacheTest {
@Test
public void assertGetSQLStatementWithinCache() {
- StandardSQLParsedResultCache actual = new StandardSQLParsedResultCache();
+ SQLParsedResultCache actual = new SQLParsedResultCache();
SQLStatement selectStatement = new MySQLSelectStatement();
actual.put("SELECT 1", selectStatement);
assertTrue(actual.get("SELECT 1").isPresent());
@@ -40,7 +40,7 @@ public final class StandardSQLParsedResultCacheTest {
@Test
public void assertGetSQLStatementWithoutCache() {
- StandardSQLParsedResultCache actual = new StandardSQLParsedResultCache();
+ SQLParsedResultCache actual = new SQLParsedResultCache();
SQLStatement selectStatement = new MySQLSelectStatement();
actual.put("SELECT 1", selectStatement);
assertFalse(actual.get("SELECT 2").isPresent());
@@ -48,7 +48,7 @@ public final class StandardSQLParsedResultCacheTest {
@Test
public void assertClear() {
- StandardSQLParsedResultCache actual = new StandardSQLParsedResultCache();
+ SQLParsedResultCache actual = new SQLParsedResultCache();
SQLStatement selectStatement = new MySQLSelectStatement();
actual.put("SELECT 1", selectStatement);
actual.clear();