StarRocks/starrocks

Global UDF not woking in async materialized view

Aberta

#76.240 aberto em 12 de jul. de 2026

 (1 comentário) (0 reação) (0 responsável)Java (1.246 forks)batch import
good first issuetype/bug

Métricas do repositório

Stars
 (5.717 estrelas)
Métricas de merge de PR
 (Mesclagem média 1d 5h) (1.000 fundiu PRs em 30d)

Description

Steps to reproduce the behavior (Required)

CREATE TABLE example_table
(
    col1 VARCHAR(10)
)
ENGINE = olap
DUBLICATE KEY(col1 )
DISTRIBUTED BY HASH(col1);
CREATE OR REPLACE GLOBAL FUNCTION test_func(a STRING)
    RETURNS
      a;
CREATE MATERIALIZED VIEW IF NOT EXISTS udf_bug_test
REFRESH async AS
select test_func(item) from example_table;

Expected behavior (Required)

Materialized view is created and can be used for rewrite query

Real behavior (Required)

select QUERY_REWRITE_STATUS from information_schema.materialized_views WHERE table_name = 'udf_bug_test' UNKNOWN: MV plan is not in cache, valid check is unknown

And error is logged:

2026-07-12 22:53:04.640+03:00 WARN (mv-plan-cache-4|105) [MvPlanContextBuilder.doGetOptimizePlan():67] Failed to build mv plan context
 com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException: Cannot invoke "com.starrocks.catalog.UserIdentity.isEphemeral()" because "userIdentity" is null
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2085)
	at com.google.common.cache.LocalCache.get(LocalCache.java:4011)
	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4034)
	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5010)
	at com.starrocks.authorization.AuthorizationMgr.mergePrivilegeCollection(AuthorizationMgr.java:1005)
	at com.starrocks.authorization.NativeAccessController.checkFunctionAction(NativeAccessController.java:295)
	at com.starrocks.authorization.NativeAccessController.checkGlobalFunctionAction(NativeAccessController.java:173)
	at com.starrocks.sql.analyzer.Authorizer.checkGlobalFunctionAction(Authorizer.java:277)
	at com.starrocks.sql.analyzer.AnalyzerUtils.getGlobalUdfFunction(AnalyzerUtils.java:260)
	at com.starrocks.sql.analyzer.AnalyzerUtils.getUdfFunction(AnalyzerUtils.java:275)
	at com.starrocks.sql.analyzer.FunctionAnalyzer.getAnalyzedFunctionImpl(FunctionAnalyzer.java:889)
	at com.starrocks.sql.analyzer.FunctionAnalyzer.getAnalyzedFunction(FunctionAnalyzer.java:778)
	at com.starrocks.sql.analyzer.ExpressionAnalyzer$Visitor.visitFunctionCall(ExpressionAnalyzer.java:1115)
	at com.starrocks.sql.analyzer.ExpressionAnalyzer$Visitor.visitFunctionCall(ExpressionAnalyzer.java:443)
	at com.starrocks.sql.ast.expression.FunctionCallExpr.accept(FunctionCallExpr.java:363)
	at com.starrocks.sql.ast.AstVisitor.visit(AstVisitor.java:94)
	at com.starrocks.sql.analyzer.ExpressionAnalyzer.bottomUpAnalyze(ExpressionAnalyzer.java:439)
	at com.starrocks.sql.analyzer.ExpressionAnalyzer.analyze(ExpressionAnalyzer.java:155)
	at com.starrocks.sql.analyzer.ExpressionAnalyzer.analyzeExpression(ExpressionAnalyzer.java:2192)
	at com.starrocks.sql.analyzer.SelectAnalyzer.analyzeExpression(SelectAnalyzer.java:875)
	at com.starrocks.sql.analyzer.SelectAnalyzer.analyzeSelect(SelectAnalyzer.java:303)
	at com.starrocks.sql.analyzer.SelectAnalyzer.analyze(SelectAnalyzer.java:90)
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.visitSelect(QueryAnalyzer.java:520)
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.visitSelect(QueryAnalyzer.java:334)
	at com.starrocks.sql.ast.SelectRelation.accept(SelectRelation.java:234)
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.process(QueryAnalyzer.java:342)
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.visitQueryRelation(QueryAnalyzer.java:357)
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.visitQueryStatement(QueryAnalyzer.java:347)
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.visitQueryStatement(QueryAnalyzer.java:334)
	at com.starrocks.sql.ast.QueryStatement.accept(QueryStatement.java:71)
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.process(QueryAnalyzer.java:342)
	at com.starrocks.sql.analyzer.QueryAnalyzer.analyze(QueryAnalyzer.java:144)
	at com.starrocks.sql.analyzer.Analyzer$AnalyzerVisitor.visitQueryStatement(Analyzer.java:498)
	at com.starrocks.sql.analyzer.Analyzer$AnalyzerVisitor.visitQueryStatement(Analyzer.java:201)
	at com.starrocks.sql.ast.QueryStatement.accept(QueryStatement.java:71)
	at com.starrocks.sql.ast.AstVisitor.visit(AstVisitor.java:94)
	at com.starrocks.sql.analyzer.Analyzer.analyze(Analyzer.java:198)
	at com.starrocks.sql.optimizer.rule.transformation.materialization.MvUtils.getRuleOptimizedLogicalPlan(MvUtils.java:538)
	at com.starrocks.sql.optimizer.MaterializedViewOptimizer.optimizeImpl(MaterializedViewOptimizer.java:120)
	at com.starrocks.sql.optimizer.MaterializedViewOptimizer.optimize(MaterializedViewOptimizer.java:42)
	at com.starrocks.sql.optimizer.MaterializedViewOptimizer.optimize(MaterializedViewOptimizer.java:33)
	at com.starrocks.sql.optimizer.MvPlanContextBuilder.lambda$getPlanContext$0(MvPlanContextBuilder.java:49)
	at com.starrocks.sql.optimizer.MvPlanContextBuilder.doGetOptimizePlan(MvPlanContextBuilder.java:64)
	at com.starrocks.sql.optimizer.MvPlanContextBuilder.getPlanContext(MvPlanContextBuilder.java:49)
	at com.starrocks.sql.optimizer.CachingMvPlanContextBuilder.loadMvPlanContext(CachingMvPlanContextBuilder.java:227)
	at com.starrocks.sql.optimizer.CachingMvPlanContextBuilder$1.lambda$asyncLoad$0(CachingMvPlanContextBuilder.java:79)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.NullPointerException: Cannot invoke "com.starrocks.catalog.UserIdentity.isEphemeral()" because "userIdentity" is null
	at com.starrocks.authorization.AuthorizationMgr.loadPrivilegeCollection(AuthorizationMgr.java:1028)
	at com.starrocks.authorization.AuthorizationMgr$1.load(AuthorizationMgr.java:104)
	at com.starrocks.authorization.AuthorizationMgr$1.load(AuthorizationMgr.java:99)
	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3570)
	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2312)
	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2189)
	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2079)
	... 49 more

StarRocks version (Required)

  • 4.1.1-14b7e3f

Guia do colaborador