Updated: 2022/Sep/29
Please read Privacy Policy. It's for your privacy.
SQLITE3_STMT_EXPLAIN(3) Library Functions Manual SQLITE3_STMT_EXPLAIN(3)
NAME
sqlite3_stmt_explain - change the EXPLAIN setting for a prepared
statement
SYNOPSIS
#include <sqlite3.h>
int
sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode);
DESCRIPTION
The sqlite3_stmt_explain(S,E) interface changes the EXPLAIN setting for
prepared statement S. If E is zero, then S becomes a normal prepared
statement. If E is 1, then S behaves as if its SQL text began with
"EXPLAIN". If E is 2, then S behaves as if its SQL text began with
"EXPLAIN QUERY PLAN".
Calling sqlite3_stmt_explain(S,E) might cause S to be reprepared. SQLite
tries to avoid a reprepare, but a reprepare might be necessary on the
first transition into EXPLAIN or EXPLAIN QUERY PLAN mode.
Because of the potential need to reprepare, a call to
sqlite3_stmt_explain(S,E) will fail with SQLITE_ERROR if S cannot be
reprepared because it was created using sqlite3_prepare() instead of the
newer sqlite3_prepare_v2() or sqlite3_prepare_v3() interfaces and hence
has no saved SQL text with which to reprepare.
Changing the explain setting for a prepared statement does not change the
original SQL text for the statement. Hence, if the SQL text originally
began with EXPLAIN or EXPLAIN QUERY PLAN, but sqlite3_stmt_explain(S,0)
is called to convert the statement into an ordinary statement, the
EXPLAIN or EXPLAIN QUERY PLAN keywords will still appear in the
sqlite3_sql(S) output, even though the statement now acts like a normal
SQL statement.
This routine returns SQLITE_OK if the explain mode is successfully
changed, or an error code if the explain mode could not be changed. The
explain mode cannot be changed while a statement is active. Hence, it is
good practice to call sqlite3_reset(S) immediately prior to calling
sqlite3_stmt_explain(S,E).
IMPLEMENTATION NOTES
These declarations were extracted from the interface documentation at
line 4426.
SQLITE_API int sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode);
SEE ALSO
sqlite3_prepare(3), sqlite3_stmt(3)
NetBSD 10.99 August 24, 2023 NetBSD 10.99