Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: third_party/sqlite/src/src/test_multiplex.c

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: also clang on Linux i386 Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/sqlite/src/src/test_multiplex.h ('k') | third_party/sqlite/src/src/test_mutex.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/sqlite/src/src/test_multiplex.c
diff --git a/third_party/sqlite/src/src/test_multiplex.c b/third_party/sqlite/src/src/test_multiplex.c
index 82845ea7e18e79da2c466a90df055e35a1a3f36d..ed8c9f7fa7e3f685d3dde8c61912b237a1efa0b3 100644
--- a/third_party/sqlite/src/src/test_multiplex.c
+++ b/third_party/sqlite/src/src/test_multiplex.c
@@ -68,19 +68,6 @@
#define MAX_PAGE_SIZE 0x10000
#define DEFAULT_SECTOR_SIZE 0x1000
-/*
-** For a build without mutexes, no-op the mutex calls.
-*/
-#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE==0
-#define sqlite3_mutex_alloc(X) ((sqlite3_mutex*)8)
-#define sqlite3_mutex_free(X)
-#define sqlite3_mutex_enter(X)
-#define sqlite3_mutex_try(X) SQLITE_OK
-#define sqlite3_mutex_leave(X)
-#define sqlite3_mutex_held(X) ((void)(X),1)
-#define sqlite3_mutex_notheld(X) ((void)(X),1)
-#endif /* SQLITE_THREADSAFE==0 */
-
/* Maximum chunk number */
#define MX_CHUNK_NUMBER 299
@@ -139,7 +126,6 @@ struct multiplexGroup {
unsigned int szChunk; /* Chunk size used for this group */
unsigned char bEnabled; /* TRUE to use Multiplex VFS for this file */
unsigned char bTruncate; /* TRUE to enable truncation of databases */
- multiplexGroup *pNext, *pPrev; /* Doubly linked list of all group objects */
};
/*
@@ -187,29 +173,10 @@ static struct {
/* True when this shim has been initialized.
*/
int isInitialized;
-
- /* For run-time access any of the other global data structures in this
- ** shim, the following mutex must be held. In practice, all this mutex
- ** protects is add/remove operations to/from the linked list of group objects
- ** starting at pGroups below. More specifically, it protects the value of
- ** pGroups itself, and the pNext/pPrev fields of each multiplexGroup
- ** structure. */
- sqlite3_mutex *pMutex;
-
- /* List of multiplexGroup objects.
- */
- multiplexGroup *pGroups;
} gMultiplex;
/************************* Utility Routines *********************************/
/*
-** Acquire and release the mutex used to serialize access to the
-** list of multiplexGroups.
-*/
-static void multiplexEnter(void){ sqlite3_mutex_enter(gMultiplex.pMutex); }
-static void multiplexLeave(void){ sqlite3_mutex_leave(gMultiplex.pMutex); }
-
-/*
** Compute a string length that is limited to what can be stored in
** lower 30 bits of a 32-bit signed integer.
**
@@ -519,7 +486,6 @@ static int multiplexOpen(
/* We need to create a group structure and manage
** access to this group of files.
*/
- multiplexEnter();
pMultiplexOpen = (multiplexConn*)pConn;
if( rc==SQLITE_OK ){
@@ -539,7 +505,7 @@ static int multiplexOpen(
memset(pGroup, 0, sz);
pMultiplexOpen->pGroup = pGroup;
pGroup->bEnabled = (unsigned char)-1;
- pGroup->bTruncate = sqlite3_uri_boolean(zUri, "truncate",
+ pGroup->bTruncate = (unsigned char)sqlite3_uri_boolean(zUri, "truncate",
(flags & SQLITE_OPEN_MAIN_DB)==0);
pGroup->szChunk = (int)sqlite3_uri_int64(zUri, "chunksize",
SQLITE_MULTIPLEX_CHUNK_SIZE);
@@ -626,16 +592,11 @@ static int multiplexOpen(
}else{
pMultiplexOpen->base.pMethods = &gMultiplex.sIoMethodsV2;
}
- /* place this group at the head of our list */
- pGroup->pNext = gMultiplex.pGroups;
- if( gMultiplex.pGroups ) gMultiplex.pGroups->pPrev = pGroup;
- gMultiplex.pGroups = pGroup;
}else{
multiplexFreeComponents(pGroup);
sqlite3_free(pGroup);
}
}
- multiplexLeave();
sqlite3_free(zToFree);
return rc;
}
@@ -717,7 +678,11 @@ static int multiplexCurrentTime(sqlite3_vfs *a, double *b){
return gMultiplex.pOrigVfs->xCurrentTime(gMultiplex.pOrigVfs, b);
}
static int multiplexGetLastError(sqlite3_vfs *a, int b, char *c){
- return gMultiplex.pOrigVfs->xGetLastError(gMultiplex.pOrigVfs, b, c);
+ if( gMultiplex.pOrigVfs->xGetLastError ){
+ return gMultiplex.pOrigVfs->xGetLastError(gMultiplex.pOrigVfs, b, c);
+ }else{
+ return 0;
+ }
}
static int multiplexCurrentTimeInt64(sqlite3_vfs *a, sqlite3_int64 *b){
return gMultiplex.pOrigVfs->xCurrentTimeInt64(gMultiplex.pOrigVfs, b);
@@ -734,17 +699,8 @@ static int multiplexClose(sqlite3_file *pConn){
multiplexConn *p = (multiplexConn*)pConn;
multiplexGroup *pGroup = p->pGroup;
int rc = SQLITE_OK;
- multiplexEnter();
multiplexFreeComponents(pGroup);
- /* remove from linked list */
- if( pGroup->pNext ) pGroup->pNext->pPrev = pGroup->pPrev;
- if( pGroup->pPrev ){
- pGroup->pPrev->pNext = pGroup->pNext;
- }else{
- gMultiplex.pGroups = pGroup->pNext;
- }
sqlite3_free(pGroup);
- multiplexLeave();
return rc;
}
@@ -841,7 +797,6 @@ static int multiplexTruncate(sqlite3_file *pConn, sqlite3_int64 size){
multiplexConn *p = (multiplexConn*)pConn;
multiplexGroup *pGroup = p->pGroup;
int rc = SQLITE_OK;
- multiplexEnter();
if( !pGroup->bEnabled ){
sqlite3_file *pSubOpen = multiplexSubOpen(pGroup, 0, &rc, NULL, 0);
if( pSubOpen==0 ){
@@ -873,7 +828,6 @@ static int multiplexTruncate(sqlite3_file *pConn, sqlite3_int64 size){
}
if( rc ) rc = SQLITE_IOERR_TRUNCATE;
}
- multiplexLeave();
return rc;
}
@@ -884,7 +838,6 @@ static int multiplexSync(sqlite3_file *pConn, int flags){
multiplexGroup *pGroup = p->pGroup;
int rc = SQLITE_OK;
int i;
- multiplexEnter();
for(i=0; i<pGroup->nReal; i++){
sqlite3_file *pSubOpen = pGroup->aReal[i].p;
if( pSubOpen ){
@@ -892,7 +845,6 @@ static int multiplexSync(sqlite3_file *pConn, int flags){
if( rc2!=SQLITE_OK ) rc = rc2;
}
}
- multiplexLeave();
return rc;
}
@@ -904,7 +856,6 @@ static int multiplexFileSize(sqlite3_file *pConn, sqlite3_int64 *pSize){
multiplexGroup *pGroup = p->pGroup;
int rc = SQLITE_OK;
int i;
- multiplexEnter();
if( !pGroup->bEnabled ){
sqlite3_file *pSubOpen = multiplexSubOpen(pGroup, 0, &rc, NULL, 0);
if( pSubOpen==0 ){
@@ -920,7 +871,6 @@ static int multiplexFileSize(sqlite3_file *pConn, sqlite3_int64 *pSize){
*pSize = i*(sqlite3_int64)pGroup->szChunk + sz;
}
}
- multiplexLeave();
return rc;
}
@@ -974,7 +924,7 @@ static int multiplexFileControl(sqlite3_file *pConn, int op, void *pArg){
case MULTIPLEX_CTRL_ENABLE:
if( pArg ) {
int bEnabled = *(int *)pArg;
- pGroup->bEnabled = bEnabled;
+ pGroup->bEnabled = (unsigned char)bEnabled;
rc = SQLITE_OK;
}
break;
@@ -1147,11 +1097,6 @@ int sqlite3_multiplex_initialize(const char *zOrigVfsName, int makeDefault){
pOrigVfs = sqlite3_vfs_find(zOrigVfsName);
if( pOrigVfs==0 ) return SQLITE_ERROR;
assert( pOrigVfs!=&gMultiplex.sThisVfs );
- gMultiplex.pMutex = sqlite3_mutex_alloc(SQLITE_MUTEX_FAST);
- if( !gMultiplex.pMutex ){
- return SQLITE_NOMEM;
- }
- gMultiplex.pGroups = NULL;
gMultiplex.isInitialized = 1;
gMultiplex.pOrigVfs = pOrigVfs;
gMultiplex.sThisVfs = *pOrigVfs;
@@ -1193,7 +1138,7 @@ int sqlite3_multiplex_initialize(const char *zOrigVfsName, int makeDefault){
gMultiplex.sIoMethodsV2.xShmUnmap = multiplexShmUnmap;
sqlite3_vfs_register(&gMultiplex.sThisVfs, makeDefault);
- sqlite3_auto_extension((void*)multiplexFuncInit);
+ sqlite3_auto_extension((void(*)(void))multiplexFuncInit);
return SQLITE_OK;
}
@@ -1210,14 +1155,7 @@ int sqlite3_multiplex_initialize(const char *zOrigVfsName, int makeDefault){
int sqlite3_multiplex_shutdown(int eForce){
int rc = SQLITE_OK;
if( gMultiplex.isInitialized==0 ) return SQLITE_MISUSE;
- if( gMultiplex.pGroups ){
- sqlite3_log(SQLITE_MISUSE, "sqlite3_multiplex_shutdown() called "
- "while database connections are still open");
- if( !eForce ) return SQLITE_MISUSE;
- rc = SQLITE_MISUSE;
- }
gMultiplex.isInitialized = 0;
- sqlite3_mutex_free(gMultiplex.pMutex);
sqlite3_vfs_unregister(&gMultiplex.sThisVfs);
memset(&gMultiplex, 0, sizeof(gMultiplex));
return rc;
@@ -1225,14 +1163,21 @@ int sqlite3_multiplex_shutdown(int eForce){
/***************************** Test Code ***********************************/
#ifdef SQLITE_TEST
-#include <tcl.h>
+#if defined(INCLUDE_SQLITE_TCL_H)
+# include "sqlite_tcl.h"
+#else
+# include "tcl.h"
+# ifndef SQLITE_TCLAPI
+# define SQLITE_TCLAPI
+# endif
+#endif
extern const char *sqlite3ErrName(int);
/*
** tclcmd: sqlite3_multiplex_initialize NAME MAKEDEFAULT
*/
-static int test_multiplex_initialize(
+static int SQLITE_TCLAPI test_multiplex_initialize(
void * clientData,
Tcl_Interp *interp,
int objc,
@@ -1263,7 +1208,7 @@ static int test_multiplex_initialize(
/*
** tclcmd: sqlite3_multiplex_shutdown
*/
-static int test_multiplex_shutdown(
+static int SQLITE_TCLAPI test_multiplex_shutdown(
void * clientData,
Tcl_Interp *interp,
int objc,
@@ -1289,64 +1234,9 @@ static int test_multiplex_shutdown(
}
/*
-** tclcmd: sqlite3_multiplex_dump
-*/
-static int test_multiplex_dump(
- void * clientData,
- Tcl_Interp *interp,
- int objc,
- Tcl_Obj *CONST objv[]
-){
- Tcl_Obj *pResult;
- Tcl_Obj *pGroupTerm;
- multiplexGroup *pGroup;
- int i;
- int nChunks = 0;
-
- UNUSED_PARAMETER(clientData);
- UNUSED_PARAMETER(objc);
- UNUSED_PARAMETER(objv);
-
- pResult = Tcl_NewObj();
- multiplexEnter();
- for(pGroup=gMultiplex.pGroups; pGroup; pGroup=pGroup->pNext){
- pGroupTerm = Tcl_NewObj();
-
- if( pGroup->zName ){
- pGroup->zName[pGroup->nName] = '\0';
- Tcl_ListObjAppendElement(interp, pGroupTerm,
- Tcl_NewStringObj(pGroup->zName, -1));
- }else{
- Tcl_ListObjAppendElement(interp, pGroupTerm, Tcl_NewObj());
- }
- Tcl_ListObjAppendElement(interp, pGroupTerm,
- Tcl_NewIntObj(pGroup->nName));
- Tcl_ListObjAppendElement(interp, pGroupTerm,
- Tcl_NewIntObj(pGroup->flags));
-
- /* count number of chunks with open handles */
- for(i=0; i<pGroup->nReal; i++){
- if( pGroup->aReal[i].p!=0 ) nChunks++;
- }
- Tcl_ListObjAppendElement(interp, pGroupTerm,
- Tcl_NewIntObj(nChunks));
-
- Tcl_ListObjAppendElement(interp, pGroupTerm,
- Tcl_NewIntObj(pGroup->szChunk));
- Tcl_ListObjAppendElement(interp, pGroupTerm,
- Tcl_NewIntObj(pGroup->nReal));
-
- Tcl_ListObjAppendElement(interp, pResult, pGroupTerm);
- }
- multiplexLeave();
- Tcl_SetObjResult(interp, pResult);
- return TCL_OK;
-}
-
-/*
** Tclcmd: test_multiplex_control HANDLE DBNAME SUB-COMMAND ?INT-VALUE?
*/
-static int test_multiplex_control(
+static int SQLITE_TCLAPI test_multiplex_control(
ClientData cd,
Tcl_Interp *interp,
int objc,
@@ -1417,7 +1307,6 @@ int Sqlitemultiplex_Init(Tcl_Interp *interp){
} aCmd[] = {
{ "sqlite3_multiplex_initialize", test_multiplex_initialize },
{ "sqlite3_multiplex_shutdown", test_multiplex_shutdown },
- { "sqlite3_multiplex_dump", test_multiplex_dump },
{ "sqlite3_multiplex_control", test_multiplex_control },
};
int i;
« no previous file with comments | « third_party/sqlite/src/src/test_multiplex.h ('k') | third_party/sqlite/src/src/test_mutex.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698