@LiteralParameters({"p", "s"}) @SqlType("decimal(1,0)") public static long signDecimalShort(@SqlType("decimal(p, s)") long num) { return (long) Math.signum(num); }
@ScalarOperator(CAST) @LiteralParameters("x") @SqlType("varchar(x)") public static Slice castToVarchar(@SqlType(StandardTypes.SMALLINT) long value) { // todo optimize me return utf8Slice(String.valueOf(value)); }
@LiteralParameters({"p", "s"}) @SqlType(StandardTypes.BIGINT) public static long hashCode(@SqlType("decimal(p, s)") Slice value) { return UnscaledDecimal128Arithmetic.hash(value); } }
@ScalarOperator(CAST) @LiteralParameters("x") @SqlType("varchar(x)") public static Slice castToVarchar(@SqlType(StandardTypes.TINYINT) long value) { // todo optimize me return utf8Slice(String.valueOf(value)); }
@ScalarOperator(CAST) @LiteralParameters("x") @SqlType("varchar(x)") public static Slice castToVarchar(@SqlType(StandardTypes.BIGINT) long value) { // todo optimize me return utf8Slice(String.valueOf(value)); }
@LiteralParameters({"p", "s"}) @SqlType(StandardTypes.BIGINT) public static long xxHash64(@SqlType("decimal(p, s)") Slice value) { return XxHash64.hash(value); } }
@ScalarOperator(CAST) @LiteralParameters("x") @SqlType("varchar(x)") public static Slice castToVarchar(@SqlType(StandardTypes.DOUBLE) double value) { return utf8Slice(String.valueOf(value)); }
@ScalarOperator(CAST) @LiteralParameters("x") @SqlType("varchar(x)") public static Slice castToVarchar(@SqlType(StandardTypes.BOOLEAN) boolean value) { return value ? TRUE : FALSE; }
@LiteralParameters("x") @ScalarOperator(CAST) @SqlType(StandardTypes.INTEGER) public static long castToInteger(@SqlType("varchar(x)") Slice slice) { try { return Integer.parseInt(slice.toStringUtf8()); } catch (Exception e) { throw new PrestoException(INVALID_CAST_ARGUMENT, format("Cannot cast '%s' to INT", slice.toStringUtf8())); } }
@LiteralParameters("x") @ScalarOperator(CAST) @SqlType(StandardTypes.TINYINT) public static long castToTinyint(@SqlType("varchar(x)") Slice slice) { try { return Byte.parseByte(slice.toStringUtf8()); } catch (Exception e) { throw new PrestoException(INVALID_CAST_ARGUMENT, format("Cannot cast '%s' to TINYINT", slice.toStringUtf8())); } }
@Description("add the specified amount of date to the given date") @LiteralParameters("x") @ScalarFunction("date_add") @SqlType(StandardTypes.DATE) public static long addFieldValueDate(ConnectorSession session, @SqlType("varchar(x)") Slice unit, @SqlType(StandardTypes.BIGINT) long value, @SqlType(StandardTypes.DATE) long date) { long millis = getDateField(UTC_CHRONOLOGY, unit).add(DAYS.toMillis(date), toIntExact(value)); return MILLISECONDS.toDays(millis); }
@ScalarOperator(OperatorType.CAST) @LiteralParameters("x") @SqlType(LikePatternType.NAME) public static Regex castVarcharToLikePattern(@SqlType("varchar(x)") Slice pattern) { return likePattern(pattern); }
@LiteralParameters("x") @ScalarOperator(XX_HASH_64) @SqlType(StandardTypes.BIGINT) public static long xxHash64(@SqlType("char(x)") Slice slice) { return XxHash64.hash(slice); }
@LiteralParameters("x") @ScalarOperator(OperatorType.CAST) @SqlType(JoniRegexpType.NAME) public static Regex castVarcharToJoniRegexp(@SqlType("varchar(x)") Slice pattern) { return joniRegexp(pattern); }
@LiteralParameters("x") @ScalarOperator(INDETERMINATE) @SqlType(StandardTypes.BOOLEAN) public static boolean indeterminate(@SqlType("varchar(x)") Slice value, @IsNull boolean isNull) { return isNull; } }
@LiteralParameters("x") @ScalarOperator(HASH_CODE) @SqlType(StandardTypes.BIGINT) public static long hashCode(@SqlType("char(x)") Slice value) { return XxHash64.hash(value); }
@ScalarFunction("is_json_scalar") @LiteralParameters("x") @SqlType(StandardTypes.BOOLEAN) public static boolean varcharIsJsonScalar(@SqlType("varchar(x)") Slice json) { return isJsonScalar(json); }
@Description("truncate to the specified precision in the session timezone") @ScalarFunction("date_trunc") @LiteralParameters("x") @SqlType(StandardTypes.DATE) public static long truncateDate(ConnectorSession session, @SqlType("varchar(x)") Slice unit, @SqlType(StandardTypes.DATE) long date) { long millis = getDateField(UTC_CHRONOLOGY, unit).roundFloor(DAYS.toMillis(date)); return MILLISECONDS.toDays(millis); }
@ScalarOperator(OperatorType.CAST) @LiteralParameters("x") @SqlType(CodePointsType.NAME) public static int[] castVarcharToCodePoints(@SqlType("varchar(x)") Slice slice) { return castToCodePoints(slice); }
@ScalarOperator(OperatorType.CAST) @LiteralParameters("x") @SqlType(LikePatternType.NAME) public static Regex castCharToLikePattern(@LiteralParameter("x") Long charLength, @SqlType("char(x)") Slice pattern) { return likePattern(padSpaces(pattern, charLength.intValue())); }