diff --git a/core/src/main/java/org/opensearch/sql/expression/function/CollectionUDF/MVIndexFunctionImp.java b/core/src/main/java/org/opensearch/sql/expression/function/CollectionUDF/MVIndexFunctionImp.java index a244e290ae1..ec24ad4a498 100644 --- a/core/src/main/java/org/opensearch/sql/expression/function/CollectionUDF/MVIndexFunctionImp.java +++ b/core/src/main/java/org/opensearch/sql/expression/function/CollectionUDF/MVIndexFunctionImp.java @@ -15,6 +15,7 @@ import org.apache.calcite.rex.RexBuilder; import org.apache.calcite.rex.RexNode; import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.sql.type.SqlTypeName; import org.opensearch.sql.expression.function.PPLFuncImpTable; /** @@ -64,12 +65,16 @@ public RexNode resolve(RexBuilder builder, RexNode... args) { /** Non-widening integer addition for internal, int-domain array-index math. */ private static RexNode add(RexBuilder builder, RexNode left, RexNode right) { - return builder.makeCall(SqlStdOperatorTable.PLUS, left, right); + RexNode result = builder.makeCall(SqlStdOperatorTable.PLUS, left, right); + return builder.makeCast( + builder.getTypeFactory().createSqlType(SqlTypeName.INTEGER), result); } /** Non-widening integer subtraction for internal, int-domain array-index math. */ private static RexNode subtract(RexBuilder builder, RexNode left, RexNode right) { - return builder.makeCall(SqlStdOperatorTable.MINUS, left, right); + RexNode result = builder.makeCall(SqlStdOperatorTable.MINUS, left, right); + return builder.makeCast( + builder.getTypeFactory().createSqlType(SqlTypeName.INTEGER), result); } /**