diff --git a/core/trino-main/src/main/java/io/trino/operator/scalar/MapTransformValuesFunction.java b/core/trino-main/src/main/java/io/trino/operator/scalar/MapTransformValuesFunction.java index f64852eb05cc..1c1326d7106e 100644 --- a/core/trino-main/src/main/java/io/trino/operator/scalar/MapTransformValuesFunction.java +++ b/core/trino-main/src/main/java/io/trino/operator/scalar/MapTransformValuesFunction.java @@ -233,14 +233,16 @@ private static MethodHandle generateTransform(Type keyType, Type valueType, Type "Close builder before throwing to avoid subsequent calls finding it in an inconsistent state if we are in a TRY() call.", transformedValueElement.set(function.invoke("apply", Object.class, keyElement.cast(Object.class), valueElement.cast(Object.class)) .cast(transformedValueJavaType)), - new BytecodeBlock() - .append(mapBlockBuilder.invoke("closeEntry", BlockBuilder.class).pop()) - .append(pageBuilder.invoke("declarePosition", void.class)) - .putVariable(transformationException) - .append(invokeStatic(Throwables.class, "throwIfUnchecked", void.class, transformationException)) - .append(newInstance(RuntimeException.class, transformationException)) - .throwObject(), - type(Throwable.class))) + ImmutableList.of( + new TryCatch.CatchBlock( + new BytecodeBlock() + .append(mapBlockBuilder.invoke("closeEntry", BlockBuilder.class).pop()) + .append(pageBuilder.invoke("declarePosition", void.class)) + .putVariable(transformationException) + .append(invokeStatic(Throwables.class, "throwIfUnchecked", void.class, transformationException)) + .append(newInstance(RuntimeException.class, transformationException)) + .throwObject(), + ImmutableList.of(type(Throwable.class)))))) .append(keySqlType.invoke("appendTo", void.class, block, position, blockBuilder)) .append(writeTransformedValueElement))); diff --git a/pom.xml b/pom.xml index 526607fbf8fb..bff43d621961 100644 --- a/pom.xml +++ b/pom.xml @@ -684,7 +684,7 @@ io.airlift bytecode - 1.2 + 1.4 @@ -1558,7 +1558,7 @@ org.ow2.asm asm - 9.1 + 9.2