@ScalarOperator(SUBTRACT)
    @SqlType(StandardTypes.INTEGER)
    public static long subtract(@SqlType(StandardTypes.INTEGER) long left, @SqlType(StandardTypes.INTEGER) long right)
    {
        try {
            return Math.subtractExact((int) left, (int) right);
        }
        catch (ArithmeticException e) {
            throw new PrestoException(NUMERIC_VALUE_OUT_OF_RANGE, format("integer subtraction overflow: %s - %s", left, right), e);
        }
    }
@Test
    public void testSubtract()
    {
        assertFunction("INTEGER'37' - INTEGER'37'", INTEGER, 0);
        assertFunction("INTEGER'37' - INTEGER'17'", INTEGER, 37 - 17);
        assertFunction("INTEGER'17' - INTEGER'37'", INTEGER, 17 - 37);
        assertFunction("INTEGER'17' - INTEGER'17'", INTEGER, 0);
        assertNumericOverflow(format("INTEGER'%s' - INTEGER'1'", Integer.MIN_VALUE), "integer subtraction overflow: -2147483648 - 1");
    }