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 fe9734d #6294 oracle support select for update (#6538)
fe9734d is described below
commit fe9734dad48b92b6acfcc92c6c9adebee76a62b9
Author: zangyk <[email protected]>
AuthorDate: Fri Jul 31 10:45:18 2020 +0800
#6294 oracle support select for update (#6538)
---
.../src/main/antlr4/imports/oracle/DMLStatement.g4 | 6 +++++-
.../sql/parser/oracle/visitor/impl/OracleDMLVisitor.java | 8 ++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
index 6425b4c..4a6f1d7 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
@@ -109,7 +109,7 @@ unionClause
;
selectClause
- : SELECT duplicateSpecification? projections fromClause? whereClause?
groupByClause? havingClause? orderByClause?
+ : SELECT duplicateSpecification? projections fromClause? whereClause?
groupByClause? havingClause? orderByClause? lockClause?
;
duplicateSpecification
@@ -176,3 +176,7 @@ havingClause
subquery
: LP_ unionClause RP_
;
+
+lockClause
+ : FOR UPDATE
+ ;
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/impl/OracleDMLVisitor.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/impl/OracleDMLVisitor.java
index 970b0d8..ce29bee 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/impl/OracleDMLVisitor.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/impl/OracleDMLVisitor.java
@@ -19,12 +19,11 @@ package
org.apache.shardingsphere.sql.parser.oracle.visitor.impl;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.DMLVisitor;
-import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnNameContext;
-import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SubqueryContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AliasContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AssignmentContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AssignmentValueContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AssignmentValuesContext;
+import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnNameContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnNamesContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DeleteContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DuplicateSpecificationContext;
@@ -45,6 +44,7 @@ import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.Select
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SelectContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SetAssignmentsClauseContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SingleTableClauseContext;
+import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SubqueryContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TableFactorContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TableNameContext;
import
org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TableReferenceContext;
@@ -78,6 +78,7 @@ import
org.apache.shardingsphere.sql.parser.sql.segment.dml.order.GroupBySegment
import
org.apache.shardingsphere.sql.parser.sql.segment.dml.order.OrderBySegment;
import
org.apache.shardingsphere.sql.parser.sql.segment.dml.order.item.OrderByItemSegment;
import
org.apache.shardingsphere.sql.parser.sql.segment.dml.predicate.AndPredicate;
+import
org.apache.shardingsphere.sql.parser.sql.segment.dml.predicate.LockSegment;
import
org.apache.shardingsphere.sql.parser.sql.segment.dml.predicate.OrPredicateSegment;
import
org.apache.shardingsphere.sql.parser.sql.segment.dml.predicate.PredicateSegment;
import
org.apache.shardingsphere.sql.parser.sql.segment.dml.predicate.WhereSegment;
@@ -272,6 +273,9 @@ public final class OracleDMLVisitor extends OracleVisitor
implements DMLVisitor
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
+ if (null != ctx.lockClause()) {
+ result.setLock((LockSegment) visit(ctx.lockClause()));
+ }
return result;
}