1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-01-06 08:01:16 +03:00
Commit Graph

615 Commits

Author SHA1 Message Date
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
dan
39f1bcb1df Fix some problems that can occur if a trigger has the same name as another database object.
FossilOrigin-Name: 655991ec8a781d67d69fc353853403b9a811acf2
2010-09-29 07:16:46 +00:00
dan
a16d106037 Add tests to e_createtable.test. Allow a table to be created if there is an index of the same name in a different attached database.
FossilOrigin-Name: 6251e587403eed822b9011ed25a3a807e8fa2a6f
2010-09-28 17:37:28 +00:00
dan
72c5ea3279 Disallow statements of the form "CREATE TEMP TABLE main.t1 ...".
FossilOrigin-Name: dd1b34bab7edaaedd985882f6e16b16940a46d38
2010-09-28 15:55:47 +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
75c014c321 Remove the sqlite3BtreeFactor() wrapper routine. All modules now call
sqlite3BtreeOpen() directly.

FossilOrigin-Name: 0900e35348f4b9bf327d6ae2884c4ddbb6345d8d
2010-08-30 15:02:28 +00:00
drh
50d1b5f363 Remove unnecessary code from malloc.c. Enhance pcache1.c so that is tries
to reuse existing pages, rather than create new pages, when SQLite is under
memory pressure.  "Memory pressure" means that SQLITE_CONFIG_PAGECACHE memory
is nearly exhausted or sqlite3_soft_heap_limit() has been reached.

FossilOrigin-Name: 51049479a8577e03cc353f71f6e13a10c8323d91
2010-08-27 12:21:06 +00:00
drh
078e4084e9 Get SQLITE_OMIT_VIRTUALTABLE working again after being broken by recent
changes.

FossilOrigin-Name: 33b1e862ffa7109480cf4a77ceae8aebe98d3eee
2010-07-28 19:17:51 +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
dan
1feeaed291 Remove the Table.dbMem variable, as it is no longer being used for its original purpose.
FossilOrigin-Name: 6eddc6e601cf8f585c6c2cf79f36fcbfe98a307e
2010-07-23 15:41:47 +00:00
drh
c6b2a0ff99 Change the journal_mode pragma to remove the "default journal mode" concept.
The journal_mode pragma only effects currently attached databases and does 
not change the behavior of future attachments.

FossilOrigin-Name: e396184cd3bdb96e29ac33af5d1f631cac553341
2010-07-08 17:40:37 +00:00
dan
1db95106ee Currently, if SQLite cannot find a table or index referred to by a query, it reloads the database schema from disk to see if the table or index has been added since the schema was cached in memory. Extend this behaviour to columns (which may have been added using ALTER TABLE) and fix some obscure cases related to tables and indexes (INDEXED BY, DROP TABLE etc.).
FossilOrigin-Name: 4932f22848b3d15a2b6dc5fa2cd69ce19182e2a4
2010-06-28 10:15:19 +00:00
drh
0b9b4301b8 Refactor and simplify the logic used to change journalmode.
FossilOrigin-Name: 95cc3f6fdec5494560c3cd4439d06870d1c62506
2010-06-11 17:01:24 +00:00
dan
558814f8c6 Add some 'const' markers to static data that is really constant.
FossilOrigin-Name: e7073e23b80e7cae0c76d42f014ee9b2d40a8f2f
2010-06-02 05:53:53 +00:00
drh
e294da02ba Fix to the database connection validity checker. Other test coverage
enhancements.

FossilOrigin-Name: 0f6291bbbd31673e2a65f38c7fc364c33719d25e
2010-02-25 23:44:15 +00:00
drh
a756466349 Log all error messages if logging is enabled.
FossilOrigin-Name: a8076aede33c07e9a2aaa05be8a888f37b45e41c
2010-02-22 19:32:31 +00:00
drh
7c9c98684c If an OOM occurs while setting the page size for the TEMP database, be sure
that error gets reported back out to the interface layer.

FossilOrigin-Name: 6487e70a1e18bb01ee692e250b41c8652e34a87c
2010-01-31 14:18:21 +00:00
drh
10a76c90e4 Make the TEMP file tables use the page size set for the main database.
Ticket [b80eeab588c4].  
Also copy over the changes from apple-osx check-in [7c3bede3f2].

FossilOrigin-Name: 5dcfb0c9e420d27e54a299b3991b98776651a507
2010-01-26 01:25:26 +00:00
drh
07096f68ae Move the query flattener turn-off from a pragma to an sqlite3_test_control()
call.  Make provisions (not yet implemented) to turn off other optimizers
using the same call.

FossilOrigin-Name: 4a97c623f4e190134de4b2ca406e311034a74797
2009-12-22 23:52:32 +00:00
drh
972a23119e Allow zero-length names for tables, columns, and indices.
Fix for ticket [78e04e52eaf].

FossilOrigin-Name: 7b1cfd65a6f7c85ef8f6e4622973457cff9d007c
2009-12-08 14:34:08 +00:00
drh
c81c11f62c Remove the obsolete "$Id:$" RCS identifier strings from the source code.
FossilOrigin-Name: f6c045f649036958078cb15cd9d5453680c82b0c
2009-11-10 01:30:52 +00:00
drh
4c4298392e Add asserts as evidence that all FK constraints are either immediate or
deferred.

FossilOrigin-Name: 634ef4fc9f4051245b38f558bb1c733031548c2f
2009-10-12 22:30:49 +00:00
dan
d66c83095e Fix the DROP TABLE command so that it cannot be used to bypass foreign key constraints (if foreign key support is enabled).
FossilOrigin-Name: 8353808c9e70412fdee31bfda7810e948f1c7485
2009-09-28 14:49:01 +00:00
drh
ff738bce0d Make sure a transaction is available for rollback whenever a REDUCE conflict
resolution occurs and there is the possibility to ABORT.
Ticket [4a03edc4c8c]

FossilOrigin-Name: f0c56fa90dc95aff6fe6764b5ab75a90199247b0
2009-09-24 00:09:58 +00:00
dan
8099ce6f4a Add missing comments to fkey.c. Also, change the terminology used for comments and names in fkey.c from "referenced/referencing" to "parent/child". This is arguably less correct, but is easier to follow.
FossilOrigin-Name: 540c2d18e14c277b55f95729fbafc04ca66466b2
2009-09-23 08:43:35 +00:00
dan
f59c5cacb8 Fix another OOM related problem in fkey.c.
FossilOrigin-Name: e2bc51bc61d54d103ccffd12106c27a574e4e997
2009-09-22 16:55:38 +00:00
dan
1da40a381f Check in implementation of foreign key constraints.
FossilOrigin-Name: d5d399811876391642937edeb9e8434dd9e356f5
2009-09-19 17:00:31 +00:00
drh
3492dd71dd Make sure sufficient space is allocated for at least one VDBE cursor when
autoincrement is used.  Ticket [a696379c1f088].

FossilOrigin-Name: 2b2a1ef74e24857b8d18f6370894588fc2aa5ebb
2009-09-14 23:47:24 +00:00
drh
92aa5eacd8 Add an #ifndef so that the build works with SQLITE_OMIT_ANALYZE again.
FossilOrigin-Name: b084828a771ec40be85f07c590ca99de4f6c24ee
2009-09-11 14:05:06 +00:00
dan
f3677212e3 Fix a problem with the sqlite3VdbeMayAbort() assert failing following an OOM.
FossilOrigin-Name: b3027863505fa8edf355f3f5eea4502ef365175e
2009-09-10 16:14:50 +00:00