File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / 8_3_names.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 4 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    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:   register_wholenumber_module db
  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:   register_wholenumber_module db2
  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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>