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();