Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/AssignmentExtractor.java +1 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ public final class AssignmentExtractor implements OptionalSQLSegmentExtractor { } Optional<ColumnSegment> columnSegment = columnExtractor.extract((ParserRuleContext) assignmentNode.get().getChild(0), parameterMarkerIndexes); Preconditions.checkState(columnSegment.isPresent()); CommonExpressionSegment expressionSegment = expressionExtractor.extractCommonExpressionSegment(parameterMarkerIndexes, (ParserRuleContext) assignmentNode.get().getChild(2)); CommonExpressionSegment expressionSegment = expressionExtractor.extractCommonExpressionSegment((ParserRuleContext) assignmentNode.get().getChild(2), parameterMarkerIndexes); return Optional.of(new AssignmentSegment(columnSegment.get(), expressionSegment)); } } sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/ExpressionExtractor.java +4 −4 Original line number Diff line number Diff line Loading @@ -45,10 +45,10 @@ public final class ExpressionExtractor implements OptionalSQLSegmentExtractor { @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)); return subqueryNode.isPresent() ? new SubqueryExtractor().extract(subqueryNode.get(), parameterMarkerIndexes) : Optional.of(extractExpression(expressionNode, parameterMarkerIndexes)); } private ExpressionSegment extractExpression(final Map<ParserRuleContext, Integer> parameterMarkerIndexes, final ParserRuleContext expressionNode) { private ExpressionSegment extractExpression(final ParserRuleContext expressionNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes) { Optional<ParserRuleContext> functionNode = ExtractorUtils.findFirstChildNode(expressionNode, RuleName.FUNCTION_CALL); if (functionNode.isPresent()) { return extractFunctionExpressionSegment(functionNode.get()); Loading @@ -56,7 +56,7 @@ public final class ExpressionExtractor implements OptionalSQLSegmentExtractor { if (RuleName.COLUMN_NAME.getName().equals(expressionNode.getChild(0).getClass().getSimpleName())) { return extractPropertyExpressionSegment(expressionNode, parameterMarkerIndexes); } return extractCommonExpressionSegment(parameterMarkerIndexes, expressionNode); return extractCommonExpressionSegment(expressionNode, parameterMarkerIndexes); } // TODO extract column name and value from function Loading @@ -79,7 +79,7 @@ public final class ExpressionExtractor implements OptionalSQLSegmentExtractor { * @param expressionNode expression node * @return common expression segment */ public CommonExpressionSegment extractCommonExpressionSegment(final Map<ParserRuleContext, Integer> parameterMarkerIndexes, final ParserRuleContext expressionNode) { public CommonExpressionSegment extractCommonExpressionSegment(final ParserRuleContext expressionNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes) { CommonExpressionSegment result = new CommonExpressionSegment(expressionNode.getStart().getStartIndex(), expressionNode.getStop().getStopIndex()); Optional<ParserRuleContext> questionNode = ExtractorUtils.findFirstChildNode(expressionNode, RuleName.PARAMETER_MARKER); if (questionNode.isPresent()) { Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/PredicateExtractor.java +4 −4 Original line number Diff line number Diff line Loading @@ -151,15 +151,15 @@ public final class PredicateExtractor implements OptionalSQLSegmentExtractor { Preconditions.checkState(column.isPresent()); ParserRuleContext valueNode = leftColumnNode.isPresent() ? (ParserRuleContext) comparisonOperatorNode.get().parent.getChild(2) : (ParserRuleContext) comparisonOperatorNode.get().parent.getChild(0); Optional<? extends ExpressionSegment> sqlExpression = expressionExtractor.extract(parameterMarkerIndexes, valueNode); Optional<? extends ExpressionSegment> sqlExpression = expressionExtractor.extract(valueNode, parameterMarkerIndexes); String compareOperator = comparisonOperatorNode.get().getText(); return sqlExpression.isPresent() ? Optional.of(new PredicateSegment(column.get(), compareOperator, new CompareValueExpressionSegment(sqlExpression.get(), compareOperator), booleanPrimaryNode.getStop().getStopIndex())) : Optional.<PredicateSegment>absent(); } private Optional<PredicateSegment> extractBetweenPredicate(final ParserRuleContext predicateNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes, final ColumnSegment column) { Optional<? extends ExpressionSegment> beginSQLExpression = expressionExtractor.extract(parameterMarkerIndexes, (ParserRuleContext) predicateNode.getChild(2)); Optional<? extends ExpressionSegment> endSQLExpression = expressionExtractor.extract(parameterMarkerIndexes, (ParserRuleContext) predicateNode.getChild(4)); Optional<? extends ExpressionSegment> beginSQLExpression = expressionExtractor.extract((ParserRuleContext) predicateNode.getChild(2), parameterMarkerIndexes); Optional<? extends ExpressionSegment> endSQLExpression = expressionExtractor.extract((ParserRuleContext) predicateNode.getChild(4), parameterMarkerIndexes); return beginSQLExpression.isPresent() && endSQLExpression.isPresent() ? Optional.of(new PredicateSegment( column, ShardingOperator.BETWEEN.name(), new BetweenValueExpressionSegment(beginSQLExpression.get(), endSQLExpression.get()), predicateNode.getStop().getStopIndex())) Loading @@ -176,7 +176,7 @@ public final class PredicateExtractor implements OptionalSQLSegmentExtractor { List<ExpressionSegment> result = new LinkedList<>(); for (int i = 3; i < predicateNode.getChildCount(); i++) { if (RuleName.EXPR.getName().equals(predicateNode.getChild(i).getClass().getSimpleName())) { Optional<? extends ExpressionSegment> expression = expressionExtractor.extract(parameterMarkerIndexes, (ParserRuleContext) predicateNode.getChild(i)); Optional<? extends ExpressionSegment> expression = expressionExtractor.extract((ParserRuleContext) predicateNode.getChild(i), parameterMarkerIndexes); // FIXME if some part of expr is not supported, clear all expr for IN clause if (!expression.isPresent()) { return Collections.emptyList(); Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/insert/InsertValuesExtractor.java +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ public final class InsertValuesExtractor implements CollectionSQLSegmentExtracto private Collection<CommonExpressionSegment> extractCommonExpressionSegments(final ParserRuleContext assignmentValuesNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes) { Collection<CommonExpressionSegment> result = new LinkedList<>(); for (ParserRuleContext each : ExtractorUtils.getAllDescendantNodes(assignmentValuesNode, RuleName.ASSIGNMENT_VALUE)) { result.add(expressionExtractor.extractCommonExpressionSegment(parameterMarkerIndexes, each)); result.add(expressionExtractor.extractCommonExpressionSegment(each, parameterMarkerIndexes)); } return result; } Loading Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/AssignmentExtractor.java +1 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ public final class AssignmentExtractor implements OptionalSQLSegmentExtractor { } Optional<ColumnSegment> columnSegment = columnExtractor.extract((ParserRuleContext) assignmentNode.get().getChild(0), parameterMarkerIndexes); Preconditions.checkState(columnSegment.isPresent()); CommonExpressionSegment expressionSegment = expressionExtractor.extractCommonExpressionSegment(parameterMarkerIndexes, (ParserRuleContext) assignmentNode.get().getChild(2)); CommonExpressionSegment expressionSegment = expressionExtractor.extractCommonExpressionSegment((ParserRuleContext) assignmentNode.get().getChild(2), parameterMarkerIndexes); return Optional.of(new AssignmentSegment(columnSegment.get(), expressionSegment)); } }
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/ExpressionExtractor.java +4 −4 Original line number Diff line number Diff line Loading @@ -45,10 +45,10 @@ public final class ExpressionExtractor implements OptionalSQLSegmentExtractor { @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)); return subqueryNode.isPresent() ? new SubqueryExtractor().extract(subqueryNode.get(), parameterMarkerIndexes) : Optional.of(extractExpression(expressionNode, parameterMarkerIndexes)); } private ExpressionSegment extractExpression(final Map<ParserRuleContext, Integer> parameterMarkerIndexes, final ParserRuleContext expressionNode) { private ExpressionSegment extractExpression(final ParserRuleContext expressionNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes) { Optional<ParserRuleContext> functionNode = ExtractorUtils.findFirstChildNode(expressionNode, RuleName.FUNCTION_CALL); if (functionNode.isPresent()) { return extractFunctionExpressionSegment(functionNode.get()); Loading @@ -56,7 +56,7 @@ public final class ExpressionExtractor implements OptionalSQLSegmentExtractor { if (RuleName.COLUMN_NAME.getName().equals(expressionNode.getChild(0).getClass().getSimpleName())) { return extractPropertyExpressionSegment(expressionNode, parameterMarkerIndexes); } return extractCommonExpressionSegment(parameterMarkerIndexes, expressionNode); return extractCommonExpressionSegment(expressionNode, parameterMarkerIndexes); } // TODO extract column name and value from function Loading @@ -79,7 +79,7 @@ public final class ExpressionExtractor implements OptionalSQLSegmentExtractor { * @param expressionNode expression node * @return common expression segment */ public CommonExpressionSegment extractCommonExpressionSegment(final Map<ParserRuleContext, Integer> parameterMarkerIndexes, final ParserRuleContext expressionNode) { public CommonExpressionSegment extractCommonExpressionSegment(final ParserRuleContext expressionNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes) { CommonExpressionSegment result = new CommonExpressionSegment(expressionNode.getStart().getStartIndex(), expressionNode.getStop().getStopIndex()); Optional<ParserRuleContext> questionNode = ExtractorUtils.findFirstChildNode(expressionNode, RuleName.PARAMETER_MARKER); if (questionNode.isPresent()) { Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/PredicateExtractor.java +4 −4 Original line number Diff line number Diff line Loading @@ -151,15 +151,15 @@ public final class PredicateExtractor implements OptionalSQLSegmentExtractor { Preconditions.checkState(column.isPresent()); ParserRuleContext valueNode = leftColumnNode.isPresent() ? (ParserRuleContext) comparisonOperatorNode.get().parent.getChild(2) : (ParserRuleContext) comparisonOperatorNode.get().parent.getChild(0); Optional<? extends ExpressionSegment> sqlExpression = expressionExtractor.extract(parameterMarkerIndexes, valueNode); Optional<? extends ExpressionSegment> sqlExpression = expressionExtractor.extract(valueNode, parameterMarkerIndexes); String compareOperator = comparisonOperatorNode.get().getText(); return sqlExpression.isPresent() ? Optional.of(new PredicateSegment(column.get(), compareOperator, new CompareValueExpressionSegment(sqlExpression.get(), compareOperator), booleanPrimaryNode.getStop().getStopIndex())) : Optional.<PredicateSegment>absent(); } private Optional<PredicateSegment> extractBetweenPredicate(final ParserRuleContext predicateNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes, final ColumnSegment column) { Optional<? extends ExpressionSegment> beginSQLExpression = expressionExtractor.extract(parameterMarkerIndexes, (ParserRuleContext) predicateNode.getChild(2)); Optional<? extends ExpressionSegment> endSQLExpression = expressionExtractor.extract(parameterMarkerIndexes, (ParserRuleContext) predicateNode.getChild(4)); Optional<? extends ExpressionSegment> beginSQLExpression = expressionExtractor.extract((ParserRuleContext) predicateNode.getChild(2), parameterMarkerIndexes); Optional<? extends ExpressionSegment> endSQLExpression = expressionExtractor.extract((ParserRuleContext) predicateNode.getChild(4), parameterMarkerIndexes); return beginSQLExpression.isPresent() && endSQLExpression.isPresent() ? Optional.of(new PredicateSegment( column, ShardingOperator.BETWEEN.name(), new BetweenValueExpressionSegment(beginSQLExpression.get(), endSQLExpression.get()), predicateNode.getStop().getStopIndex())) Loading @@ -176,7 +176,7 @@ public final class PredicateExtractor implements OptionalSQLSegmentExtractor { List<ExpressionSegment> result = new LinkedList<>(); for (int i = 3; i < predicateNode.getChildCount(); i++) { if (RuleName.EXPR.getName().equals(predicateNode.getChild(i).getClass().getSimpleName())) { Optional<? extends ExpressionSegment> expression = expressionExtractor.extract(parameterMarkerIndexes, (ParserRuleContext) predicateNode.getChild(i)); Optional<? extends ExpressionSegment> expression = expressionExtractor.extract((ParserRuleContext) predicateNode.getChild(i), parameterMarkerIndexes); // FIXME if some part of expr is not supported, clear all expr for IN clause if (!expression.isPresent()) { return Collections.emptyList(); Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/insert/InsertValuesExtractor.java +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ public final class InsertValuesExtractor implements CollectionSQLSegmentExtracto private Collection<CommonExpressionSegment> extractCommonExpressionSegments(final ParserRuleContext assignmentValuesNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes) { Collection<CommonExpressionSegment> result = new LinkedList<>(); for (ParserRuleContext each : ExtractorUtils.getAllDescendantNodes(assignmentValuesNode, RuleName.ASSIGNMENT_VALUE)) { result.add(expressionExtractor.extractCommonExpressionSegment(parameterMarkerIndexes, each)); result.add(expressionExtractor.extractCommonExpressionSegment(each, parameterMarkerIndexes)); } return result; } Loading