From 120f3f708ae0c2dae0e449b37c184215b923d9b4 Mon Sep 17 00:00:00 2001 From: wenshao Date: Thu, 13 Oct 2011 03:10:28 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0OracleExpr=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@950 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../sql/dialect/oracle/ast/OracleHint.java | 2 +- .../dialect/oracle/ast/OracleSQLObject.java | 33 ++--------------- .../oracle/ast/OracleSQLObjectImpl.java | 36 +++++++++++++++++++ .../oracle/ast/clause/CycleClause.java | 4 +-- .../ast/clause/FlashbackQueryClause.java | 4 +-- .../ast/clause/PartitionExtensionClause.java | 4 +-- .../oracle/ast/clause/SampleClause.java | 4 +-- .../oracle/ast/clause/SearchClause.java | 4 +-- .../ast/clause/SubqueryFactoringClause.java | 6 ++-- .../oracle/ast/expr/OracleAggregateExpr.java | 2 +- .../oracle/ast/expr/OracleAnalytic.java | 2 +- .../ast/expr/OracleAnalyticWindowing.java | 2 +- .../ast/expr/OracleArrayAccessExpr.java | 2 +- .../ast/expr/OracleBinaryDoubleExpr.java | 2 +- .../ast/expr/OracleBinaryFloatExpr.java | 2 +- .../oracle/ast/expr/OracleCursorExpr.java | 2 +- .../oracle/ast/expr/OracleDateExpr.java | 2 +- .../ast/expr/OracleDatetimeLiteralExpr.java | 2 +- .../oracle/ast/expr/OracleDbLinkExpr.java | 2 +- .../dialect/oracle/ast/expr/OracleExpr.java | 9 +++++ .../oracle/ast/expr/OracleExtractExpr.java | 2 +- .../expr/OracleGroupComparisonCondition.java | 2 +- .../ast/expr/OracleGroupingSetsExpr.java | 2 +- .../oracle/ast/expr/OracleIntervalExpr.java | 2 +- .../oracle/ast/expr/OracleIsSetExpr.java | 15 ++++++++ .../oracle/ast/expr/OracleOuterExpr.java | 2 +- .../oracle/ast/expr/OraclePriorExpr.java | 2 +- .../ast/expr/OracleTableCollectionExpr.java | 2 +- .../oracle/ast/expr/OracleTimestampExpr.java | 2 +- .../oracle/ast/stmt/OracleConstraint.java | 4 +-- .../ast/stmt/OracleSelectForUpdate.java | 4 +-- .../OracleSelectHierachicalQueryClause.java | 4 +-- .../oracle/ast/stmt/OracleSelectPivot.java | 4 +-- .../ast/stmt/OracleSelectPivotBase.java | 4 +-- .../ast/stmt/OracleSelectRestriction.java | 4 +-- .../ast/stmt/OracleUpdateSetClause.java | 4 +-- .../ast/stmt/OracleUpdateSetListItem.java | 4 +-- .../bvt/sql/oracle/OracleIsASetTest.java | 24 +++++++++++++ 38 files changed, 134 insertions(+), 79 deletions(-) create mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleSQLObjectImpl.java create mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExpr.java create mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIsSetExpr.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsASetTest.java diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleHint.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleHint.java index 10677cb366..f997200205 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleHint.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleHint.java @@ -17,7 +17,7 @@ package com.alibaba.druid.sql.dialect.oracle.ast; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleHint extends OracleSQLObject { +public class OracleHint extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleSQLObject.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleSQLObject.java index cd2f5ef6ec..3599064e8d 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleSQLObject.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleSQLObject.java @@ -1,36 +1,7 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed 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 com.alibaba.druid.sql.dialect.oracle.ast; -import com.alibaba.druid.sql.ast.SQLObjectImpl; -import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -import com.alibaba.druid.sql.visitor.SQLASTVisitor; +import com.alibaba.druid.sql.ast.SQLObject; -public abstract class OracleSQLObject extends SQLObjectImpl { - private static final long serialVersionUID = 1L; - - public OracleSQLObject(){ - - } - - @Override - protected void accept0(SQLASTVisitor visitor) { - this.accept0((OracleASTVisitor) visitor); - } - - protected abstract void accept0(OracleASTVisitor visitor); +public interface OracleSQLObject extends SQLObject { } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleSQLObjectImpl.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleSQLObjectImpl.java new file mode 100644 index 0000000000..0fe5a37e04 --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleSQLObjectImpl.java @@ -0,0 +1,36 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed 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 com.alibaba.druid.sql.dialect.oracle.ast; + +import com.alibaba.druid.sql.ast.SQLObjectImpl; +import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; + +public abstract class OracleSQLObjectImpl extends SQLObjectImpl implements OracleSQLObject { + + private static final long serialVersionUID = 1L; + + public OracleSQLObjectImpl(){ + + } + + @Override + protected void accept0(SQLASTVisitor visitor) { + this.accept0((OracleASTVisitor) visitor); + } + + protected abstract void accept0(OracleASTVisitor visitor); +} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/CycleClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/CycleClause.java index 8e3a2081bb..ec081f6dea 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/CycleClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/CycleClause.java @@ -4,10 +4,10 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class CycleClause extends OracleSQLObject { +public class CycleClause extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/FlashbackQueryClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/FlashbackQueryClause.java index a2a2272ba4..be58247ccd 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/FlashbackQueryClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/FlashbackQueryClause.java @@ -1,10 +1,10 @@ package com.alibaba.druid.sql.dialect.oracle.ast.clause; import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public abstract class FlashbackQueryClause extends OracleSQLObject { +public abstract class FlashbackQueryClause extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/PartitionExtensionClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/PartitionExtensionClause.java index d4f3d278b3..9c2ed3916a 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/PartitionExtensionClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/PartitionExtensionClause.java @@ -4,10 +4,10 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.sql.ast.SQLName; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class PartitionExtensionClause extends OracleSQLObject { +public class PartitionExtensionClause extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SampleClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SampleClause.java index 7bec641124..a404032f7d 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SampleClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SampleClause.java @@ -1,10 +1,10 @@ package com.alibaba.druid.sql.dialect.oracle.ast.clause; import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class SampleClause extends OracleSQLObject { +public class SampleClause extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SearchClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SearchClause.java index baae4966fc..9a02c04cd6 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SearchClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SearchClause.java @@ -4,11 +4,11 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleOrderByItem; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class SearchClause extends OracleSQLObject { +public class SearchClause extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SubqueryFactoringClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SubqueryFactoringClause.java index e8855d810c..fdc39f9597 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SubqueryFactoringClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SubqueryFactoringClause.java @@ -6,10 +6,10 @@ import java.util.List; import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.statement.SQLSelectQuery; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class SubqueryFactoringClause extends OracleSQLObject { +public class SubqueryFactoringClause extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; @@ -19,7 +19,7 @@ public class SubqueryFactoringClause extends OracleSQLObject { return entries; } - public static class Entry extends OracleSQLObject { + public static class Entry extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAggregateExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAggregateExpr.java index 0df86717d4..e9ecd83a46 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAggregateExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAggregateExpr.java @@ -23,7 +23,7 @@ import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleAggregateExpr extends SQLAggregateExpr implements Serializable { +public class OracleAggregateExpr extends SQLAggregateExpr implements Serializable, OracleExpr { private static final long serialVersionUID = 1L; private OracleAnalytic over; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAnalytic.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAnalytic.java index 93dd17a9b3..72f8d9b7c2 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAnalytic.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAnalytic.java @@ -24,7 +24,7 @@ import com.alibaba.druid.sql.dialect.oracle.ast.OracleOrderBy; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleAnalytic extends SQLObjectImpl { +public class OracleAnalytic extends SQLObjectImpl implements OracleExpr { private static final long serialVersionUID = 1L; private final List partitionBy = new ArrayList(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAnalyticWindowing.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAnalyticWindowing.java index 3321995e15..336f80e96a 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAnalyticWindowing.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleAnalyticWindowing.java @@ -21,7 +21,7 @@ import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; @SuppressWarnings("serial") -public class OracleAnalyticWindowing extends SQLObjectImpl { +public class OracleAnalyticWindowing extends SQLObjectImpl implements OracleExpr { private Type type; private SQLExpr expr; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleArrayAccessExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleArrayAccessExpr.java index fb02a7cd51..ee6206877f 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleArrayAccessExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleArrayAccessExpr.java @@ -23,7 +23,7 @@ import com.alibaba.druid.sql.ast.SQLExprImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleArrayAccessExpr extends SQLExprImpl { +public class OracleArrayAccessExpr extends SQLExprImpl implements OracleExpr { private static final long serialVersionUID = 1L; private SQLExpr ownner; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryDoubleExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryDoubleExpr.java index 044e280941..08698b5b10 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryDoubleExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryDoubleExpr.java @@ -4,7 +4,7 @@ import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleBinaryDoubleExpr extends SQLNumericLiteralExpr { +public class OracleBinaryDoubleExpr extends SQLNumericLiteralExpr implements OracleExpr { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryFloatExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryFloatExpr.java index 5577a33bb3..a11b73868a 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryFloatExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleBinaryFloatExpr.java @@ -4,7 +4,7 @@ import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleBinaryFloatExpr extends SQLNumericLiteralExpr { +public class OracleBinaryFloatExpr extends SQLNumericLiteralExpr implements OracleExpr { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleCursorExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleCursorExpr.java index 18e97b5adc..7ff540f2c8 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleCursorExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleCursorExpr.java @@ -5,7 +5,7 @@ import com.alibaba.druid.sql.ast.statement.SQLSelect; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleCursorExpr extends SQLExprImpl { +public class OracleCursorExpr extends SQLExprImpl implements OracleExpr { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDateExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDateExpr.java index 44eca0c7a4..358ca8e35b 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDateExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDateExpr.java @@ -19,7 +19,7 @@ import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleDateExpr extends SQLLiteralExpr { +public class OracleDateExpr extends SQLLiteralExpr implements OracleExpr { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDatetimeLiteralExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDatetimeLiteralExpr.java index 687f87ee0e..9864abe311 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDatetimeLiteralExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDatetimeLiteralExpr.java @@ -17,7 +17,7 @@ package com.alibaba.druid.sql.dialect.oracle.ast.expr; import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr; -public abstract class OracleDatetimeLiteralExpr extends SQLLiteralExpr { +public abstract class OracleDatetimeLiteralExpr extends SQLLiteralExpr implements OracleExpr { private static final long serialVersionUID = 1L; protected int year; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDbLinkExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDbLinkExpr.java index 18c205858a..3d5f021d86 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDbLinkExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleDbLinkExpr.java @@ -21,7 +21,7 @@ import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleDbLinkExpr extends SQLExprImpl implements SQLName { +public class OracleDbLinkExpr extends SQLExprImpl implements SQLName, OracleExpr { private static final long serialVersionUID = 1L; private SQLExpr expr; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExpr.java new file mode 100644 index 0000000000..761dc4a5dc --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExpr.java @@ -0,0 +1,9 @@ +package com.alibaba.druid.sql.dialect.oracle.ast.expr; + +import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; + + +public interface OracleExpr extends SQLExpr, OracleSQLObject { + +} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExtractExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExtractExpr.java index 076dbe8502..2eb8f15293 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExtractExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleExtractExpr.java @@ -20,7 +20,7 @@ import com.alibaba.druid.sql.ast.SQLExprImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleExtractExpr extends SQLExprImpl { +public class OracleExtractExpr extends SQLExprImpl implements OracleExpr { private static final long serialVersionUID = 1L; private OracleDateTimeUnit unit; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleGroupComparisonCondition.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleGroupComparisonCondition.java index 8538517c9e..004e526452 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleGroupComparisonCondition.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleGroupComparisonCondition.java @@ -24,7 +24,7 @@ import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleGroupComparisonCondition extends SQLExprImpl { +public class OracleGroupComparisonCondition extends SQLExprImpl implements OracleExpr { private static final long serialVersionUID = 1L; private final List exprList = new ArrayList(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleGroupingSetsExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleGroupingSetsExpr.java index 24fd827787..5cabb134ea 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleGroupingSetsExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleGroupingSetsExpr.java @@ -23,7 +23,7 @@ import com.alibaba.druid.sql.ast.SQLExprImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleGroupingSetsExpr extends SQLExprImpl { +public class OracleGroupingSetsExpr extends SQLExprImpl implements OracleExpr { private static final long serialVersionUID = 1L; private final List items = new ArrayList(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIntervalExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIntervalExpr.java index 2aec737230..c6056d6888 100755 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIntervalExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIntervalExpr.java @@ -20,7 +20,7 @@ import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleIntervalExpr extends SQLLiteralExpr { +public class OracleIntervalExpr extends SQLLiteralExpr implements OracleExpr { private static final long serialVersionUID = 1L; private SQLExpr value; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIsSetExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIsSetExpr.java new file mode 100644 index 0000000000..0087585472 --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleIsSetExpr.java @@ -0,0 +1,15 @@ +package com.alibaba.druid.sql.dialect.oracle.ast.expr; + +import com.alibaba.druid.sql.ast.SQLExprImpl; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; + +public class OracleIsSetExpr extends SQLExprImpl implements OracleExpr { + + private static final long serialVersionUID = 1L; + + @Override + protected void accept0(SQLASTVisitor visitor) { + + } + +} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleOuterExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleOuterExpr.java index 2709215292..53b43477c6 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleOuterExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleOuterExpr.java @@ -20,7 +20,7 @@ import com.alibaba.druid.sql.ast.SQLExprImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleOuterExpr extends SQLExprImpl { +public class OracleOuterExpr extends SQLExprImpl implements OracleExpr { private static final long serialVersionUID = 1L; private SQLExpr expr; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OraclePriorExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OraclePriorExpr.java index a1d21f1b37..eb618b2c73 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OraclePriorExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OraclePriorExpr.java @@ -5,7 +5,7 @@ import com.alibaba.druid.sql.ast.SQLExprImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OraclePriorExpr extends SQLExprImpl { +public class OraclePriorExpr extends SQLExprImpl implements OracleExpr { private static final long serialVersionUID = 1L; private SQLExpr expr; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTableCollectionExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTableCollectionExpr.java index eb8a315833..5141eb06eb 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTableCollectionExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTableCollectionExpr.java @@ -20,7 +20,7 @@ import com.alibaba.druid.sql.ast.SQLExprImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleTableCollectionExpr extends SQLExprImpl { +public class OracleTableCollectionExpr extends SQLExprImpl implements OracleExpr { private static final long serialVersionUID = 1L; private SQLExpr expr; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTimestampExpr.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTimestampExpr.java index 1b3b4118c9..39d5af07c1 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTimestampExpr.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/expr/OracleTimestampExpr.java @@ -19,7 +19,7 @@ import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; -public class OracleTimestampExpr extends SQLLiteralExpr { +public class OracleTimestampExpr extends SQLLiteralExpr implements OracleExpr { private static final long serialVersionUID = 1L; private String literal; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleConstraint.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleConstraint.java index fa0888c870..80b9bdb6e2 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleConstraint.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleConstraint.java @@ -17,9 +17,9 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; -public abstract class OracleConstraint extends OracleSQLObject { +public abstract class OracleConstraint extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectForUpdate.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectForUpdate.java index c9315009c2..938250b215 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectForUpdate.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectForUpdate.java @@ -20,10 +20,10 @@ import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLObjectImpl; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleSelectForUpdate extends OracleSQLObject { +public class OracleSelectForUpdate extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectHierachicalQueryClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectHierachicalQueryClause.java index ec6a82ca9c..c9b15f0e32 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectHierachicalQueryClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectHierachicalQueryClause.java @@ -16,10 +16,10 @@ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public class OracleSelectHierachicalQueryClause extends OracleSQLObject { +public class OracleSelectHierachicalQueryClause extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectPivot.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectPivot.java index 0db5337faf..47367625c5 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectPivot.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectPivot.java @@ -19,7 +19,7 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; public class OracleSelectPivot extends OracleSelectPivotBase { @@ -65,7 +65,7 @@ public class OracleSelectPivot extends OracleSelectPivotBase { this.xml = xml; } - public static class Item extends OracleSQLObject { + public static class Item extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectPivotBase.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectPivotBase.java index 70936d1c43..8df4c98e1f 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectPivotBase.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectPivotBase.java @@ -19,9 +19,9 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; -public abstract class OracleSelectPivotBase extends OracleSQLObject { +public abstract class OracleSelectPivotBase extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectRestriction.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectRestriction.java index 6b2fbc1ca0..ebca51a26a 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectRestriction.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectRestriction.java @@ -15,10 +15,10 @@ */ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -public abstract class OracleSelectRestriction extends OracleSQLObject { +public abstract class OracleSelectRestriction extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetClause.java index 8475bf5e03..d25effb34f 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetClause.java @@ -15,9 +15,9 @@ */ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; -public abstract class OracleUpdateSetClause extends OracleSQLObject { +public abstract class OracleUpdateSetClause extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListItem.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListItem.java index 9ba4712415..ff29eed6e0 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListItem.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleUpdateSetListItem.java @@ -15,9 +15,9 @@ */ package com.alibaba.druid.sql.dialect.oracle.ast.stmt; -import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject; +import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; -public abstract class OracleUpdateSetListItem extends OracleSQLObject { +public abstract class OracleUpdateSetListItem extends OracleSQLObjectImpl { private static final long serialVersionUID = 1L; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsASetTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsASetTest.java new file mode 100644 index 0000000000..a04385ecfe --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsASetTest.java @@ -0,0 +1,24 @@ +package com.alibaba.druid.bvt.sql.oracle; + +import com.alibaba.druid.sql.ast.statement.SQLSelectStatement; +import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; + +import junit.framework.Assert; +import junit.framework.TestCase; + +public class OracleIsASetTest extends TestCase { + + public void test_is_a_set() throws Exception { + String sql = "SELECT customer_id, cust_address_ntab FROM customers_demo WHERE cust_address_ntab IS A SET;"; + + OracleStatementParser parser = new OracleStatementParser(sql); + SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); + + String text = TestUtils.output(stmt); + + Assert.assertEquals("SELECT customer_id, cust_address_ntab\n" + "FROM customers_demo\n" + + "WHERE cust_address_ntab IS A SET;\n", text); + + System.out.println(text); + } +}