gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/dbdata.test (about)

     1  # 2019-04-11
     2  #
     3  # The author disclaims copyright to this source code.  In place of
     4  # a legal notice, here is a blessing:
     5  #
     6  #    May you do good and not evil.
     7  #    May you find forgiveness for yourself and forgive others.
     8  #    May you share freely, never taking more than you give.
     9  #
    10  #***********************************************************************
    11  # This file implements regression tests for SQLite library.  The
    12  # focus of this file is testing the sqlite_dbpage virtual table.
    13  #
    14  
    15  set testdir [file dirname $argv0]
    16  source $testdir/tester.tcl
    17  set testprefix dbdata
    18  
    19  ifcapable !vtab||!compound {
    20    finish_test
    21    return
    22  }
    23  if { [catch { db enable_load_extension 1 }]
    24    || [catch { db eval { SELECT load_extension('../dbdata') } }] 
    25  } {
    26    finish_test
    27    return
    28  }
    29  
    30  do_execsql_test 1.0 {
    31    CREATE TABLE T1(a, b);
    32    INSERT INTO t1(rowid, a ,b) VALUES(5, 'v', 'five');
    33    INSERT INTO t1(rowid, a, b) VALUES(10, 'x', 'ten');
    34  }
    35  
    36  do_execsql_test 1.1 {
    37    SELECT pgno, cell, field, quote(value) FROM sqlite_dbdata WHERE pgno=2;
    38  } {
    39    2 0 -1 5 
    40    2 0  0 'v' 
    41    2 0  1 'five' 
    42    2 1 -1 10 
    43    2 1  0 'x' 
    44    2 1  1 'ten'
    45  }
    46  
    47  breakpoint
    48  do_execsql_test 1.2 {
    49    SELECT pgno, cell, field, quote(value) FROM sqlite_dbdata;
    50  } {
    51    1 0 -1 1 
    52    1 0 0 'table' 
    53    1 0 1 'T1' 
    54    1 0 2 'T1' 
    55    1 0 3 2 
    56    1 0 4 {'CREATE TABLE T1(a, b)'}
    57    2 0 -1 5 
    58    2 0  0 'v' 
    59    2 0  1 'five' 
    60    2 1 -1 10 
    61    2 1  0 'x' 
    62    2 1  1 'ten'
    63  }
    64  
    65  set big [string repeat big 2000]
    66  do_execsql_test 1.3 {
    67    INSERT INTO t1 VALUES(NULL, $big);
    68    SELECT value FROM sqlite_dbdata WHERE pgno=2 AND cell=2 AND field=1;
    69  } $big
    70  
    71  do_execsql_test 1.4 {
    72    DELETE FROM t1;
    73    INSERT INTO t1 VALUES(NULL, randomblob(5050));
    74  }
    75  do_test 1.5 {
    76    execsql {
    77      SELECT quote(value) FROM sqlite_dbdata WHERE pgno=2 AND cell=0 AND field=1;
    78    }
    79  } [db one {SELECT quote(b) FROM t1}]
    80  
    81  #-------------------------------------------------------------------------
    82  reset_db
    83  db enable_load_extension 1
    84  db eval { SELECT load_extension('../dbdata') }
    85  
    86  do_execsql_test 2.0 {
    87    CREATE TABLE t1(a);
    88    CREATE INDEX i1 ON t1(a);
    89    WITH s(i) AS (
    90      SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<10
    91    )
    92    INSERT INTO t1 SELECT randomblob(900) FROM s;
    93  }
    94  
    95  do_execsql_test 2.1 {
    96    SELECT * FROM sqlite_dbptr WHERE pgno=2;
    97  } {
    98    2 25   2 6   2 7   2 9   2 11   2 13   2 15   2 17   2 19   2 21
    99  }
   100  
   101  do_execsql_test 2.2 {
   102    SELECT * FROM sqlite_dbptr WHERE pgno=3;
   103  } {
   104    3 24   3 23
   105  }
   106  
   107  do_execsql_test 2.3 {
   108    SELECT * FROM sqlite_dbptr
   109  } {
   110    2 25   2 6   2 7   2 9   2 11   2 13   2 15   2 17   2 19   2 21
   111    3 24   3 23
   112  }
   113  
   114  
   115  finish_test