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 b2d181a4cf6 add support of ALTER RESOURCE COST for Oracle (#21185)
b2d181a4cf6 is described below
commit b2d181a4cf6fedc9725e0cedd33284878208bf5f
Author: tianhao960 <[email protected]>
AuthorDate: Mon Sep 26 15:14:00 2022 +0800
add support of ALTER RESOURCE COST for Oracle (#21185)
* add support of ALTER RESOURCE COST
* add support of ALTER RESOURCE COST #2
* add support of ALTER RESOURCE COST #3
* add support of ALTER RESOURCE COST for Oracle #4
---
.../src/main/antlr4/imports/oracle/BaseRule.g4 | 2 +-
.../imports/oracle/DALStatement.g4} | 21 +++++-------------
.../main/antlr4/imports/oracle/OracleKeyword.g4 | 18 +++++++++++++++-
.../sql/parser/autogen/OracleStatement.g4 | 3 ++-
.../impl/OracleDALStatementSQLVisitor.java | 8 +++++++
.../core/database/visitor/SQLVisitorRule.java | 2 ++
.../dal/OracleAlterResourceCostStatement.java} | 25 +++++++++++-----------
.../src/main/resources/case/dal/alter.xml | 2 ++
.../src/main/resources/sql/supported/dal/alter.xml | 2 ++
9 files changed, 51 insertions(+), 32 deletions(-)
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
index 9132adff4fb..71d4fed59b6 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
@@ -162,7 +162,7 @@ unreservedWord
| ENFORCED | TRUSTED | ID | SYNCHRONOUS | ASYNCHRONOUS | REPEAT | FEATURE
| STATEMENT | CLAUSE | UNPLUG
| HOST | PORT | EVERY | MINUTES | HOURS | NORELOCATE | SAVE | DISCARD |
APPLICATION | INSTALL
| MINIMUM | VERSION | UNINSTALL | COMPATIBILITY | MATERIALIZE | SUBTYPE |
RECORD | CONSTANT | CURSOR
- | OTHERS | EXCEPTION
+ | OTHERS | EXCEPTION | CPU_PER_SESSION | CONNECT_TIME |
LOGICAL_READS_PER_SESSION | PRIVATE_SGA
;
schemaName
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DALStatement.g4
similarity index 57%
copy from
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
copy to
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DALStatement.g4
index 6c91f69c50f..682d7ea1673 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DALStatement.g4
@@ -15,21 +15,10 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl;
+grammar DALStatement;
-import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
-import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
+import BaseRule;
-import java.util.Properties;
-
-/**
- * DAL Statement SQL visitor for Oracle.
- */
-@NoArgsConstructor
-public final class OracleDALStatementSQLVisitor extends
OracleStatementSQLVisitor implements DALSQLVisitor, SQLStatementVisitor {
-
- public OracleDALStatementSQLVisitor(final Properties props) {
- super(props);
- }
-}
+alterResourceCost
+ : ALTER RESOURCE COST ((CPU_PER_SESSION | CONNECT_TIME |
LOGICAL_READS_PER_SESSION | PRIVATE_SGA) INTEGER_)+
+ ;
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
index 7489a37b0fd..2a7e0dc4238 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
@@ -3062,4 +3062,20 @@ OTHERS
EXCEPTION
: E X C E P T I O N
- ;
\ No newline at end of file
+ ;
+
+CPU_PER_SESSION
+ : C P U UL_ P E R UL_ S E S S I O N
+ ;
+
+CONNECT_TIME
+ : C O N N E C T UL_ T I M E
+ ;
+
+LOGICAL_READS_PER_SESSION
+ : L O G I C A L UL_ R E A D S UL_ P E R UL_ S E S S I O N
+ ;
+
+PRIVATE_SGA
+ : P R I V A T E UL_ S G A
+ ;
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
index 0afe26ed8ce..0a6a3b1f0d3 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
@@ -17,7 +17,7 @@
grammar OracleStatement;
-import DMLStatement, TCLStatement, DCLStatement, StoreProcedure;
+import DMLStatement, TCLStatement, DCLStatement, DALStatement, StoreProcedure;
execute
: (select
@@ -132,5 +132,6 @@ execute
| dropMaterializedView
| dropMaterializedViewLog
| dropMaterializedZonemap
+ | alterResourceCost
) SEMI_?
;
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
index 6c91f69c50f..888b13027d8 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
@@ -18,8 +18,11 @@
package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl;
import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
import
org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
+import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterResourceCostContext;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dal.OracleAlterResourceCostStatement;
import java.util.Properties;
@@ -32,4 +35,9 @@ public final class OracleDALStatementSQLVisitor extends
OracleStatementSQLVisito
public OracleDALStatementSQLVisitor(final Properties props) {
super(props);
}
+
+ @Override
+ public ASTNode visitAlterResourceCost(final AlterResourceCostContext ctx) {
+ return new OracleAlterResourceCostStatement();
+ }
}
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
index bfd3cd6ff6d..36a049787c8 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
@@ -430,6 +430,8 @@ public enum SQLVisitorRule {
CREATE_RESOURCE_GROUP("CreateResourceGroup", SQLStatementType.DAL),
+ ALTER_RESOURCE_COST("AlterResourceCost", SQLStatementType.DAL),
+
SET_RESOURCE_GROUP("SetResourceGroup", SQLStatementType.DAL),
BINLOG("Binlog", SQLStatementType.DAL),
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/dal/OracleAlterResourceCostStatement.java
similarity index 56%
copy from
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
copy to
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/dal/OracleAlterResourceCostStatement.java
index 6c91f69c50f..315b2d5af33 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDALStatementSQLVisitor.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/dal/OracleAlterResourceCostStatement.java
@@ -15,21 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.impl;
+package org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dal;
-import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVisitor;
-import org.apache.shardingsphere.sql.parser.api.visitor.type.DALSQLVisitor;
-
-import java.util.Properties;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.OracleStatement;
/**
- * DAL Statement SQL visitor for Oracle.
+ * Oracle alter resource cost statement.
*/
-@NoArgsConstructor
-public final class OracleDALStatementSQLVisitor extends
OracleStatementSQLVisitor implements DALSQLVisitor, SQLStatementVisitor {
-
- public OracleDALStatementSQLVisitor(final Properties props) {
- super(props);
- }
+@Getter
+@Setter
+@ToString(callSuper = true)
+public final class OracleAlterResourceCostStatement extends
AbstractSQLStatement implements DALStatement, OracleStatement {
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dal/alter.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dal/alter.xml
index f909e100e46..b7c04b90ccc 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dal/alter.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dal/alter.xml
@@ -20,4 +20,6 @@
<alter-resource-group sql-case-id="alter_resource_group">
<group name="rg" start-index="21" stop-index="22" />
</alter-resource-group>
+ <alter-resource
sql-case-id="alter_resource_cost_cpu_time"></alter-resource>
+ <alter-resource sql-case-id="alter_resource_cost_cpu"></alter-resource>
</sql-parser-test-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dal/alter.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dal/alter.xml
index 3f2dec18610..2a15133ec14 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dal/alter.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dal/alter.xml
@@ -18,4 +18,6 @@
<sql-cases>
<sql-case id="alter_resource_group" value="ALTER RESOURCE GROUP rg"
db-types="MySQL" />
+ <sql-case id="alter_resource_cost_cpu_time" value="ALTER RESOURCE COST
CPU_PER_SESSION 100 CONNECT_TIME 1" db-types="Oracle" />
+ <sql-case id="alter_resource_cost_cpu" value="ALTER RESOURCE COST
CPU_PER_SESSION 100" db-types="Oracle" />
</sql-cases>