| Index: third_party/sqlite/src/test/sort5.test
 | 
| diff --git a/third_party/sqlite/src/test/sort5.test b/third_party/sqlite/src/test/sort5.test
 | 
| index a02b8f920f3821200eb3cb96788783cd22dd589a..6ada81c9ccf073bdbacabe5042665549197ca993 100644
 | 
| --- a/third_party/sqlite/src/test/sort5.test
 | 
| +++ b/third_party/sqlite/src/test/sort5.test
 | 
| @@ -41,5 +41,78 @@ do_execsql_test 1.2 {
 | 
|  
 | 
|  db close
 | 
|  tvfs delete
 | 
| -finish_test
 | 
|  
 | 
| +#-------------------------------------------------------------------------
 | 
| +# Test that the PMA size is determined correctly. The PMA size should be
 | 
| +# roughly the same amount of memory allocated to the main pager cache, or
 | 
| +# 250 pages if this is larger.
 | 
| +#
 | 
| +testvfs tvfs
 | 
| +tvfs script tv_callback
 | 
| +tvfs filter {xOpen xWrite}
 | 
| +
 | 
| +proc tv_callback {method args} {
 | 
| +  global iTemp
 | 
| +  global F
 | 
| +  switch $method {
 | 
| +    xOpen {
 | 
| +      if {[lindex $args 0]==""} { return "temp[incr iTemp]" }
 | 
| +      return "SQLITE_OK"
 | 
| +    }
 | 
| +
 | 
| +    xWrite {
 | 
| +      foreach {filename id off amt} $args {}
 | 
| +      if {[info exists F($id)]==0 || $F($id)<($off + $amt)} {
 | 
| +        set F($id) [expr $off+$amt]
 | 
| +      }
 | 
| +    }
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +catch { db close }
 | 
| +forcedelete test.db
 | 
| +sqlite3 db test.db -vfs tvfs
 | 
| +execsql { CREATE TABLE t1(x) }
 | 
| +
 | 
| +# Each iteration of the following loop attempts to sort 10001 records
 | 
| +# each a bit over 100 bytes in size. In total a little more than 1MiB 
 | 
| +# of data.
 | 
| +#
 | 
| +foreach {tn pgsz cachesz bTemp} {
 | 
| +  1 4096   1000  0
 | 
| +  2 1024   1000  1
 | 
| +
 | 
| +  3 4096  -1000  1
 | 
| +  4 1024  -1000  1
 | 
| +
 | 
| +  5 4096  -9000  0
 | 
| +  6 1024  -9000  0
 | 
| +} {
 | 
| +  do_execsql_test 2.$tn.0 "
 | 
| +    PRAGMA page_size = $pgsz;
 | 
| +    VACUUM;
 | 
| +    PRAGMA cache_size = $cachesz;
 | 
| +  "
 | 
| +
 | 
| +  if {[db one {PRAGMA page_size}]!=$pgsz} {
 | 
| +    # SEE is not able to change page sizes and that messes up the
 | 
| +    # results that follow.
 | 
| +    continue
 | 
| +  }
 | 
| +
 | 
| +  do_test 2.$tn.1 {
 | 
| +    set ::iTemp 0
 | 
| +    catch { array unset F }
 | 
| +    execsql {
 | 
| +      WITH x(i, j) AS (
 | 
| +        SELECT 1, randomblob(100)
 | 
| +        UNION ALL
 | 
| +        SELECT i+1, randomblob(100) FROM x WHERE i<10000
 | 
| +      )
 | 
| +      SELECT * FROM x ORDER BY j;
 | 
| +    }
 | 
| +    expr {[array names F]!=""}
 | 
| +  } $bTemp
 | 
| +}
 | 
| +
 | 
| +finish_test
 | 
| 
 |