{"record":{"id":"599c45be46a0da37","repo":"prestodb/presto","slug":"not-supported-599c45","errorCode":"NOT_SUPPORTED","errorMessage":"Procedures cannot be called within a transaction (use autocommit mode)","messagePattern":"Procedures cannot be called within a transaction \\(use autocommit mode\\)","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-main-base/src/main/java/com/facebook/presto/execution/CallTask.java","lineNumber":86,"sourceCode":"import static com.google.common.base.Verify.verify;\nimport static com.google.common.util.concurrent.Futures.immediateFuture;\nimport static java.lang.String.format;\nimport static java.util.Arrays.asList;\n\npublic class CallTask\n        implements DDLDefinitionTask<Call>\n{\n    @Override\n    public String getName()\n    {\n        return \"CALL\";\n    }\n\n    @Override\n    public ListenableFuture<?> execute(Call call, TransactionManager transactionManager, Metadata metadata, AccessControl accessControl, Session session, List<Expression> parameters, WarningCollector warningCollector, String query)\n    {\n        if (!transactionManager.getTransactionInfo(session.getRequiredTransactionId()).isAutoCommitContext()) {\n            throw new PrestoException(NOT_SUPPORTED, \"Procedures cannot be called within a transaction (use autocommit mode)\");\n        }\n\n        QualifiedObjectName procedureName = createQualifiedObjectName(session, call, call.getName(), metadata);\n        ConnectorId connectorId = getConnectorIdOrThrow(session, metadata, procedureName.getCatalogName(), call, catalogError);\n        BaseProcedure procedure = metadata.getProcedureRegistry().resolve(connectorId, toSchemaTableName(procedureName));\n        accessControl.checkCanCallProcedure(session.getRequiredTransactionId(), session.getIdentity(), session.getAccessControlContext(), procedureName);\n\n        Map<NodeRef<Parameter>, Expression> parameterLookup = parameterExtractor(call, parameters);\n        checkArgument(procedure instanceof Procedure, \"Must call an inner procedure in CallTask\");\n        Procedure innerProcedure = (Procedure) procedure;\n        Object[] values = extractParameterValuesInOrder(call, innerProcedure, metadata, session, parameterLookup);\n\n        // validate arguments\n        MethodType methodType = innerProcedure.getMethodHandle().type();\n        for (int i = 0; i < innerProcedure.getArguments().size(); i++) {\n            if ((values[i] == null) && methodType.parameterType(i).isPrimitive()) {\n                String name = innerProcedure.getArguments().get(i).getName();\n                throw new PrestoException(INVALID_PROCEDURE_ARGUMENT, \"Procedure argument cannot be null: \" + name);","sourceCodeStart":68,"sourceCodeEnd":104,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/execution/CallTask.java#L68-L104","documentation":"Thrown at the start of CALL execution when the current session already has an open transaction. Stored procedures manage their own commit/rollback boundaries internally, so Presto only permits calling them from a session in autocommit mode.","triggerScenarios":"Thrown at presto-main-base/src/main/java/com/facebook/presto/execution/CallTask.java:86 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Commit or roll back the current transaction (COMMIT / ROLLBACK) before issuing the CALL statement","Run the session in autocommit mode (do not open an explicit transaction around the CALL)","Move the procedure invocation outside transactional scripts or drivers that wrap every statement in a transaction"],"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"}