github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/testdata/tcl/8_3_names.test (about)

     1  # 2011 May 17
     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  #
    12  # Test cases for the SQLITE_ENABLE_8_3_NAMES feature that forces all
    13  # filename extensions to be limited to 3 characters.  Some embedded
    14  # systems need this to work around microsoft FAT patents, but this
    15  # feature should be disabled on most deployments.
    16  #
    17  
    18  set testdir [file dirname $argv0]
    19  source $testdir/tester.tcl
    20  ifcapable !8_3_names {
    21    finish_test
    22    return
    23  }
    24  
    25  db close
    26  sqlite3_shutdown
    27  sqlite3_config_uri 1
    28  
    29  do_test 8_3_names-1.0 {
    30    forcedelete test.db test.nal test.db-journal
    31    sqlite3 db test.db
    32    db eval {
    33      PRAGMA cache_size=10;
    34      CREATE TABLE t1(x);
    35      INSERT INTO t1 VALUES(randomblob(20000));
    36      BEGIN;
    37      DELETE FROM t1;
    38      INSERT INTO t1 VALUES(randomblob(15000));
    39    }
    40    file exists test.db-journal
    41  } 1
    42  do_test 8_3_names-1.1 {
    43    file exists test.nal
    44  } 0
    45  do_test 8_3_names-1.2 {
    46    db eval {
    47      ROLLBACK;
    48      SELECT length(x) FROM t1
    49    }
    50  } 20000
    51  
    52  db close
    53  do_test 8_3_names-2.0 {
    54    forcedelete test.db test.nal test.db-journal
    55    sqlite3 db file:./test.db?8_3_names=1
    56    db eval {
    57      PRAGMA cache_size=10;
    58      CREATE TABLE t1(x);
    59      INSERT INTO t1 VALUES(randomblob(20000));
    60      BEGIN;
    61      DELETE FROM t1;
    62      INSERT INTO t1 VALUES(randomblob(15000));
    63    }
    64    file exists test.db-journal
    65  } 0
    66  do_test 8_3_names-2.1 {
    67    file exists test.nal
    68  } 1
    69  forcedelete test2.db test2.nal test2.db-journal
    70  copy_file test.db test2.db
    71  copy_file test.nal test2.nal
    72  do_test 8_3_names-2.2 {
    73    db eval {
    74      COMMIT;
    75      SELECT length(x) FROM t1
    76    }
    77  } 15000
    78  do_test 8_3_names-2.3 {
    79    sqlite3 db2 file:./test2.db?8_3_names=1
    80    db2 eval {
    81      PRAGMA integrity_check;
    82      SELECT length(x) FROM t1;
    83    }
    84  } {ok 20000}
    85  
    86  db close
    87  do_test 8_3_names-3.0 {
    88    forcedelete test.db test.nal test.db-journal
    89    sqlite3 db file:./test.db?8_3_names=0
    90    db eval {
    91      PRAGMA cache_size=10;
    92      CREATE TABLE t1(x);
    93      INSERT INTO t1 VALUES(randomblob(20000));
    94      BEGIN;
    95      DELETE FROM t1;
    96      INSERT INTO t1 VALUES(randomblob(15000));
    97    }
    98    file exists test.db-journal
    99  } 1
   100  do_test 8_3_names-3.1 {
   101    file exists test.nal
   102  } 0
   103  forcedelete test2.db test2.nal test2.db-journal
   104  copy_file test.db test2.db
   105  copy_file test.db-journal test2.db-journal
   106  do_test 8_3_names-3.2 {
   107    db eval {
   108      COMMIT;
   109      SELECT length(x) FROM t1
   110    }
   111  } 15000
   112  do_test 8_3_names-3.3 {
   113    sqlite3 db2 file:./test2.db?8_3_names=0
   114    db2 eval {
   115      PRAGMA integrity_check;
   116      SELECT length(x) FROM t1;
   117    }
   118  } {ok 20000}
   119  
   120  ##########################################################################
   121  # Master journals.
   122  #
   123  db close
   124  forcedelete test.db test2.db
   125  do_test 8_3_names-4.0 {
   126    sqlite3 db file:./test.db?8_3_names=1
   127    db eval {
   128      CREATE TABLE t1(x);
   129      INSERT INTO t1 VALUES(1);
   130      ATTACH 'file:./test2.db?8_3_names=1' AS db2;
   131      CREATE TABLE db2.t2(y);
   132      INSERT INTO t2 VALUES(2);
   133      BEGIN;
   134        INSERT INTO t1 VALUES(3);
   135        INSERT INTO t2 VALUES(4);
   136      COMMIT;
   137      SELECT * FROM t1, t2 ORDER BY x, y
   138    }
   139  } {1 2 1 4 3 2 3 4}
   140      
   141  
   142  ##########################################################################
   143  # WAL mode.
   144  #
   145  ifcapable !wal {
   146    finish_test
   147    return
   148  }
   149  db close
   150  forcedelete test.db
   151  do_test 8_3_names-5.0 {
   152    sqlite3 db file:./test.db?8_3_names=1
   153    load_static_extension db wholenumber
   154    db eval {
   155      PRAGMA journal_mode=WAL;
   156      CREATE TABLE t1(x);
   157      CREATE VIRTUAL TABLE nums USING wholenumber;
   158      INSERT INTO t1 SELECT value FROM nums WHERE value BETWEEN 1 AND 1000;
   159      BEGIN;
   160      UPDATE t1 SET x=x*2;
   161    }
   162    sqlite3 db2 file:./test.db?8_3_names=1
   163    load_static_extension db2 wholenumber
   164    db2 eval {
   165      BEGIN;
   166      SELECT sum(x) FROM t1;
   167    }
   168  } {500500}
   169  
   170  do_test 8_3_names-5.1 {
   171    file exists test.db-wal
   172  } 0
   173  do_test 8_3_names-5.2 {
   174    file exists test.wal
   175  } 1
   176  do_test 8_3_names-5.3 {
   177    file exists test.db-shm
   178  } 0
   179  do_test 8_3_names-5.4 {
   180    file exists test.shm
   181  } 1
   182  
   183  
   184  do_test 8_3_names-5.5 {
   185    db eval {
   186      COMMIT;
   187      SELECT sum(x) FROM t1;
   188    }
   189  } {1001000}
   190  do_test 8_3_names-5.6 {
   191    db2 eval {
   192      SELECT sum(x) FROM t1;
   193    }
   194  } {500500}
   195  
   196  
   197  finish_test