CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
fts3ak.test106 linesDownload Raw Back to test
1# 2007 March 92#3# The author disclaims copyright to this source code.4#5#*************************************************************************6# This file implements regression tests for SQLite library.  These7# make sure that fts3 insertion buffering is fully transparent when8# using transactions.9#10# $Id: fts3ak.test,v 1.1 2007/08/20 17:38:42 shess Exp $11#12 13set testdir [file dirname $argv0]14source $testdir/tester.tcl15 16# If SQLITE_ENABLE_FTS3 is defined, omit this file.17ifcapable !fts3 {18  finish_test19  return20}21 22db eval {23  CREATE VIRTUAL TABLE t1 USING fts3(content);24  INSERT INTO t1 (rowid, content) VALUES(1, 'hello world');25  INSERT INTO t1 (rowid, content) VALUES(2, 'hello there');26  INSERT INTO t1 (rowid, content) VALUES(3, 'cruel world');27}28 29# Test that possibly-buffered inserts went through after commit.30do_test fts3ak-1.1 {31  execsql {32    BEGIN TRANSACTION;33    INSERT INTO t1 (rowid, content) VALUES(4, 'false world');34    INSERT INTO t1 (rowid, content) VALUES(5, 'false door');35    COMMIT TRANSACTION;36    SELECT rowid FROM t1 WHERE t1 MATCH 'world';37  }38} {1 3 4}39 40# Test that buffered inserts are seen by selects in the same41# transaction.42do_test fts3ak-1.2 {43  execsql {44    BEGIN TRANSACTION;45    INSERT INTO t1 (rowid, content) VALUES(6, 'another world');46    INSERT INTO t1 (rowid, content) VALUES(7, 'another test');47    SELECT rowid FROM t1 WHERE t1 MATCH 'world';48    COMMIT TRANSACTION;49  }50} {1 3 4 6}51 52# Test that buffered inserts are seen within a transaction.  This is53# really the same test as 1.2.54do_test fts3ak-1.3 {55  execsql {56    BEGIN TRANSACTION;57    INSERT INTO t1 (rowid, content) VALUES(8, 'second world');58    INSERT INTO t1 (rowid, content) VALUES(9, 'second sight');59    SELECT rowid FROM t1 WHERE t1 MATCH 'world';60    ROLLBACK TRANSACTION;61  }62} {1 3 4 6 8}63 64# Double-check that the previous result doesn't persist past the65# rollback!66do_test fts3ak-1.4 {67  execsql {68    SELECT rowid FROM t1 WHERE t1 MATCH 'world';69  }70} {1 3 4 6}71 72# Test it all together.73do_test fts3ak-1.5 {74  execsql {75    BEGIN TRANSACTION;76    INSERT INTO t1 (rowid, content) VALUES(10, 'second world');77    INSERT INTO t1 (rowid, content) VALUES(11, 'second sight');78    ROLLBACK TRANSACTION;79    SELECT rowid FROM t1 WHERE t1 MATCH 'world';80  }81} {1 3 4 6}82 83# Test that the obvious case works.84do_test fts3ak-1.6 {85  execsql {86    BEGIN;87    INSERT INTO t1 (rowid, content) VALUES(12, 'third world');88    COMMIT;89    SELECT rowid FROM t1 WHERE t1 MATCH 'third';90  }91} {12}92 93# This is exactly the same as the previous test, except that older94# code loses the INSERT due to an SQLITE_SCHEMA error.95do_test fts3ak-1.7 {96  execsql {97    BEGIN;98    INSERT INTO t1 (rowid, content) VALUES(13, 'third dimension');99    CREATE TABLE x (c);100    COMMIT;101    SELECT rowid FROM t1 WHERE t1 MATCH 'dimension';102  }103} {13}104 105finish_test106