1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-12 13:01:09 +03:00

Merge updates from trunk.

FossilOrigin-Name: 854d410ad3a2bb3af5465d933ac9535fe3f22bfe
This commit is contained in:
mistachkin
2014-02-24 21:23:07 +00:00
11 changed files with 84 additions and 41 deletions

View File

@@ -1319,6 +1319,10 @@ testfixture.exe: $(TESTFIXTURE_SRC) $(LIBRESOBJS) $(HDR)
$(TESTFIXTURE_SRC) \ $(TESTFIXTURE_SRC) \
/link $(LTLINKOPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LTLIBS) $(TLIBS) /link $(LTLINKOPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LTLIBS) $(TLIBS)
extensiontest: testfixture.exe testloadext.dll
.\testfixture.exe $(TOP)\test\loadext.test
.\testfixture.exe $(TOP)\test\loadext2.test
fulltest: testfixture.exe sqlite3.exe fulltest: testfixture.exe sqlite3.exe
.\testfixture.exe $(TOP)\test\all.test .\testfixture.exe $(TOP)\test\all.test
@@ -1345,6 +1349,12 @@ sqlite3_analyzer.exe: sqlite3_analyzer.c $(LIBRESOBJS)
$(LTLINK) -DBUILD_sqlite -DTCLSH=2 -I$(TCLINCDIR) sqlite3_analyzer.c \ $(LTLINK) -DBUILD_sqlite -DTCLSH=2 -I$(TCLINCDIR) sqlite3_analyzer.c \
/link $(LTLINKOPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LTLIBS) $(TLIBS) /link $(LTLINKOPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LTLIBS) $(TLIBS)
testloadext.lo: $(TOP)\src\test_loadext.c
$(LTCOMPILE) -c $(TOP)\src\test_loadext.c
testloadext.dll: testloadext.lo
$(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /OUT:$@ testloadext.lo
showdb.exe: $(TOP)\tool\showdb.c $(SQLITE3C) showdb.exe: $(TOP)\tool\showdb.c $(SQLITE3C)
$(LTLINK) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \ $(LTLINK) -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -Fe$@ \
$(TOP)\tool\showdb.c $(SQLITE3C) $(TOP)\tool\showdb.c $(SQLITE3C)
@@ -1371,6 +1381,7 @@ clean:
-rmdir /Q/S tsrc -rmdir /Q/S tsrc
del /Q .target_source del /Q .target_source
del /Q tclsqlite3.exe tclsqlite3.exp del /Q tclsqlite3.exe tclsqlite3.exp
del /Q testloadext.dll testloadext.exp
del /Q testfixture.exe testfixture.exp test.db del /Q testfixture.exe testfixture.exp test.db
del /Q sqlite3.dll sqlite3.lib sqlite3.exp sqlite3.def del /Q sqlite3.dll sqlite3.lib sqlite3.exp sqlite3.def
del /Q sqlite3.c sqlite3-*.c del /Q sqlite3.c sqlite3-*.c

View File

@@ -1,9 +1,9 @@
C Better\sloadable\sextension\shandling\sin\sthe\sWin32\sVFS\swhen\scompiled\sfor\sCygwin. C Merge\supdates\sfrom\strunk.
D 2014-02-21T05:44:18.393 D 2014-02-24T21:23:07.956
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81 F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F Makefile.msc 371a17ef9cd011b103cfa1964119a8528f5427c9 F Makefile.msc 4b39e17eb244d2fd3fb825d896380b38b782e69a
F Makefile.vxworks db21ed42a01d5740e656b16f92cb5d8d5e5dd315 F Makefile.vxworks db21ed42a01d5740e656b16f92cb5d8d5e5dd315
F README.md 64f270c43c38c46de749e419c22f0ae2f4499fe8 F README.md 64f270c43c38c46de749e419c22f0ae2f4499fe8
F VERSION 0dc30ad5cf90736d5fd9e540c9f05c542658abe7 F VERSION 0dc30ad5cf90736d5fd9e540c9f05c542658abe7
@@ -191,7 +191,7 @@ F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
F src/mem1.c c0c990fcaddff810ea277b4fb5d9138603dd5d4b F src/mem1.c c0c990fcaddff810ea277b4fb5d9138603dd5d4b
F src/mem2.c dce31758da87ec2cfa52ba4c5df1aed6e07d8e8f F src/mem2.c dce31758da87ec2cfa52ba4c5df1aed6e07d8e8f
F src/mem3.c 61c9d47b792908c532ca3a62b999cf21795c6534 F src/mem3.c 61c9d47b792908c532ca3a62b999cf21795c6534
F src/mem5.c 19d9271cb936742707b6118ed44d779657c7c511 F src/mem5.c aeb019f271ea53de83d651ec526877e6ba863450
F src/memjournal.c 0683aac6cab6ec2b5374c0db37c0deb2436a3785 F src/memjournal.c 0683aac6cab6ec2b5374c0db37c0deb2436a3785
F src/mutex.c d3b66a569368015e0fcb1ac15f81c119f504d3bc F src/mutex.c d3b66a569368015e0fcb1ac15f81c119f504d3bc
F src/mutex.h 5bc526e19dccc412b7ff04642f6fdad3fdfdabea F src/mutex.h 5bc526e19dccc412b7ff04642f6fdad3fdfdabea
@@ -203,7 +203,7 @@ F src/os.c 1b147e4cf7cc39e618115c14a086aed44bc91ace
F src/os.h 4a46270a64e9193af4a0aaa3bc2c66dc07c29b3f F src/os.h 4a46270a64e9193af4a0aaa3bc2c66dc07c29b3f
F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04 F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
F src/os_unix.c 18f7f95dc6bcb9cf4d4a238d8e2de96611bc2ae5 F src/os_unix.c 18f7f95dc6bcb9cf4d4a238d8e2de96611bc2ae5
F src/os_win.c 23bd567f897b8934096ee7ce51b21ba43aa94ec7 F src/os_win.c 9ce043722f5d959c52c9a751e5c960602de0927b
F src/pager.c 0ffa313a30ed6d061d9c6601b7b175cc50a1cab7 F src/pager.c 0ffa313a30ed6d061d9c6601b7b175cc50a1cab7
F src/pager.h ffd5607f7b3e4590b415b007a4382f693334d428 F src/pager.h ffd5607f7b3e4590b415b007a4382f693334d428
F src/parse.y 2613ca5d609c2f3d71dd297351f010bcec16e1e0 F src/parse.y 2613ca5d609c2f3d71dd297351f010bcec16e1e0
@@ -249,7 +249,7 @@ F src/test_init.c 66b33120ffe9cd853b5a905ec850d51151337b32
F src/test_intarray.c 87847c71c3c36889c0bcc9c4baf9d31881665d61 F src/test_intarray.c 87847c71c3c36889c0bcc9c4baf9d31881665d61
F src/test_intarray.h 2ece66438cfd177b78d1bfda7a4180cd3a10844d F src/test_intarray.h 2ece66438cfd177b78d1bfda7a4180cd3a10844d
F src/test_journal.c f5c0a05b7b3d5930db769b5ee6c3766dc2221a64 F src/test_journal.c f5c0a05b7b3d5930db769b5ee6c3766dc2221a64
F src/test_loadext.c df586c27176e3c2cb2e099c78da67bf14379a56e F src/test_loadext.c a5251f956ab6af21e138dc1f9c0399394a510cb4
F src/test_malloc.c 1ff5b1243d96124c9a180f3b89424820a1f337f3 F src/test_malloc.c 1ff5b1243d96124c9a180f3b89424820a1f337f3
F src/test_multiplex.c 9f304bf04170c91c0318238d512df2da039eb1c8 F src/test_multiplex.c 9f304bf04170c91c0318238d512df2da039eb1c8
F src/test_multiplex.h 110a8c4d356e0aa464ca8730375608a9a0b61ae1 F src/test_multiplex.h 110a8c4d356e0aa464ca8730375608a9a0b61ae1
@@ -277,11 +277,11 @@ F src/update.c 5b3e74a03b3811e586b4f2b4cbd7c49f01c93115
F src/utf.c 6fc6c88d50448c469c5c196acf21617a24f90269 F src/utf.c 6fc6c88d50448c469c5c196acf21617a24f90269
F src/util.c c46c90459ef9bdc0c6c73803cf4c55425b4771cf F src/util.c c46c90459ef9bdc0c6c73803cf4c55425b4771cf
F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179 F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179
F src/vdbe.c c5ff7b384ed108be747220d4c47fcea6a36b062b F src/vdbe.c 6c8f28911e702151c8ef03c568db5a066d3a85d4
F src/vdbe.h 6c703ccef97f4504bd0d79cc09180185a60ae8ad F src/vdbe.h 147027d6e8e667a63e87177a38e2b42c71fdacf8
F src/vdbeInt.h 5286af9067cabdb8ba57b87c0c988a931be6c6c8 F src/vdbeInt.h 5286af9067cabdb8ba57b87c0c988a931be6c6c8
F src/vdbeapi.c 5bc41aaea448a7fc250902c418f1795859be3820 F src/vdbeapi.c 5bc41aaea448a7fc250902c418f1795859be3820
F src/vdbeaux.c 0e01d6fda149c689039caadb8c89b20abb58e21d F src/vdbeaux.c 8b8eeb3cd89e4b3d4f40186344915b49b7c1c0f7
F src/vdbeblob.c d939997de046b8fcc607cfee4248f3d33dbcca50 F src/vdbeblob.c d939997de046b8fcc607cfee4248f3d33dbcca50
F src/vdbemem.c 06603e8e9d2f3247b68c6bbe4bd37fb6721b5bda F src/vdbemem.c 06603e8e9d2f3247b68c6bbe4bd37fb6721b5bda
F src/vdbesort.c 9d83601f9d6243fe70dd0169a2820c5ddfd48147 F src/vdbesort.c 9d83601f9d6243fe70dd0169a2820c5ddfd48147
@@ -647,7 +647,7 @@ F test/laststmtchanges.test ae613f53819206b3222771828d024154d51db200
F test/like.test e191e536d0fcd722a6b965e7cd1ee0bfd12a5991 F test/like.test e191e536d0fcd722a6b965e7cd1ee0bfd12a5991
F test/like2.test 3b2ee13149ba4a8a60b59756f4e5d345573852da F test/like2.test 3b2ee13149ba4a8a60b59756f4e5d345573852da
F test/limit.test cc0ab63385239b63c72452b0e93700bf5e8f0b99 F test/limit.test cc0ab63385239b63c72452b0e93700bf5e8f0b99
F test/loadext.test 92e6dfefd1229c3ef4aaabd87419efd8fa57a7a5 F test/loadext.test 648cb95f324d1775c54a55c12271b2d1156b633b
F test/loadext2.test 0408380b57adca04004247179837a18e866a74f7 F test/loadext2.test 0408380b57adca04004247179837a18e866a74f7
F test/lock.test 87af515b0c4cf928576d0f89946d67d7c265dfb4 F test/lock.test 87af515b0c4cf928576d0f89946d67d7c265dfb4
F test/lock2.test 5242d8ac4e2d59c403aebff606af449b455aceff F test/lock2.test 5242d8ac4e2d59c403aebff606af449b455aceff
@@ -1064,7 +1064,7 @@ F test/walhook.test ed00a40ba7255da22d6b66433ab61fab16a63483
F test/walmode.test 4022fe03ae6e830583672caa101f046438a0473c F test/walmode.test 4022fe03ae6e830583672caa101f046438a0473c
F test/walnoshm.test 84ca10c544632a756467336b7c3b864d493ee496 F test/walnoshm.test 84ca10c544632a756467336b7c3b864d493ee496
F test/walpersist.test 8c6b7e3ec1ba91b5e4dc4e0921d6d3f87cd356a6 F test/walpersist.test 8c6b7e3ec1ba91b5e4dc4e0921d6d3f87cd356a6
F test/walro.test 6cc247a0cc9b36aeea2057dd28a922a1cdfbd630 F test/walro.test 34422d1d95aaff0388f0791ec20edb34e2a3ed57
F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417 F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417
F test/walslow.test e7be6d9888f83aa5d3d3c7c08aa9b5c28b93609a F test/walslow.test e7be6d9888f83aa5d3d3c7c08aa9b5c28b93609a
F test/walthread.test de8dbaf6d9e41481c460ba31ca61e163d7348f8e F test/walthread.test de8dbaf6d9e41481c460ba31ca61e163d7348f8e
@@ -1151,10 +1151,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
P b46d4e8923e6e367412bba7aeac07039bbcbabd1 P 6676475c47558a52cb2632e92a541e13d143b2dc 53081e7202fb55f792a78e73627466eb0200f11c
R a7d693d1ea11a2ee85a54f6ea757a9d1 R 18f77ade6087ed733fbdb268f6f34961
T *branch * cygDlOpen
T *sym-cygDlOpen *
T -sym-trunk *
U mistachkin U mistachkin
Z 4b80816c39a01dfdffbdf857b2bcb9b9 Z 803bfaab7aa1ae283bf7c1240bdf5b59

View File

@@ -1 +1 @@
6676475c47558a52cb2632e92a541e13d143b2dc 854d410ad3a2bb3af5465d933ac9535fe3f22bfe

View File

@@ -275,6 +275,12 @@ static void *memsys5MallocUnsafe(int nByte){
if( mem5.maxCount<mem5.currentCount ) mem5.maxCount = mem5.currentCount; if( mem5.maxCount<mem5.currentCount ) mem5.maxCount = mem5.currentCount;
if( mem5.maxOut<mem5.currentOut ) mem5.maxOut = mem5.currentOut; if( mem5.maxOut<mem5.currentOut ) mem5.maxOut = mem5.currentOut;
#ifdef SQLITE_DEBUG
/* Make sure the allocated memory does not assume that it is set to zero
** or retains a value from a previous allocation */
memset(&mem5.zPool[i*mem5.szAtom], 0xAA, iFullSz);
#endif
/* Return a pointer to the allocated memory. */ /* Return a pointer to the allocated memory. */
return (void*)&mem5.zPool[i*mem5.szAtom]; return (void*)&mem5.zPool[i*mem5.szAtom];
} }
@@ -332,6 +338,13 @@ static void memsys5FreeUnsafe(void *pOld){
} }
size *= 2; size *= 2;
} }
#ifdef SQLITE_DEBUG
/* Overwrite freed memory with the 0x55 bit pattern to verify that it is
** not used after being freed */
memset(&mem5.zPool[iBlock*mem5.szAtom], 0x55, size);
#endif
memsys5Link(iBlock, iLogsize); memsys5Link(iBlock, iLogsize);
} }

View File

@@ -5135,10 +5135,6 @@ static int winFullPathname(
** Interfaces for opening a shared library, finding entry points ** Interfaces for opening a shared library, finding entry points
** within the shared library, and closing the shared library. ** within the shared library, and closing the shared library.
*/ */
/*
** Interfaces for opening a shared library, finding entry points
** within the shared library, and closing the shared library.
*/
static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){ static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
HANDLE h; HANDLE h;
#if defined(__CYGWIN__) #if defined(__CYGWIN__)
@@ -5146,10 +5142,12 @@ static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
char *zFull = sqlite3MallocZero( nFull ); char *zFull = sqlite3MallocZero( nFull );
void *zConverted = 0; void *zConverted = 0;
if( zFull==0 ){ if( zFull==0 ){
OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
return 0; return 0;
} }
if( winFullPathname(pVfs, zFilename, nFull, zFull)!=SQLITE_OK ){ if( winFullPathname(pVfs, zFilename, nFull, zFull)!=SQLITE_OK ){
sqlite3_free(zFull); sqlite3_free(zFull);
OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
return 0; return 0;
} }
zConverted = winConvertFromUtf8Filename(zFull); zConverted = winConvertFromUtf8Filename(zFull);
@@ -5159,6 +5157,7 @@ static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
UNUSED_PARAMETER(pVfs); UNUSED_PARAMETER(pVfs);
#endif #endif
if( zConverted==0 ){ if( zConverted==0 ){
OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)0));
return 0; return 0;
} }
if( osIsNT() ){ if( osIsNT() ){
@@ -5173,6 +5172,7 @@ static void *winDlOpen(sqlite3_vfs *pVfs, const char *zFilename){
h = osLoadLibraryA((char*)zConverted); h = osLoadLibraryA((char*)zConverted);
} }
#endif #endif
OSTRACE(("DLOPEN name=%s, handle=%p\n", zFilename, (void*)h));
sqlite3_free(zConverted); sqlite3_free(zConverted);
return (void*)h; return (void*)h;
} }
@@ -5181,12 +5181,17 @@ static void winDlError(sqlite3_vfs *pVfs, int nBuf, char *zBufOut){
winGetLastErrorMsg(osGetLastError(), nBuf, zBufOut); winGetLastErrorMsg(osGetLastError(), nBuf, zBufOut);
} }
static void (*winDlSym(sqlite3_vfs *pVfs,void *pH,const char *zSym))(void){ static void (*winDlSym(sqlite3_vfs *pVfs,void *pH,const char *zSym))(void){
FARPROC pProc;
UNUSED_PARAMETER(pVfs); UNUSED_PARAMETER(pVfs);
return (void(*)(void))osGetProcAddressA((HANDLE)pH, zSym); pProc = osGetProcAddressA((HANDLE)pH, zSym);
OSTRACE(("DLSYM handle=%p, symbol=%s, proc=%p\n",
(void*)pH, zSym, (void*)pProc));
return (void(*)(void))pProc;
} }
static void winDlClose(sqlite3_vfs *pVfs, void *pHandle){ static void winDlClose(sqlite3_vfs *pVfs, void *pHandle){
UNUSED_PARAMETER(pVfs); UNUSED_PARAMETER(pVfs);
osFreeLibrary((HANDLE)pHandle); osFreeLibrary((HANDLE)pHandle);
OSTRACE(("DLCLOSE handle=%p\n", (void*)pHandle));
} }
#else /* if SQLITE_OMIT_LOAD_EXTENSION is defined: */ #else /* if SQLITE_OMIT_LOAD_EXTENSION is defined: */
#define winDlOpen 0 #define winDlOpen 0

View File

@@ -91,6 +91,9 @@ static void statusFunc(
/* /*
** Extension load function. ** Extension load function.
*/ */
#ifdef _WIN32
__declspec(dllexport)
#endif
int testloadext_init( int testloadext_init(
sqlite3 *db, sqlite3 *db,
char **pzErrMsg, char **pzErrMsg,
@@ -109,6 +112,9 @@ int testloadext_init(
/* /*
** Another extension entry point. This one always fails. ** Another extension entry point. This one always fails.
*/ */
#ifdef _WIN32
__declspec(dllexport)
#endif
int testbrokenext_init( int testbrokenext_init(
sqlite3 *db, sqlite3 *db,
char **pzErrMsg, char **pzErrMsg,

View File

@@ -492,7 +492,6 @@ int sqlite3VdbeExec(
i64 lastRowid = db->lastRowid; /* Saved value of the last insert ROWID */ i64 lastRowid = db->lastRowid; /* Saved value of the last insert ROWID */
#ifdef VDBE_PROFILE #ifdef VDBE_PROFILE
u64 start; /* CPU clock count at start of opcode */ u64 start; /* CPU clock count at start of opcode */
int origPc; /* Program counter at start of opcode */
#endif #endif
/*** INSERT STACK UNION HERE ***/ /*** INSERT STACK UNION HERE ***/
@@ -554,7 +553,6 @@ int sqlite3VdbeExec(
assert( pc>=0 && pc<p->nOp ); assert( pc>=0 && pc<p->nOp );
if( db->mallocFailed ) goto no_mem; if( db->mallocFailed ) goto no_mem;
#ifdef VDBE_PROFILE #ifdef VDBE_PROFILE
origPc = pc;
start = sqlite3Hwtime(); start = sqlite3Hwtime();
#endif #endif
nVmStep++; nVmStep++;
@@ -6275,10 +6273,6 @@ default: { /* This is really OP_Noop and OP_Explain */
u64 elapsed = sqlite3Hwtime() - start; u64 elapsed = sqlite3Hwtime() - start;
pOp->cycles += elapsed; pOp->cycles += elapsed;
pOp->cnt++; pOp->cnt++;
#if 0
fprintf(stdout, "%10llu ", elapsed);
sqlite3VdbePrintOp(stdout, origPc, &aOp[origPc]);
#endif
} }
#endif #endif

View File

@@ -65,7 +65,7 @@ struct VdbeOp {
char *zComment; /* Comment to improve readability */ char *zComment; /* Comment to improve readability */
#endif #endif
#ifdef VDBE_PROFILE #ifdef VDBE_PROFILE
int cnt; /* Number of times this instruction was executed */ u32 cnt; /* Number of times this instruction was executed */
u64 cycles; /* Total time spent executing this instruction */ u64 cycles; /* Total time spent executing this instruction */
#endif #endif
#ifdef SQLITE_VDBE_COVERAGE #ifdef SQLITE_VDBE_COVERAGE

View File

@@ -2580,11 +2580,13 @@ int sqlite3VdbeReset(Vdbe *p){
if( pc!='\n' ) fprintf(out, "\n"); if( pc!='\n' ) fprintf(out, "\n");
} }
for(i=0; i<p->nOp; i++){ for(i=0; i<p->nOp; i++){
fprintf(out, "%6d %10lld %8lld ", char zHdr[100];
sqlite3_snprintf(sizeof(zHdr), zHdr, "%6u %12llu %8llu ",
p->aOp[i].cnt, p->aOp[i].cnt,
p->aOp[i].cycles, p->aOp[i].cycles,
p->aOp[i].cnt>0 ? p->aOp[i].cycles/p->aOp[i].cnt : 0 p->aOp[i].cnt>0 ? p->aOp[i].cycles/p->aOp[i].cnt : 0
); );
fprintf(out, "%s", zHdr);
sqlite3VdbePrintOp(out, i, &p->aOp[i]); sqlite3VdbePrintOp(out, i, &p->aOp[i]);
} }
fclose(out); fclose(out);

View File

@@ -66,6 +66,12 @@ if {$::tcl_platform(os) eq "Darwin"} {
set dlerror_nosymbol {dlsym(XXX, %2$s): symbol not found} set dlerror_nosymbol {dlsym(XXX, %2$s): symbol not found}
} }
if {$::tcl_platform(platform) eq "windows"} {
set dlerror_nosuchfile {The specified module could not be found.*}
set dlerror_notadll {%%1 is not a valid Win32 application.*}
set dlerror_nosymbol {The specified procedure could not be found.*}
}
# Make sure the test extension actually exists. If it does not # Make sure the test extension actually exists. If it does not
# exist, try to create it. If unable to create it, then skip this # exist, try to create it. If unable to create it, then skip this
# test file. # test file.
@@ -167,7 +173,7 @@ do_test loadext-2.3 {
regsub {0x[1234567890abcdefABCDEF]*} $msg XXX msg regsub {0x[1234567890abcdefABCDEF]*} $msg XXX msg
} }
list $rc $msg list $rc $msg
} [list 1 [format $dlerror_nosymbol $testextension icecream]] } /[list 1 [format $dlerror_nosymbol $testextension icecream]]/
# Try to load an extension for which the entry point fails (returns non-zero) # Try to load an extension for which the entry point fails (returns non-zero)
# #
@@ -267,10 +273,17 @@ do_malloc_test loadext-5 -tclprep {
} -tclbody { } -tclbody {
if {[autoinstall_test_functions]==7} {error "out of memory"} if {[autoinstall_test_functions]==7} {error "out of memory"}
} }
do_malloc_test loadext-6 -tclbody {
db enable_load_extension 1 # On Windows, this malloc test must be skipped because the winDlOpen
sqlite3_load_extension db $::testextension testloadext_init # function itself can fail due to "out of memory" conditions.
#
if {$::tcl_platform(platform) ne "windows"} {
do_malloc_test loadext-6 -tclbody {
db enable_load_extension 1
sqlite3_load_extension db $::testextension testloadext_init
}
} }
autoinstall_test_functions autoinstall_test_functions
finish_test finish_test

View File

@@ -32,9 +32,6 @@ ifcapable !wal {
} }
do_multiclient_test tn { do_multiclient_test tn {
# Do not run tests with the connections in the same process.
#
if {$tn==2} continue
# Close all connections and delete the database. # Close all connections and delete the database.
# #
@@ -44,6 +41,10 @@ do_multiclient_test tn {
forcedelete test.db forcedelete test.db
forcedelete walro forcedelete walro
# Do not run tests with the connections in the same process.
#
if {$tn==2} continue
foreach c {code1 code2 code3} { foreach c {code1 code2 code3} {
$c { $c {
sqlite3_shutdown sqlite3_shutdown
@@ -232,9 +233,6 @@ forcedelete test.db
# database file while a checkpoint operation is ongoing. # database file while a checkpoint operation is ongoing.
# #
do_multiclient_test tn { do_multiclient_test tn {
# Do not run tests with the connections in the same process.
#
if {$tn==2} continue
# Close all connections and delete the database. # Close all connections and delete the database.
# #
@@ -244,6 +242,10 @@ do_multiclient_test tn {
forcedelete test.db forcedelete test.db
forcedelete walro forcedelete walro
# Do not run tests with the connections in the same process.
#
if {$tn==2} continue
foreach c {code1 code2 code3} { foreach c {code1 code2 code3} {
$c { $c {
sqlite3_shutdown sqlite3_shutdown