prestodb/presto · error · SQLException

Prepared SQL is not an update statement:

Error message

Prepared SQL is not an update statement: 

What it means

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).

Source

Thrown at presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoPreparedStatement.java:129

        }
        return getResultSet();
    }

    @Override
    public int executeUpdate()
            throws SQLException
    {
        requireNonBatchStatement();
        return Ints.saturatedCast(executeLargeUpdate());
    }

    @Override
    public long executeLargeUpdate()
            throws SQLException
    {
        requireNonBatchStatement();
        if (super.execute(getExecuteSql(statementName, toValues(parameters)))) {
            throw new SQLException("Prepared SQL is not an update statement: " + originalSql);
        }
        return getLargeUpdateCount();
    }

    @Override
    public boolean execute()
            throws SQLException
    {
        requireNonBatchStatement();
        return super.execute(getExecuteSql(statementName, toValues(parameters)));
    }

    @Override
    public void setNull(int parameterIndex, int sqlType)
            throws SQLException
    {
        checkOpen();
        setParameter(parameterIndex, typedNull(sqlType));

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Use executeQuery() when the prepared statement is a SELECT that returns rows
  2. Verify the original SQL is an update/DDL statement before calling executeUpdate
  3. Handle dynamically-typed statements with generic execute() and branch on its boolean return
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoPreparedStatement.java:129 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/7349252a2d52a894. Report an issue: GitHub.