if (theType == PDataType.DECIMAL) {
return new DecimalSubtractExpression(children);
} else if (theType == PDataType.LONG) {
return new LongSubtractExpression(children);
} else if (theType == PDataType.DOUBLE) {
return new DoubleSubtractExpression(children);
} else if (theType == null) {
return LiteralExpression.newConstant(null, theType, isDeterministic);
} else if (theType == PDataType.TIMESTAMP || theType == PDataType.UNSIGNED_TIMESTAMP) {
return new TimestampSubtractExpression(children);
} else if (theType.isCoercibleTo(PDataType.DATE)) {