135 lines
4.3 KiB
Plaintext
135 lines
4.3 KiB
Plaintext
# 2009 December 20
|
|
#
|
|
# 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 contains tests of fts3 queries that have been useful during
|
|
# the development process as well as some that have been useful in tracking
|
|
# down bugs. They are not focused on any particular functionality.
|
|
#
|
|
|
|
set testdir [file dirname $argv0]
|
|
source $testdir/tester.tcl
|
|
|
|
# If this build does not include FTS3, skip the tests in this file.
|
|
#
|
|
ifcapable !fts3 { finish_test ; return }
|
|
source $testdir/malloc_common.tcl
|
|
source $testdir/fts3_common.tcl
|
|
set DO_MALLOC_TEST 0
|
|
|
|
do_test fts3query-1.1 {
|
|
execsql {
|
|
CREATE VIRTUAL TABLE t1 USING fts3(x);
|
|
BEGIN;
|
|
INSERT INTO t1 VALUES('The source code for SQLite is in the public');
|
|
}
|
|
} {}
|
|
|
|
do_select_test fts3query-1.2 {
|
|
SELECT * FROM t1;
|
|
} {{The source code for SQLite is in the public}}
|
|
do_select_test fts3query-1.3 {
|
|
SELECT * FROM t1 WHERE t1 MATCH 'sqlite'
|
|
} {{The source code for SQLite is in the public}}
|
|
|
|
do_test fts3query-1.4 { execsql {COMMIT} } {}
|
|
|
|
do_select_test fts3query-1.5 {
|
|
SELECT * FROM t1;
|
|
} {{The source code for SQLite is in the public}}
|
|
do_select_test fts3query-1.6 {
|
|
SELECT * FROM t1 WHERE t1 MATCH 'sqlite'
|
|
} {{The source code for SQLite is in the public}}
|
|
|
|
|
|
set sqlite_fts3_enable_parentheses 1
|
|
do_test fts3query-2.1 {
|
|
execsql {
|
|
CREATE VIRTUAL TABLE zoink USING fts3;
|
|
INSERT INTO zoink VALUES('The apple falls far from the tree');
|
|
}
|
|
} {}
|
|
do_test fts3query-2.2 {
|
|
execsql {
|
|
SELECT docid FROM zoink WHERE zoink MATCH '(apple oranges) AND apple'
|
|
}
|
|
} {}
|
|
do_test fts3query-2.3 {
|
|
execsql {
|
|
SELECT docid FROM zoink WHERE zoink MATCH 'apple AND (oranges apple)'
|
|
}
|
|
} {}
|
|
set sqlite_fts3_enable_parentheses 0
|
|
|
|
do_test fts3query-3.1 {
|
|
execsql {
|
|
CREATE VIRTUAL TABLE foobar using FTS3(description, tokenize porter);
|
|
INSERT INTO foobar (description) values ('
|
|
Filed under: Emerging Technologies, EV/Plug-in, Hybrid, Chevrolet, GM,
|
|
ZENN 2011 Chevy Volt - Click above for high-res image gallery There are
|
|
16 days left in the month of December. Besides being time for most
|
|
Americans to kick their Christmas shopping sessions into high gear and
|
|
start planning their resolutions for 2010, it also means that there''s
|
|
precious little time for EEStor to "deliver functional technology" to
|
|
Zenn Motors as promised. Still, the promises held out by the secretive
|
|
company are too great for us to forget about entirely. We''d love for
|
|
EEStor''s claims to be independently verified and proven accurate, as
|
|
would just about anyone else looking to break free of petroleum in fav
|
|
');
|
|
}
|
|
} {}
|
|
|
|
do_test fts3query-3.2 {
|
|
execsql { SELECT docid FROM foobar WHERE description MATCH '"high sp d"' }
|
|
} {}
|
|
|
|
proc mit {blob} {
|
|
set scan(littleEndian) i*
|
|
set scan(bigEndian) I*
|
|
binary scan $blob $scan($::tcl_platform(byteOrder)) r
|
|
return $r
|
|
}
|
|
db func mit mit
|
|
|
|
do_test fts3query-3.3 {
|
|
execsql { SELECT mit(matchinfo(foobar)) FROM foobar WHERE foobar MATCH 'the' }
|
|
} {{1 1 3 3 1}}
|
|
|
|
# The following tests check that ticket 775b39dd3c has been fixed.
|
|
#
|
|
proc eqp {sql} {
|
|
uplevel [list execsql "EXPLAIN QUERY PLAN $sql"]
|
|
}
|
|
do_test fts3query-4.1 {
|
|
execsql {
|
|
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1(number INTEGER PRIMARY KEY, date);
|
|
CREATE INDEX i1 ON t1(date);
|
|
CREATE VIRTUAL TABLE ft USING fts3(title);
|
|
CREATE TABLE bt(title);
|
|
}
|
|
} {}
|
|
do_test fts3query-4.2 {
|
|
eqp "SELECT t1.number FROM t1, ft WHERE t1.number=ft.rowid ORDER BY t1.date"
|
|
} {0 0 {TABLE t1 WITH INDEX i1 ORDER BY} 1 1 {TABLE ft VIRTUAL TABLE INDEX 1:}}
|
|
do_test fts3query-4.3 {
|
|
eqp "SELECT t1.number FROM ft, t1 WHERE t1.number=ft.rowid ORDER BY t1.date"
|
|
} {0 1 {TABLE t1 WITH INDEX i1 ORDER BY} 1 0 {TABLE ft VIRTUAL TABLE INDEX 1:}}
|
|
do_test fts3query-4.4 {
|
|
eqp "SELECT t1.number FROM t1, bt WHERE t1.number=bt.rowid ORDER BY t1.date"
|
|
} {0 0 {TABLE t1 WITH INDEX i1 ORDER BY} 1 1 {TABLE bt USING PRIMARY KEY}}
|
|
do_test fts3query-4.5 {
|
|
eqp "SELECT t1.number FROM bt, t1 WHERE t1.number=bt.rowid ORDER BY t1.date"
|
|
} {0 1 {TABLE t1 WITH INDEX i1 ORDER BY} 1 0 {TABLE bt USING PRIMARY KEY}}
|
|
|
|
|
|
finish_test
|
|
|