From 0f1b9fe616855e8b885a5737ea70c094e88829ab Mon Sep 17 00:00:00 2001 From: Dain Sundstrom Date: Fri, 24 Dec 2021 16:01:35 -0800 Subject: [PATCH] Fix ClassNotFoundException in StateCompiler --- .../io/trino/operator/aggregation/state/StateCompiler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/trino-main/src/main/java/io/trino/operator/aggregation/state/StateCompiler.java b/core/trino-main/src/main/java/io/trino/operator/aggregation/state/StateCompiler.java index 97f62c0b5dec..bd68892ea749 100644 --- a/core/trino-main/src/main/java/io/trino/operator/aggregation/state/StateCompiler.java +++ b/core/trino-main/src/main/java/io/trino/operator/aggregation/state/StateCompiler.java @@ -182,7 +182,9 @@ public static AccumulatorStateSerializer generat generateSerialize(definition, callSiteBinder, clazz, fields); generateDeserialize(definition, callSiteBinder, clazz, fields); - Class serializerClass = defineClass(definition, AccumulatorStateSerializer.class, callSiteBinder.getBindings(), new DynamicClassLoader(clazz.getClassLoader())); + // grouped aggregation state fields use engine classes, so generated class must be able to see both plugin and system classes + DynamicClassLoader classLoader = new DynamicClassLoader(clazz.getClassLoader(), StateCompiler.class.getClassLoader()); + Class serializerClass = defineClass(definition, AccumulatorStateSerializer.class, callSiteBinder.getBindings(), classLoader); try { //noinspection unchecked return (AccumulatorStateSerializer) serializerClass.getConstructor().newInstance();