|
|
@@ -123,9 +123,9 @@ extern "C" {
|
|
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
|
|
** [sqlite_version()] and [sqlite_source_id()].
|
|
|
*/
|
|
|
-#define SQLITE_VERSION "3.23.1"
|
|
|
-#define SQLITE_VERSION_NUMBER 3023001
|
|
|
-#define SQLITE_SOURCE_ID "2018-04-10 18:56:21 56e4965f7ac850c59596120878434f5ef023e77919ef9416d20812eac764alt1"
|
|
|
+#define SQLITE_VERSION "3.24.0"
|
|
|
+#define SQLITE_VERSION_NUMBER 3024000
|
|
|
+#define SQLITE_SOURCE_ID "2018-04-26 18:34:26 9fd0faf517993587d2f54212638545fc85fbbc84a031bcfae8c1e5894825alt1"
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
|
@@ -1932,6 +1932,22 @@ struct sqlite3_mem_methods {
|
|
|
** I/O required to support statement rollback.
|
|
|
** The default value for this setting is controlled by the
|
|
|
** [SQLITE_STMTJRNL_SPILL] compile-time option.
|
|
|
+**
|
|
|
+** [[SQLITE_CONFIG_SORTERREF_SIZE]]
|
|
|
+** <dt>SQLITE_CONFIG_SORTERREF_SIZE
|
|
|
+** <dd>The SQLITE_CONFIG_SORTERREF_SIZE option accepts a single parameter
|
|
|
+** of type (int) - the new value of the sorter-reference size threshold.
|
|
|
+** Usually, when SQLite uses an external sort to order records according
|
|
|
+** to an ORDER BY clause, all fields required by the caller are present in the
|
|
|
+** sorted records. However, if SQLite determines based on the declared type
|
|
|
+** of a table column that its values are likely to be very large - larger
|
|
|
+** than the configured sorter-reference size threshold - then a reference
|
|
|
+** is stored in each sorted record and the required column values loaded
|
|
|
+** from the database as records are returned in sorted order. The default
|
|
|
+** value for this option is to never use this optimization. Specifying a
|
|
|
+** negative value for this option restores the default behaviour.
|
|
|
+** This option is only available if SQLite is compiled with the
|
|
|
+** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option.
|
|
|
** </dl>
|
|
|
*/
|
|
|
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
|
|
@@ -1961,6 +1977,7 @@ struct sqlite3_mem_methods {
|
|
|
#define SQLITE_CONFIG_PMASZ 25 /* unsigned int szPma */
|
|
|
#define SQLITE_CONFIG_STMTJRNL_SPILL 26 /* int nByte */
|
|
|
#define SQLITE_CONFIG_SMALL_MALLOC 27 /* boolean */
|
|
|
+#define SQLITE_CONFIG_SORTERREF_SIZE 28 /* int nByte */
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Database Connection Configuration Options
|
|
|
@@ -7019,7 +7036,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
|
|
#define SQLITE_TESTCTRL_ALWAYS 13
|
|
|
#define SQLITE_TESTCTRL_RESERVE 14
|
|
|
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15
|
|
|
-#define SQLITE_TESTCTRL_ISKEYWORD 16
|
|
|
+#define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */
|
|
|
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
|
|
|
#define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
|
|
|
#define SQLITE_TESTCTRL_EXPLAIN_STMT 19 /* NOT USED */
|
|
|
@@ -7033,6 +7050,57 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
|
|
#define SQLITE_TESTCTRL_PARSER_COVERAGE 26
|
|
|
#define SQLITE_TESTCTRL_LAST 26 /* Largest TESTCTRL */
|
|
|
|
|
|
+/*
|
|
|
+** CAPI3REF: SQL Keyword Checking
|
|
|
+**
|
|
|
+** These routines provide access to the set of SQL language keywords
|
|
|
+** recognized by SQLite. Applications can uses these routines to determine
|
|
|
+** whether or not a specific identifier needs to be escaped (for example,
|
|
|
+** by enclosing in double-quotes) so as not to confuse the parser.
|
|
|
+**
|
|
|
+** The sqlite3_keyword_count() interface returns the number of distinct
|
|
|
+** keywords understood by SQLite.
|
|
|
+**
|
|
|
+** The sqlite3_keyword_name(N,Z,L) interface finds the 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
|
|
|
+** SQLITE_OK if N is within bounds and SQLITE_ERROR if not. If either Z
|
|
|
+** or L are NULL or invalid pointers then calls to
|
|
|
+** sqlite3_keyword_name(N,Z,L) result in undefined behavior.
|
|
|
+**
|
|
|
+** The sqlite3_keyword_check(Z,L) interface checks to see whether or not
|
|
|
+** the L-byte UTF8 identifier that Z points to is a keyword, returning non-zero
|
|
|
+** if it is and zero if not.
|
|
|
+**
|
|
|
+** The parser used by SQLite is forgiving. It is often possible to use
|
|
|
+** a keyword as an identifier as long as such use does not result in a
|
|
|
+** parsing ambiguity. For example, the statement
|
|
|
+** "CREATE TABLE BEGIN(REPLACE,PRAGMA,END);" is accepted by SQLite, and
|
|
|
+** creates a new table named "BEGIN" with three columns named
|
|
|
+** "REPLACE", "PRAGMA", and "END". Nevertheless, best practice is to avoid
|
|
|
+** using keywords as identifiers. Common techniques used to avoid keyword
|
|
|
+** name collisions include:
|
|
|
+** <ul>
|
|
|
+** <li> Put all indentifier names inside double-quotes. This is the official
|
|
|
+** SQL way to escape identifier names.
|
|
|
+** <li> Put identifier names inside [...]. This is not standard SQL,
|
|
|
+** but it is what SQL Server does and so lots of programmers use this
|
|
|
+** technique.
|
|
|
+** <li> Begin every identifier with the letter "Z" as no SQL keywords start
|
|
|
+** with "Z".
|
|
|
+** <li> Include a digit somewhere in every identifier name.
|
|
|
+** </ul>
|
|
|
+**
|
|
|
+** Note that the number of keywords understood by SQLite can depend on
|
|
|
+** compile-time options. For example, "VACUUM" is not a keyword if
|
|
|
+** SQLite is compiled with the [-DSQLITE_OMIT_VACUUM] option. Also,
|
|
|
+** new keywords may be added to future releases of SQLite.
|
|
|
+*/
|
|
|
+SQLITE_API int sqlite3_keyword_count(void);
|
|
|
+SQLITE_API int sqlite3_keyword_name(int,const char**,int*);
|
|
|
+SQLITE_API int sqlite3_keyword_check(const char*,int);
|
|
|
+
|
|
|
/*
|
|
|
** CAPI3REF: SQLite Runtime Status
|
|
|
**
|