Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | :-) (CVS 36) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d3c31defbaf25f470d0977c39325890a |
User & Date: | drh 2000-06-02 01:51:20.000 |
Context
2000-06-02
| ||
02:09 | :-) (CVS 1696) (check-in: 80d925b82b user: drh tags: trunk) | |
01:51 | :-) (CVS 36) (check-in: d3c31defba user: drh tags: trunk) | |
01:36 | :-) (CVS 35) (check-in: a57ecd606c user: drh tags: trunk) | |
Changes
Changes to src/dbbe.c.
︙ | ︙ | |||
26 27 28 29 30 31 32 | ** sqlite and the code that does the actually reading and writing ** of information to the disk. ** ** This file uses GDBM as the database backend. It should be ** relatively simple to convert to a different database such ** as NDBM, SDBM, or BerkeleyDB. ** | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | ** sqlite and the code that does the actually reading and writing ** of information to the disk. ** ** This file uses GDBM as the database backend. It should be ** relatively simple to convert to a different database such ** as NDBM, SDBM, or BerkeleyDB. ** ** $Id: dbbe.c,v 1.9 2000/06/02 01:51:20 drh Exp $ */ #include "sqliteInt.h" #include <gdbm.h> #include <sys/stat.h> #include <unistd.h> #include <ctype.h> #include <time.h> |
︙ | ︙ | |||
293 294 295 296 297 298 299 | pFile->pPrev = 0; if( pBe->pOpen ){ pBe->pOpen->pPrev = pFile; } pFile->pNext = pBe->pOpen; pBe->pOpen = pFile; if( pFile->dbf==0 ){ | > > > > > | > | 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 | pFile->pPrev = 0; if( pBe->pOpen ){ pBe->pOpen->pPrev = pFile; } pFile->pNext = pBe->pOpen; pBe->pOpen = pFile; if( pFile->dbf==0 ){ if( !writeable && access(zFile,0) ){ rc = SQLITE_OK; }else if( access(zFile,W_OK|R_OK) ){ rc = SQLITE_PERM; }else{ rc = SQLITE_BUSY; } } }else{ sqliteFree(zFile); pFile->nRef++; if( writeable && !pFile->writeable ){ rc = SQLITE_READONLY; } |
︙ | ︙ |
Changes to src/main.c.
︙ | ︙ | |||
22 23 24 25 26 27 28 | ** ************************************************************************* ** Main file for the SQLite library. The routines in this file ** implement the programmer interface to the library. Routines in ** other files are for internal use by SQLite and should not be ** accessed by users of the library. ** | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | ** ************************************************************************* ** Main file for the SQLite library. The routines in this file ** implement the programmer interface to the library. Routines in ** other files are for internal use by SQLite and should not be ** accessed by users of the library. ** ** $Id: main.c,v 1.5 2000/06/02 01:51:20 drh Exp $ */ #include "sqliteInt.h" /* ** This is the callback routine for the code that initializes the ** database. Each callback contains text of a CREATE TABLE or ** CREATE INDEX statement that must be parsed to yield the internal |
︙ | ︙ | |||
96 97 98 99 100 101 102 | ** The following program invokes its callback on the SQL for each ** table then goes back and invokes the callback on the ** SQL for each index. The callback will invoke the ** parser to build the internal representation of the ** database scheme. */ static VdbeOp initProg[] = { | | | 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | ** The following program invokes its callback on the SQL for each ** table then goes back and invokes the callback on the ** SQL for each index. The callback will invoke the ** parser to build the internal representation of the ** database scheme. */ static VdbeOp initProg[] = { { OP_Open, 0, 0, MASTER_NAME}, { OP_Next, 0, 8, 0}, /* 1 */ { OP_Field, 0, 0, 0}, { OP_String, 0, 0, "table"}, { OP_Ne, 0, 1, 0}, { OP_Field, 0, 3, 0}, { OP_Callback, 1, 0, 0}, { OP_Goto, 0, 1, 0}, |
︙ | ︙ |
Changes to src/select.c.
︙ | ︙ | |||
20 21 22 23 24 25 26 | ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** This file contains C code routines that are called by the parser ** to handle SELECT statements. ** | | | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** This file contains C code routines that are called by the parser ** to handle SELECT statements. ** ** $Id: select.c,v 1.4 2000/06/02 01:51:20 drh Exp $ */ #include "sqliteInt.h" /* ** Process a SELECT statement. */ |
︙ | ︙ | |||
194 195 196 197 198 199 200 | } } /* Begin the database scan */ if( distinct ){ distinct = pTabList->nId*2+1; | | | 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | } } /* Begin the database scan */ if( distinct ){ distinct = pTabList->nId*2+1; sqliteVdbeAddOp(v, OP_Open, distinct, 1, 0, 0); } pWInfo = sqliteWhereBegin(pParse, pTabList, pWhere, 0); if( pWInfo==0 ) goto select_cleanup; /* Pull the requested fields. */ if( !isAgg ){ |
︙ | ︙ |
Changes to src/sqlite.h.
︙ | ︙ | |||
20 21 22 23 24 25 26 | ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** This header file defines the interface that the sqlite library ** presents to client programs. ** | | | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** This header file defines the interface that the sqlite library ** presents to client programs. ** ** @(#) $Id: sqlite.h,v 1.3 2000/06/02 01:51:20 drh Exp $ */ #ifndef _SQLITE_H_ #define _SQLITE_H_ /* ** Each open sqlite database is represented by an instance of the ** following opaque structure. |
︙ | ︙ | |||
111 112 113 114 115 116 117 | /* ** Return values fro sqlite_exec() */ #define SQLITE_OK 0 /* Successful result */ #define SQLITE_INTERNAL 1 /* An internal logic error in SQLite */ #define SQLITE_ERROR 2 /* SQL error or missing database */ | > | | | > > | 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | /* ** Return values fro sqlite_exec() */ #define SQLITE_OK 0 /* Successful result */ #define SQLITE_INTERNAL 1 /* An internal logic error in SQLite */ #define SQLITE_ERROR 2 /* SQL error or missing database */ #define SQLITE_PERM 3 /* Access permission denied */ #define SQLITE_ABORT 4 /* Callback routine requested an abort */ #define SQLITE_BUSY 5 /* One or more database files are locked */ #define SQLITE_NOMEM 6 /* A malloc() failed */ #define SQLITE_READONLY 7 /* Attempt to write a readonly database */ /* This function returns true if the given input string comprises ** one or more complete SQL statements. ** ** The algorithm is simple. If the last token other than spaces ** and comments is a semicolon, then return true. otherwise return ** false. */ int sqlite_complete(const char *sql); #endif /* _SQLITE_H_ */ |
Changes to src/sqliteInt.h.
︙ | ︙ | |||
19 20 21 22 23 24 25 | ** Author contact information: ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** Internal interface definitions for SQLite. ** | | | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | ** Author contact information: ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** Internal interface definitions for SQLite. ** ** @(#) $Id: sqliteInt.h,v 1.9 2000/06/02 01:51:20 drh Exp $ */ #include "sqlite.h" #include "dbbe.h" #include "vdbe.h" #include "parse.h" #include <gdbm.h> #include <stdio.h> |
︙ | ︙ | |||
99 100 101 102 103 104 105 | /* ** Possible values for the flags field of sqlite */ #define SQLITE_VdbeTrace 0x00000001 #define SQLITE_Initialized 0x00000002 | < < < < < < < | 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | /* ** Possible values for the flags field of sqlite */ #define SQLITE_VdbeTrace 0x00000001 #define SQLITE_Initialized 0x00000002 /* ** Each table is represented in memory by ** an instance of the following structure */ struct Table { char *zName; /* Name of the table */ Table *pHash; /* Next table with same hash on zName */ |
︙ | ︙ |
Changes to src/vdbe.c.
︙ | ︙ | |||
37 38 39 40 41 42 43 | ** inplicit conversion from one type to the other occurs as necessary. ** ** Most of the code in this file is taken up by the sqliteVdbeExec() ** function which does the work of interpreting a VDBE program. ** But other routines are also provided to help in building up ** a program instruction by instruction. ** | | | 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | ** inplicit conversion from one type to the other occurs as necessary. ** ** Most of the code in this file is taken up by the sqliteVdbeExec() ** function which does the work of interpreting a VDBE program. ** But other routines are also provided to help in building up ** a program instruction by instruction. ** ** $Id: vdbe.c,v 1.9 2000/06/02 01:51:20 drh Exp $ */ #include "sqliteInt.h" /* ** SQL is translated into a sequence of instructions to be ** executed by a virtual machine. Each instruction is an instance ** of the following structure. |
︙ | ︙ | |||
1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 | sqliteDbbeCloseTable(p->aTab[i].pTable); } rc = sqliteDbbeOpenTable(p->pBe, pOp->p3, pOp->p2, &p->aTab[i].pTable); switch( rc ){ case SQLITE_BUSY: { sqliteSetString(pzErrMsg,"table ", pOp->p3, " is locked", 0); break; } case SQLITE_READONLY: { sqliteSetString(pzErrMsg,"table ", pOp->p3, " is already opened for reading", 0); break; } case SQLITE_NOMEM: { | > > > > > | 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 | sqliteDbbeCloseTable(p->aTab[i].pTable); } rc = sqliteDbbeOpenTable(p->pBe, pOp->p3, pOp->p2, &p->aTab[i].pTable); switch( rc ){ case SQLITE_BUSY: { sqliteSetString(pzErrMsg,"table ", pOp->p3, " is locked", 0); break; } case SQLITE_PERM: { sqliteSetString(pzErrMsg, pOp->p2 ? "write" : "read", " permission denied for table ", pOp->p3, 0); break; } case SQLITE_READONLY: { sqliteSetString(pzErrMsg,"table ", pOp->p3, " is already opened for reading", 0); break; } case SQLITE_NOMEM: { |
︙ | ︙ |