⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pager3.test

📁 sqlite-3.4.1,嵌入式数据库.是一个功能强大的开源数据库,给学习和研发以及小型公司的发展带来了全所未有的好处.
💻 TEST
字号:
# 2001 September 15## The author disclaims copyright to this source code.  In place of# a legal notice, here is a blessing:##    May you do good and not evil.#    May you find forgiveness for yourself and forgive others.#    May you share freely, never taking more than you give.##***********************************************************************# This file implements regression tests for SQLite library.  The# focus of this script is page cache subsystem.## $Id: pager3.test,v 1.3 2005/03/29 03:11:00 danielk1977 Exp $set testdir [file dirname $argv0]source $testdir/tester.tcl# This test makes sure the database file is truncated back to the correct# length on a rollback.## After some preliminary setup, a transaction is start at NOTE (1).# The create table on the following line allocates an additional page# at the end of the database file.  But that page is not written because# the database still has a RESERVED lock, not an EXCLUSIVE lock.  The# new page is held in memory and the size of the file is unchanged.# The insert at NOTE (2) begins adding additional pages.  Then it hits# a constraint error and aborts.  The abort causes sqlite3OsTruncate()# to be called to restore the file to the same length as it was after# the create table.  But the create table results had not yet been# written so the file is actually lengthened by this truncate.  Finally,# the rollback at NOTE (3) is called to undo all the changes since the# begin.  This rollback should truncate the database again.# # This test was added because the second truncate at NOTE (3) was not# occurring on early versions of SQLite 3.0.#ifcapable tempdb {  do_test pager3-1.1 {    execsql {      create table t1(a unique, b);      insert into t1 values(1, 'abcdefghijklmnopqrstuvwxyz');      insert into t1 values(2, 'abcdefghijklmnopqrstuvwxyz');      update t1 set b=b||a||b;      update t1 set b=b||a||b;      update t1 set b=b||a||b;      update t1 set b=b||a||b;      update t1 set b=b||a||b;      update t1 set b=b||a||b;      create temp table t2 as select * from t1;      begin;                  ------- NOTE (1)      create table t3(x);    }    catchsql {      insert into t1 select 4-a, b from t2;  ----- NOTE (2)    }    execsql {      rollback;  ------- NOTE (3)    }    db close    sqlite3 db test.db    set r ok    ifcapable {integrityck} {      set r [execsql {        pragma integrity_check;      }]    }    set r  } ok}finish_test

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -