This is an automated email from the ASF dual-hosted git repository.

yx9o 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 26d0a510042 Remove AbstractWhereSegmentShadowColumnConditionIterator 
(#25902)
26d0a510042 is described below

commit 26d0a510042b560b04637e74f4303a3cd621d3df
Author: Liang Zhang <[email protected]>
AuthorDate: Fri May 26 09:24:04 2023 +0800

    Remove AbstractWhereSegmentShadowColumnConditionIterator (#25902)
    
    * Refactor AbstractWhereSegmentShadowColumnConditionIterator
    
    * Refactor ShadowInsertStatementRoutingEngine
    
    * Refactor ShadowInsertStatementRoutingEngine
    
    * Remove AbstractWhereSegmentShadowColumnConditionIterator
---
 .../dml/AbstractShadowDMLStatementRouteEngine.java | 25 ++++----
 ...tWhereSegmentShadowColumnConditionIterator.java | 69 --------------------
 .../dml/ShadowDeleteStatementRoutingEngine.java    | 23 ++-----
 .../dml/ShadowInsertStatementRoutingEngine.java    | 74 ++++++----------------
 .../dml/ShadowSelectStatementRoutingEngine.java    | 32 ++++------
 .../dml/ShadowUpdateStatementRoutingEngine.java    | 27 ++++----
 .../shadow/route/engine/util/ShadowExtractor.java  | 13 ----
 7 files changed, 64 insertions(+), 199 deletions(-)

diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractShadowDMLStatementRouteEngine.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractShadowDMLStatementRouteEngine.java
index a59e2152280..18a33a269e7 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractShadowDMLStatementRouteEngine.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractShadowDMLStatementRouteEngine.java
@@ -40,7 +40,6 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Optional;
@@ -145,24 +144,24 @@ public abstract class 
AbstractShadowDMLStatementRouteEngine implements ShadowRou
         if (columnShadowAlgorithms.isEmpty()) {
             return false;
         }
-        Iterator<Optional<ShadowColumnCondition>> iterator = 
getShadowColumnConditionIterator(shadowColumn);
-        ShadowDetermineCondition shadowDetermineCondition;
-        while (iterator.hasNext()) {
-            Optional<ShadowColumnCondition> next = iterator.next();
-            if (!next.isPresent()) {
-                continue;
+        for (ShadowColumnCondition each : 
getShadowColumnConditions(shadowColumn)) {
+            if (isMatchColumnShadowAlgorithm(shadowTable, 
columnShadowAlgorithms, each)) {
+                return true;
             }
-            for (ColumnShadowAlgorithm<Comparable<?>> each : 
columnShadowAlgorithms) {
-                shadowDetermineCondition = new 
ShadowDetermineCondition(shadowTable, operationType);
-                if (ColumnShadowAlgorithmDeterminer.isShadow(each, 
shadowDetermineCondition.initShadowColumnCondition(next.get()))) {
-                    return true;
-                }
+        }
+        return false;
+    }
+    
+    private boolean isMatchColumnShadowAlgorithm(final String shadowTable, 
final Collection<ColumnShadowAlgorithm<Comparable<?>>> algorithms, final 
ShadowColumnCondition condition) {
+        for (ColumnShadowAlgorithm<Comparable<?>> each : algorithms) {
+            if (ColumnShadowAlgorithmDeterminer.isShadow(each, new 
ShadowDetermineCondition(shadowTable, 
operationType).initShadowColumnCondition(condition))) {
+                return true;
             }
         }
         return false;
     }
     
-    protected abstract Iterator<Optional<ShadowColumnCondition>> 
getShadowColumnConditionIterator(String shadowColumn);
+    protected abstract Collection<ShadowColumnCondition> 
getShadowColumnConditions(String shadowColumnName);
     
     protected final String getSingleTableName() {
         return tableAliasNameMappings.entrySet().iterator().next().getValue();
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractWhereSegmentShadowColumnConditionIterator.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractWhereSegmentShadowColumnConditionIterator.java
deleted file mode 100644
index 2326a8e0100..00000000000
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractWhereSegmentShadowColumnConditionIterator.java
+++ /dev/null
@@ -1,69 +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.shadow.route.engine.dml;
-
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.shadow.condition.ShadowColumnCondition;
-import org.apache.shardingsphere.shadow.route.engine.util.ShadowExtractor;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
-
-import java.util.Iterator;
-import java.util.Optional;
-
-/**
- * Abstract shadow column condition iterator of where segment.
- */
-@RequiredArgsConstructor
-public abstract class AbstractWhereSegmentShadowColumnConditionIterator 
implements Iterator<Optional<ShadowColumnCondition>> {
-    
-    @Getter(AccessLevel.PROTECTED)
-    private final String shadowColumn;
-    
-    private final Iterator<ExpressionSegment> iterator;
-    
-    @Override
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-    
-    @Override
-    public Optional<ShadowColumnCondition> next() {
-        ExpressionSegment expressionSegment = iterator.next();
-        Optional<ColumnSegment> columnSegment = 
ShadowExtractor.extractColumn(expressionSegment);
-        if (!columnSegment.isPresent()) {
-            return Optional.empty();
-        }
-        String column = columnSegment.get().getIdentifier().getValue();
-        if (!shadowColumn.equals(column)) {
-            return Optional.empty();
-        }
-        return nextShadowColumnCondition(expressionSegment, 
columnSegment.get());
-    }
-    
-    /**
-     * Next shadow column condition.
-     *
-     * @param expressionSegment expression segment
-     * @param columnSegment column segment
-     * @return shadow column condition
-     */
-    protected abstract Optional<ShadowColumnCondition> 
nextShadowColumnCondition(ExpressionSegment expressionSegment, ColumnSegment 
columnSegment);
-}
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowDeleteStatementRoutingEngine.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowDeleteStatementRoutingEngine.java
index b96d6b7fd16..26747f56c2c 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowDeleteStatementRoutingEngine.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowDeleteStatementRoutingEngine.java
@@ -21,17 +21,14 @@ import 
org.apache.shardingsphere.infra.binder.statement.dml.DeleteStatementConte
 import org.apache.shardingsphere.shadow.api.shadow.ShadowOperationType;
 import org.apache.shardingsphere.shadow.condition.ShadowColumnCondition;
 import org.apache.shardingsphere.shadow.route.engine.util.ShadowExtractor;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.AndPredicate;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.WhereSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.util.ExpressionExtractUtils;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Optional;
 
 /**
  * Shadow delete statement routing engine.
@@ -49,8 +46,12 @@ public final class ShadowDeleteStatementRoutingEngine 
extends AbstractShadowDMLS
     }
     
     @Override
-    protected Iterator<Optional<ShadowColumnCondition>> 
getShadowColumnConditionIterator(final String shadowColumn) {
-        return new ShadowColumnConditionIterator(shadowColumn, 
getWhereSegment());
+    protected Collection<ShadowColumnCondition> 
getShadowColumnConditions(final String shadowColumnName) {
+        Collection<ShadowColumnCondition> result = new LinkedList<>();
+        for (ExpressionSegment each : getWhereSegment()) {
+            ShadowExtractor.extractValues(each, parameters).map(values -> new 
ShadowColumnCondition(getSingleTableName(), shadowColumnName, 
values)).ifPresent(result::add);
+        }
+        return result;
     }
     
     private Collection<ExpressionSegment> getWhereSegment() {
@@ -62,16 +63,4 @@ public final class ShadowDeleteStatementRoutingEngine 
extends AbstractShadowDMLS
         }
         return result;
     }
-    
-    private final class ShadowColumnConditionIterator extends 
AbstractWhereSegmentShadowColumnConditionIterator {
-        
-        private ShadowColumnConditionIterator(final String shadowColumn, final 
Collection<ExpressionSegment> predicates) {
-            super(shadowColumn, predicates.iterator());
-        }
-        
-        @Override
-        protected Optional<ShadowColumnCondition> 
nextShadowColumnCondition(final ExpressionSegment expressionSegment, final 
ColumnSegment columnSegment) {
-            return ShadowExtractor.extractValues(expressionSegment, 
parameters).map(values -> new ShadowColumnCondition(getSingleTableName(), 
getShadowColumn(), values));
-        }
-    }
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowInsertStatementRoutingEngine.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowInsertStatementRoutingEngine.java
index bcb8e3b1439..5da28c38119 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowInsertStatementRoutingEngine.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowInsertStatementRoutingEngine.java
@@ -19,15 +19,14 @@ package org.apache.shardingsphere.shadow.route.engine.dml;
 
 import 
org.apache.shardingsphere.infra.binder.segment.insert.values.InsertValueContext;
 import 
org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
+import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
 import org.apache.shardingsphere.shadow.api.shadow.ShadowOperationType;
 import org.apache.shardingsphere.shadow.condition.ShadowColumnCondition;
 import 
org.apache.shardingsphere.shadow.exception.syntax.UnsupportedShadowInsertValueException;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Optional;
 
 /**
  * Shadow insert statement routing engine.
@@ -42,59 +41,28 @@ public final class ShadowInsertStatementRoutingEngine 
extends AbstractShadowDMLS
     }
     
     @Override
-    protected Iterator<Optional<ShadowColumnCondition>> 
getShadowColumnConditionIterator(final String shadowColumn) {
-        return new ShadowColumnConditionIterator(shadowColumn, 
getColumnNames().iterator(), sqlStatementContext.getInsertValueContexts());
-    }
-    
-    private Collection<String> getColumnNames() {
-        return sqlStatementContext.getInsertColumnNames();
-    }
-    
-    private final class ShadowColumnConditionIterator implements 
Iterator<Optional<ShadowColumnCondition>> {
-        
-        private int index;
-        
-        private final String shadowColumn;
-        
-        private final Iterator<String> iterator;
-        
-        private final List<InsertValueContext> insertValueContexts;
-        
-        private ShadowColumnConditionIterator(final String shadowColumn, final 
Iterator<String> iterator, final List<InsertValueContext> insertValueContexts) {
-            index = 0;
-            this.shadowColumn = shadowColumn;
-            this.iterator = iterator;
-            this.insertValueContexts = insertValueContexts;
-        }
-        
-        @Override
-        public boolean hasNext() {
-            return iterator.hasNext();
-        }
-        
-        @Override
-        public Optional<ShadowColumnCondition> next() {
-            String columnName = iterator.next();
-            if (!shadowColumn.equals(columnName)) {
-                index++;
-                return Optional.empty();
+    protected Collection<ShadowColumnCondition> 
getShadowColumnConditions(final String shadowColumnName) {
+        Collection<ShadowColumnCondition> result = new LinkedList<>();
+        int columnIndex = 0;
+        for (String each : sqlStatementContext.getInsertColumnNames()) {
+            if (!shadowColumnName.equals(each)) {
+                columnIndex++;
+                continue;
             }
-            Optional<Collection<Comparable<?>>> columnValues = 
getColumnValues(insertValueContexts, index);
-            index++;
-            return columnValues.map(each -> new 
ShadowColumnCondition(getSingleTableName(), columnName, each));
+            Collection<Comparable<?>> columnValues = 
getColumnValues(sqlStatementContext.getInsertValueContexts(), columnIndex);
+            columnIndex++;
+            result.add(new ShadowColumnCondition(getSingleTableName(), each, 
columnValues));
         }
-        
-        private Optional<Collection<Comparable<?>>> getColumnValues(final 
List<InsertValueContext> insertValueContexts, final int columnIndex) {
-            Collection<Comparable<?>> result = new LinkedList<>();
-            for (InsertValueContext each : insertValueContexts) {
-                Object valueObject = 
each.getLiteralValue(columnIndex).orElseThrow(() -> new 
UnsupportedShadowInsertValueException(columnIndex));
-                if (valueObject instanceof Comparable<?>) {
-                    result.add((Comparable<?>) valueObject);
-                } else {
-                    return Optional.empty();
-                }
-            }
-            return result.isEmpty() ? Optional.empty() : Optional.of(result);
+        return result;
+    }
+    
+    private Collection<Comparable<?>> getColumnValues(final 
List<InsertValueContext> insertValueContexts, final int columnIndex) {
+        Collection<Comparable<?>> result = new LinkedList<>();
+        for (InsertValueContext each : insertValueContexts) {
+            Object columnValue = 
each.getLiteralValue(columnIndex).orElseThrow(() -> new 
UnsupportedShadowInsertValueException(columnIndex));
+            ShardingSpherePreconditions.checkState(columnValue instanceof 
Comparable<?>, () -> new UnsupportedShadowInsertValueException(columnIndex));
+            result.add((Comparable<?>) columnValue);
         }
+        return result;
     }
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowSelectStatementRoutingEngine.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowSelectStatementRoutingEngine.java
index c951c9803ac..cd9771495f3 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowSelectStatementRoutingEngine.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowSelectStatementRoutingEngine.java
@@ -26,10 +26,10 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.Expressi
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.AndPredicate;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.WhereSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
+import org.apache.shardingsphere.sql.parser.sql.common.util.ColumnExtractor;
 import 
org.apache.shardingsphere.sql.parser.sql.common.util.ExpressionExtractUtils;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
@@ -50,8 +50,16 @@ public final class ShadowSelectStatementRoutingEngine 
extends AbstractShadowDMLS
     }
     
     @Override
-    protected Iterator<Optional<ShadowColumnCondition>> 
getShadowColumnConditionIterator(final String shadowColumn) {
-        return new ShadowColumnConditionIterator(shadowColumn, 
getWhereSegment());
+    protected Collection<ShadowColumnCondition> 
getShadowColumnConditions(final String shadowColumnName) {
+        Collection<ShadowColumnCondition> result = new LinkedList<>();
+        for (ExpressionSegment each : getWhereSegment()) {
+            Collection<ColumnSegment> columns = ColumnExtractor.extract(each);
+            if (1 != columns.size()) {
+                continue;
+            }
+            ShadowExtractor.extractValues(each, parameters).map(values -> new 
ShadowColumnCondition(extractOwnerName(columns.iterator().next()), 
shadowColumnName, values)).ifPresent(result::add);
+        }
+        return result;
     }
     
     private Collection<ExpressionSegment> getWhereSegment() {
@@ -64,20 +72,8 @@ public final class ShadowSelectStatementRoutingEngine 
extends AbstractShadowDMLS
         return result;
     }
     
-    private final class ShadowColumnConditionIterator extends 
AbstractWhereSegmentShadowColumnConditionIterator {
-        
-        private ShadowColumnConditionIterator(final String shadowColumn, final 
Collection<ExpressionSegment> predicates) {
-            super(shadowColumn, predicates.iterator());
-        }
-        
-        @Override
-        protected Optional<ShadowColumnCondition> 
nextShadowColumnCondition(final ExpressionSegment expressionSegment, final 
ColumnSegment columnSegment) {
-            return ShadowExtractor.extractValues(expressionSegment, 
parameters).map(values -> new 
ShadowColumnCondition(extractOwnerName(columnSegment), getShadowColumn(), 
values));
-        }
-        
-        private String extractOwnerName(final ColumnSegment columnSegment) {
-            Optional<OwnerSegment> owner = columnSegment.getOwner();
-            return owner.isPresent() ? 
getTableAliasNameMappings().get(owner.get().getIdentifier().getValue()) : 
getTableAliasNameMappings().keySet().iterator().next();
-        }
+    private String extractOwnerName(final ColumnSegment columnSegment) {
+        Optional<OwnerSegment> owner = columnSegment.getOwner();
+        return owner.isPresent() ? 
getTableAliasNameMappings().get(owner.get().getIdentifier().getValue()) : 
getTableAliasNameMappings().keySet().iterator().next();
     }
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowUpdateStatementRoutingEngine.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowUpdateStatementRoutingEngine.java
index 526776da839..d00f42b2e0a 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowUpdateStatementRoutingEngine.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/ShadowUpdateStatementRoutingEngine.java
@@ -25,13 +25,12 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.Column
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.AndPredicate;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.WhereSegment;
+import org.apache.shardingsphere.sql.parser.sql.common.util.ColumnExtractor;
 import 
org.apache.shardingsphere.sql.parser.sql.common.util.ExpressionExtractUtils;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Optional;
 
 /**
  * Shadow update statement routing engine.
@@ -49,8 +48,16 @@ public final class ShadowUpdateStatementRoutingEngine 
extends AbstractShadowDMLS
     }
     
     @Override
-    protected Iterator<Optional<ShadowColumnCondition>> 
getShadowColumnConditionIterator(final String shadowColumn) {
-        return new ShadowColumnConditionIterator(shadowColumn, 
getWhereSegment());
+    protected Collection<ShadowColumnCondition> 
getShadowColumnConditions(final String shadowColumnName) {
+        Collection<ShadowColumnCondition> result = new LinkedList<>();
+        for (ExpressionSegment each : getWhereSegment()) {
+            Collection<ColumnSegment> columns = ColumnExtractor.extract(each);
+            if (1 != columns.size()) {
+                continue;
+            }
+            ShadowExtractor.extractValues(each, parameters).map(values -> new 
ShadowColumnCondition(getSingleTableName(), shadowColumnName, 
values)).ifPresent(result::add);
+        }
+        return result;
     }
     
     private Collection<ExpressionSegment> getWhereSegment() {
@@ -62,16 +69,4 @@ public final class ShadowUpdateStatementRoutingEngine 
extends AbstractShadowDMLS
         }
         return result;
     }
-    
-    private final class ShadowColumnConditionIterator extends 
AbstractWhereSegmentShadowColumnConditionIterator {
-        
-        private ShadowColumnConditionIterator(final String shadowColumn, final 
Collection<ExpressionSegment> predicates) {
-            super(shadowColumn, predicates.iterator());
-        }
-        
-        @Override
-        protected Optional<ShadowColumnCondition> 
nextShadowColumnCondition(final ExpressionSegment expressionSegment, final 
ColumnSegment columnSegment) {
-            return ShadowExtractor.extractValues(expressionSegment, 
parameters).map(values -> new ShadowColumnCondition(getSingleTableName(), 
getShadowColumn(), values));
-        }
-    }
 }
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/util/ShadowExtractor.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/util/ShadowExtractor.java
index b777c73c4dc..6558f64531e 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/util/ShadowExtractor.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/util/ShadowExtractor.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.shadow.route.engine.util;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.InExpression;
@@ -27,7 +26,6 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ListExpr
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.SimpleExpressionSegment;
-import org.apache.shardingsphere.sql.parser.sql.common.util.ColumnExtractor;
 
 import java.util.Collection;
 import java.util.LinkedList;
@@ -40,17 +38,6 @@ import java.util.Optional;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class ShadowExtractor {
     
-    /**
-     * Get column in expression segment.
-     *
-     * @param expressionSegment expression segment
-     * @return column segment
-     */
-    public static Optional<ColumnSegment> extractColumn(final 
ExpressionSegment expressionSegment) {
-        Collection<ColumnSegment> columnSegments = 
ColumnExtractor.extract(expressionSegment);
-        return 1 == columnSegments.size() ? 
Optional.of(columnSegments.iterator().next()) : Optional.empty();
-    }
-    
     /**
      * Get values in expression segment.
      *

Reply via email to