Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: NPE occurs in a query expression #43867

Open
keizer619 opened this issue Mar 5, 2025 · 0 comments
Open

[Bug]: NPE occurs in a query expression #43867

keizer619 opened this issue Mar 5, 2025 · 0 comments
Labels
needTriage The issue has to be inspected and labeled manually Type/Bug userCategory/Compilation

Comments

@keizer619
Copy link
Member

Description

This occurs in following lines of integration sample from U7 onward (Works on U6)

https://github.com/ballerina-guides/integration-samples/blob/main/data_integration/transformation/json_to_json.bal#L9-L10

Error

Compiling source
	integration_samples/transformation:0.1.0
WARNING [transformation] Detected an attempt to compile this package using Swan Lake Update 8. However, this package was built using Swan Lake Update 7. To ensure compatibility, the Dependencies.toml file will be updated with the latest versions that are compatible with Update 8.
ballerina: Oh no, something really went wrong. Bad. Sad.

We appreciate it if you can report the code that broke Ballerina in
https://github.com/ballerina-platform/ballerina-lang/issues with the
log you get below and your sample code.

We thank you for helping make us better.

[2025-03-04 17:03:15,850] SEVERE {b7a.log.crash} - Cannot read field "name" because "member.symbol" is null 
java.lang.NullPointerException: Cannot read field "name" because "member.symbol" is null
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.lambda$transform$0(SymbolResolver.java:1454)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.transform(SymbolResolver.java:1453)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.transform(SymbolResolver.java:149)
	at org.wso2.ballerinalang.compiler.tree.types.BLangTupleTypeNode.apply(BLangTupleTypeNode.java:73)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.resolveTypeNode(SymbolResolver.java:541)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.resolveTypeNode(SymbolResolver.java:520)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.handleInputClauseVariables(QueryTypeChecker.java:750)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:729)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:108)
	at org.wso2.ballerinalang.compiler.tree.clauses.BLangFromClause.accept(BLangFromClause.java:48)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.lambda$checkQueryType$0(QueryTypeChecker.java:179)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.checkQueryType(QueryTypeChecker.java:179)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:149)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:108)
	at org.wso2.ballerinalang.compiler.tree.expressions.BLangQueryExpr.accept(BLangQueryExpr.java:122)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:407)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:348)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingField(TypeChecker.java:7668)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.validateSpecifiedFields(TypeChecker.java:2682)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingConstructorCompatibility(TypeChecker.java:2555)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:2332)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:216)
	at org.wso2.ballerinalang.compiler.tree.expressions.BLangRecordLiteral.accept(BLangRecordLiteral.java:81)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:407)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:352)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExprSilent(TypeChecker.java:3686)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExprSilent(TypeChecker.java:3700)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.solveSelectTypeAndResolveType(QueryTypeChecker.java:423)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.resolveQueryType(QueryTypeChecker.java:293)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.checkQueryType(QueryTypeChecker.java:184)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:6132)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:216)
	at org.wso2.ballerinalang.compiler.tree.expressions.BLangQueryExpr.accept(BLangQueryExpr.java:122)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:407)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:348)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingField(TypeChecker.java:7668)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.validateSpecifiedFields(TypeChecker.java:2682)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingConstructorCompatibility(TypeChecker.java:2552)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingConstructorCompatibility(TypeChecker.java:2512)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:2332)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:216)
	at org.wso2.ballerinalang.compiler.tree.expressions.BLangRecordLiteral.accept(BLangRecordLiteral.java:81)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:407)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:348)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:3979)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:216)
	at org.wso2.ballerinalang.compiler.tree.expressions.BLangLetExpression.accept(BLangLetExpression.java:65)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:407)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:379)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:615)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
	at org.wso2.ballerinalang.compiler.tree.BLangExprFunctionBody.accept(BLangExprFunctionBody.java:42)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4291)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:566)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
	at org.wso2.ballerinalang.compiler.tree.BLangFunction.accept(BLangFunction.java:81)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4291)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4265)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:366)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
	at org.wso2.ballerinalang.compiler.tree.BLangPackage.accept(BLangPackage.java:172)
	at org.wso2.ballerinalang.compiler.tree.SimpleBLangNodeAnalyzer.visitNode(SimpleBLangNodeAnalyzer.java:215)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyze(SemanticAnalyzer.java:304)
	at io.ballerina.projects.internal.CompilerPhaseRunner.typeCheck(CompilerPhaseRunner.java:188)
	at io.ballerina.projects.internal.CompilerPhaseRunner.performTypeCheckPhases(CompilerPhaseRunner.java:114)
	at io.ballerina.projects.ModuleContext.compileInternal(ModuleContext.java:435)
	at io.ballerina.projects.ModuleCompilationState$1.compile(ModuleCompilationState.java:45)
	at io.ballerina.projects.ModuleContext.compile(ModuleContext.java:383)
	at io.ballerina.projects.PackageCompilation.compileModulesInternal(PackageCompilation.java:208)
	at io.ballerina.projects.PackageCompilation.compileModules(PackageCompilation.java:192)
	at io.ballerina.projects.PackageCompilation.compile(PackageCompilation.java:99)
	at io.ballerina.projects.PackageCompilation.from(PackageCompilation.java:94)
	at io.ballerina.projects.PackageContext.getPackageCompilation(PackageContext.java:242)
	at io.ballerina.projects.Package.getCompilation(Package.java:150)
	at io.ballerina.projects.Package.runCodeGeneratorPlugins(Package.java:319)
	at io.ballerina.cli.task.CompileTask.execute(CompileTask.java:142)
	at io.ballerina.cli.TaskExecutor.executeTasks(TaskExecutor.java:40)
	at io.ballerina.cli.cmd.BuildCommand.execute(BuildCommand.java:288)
	at java.base/java.util.Optional.ifPresent(Optional.java:178)
	at io.ballerina.cli.launcher.Main.main(Main.java:58)
 
ballerina: Oh no, something really went wrong. Bad. Sad.

We appreciate it if you can report the code that broke Ballerina in
https://github.com/ballerina-platform/ballerina-lang/issues with the
log you get below and your sample code.

We thank you for helping make us better.

[2025-03-04 17:03:15,923] SEVERE {b7a.log.crash} - Cannot read field "name" because "member.symbol" is null 
java.lang.NullPointerException: Cannot read field "name" because "member.symbol" is null
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.lambda$transform$0(SymbolResolver.java:1454)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.transform(SymbolResolver.java:1453)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.transform(SymbolResolver.java:149)
	at org.wso2.ballerinalang.compiler.tree.types.BLangTupleTypeNode.apply(BLangTupleTypeNode.java:73)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.resolveTypeNode(SymbolResolver.java:541)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolResolver.resolveTypeNode(SymbolResolver.java:520)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.handleInputClauseVariables(QueryTypeChecker.java:750)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:729)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:108)
	at org.wso2.ballerinalang.compiler.tree.clauses.BLangFromClause.accept(BLangFromClause.java:48)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.lambda$checkQueryType$0(QueryTypeChecker.java:179)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.checkQueryType(QueryTypeChecker.java:179)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:149)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.visit(QueryTypeChecker.java:108)
	at org.wso2.ballerinalang.compiler.tree.expressions.BLangQueryExpr.accept(BLangQueryExpr.java:122)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:407)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:348)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingField(TypeChecker.java:7668)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.validateSpecifiedFields(TypeChecker.java:2682)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingConstructorCompatibility(TypeChecker.java:2555)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:2332)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:216)
	at org.wso2.ballerinalang.compiler.tree.expressions.BLangRecordLiteral.accept(BLangRecordLiteral.java:81)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:407)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:352)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExprSilent(TypeChecker.java:3686)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExprSilent(TypeChecker.java:3700)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.solveSelectTypeAndResolveType(QueryTypeChecker.java:423)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.resolveQueryType(QueryTypeChecker.java:293)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.QueryTypeChecker.checkQueryType(QueryTypeChecker.java:184)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:6132)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:216)
	at org.wso2.ballerinalang.compiler.tree.expressions.BLangQueryExpr.accept(BLangQueryExpr.java:122)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:407)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:348)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingField(TypeChecker.java:7668)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.validateSpecifiedFields(TypeChecker.java:2682)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingConstructorCompatibility(TypeChecker.java:2552)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkMappingConstructorCompatibility(TypeChecker.java:2512)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:2332)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:216)
	at org.wso2.ballerinalang.compiler.tree.expressions.BLangRecordLiteral.accept(BLangRecordLiteral.java:81)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:407)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:348)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:3979)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.visit(TypeChecker.java:216)
	at org.wso2.ballerinalang.compiler.tree.expressions.BLangLetExpression.accept(BLangLetExpression.java:65)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:407)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.TypeChecker.checkExpr(TypeChecker.java:379)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:615)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
	at org.wso2.ballerinalang.compiler.tree.BLangExprFunctionBody.accept(BLangExprFunctionBody.java:42)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4291)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:566)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
	at org.wso2.ballerinalang.compiler.tree.BLangFunction.accept(BLangFunction.java:81)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4291)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyzeNode(SemanticAnalyzer.java:4265)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:366)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.visit(SemanticAnalyzer.java:253)
	at org.wso2.ballerinalang.compiler.tree.BLangPackage.accept(BLangPackage.java:172)
	at org.wso2.ballerinalang.compiler.tree.SimpleBLangNodeAnalyzer.visitNode(SimpleBLangNodeAnalyzer.java:215)
	at org.wso2.ballerinalang.compiler.semantics.analyzer.SemanticAnalyzer.analyze(SemanticAnalyzer.java:304)
	at io.ballerina.projects.internal.CompilerPhaseRunner.typeCheck(CompilerPhaseRunner.java:188)
	at io.ballerina.projects.internal.CompilerPhaseRunner.performTypeCheckPhases(CompilerPhaseRunner.java:114)
	at io.ballerina.projects.ModuleContext.compileInternal(ModuleContext.java:435)
	at io.ballerina.projects.ModuleCompilationState$1.compile(ModuleCompilationState.java:45)
	at io.ballerina.projects.ModuleContext.compile(ModuleContext.java:383)
	at io.ballerina.projects.PackageCompilation.compileModulesInternal(PackageCompilation.java:208)
	at io.ballerina.projects.PackageCompilation.compileModules(PackageCompilation.java:192)
	at io.ballerina.projects.PackageCompilation.compile(PackageCompilation.java:99)
	at io.ballerina.projects.PackageCompilation.from(PackageCompilation.java:94)
	at io.ballerina.projects.PackageContext.getPackageCompilation(PackageContext.java:242)
	at io.ballerina.projects.Package.getCompilation(Package.java:150)
	at io.ballerina.projects.Package.runCodeModifierPlugins(Package.java:361)
	at io.ballerina.cli.task.CompileTask.execute(CompileTask.java:150)
	at io.ballerina.cli.TaskExecutor.executeTasks(TaskExecutor.java:40)
	at io.ballerina.cli.cmd.BuildCommand.execute(BuildCommand.java:288)
	at java.base/java.util.Optional.ifPresent(Optional.java:178)
	at io.ballerina.cli.launcher.Main.main(Main.java:58)
 
ERROR [transformation:(1:1,1:1)] Compilation failed due to: Cannot read field "name" because "member.symbol" is null
error: compilation contains errors

Steps to Reproduce

No response

Affected Version(s)

No response

OS, DB, other environment details and versions

No response

Related area

-> Compilation

Related issue(s) (optional)

No response

Suggested label(s) (optional)

No response

Suggested assignee(s) (optional)

No response

@ballerina-bot ballerina-bot added needTriage The issue has to be inspected and labeled manually userCategory/Compilation labels Mar 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needTriage The issue has to be inspected and labeled manually Type/Bug userCategory/Compilation
Projects
None yet
Development

No branches or pull requests

2 participants