~ubuntu-branches/ubuntu/karmic/gears/karmic

« back to all changes in this revision

Viewing changes to third_party/sqlite_google/test/fts2j.test

  • Committer: Bazaar Package Importer
  • Author(s): Stefan Lesicnik
  • Date: 2009-04-30 19:15:25 UTC
  • Revision ID: james.westby@ubuntu.com-20090430191525-0790sb5wzg8ou0xb
Tags: upstream-0.5.21.0~svn3334+dfsg
ImportĀ upstreamĀ versionĀ 0.5.21.0~svn3334+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# 2007 February 6
 
2
#
 
3
# The author disclaims copyright to this source code.
 
4
#
 
5
#*************************************************************************
 
6
# This file implements regression tests for SQLite library.  This
 
7
# tests creating fts2 tables in an attached database.
 
8
#
 
9
# $Id: fts2j.test,v 1.1 2007/02/07 01:01:18 shess Exp $
 
10
#
 
11
 
 
12
set testdir [file dirname $argv0]
 
13
source $testdir/tester.tcl
 
14
 
 
15
# If SQLITE_ENABLE_FTS2 is defined, omit this file.
 
16
ifcapable !fts2 {
 
17
  finish_test
 
18
  return
 
19
}
 
20
 
 
21
# Clean up anything left over from a previous pass.
 
22
file delete -force test2.db
 
23
file delete -force test2.db-journal
 
24
sqlite3 db2 test2.db
 
25
 
 
26
db eval {
 
27
  CREATE VIRTUAL TABLE t3 USING fts2(content);
 
28
  INSERT INTO t3 (rowid, content) VALUES(1, "hello world");
 
29
}
 
30
 
 
31
db2 eval {
 
32
  CREATE VIRTUAL TABLE t1 USING fts2(content);
 
33
  INSERT INTO t1 (rowid, content) VALUES(1, "hello world");
 
34
  INSERT INTO t1 (rowid, content) VALUES(2, "hello there");
 
35
  INSERT INTO t1 (rowid, content) VALUES(3, "cruel world");
 
36
}
 
37
 
 
38
# This has always worked because the t1_* tables used by fts2 will be
 
39
# the defaults.
 
40
do_test fts2j-1.1 {
 
41
  execsql {
 
42
    ATTACH DATABASE 'test2.db' AS two;
 
43
    SELECT rowid FROM t1 WHERE t1 MATCH 'hello';
 
44
    DETACH DATABASE two;
 
45
  }
 
46
} {1 2}
 
47
# Make certain we're detached if there was an error.
 
48
catch {db eval {DETACH DATABASE two}}
 
49
 
 
50
# In older code, this appears to work fine, but the t2_* tables used
 
51
# by fts2 will be created in database 'main' instead of database
 
52
# 'two'.  It appears to work fine because the tables end up being the
 
53
# defaults, but obviously is badly broken if you hope to use things
 
54
# other than in the exact same ATTACH setup.
 
55
do_test fts2j-1.2 {
 
56
  execsql {
 
57
    ATTACH DATABASE 'test2.db' AS two;
 
58
    CREATE VIRTUAL TABLE two.t2 USING fts2(content);
 
59
    INSERT INTO t2 (rowid, content) VALUES(1, "hello world");
 
60
    INSERT INTO t2 (rowid, content) VALUES(2, "hello there");
 
61
    INSERT INTO t2 (rowid, content) VALUES(3, "cruel world");
 
62
    SELECT rowid FROM t2 WHERE t2 MATCH 'hello';
 
63
    DETACH DATABASE two;
 
64
  }
 
65
} {1 2}
 
66
catch {db eval {DETACH DATABASE two}}
 
67
 
 
68
# In older code, this broke because the fts2 code attempted to create
 
69
# t3_* tables in database 'main', but they already existed.  Normally
 
70
# this wouldn't happen without t3 itself existing, in which case the
 
71
# fts2 code would never be called in the first place.
 
72
do_test fts2j-1.3 {
 
73
  execsql {
 
74
    ATTACH DATABASE 'test2.db' AS two;
 
75
 
 
76
    CREATE VIRTUAL TABLE two.t3 USING fts2(content);
 
77
    INSERT INTO two.t3 (rowid, content) VALUES(2, "hello there");
 
78
    INSERT INTO two.t3 (rowid, content) VALUES(3, "cruel world");
 
79
    SELECT rowid FROM two.t3 WHERE t3 MATCH 'hello';
 
80
 
 
81
    DETACH DATABASE two;
 
82
  } db2
 
83
} {2}
 
84
catch {db eval {DETACH DATABASE two}}
 
85
 
 
86
catch {db2 close}
 
87
file delete -force test2.db
 
88
 
 
89
finish_test