1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-15 11:41:13 +03:00
Commit Graph

166 Commits

Author SHA1 Message Date
drh
c8af850479 Update the header comment on analyze.c to describe the sqlite_stat4 table
format.

FossilOrigin-Name: 4d97809d6b29809f12d753043bda1976bdb1bd3b
2013-08-09 14:07:55 +00:00
dan
eea568d68e Replace variable Index.avgEq (average number of rows in keys for which there is no sample in sqlite_stat4) with vector Index.aAvgEq.
FossilOrigin-Name: 7b70b419c43b2c3b2daf11d833a1d60245bfaef5
2013-08-07 19:46:15 +00:00
dan
32c693a6e6 Fix typos in a comment in analyze.c. No code changes.
FossilOrigin-Name: 812ed0c58fc5f729a2d4f16775fad6724cc367a6
2013-08-07 16:38:33 +00:00
dan
1f28eaddc4 Change the way samples for the sqlite_stat4 table are collected.
FossilOrigin-Name: 13ed5ac13562e7a39905d70fd47059f4d8001bba
2013-08-07 16:15:32 +00:00
dan
ddc2d6e8f5 Fixes for builds without SQLITE_ENABLE_STAT4.
FossilOrigin-Name: 84999e27cc0d14b89d9fe024e29d287c69285369
2013-08-06 20:15:06 +00:00
dan
c612970c9d Modify the vdbe code generated by ANALYZE to use fewer memory cells and cursor slots.
FossilOrigin-Name: 4a51cf289fad8aebc637b5f96488de18e861195d
2013-08-05 19:04:07 +00:00
dan
e043201d3d Use N separate cursors when scanning an index with N columns to collect sqlite_stat4 data. This fixes a problem with collecting incorrect nEq values from multi-column indexes.
FossilOrigin-Name: 3a71afe67418ce00097cd9714c395fe9ff16f23b
2013-08-05 18:00:56 +00:00
dan
c55521a60b Fix a couple of problems in code related to sqlite_stat4.
FossilOrigin-Name: badd24d987240db5528b37d1c177431617079f9b
2013-08-05 05:34:30 +00:00
dan
f52bb8d385 Begin adding experimental sqlite_stat4 table. This commit is buggy.
FossilOrigin-Name: 2beea303a1d609cd2ff252412c50b966b9e5e8f1
2013-08-03 20:24:58 +00:00
drh
721dfcf544 Fix the ANALYZE command to work with partial indices.
FossilOrigin-Name: 60353124f4e965393ecd864019bdbca1999fb69e
2013-08-01 04:39:17 +00:00
drh
f7b5496e8e Many small harmless comment changes. Removal of obsolete comments and
fixing misspelled words.  No changes to code.

FossilOrigin-Name: a0d5cc9315dc6e9ef7dee4c3dfabf4e562d64376
2013-05-28 12:11:54 +00:00
drh
503a686e09 Always use strncmp() rather than memcmp() when comparing strings where one
or other string might be less than the length parameter, since optimized
versions of memcmp() might read past the first difference and in so doing
generate an access violation.

FossilOrigin-Name: d73435587ba7459e2e2c32980d0e17abdeceb4bc
2013-03-01 01:07:17 +00:00
dan
428c218c90 When reusing pages as part of creating a new index, allocate the leaves from each free-list trunk page in ascending order, instead of trying to maximize localization for each individual allocation. This increases the chance that pages will be written to disk in ascending order by a large CREATE INDEX statement, improving overall performance.
FossilOrigin-Name: d045f8b2d44e388d8c4549ff02d4ca7eff4e2038
2012-08-06 18:50:11 +00:00
dan
6809c96df3 Replace a few sqlite3_malloc()+memset() sequences with calls to sqlite3MallocZero().
FossilOrigin-Name: 305b6667265353b858b79bfea1745e64ff3bb7d3
2012-07-30 14:53:54 +00:00
dan
0d1614c731 Ensure that compatible malloc and free functions are used with stat3 data if SQLITE_ENABLE_STAT3 is defined.
FossilOrigin-Name: 32bb1ecee4e43a4683512dbca047abf735afd313
2012-03-19 10:21:37 +00:00
drh
e752cda894 Fix STAT3 so that it works with the new uninitialized register logic of
the VDBE.  Ticket [7bbfb7d4422ff]

FossilOrigin-Name: d11a57985c394772043c63d4c2b534944be0a664
2011-12-11 02:30:35 +00:00
drh
74e7c8f51f Purge lingering references to SQLITE_STAT2 from the code and test scripts.
FossilOrigin-Name: aed2bf7a3c828a7191389b3f8235a9387977b476
2011-10-21 19:06:32 +00:00
drh
08ccfaa1b1 Change the ANALYZE command so that it no longer tried to delete unused
sqlite_stat2 and sqlite_stat3 tables.  Change the DROP TABLE command so
that it is able to drop those tables.

FossilOrigin-Name: 589f3f5652e3674d3203f8bd32784a46b5ed530c
2011-10-07 23:52:25 +00:00
drh
369980189b Fix typos in the format description comment of analyze.c.
FossilOrigin-Name: 74e27fad339a2d7899c1f42805e615128929f07a
2011-09-23 13:25:03 +00:00
drh
2b9cf669d8 Remove the restriction on the number of entries per index in sqlite_stat3.
FossilOrigin-Name: 374343c8ad53829c4ad715ed623d16635797de9a
2011-09-22 20:52:56 +00:00
drh
5c62486cd8 Fix an issue in ANALYZE when STAT3 is disabled but both sqlite_stat2 and
sqlite_stat3 tables exist.  Also add testability tweaks to the STAT3 code.

FossilOrigin-Name: 3ca7e449e2e20d95e516cf7fe87bfa0b51c07086
2011-09-22 18:46:34 +00:00
drh
93c6384ca6 Fix an uninitialized variable and a misuse of memcpy().
FossilOrigin-Name: ee110d5a4a6f29400bb632a9a18c7dcd04638657
2011-09-22 00:28:55 +00:00
drh
d3ed73406c Pull in the latest changes from trunk. Update the STAT3 documentation.
FossilOrigin-Name: 63fc3e4bea6a7f5dc34b2af83f30458eb10b8fe0
2011-09-21 00:09:41 +00:00
drh
8e3937ff0d Fix the stat3 analysis loader to be compatible with sqlite3_db_status().
Also fix some OOM issues with the stat3 analysis loader.

FossilOrigin-Name: eaf447ea87b0ff29ae06283204f522fcd005b284
2011-08-18 13:45:23 +00:00
drh
88ab5b08ad Fix an error with OOM processing in the ANALYZE logic.
FossilOrigin-Name: b26ec79c69f44b55bc4bb11e293f11b3afa3b724
2011-08-18 01:10:35 +00:00
drh
6825719667 Fix a few harmless compiler warnings. Add SQLITE_ENABLE_STAT3 to the
standard compiler warning script.

FossilOrigin-Name: 3d68f9afee02f95103eb1682b8f2362f8d249437
2011-08-16 17:06:21 +00:00
dan
23e7c4de7b Fix a couple of typos in comments in analyze.c.
FossilOrigin-Name: ae31dc67aa0637150f964de31a6da6f5797b462a
2011-08-15 12:02:21 +00:00
drh
4e50c5ec48 Further testing and bug fixing for sqlite_stat3. Added the Index.avgEq
field to index statistics.  Fixed several problems in the query planner
associated with stat3.

FossilOrigin-Name: 89b2f70884cad0abdf4c66cb64ecddb2820ded74
2011-08-13 19:35:19 +00:00
drh
f404c86ad7 Add the sqlite_stat3.nDLT field. Use an linear congruence PRNG to choose
which samples to select from among those with the same nEq field.

FossilOrigin-Name: 1dcd24283e6c1cc638eb9ffac434046447f88769
2011-08-13 15:25:10 +00:00
drh
ade3addfb5 The ANALYZE command picks for 15 samples for sqlite_stat3 with the largest
nEq fields, plus 5 other evenly spaced samples.

FossilOrigin-Name: 8225924ea015a0c331b69134139922ec83f989f8
2011-08-13 00:58:05 +00:00
drh
faacf17cc1 Begin a branch that experimentally replaces sqlite_stat2 with a new table
called sqlite_stat3 that will hopefully facilitate better query
planning decisions.

FossilOrigin-Name: 52e1d7e8ddd4bb5ef3a9d00fd2d719a8a784f807
2011-08-12 01:51:45 +00:00
drh
c2822b76b4 If the keyword "unordered" appears at the end of the SQLITE_STAT1.STAT
column for an index, then use that index for equality lookups only, never 
for range queries or sorting.  This feature is currently undocumented and
my change or be removed in a future release.

FossilOrigin-Name: 8a42e236701c8afd9ada7d4568712a21690ea087
2011-04-09 03:20:59 +00:00
drh
2120608e0f Add a description of access rules for the Schema object and lots of asserts
to verify that the access rules are followed.

FossilOrigin-Name: ae8374af057b6e6546e9265148cfffe32fcb0849
2011-04-04 18:22:02 +00:00
drh
295867bd55 Merge the ANALYZE-index enhancement into trunk.
FossilOrigin-Name: 7e237aea22084416d02b89d5223de4e1ca76882d
2011-04-01 14:26:14 +00:00
drh
ce62d93837 Fix two compiler errors associated with non-standard compile-time options.
FossilOrigin-Name: e3bf2d5ce4f87535e030a446e03d911f421805f7
2011-04-01 02:26:36 +00:00
drh
76a32a81e4 Fix a compiler warning and an unreachable branch. Restore 100% branch test
coverage.

FossilOrigin-Name: 4dc148bb4cec5ecba167cdcb4959a4f0fa05a96f
2011-04-01 01:38:02 +00:00
drh
a071bc5dba Change the ANALYZE command so that it will accept an index name as its
argument and only reanalyze that one index.  A quick smoke-test works.
Need to study the implications to the query planner and test corner cases.

FossilOrigin-Name: c8f9edd962442cbdd848c48f1a134557ab8c6ef5
2011-03-31 02:03:28 +00:00
drh
f6cf1ffb39 Do not generate sqlite_stat1 entries for empty tables when running
ANALYZE.  Ticket [83ea97620bd31016451]

FossilOrigin-Name: 3a27af5b3c688c651ba1fae261026ef77b7ff5e3
2011-03-30 14:54:05 +00:00
drh
d6ee353c84 If the keyword "unordered" appears at the end of the SQLITE_STAT1.STAT
column for an index, then use that index for equality lookups only, never
for range queries or sorting.

FossilOrigin-Name: 3b964155f611c437d53d44feafa22f531942b1b4
2011-03-29 15:00:17 +00:00
drh
906b662060 Fix a harmless compiler warning (a shadowed local variable) in analyze.c.
FossilOrigin-Name: a1ad7fb38bb38909ca2fddee31c7a8001f10686f
2011-01-24 19:14:06 +00:00
drh
65a0ce16aa Fix a null-pointer dereference that can occur on an OOM error while running
ANALYZE with SQLITE_ENABLE_STAT2.

FossilOrigin-Name: 73128d4ef5d7703bf7af0553c307b55dc1b783f6
2011-01-04 20:06:33 +00:00
drh
4856698fa5 Fix the ANALYZE command so that it takes collating sequences into account
when gathering index statistics.

FossilOrigin-Name: a5867cfc4c9b9155fa345247dec29e38fffa8002
2011-01-04 19:01:26 +00:00
drh
8e93b10a4e The ANALYZE command now counts at all rows of an index, even those containing
NULL values.  A valid sqlite_stat1 entry is created even if the index contains
nothing but NULLs.

FossilOrigin-Name: 824c8dd3015bbd5c8a1dd661cfe09fe5bf7a80d3
2011-01-04 17:57:53 +00:00
drh
f39d29c0bd Get ANALYZE working again with -DSQLITE_ENABLE_STAT2 and virtual tables.
FossilOrigin-Name: b7a26427afc43c9bbdf365b775379eb57187bc97
2010-09-28 17:34:46 +00:00
drh
6ac78a0d9f Fix several harmless compiler warnings.
FossilOrigin-Name: 7be03ecc04235420e54fed8a88742243278de160
2010-09-28 14:26:36 +00:00
drh
155640552b Enhance the ANALYZE command so that it gathers statistics in the sqlite_stat1
table even for tables that are empty or have no indices.

FossilOrigin-Name: a7645d293801da64a7579737d0a8b48117af2e2c
2010-09-25 22:32:56 +00:00
drh
43b18e1e55 Suppress harmless compiler warning.
FossilOrigin-Name: 3f8c068a41b01f59d7f5d56f3bced78587f4d26c
2010-08-17 19:40:08 +00:00
drh
174b9a166d Make sure all memory from sqlite3DbMalloc() is freed by sqlite3DbFree()
and all memory from sqlite3_malloc() is freed by sqlite3_free().

FossilOrigin-Name: 629e38a8c9e31111e351fe4625a5835576d23584
2010-07-26 11:07:20 +00:00
drh
b975598ea0 Make sure all memory from sqlite3DbMalloc() is freed by sqlite3DbFree() and
all memory from sqlite3_malloc() is freed by sqlite3_free().

FossilOrigin-Name: ac1f37a647e9ed1c00a901d26d9956a86c40117a
2010-07-24 16:34:37 +00:00
dan
d46def77db Experimental code to measure memory consumed by database schemas and prepared statements.
FossilOrigin-Name: 9aa30342f4de4eff630520ea8e07ad253d3f0877
2010-07-24 11:28:28 +00:00