{"record":{"id":"ff3314b7a8f73cf8","repo":"prestodb/presto","slug":"standalone-lambda","errorCode":"STANDALONE_LAMBDA","errorMessage":"Lambda expression should always be used inside a function","messagePattern":"Lambda expression should always be used inside a function","errorType":"error_code","errorClass":"SemanticException","httpStatus":null,"severity":"error","filePath":"presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/ExpressionAnalyzer.java","lineNumber":1616,"sourceCode":"                default:\n                    throw new IllegalStateException(format(\"Unexpected comparison type: %s\", node.getOperator()));\n            }\n\n            return setExpressionType(node, BOOLEAN);\n        }\n\n        @Override\n        public Type visitFieldReference(FieldReference node, StackableAstVisitorContext<Context> context)\n        {\n            Field field = baseScope.getRelationType().getFieldByIndex(node.getFieldIndex());\n            return handleResolvedField(node, new FieldId(baseScope.getRelationId(), node.getFieldIndex()), field, context);\n        }\n\n        @Override\n        protected Type visitLambdaExpression(LambdaExpression node, StackableAstVisitorContext<Context> context)\n        {\n            if (!context.getContext().isExpectingLambda()) {\n                throw new SemanticException(STANDALONE_LAMBDA, node, \"Lambda expression should always be used inside a function\");\n            }\n\n            List<Type> types = context.getContext().getFunctionInputTypes();\n            List<LambdaArgumentDeclaration> lambdaArguments = node.getArguments();\n\n            if (types.size() != lambdaArguments.size()) {\n                throw new SemanticException(INVALID_PARAMETER_USAGE, node,\n                        format(\"Expected a lambda that takes %s argument(s) but got %s\", types.size(), lambdaArguments.size()));\n            }\n\n            ImmutableList.Builder<Field> fields = ImmutableList.builder();\n            for (int i = 0; i < lambdaArguments.size(); i++) {\n                LambdaArgumentDeclaration lambdaArgument = lambdaArguments.get(i);\n                Type type = types.get(i);\n                fields.add(com.facebook.presto.sql.analyzer.Field.newUnqualified(lambdaArgument.getLocation(), lambdaArgument.getName().getValue(), type));\n                setExpressionType(lambdaArgument, type);\n            }\n","sourceCodeStart":1598,"sourceCodeEnd":1634,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/ExpressionAnalyzer.java#L1598-L1634","documentation":"Analysis error: a lambda expression appeared outside of a function call context. Lambdas in Presto only have meaning as arguments to higher-order functions (map/filter/transform etc.); a bare lambda in an expression list or standalone position is rejected by this guard in the analyzer.","triggerScenarios":"Thrown at presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/ExpressionAnalyzer.java:1616 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Place the lambda inside a higher-order function, e.g. filter(a, x -> x > 0)","Replace the bare lambda with a regular expression","Check for a missing function name or misplaced parenthesis"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}