Bug fix: When multiple SQL statements were passed into a single sqlite_exec() call, execution speed would decrease for each statement executed because VDBE cursors were not being reused. Now the cursors are reused and execution time is linear. (CVS 754)
Fix a bug in the OP_MemStore operator of the VDBE. A realloc() might
occur but pointer to the old buffer were not being moved over to
the new buffer. (CVS 752)
Modify the sqlite_encode_binary() routine to return the strlen() of the
encoded string. Also fix a bug that occurs when attempting to encode
a zero-length buffer. (CVS 751)
Rename all tests so that the first part of the test name corresponds to the
file that contains that test. This makes it much easier to find a particular
test after it fail. (CVS 749)
Modify the build process so that the VDBE opcode numbers and the table
that contains the opcode names are both automatically generated. This makes
it much easier to create new VDBE opcodes. (CVS 1727)
Modify the build process so that the VDBE opcode numbers and the table
that contains the opcode names are both automatically generated. This makes
it much easier to create new VDBE opcodes. (CVS 746)
Relax the locking requirements on BTree cursors. Any number of read and
write cursors can be open at the same time now, but a write cannot occur
as long as one or more read cursors are open.
Before this change, one or more read cursors could be open on a table,
or a single write cursor, but not both. Both policies have the same
desirable effect: they prevent writes to a table while a sequential scan
of that table is underway. But the new policy is a little less restrictive.
Both policies prevent an UPDATE from occurring inside a SELECT (which is
what we want) but the new policy allows a SELECT to occur inside an
UPDATE. (CVS 739)
drh [Thu, 29 Aug 2002 23:59:47 +0000 (23:59 +0000)]
If the database is locked when sqlite_open() is called, sqlite_exec() should
still honor the busy callback and should return an error message together
with the SQLITE_BUSY result code. (CVS 733)
drh [Sun, 25 Aug 2002 19:20:40 +0000 (19:20 +0000)]
Fix for ticket #136: Added the OP_RenameCursor VDBE instruction and used it
to make cursor numbers right on nested subqueries. Also added OP_Gosub and
OP_Return but have not actually used them for anything yet. (CVS 727)
drh [Sun, 18 Aug 2002 22:41:22 +0000 (22:41 +0000)]
This COLLATE keyword was not being parsed correctly inside CREATE TABLE
statements - it was being included as part of the datatype. This fixes
the problem. (CVS 722)
drh [Sun, 18 Aug 2002 20:28:06 +0000 (20:28 +0000)]
Fix for ticket #110: return an error if trying to start a transaction within a
transaction or when attempting to commit or rollback outside of a transaction. (CVS 721)
drh [Sun, 4 Aug 2002 00:52:38 +0000 (00:52 +0000)]
Fix for ticket #131: When a SELECT contains a GROUP BY clause it cannot
use an index for sorting. It has to sort as a separate operation after
the GROUP BY is complete. (CVS 702)
drh [Fri, 2 Aug 2002 10:36:09 +0000 (10:36 +0000)]
Remove the restriction that a transaction cannot be started by one linuxthread
and continued by another. Leave in the documentation the warning about not
carrying a database connection across fork() but do not test for it any more.
Ticket #130. (CVS 701)
Fix for ticket #104: Make triggers on views work properly even after closing
and reopening the database. Also fixed an unrelated bug in the version
2.6.0 database format upgrade logic. The upgrade logic bug was found while
testing the trigger fixes. (CVS 697)
Fix for ticket #111: Update the documentation to explain that you may not
start a transaction in one thread and complete it in another thread under
Linux Threads where each thread has its own process ID. (CVS 695)
Fix an assertion failure that occurs when attempting to delete all rows of
a table while the "count_changes" pragma is turned on. Up the version number
to 2.6.1. (CVS 690)
Make the automatic database upgrade work even if there are triggers. Add
tests for automatic upgrade and for failing if reading a more advanced version
of the database. Ticket #107. (CVS 682)
Fix for ticket #107: Fix a design defect in indices that was causing queries
to fail when using an index on a column containing an empty string. This
fix is an incompatible file-format change. (CVS 681)
Fix for ticket #105: Fix the UPDATE command so that it works properly with
indexed tables when there is a subquery in the WHERE clause. Add tests
to verify correct operation. (CVS 680)
Partial fix for ticket #96: Return SQLITE_MISUSE from sqlite_exec() if called
from a child process with an active transaction that was started in the parent. (CVS 675)
Turn of the reporting of datatypes in the 4th callback argument unless the
SHOW_DATATYPES pragma is ON. Eliminate the NULL pointer that used to separate
the beginning of datatypes from the end of column names so that the callback
can test to see whether or not datatypes are provided. This is an
incompatible changes, but since the prior behavior was never documented, we
will let it in. (CVS 670)
When reporting back the datatype of columns, use the text of the datatype
as it appears in the CREATE TABLE statement, if available. Also: removed
the ".reindex" command from the shell. (CVS 669)
In the BTree subsystem, when using pages from the freelist, attempt to select
pages close to related pages in order to keep data structures near each other
in the database file. This improves access speed in some circumstances. (CVS 667)
More rollback problems: Fix two more errors introduced by checking (410) that
can cause database corruption after a ROLLBACK. Also add new tests to make
sure everything is working this time. (CVS 663)
Fix for bug #94: Be sure to journal pages that are added to the freelist then
removed from the freelist and reused during the same transaction. (CVS 660)