@ScalarOperator(ADD)
    @SqlType(StandardTypes.INTEGER)
    public static long add(@SqlType(StandardTypes.INTEGER) long left, @SqlType(StandardTypes.INTEGER) long right)
    {
        try {
            return Math.addExact((int) left, (int) right);
        }
        catch (ArithmeticException e) {
            throw new PrestoException(NUMERIC_VALUE_OUT_OF_RANGE, format("integer addition overflow: %s + %s", left, right), e);
        }
    }
@Test
    public void testAdd()
    {
        assertFunction("INTEGER'37' + INTEGER'37'", INTEGER, 37 + 37);
        assertFunction("INTEGER'37' + INTEGER'17'", INTEGER, 37 + 17);
        assertFunction("INTEGER'17' + INTEGER'37'", INTEGER, 17 + 37);
        assertFunction("INTEGER'17' + INTEGER'17'", INTEGER, 17 + 17);
        assertNumericOverflow(format("INTEGER'%s' + INTEGER'1'", Integer.MAX_VALUE), "integer addition overflow: 2147483647 + 1");
    }