This is an automated email from the ASF dual-hosted git repository.
chengzhang 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 139cc23fdd2 Support table alias in insert statement in Oracle. (#36202)
139cc23fdd2 is described below
commit 139cc23fdd2fc44b466c053b1225c8fe3e5f173e
Author: Cong Hu <[email protected]>
AuthorDate: Thu Aug 7 17:25:15 2025 +0800
Support table alias in insert statement in Oracle. (#36202)
* Support table alias in insert statement in Oracle.
* Add release note.
---
RELEASE-NOTES.md | 1 +
.../oracle/src/main/antlr4/imports/oracle/DMLStatement.g4 | 2 ++
.../visitor/statement/type/OracleDMLStatementVisitor.java | 11 ++++++++---
3 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 11529ba508d..a6e7745cb4d 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -125,6 +125,7 @@
1. Encrypt: Use EncryptDerivedColumnSuffix to enhance encrypt table subquery
rewrite logic - [#34829](https://github.com/apache/shardingsphere/pull/34829)
1. Encrypt: Add quotes to encrypt rewrite derived columns -
[#34950](https://github.com/apache/shardingsphere/pull/34950)
1. Encrypt: Add support for NOT LIKE operator in encryption -
[#35984](https://github.com/apache/shardingsphere/pull/35984)
+1. SQL Parser: Support table alias in insert statement in Oracle -
[#36202](https://github.com/apache/shardingsphere/pull/36202)
### Bug Fixes
diff --git
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
index e89dc48668c..957031fbbc2 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
@@ -66,7 +66,9 @@ dmlTableExprClause
dmlTableClause
: tableName (partitionExtClause | AT_ dbLink)?
+ | tableName (partitionExtClause | AT_ dbLink)? AS? alias
| (viewName | materializedViewName) (AT_ dbLink)?
+ | (viewName | materializedViewName) (AT_ dbLink)? AS? alias
;
partitionExtClause
diff --git
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
index 6759cabe64f..58440e9e05c 100644
---
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
+++
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
@@ -503,17 +503,22 @@ public final class OracleDMLStatementVisitor extends
OracleStatementVisitor impl
@Override
public ASTNode visitDmlTableClause(final DmlTableClauseContext ctx) {
+ SimpleTableSegment result;
if (null != ctx.AT_() && null != ctx.dbLink()) {
- SimpleTableSegment result = new SimpleTableSegment(new
TableNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new
IdentifierValue(ctx.tableName().name().getText())));
+ result = new SimpleTableSegment(new
TableNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new
IdentifierValue(ctx.tableName().name().getText())));
if (null != ctx.tableName().owner()) {
result.setOwner(
new
OwnerSegment(ctx.tableName().owner().start.getStartIndex(),
ctx.tableName().owner().stop.getStopIndex(), (IdentifierValue)
visit(ctx.tableName().owner().identifier())));
}
result.setAt(new IdentifierValue(ctx.AT_().getText()));
result.setDbLink(new
IdentifierValue(ctx.dbLink().identifier(0).getText()));
- return result;
+ } else {
+ result = (SimpleTableSegment) visit(ctx.tableName());
}
- return visit(ctx.tableName());
+ if (null != ctx.alias()) {
+ result.setAlias((AliasSegment) visit(ctx.alias()));
+ }
+ return result;
}
@Override