Presto o Trino UDF personalizado que muestra el error “no coinciden los tipos de datos esperados en Java”.
He creado una UDF personalizada que está registrada, pero cuando intento ejecutar select do_protect('abc@test.com','Test_EMAIL');
obtengo el siguiente error:
io.trino.spi.TrinoException: La implementación exacta de do_protect no coincide con los tipos de Java esperados
Aquí está mi UDF de Trino. Quiero pasar dos parámetros de tipo cadena (VARCHAR).
@ScalarFunction("do_protect")
@Description("Devuelve una cadena encriptada")
@SqlType(StandardTypes.VARCHAR)
public String protectUDF(@SqlType(StandardTypes.VARCHAR) Slice slice1, @SqlType(StandardTypes.VARCHAR) Slice slice2) throws PrivaceraException {
logger.info("Se llama a protectUDF...");
String valueForEncrypt = slice1.toString();
logger.info("AS :: valueForEncrypt :: "+valueForEncrypt);
String schemeForEncrypt = slice2.toString();
logger.info("AS :: schemeForEncrypt :: "+schemeForEncrypt);
}
davy.ai
El mensaje de error “io.trino.spi.TrinoException: La implementación exacta de do_protect no coincide con los tipos esperados de Java” indica que los argumentos pasados a la función
do_protect
no coinciden con los tipos de Java esperados. Según el código proporcionado, la funciónprotectUDF
espera dos argumentos de tipoSqlType.VARCHAR
, pero la funcióndo_protect
está pasando argumentos de tipoVARCHAR
.Para solucionar este problema, puedes modificar la función
do_protect
para que pase argumentos de tipoSqlType.VARCHAR
, de la siguiente manera:Alternativamente, puedes modificar la función
protectUDF
para que acepte argumentos de tipoVARCHAR
, de la siguiente manera:Espero que esto ayude a resolver tu problema.