Skip to content

GROUP BY AUTO fails when applying function on the aggregated value #25984

@guyco33

Description

@guyco33

Some examples:

1 )

SELECT id, -sum(v)
FROM (VALUES (1, 100)) AS t(id, v)
GROUP BY AUTO

USER ERROR — EXPRESSION_NOT_SCALAR

io.trino.spi.TrinoException: line 1:12: GROUP BY clause cannot contain aggregations, window functions or grouping operations: [sum(v)]
	at io.trino.sql.analyzer.SemanticExceptions.semanticException(SemanticExceptions.java:58)
	at io.trino.sql.analyzer.SemanticExceptions.semanticException(SemanticExceptions.java:52)
	at io.trino.sql.analyzer.Analyzer.verifyNoAggregateWindowOrGroupingFunctions(Analyzer.java:128)
	at io.trino.sql.analyzer.StatementAnalyzer$Visitor.analyzeGroupBy(StatementAnalyzer.java:4567)
	at io.trino.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:3094)
	at io.trino.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:524)
	at io.trino.sql.tree.QuerySpecification.accept(QuerySpecification.java:155)
	at io.trino.sql.tree.AstVisitor.process(AstVisitor.java:27)
	at io.trino.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:543)
	at io.trino.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:551)
	at io.trino.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:1554)
	at io.trino.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:524)
	at io.trino.sql.tree.Query.accept(Query.java:130)
	at io.trino.sql.tree.AstVisitor.process(AstVisitor.java:27)
	at io.trino.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:543)
	at io.trino.sql.analyzer.StatementAnalyzer.analyze(StatementAnalyzer.java:503)
	at io.trino.sql.analyzer.StatementAnalyzer.analyze(StatementAnalyzer.java:492)
	at io.trino.sql.analyzer.Analyzer.analyze(Analyzer.java:98)
	at io.trino.sql.analyzer.Analyzer.analyze(Analyzer.java:87)
	at io.trino.execution.SqlQueryExecution.analyze(SqlQueryExecution.java:285)
	at io.trino.execution.SqlQueryExecution.<init>(SqlQueryExecution.java:218)
	at io.trino.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:884)
	at io.trino.dispatcher.LocalDispatchQueryFactory.lambda$createDispatchQuery$0(LocalDispatchQueryFactory.java:158)
	at io.trino.$gen.Trino_476____20250609_080908_2.call(Unknown Source)
	at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:128)
	at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:74)
	at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:80)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619)
	at java.base/java.lang.Thread.run(Thread.java:1447)

2 )

SELECT id, abs(sum(v))
FROM (VALUES (1, 100)) AS t(id, v)
GROUP BY AUTO

INTERNAL ERROR — GENERIC_INTERNAL_ERROR

java.lang.RuntimeException: java.lang.RuntimeException: java.lang.IllegalArgumentException: (bigint):bigint is not a scalar function
	at io.trino.metadata.FunctionManager.getScalarFunctionImplementation(FunctionManager.java:97)
	at io.trino.sql.InterpretedFunctionInvoker.invoke(InterpretedFunctionInvoker.java:63)
	at io.trino.sql.ir.optimizer.IrExpressionEvaluator.evaluateInternal(IrExpressionEvaluator.java:339)
	at io.trino.sql.ir.optimizer.IrExpressionEvaluator.evaluate(IrExpressionEvaluator.java:99)
	at io.trino.sql.ir.optimizer.rule.EvaluateCall.apply(EvaluateCall.java:76)
	at io.trino.sql.ir.optimizer.IrExpressionOptimizer.applyRules(IrExpressionOptimizer.java:293)
	at io.trino.sql.ir.optimizer.IrExpressionOptimizer.process(IrExpressionOptimizer.java:168)
	at io.trino.sql.ir.optimizer.IrExpressionOptimizer.process(IrExpressionOptimizer.java:281)
	at io.trino.sql.ir.optimizer.IrExpressionOptimizer.processChildren(IrExpressionOptimizer.java:193)
	at io.trino.sql.ir.optimizer.IrExpressionOptimizer.process(IrExpressionOptimizer.java:161)
	at io.trino.sql.planner.iterative.rule.SimplifyExpressions.rewrite(SimplifyExpressions.java:44)
	at io.trino.sql.planner.iterative.rule.SimplifyExpressions.lambda$createRewrite$0(SimplifyExpressions.java:67)
	at io.trino.sql.planner.iterative.rule.ExpressionRewriteRuleSet$ValuesExpressionRewrite.lambda$apply$0(ExpressionRewriteRuleSet.java:308)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:215)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:727)
	at io.trino.sql.planner.iterative.rule.ExpressionRewriteRuleSet$ValuesExpressionRewrite.apply(ExpressionRewriteRuleSet.java:309)
	at io.trino.sql.planner.iterative.rule.ExpressionRewriteRuleSet$ValuesExpressionRewrite.apply(ExpressionRewriteRuleSet.java:278)
	at io.trino.sql.planner.iterative.IterativeOptimizer.transform(IterativeOptimizer.java:216)
	at io.trino.sql.planner.iterative.IterativeOptimizer.exploreNode(IterativeOptimizer.java:181)
	at io.trino.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:144)
	at io.trino.sql.planner.iterative.IterativeOptimizer.exploreChildren(IterativeOptimizer.java:264)
	at io.trino.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:146)
	at io.trino.sql.planner.iterative.IterativeOptimizer.exploreChildren(IterativeOptimizer.java:264)
	at io.trino.sql.planner.iterative.IterativeOptimizer.exploreGroup(IterativeOptimizer.java:146)
	at io.trino.sql.planner.iterative.IterativeOptimizer.optimizeAndMarkPlanChanges(IterativeOptimizer.java:129)
	at io.trino.sql.planner.optimizations.AdaptivePlanOptimizer.optimize(AdaptivePlanOptimizer.java:33)
	at io.trino.sql.planner.LogicalPlanner.runOptimizer(LogicalPlanner.java:302)
	at io.trino.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:266)
	at io.trino.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:238)
	at io.trino.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:233)
	at io.trino.execution.SqlQueryExecution.doPlanQuery(SqlQueryExecution.java:498)
	at io.trino.execution.SqlQueryExecution.planQuery(SqlQueryExecution.java:478)
	at io.trino.execution.SqlQueryExecution.start(SqlQueryExecution.java:416)
	at io.trino.execution.SqlQueryManager.createQuery(SqlQueryManager.java:272)
	at io.trino.dispatcher.LocalDispatchQuery.startExecution(LocalDispatchQuery.java:150)
	at io.trino.dispatcher.LocalDispatchQuery.lambda$waitForMinimumWorkers$1(LocalDispatchQuery.java:134)
	at io.airlift.concurrent.MoreFutures.lambda$addSuccessCallback$12(MoreFutures.java:570)
	at io.airlift.concurrent.MoreFutures$3.onSuccess(MoreFutures.java:545)
	at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1132)
	at io.trino.$gen.Trino_476____20250609_080908_2.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619)
	at java.base/java.lang.Thread.run(Thread.java:1447)
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: (bigint):bigint is not a scalar function
	at io.trino.metadata.InternalFunctionBundle.getScalarFunctionImplementation(InternalFunctionBundle.java:132)
	at io.trino.metadata.GlobalFunctionCatalog.getScalarFunctionImplementation(GlobalFunctionCatalog.java:196)
	at io.trino.metadata.FunctionManager.getScalarFunctionImplementationInternal(FunctionManager.java:109)
	at io.trino.metadata.FunctionManager.lambda$getScalarFunctionImplementation$0(FunctionManager.java:93)
	at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4860)
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3551)
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2302)
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2177)
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2068)
	at com.google.common.cache.LocalCache.get(LocalCache.java:3986)
	at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4855)
	at com.google.common.cache.ForwardingCache.get(ForwardingCache.java:57)
	at io.trino.cache.CacheUtils.uncheckedCacheGet(CacheUtils.java:39)
	at io.trino.metadata.FunctionManager.getScalarFunctionImplementation(FunctionManager.java:93)
	... 47 more
Caused by: java.lang.IllegalArgumentException: (bigint):bigint is not a scalar function
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:217)
	at io.trino.metadata.InternalFunctionBundle.specializeScalarFunction(InternalFunctionBundle.java:140)
	at io.trino.metadata.InternalFunctionBundle.lambda$getScalarFunctionImplementation$0(InternalFunctionBundle.java:128)
	at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4860)
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3551)
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2302)
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2177)
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2068)
	at com.google.common.cache.LocalCache.get(LocalCache.java:3986)
	at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4855)
	at com.google.common.cache.ForwardingCache.get(ForwardingCache.java:57)
	at io.trino.cache.CacheUtils.uncheckedCacheGet(CacheUtils.java:39)
	at io.trino.metadata.InternalFunctionBundle.getScalarFunctionImplementation(InternalFunctionBundle.java:125)
	... 60 more

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions