Commit Graph

9446 Commits

Author SHA1 Message Date
dan f7b0b0ad5f When generating WHERE clause terms internally for NATURAL and USING joins, identify the table by its position in the FROM list, not by its name or alias. Fix for [b73fb0bd64].
FossilOrigin-Name: 6fe6371175482d38ac4aeea994c7b20c18b7de01
2009-10-19 15:52:32 +00:00
drh bec451f8ad Make sure the target register is allocated before adding the bogus
OP_Variable opcode in isLikeOrGlob().  Bugfix for the new 
sqlite3_reoptimize() logic.

FossilOrigin-Name: e74f8dc436213b7ef754adcab5ef7554d774474c
2009-10-17 13:13:02 +00:00
dan 03c7b99988 Add documentation comment for new experimental API sqlite3_reoptimize().
FossilOrigin-Name: c48f8ffedc30841aa4994eb925d09c2ee97a864d
2009-10-17 08:26:29 +00:00
drh ebecd2c970 Merge the sqlite3_reoptimize() changes into the trunk.
FossilOrigin-Name: 50136840d54674c239613265ebbacaabf215f4e2
2009-10-16 16:21:51 +00:00
dan 85a48dfd71 Remove a mutex reference leak from sqlite3_reoptimize().
FossilOrigin-Name: 9f0937066184421f23453ceb451fd726c75cb593
2009-10-16 15:19:08 +00:00
drh 0ee3dbef79 Comment cleanup in btree.c.
FossilOrigin-Name: 32966ba4796e70d0afcff6abdda9bdcba08b098a
2009-10-16 15:05:18 +00:00
dan fa401def25 Experimental fix for [f777251dc7]. This may be changed yet.
FossilOrigin-Name: 174477bca05d019e663fd2b7cd031189ab2e010a
2009-10-16 14:55:03 +00:00
drh ed1f8787aa Fix comment typos in btreeInt.h.
FossilOrigin-Name: 550566a75fc79e3662431ba493af853b522d8850
2009-10-16 13:23:33 +00:00
dan 937d0dea4f Add the experimental sqlite3_reoptimize() API.
FossilOrigin-Name: 9bd6f3d8864d422fe42074688b191915b27ad8ea
2009-10-15 18:35:38 +00:00
drh fcb9f7ad7a Fixed warnings with MSVC compile.
FossilOrigin-Name: e0aa50c382a56bb02eaa589619b7e670006a26b3
2009-10-13 19:19:23 +00:00
drh a2c8a95b1c Update the TCL wrapper to provide a non-NULL objProc pointer to the
Tcl_NRCreateCommand() interface.  The TCL gurus say this is needed to
support legacy TCL extensions.

FossilOrigin-Name: 1b3cfa01dd7fb9a48f0008f5afd974db61c30cff
2009-10-13 18:38:34 +00:00
drh 9e9f1bd1c0 When a write transaction fails to being because the database is read-only,
fail right away.  Do not give the error code an opportunity to be
overwritten with SQLITE_OK.  Ticket [5ee23731f15].

FossilOrigin-Name: bc1101179abb4577417c971a7e4fbacde50e19a2
2009-10-13 15:36:51 +00:00
drh d3ceeb50f3 Suppress some harmless compiler warnings.
FossilOrigin-Name: 5d381daa6e5248ec171aa682e2dad058d4012f24
2009-10-13 13:08:19 +00:00
drh 4591c7bab5 Make sure mem3.c releases its mutex on an sqlite3_shutdown() call.
FossilOrigin-Name: 16254ad5aad355acedf72e0a1c618438041d5889
2009-10-13 12:48:43 +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
drh 9a616f5607 When processing FK constraints on changes to parent tables, make sure the
names of child tables appear correctly in the output of EXPLAIN QUERY PLAN.

FossilOrigin-Name: a4ab5215fed231c8e5f8714f5cadafd1209b362a
2009-10-12 20:01:49 +00:00
drh c4ad1e946b Update requirement text for sqlite3_open_blob(). Update evidence comment
in e_fkey.test to conform to the latest requirement phrasing.

FossilOrigin-Name: 89c548acf4691bad3d90400026267d4c6a55cde1
2009-10-10 14:29:30 +00:00
dan 8b6d37d8bc Fix a problem in the legacy genfkey code to do with column names that require quoting.
FossilOrigin-Name: 273ccbf18af5191807678a0a0c09cda82408b29c
2009-10-08 13:42:28 +00:00
drh a172c34488 Fix a segfault that can occur following an OOM fault while renaming a
table holding foreign key constraints.

FossilOrigin-Name: 33973814c67bc9bac575bf2249df6530dd2184d3
2009-10-08 01:43:55 +00:00
drh 9b5db1dbd6 Use memcpy() rather than structure assignment so that memcmp() can later
be used for comparison.  Ticket [8550ecca70]

FossilOrigin-Name: 56f609da4bfcc794e1f8573652dcde8515e87098
2009-10-07 23:42:25 +00:00
dan f589450dc9 Add some tests of statements in foreignkeys.html.
FossilOrigin-Name: 8382867956caf20f62c46c15b456c1c16d0824fd
2009-10-07 18:41:19 +00:00
dan ed81bf6082 Add a missing OP_Close opcode to VDBE programs that check for FK constraint violations.
FossilOrigin-Name: 5caa4a2b050d5743b1407485cf419aa36cf16ac6
2009-10-07 16:04:46 +00:00
dan fedd4805be Update the header comment for sqlite3_blob_open to note that it is not possible to write to a column that is indexed, part of a primary key or, if foreign key support is enabled, part of a foreign key.
FossilOrigin-Name: 2fd487fdb669df89a8eb62cd0b7dc27ea1016edf
2009-10-07 11:29:40 +00:00
dan b616309f52 Update header file comments describing the sqlite3_changes and sqlite3_total_changes functions to describe how changes made by foreign key actions are handled.
FossilOrigin-Name: 4c342c026a84f2608c2b331a1ac016117b80f108
2009-10-07 10:43:26 +00:00
dan 4a4c11aaf5 Change tclsqlite.c to use the Tcl_NRxxx() APIs in Tcl versions 8.6 and later.
FossilOrigin-Name: e9f72f1de459a9e8380609f6bd7d4b76afb59f89
2009-10-06 14:59:02 +00:00
dan 02470b20f3 Handle an SQLITE_IGNORE returned when requesting authorization to read parent key columns by pretending the parent key columns contain NULL values.
FossilOrigin-Name: 3c24df38e6ae5dfe999bbf3133b65df0074c6a50
2009-10-03 07:04:11 +00:00
dan 47a06346ff When inserting a row into a child table, invoke the authorization callback to request permission to read the parent key columns.
FossilOrigin-Name: 9842f2d5f606eb8f641ecae9fbc5368b8d7e4286
2009-10-02 14:23:41 +00:00
dan 1316700e54 Add a test to check that the incrblob API cannot be used to write to an IPK column. Also a comment to explain why the incrblob code does not need to check if a column is part of a parent key before writing to it.
FossilOrigin-Name: dca2a7f608d9237039541707846c76cd460f5805
2009-10-02 06:35:06 +00:00
dan e7a94d8128 If an update does not modify any child or parent key columns, omit foreign key processing for the statement.
FossilOrigin-Name: edff3500058eb8ad2381f855ef7a09ecb680f7b8
2009-10-01 16:09:04 +00:00
dan f7a94543b8 Remove unreachable branches from fkey.c. Add a few tests to cover the remaining branches.
FossilOrigin-Name: 0a0a17d87c990a811a2755b9d9d4141b611b49db
2009-09-30 08:11:07 +00:00
dan 1cf021e143 Change a couple of comments to use "SQLITE_MUTEX_OMIT" instead of OMIT_MUTEX.
FossilOrigin-Name: b733e939f785111eac987fe4a25ccfa512e4f0b4
2009-09-30 04:28:04 +00:00
dan 652ac1d0a7 Use the affinity and collation sequence associated with the parent key when finding child table rows to apply a foreign key action to.
FossilOrigin-Name: 9a4b7ec2928307e88783223903c842accaff7ccf
2009-09-29 16:38:59 +00:00
dan 9707c7b104 Check that a unique index uses the default collation sequences for each column before using it as part of a foreign key constraint operation.
FossilOrigin-Name: 64154174cf8a53bd9be818db53cb0e586c5d24cb
2009-09-29 15:41:57 +00:00
dan 792e92012f Remove an unused variable from fkey.c.
FossilOrigin-Name: 582bd7682831362cd0e2f91ac0dba5ab2b7e2983
2009-09-29 11:28:51 +00:00
dan 856ef1a5f9 Various fixes so that "make test" works with OMIT_FOREIGN_KEY, OMIT_TRIGGER and OMIT_ALTER_TABLE.
FossilOrigin-Name: e4eb227b14e4bfcb9f7f284692a391b7355f0204
2009-09-29 06:33:23 +00:00
dan f0662567fa Ignore foreign key mismatch errors while compiling DROP TABLE commands.
FossilOrigin-Name: 5b4d46374a8e808246a1813c12c36c4a75371898
2009-09-28 18:52:11 +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
dan 9277efa3d5 Fix some foreign key constraint related problems that occur when a row refers to itself.
FossilOrigin-Name: 9e503e2d0428c9e8df878c7c6594790232cca4e0
2009-09-28 11:54:21 +00:00
dan 432cc5b9f3 When ALTER TABLE RENAME TO is used to change the name of a table that is the parent table of a foreign key constraint, modify that foreign key constraint to use the new table name.
FossilOrigin-Name: b4a10c39e726dc190e9597e382baddc034294114
2009-09-26 17:51:48 +00:00
dan 0ff297eaa7 Avoid checking if an insert or delete has "fixed" an outstanding FK constraint violation if the constraint counter indicates that the database contains no such violations.
FossilOrigin-Name: 519144ac437b5842e4213f0e81e05c709939c2ab
2009-09-25 17:03:14 +00:00
dan bd74783270 Fix comments in fkey2.c to reflect the immediate-constraint-counter approach.
FossilOrigin-Name: 9fd54b0aa73ed74c65f7db53cb666752f13263f9
2009-09-25 12:00:01 +00:00
dan 53c3fa8dbe Prevent ALTER TABLE from being used to add a column with a REFERENCES clause and a non-NULL default value while foreign key support is enabled.
FossilOrigin-Name: 353b1b18253ab71ba38a887e555994f5469b87bd
2009-09-25 11:26:54 +00:00
dan 140026bdb5 Fixes and test cases to make sure the affinity and collation sequence associated with the parent key is used when comparing it with a child key value.
FossilOrigin-Name: 76e8e74b49be4c80b9fb20d52e9b39db8001362e
2009-09-24 18:19:41 +00:00
dan e1e2ae2d3f Fix a bug in the code for REPLACE conflict handling on IPK columns when there are no indexes on the table. Triggers and foreign key processing were being bypassed.
FossilOrigin-Name: beb2094f94849c66d98bab5999ff474cd91eea11
2009-09-24 16:52:28 +00:00
dan 8c430041f5 Fix a problem in fkey.c when a child key is the IPK of its table.
FossilOrigin-Name: 8a000a8aae4d356e68acf2bc1788d2c40279522c
2009-09-24 15:16:33 +00:00
drh 46803c3e0b Remove the ALWAYS() added by the previous check-in. It is not needed.
FossilOrigin-Name: 36568963356e3919e8b862e7e40ded2eae7ce187
2009-09-24 14:27:33 +00:00
drh 1f638ceb34 Comment enhancements. Add an ALWAYS macro in fkey.c to indicate a branch
that is always taken.

FossilOrigin-Name: d5b714cffffe588dd4dd10e0b82df8d99657be88
2009-09-24 13:48:10 +00:00
dan 1bea559a94 Ensure foreign key related processing takes place when rows are deleted from the database by REPLACE conflict handling.
FossilOrigin-Name: 3f40c142c8526c1572020bd4d945c03a72019135
2009-09-24 11:31:21 +00:00
dan 4bb3b679b0 Use sqlite3FkOldmask() in delete.c instead of assuming that foreign key constraints always require all columns of the deleted row to be stored in registers.
FossilOrigin-Name: ce554a393401fc2fb9b5be049ddd383070102934
2009-09-24 10:42:09 +00:00
dan 94d7f50a0f Remove unused parameter from sqlite3CodeRowTrigger(). Fix header comments for this function and CodeRowTriggerDirect().
FossilOrigin-Name: 0443f7c9112ca91aa45c78a3d6287e5fcf5c3b73
2009-09-24 09:05:49 +00:00