1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-10-25 09:59:22 +03:00
Commit Graph

646 Commits

Author SHA1 Message Date
drh
a19b89627e Make sure the Index.azColl pointers do not point to connection-specific memory.
Also, remove an unnecessary reinitialization to sqlite3.pDfltColl.

FossilOrigin-Name: c469850b2eb61a63150cc5fc7d2fe98f0b5abffb
2012-06-06 10:56:22 +00:00
drh
bae591a960 Merge the latest trunk changes into shared-schema branch. Also fix a C99-ism
in that branch.

FossilOrigin-Name: 42338e9e6979bb497823527f8f39e96f63623c59
2012-06-05 19:20:03 +00:00
drh
a51009b251 Convert the NameContext object from using u8 booleans to using individual
bits in a single u8 as its booleans.  This change might become a basis for
a fix for [c2ad16f997ee9c].

FossilOrigin-Name: 722260969306778029b738402f22e3c154dd77a1
2012-05-21 19:11:25 +00:00
drh
81028a455d The former sqlite3ResetInternalSchema() routine was really two different
routines, selected by parameter, each with a confused mission.  So split
this routine up into three separate smaller routines, calling each
separately as needed.  Hopefully this will make further refactoring and
schema reset collateral damage containment easier.

FossilOrigin-Name: aa0c3493d3647d7efe527067e9fcccefda8e3008
2012-05-15 18:28:27 +00:00
drh
29ddd3acdd Add assert()s to verify that Table objects in the schema never use
lookaside memory.

FossilOrigin-Name: 736d6ea677f58e4aa2914fa79a3156b775c5a3f5
2012-05-15 12:49:32 +00:00
drh
f68686ae52 When a named CHECK constraint fails, include the name of the constraint
in the error message.

FossilOrigin-Name: 1b75f301affac654bee24fa247046ea0782d3c4d
2012-03-30 15:48:48 +00:00
dan
9ace112c84 Fix an out of date comment on sqlite3ArrayAllocate().
FossilOrigin-Name: 4afdd5ae53ef0ff7c0fde74eaa04638c923c679b
2012-03-29 07:51:45 +00:00
drh
2938f924cc If a CHECK constraint is named, report that name on the error message when
the constraint fails.

FossilOrigin-Name: 9a0f90d9deb335ac71044b8afa81538d85cc7ccf
2012-03-07 19:13:29 +00:00
drh
a451017d62 Data structure cleanup. Remove unused fields. Rearrange other files for
tighter packing and reduced memory usage.

FossilOrigin-Name: 0bc594e861ae1142e8c6c83f39b095e1432856bf
2012-02-02 15:50:17 +00:00
drh
6c5351589c Simplified array allocation in the IdList and AggInfo objects.
FossilOrigin-Name: 25df2a7458d025bc00380b4a0893637639f9f0d4
2012-02-02 03:38:30 +00:00
drh
e0711b47b1 Ensure 8-byte alignment of Index.aiRowEst[] elements even if the size of
an Index object is not a multiple of 8 bytes.

FossilOrigin-Name: 1378f905d37544701776d38987fe7a312b255983
2012-01-05 12:38:02 +00:00
drh
e09b84c558 Fix a 8-byte alignment problem that causes a SIGBUS on Sparc.
FossilOrigin-Name: 54cc11981127b52145e39f551d958580b1d45169
2011-11-14 02:53:54 +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
b07028f71c Add assert() statements and eliminate needless variable assignments in order
to get the clang scan-build utility to report zero problems against the
SQLite core.  Clang's static analysis did find one real problem - but it was
in the command-line shell, not in the SQLite core.

FossilOrigin-Name: 60fee9574b0125705787e33c16f116cf188c8323
2011-10-14 21:49:18 +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
567211ed0e Testability enhancements.
FossilOrigin-Name: be44928cf2a3c063c8228b769d90947acbfad1ef
2011-09-23 13:59:33 +00:00
drh
5a9f90b574 Merge the latest trunk changes into the stat3-trunk branch.
FossilOrigin-Name: 11ca4ed8bf850dae1a24b7182f70039f32bd8dd1
2011-09-13 19:09:28 +00:00
drh
ca892a7252 The build works again with -DSQLITE_OMIT_MERGE_SORT. The merge-sorter now
avoids spilling to disk (letting the in-memory linked list grow without
bound) if PRAGMA temp_store=3.

FossilOrigin-Name: 68e26c4487696d194ee85370380e4b0e56d206ee
2011-09-03 00:17:51 +00:00
dan
5134d1357e Instead of a temporary b-tree, use a linked-list and merge-sort to sort records in main memory in vdbesort.c.
FossilOrigin-Name: 7769fb988d9be0f2d8129aaac19620ac88f9b4a6
2011-09-02 10:31:11 +00:00
drh
009a5f811b Merge the stat3-enhancement branch with trunk, but keep the resulting merge
in a separate branch for now.

FossilOrigin-Name: 63f2c7859fa6e5d0e2cdd218ff52a3ec2d44c61d
2011-08-26 13:16:33 +00:00
drh
2a5d9908f9 Create a new pager type, PAGER_SORTER, for use in the external merge sort.
Such pagers are always held in memory but do report when they are under
memory pressure by calling pagerStress.

FossilOrigin-Name: c71d73201d950355862dd8d5de142c9673888755
2011-08-26 00:34:45 +00:00
drh
88caeac774 Fix some harmless compiler warnings.
FossilOrigin-Name: 46f5a68bfa4199a4bd398030bf88bfbb4df3d5ca
2011-08-24 15:12:08 +00:00
drh
d017ab9922 Remove a branch that is always true.
FossilOrigin-Name: a65681926d8acf779ad39be21b74537c21777783
2011-08-23 00:01:58 +00:00
drh
fc0ce2a83e Fix a bug in the cleanup of stat tables on a DROP TABLE in autovacuum mode.
FossilOrigin-Name: 3fe5d54f635f7b27851d256e417f21b91febb871
2011-08-18 02:51:21 +00:00
drh
9da058bb5c Use OP_Sort rather than OP_Rewind in order to sort the content of a new
index on the CREATE INDEX statement.  Add an ALWAYS() to the merge sort
logic to document an unreachable branch.

FossilOrigin-Name: f01766f42342f043bf0cbe1e07224963011f01b7
2011-08-17 00:40:58 +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
dan
15bf39034a Merge latest trunk changes into experimental branch.
FossilOrigin-Name: 7e515055f219b01dd72df4e27bdcabfa2f9be5c2
2011-08-12 16:30:30 +00:00
dan
689ab89781 Add the SQLITE_OMIT_MERGE_SORT pre-processor directive. To omit the code in vdbesort.c.
FossilOrigin-Name: 4ced2394b10d0a4f86422ff893bcdf3cf32591e3
2011-08-12 15:02:00 +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
a5ae4c330b Remove relevant elements from the sqlite_stat2 table when doing a DROP
INDEX or DROP TABLE.

FossilOrigin-Name: 3c8f97ae527e380bf2583c7cf8ceac9509f29bfe
2011-08-07 01:31:52 +00:00
dan
a20fde64eb Experimental support for speeding up CREATE INDEX commands using an offline merge sort.
FossilOrigin-Name: 30dbf0feab0323250404e0741ac2716bcb6b0cbe
2011-07-12 14:28:05 +00:00
dan
28e4e35586 Explicitly cast an argument to printf() to (int), in case the result of the pointer arithmetic expression is a 64-bit integer on some platforms.
FossilOrigin-Name: 90cfeaf7b68eebc2cd75bc60b1bb86823646fe30
2011-06-24 18:43:23 +00:00
drh
5d9c9da6e8 Create and use a function especially for adding the ParseSchema opcode.
This gives a small reduction in code and a small performance increase.

FossilOrigin-Name: 957b2ab67c6185f0e1062593d237de5c434a38bf
2011-06-03 20:11:17 +00:00
drh
124c0b49a1 Refactor the SQL parameter processing so that parameter names for values
that are optimized out of the prepare statement are not forgotten.

FossilOrigin-Name: b3aaf715b60b8a338cc6c92dad1ead4a3f7146a3
2011-06-01 18:15:55 +00:00
dan
3a6d8aec2a Have the ATTACH command do URI interpretation in the same way as sqlite3_open() and sqlite3_open_v2() do.
FossilOrigin-Name: 68240e75e87a54cde93352b0ec364d34365a8170
2011-04-23 15:54:54 +00:00
dan
579667537a Add VerifyCookie instructions to "DROP XXX IF EXISTS" statements if the specified database object does not exist when the statement is prepared.
FossilOrigin-Name: a46f32900a013aa6bb2dad2a9ed3ce00ab2493fd
2011-04-09 17:32:58 +00:00
dan
7687c83d4c Add an OP_VerifyCookie instruction to "CREATE XXX IF NOT EXISTS" commands. This way, if the specified database object existed when the statement was compiled but removed from the database before sqlite3_step() was called, the statement still works as expected (and creates the object).
FossilOrigin-Name: b9dbd9936191666c3fc9889e938344a82cc03aeb
2011-04-09 15:39:02 +00:00
drh
fcd71b6010 Suppress many harmless compiler warnings, mostly signed/unsigned comparisons
within asserts or unused parameters in extensions.

FossilOrigin-Name: 3eeb0ff78d04891b5fd1a3d99a9fb8cfbed77a81
2011-04-05 22:08:24 +00:00
drh
d3ef5ae05f Simplifications to the sqlite3ResetInternalSchema() logic to eliminate
unreachable branches.

FossilOrigin-Name: a4c3ac989d4e93f0279172901b9ece822d137700
2011-04-05 19:26:30 +00:00
drh
cdf011dcc4 Additional schema mutex checks for sqlite3RootPageMoved().
Reduce the scope of sqlite3ResetInternalSchema() in a few places.

FossilOrigin-Name: 39c00907833413c0d97d3e06fdda967b825d23ea
2011-04-04 21:25:28 +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
b6ee66072e Rename sqlite3SchemaFree() to sqlite3SchemaClear() to more accurately reflect
its function.

FossilOrigin-Name: 71d7440023f67760d0bff4bd7459fe88bd226f30
2011-04-04 13:40:53 +00:00
drh
069d32592d Merge in the latest changes from trunk.
FossilOrigin-Name: 0d99229a7a58da07748072326f6261c533c1958f
2011-04-02 20:08:10 +00:00
drh
6412358526 Change the name of the "tAttachMask" datatype to "yDbMask".
FossilOrigin-Name: 3d6f2e82358c0d8c0ca04e0da20b84fc65c3f7fa
2011-04-02 20:01:02 +00:00
drh
ff2e14b93f When resetting any non-TEMP schema, also reset the TEMP schema since it might
be holding references to the non-TEMP schema that just got reset.

FossilOrigin-Name: 211d5dde1f9c15048c65d1d700141aa7b2491011
2011-04-02 16:50:25 +00:00
drh
c7792fa052 Begin a series of changes designed to reduce the scope and frequency of
invalidating schemas.  Design goals are that the internal schema should
never be deleted out from under a prepared statement that is running and
that all prepared statements should be expired if the schema is invalidated.
At the same time, minimize the number of schema invalidations.  This change
merely revises the sqlite3ResetInternalSchema() function to use -1 as the
wildcard for "all" rather than 0, so that we can reset the main schema
independently of all the others.

FossilOrigin-Name: 6a8ad6e31e0d2b8a5ace38faf0efd805155ee5f3
2011-04-02 16:28:52 +00:00
drh
22645842a4 The changes to fix [f7b4edece25c9948] mean that the schema is always loaded
whenever a prepared statement is running.  This means that a couple of
branches can be eliminated and one operand of OP_ParseSchema can be removed.

FossilOrigin-Name: b6e268fce12829f058f1dfa223731ec8479493f8
2011-03-24 01:34:03 +00:00
drh
01c7dc887c Increase the upper bound on SQLITE_MAX_ATTACHED from 30 to 62.
FossilOrigin-Name: 7aaf8772274422f5020fad9eea490e195170720f
2011-03-23 18:22:34 +00:00
drh
c2a75551ef Add a generation counter to the Schema object and enhance OP_VerifySchema
to also check the Schema generation.  Fix for
ticket [f7b4edece25c99].

FossilOrigin-Name: 36c04dd1695f0899b53ce58738181b146fc005ed
2011-03-18 21:55:46 +00:00
drh
8a8a0d1d60 Simplify the test that determines if the name of a new table collides with
a prior index name.

FossilOrigin-Name: 3f30f00a384d23582f3fe5e68add7fb7d7834926
2010-09-28 20:26:44 +00:00