-C Fix\san\serror\smessage.
-D 2019-03-20T19:17:45.194
+C Use\sthe\sIsReuseSchema()\smacro\smore\sconsistently.\sAlso,\srename\sit\sto\sIsSharedSchema().
+D 2019-03-20T20:02:03.478
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
F src/alter.c 7516a6e36dd5634ef7f28541c5dfc3861f2e619ffa9d0aeab54c565d1254f0f6
F src/analyze.c e75c3c1d6534265f74a4763282f17e9ad946606ef0a68c5517fcfb355cc243d0
-F src/attach.c bc39b4705cb182aee145baabb972581d36a66c89efda207cee4928259a301f4e
+F src/attach.c d42f6c3a7f838714ae4a95cc26151d96f481c8adee7cb179ac03be05843e5a37
F src/auth.c 0fac71038875693a937e506bceb492c5f136dd7b1249fbd4ae70b4e8da14f9df
F src/backup.c 78d3cecfbe28230a3a9a1793e2ead609f469be43e8f486ca996006be551857ab
F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
F src/btree.c 9bcd70009cac284622ef6816daca22fda99b4fb54ce0027b461dea52bcb299fa
F src/btree.h 63b94fb38ce571c15eb6a3661815561b501d23d5948b2d1e951fbd7a2d04e8d3
F src/btreeInt.h 6111c15868b90669f79081039d19e7ea8674013f907710baa3c814dc3f8bfd3f
-F src/build.c ace0fcc6e91f76670bebcbb9c0bc0a68d36180df35655b9ad6c70b5f6e920f99
-F src/callback.c 0d68a032872495351f70d533610a94388a4f191cce37ec7663d6598eaa8a4a21
+F src/build.c f570cb78948123fe0a91689fa9a9e1f49e7ab8234edfb7524b9a038283549973
+F src/callback.c 21d7b961db048f614a6db9c6500f59f05a4e4a720e266249387ecea3eec907ff
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
F src/ctime.c 109e58d00f62e8e71ee1eb5944ac18b90171c928ab2e082e058056e1137cc20b
F src/date.c ebe1dc7c8a347117bb02570f1a931c62dd78f4a2b1b516f4837d45b7d6426957
F src/insert.c 4ce12b5ba3bcbfa17ec37ce960d499fc287b6289df2c00b31201f716a3c7df45
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
F src/loadext.c e6f10875d52aca3b7e57ce1ec174aeafc9b6c00b43000cd30d791f9cb490b7a6
-F src/main.c 9f6eb3ae328a8c76a9880405e5f5d1e398044859633aceaa953f70d1f4f3b76d
+F src/main.c 5ff1ca2b9c780d48ca13419e645ae7580dbd126ce5a054dea12b40a039c60776
F src/malloc.c 0f9da2a66b230a5785af94b9672126845099b57b70a32c987d04ac28c69da990
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
F src/pcache.c 696a01f1a6370c1b50a09c15972bc3bee3333f8fcd1f2da8e9a76b1b062c59ee
F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
F src/pcache1.c a72804486dfa8e4b6bc30d666c97ecf1155f91a4351fc6e48ea4097e4eb304fb
-F src/pragma.c bbe1ba394629ae81c332d76a2c454635fcc76608cea02c7ad24a647ee16398d4
+F src/pragma.c 13e40651f965e9ac6d4fd44d6c48c4152185209b677b253dc2141c32c14c8dd6
F src/pragma.h 9d7658a7be442c1149409aab8ebdde012f387de66fca20056fc9e0791e40dbda
-F src/prepare.c 48cea94dcae45d83ab1a3db75c23c8b4d610a4c1199542242e7bd110047dc961
+F src/prepare.c d5e6339a34cb45036939918fa3ad1912cdcf37c5c2e162d01d5acdd3922185c8
F src/printf.c 93a3d539019264683a444bc043c875e9a6cca43fe935ae7bf6cfff0af3bba118
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
F src/resolve.c 09419ad5c432190b69be7c0c326e03abb548a97c2c50675b81b459e1b382d1d2
F src/sqlite.h.in 1fa197fc89b9924531ab0b6b07e2f7ae3e2862509c32c136e547752cd6374e49
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 960f1b86c3610fa23cb6a267572a97dcf286e77aa0dd3b9b23292ffaa1ea8683
-F src/sqliteInt.h f285e974103537be2c79e3ebf6535d21b477ecd05f131397cee78fcf42280d9e
+F src/sqliteInt.h d2b17367c2159d754dac229d94ddf3292693ae96c5ee87c9f846ff83d2bb30ae
F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
F src/status.c 28fcf86faee5cc030ca2d5d6b356fc59999cffb478457fe343ae0f9c39b41f6b
F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
F src/tokenize.c d3615f0cbe4db5949503bf5916f3cd4fa5de855d5b4ef560f3b6dd5629423a1e
F src/treeview.c c6ff90da4cc1813ff2d9bb11f17d4d927db62c47e552faa1835edc47269d753d
-F src/trigger.c 3d8c617337af6b6fced85deb6789fe170ba980785d3de381a01c95a7c94d5200
+F src/trigger.c 665001b50b002aed08f01de55d125ed70552f9a19384a3a6dc50eeb8a9c854a3
F src/update.c 0b973357d88092140531e07ff641139c26fb4380b0b9f5ed98c5f7691b4604d1
F src/upsert.c 0dd81b40206841814d46942a7337786932475f085716042d0cb2fc7791bf8ca4
F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5
F src/vdbemem.c 3e89e087df928eba80e520824078dc563c579a0848b1557ac36845ec14392923
F src/vdbesort.c 90aad5a92608f2dd771c96749beabdb562c9d881131a860a7a5bccf66dc3be7f
F src/vdbetrace.c 79d6dbbc479267b255a7de8080eee6e729928a0ef93ed9b0bfa5618875b48392
-F src/vtab.c 7d0f847060b3cfe8102b97a8c419866b44d600f2c2ed36e9c13c14c6581dd962
+F src/vtab.c e6309a17973c7148968b5070334849ece8d09592415cc5bd1c70e2d2fb46ce46
F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
F src/wal.c 3f4f653daf234fe713edbcbca3fec2350417d159d28801feabc702a22c4e213f
F src/wal.h 606292549f5a7be50b6227bd685fa76e3a4affad71bb8ac5ce4cb5c79f6a176a
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 4cd20ca6776ef1c2f041fe6d30f84a3cf5f8a634eb34db2dce3217ee781d5848
-R 1959c03193910b46d4cc186035c9c055
+P a70fdaa3903835dca338d68e750716fd3ab9dedbdfb2be6d6e058fd5fcb415fa
+R 03048eccd08d4cc9b57de50f5fa4d0a2
U dan
-Z 3b3101b4ff11c36fa58a1721256f163a
+Z 2bc1d554630c6ff83c63ed8652224e04
-a70fdaa3903835dca338d68e750716fd3ab9dedbdfb2be6d6e058fd5fcb415fa
\ No newline at end of file
+c1be211c0286a6ff3ef8ab6839136175efb000118ff8704d3cc01b2a23b841ab
\ No newline at end of file
if( rc==SQLITE_OK ){
db->init.iDb = 0;
db->mDbFlags &= ~(DBFLAG_SchemaKnownOk);
- if( !IsReuseSchema(db) && !REOPEN_AS_MEMDB(db) ){
+ if( !IsSharedSchema(db) && !REOPEN_AS_MEMDB(db) ){
sqlite3BtreeEnterAll(db);
rc = sqlite3Init(db, &zErrDyn);
sqlite3BtreeLeaveAll(db);
*/
int sqlite3SchemaLoad(sqlite3 *db, int iDb, int *pbUnload, char **pzErr){
int rc = SQLITE_OK;
- if( IsReuseSchema(db)
+ if( IsSharedSchema(db)
&& DbHasProperty(db, iDb, DB_SchemaLoaded)==0
&& (db->init.busy==0 || (iDb!=1 && db->init.iDb==1))
){
if( zDatabase==0 || sqlite3StrICmp(zDatabase, db->aDb[j].zDbSName)==0 ){
int bUnload = 0;
assert( sqlite3SchemaMutexHeld(db, j, 0) );
- if( IsReuseSchema(db) ){
+ if( IsSharedSchema(db) ){
Parse *pParse = db->pParse;
if( pParse && pParse->nErr==0 ){
pParse->rc = sqlite3SchemaLoad(db, j, &bUnload, &pParse->zErrMsg);
/* Read the database schema. If an error occurs, leave an error message
** and code in pParse and return NULL. */
if( (db->mDbFlags & DBFLAG_SchemaKnownOk)==0
- && !IsReuseSchema(db)
+ && !IsSharedSchema(db)
&& SQLITE_OK!=sqlite3ReadSchema(pParse)
){
return 0;
pMod = sqlite3PragmaVtabRegister(db, zName);
}
if( pMod ){
- if( IsReuseSchema(db) && pParse->nErr==0 ){
+ if( IsSharedSchema(db) && pParse->nErr==0 ){
int bDummy = 0;
pParse->rc = sqlite3SchemaLoad(db, 0, &bDummy, &pParse->zErrMsg);
if( pParse->rc ) pParse->nErr++;
}
if( sqlite3VtabEponymousTableInit(pParse, pMod) ){
Table *pEpoTab = pMod->pEpoTab;
- assert( IsReuseSchema(db) || pEpoTab->pSchema==db->aDb[0].pSchema );
+ assert( IsSharedSchema(db) || pEpoTab->pSchema==db->aDb[0].pSchema );
pEpoTab->pSchema = db->aDb[0].pSchema; /* For SHARED_SCHEMA mode */
return pEpoTab;
}
p = 0;
}
- if( p==0 && (!IsReuseSchema(db) || pParse->nErr==0) ){
+ if( p==0 && (!IsSharedSchema(db) || pParse->nErr==0) ){
const char *zMsg = flags & LOCATE_VIEW ? "no such view" : "no such table";
if( zDbase ){
sqlite3ErrorMsg(pParse, "%s: %s.%s", zMsg, zDbase, zName);
*/
if( !IN_SPECIAL_PARSE ){
char *zDb = db->aDb[iDb].zDbSName;
- if( !IsReuseSchema(db) && SQLITE_OK!=sqlite3ReadSchema(pParse) ){
+ if( !IsSharedSchema(db) && SQLITE_OK!=sqlite3ReadSchema(pParse) ){
goto begin_table_error;
}
pTable = sqlite3FindTable(db, zName, zDb);
}
assert( pParse->nErr==0 );
assert( pName->nSrc==1 );
- if( !IsReuseSchema(db) && sqlite3ReadSchema(pParse) ) goto exit_drop_table;
+ if( !IsSharedSchema(db) && sqlite3ReadSchema(pParse) ) goto exit_drop_table;
if( noErr ) db->suppressErr++;
assert( isView==0 || isView==LOCATE_VIEW );
pTab = sqlite3LocateTableItem(pParse, isView, &pName->a[0]);
if( IN_DECLARE_VTAB && idxType!=SQLITE_IDXTYPE_PRIMARYKEY ){
goto exit_create_index;
}
- if( !IsReuseSchema(db) && SQLITE_OK!=sqlite3ReadSchema(pParse) ){
+ if( !IsSharedSchema(db) && SQLITE_OK!=sqlite3ReadSchema(pParse) ){
goto exit_create_index;
}
#ifdef SQLITE_DEBUG
static void assert_schema_state_ok(sqlite3 *db){
- if( IsReuseSchema(db) && db->magic!=SQLITE_MAGIC_ZOMBIE ){
+ if( IsSharedSchema(db) && db->magic!=SQLITE_MAGIC_ZOMBIE ){
int i;
for(i=0; i<db->nDb; i++){
if( i!=1 ){
*/
void sqlite3SchemaClearOrDisconnect(sqlite3 *db, int iDb){
Db *pDb = &db->aDb[iDb];
- if( IsReuseSchema(db) && iDb!=1 && pDb->pSPool ){
+ if( IsSharedSchema(db) && iDb!=1 && pDb->pSPool ){
sqlite3SchemaDisconnect(db, iDb, 1);
}else{
sqlite3SchemaClear(pDb->pSchema);
** error in the Parse object.
*/
void sqlite3SchemaWritable(Parse *pParse, int iDb){
- if( iDb!=1 && (pParse->db->openFlags & SQLITE_OPEN_SHARED_SCHEMA)
- && IN_DECLARE_VTAB==0
- ){
+ if( iDb!=1 && IsSharedSchema(pParse->db) && IN_DECLARE_VTAB==0 ){
sqlite3ErrorMsg(pParse, "attempt to modify read-only schema");
}
}
*/
int sqlite3SchemaDisconnect(sqlite3 *db, int iDb, int bNew){
int rc = SQLITE_OK;
- if( IsReuseSchema(db) ){
+ if( IsSharedSchema(db) ){
Db *pDb = &db->aDb[iDb];
SchemaPool *pSPool = pDb->pSPool;
assert_schema_state_ok(db);
*/
Schema *sqlite3SchemaGet(sqlite3 *db, Btree *pBt){
Schema *p;
- if( pBt && (db->openFlags & SQLITE_OPEN_SHARED_SCHEMA)==0 ){
+ if( pBt && IsSharedSchema(db)==0 ){
p = (Schema*)sqlite3BtreeSchema(pBt, sizeof(Schema), sqlite3SchemaClear);
}else{
db->lookaside.bDisable++;
if( IsVirtual(pTab) ) sqlite3VtabDisconnect(db, pTab);
}
}
- if( i!=1 && IsReuseSchema(db) ){
+ if( i!=1 && IsSharedSchema(db) ){
VTable *pVTable;
VTable *pNext;
for(pVTable=db->aDb[i].pVTable; pVTable; pVTable=pNext){
sqlite3_mutex_enter(db->mutex);
bUnlock = sqlite3LockReusableSchema(db);
sqlite3BtreeEnterAll(db);
- if( IsReuseSchema(db)==0 ){
+ if( IsSharedSchema(db)==0 ){
rc = sqlite3Init(db, &zErrMsg);
}
/* Make sure the database schema is loaded if the pragma requires that */
if( (pPragma->mPragFlg & PragFlg_NeedSchema)!=0 ){
- if( IsReuseSchema(db) && (zDb || (pPragma->mPragFlg & PragFlg_OneSchema)) ){
+ if( IsSharedSchema(db) && (zDb || (pPragma->mPragFlg & PragFlg_OneSchema)) ){
assert( iDb>=0 && iDb<db->nDb );
pParse->rc = sqlite3SchemaLoad(db, iDb, 0, &pParse->zErrMsg);
if( pParse->rc ) goto pragma_out;
pData->rc = SQLITE_ERROR;
}else if( db->flags & SQLITE_WriteSchema ){
pData->rc = SQLITE_CORRUPT_BKPT;
- }else if( IsReuseSchema(db)
+ }else if( IsSharedSchema(db)
&& 0==sqlite3StrNICmp(zExtra, "malformed database schema", 17)
){
pData->rc = SQLITE_CORRUPT_BKPT;
}
}
- if( iDb!=1 && (db->openFlags & SQLITE_OPEN_SHARED_SCHEMA) ){
+ if( iDb!=1 && IsSharedSchema(db) ){
schemaUpdateChecksum(pData, argv[0], argv[1], argv[2]);
}
return 0;
assert( (db->mDbFlags & DBFLAG_SchemaKnownOk)==0 );
assert( iDb>=0 && iDb<db->nDb );
- assert( db->aDb[iDb].pSchema || (IsReuseSchema(db) && iDb!=1) );
+ assert( db->aDb[iDb].pSchema || (IsSharedSchema(db) && iDb!=1) );
assert( sqlite3_mutex_held(db->mutex) );
assert( iDb==1 || sqlite3BtreeHoldsMutex(db->aDb[iDb].pBt) );
pDb = &db->aDb[iDb];
- assert( pDb->pSPool==0 || IsReuseSchema(db) );
+ assert( pDb->pSPool==0 || IsSharedSchema(db) );
if( pDb->pSPool ){
/* See if there is a free schema object in the schema-pool. If not,
** disconnect from said schema pool and continue. This function will
rc = SQLITE_OK;
}
- if( rc==SQLITE_OK && iDb!=1 && (db->openFlags & SQLITE_OPEN_SHARED_SCHEMA) ){
+ if( rc==SQLITE_OK && iDb!=1 && IsSharedSchema(db) ){
rc = sqlite3SchemaConnect(db, iDb, initData.cksum);
}
}
int sqlite3LockReusableSchema(sqlite3 *db){
- if( IsReuseSchema(db) && (db->mDbFlags & DBFLAG_SchemaInuse)==0 ){
+ if( IsSharedSchema(db) && (db->mDbFlags & DBFLAG_SchemaInuse)==0 ){
db->mDbFlags |= DBFLAG_SchemaInuse;
return 1;
}
if( rc!=SQLITE_OK ){
pParse->rc = rc;
pParse->nErr++;
- }else if( db->noSharedCache && !IsReuseSchema(db) ){
+ }else if( db->noSharedCache && !IsSharedSchema(db) ){
db->mDbFlags |= DBFLAG_SchemaKnownOk;
}
}
#endif
};
-#define IsReuseSchema(db) (((db)->openFlags & SQLITE_OPEN_SHARED_SCHEMA)!=0)
+#define IsSharedSchema(db) (((db)->openFlags & SQLITE_OPEN_SHARED_SCHEMA)!=0)
/*
** A macro to discover the encoding of a database.
the <column-list> is stored here */
Schema *pSchema; /* Schema containing the trigger */
Schema *pTabSchema; /* Schema containing the table */
- char *zTabSchema; /* Temp triggers in IsReuseSchema() dbs only */
+ char *zTabSchema; /* Temp triggers in IsSharedSchema() dbs only */
TriggerStep *step_list; /* Link list of trigger program steps */
Trigger *pNext; /* Next trigger associated with the table */
};
sqlite3 *db = pParse->db;
HashElem *p;
char *zSchema = 0;
- if( IsReuseSchema(db) ){
+ if( IsSharedSchema(db) ){
zSchema = db->aDb[sqlite3SchemaToIndex(db, pTab->pSchema)].zDbSName;
}
assert( sqlite3SchemaMutexHeld(db, 0, pTmpSchema) );
pTrigger->zName = zName;
zName = 0;
pTrigger->table = sqlite3DbStrDup(db, pTableName->a[0].zName);
- if( IsReuseSchema(db) && iDb==1 ){
+ if( IsSharedSchema(db) && iDb==1 ){
int iTabDb = sqlite3SchemaToIndex(db, pTab->pSchema);
pTrigger->zTabSchema = sqlite3DbStrDup(db, db->aDb[iTabDb].zDbSName);
}
VTable *sqlite3GetVTable(sqlite3 *db, Table *pTab){
VTable *pVtab;
assert( IsVirtual(pTab) );
- if( IsReuseSchema(db) ){
+ if( IsSharedSchema(db) ){
int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
if( iDb!=1 ){
for(pVtab=db->aDb[iDb].pVTable; pVtab; pVtab=pVtab->pNext){
** Then loop through the columns of the table to see if any of them
** contain the token "hidden". If so, set the Column COLFLAG_HIDDEN flag
** and remove the token from the type string. */
- if( IsReuseSchema(db) && iDb!=1 ){
+ if( IsSharedSchema(db) && iDb!=1 ){
pVTable->pNext = db->aDb[iDb].pVTable;
db->aDb[iDb].pVTable = pVTable;
}else{