@ScalarOperator(ADD)
    @SqlType(StandardTypes.TINYINT)
    public static long add(@SqlType(StandardTypes.TINYINT) long left, @SqlType(StandardTypes.TINYINT) long right)
    {
        try {
            return SignedBytes.checkedCast(left + right);
        }
        catch (IllegalArgumentException e) {
            throw new PrestoException(NUMERIC_VALUE_OUT_OF_RANGE, format("tinyint addition overflow: %s + %s", left, right), e);
        }
    }
@Test
    public void testAdd()
    {
        assertFunction("TINYINT'37' + TINYINT'37'", TINYINT, (byte) (37 + 37));
        assertFunction("TINYINT'37' + TINYINT'17'", TINYINT, (byte) (37 + 17));
        assertFunction("TINYINT'17' + TINYINT'37'", TINYINT, (byte) (17 + 37));
        assertFunction("TINYINT'17' + TINYINT'17'", TINYINT, (byte) (17 + 17));
        assertNumericOverflow(format("TINYINT'%s' + TINYINT'1'", Byte.MAX_VALUE), "tinyint addition overflow: 127 + 1");
    }