Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Change some code that assumes the root-page of sqlite_master is 2 (it is now 1) (CVS 1333) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
37ae528fb85799007f4ddfc56a7d9493 |
User & Date: | danielk1977 2004-05-10 01:17:37.000 |
Context
2004-05-10
| ||
07:17 | Add versions of OP_MakeRecord and OP_Column that use manifest typing (not activated yet). (CVS 1334) (check-in: 8a66a502ba user: danielk1977 tags: trunk) | |
01:17 | Change some code that assumes the root-page of sqlite_master is 2 (it is now 1) (CVS 1333) (check-in: 37ae528fb8 user: danielk1977 tags: trunk) | |
2004-05-09
| ||
23:23 | Add a temporary sqlite2BtreeKeyCompare() function to help get regression tests passing again. (CVS 1332) (check-in: d8d1c91e55 user: danielk1977 tags: trunk) | |
Changes
Changes to src/build.c.
︙ | ︙ | |||
19 20 21 22 23 24 25 | ** DROP INDEX ** creating ID lists ** BEGIN TRANSACTION ** COMMIT ** ROLLBACK ** PRAGMA ** | | | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | ** DROP INDEX ** creating ID lists ** BEGIN TRANSACTION ** COMMIT ** ROLLBACK ** PRAGMA ** ** $Id: build.c,v 1.178 2004/05/10 01:17:37 danielk1977 Exp $ */ #include "sqliteInt.h" #include <ctype.h> /* ** This routine is called when a new SQL statement is beginning to ** be parsed. Check to see if the schema for the database needs |
︙ | ︙ | |||
396 397 398 399 400 401 402 | ** Generate code to open the appropriate master table. The table ** opened will be SQLITE_MASTER for persistent tables and ** SQLITE_TEMP_MASTER for temporary tables. The table is opened ** on cursor 0. */ void sqlite3OpenMasterTable(Vdbe *v, int isTemp){ sqlite3VdbeAddOp(v, OP_Integer, isTemp, 0); | | | 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 | ** Generate code to open the appropriate master table. The table ** opened will be SQLITE_MASTER for persistent tables and ** SQLITE_TEMP_MASTER for temporary tables. The table is opened ** on cursor 0. */ void sqlite3OpenMasterTable(Vdbe *v, int isTemp){ sqlite3VdbeAddOp(v, OP_Integer, isTemp, 0); sqlite3VdbeAddOp(v, OP_OpenWrite, 0, MASTER_ROOT); } /* ** Begin constructing a new table representation in memory. This is ** the first of several action routines that get called in response ** to a CREATE TABLE statement. In particular, this routine is called ** after seeing tokens "CREATE" and "TABLE" and the table name. The |
︙ | ︙ |
Changes to src/main.c.
︙ | ︙ | |||
10 11 12 13 14 15 16 | ** ************************************************************************* ** 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. ** | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ** ************************************************************************* ** 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.167 2004/05/10 01:17:37 danielk1977 Exp $ */ #include "sqliteInt.h" #include "os.h" #include <ctype.h> /* ** A pointer to this structure is used to communicate information |
︙ | ︙ | |||
227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 | ** But with file format 1, table entries were random and so we ** have to make sure the CREATE TABLEs occur before their corresponding ** CREATE INDEXs. (We don't have to deal with CREATE VIEW or ** CREATE TRIGGER in file format 1 because those constructs did ** not exist then.) */ static char init_script[] = "SELECT type, name, rootpage, sql, 1 FROM sqlite_temp_master " "UNION ALL " "SELECT type, name, rootpage, sql, 0 FROM sqlite_master"; static char older_init_script[] = "SELECT type, name, rootpage, sql, 1 FROM sqlite_temp_master " "UNION ALL " "SELECT type, name, rootpage, sql, 0 FROM sqlite_master " "WHERE type='table' " "UNION ALL " "SELECT type, name, rootpage, sql, 0 FROM sqlite_master " "WHERE type='index'"; assert( iDb>=0 && iDb!=1 && iDb<db->nDb ); /* Construct the schema tables: sqlite_master and sqlite_temp_master */ sqlite3SafetyOff(db); azArg[0] = "table"; azArg[1] = MASTER_NAME; | > > | | 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 | ** But with file format 1, table entries were random and so we ** have to make sure the CREATE TABLEs occur before their corresponding ** CREATE INDEXs. (We don't have to deal with CREATE VIEW or ** CREATE TRIGGER in file format 1 because those constructs did ** not exist then.) */ static char init_script[] = /****** FIX ME "SELECT type, name, rootpage, sql, 1 FROM sqlite_temp_master " "UNION ALL " */ "SELECT type, name, rootpage, sql, 0 FROM sqlite_master"; static char older_init_script[] = "SELECT type, name, rootpage, sql, 1 FROM sqlite_temp_master " "UNION ALL " "SELECT type, name, rootpage, sql, 0 FROM sqlite_master " "WHERE type='table' " "UNION ALL " "SELECT type, name, rootpage, sql, 0 FROM sqlite_master " "WHERE type='index'"; assert( iDb>=0 && iDb!=1 && iDb<db->nDb ); /* Construct the schema tables: sqlite_master and sqlite_temp_master */ sqlite3SafetyOff(db); azArg[0] = "table"; azArg[1] = MASTER_NAME; azArg[2] = "1"; azArg[3] = master_schema; sprintf(zDbNum, "%d", iDb); azArg[4] = zDbNum; azArg[5] = 0; initData.db = db; initData.pzErrMsg = pzErrMsg; sqlite3InitCallback(&initData, 5, azArg, 0); |
︙ | ︙ | |||
274 275 276 277 278 279 280 | } } sqlite3SafetyOn(db); /* Create a cursor to hold the database open */ if( db->aDb[iDb].pBt==0 ) return SQLITE_OK; | | | 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 | } } sqlite3SafetyOn(db); /* Create a cursor to hold the database open */ if( db->aDb[iDb].pBt==0 ) return SQLITE_OK; rc = sqlite3BtreeCursor(db->aDb[iDb].pBt, MASTER_ROOT, 0, 0, 0, &curMain); if( rc ){ sqlite3SetString(pzErrMsg, sqlite_error_string(rc), (char*)0); return rc; } /* Get the database meta information */ |
︙ | ︙ |
Changes to src/sqliteInt.h.
1 2 3 4 5 6 7 8 9 10 11 12 13 | /* ** 2001 September 15 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** Internal interface definitions for SQLite. ** | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* ** 2001 September 15 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** Internal interface definitions for SQLite. ** ** @(#) $Id: sqliteInt.h,v 1.225 2004/05/10 01:17:37 danielk1977 Exp $ */ #include "config.h" #include "sqlite.h" #include "hash.h" #include "parse.h" #include <stdio.h> #include <stdlib.h> |
︙ | ︙ | |||
213 214 215 216 217 218 219 220 221 222 223 224 225 226 | ** Name of the master database table. The master database table ** is a special table that holds the names and attributes of all ** user tables and indices. */ #define MASTER_NAME "sqlite_master" #define TEMP_MASTER_NAME "sqlite_temp_master" /* ** The name of the schema table. */ #define SCHEMA_TABLE(x) (x?TEMP_MASTER_NAME:MASTER_NAME) /* ** A convenience macro that returns the number of elements in | > > > > > | 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 | ** Name of the master database table. The master database table ** is a special table that holds the names and attributes of all ** user tables and indices. */ #define MASTER_NAME "sqlite_master" #define TEMP_MASTER_NAME "sqlite_temp_master" /* ** The root-page of the master database table. */ #define MASTER_ROOT 1 /* ** The name of the schema table. */ #define SCHEMA_TABLE(x) (x?TEMP_MASTER_NAME:MASTER_NAME) /* ** A convenience macro that returns the number of elements in |
︙ | ︙ |