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)
Steps to reproduce the behavior (Required)
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 unknownAnd error is logged:
StarRocks version (Required)