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

     1  # 2020-09-24
     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 tests for a strange scenario discovered by
    12  # dbsqlfuzz (0ad6d441f9bf3dfc32626a9900bc1700495b16f9) in which a
    13  # virtual table is named "sqlite_stat1".
    14  #
    15  
    16  set testdir [file dirname $argv0]
    17  source $testdir/tester.tcl
    18  set testprefix vtabK
    19  
    20  ifcapable !vtab||!rtree||!fts5 {
    21    finish_test
    22    return
    23  }
    24  
    25  do_execsql_test 100 {
    26    CREATE TABLE t1(x);
    27    INSERT INTO t1 VALUES(123);
    28    PRAGMA writable_schema=ON;
    29    CREATE VIRTUAL TABLE sqlite_stat1 USING fts5(a);
    30    PRAGMA writable_schema=OFF;
    31    CREATE VIRTUAL TABLE t3 USING fts5(b);
    32    INSERT INTO t3 VALUES('this is a test');
    33  }
    34  do_catchsql_test 110 {
    35    CREATE VIRTUAL TABLE t2 USING rtree(id,x,y);
    36  } {1 {no such column: stat}}
    37  do_execsql_test 120 {
    38    SELECT * FROM t1;
    39  } {123}
    40  do_execsql_test 130 {
    41    INSERT INTO t3(b) VALUES('Four score and seven years ago');
    42    SELECT * FROM t3 WHERE t3 MATCH 'this';
    43  } {{this is a test}}
    44  do_execsql_test 140 {
    45    SELECT * FROM t3 WHERE t3 MATCH 'four seven';
    46  } {{Four score and seven years ago}}
    47  do_execsql_test 150 {
    48    INSERT INTO sqlite_stat1(a)
    49    VALUES('We hold these truths to be self-evident...');
    50    SELECT * FROM sqlite_stat1;
    51  } {{We hold these truths to be self-evident...}}
    52  do_catchsql_test 160 {
    53    ANALYZE;
    54  } {1 {database disk image is malformed}}
    55  do_execsql_test 170 {
    56    PRAGMA integrity_check;
    57  } {ok}
    58  
    59  # Follow-on dbsqlfuzz bc02a0cde82dee801a8d6f653d2831680f87dca1
    60  reset_db
    61  do_execsql_test 200 {
    62    CREATE TABLE t1(a);
    63    INSERT INTO t1 VALUES('Ebed-malech');
    64    CREATE TABLE x(a);
    65    PRAGMA writable_schema=ON;
    66    CREATE VIRTUAL TABLE sqlite_stat1 USING fts5(a);
    67  } {}
    68  do_catchsql_test 210 {
    69    CREATE VIRTUAL TABLE t2 USING rtree(id,x,y);
    70  } {1 {no such column: stat}}
    71  do_execsql_test 220 {
    72    SELECT * FROM t1;
    73  } {Ebed-malech}
    74  
    75  # Follow-on dbsqlfuzz a097eaad43c3c845b236126df92fb49b25449b0c
    76  reset_db
    77  do_catchsql_test 300 {
    78    CREATE VIRTUAL TABLE t1 USING rtree(a,b,c);
    79    CREATE TABLE t2(x);
    80    ALTER TABLE t2 ADD d GENERATED ALWAYS AS (c IN (SELECT 1 FROM t1)) VIRTUAL;
    81  } {1 {error in table t2 after add column: subqueries prohibited in generated columns}}
    82    
    83  finish_test