From cbfbc842708e6022690295d7448de3c00b84c51f Mon Sep 17 00:00:00 2001 From: Zhang Yonglun Date: Thu, 17 Jun 2021 10:43:10 +0800 Subject: [PATCH] add insert statement parser (#317) --- .../common/handler/CommonAssembler.java | 127 ++++++++++++++++++ .../handler/InsertStatementAssembler.java | 44 ++++++ .../handler/UpdateStatementAssembler.java | 93 +------------ 3 files changed, 176 insertions(+), 88 deletions(-) create mode 100644 hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/CommonAssembler.java diff --git a/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/CommonAssembler.java b/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/CommonAssembler.java new file mode 100644 index 00000000..d7be1cfd --- /dev/null +++ b/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/CommonAssembler.java @@ -0,0 +1,127 @@ +/* + * Copyright 2017-2021 Dromara.org + * + * 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 org.dromara.hmily.tac.sqlparser.shardingsphere.common.handler; + +import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment; +import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BetweenExpression; +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; +import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.complex.CommonExpressionSegment; +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.item.ExpressionProjectionSegment; +import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment; +import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment; +import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.column.HmilyColumnSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.HmilyBinaryOperationExpression; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.HmilyExpressionSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.complex.HmilyCommonExpressionSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.simple.HmilyLiteralExpressionSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.simple.HmilyParameterMarkerExpressionSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.item.HmilyExpressionProjectionSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.generic.HmilyAliasSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.generic.HmilyOwnerSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.generic.table.HmilySimpleTableSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.generic.table.HmilyTableNameSegment; +import org.dromara.hmily.tac.sqlparser.model.common.value.identifier.HmilyIdentifierValue; + +public final class CommonAssembler { + + /** + * Assemble hmily simple table segment. + * + * @param simpleTableSegment simple table segment + * @return hmily simple table segment + */ + public static HmilySimpleTableSegment assembleHmilySimpleTableSegment(final SimpleTableSegment simpleTableSegment) { + TableNameSegment tableNameSegment = simpleTableSegment.getTableName(); + HmilyIdentifierValue hmilyIdentifierValue = new HmilyIdentifierValue(tableNameSegment.getIdentifier().getValue()); + HmilyTableNameSegment hmilyTableNameSegment = new HmilyTableNameSegment(tableNameSegment.getStartIndex(), tableNameSegment.getStopIndex(), hmilyIdentifierValue); + HmilyOwnerSegment hmilyOwnerSegment = null; + OwnerSegment ownerSegment; + if (simpleTableSegment.getOwner().isPresent()) { + ownerSegment = simpleTableSegment.getOwner().get(); + hmilyOwnerSegment = new HmilyOwnerSegment(ownerSegment.getStartIndex(), ownerSegment.getStopIndex(), + new HmilyIdentifierValue(ownerSegment.getIdentifier().getValue())); + } + HmilyAliasSegment hmilyAliasSegment = null; + String aliasSegmentString; + if (simpleTableSegment.getAlias().isPresent()) { + aliasSegmentString = simpleTableSegment.getAlias().get(); + hmilyAliasSegment = new HmilyAliasSegment(0, 0, new HmilyIdentifierValue(aliasSegmentString)); + } + HmilySimpleTableSegment hmilySimpleTableSegment = new HmilySimpleTableSegment(hmilyTableNameSegment); + hmilySimpleTableSegment.setOwner(hmilyOwnerSegment); + hmilySimpleTableSegment.setAlias(hmilyAliasSegment); + return hmilySimpleTableSegment; + } + + /** + * Assemble hmily column segment. + * + * @param column column + * @return hmily column segment + */ + public static HmilyColumnSegment assembleHmilyColumnSegment(final ColumnSegment column) { + HmilyIdentifierValue hmilyIdentifierValue = new HmilyIdentifierValue(column.getIdentifier().getValue()); + HmilyColumnSegment result = new HmilyColumnSegment(column.getStartIndex(), column.getStopIndex(), hmilyIdentifierValue); + column.getOwner().ifPresent(ownerSegment -> { + HmilyIdentifierValue identifierValue = new HmilyIdentifierValue(ownerSegment.getIdentifier().getValue()); + result.setOwner(new HmilyOwnerSegment(ownerSegment.getStartIndex(), ownerSegment.getStopIndex(), identifierValue)); + }); + return result; + } + + /** + * Assemble hmily expression segment. + * + * @param expression expression + * @return hmily expression segment + */ + public static HmilyExpressionSegment assembleHmilyExpressionSegment(final ExpressionSegment expression) { + HmilyExpressionSegment result = null; + if (expression instanceof BinaryOperationExpression) { + HmilyExpressionSegment hmilyLeft = assembleHmilyExpressionSegment(((BinaryOperationExpression) expression).getLeft()); + HmilyExpressionSegment hmilyRight = assembleHmilyExpressionSegment(((BinaryOperationExpression) expression).getRight()); + result = new HmilyBinaryOperationExpression(expression.getStartIndex(), expression.getStopIndex(), hmilyLeft, hmilyRight, + ((BinaryOperationExpression) expression).getOperator(), ((BinaryOperationExpression) expression).getText()); + } else if (expression instanceof ColumnSegment) { + result = CommonAssembler.assembleHmilyColumnSegment((ColumnSegment) expression); + } else if (expression instanceof CommonExpressionSegment) { + result = new HmilyCommonExpressionSegment(expression.getStartIndex(), + expression.getStopIndex(), ((CommonExpressionSegment) expression).getText()); + } else if (expression instanceof ExpressionProjectionSegment) { + result = new HmilyExpressionProjectionSegment(expression.getStartIndex(), + expression.getStopIndex(), ((ExpressionProjectionSegment) expression).getText()); + } else if (expression instanceof LiteralExpressionSegment) { + result = new HmilyLiteralExpressionSegment(expression.getStartIndex(), + expression.getStopIndex(), ((LiteralExpressionSegment) expression).getLiterals()); + } else if (expression instanceof ParameterMarkerExpressionSegment) { + result = new HmilyParameterMarkerExpressionSegment(expression.getStartIndex(), + expression.getStopIndex(), ((ParameterMarkerExpressionSegment) expression).getParameterMarkerIndex()); + } else if (expression instanceof InExpression && ((InExpression) expression).getLeft() instanceof ColumnSegment) { + // TODO + ColumnSegment column = (ColumnSegment) ((InExpression) expression).getLeft(); + } else if (expression instanceof BetweenExpression && ((BetweenExpression) expression).getLeft() instanceof ColumnSegment) { + // TODO + ColumnSegment column = (ColumnSegment) ((BetweenExpression) expression).getLeft(); + } + return result; + } +} diff --git a/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/InsertStatementAssembler.java b/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/InsertStatementAssembler.java index be9ff2c2..87fd640c 100644 --- a/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/InsertStatementAssembler.java +++ b/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/InsertStatementAssembler.java @@ -16,9 +16,22 @@ package org.dromara.hmily.tac.sqlparser.shardingsphere.common.handler; +import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.InsertValuesSegment; +import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment; +import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.InsertColumnsSegment; +import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment; import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.assignment.HmilyInsertValuesSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.column.HmilyColumnSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.column.HmilyInsertColumnsSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.HmilyExpressionSegment; +import org.dromara.hmily.tac.sqlparser.model.common.segment.generic.table.HmilySimpleTableSegment; import org.dromara.hmily.tac.sqlparser.model.common.statement.dml.HmilyInsertStatement; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; + public final class InsertStatementAssembler { /** @@ -29,6 +42,37 @@ public final class InsertStatementAssembler { * @return hmily insert statement */ public static HmilyInsertStatement assembleHmilyInsertStatement(final InsertStatement insertStatement, final HmilyInsertStatement hmilyInsertStatement) { + HmilySimpleTableSegment hmilySimpleTableSegment = CommonAssembler.assembleHmilySimpleTableSegment(insertStatement.getTable()); + HmilyInsertColumnsSegment hmilyInsertColumnsSegment = null; + if (insertStatement.getInsertColumns().isPresent()) { + hmilyInsertColumnsSegment = assembleHmilyInsertColumnsSegment(insertStatement.getInsertColumns().get()); + } + Collection hmilyInsertValuesSegments = assembleHmilyInsertValuesSegments(insertStatement.getValues()); + hmilyInsertStatement.setTable(hmilySimpleTableSegment); + hmilyInsertStatement.setInsertColumns(hmilyInsertColumnsSegment); + for (HmilyInsertValuesSegment each : hmilyInsertValuesSegments) { + hmilyInsertStatement.getValues().add(each); + } return hmilyInsertStatement; } + + private static HmilyInsertColumnsSegment assembleHmilyInsertColumnsSegment(final InsertColumnsSegment insertColumnsSegment) { + Collection hmilyColumnSegments = new LinkedList<>(); + for (ColumnSegment each : insertColumnsSegment.getColumns()) { + hmilyColumnSegments.add(CommonAssembler.assembleHmilyColumnSegment(each)); + } + return new HmilyInsertColumnsSegment(insertColumnsSegment.getStartIndex(), insertColumnsSegment.getStopIndex(), hmilyColumnSegments); + } + + private static Collection assembleHmilyInsertValuesSegments(final Collection insertValuesSegments) { + Collection hmilyInsertValuesSegments = new LinkedList<>(); + for (InsertValuesSegment each : insertValuesSegments) { + List hmilyExpressionSegments = new LinkedList<>(); + for (ExpressionSegment expressionSegment : each.getValues()) { + hmilyExpressionSegments.add(CommonAssembler.assembleHmilyExpressionSegment(expressionSegment)); + } + hmilyInsertValuesSegments.add(new HmilyInsertValuesSegment(each.getStartIndex(), each.getStopIndex(), hmilyExpressionSegments)); + } + return hmilyInsertValuesSegments; + } } diff --git a/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/UpdateStatementAssembler.java b/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/UpdateStatementAssembler.java index e4cee071..a4fe87de 100644 --- a/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/UpdateStatementAssembler.java +++ b/hmily-tac/hmily-tac-sqlparser/hmily-tac-sqlparser-shardingsphere/src/main/java/org/dromara/hmily/tac/sqlparser/shardingsphere/common/handler/UpdateStatementAssembler.java @@ -18,36 +18,16 @@ package org.dromara.hmily.tac.sqlparser.shardingsphere.common.handler; import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.AssignmentSegment; import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.SetAssignmentSegment; -import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment; -import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BetweenExpression; -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; -import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.complex.CommonExpressionSegment; -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.item.ExpressionProjectionSegment; 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.segment.generic.table.SimpleTableSegment; -import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment; import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.UpdateStatement; import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.assignment.HmilyAssignmentSegment; import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.assignment.HmilySetAssignmentSegment; import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.column.HmilyColumnSegment; -import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.HmilyBinaryOperationExpression; import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.HmilyExpressionSegment; -import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.complex.HmilyCommonExpressionSegment; -import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.simple.HmilyLiteralExpressionSegment; -import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.expr.simple.HmilyParameterMarkerExpressionSegment; -import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.item.HmilyExpressionProjectionSegment; import org.dromara.hmily.tac.sqlparser.model.common.segment.dml.predicate.HmilyWhereSegment; -import org.dromara.hmily.tac.sqlparser.model.common.segment.generic.HmilyAliasSegment; -import org.dromara.hmily.tac.sqlparser.model.common.segment.generic.HmilyOwnerSegment; import org.dromara.hmily.tac.sqlparser.model.common.segment.generic.table.HmilySimpleTableSegment; -import org.dromara.hmily.tac.sqlparser.model.common.segment.generic.table.HmilyTableNameSegment; import org.dromara.hmily.tac.sqlparser.model.common.statement.dml.HmilyUpdateStatement; -import org.dromara.hmily.tac.sqlparser.model.common.value.identifier.HmilyIdentifierValue; import java.util.Collection; import java.util.LinkedList; @@ -62,7 +42,7 @@ public final class UpdateStatementAssembler { * @return hmily update statement */ public static HmilyUpdateStatement assembleHmilyUpdateStatement(final UpdateStatement updateStatement, final HmilyUpdateStatement hmilyUpdateStatement) { - HmilySimpleTableSegment hmilySimpleTableSegment = assembleHmilySimpleTableSegment((SimpleTableSegment) updateStatement.getTableSegment()); + HmilySimpleTableSegment hmilySimpleTableSegment = CommonAssembler.assembleHmilySimpleTableSegment((SimpleTableSegment) updateStatement.getTableSegment()); HmilySetAssignmentSegment hmilySetAssignmentSegment = assembleHmilySetAssignmentSegment(updateStatement.getSetAssignment()); HmilyWhereSegment hmilyWhereSegment = null; if (updateStatement.getWhere().isPresent()) { @@ -74,82 +54,19 @@ public final class UpdateStatementAssembler { return hmilyUpdateStatement; } - private static HmilySimpleTableSegment assembleHmilySimpleTableSegment(final SimpleTableSegment simpleTableSegment) { - TableNameSegment tableNameSegment = simpleTableSegment.getTableName(); - HmilyIdentifierValue hmilyIdentifierValue = new HmilyIdentifierValue(tableNameSegment.getIdentifier().getValue()); - HmilyTableNameSegment hmilyTableNameSegment = new HmilyTableNameSegment(tableNameSegment.getStartIndex(), tableNameSegment.getStopIndex(), hmilyIdentifierValue); - HmilyOwnerSegment hmilyOwnerSegment = null; - OwnerSegment ownerSegment; - if (simpleTableSegment.getOwner().isPresent()) { - ownerSegment = simpleTableSegment.getOwner().get(); - hmilyOwnerSegment = new HmilyOwnerSegment(ownerSegment.getStartIndex(), ownerSegment.getStopIndex(), - new HmilyIdentifierValue(ownerSegment.getIdentifier().getValue())); - } - HmilyAliasSegment hmilyAliasSegment = null; - String aliasSegmentString; - if (simpleTableSegment.getAlias().isPresent()) { - aliasSegmentString = simpleTableSegment.getAlias().get(); - hmilyAliasSegment = new HmilyAliasSegment(0, 0, new HmilyIdentifierValue(aliasSegmentString)); - } - HmilySimpleTableSegment hmilySimpleTableSegment = new HmilySimpleTableSegment(hmilyTableNameSegment); - hmilySimpleTableSegment.setOwner(hmilyOwnerSegment); - hmilySimpleTableSegment.setAlias(hmilyAliasSegment); - return hmilySimpleTableSegment; - } - private static HmilySetAssignmentSegment assembleHmilySetAssignmentSegment(final SetAssignmentSegment setAssignmentSegment) { Collection assignments = new LinkedList<>(); for (AssignmentSegment each : setAssignmentSegment.getAssignments()) { - HmilyColumnSegment hmilyColumnSegment = assembleHmilyColumnSegment(each.getColumn()); - HmilyAssignmentSegment hmilyAssignmentSegment = new HmilyAssignmentSegment(each.getStartIndex(), each.getStopIndex(), hmilyColumnSegment, assembleHmilyExpressionSegment(each.getValue())); + HmilyColumnSegment hmilyColumnSegment = CommonAssembler.assembleHmilyColumnSegment(each.getColumn()); + HmilyAssignmentSegment hmilyAssignmentSegment = + new HmilyAssignmentSegment(each.getStartIndex(), each.getStopIndex(), hmilyColumnSegment, CommonAssembler.assembleHmilyExpressionSegment(each.getValue())); assignments.add(hmilyAssignmentSegment); } return new HmilySetAssignmentSegment(setAssignmentSegment.getStartIndex(), setAssignmentSegment.getStopIndex(), assignments); } private static HmilyWhereSegment assembleHmilyWhereSegment(final WhereSegment whereSegment) { - HmilyExpressionSegment hmilyExpressionSegment = assembleHmilyExpressionSegment(whereSegment.getExpr()); + HmilyExpressionSegment hmilyExpressionSegment = CommonAssembler.assembleHmilyExpressionSegment(whereSegment.getExpr()); return new HmilyWhereSegment(whereSegment.getStartIndex(), whereSegment.getStopIndex(), hmilyExpressionSegment); } - - private static HmilyColumnSegment assembleHmilyColumnSegment(final ColumnSegment column) { - HmilyIdentifierValue hmilyIdentifierValue = new HmilyIdentifierValue(column.getIdentifier().getValue()); - HmilyColumnSegment result = new HmilyColumnSegment(column.getStartIndex(), column.getStopIndex(), hmilyIdentifierValue); - column.getOwner().ifPresent(ownerSegment -> { - HmilyIdentifierValue identifierValue = new HmilyIdentifierValue(ownerSegment.getIdentifier().getValue()); - result.setOwner(new HmilyOwnerSegment(ownerSegment.getStartIndex(), ownerSegment.getStopIndex(), identifierValue)); - }); - return result; - } - - private static HmilyExpressionSegment assembleHmilyExpressionSegment(final ExpressionSegment expression) { - HmilyExpressionSegment result = null; - if (expression instanceof BinaryOperationExpression) { - HmilyExpressionSegment hmilyLeft = assembleHmilyExpressionSegment(((BinaryOperationExpression) expression).getLeft()); - HmilyExpressionSegment hmilyRight = assembleHmilyExpressionSegment(((BinaryOperationExpression) expression).getRight()); - result = new HmilyBinaryOperationExpression(expression.getStartIndex(), expression.getStopIndex(), hmilyLeft, hmilyRight, - ((BinaryOperationExpression) expression).getOperator(), ((BinaryOperationExpression) expression).getText()); - } else if (expression instanceof ColumnSegment) { - result = assembleHmilyColumnSegment((ColumnSegment) expression); - } else if (expression instanceof CommonExpressionSegment) { - result = new HmilyCommonExpressionSegment(expression.getStartIndex(), - expression.getStopIndex(), ((CommonExpressionSegment) expression).getText()); - } else if (expression instanceof ExpressionProjectionSegment) { - result = new HmilyExpressionProjectionSegment(expression.getStartIndex(), - expression.getStopIndex(), ((ExpressionProjectionSegment) expression).getText()); - } else if (expression instanceof LiteralExpressionSegment) { - result = new HmilyLiteralExpressionSegment(expression.getStartIndex(), - expression.getStopIndex(), ((LiteralExpressionSegment) expression).getLiterals()); - } else if (expression instanceof ParameterMarkerExpressionSegment) { - result = new HmilyParameterMarkerExpressionSegment(expression.getStartIndex(), - expression.getStopIndex(), ((ParameterMarkerExpressionSegment) expression).getParameterMarkerIndex()); - } else if (expression instanceof InExpression && ((InExpression) expression).getLeft() instanceof ColumnSegment) { - // TODO - ColumnSegment column = (ColumnSegment) ((InExpression) expression).getLeft(); - } else if (expression instanceof BetweenExpression && ((BetweenExpression) expression).getLeft() instanceof ColumnSegment) { - // TODO - ColumnSegment column = (ColumnSegment) ((BetweenExpression) expression).getLeft(); - } - return result; - } }