-C Merge\sintegrity_check\sand\sother\simprovements\sfrom\strunk.
-D 2017-02-22T19:49:54.795
+C Change\sthe\sname\sof\sthe\sanalyze_as_needed\spragma\sto\s"optimize".\s\sEnhance\sthe\ncomment\s(which\swill\sbecome\sdocumentation,\sassuming\sthese\schanges\sland\son\strunk)\nto\sexplain\sthat\sthe\soptimize\spragma\sis\slikely\sto\sbe\senhanced\sin\svarious\sways\nin\sfuture\sreleases\sand\sthat\sapplications\sshould\snot\sdepend\supon\sthe\scurrent\nbehavior.
+D 2017-02-22T20:24:10.705
F Makefile.in edb6bcdd37748d2b1c3422ff727c748df7ffe918
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc a89ea37ab5928026001569f056973b9059492fe2
F src/pcache.c 62835bed959e2914edd26afadfecce29ece0e870
F src/pcache.h 2cedcd8407eb23017d92790b112186886e179490
F src/pcache1.c e3967219b2a92b9edcb9324a4ba75009090d3953
-F src/pragma.c 97742aae32e645926f6f8fc426169fb5ef97c268
-F src/pragma.h 065e184494f12e94111da1ab6984faa7b6142e68
+F src/pragma.c 46202f2f5ee6957ff5cba581ee3c36507685def0
+F src/pragma.h d97dd835c7f4dfb6857487707313385d44fa76c0
F src/prepare.c b1140c3d0cf59bc85ace00ce363153041b424b7a
F src/printf.c 67427bbee66d891fc6f6f5aada857e9cdb368c1c
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
F tool/mkopcodec.tcl d1b6362bd3aa80d5520d4d6f3765badf01f6c43c
F tool/mkopcodeh.tcl a01d2c1d8a6205b03fc635adf3735b4c523befd3
F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e
-F tool/mkpragmatab.tcl 6fd5ecb4a8debee39e3bb4e63f0634f69edfb861
+F tool/mkpragmatab.tcl 9b499f7301fadeddeae52b95f962ef7e5a718f50
F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
F tool/mksqlite3c-noext.tcl fef88397668ae83166735c41af99d79f56afaabb
F tool/mksqlite3c.tcl 06b2e6a0f21cc0a5d70fbbd136b3e0a96470645e
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P ff213f2ef5bf96754a2264685d25546d8b5ccf0a d6afd98de3ee8b714dfd6477ead955096f623972
-R c12096fa1c0a2878a437d029e47aff9d
+P fe073905081b421405ca425ca03c5b8b0ff5f2c8
+R b1ce2ff126387ffc06c8537ddbfa9731
U drh
-Z 3c7beae38049bf1fe67e75122f4d0189
+Z 5165d34a54df32aa272e95c6a5e5953c
-fe073905081b421405ca425ca03c5b8b0ff5f2c8
\ No newline at end of file
+9fced545a6f80c55d6dc4a6106cb2d3569566b3e
\ No newline at end of file
}
/*
- ** PRAGMA analyze_as_needed
- ** PRAGMA schema.analyze_as_needed
+ ** PRAGMA optimize
+ ** PRAGMA schema.optimize
**
- ** This pragma runs ANALYZE on any tables which would have benefitted
- ** from having recent statistics at some point since the start of the
- ** current connection. Only tables in "schema" are analyzed in the
+ ** Attempt to optimize the database. All schemas are optimized in the first
+ ** form, and only the specified schema is optimized in the second form.
+ **
+ ** The details of optimizations performed by this pragma does are expected
+ ** to change and improve over time. Applications should anticipate that
+ ** this pragma will perform new optimizations in future releases.
+ **
+ ** Argments to this pragma are currently ignored, but future enhancements
+ ** might make use of arguments to control which optimizations are allowed
+ ** or to suggest limits on how much CPU time and I/O should be expended
+ ** in the optimization effort.
+ **
+ ** The current implementation runs ANALYZE on any tables which might have
+ ** benefitted from having recent statistics at some point since the start
+ ** of the current connection. Only tables in "schema" are analyzed in the
** second form. In the first form, all tables except TEMP tables are
** checked.
**
- ** A table is analyzed only if both of the following are true:
+ ** In the current implementation, a table is analyzed only if both of
+ ** the following are true:
**
** (1) The query planner used sqlite_stat1-style statistics for one or
** more indexes of the table at some point during the lifetime of
** (2) One or more indexes of the table are currently unanalyzed OR
** the number of rows in the table has increased by 25 times or more
** since the last time ANALYZE was run.
+ **
+ ** The rules for when tables are analyzed are likely to change in
+ ** future releases.
*/
- case PragTyp_ANALYZE_AS_NEEDED: {
+ case PragTyp_OPTIMIZE: {
int iDbLast; /* Loop termination point for the schema loop */
int iTabCur; /* Cursor for a table whose size needs checking */
HashElem *k; /* Loop over tables of a schema */
*/
/* The various pragma types */
-#define PragTyp_ANALYZE_AS_NEEDED 0
-#define PragTyp_HEADER_VALUE 1
-#define PragTyp_AUTO_VACUUM 2
-#define PragTyp_FLAG 3
-#define PragTyp_BUSY_TIMEOUT 4
-#define PragTyp_CACHE_SIZE 5
-#define PragTyp_CACHE_SPILL 6
-#define PragTyp_CASE_SENSITIVE_LIKE 7
-#define PragTyp_COLLATION_LIST 8
-#define PragTyp_COMPILE_OPTIONS 9
-#define PragTyp_DATA_STORE_DIRECTORY 10
-#define PragTyp_DATABASE_LIST 11
-#define PragTyp_DEFAULT_CACHE_SIZE 12
-#define PragTyp_ENCODING 13
-#define PragTyp_FOREIGN_KEY_CHECK 14
-#define PragTyp_FOREIGN_KEY_LIST 15
-#define PragTyp_INCREMENTAL_VACUUM 16
-#define PragTyp_INDEX_INFO 17
-#define PragTyp_INDEX_LIST 18
-#define PragTyp_INTEGRITY_CHECK 19
-#define PragTyp_JOURNAL_MODE 20
-#define PragTyp_JOURNAL_SIZE_LIMIT 21
-#define PragTyp_LOCK_PROXY_FILE 22
-#define PragTyp_LOCKING_MODE 23
-#define PragTyp_PAGE_COUNT 24
-#define PragTyp_MMAP_SIZE 25
+#define PragTyp_HEADER_VALUE 0
+#define PragTyp_AUTO_VACUUM 1
+#define PragTyp_FLAG 2
+#define PragTyp_BUSY_TIMEOUT 3
+#define PragTyp_CACHE_SIZE 4
+#define PragTyp_CACHE_SPILL 5
+#define PragTyp_CASE_SENSITIVE_LIKE 6
+#define PragTyp_COLLATION_LIST 7
+#define PragTyp_COMPILE_OPTIONS 8
+#define PragTyp_DATA_STORE_DIRECTORY 9
+#define PragTyp_DATABASE_LIST 10
+#define PragTyp_DEFAULT_CACHE_SIZE 11
+#define PragTyp_ENCODING 12
+#define PragTyp_FOREIGN_KEY_CHECK 13
+#define PragTyp_FOREIGN_KEY_LIST 14
+#define PragTyp_INCREMENTAL_VACUUM 15
+#define PragTyp_INDEX_INFO 16
+#define PragTyp_INDEX_LIST 17
+#define PragTyp_INTEGRITY_CHECK 18
+#define PragTyp_JOURNAL_MODE 19
+#define PragTyp_JOURNAL_SIZE_LIMIT 20
+#define PragTyp_LOCK_PROXY_FILE 21
+#define PragTyp_LOCKING_MODE 22
+#define PragTyp_PAGE_COUNT 23
+#define PragTyp_MMAP_SIZE 24
+#define PragTyp_OPTIMIZE 25
#define PragTyp_PAGE_SIZE 26
#define PragTyp_SECURE_DELETE 27
#define PragTyp_SHRINK_MEMORY 28
/* ColNames: */ 0, 0,
/* iArg: */ 0 },
#endif
- {/* zName: */ "analyze_as_needed",
- /* ePragTyp: */ PragTyp_ANALYZE_AS_NEEDED,
- /* ePragFlg: */ PragFlg_NoColumns,
- /* ColNames: */ 0, 0,
- /* iArg: */ 0 },
#if !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
{/* zName: */ "application_id",
/* ePragTyp: */ PragTyp_HEADER_VALUE,
/* ePragFlg: */ 0,
/* ColNames: */ 0, 0,
/* iArg: */ 0 },
+#endif
+ {/* zName: */ "optimize",
+ /* ePragTyp: */ PragTyp_OPTIMIZE,
+ /* ePragFlg: */ PragFlg_NoColumns,
+ /* ColNames: */ 0, 0,
+ /* iArg: */ 0 },
+#if !defined(SQLITE_OMIT_PAGER_PRAGMAS)
{/* zName: */ "page_count",
/* ePragTyp: */ PragTyp_PAGE_COUNT,
/* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0|PragFlg_SchemaReq,
NAME: threads
FLAG: Result0
- NAME: analyze_as_needed
+ NAME: optimize
FLAG: NoColumns
}