File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / bigfile.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, 10 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    1: # 2002 November 30
    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 script testing the ability of SQLite to handle database
   13: # files larger than 4GB.
   14: #
   15: # $Id: bigfile.test,v 1.1.1.1 2012/02/21 17:04:16 misho Exp $
   16: #
   17: 
   18: set testdir [file dirname $argv0]
   19: source $testdir/tester.tcl
   20: 
   21: # Do not use a codec for this file, as the database is manipulated using
   22: # external methods (the [fake_big_file] and [hexio_write] commands).
   23: #
   24: do_not_use_codec
   25: 
   26: # If SQLITE_DISABLE_LFS is defined, omit this file.
   27: ifcapable !lfs {
   28:   finish_test
   29:   return
   30: }
   31: 
   32: # These tests only work for Tcl version 8.4 and later.  Prior to 8.4,
   33: # Tcl was unable to handle large files.
   34: #
   35: scan $::tcl_version %f vx
   36: if {$vx<8.4} return
   37: 
   38: # Mac OS X does not handle large files efficiently.  So skip this test
   39: # on that platform.
   40: if {$tcl_platform(os)=="Darwin"} return
   41: 
   42: # This is the md5 checksum of all the data in table t1 as created
   43: # by the first test.  We will use this number to make sure that data
   44: # never changes.
   45: #
   46: set MAGIC_SUM {593f1efcfdbe698c28b4b1b693f7e4cf}
   47: 
   48: do_test bigfile-1.1 {
   49:   execsql {
   50:     BEGIN;
   51:     CREATE TABLE t1(x);
   52:     INSERT INTO t1 VALUES('abcdefghijklmnopqrstuvwxyz');
   53:     INSERT INTO t1 SELECT rowid || ' ' || x FROM t1;
   54:     INSERT INTO t1 SELECT rowid || ' ' || x FROM t1;
   55:     INSERT INTO t1 SELECT rowid || ' ' || x FROM t1;
   56:     INSERT INTO t1 SELECT rowid || ' ' || x FROM t1;
   57:     INSERT INTO t1 SELECT rowid || ' ' || x FROM t1;
   58:     INSERT INTO t1 SELECT rowid || ' ' || x FROM t1;
   59:     INSERT INTO t1 SELECT rowid || ' ' || x FROM t1;
   60:     COMMIT;
   61:   }
   62:   execsql {
   63:     SELECT md5sum(x) FROM t1;
   64:   }
   65: } $::MAGIC_SUM
   66: 
   67: # Try to create a large file - a file that is larger than 2^32 bytes.
   68: # If this fails, it means that the system being tested does not support
   69: # large files.  So skip all of the remaining tests in this file.
   70: #
   71: db close
   72: if {[catch {fake_big_file 4096 [pwd]/test.db} msg]} {
   73:   puts "**** Unable to create a file larger than 4096 MB. *****"
   74:   finish_test
   75:   return
   76: }
   77: hexio_write test.db 28 00000000
   78: 
   79: do_test bigfile-1.2 {
   80:   sqlite3 db test.db
   81:   execsql {
   82:     SELECT md5sum(x) FROM t1;
   83:   }
   84: } $::MAGIC_SUM
   85: 
   86: # The previous test may fail on some systems because they are unable
   87: # to handle large files.  If that is so, then skip all of the following
   88: # tests.  We will know the above test failed because the "db" command
   89: # does not exist.
   90: #
   91: if {[llength [info command db]]<=0} {
   92:   puts "**** Large file support appears to be broken. *****"
   93:   finish_test
   94:   return
   95: }
   96: 
   97: do_test bigfile-1.3 {
   98:   execsql {
   99:     CREATE TABLE t2 AS SELECT * FROM t1;
  100:     SELECT md5sum(x) FROM t2;
  101:   }
  102: } $::MAGIC_SUM
  103: do_test bigfile-1.4 {
  104:   db close
  105:   sqlite3 db test.db
  106:   execsql {
  107:     SELECT md5sum(x) FROM t1;
  108:   }
  109: } $::MAGIC_SUM
  110: 
  111: db close
  112: if {[catch {fake_big_file 8192 [pwd]/test.db}]} {
  113:   puts "**** Unable to create a file larger than 8192 MB. *****"
  114:   finish_test
  115:   return
  116: }
  117: hexio_write test.db 28 00000000
  118: 
  119: do_test bigfile-1.5 {
  120:   sqlite3 db test.db
  121:   execsql {
  122:     SELECT md5sum(x) FROM t1;
  123:   }
  124: } $::MAGIC_SUM
  125: do_test bigfile-1.6 {
  126:   sqlite3 db test.db
  127:   execsql {
  128:     SELECT md5sum(x) FROM t2;
  129:   }
  130: } $::MAGIC_SUM
  131: do_test bigfile-1.7 {
  132:   execsql {
  133:     CREATE TABLE t3 AS SELECT * FROM t1;
  134:     SELECT md5sum(x) FROM t3;
  135:   }
  136: } $::MAGIC_SUM
  137: do_test bigfile-1.8 {
  138:   db close
  139:   sqlite3 db test.db
  140:   execsql {
  141:     SELECT md5sum(x) FROM t1;
  142:   }
  143: } $::MAGIC_SUM
  144: do_test bigfile-1.9 {
  145:   execsql {
  146:     SELECT md5sum(x) FROM t2;
  147:   }
  148: } $::MAGIC_SUM
  149: 
  150: db close
  151: if {[catch {fake_big_file 16384 [pwd]/test.db}]} {
  152:   puts "**** Unable to create a file larger than 16384 MB. *****"
  153:   finish_test
  154:   return
  155: }
  156: hexio_write test.db 28 00000000
  157: 
  158: do_test bigfile-1.10 {
  159:   sqlite3 db test.db
  160:   execsql {
  161:     SELECT md5sum(x) FROM t1;
  162:   }
  163: } $::MAGIC_SUM
  164: do_test bigfile-1.11 {
  165:   sqlite3 db test.db
  166:   execsql {
  167:     SELECT md5sum(x) FROM t2;
  168:   }
  169: } $::MAGIC_SUM
  170: do_test bigfile-1.12 {
  171:   sqlite3 db test.db
  172:   execsql {
  173:     SELECT md5sum(x) FROM t3;
  174:   }
  175: } $::MAGIC_SUM
  176: do_test bigfile-1.13 {
  177:   execsql {
  178:     CREATE TABLE t4 AS SELECT * FROM t1;
  179:     SELECT md5sum(x) FROM t4;
  180:   }
  181: } $::MAGIC_SUM
  182: do_test bigfile-1.14 {
  183:   db close
  184:   sqlite3 db test.db
  185:   execsql {
  186:     SELECT md5sum(x) FROM t1;
  187:   }
  188: } $::MAGIC_SUM
  189: do_test bigfile-1.15 {
  190:   execsql {
  191:     SELECT md5sum(x) FROM t2;
  192:   }
  193: } $::MAGIC_SUM
  194: do_test bigfile-1.16 {
  195:   execsql {
  196:     SELECT md5sum(x) FROM t3;
  197:   }
  198: } $::MAGIC_SUM
  199: 
  200: finish_test

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