{"record":{"id":"7349252a2d52a894","repo":"prestodb/presto","slug":"prepared-sql-is-not-an-update-statement","errorCode":null,"errorMessage":"Prepared SQL is not an update statement: ","messagePattern":"Prepared SQL is not an update statement: ","errorType":"exception","errorClass":"SQLException","httpStatus":null,"severity":"error","filePath":"presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoPreparedStatement.java","lineNumber":129,"sourceCode":"        }\n        return getResultSet();\n    }\n\n    @Override\n    public int executeUpdate()\n            throws SQLException\n    {\n        requireNonBatchStatement();\n        return Ints.saturatedCast(executeLargeUpdate());\n    }\n\n    @Override\n    public long executeLargeUpdate()\n            throws SQLException\n    {\n        requireNonBatchStatement();\n        if (super.execute(getExecuteSql(statementName, toValues(parameters)))) {\n            throw new SQLException(\"Prepared SQL is not an update statement: \" + originalSql);\n        }\n        return getLargeUpdateCount();\n    }\n\n    @Override\n    public boolean execute()\n            throws SQLException\n    {\n        requireNonBatchStatement();\n        return super.execute(getExecuteSql(statementName, toValues(parameters)));\n    }\n\n    @Override\n    public void setNull(int parameterIndex, int sqlType)\n            throws SQLException\n    {\n        checkOpen();\n        setParameter(parameterIndex, typedNull(sqlType));","sourceCodeStart":111,"sourceCodeEnd":147,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoPreparedStatement.java#L111-L147","documentation":"executeLargeUpdate executes the prepared statement via 'EXECUTE <statementName>'; if super.execute returns true the statement returned a result set, so it is not an update. This SQLException fires when the caller calls executeUpdate/executeLargeUpdate on a prepared query statement (e.g. a SELECT).","triggerScenarios":"Thrown at presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoPreparedStatement.java:129 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use executeQuery() when the prepared statement is a SELECT that returns rows","Verify the original SQL is an update/DDL statement before calling executeUpdate","Handle dynamically-typed statements with generic execute() and branch on its boolean return"],"exampleFix":null,"handlingStrategy":"try-catch","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"}