mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
The new Btree code runs, but it does not yet work. (CVS 240)
FossilOrigin-Name: 991ce8115052da9395d4bf8ff29f417e3c36dc7f
This commit is contained in:
18
manifest
18
manifest
@@ -1,9 +1,9 @@
|
|||||||
C The\sBTree\schanges\sare\snow\sintegrated\sand\sthe\swhole\sthing\scompiles\sand\nlinks.\sI\shave\snot\syet\stried\sto\srun\sit,\sthough.\s(CVS\s239)
|
C The\snew\sBtree\scode\sruns,\sbut\sit\sdoes\snot\syet\swork.\s(CVS\s240)
|
||||||
D 2001-09-13T14:46:10
|
D 2001-09-13T15:21:32
|
||||||
F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
|
F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
|
||||||
F Makefile.in 7ecb2370b5cb34d390af1fcb3118ea6d84a253ca
|
F Makefile.in 7ecb2370b5cb34d390af1fcb3118ea6d84a253ca
|
||||||
F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958
|
F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958
|
||||||
F VERSION 00453ed53ff28fe8e701e1609e81f1b9df12adab
|
F VERSION 05e17b646a817240c206186f94f8f4c70974d5dc
|
||||||
F configure d2051345f49f7e48604423da26e086a745c86a47 x
|
F configure d2051345f49f7e48604423da26e086a745c86a47 x
|
||||||
F configure.in e7465c88bbfb76882f97769c2dd90dbba8eca5db
|
F configure.in e7465c88bbfb76882f97769c2dd90dbba8eca5db
|
||||||
F doc/lemon.html 3ddeef6e5dee69a2bb6f5d8e4975b58f2fd8e11c
|
F doc/lemon.html 3ddeef6e5dee69a2bb6f5d8e4975b58f2fd8e11c
|
||||||
@@ -12,7 +12,7 @@ F notes/notes1.txt b7c0812b704a022e88c621146ae50955c923d464
|
|||||||
F notes/notes2.txt 7e3fafd5e25906c1fe1e95f13b089aa398ca403e
|
F notes/notes2.txt 7e3fafd5e25906c1fe1e95f13b089aa398ca403e
|
||||||
F notes/notes2b.txt 1c17a5b7f6b44a75cd3eb98ed2c24db1eefb06c3
|
F notes/notes2b.txt 1c17a5b7f6b44a75cd3eb98ed2c24db1eefb06c3
|
||||||
F notes/notes3.txt 71e47be517e3d2578b3b9343a45b772d43b7ba16
|
F notes/notes3.txt 71e47be517e3d2578b3b9343a45b772d43b7ba16
|
||||||
F src/TODO 38a68a489e56e9fd4a96263e0ff9404a47368ad4
|
F src/TODO f0ea267ab55c4d15127c1ac1667edbf781147438
|
||||||
F src/btree.c 9f22b51681bcc0026ea300134e4e2f1f40fc0800
|
F src/btree.c 9f22b51681bcc0026ea300134e4e2f1f40fc0800
|
||||||
F src/btree.h 2427961c702dd0755ec70f529cf3db32707d689b
|
F src/btree.h 2427961c702dd0755ec70f529cf3db32707d689b
|
||||||
F src/build.c 58020177a1b96455284899774442833a81c5ae9c
|
F src/build.c 58020177a1b96455284899774442833a81c5ae9c
|
||||||
@@ -27,7 +27,7 @@ F src/ex/pg.h 23a4ac807b0546ec2bb6239ec8bd3e06926572cd
|
|||||||
F src/ex/sizes.tcl f54bad4a2ac567624be59131a6ee42d71b41a3d7
|
F src/ex/sizes.tcl f54bad4a2ac567624be59131a6ee42d71b41a3d7
|
||||||
F src/expr.c 83b6a7ed4cf502249f192b698517e9a9b8f05303
|
F src/expr.c 83b6a7ed4cf502249f192b698517e9a9b8f05303
|
||||||
F src/insert.c 1072c0dd7782c17af735df37f447630d4d577ba1
|
F src/insert.c 1072c0dd7782c17af735df37f447630d4d577ba1
|
||||||
F src/main.c b7a2da8375ca61d4464610368608e7fd0566b950
|
F src/main.c c5f8931674ac1fa8e8c6e0062d3c5700e204f3b7
|
||||||
F src/md5.c 52f677bfc590e09f71d07d7e327bd59da738d07c
|
F src/md5.c 52f677bfc590e09f71d07d7e327bd59da738d07c
|
||||||
F src/pager.c 05a2177c99a835c3efec1e4187556e2e29311d4a
|
F src/pager.c 05a2177c99a835c3efec1e4187556e2e29311d4a
|
||||||
F src/pager.h 238aa88bafe33911bf9b0b365f35afd0a261cd46
|
F src/pager.h 238aa88bafe33911bf9b0b365f35afd0a261cd46
|
||||||
@@ -47,7 +47,7 @@ F src/test3.c 147b42ec368a10e9f267e7466d30c46e76d7f278
|
|||||||
F src/tokenize.c 0118b57702cb6550769316e8443b06760b067acf
|
F src/tokenize.c 0118b57702cb6550769316e8443b06760b067acf
|
||||||
F src/update.c ea8f2c0712cd4cd19314a26ef4766866013facda
|
F src/update.c ea8f2c0712cd4cd19314a26ef4766866013facda
|
||||||
F src/util.c c77668fef860cfd2e4e682ef4f3ed8f9e68c551b
|
F src/util.c c77668fef860cfd2e4e682ef4f3ed8f9e68c551b
|
||||||
F src/vdbe.c f502b592d1cc94f68e9e4b3fa130361cb3038b0c
|
F src/vdbe.c d5f0a2de6427cd4843c13e093b0039e5fac05e0f
|
||||||
F src/vdbe.h 6ee941ecd78b7b224607517fd060d6547910dc10
|
F src/vdbe.h 6ee941ecd78b7b224607517fd060d6547910dc10
|
||||||
F src/where.c b9f6d2c029983e9db9521474c876f9a039e7fb6c
|
F src/where.c b9f6d2c029983e9db9521474c876f9a039e7fb6c
|
||||||
F test/all.test 21d55a97e39e7ec5776751dc9dd8b1b51ef4a048
|
F test/all.test 21d55a97e39e7ec5776751dc9dd8b1b51ef4a048
|
||||||
@@ -108,7 +108,7 @@ F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f
|
|||||||
F www/sqlite.tcl cb0d23d8f061a80543928755ec7775da6e4f362f
|
F www/sqlite.tcl cb0d23d8f061a80543928755ec7775da6e4f362f
|
||||||
F www/tclsqlite.tcl 06f81c401f79a04f2c5ebfb97e7c176225c0aef2
|
F www/tclsqlite.tcl 06f81c401f79a04f2c5ebfb97e7c176225c0aef2
|
||||||
F www/vdbe.tcl 0c8aaa529dd216ccbf7daaabd80985e413d5f9ad
|
F www/vdbe.tcl 0c8aaa529dd216ccbf7daaabd80985e413d5f9ad
|
||||||
P 6ecc8b20d4f402f45f03d46d8d4fa40dea666e97
|
P a0a1e701abc52a164d9b09a5426eb12af1fe6a4c
|
||||||
R 9f3dc1f51d7a55174d7eb7f5f17c9756
|
R 472be17e965b4d5d7fba15c027cd1366
|
||||||
U drh
|
U drh
|
||||||
Z 89f03479b34b99fd737e2528660926bd
|
Z d550eba50f66b2bb3dd421288cbb8ffd
|
||||||
|
@@ -1 +1 @@
|
|||||||
a0a1e701abc52a164d9b09a5426eb12af1fe6a4c
|
991ce8115052da9395d4bf8ff29f417e3c36dc7f
|
36
src/TODO
36
src/TODO
@@ -1,35 +1,7 @@
|
|||||||
* Finish fleshing out the db.c file.
|
|
||||||
- sqliteDbReadOvfl
|
|
||||||
- sqliteDbSpreadLoad
|
|
||||||
- sqliteDbSplit
|
|
||||||
- sqliteDbNextIndexLevel
|
|
||||||
- fix sqliteDbCursorNext to work right after sqliteDbCursorDelete
|
|
||||||
* Compile db.c with -Wall and get no errors.
|
|
||||||
* Make a pass over pg.c and db.c looking for errors.
|
|
||||||
- correct handling of I/O errors, malloc failures, etc.
|
|
||||||
- page leaks (not calling sqlitePgUnref)
|
|
||||||
* Write a test interface for db.c.
|
|
||||||
* Compile and link against the db test interface.
|
|
||||||
* Generate tests for the db interface.
|
|
||||||
* Add read/write locks to pg.c
|
|
||||||
* Add an sqliteDbReorganize() function.
|
|
||||||
* Integrate db into vdbe.
|
|
||||||
* Modify code generation to take advantage of the new db interface.
|
|
||||||
- Able to delete without disturbing scan order
|
|
||||||
- Now keeps a count of number of table entries
|
|
||||||
+ Special processing for count(*)
|
|
||||||
+ Better selection of indices on a select
|
|
||||||
- Transactions
|
|
||||||
* Modify sqlite_master to store the table number.
|
|
||||||
* Add a cache in DbCursor to speed up the sqliteDbReadOvfl() routine.
|
|
||||||
* Add cache information to speed up sqliteDbCursorMoveTo().
|
|
||||||
|
|
||||||
Longer term:
|
|
||||||
* Document all the changes and release Sqlite 2.0.
|
* Document all the changes and release Sqlite 2.0.
|
||||||
* Techniques for optimizing querys by grouping data with similar
|
* Implement CLUSTER command like in PostgreSQL.
|
||||||
indices.
|
* "OPTIMIZE select" statement to automatically create indices and/or
|
||||||
* "OPTIMIZE select" statement to automatically create and/or tune
|
invoke a CLUSTER command.
|
||||||
indices.
|
|
||||||
* "CREATE INDEX FOR select" to automatically generate needed indices.
|
* "CREATE INDEX FOR select" to automatically generate needed indices.
|
||||||
* "VACUUM table USING index".
|
* Implement a PRAGMA command
|
||||||
* Parse and use constraints.
|
* Parse and use constraints.
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
** other files are for internal use by SQLite and should not be
|
** other files are for internal use by SQLite and should not be
|
||||||
** accessed by users of the library.
|
** accessed by users of the library.
|
||||||
**
|
**
|
||||||
** $Id: main.c,v 1.31 2001/09/13 14:46:10 drh Exp $
|
** $Id: main.c,v 1.32 2001/09/13 15:21:32 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#if defined(HAVE_USLEEP) && HAVE_USLEEP
|
#if defined(HAVE_USLEEP) && HAVE_USLEEP
|
||||||
@@ -182,6 +182,7 @@ static int sqliteInit(sqlite *db, char **pzErrMsg){
|
|||||||
pTab = sqliteFindTable(db, MASTER_NAME);
|
pTab = sqliteFindTable(db, MASTER_NAME);
|
||||||
if( pTab ){
|
if( pTab ){
|
||||||
pTab->readOnly = 1;
|
pTab->readOnly = 1;
|
||||||
|
pTab->tnum = 2;
|
||||||
}
|
}
|
||||||
db->flags |= SQLITE_Initialized;
|
db->flags |= SQLITE_Initialized;
|
||||||
sqliteCommitInternalChanges(db);
|
sqliteCommitInternalChanges(db);
|
||||||
|
66
src/vdbe.c
66
src/vdbe.c
@@ -41,7 +41,7 @@
|
|||||||
** But other routines are also provided to help in building up
|
** But other routines are also provided to help in building up
|
||||||
** a program instruction by instruction.
|
** a program instruction by instruction.
|
||||||
**
|
**
|
||||||
** $Id: vdbe.c,v 1.61 2001/09/13 14:46:11 drh Exp $
|
** $Id: vdbe.c,v 1.62 2001/09/13 15:21:32 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@@ -2598,6 +2598,66 @@ case OP_Destroy: {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Opcode: CreateTable * * *
|
||||||
|
**
|
||||||
|
** Allocate a new table in the main database file. Push the page number
|
||||||
|
** for the root page of the new table onto the stack.
|
||||||
|
**
|
||||||
|
** The root page number is also written to a memory location which has
|
||||||
|
** be set up by the parser. The difference between CreateTable and
|
||||||
|
** CreateIndex is that each writes its root page number into a different
|
||||||
|
** memory location. This writing of the page number into a memory location
|
||||||
|
** is used by the SQL parser to record the page number in its internal
|
||||||
|
** data structures.
|
||||||
|
*/
|
||||||
|
case OP_CreateTable: {
|
||||||
|
int i = ++p->tos;
|
||||||
|
int pgno;
|
||||||
|
VERIFY( if( NeedStack(p, p->tos) ) goto no_mem; )
|
||||||
|
if( p->pTableRoot==0 ){
|
||||||
|
rc = SQLITE_INTERNAL;
|
||||||
|
goto abort_due_to_error;
|
||||||
|
}
|
||||||
|
rc = sqliteBtreeCreateTable(pBt, &pgno);
|
||||||
|
if( rc==SQLITE_OK ){
|
||||||
|
aStack[i].i = pgno;
|
||||||
|
aStack[i].flags = STK_Int;
|
||||||
|
*p->pTableRoot = pgno;
|
||||||
|
p->pTableRoot = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Opcode: CreateIndex * * *
|
||||||
|
**
|
||||||
|
** Allocate a new Index in the main database file. Push the page number
|
||||||
|
** for the root page of the new table onto the stack.
|
||||||
|
**
|
||||||
|
** The root page number is also written to a memory location which has
|
||||||
|
** be set up by the parser. The difference between CreateTable and
|
||||||
|
** CreateIndex is that each writes its root page number into a different
|
||||||
|
** memory location. This writing of the page number into a memory location
|
||||||
|
** is used by the SQL parser to record the page number in its internal
|
||||||
|
** data structures.
|
||||||
|
*/
|
||||||
|
case OP_CreateIndex: {
|
||||||
|
int i = ++p->tos;
|
||||||
|
int pgno;
|
||||||
|
VERIFY( if( NeedStack(p, p->tos) ) goto no_mem; )
|
||||||
|
if( p->pIndexRoot==0 ){
|
||||||
|
rc = SQLITE_INTERNAL;
|
||||||
|
goto abort_due_to_error;
|
||||||
|
}
|
||||||
|
rc = sqliteBtreeCreateTable(pBt, &pgno);
|
||||||
|
if( rc==SQLITE_OK ){
|
||||||
|
aStack[i].i = pgno;
|
||||||
|
aStack[i].flags = STK_Int;
|
||||||
|
*p->pIndexRoot = pgno;
|
||||||
|
p->pIndexRoot = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* Opcode: Reorganize P1 * *
|
/* Opcode: Reorganize P1 * *
|
||||||
**
|
**
|
||||||
** Compress, optimize, and tidy up table or index whose root page in the
|
** Compress, optimize, and tidy up table or index whose root page in the
|
||||||
@@ -3623,6 +3683,10 @@ default: {
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
Cleanup(p);
|
Cleanup(p);
|
||||||
|
if( p->pTableRoot || p->pIndexRoot ){
|
||||||
|
rc = SQLITE_INTERNAL;
|
||||||
|
sqliteSetString(pzErrMsg, "table or index root page not set", 0);
|
||||||
|
}
|
||||||
if( rc!=SQLITE_OK && (db->flags & SQLITE_InTrans)!=0 ){
|
if( rc!=SQLITE_OK && (db->flags & SQLITE_InTrans)!=0 ){
|
||||||
sqliteBtreeRollback(pBt);
|
sqliteBtreeRollback(pBt);
|
||||||
sqliteRollbackInternalChanges(db);
|
sqliteRollbackInternalChanges(db);
|
||||||
|
Reference in New Issue
Block a user