]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge selected test fixes from trunk.
authormistachkin <mistachkin@noemail.net>
Wed, 7 Sep 2016 19:31:06 +0000 (19:31 +0000)
committermistachkin <mistachkin@noemail.net>
Wed, 7 Sep 2016 19:31:06 +0000 (19:31 +0000)
FossilOrigin-Name: 71866b367f32b5a4cd0c239747fa8e0a60e75698

manifest
manifest.uuid
src/test_fs.c
src/test_windirent.c
src/test_windirent.h
test/speed3.test
test/vtabF.test
test/vtabH.test

index ed2c09993c67c32e6f97b726d538fccd6cebae71..ba2e51b3a5eba9e9ce323c0e68fb2fd73c6bde02 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Sync\sup\sthe\sMSVC\smakefiles.
-D 2016-09-07T19:23:49.275
+C Merge\sselected\stest\sfixes\sfrom\strunk.
+D 2016-09-07T19:31:06.287
 F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 6fef1e10792656c94fe1393092de6c8ba6ea1c88
@@ -411,7 +411,7 @@ F src/test_btree.c 8b2dc8b8848cf3a4db93f11578f075e82252a274
 F src/test_config.c 4d3d4a886416f369771d69a6dba926866deda788
 F src/test_demovfs.c a0c3bdd45ed044115c2c9f7779e56eafff18741e
 F src/test_devsym.c 4e58dec2602d8e139ca08659f62a62450587cb58
-F src/test_fs.c ac62ce7d5c0c23aa6932891cad5746945564c91c
+F src/test_fs.c e16cbe68d3b107e00a907c20a9a02629870eb69b
 F src/test_func.c a2b4993da973b0ea60dd5d51a7066238ede8c329
 F src/test_hexio.c 1d4469ca61ab202a1fcec6543f584d2407205e8d
 F src/test_init.c 4413c211a94b62157ca4c145b3f27c497f03c664
@@ -438,8 +438,8 @@ F src/test_tclvar.c df9fe1213c2634687a9ca0b0bec0d2119d359ae3
 F src/test_thread.c 911d15fb14e19c0c542bdc8aabf981c2f10a4858
 F src/test_vfs.c f0186261a24de2671d080bcd8050732f0cb64f6e
 F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698
-F src/test_windirent.c 8f5fada630348558d5745b334702f301da1ffc61
-F src/test_windirent.h b12055cab6227f7be10f5c19296f67c60cc5e2a5
+F src/test_windirent.c 600398db0198ca1c77ca183831bf456746b6f5c4
+F src/test_windirent.h 7edc57e2faa727026dbd5d010dd0e2e665d5aa01
 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
 F src/tokenize.c 3b29883b0ce4a6c6f643965b66b5ca6613178e59
@@ -1093,7 +1093,7 @@ F test/speed1.test f2974a91d79f58507ada01864c0e323093065452
 F test/speed1p.explain d841e650a04728b39e6740296b852dccdca9b2cb
 F test/speed1p.test b180e98609c7677382cf618c0ec9b69f789033a8
 F test/speed2.test 53177056baf6556dcbdcf032bbdfc41c1aa74ded
-F test/speed3.test d32043614c08c53eafdc80f33191d5bd9b920523
+F test/speed3.test 694affeb9100526007436334cf7d08f3d74b85ef
 F test/speed4.test abc0ad3399dcf9703abed2fff8705e4f8e416715
 F test/speed4p.explain 6b5f104ebeb34a038b2f714150f51d01143e59aa
 F test/speed4p.test 0e51908951677de5a969b723e03a27a1c45db38b
@@ -1344,8 +1344,8 @@ F test/vtabB.test 04df5dc531b9f44d9ca65b9c1b79f12b5922a796
 F test/vtabC.test 4528f459a13136f982e75614d120aef165f17292
 F test/vtabD.test 05b3f1d77117271671089e48719524b676842e96
 F test/vtabE.test d5024aa42754962f6bb0afd261681686488e7afe
-F test/vtabF.test fd5ad376f5a34fe0891df1f3cddb4fe7c3eb077e
-F test/vtabH.test 5f5157a1501d9889ec35c1a1832f69612dd31444
+F test/vtabF.test 1918844c7c902f6a16c8dacf1ec8f84886d6e78b
+F test/vtabH.test 97f61b0253260831af6232163f7852e2653baed6
 F test/vtabI.test 751b07636700dbdea328e4265b6077ccd6811a3f
 F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5
 F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8
@@ -1509,7 +1509,12 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 7c2c0d1dceb6b49822e5f5c5e531744d2a4fd12c
-R 006a06e7e7d96117f2d9fa15f4e085b4
+P b3777e1f8e4c44155734b92061422ac96795be3d
+Q +328f79bb5713abbecaeb0ef3fb37f56a0946b915
+Q +3680f95ff34fdcf6a18a99268678a56e4be5a023
+Q +84de17bc688f1df2be1a34420470d1b16f8f4e56
+Q +a8546feec9388d96934b16e516a165cd37d32ce9
+Q +e4aeaa2bc73b57f1ef134cc4f54e2a652a20b5c9
+R 8ce338835ce07201af8e9c9e9593fb0d
 U mistachkin
-Z f8e2239fba83cac018e472c48ce3c398
+Z b082ecd6cc5d3c88a483c74aaee891ff
index 371a722aad73ed5589ea637830a1b15d7f1bd374..73395e117e54d5c3b67e34dfbb3f481e58d193df 100644 (file)
@@ -1 +1 @@
-b3777e1f8e4c44155734b92061422ac96795be3d
\ No newline at end of file
+71866b367f32b5a4cd0c239747fa8e0a60e75698
\ No newline at end of file
index 87088bdae738b827f153a9c4339c43e72296d754..dd590a66232fb5b93ba80e258e8c4e8d43e1ecec 100644 (file)
@@ -499,9 +499,13 @@ static int fstreeFilter(
   char aWild[2] = { '\0', '\0' };
 
 #if SQLITE_OS_WIN
-  zRoot = sqlite3_mprintf("%s%c", getenv("SystemDrive"), '/');
+  const char *zDrive = windirent_getenv("fstreeDrive");
+  if( zDrive==0 ){
+    zDrive = windirent_getenv("SystemDrive");
+  }
+  zRoot = sqlite3_mprintf("%s%c", zDrive, '/');
   nRoot = sqlite3Strlen30(zRoot);
-  zPrefix = sqlite3_mprintf("%s", getenv("SystemDrive"));
+  zPrefix = sqlite3_mprintf("%s", zDrive);
   nPrefix = sqlite3Strlen30(zPrefix);
 #else
   zRoot = "/";
index 11d7dc07d02fd50534f51caaf8edd1703212d4a4..044bc7f414246f4be471b2ebb62eb58caffb61da 100644 (file)
 
 #include "test_windirent.h"
 
+/*
+** Implementation of the POSIX getenv() function using the Win32 API.
+** This function is not thread-safe.
+*/
+const char *windirent_getenv(
+  const char *name
+){
+  static char value[32768]; /* Maximum length, per MSDN */
+  DWORD dwSize = sizeof(value) / sizeof(char); /* Size in chars */
+  DWORD dwRet; /* Value returned by GetEnvironmentVariableA() */
+
+  memset(value, 0, sizeof(value));
+  dwRet = GetEnvironmentVariableA(name, value, dwSize);
+  if( dwRet==0 || dwRet>dwSize ){
+    /*
+    ** The function call to GetEnvironmentVariableA() failed -OR-
+    ** the buffer is not large enough.  Either way, return NULL.
+    */
+    return 0;
+  }else{
+    /*
+    ** The function call to GetEnvironmentVariableA() succeeded
+    ** -AND- the buffer contains the entire value.
+    */
+    return value;
+  }
+}
+
 /*
 ** Implementation of the POSIX opendir() function using the MSVCRT.
 */
@@ -32,7 +60,7 @@ LPDIR opendir(
 
   /* TODO: Remove this if Unix-style root paths are not used. */
   if( sqlite3_stricmp(dirname, "/")==0 ){
-    dirname = getenv("SystemDrive");
+    dirname = windirent_getenv("SystemDrive");
   }
 
   _snprintf(data.name, namesize, "%s\\*", dirname);
index 0b8d1a7b517e1d7267b1354be6dd679b6d80d805..be454988e33393edbabd442ea69aa1a0fd064e42 100644 (file)
@@ -92,6 +92,13 @@ struct DIR {
   DIRENT d_next;     /* DIRENT constructed based on "_findnext". */
 };
 
+/*
+** Provide the function prototype for the POSIX compatiable getenv()
+** function.  This function is not thread-safe.
+*/
+
+extern const char *windirent_getenv(const char *name);
+
 /*
 ** Finally, we can provide the function prototypes for the opendir(),
 ** readdir(), readdir_r(), and closedir() POSIX functions.
index 1beaeb74f337f422d77f1dc41f71098e86d18ca3..4aa90943bad1989a5fb5b762079df3e6e7026fbd 100644 (file)
@@ -105,7 +105,7 @@ proc io_log {db} {
   puts "Normal    : Read $stats2(read), wrote $stats2(write)"
 }
 
-proc reset_db {} {
+proc speed3_reset_db {} {
   db close
   sqlite3 db test.db
   db eval { 
@@ -117,7 +117,7 @@ proc reset_db {} {
 }
 
 forcedelete test2.db test2.db-journal
-reset_db
+speed3_reset_db
 
 # Set up a database in auto-vacuum mode and create a database schema.
 #
@@ -154,7 +154,7 @@ do_test speed3-0.4 {
 # Delete all content in a table, one row at a time.
 #
 #io_log db
-reset_db
+speed3_reset_db
 speed_trial speed3-1.incrvacuum $::NROW row {DELETE FROM main.t1 WHERE 1}
 speed_trial speed3-1.normal     $::NROW row {DELETE FROM aux.t1 WHERE 1}
 io_log db
@@ -164,7 +164,7 @@ io_log db
 #
 #db eval {PRAGMA incremental_vacuum(500000)}
 populate_t1 db
-reset_db
+speed3_reset_db
 speed_trial speed3-2.incrvacuum $::NROW row {SELECT c FROM main.t1}
 speed_trial speed3-2.normal     $::NROW row {SELECT c FROM aux.t1}
 io_log db
index b9341ea5972ae92c4766e9d31c3839ddd1136d28..7b11cb8c71acde8a392b2a72ffc26ba14d392506 100644 (file)
@@ -21,7 +21,7 @@ ifcapable !vtab||!schema_pragmas { finish_test ; return }
 # Register the echo module
 register_echo_module [sqlite3_connection_pointer db]
 
-do_test vtabE-1.1 {
+do_test vtabF-1.1 {
   execsql {
     CREATE TABLE t1(a, b);
     CREATE INDEX i1 ON t1(a);
@@ -37,7 +37,7 @@ do_test vtabE-1.1 {
     SELECT b FROM t1 WHERE a IS NOT NULL;
   }
 } {110 111 112 113}
-do_test vtabE-1.2 {
+do_test vtabF-1.2 {
   execsql {SELECT b FROM tv1 WHERE a IS NOT NULL}
 } {110 111 112 113}
 
index d16db13674b06c564faa562b60482cad1545e01f..f2a116f350fbe581807481cbf8799b8b97b15130 100644 (file)
@@ -108,7 +108,12 @@ foreach ::tclvar_set_omit {0 1} {
 
 #-------------------------------------------------------------------------
 #
-if {1} {
+if {$tcl_platform(platform)=="windows"} {
+  set drive [string range [pwd] 0 1]
+  set ::env(fstreeDrive) $drive
+}
+if {$tcl_platform(platform)!="windows" || \
+    [regexp -nocase -- {^[A-Z]:} $drive]} {
   reset_db
   register_fs_module db
   do_execsql_test 3.0 {
@@ -119,7 +124,7 @@ if {1} {
   proc list_root_files {} {
     if {$::tcl_platform(platform) eq "windows"} {
       set res [list]
-      foreach name [glob -directory $::env(SystemDrive)/ -- *] {
+      foreach name [glob -directory $::env(fstreeDrive)/ -- *] {
         if {[string index [file tail $name] 0] eq "."} continue
         lappend res $name
       }
@@ -142,6 +147,25 @@ if {1} {
     }
   }
 
+  # Read the first 5 entries from the root directory.  Except, ignore
+  # files that contain the "$" character in their names as these are
+  # special files on some Windows platforms.
+  #
+  set res [list]
+  set root_files [list_root_files]
+  set num_root_files [llength $root_files]
+  set lim_root_files [expr {$num_root_files > 5 ? 5 : $num_root_files}]
+  foreach p [lrange $root_files 0 [expr {$lim_root_files - 1}]] {
+    if {$::tcl_platform(platform) eq "windows"} {
+      if {[regexp {\$} $p]} {incr lim_root_files -1} else {lappend res $p}
+    } else {
+      lappend res "/$p"
+    }
+  }
+  do_execsql_test 3.1 [subst {
+    SELECT path FROM fstree WHERE path NOT GLOB '*\$*' LIMIT $lim_root_files;
+  }] $res
+
   # Read all entries in the current directory.
   #
   proc contents {pattern} {