diff options
Diffstat (limited to 'www/capi3ref.html')
-rw-r--r-- | www/capi3ref.html | 78 |
1 files changed, 52 insertions, 26 deletions
diff --git a/www/capi3ref.html b/www/capi3ref.html index 43cecdb..54ae2b8 100644 --- a/www/capi3ref.html +++ b/www/capi3ref.html @@ -687,8 +687,8 @@ be removed in some future release.</li> <p>Note: Functions marked with "<small><i>(exp)</i></small>" are <a href="capi3ref.html">experimental</a> and functions whose names are <s>struck through</s> are <a href="capi3ref.html">deprecated</a>.</p> -<!-- number of functions: 290 --> -<!-- number of deprecated functions: 7 --> +<!-- number of functions: 288 --> +<!-- number of deprecated functions: 9 --> <!-- number of experimental functions: 0 --> <div class='columns' style='columns: 15em auto;'> <ul style='padding-top:0;'> @@ -857,7 +857,7 @@ are <a href="capi3ref.html">experimental</a> and functions whose names are <li><a href='#sqlite3_preupdate_blobwrite'>sqlite3_preupdate_hook</a></li> <li><a href='#sqlite3_preupdate_blobwrite'>sqlite3_preupdate_new</a></li> <li><a href='#sqlite3_preupdate_blobwrite'>sqlite3_preupdate_old</a></li> -<li><a href='#sqlite3_profile'>sqlite3_profile</a></li> +<li><s>sqlite3_profile</s></li> <li><a href='#sqlite3_progress_handler'>sqlite3_progress_handler</a></li> <li><a href='#sqlite3_randomness'>sqlite3_randomness</a></li> <li><a href='#sqlite3_free'>sqlite3_realloc</a></li> @@ -937,7 +937,7 @@ are <a href="capi3ref.html">experimental</a> and functions whose names are <li><a href='#sqlite3_threadsafe'>sqlite3_threadsafe</a></li> <li><a href='#sqlite3_total_changes'>sqlite3_total_changes</a></li> <li><a href='#sqlite3_total_changes'>sqlite3_total_changes64</a></li> -<li><a href='#sqlite3_profile'>sqlite3_trace</a></li> +<li><s>sqlite3_trace</s></li> <li><a href='#sqlite3_trace_v2'>sqlite3_trace_v2</a></li> <li><s>sqlite3_transfer_bindings</s></li> <li><a href='#sqlite3_txn_state'>sqlite3_txn_state</a></li> @@ -1376,10 +1376,11 @@ and not its inode needs to be synced.</p> </ul> xLock() upgrades the database file lock. In other words, xLock() moves the database file lock in the direction NONE toward EXCLUSIVE. The argument to -xLock() is always on of SHARED, RESERVED, PENDING, or EXCLUSIVE, never +xLock() is always one of SHARED, RESERVED, PENDING, or EXCLUSIVE, never SQLITE_LOCK_NONE. If the database file lock is already at or above the requested lock, then the call to xLock() is a no-op. xUnlock() downgrades the database file lock to either SHARED or NONE. +If the lock is already at or below the requested lock state, then the call to xUnlock() is a no-op. The xCheckReservedLock() method checks whether any database connection, either in this process or in some other process, is holding a RESERVED, @@ -4307,6 +4308,12 @@ invoked when rows are deleted using the <a href="lang_delete.html#truncateopt">t The exceptions defined in this paragraph might change in a future release of SQLite.</p> +<p>Whether the update hook is invoked before or after the +corresponding change is currently unspecified and may differ +depending on the type of change. Do not rely on the order of the +hook call with regards to the final result of the operation which +triggers the hook.</p> + <p>The update hook implementation must not do anything that will modify the database connection that invoked the update hook. Any actions to modify the database connection must be deferred until after the @@ -4467,24 +4474,45 @@ is doing a GROUP BY. <li value="2"><p> If the sqlite3_vtab_distinct() interface returns 2, that means that the query planner does not need the rows returned in any particular -order, as long as rows with the same values in all "aOrderBy" columns -are adjacent. Furthermore, only a single row for each particular -combination of values in the columns identified by the "aOrderBy" field -needs to be returned. It is always ok for two or more rows with the same -values in all "aOrderBy" columns to be returned, as long as all such rows -are adjacent. The virtual table may, if it chooses, omit extra rows -that have the same value for all columns identified by "aOrderBy". -However omitting the extra rows is optional. +order, as long as rows with the same values in all columns identified +by "aOrderBy" are adjacent. Furthermore, when two or more rows +contain the same values for all columns identified by "colUsed", all but +one such row may optionally be omitted from the result. +The virtual table is not required to omit rows that are duplicates +over the "colUsed" columns, but if the virtual table can do that without +too much extra effort, it could potentially help the query to run faster. This mode is used for a DISTINCT query. <li value="3"><p> -If the sqlite3_vtab_distinct() interface returns 3, that means -that the query planner needs only distinct rows but it does need the -rows to be sorted. The virtual table implementation is free to omit -rows that are identical in all aOrderBy columns, if it wants to, but -it is not required to omit any rows. This mode is used for queries +If the sqlite3_vtab_distinct() interface returns 3, that means the +virtual table must return rows in the order defined by "aOrderBy" as +if the sqlite3_vtab_distinct() interface had returned 0. However if +two or more rows in the result have the same values for all columns +identified by "colUsed", then all but one such row may optionally be +omitted. Like when the return value is 2, the virtual table +is not required to omit rows that are duplicates over the "colUsed" +columns, but if the virtual table can do that without +too much extra effort, it could potentially help the query to run faster. +This mode is used for queries that have both DISTINCT and ORDER BY clauses. </ol></p> +<p><p>The following table summarizes the conditions under which the +virtual table is allowed to set the "orderByConsumed" flag based on +the value returned by sqlite3_vtab_distinct(). This table is a +restatement of the previous four paragraphs:</p> + +<p><table border=1 cellspacing=0 cellpadding=10 width="90%"> +<tr> +<td valign="top">sqlite3_vtab_distinct() return value +<td valign="top">Rows are returned in aOrderBy order +<td valign="top">Rows with the same value in all aOrderBy columns are adjacent +<td valign="top">Duplicates over all colUsed columns may be omitted +<tr><td>0<td>yes<td>yes<td>no +<tr><td>1<td>no<td>yes<td>no +<tr><td>2<td>no<td>yes<td>yes +<tr><td>3<td>yes<td>yes<td>yes +</table></p> + <p>For the purposes of comparing virtual table output values to see if the values are same value for sorting purposes, two NULL values are considered to be the same. In other words, the comparison operator is "IS" @@ -6884,9 +6912,9 @@ and EXCLUSIVE. <h2>Compile-Time Library Version Numbers</h2> </div> <blockquote><pre> -#define SQLITE_VERSION "3.45.3" -#define SQLITE_VERSION_NUMBER 3045003 -#define SQLITE_SOURCE_ID "2024-04-15 13:34:05 8653b758870e6ef0c98d46b3ace27849054af85da891eb121e9aaa537f1e8355" +#define SQLITE_VERSION "3.46.0" +#define SQLITE_VERSION_NUMBER 3046000 +#define SQLITE_SOURCE_ID "2024-05-23 13:25:27 96c92aba00c8375bc32fafcdf12429c58bd8aabfcadab6683e35bbb9cdebf19e" </pre></blockquote> <p> The <a href="#SQLITE_SOURCE_ID">SQLITE_VERSION</a> C preprocessor macro in the sqlite3.h header @@ -7779,7 +7807,7 @@ sqlite3 object. <p>2 Destructors using this object: <a href="#sqlite3_close">sqlite3_close()</a>, <a href="#sqlite3_close">sqlite3_close_v2()</a></p> -<p>79 Methods using this object: +<p>77 Methods using this object: <div class='columns' style='columns: 17em auto;'> <ul style='padding-top:0;'> <li><a href='#sqlite3_autovacuum_pages'>sqlite3_autovacuum_pages</a></li> @@ -7842,7 +7870,6 @@ sqlite3 object. <li><a href='#sqlite3_preupdate_blobwrite'>sqlite3_preupdate_hook</a></li> <li><a href='#sqlite3_preupdate_blobwrite'>sqlite3_preupdate_new</a></li> <li><a href='#sqlite3_preupdate_blobwrite'>sqlite3_preupdate_old</a></li> -<li><a href='#sqlite3_profile'>sqlite3_profile</a></li> <li><a href='#sqlite3_progress_handler'>sqlite3_progress_handler</a></li> <li><a href='#sqlite3_commit_hook'>sqlite3_rollback_hook</a></li> <li><a href='#sqlite3_set_authorizer'>sqlite3_set_authorizer</a></li> @@ -7852,7 +7879,6 @@ sqlite3 object. <li><a href='#sqlite3_table_column_metadata'>sqlite3_table_column_metadata</a></li> <li><a href='#sqlite3_total_changes'>sqlite3_total_changes</a></li> <li><a href='#sqlite3_total_changes'>sqlite3_total_changes64</a></li> -<li><a href='#sqlite3_profile'>sqlite3_trace</a></li> <li><a href='#sqlite3_trace_v2'>sqlite3_trace_v2</a></li> <li><a href='#sqlite3_txn_state'>sqlite3_txn_state</a></li> <li><a href='#sqlite3_unlock_notify'>sqlite3_unlock_notify</a></li> @@ -9701,7 +9727,7 @@ by enclosing in double-quotes) so as not to confuse the parser.</p> <p>The sqlite3_keyword_count() interface returns the number of distinct keywords understood by SQLite.</p> -<p>The sqlite3_keyword_name(N,Z,L) interface finds the N-th keyword and +<p>The sqlite3_keyword_name(N,Z,L) interface finds the 0-based N-th keyword and makes *Z point to that keyword expressed as UTF8 and writes the number of bytes in the keyword into *L. The string that *Z points to is not zero-terminated. The sqlite3_keyword_name(N,Z,L) routine returns @@ -10420,7 +10446,7 @@ regular DELETE, sqlite3_preupdate_blobwrite() returns -1.</p> <p>See also: <a href="#sqlite3_update_hook">sqlite3_update_hook()</a> </p><hr><a name="sqlite3_profile"></a> -<h2>Tracing And Profiling Functions</h2> +<h2>Deprecated Tracing And Profiling Functions</h2> </div> <blockquote><pre> void *sqlite3_trace(sqlite3*, |