The isCoercibleTo check is causing test failures in UpsertSelectTest. 

For ex:
UpsertSelectTest.testUpsertSelectRunOnServer is failing. Debugging tells me that in ProjectionCompiler.compile (line 154), the expression is a LongAddExpression (whose data type is Long) and the targetType is Integer. Calling CoerceExpression.create fails as we don't allow coercing long to integer. 

The decision to return a LongAddExpression (for I + 1) is made in the ArithmeticExpressionFactory. Specific code snippet, line 963 in ExpressionCompiler:

else if (type.isCoercibleTo(PDataType.LONG)) {
                            if (theType == null) {
                                theType = PDataType.LONG;
                            }
                      }

if(theType == LONG)
return new LongAddExpression()