Commit 6c5504ca authored by terrymanu's avatar terrymanu
Browse files

for #2084, AssignmentExtractor implements OptionalSQLSegmentExtractor

parent 4c08c2d8
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.core.parse.antlr.extractor.api.OptionalSQLSegmentExtractor;
import org.apache.shardingsphere.core.parse.antlr.extractor.impl.common.column.ColumnExtractor;
import org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.select.SubqueryExtractor;
import org.apache.shardingsphere.core.parse.antlr.extractor.util.ExtractorUtils;
@@ -39,16 +40,10 @@ import java.util.Map;
 *
 * @author duhongjun
 */
public final class ExpressionExtractor {
public final class ExpressionExtractor implements OptionalSQLSegmentExtractor {
    
    /**
     * Extract expression.
     *
     * @param parameterMarkerIndexes  parameter marker indexes
     * @param expressionNode expression node
     * @return expression segment
     */
    public Optional<? extends ExpressionSegment> extract(final Map<ParserRuleContext, Integer> parameterMarkerIndexes, final ParserRuleContext expressionNode) {
    @Override
    public Optional<? extends ExpressionSegment> extract(final ParserRuleContext expressionNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes) {
        Optional<ParserRuleContext> subqueryNode = ExtractorUtils.findFirstChildNode(expressionNode, RuleName.SUBQUERY);
        return subqueryNode.isPresent() ? new SubqueryExtractor().extract(subqueryNode.get(), parameterMarkerIndexes) : Optional.of(extractExpression(parameterMarkerIndexes, expressionNode));
    }