OLD | NEW |
1 # 2010 February 02 | 1 # 2010 February 02 |
2 # | 2 # |
3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
5 # | 5 # |
6 # May you do good and not evil. | 6 # May you do good and not evil. |
7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
9 # | 9 # |
10 #************************************************************************* | 10 #************************************************************************* |
11 # This file implements regression tests for SQLite library. The | 11 # This file implements a TCL function that fills an FTS table with |
12 # focus of this script is testing the FTS4 module. | 12 # lots of content useful for testing. This routine is broken out into |
13 # | 13 # a separate file to facilitate its use by multiple test scripts. |
14 # | 14 # |
15 | 15 |
16 set testdir [file dirname $argv0] | 16 # The fts_kjv_genesis routine is already loaded. This script is a no-op. |
17 source $testdir/tester.tcl | 17 if {[lsearch [info procs] fts_kjv_genesis]>=0} return |
18 | 18 |
19 # If SQLITE_ENABLE_FTS3 is defined, omit this file. | 19 # This procedure fills an existing FTS3/FTS4 table with many entries. |
20 ifcapable !fts3 { | 20 # The table needs to have a single column (other than docid) named "words". |
21 finish_test | 21 # |
22 return | 22 proc fts_kjv_genesis {} { |
23 } | |
24 if {[db eval {SELECT sqlite_compileoption_used('ENABLE_FTS4')}]==0} { | |
25 finish_test | |
26 return | |
27 } | |
28 | |
29 do_test fts4aa-1.0 { | |
30 db eval { | 23 db eval { |
31 CREATE VIRTUAL TABLE t1 USING fts4(words, tokenize porter); | |
32 BEGIN TRANSACTION; | 24 BEGIN TRANSACTION; |
33 INSERT INTO t1(docid,words) VALUES(1001001,'In the beginning God created the hea
ven and the earth.'); | 25 INSERT INTO t1(docid,words) VALUES(1001001,'In the beginning God created the hea
ven and the earth.'); |
34 INSERT INTO t1(docid,words) VALUES(1001002,'And the earth was without form, and
void; and darkness was upon the face of the deep. And the Spirit of God moved up
on the face of the waters.'); | 26 INSERT INTO t1(docid,words) VALUES(1001002,'And the earth was without form, and
void; and darkness was upon the face of the deep. And the Spirit of God moved up
on the face of the waters.'); |
35 INSERT INTO t1(docid,words) VALUES(1001003,'And God said, Let there be light: an
d there was light.'); | 27 INSERT INTO t1(docid,words) VALUES(1001003,'And God said, Let there be light: an
d there was light.'); |
36 INSERT INTO t1(docid,words) VALUES(1001004,'And God saw the light, that it was g
ood: and God divided the light from the darkness.'); | 28 INSERT INTO t1(docid,words) VALUES(1001004,'And God saw the light, that it was g
ood: and God divided the light from the darkness.'); |
37 INSERT INTO t1(docid,words) VALUES(1001005,'And God called the light Day, and th
e darkness he called Night. And the evening and the morning were the first day.'
); | 29 INSERT INTO t1(docid,words) VALUES(1001005,'And God called the light Day, and th
e darkness he called Night. And the evening and the morning were the first day.'
); |
38 INSERT INTO t1(docid,words) VALUES(1001006,'And God said, Let there be a firmame
nt in the midst of the waters, and let it divide the waters from the waters.'); | 30 INSERT INTO t1(docid,words) VALUES(1001006,'And God said, Let there be a firmame
nt in the midst of the waters, and let it divide the waters from the waters.'); |
39 INSERT INTO t1(docid,words) VALUES(1001007,'And God made the firmament, and divi
ded the waters which were under the firmament from the waters which were above t
he firmament: and it was so.'); | 31 INSERT INTO t1(docid,words) VALUES(1001007,'And God made the firmament, and divi
ded the waters which were under the firmament from the waters which were above t
he firmament: and it was so.'); |
40 INSERT INTO t1(docid,words) VALUES(1001008,'And God called the firmament Heaven.
And the evening and the morning were the second day.'); | 32 INSERT INTO t1(docid,words) VALUES(1001008,'And God called the firmament Heaven.
And the evening and the morning were the second day.'); |
41 INSERT INTO t1(docid,words) VALUES(1001009,'And God said, Let the waters under t
he heaven be gathered together unto one place, and let the dry land appear: and
it was so.'); | 33 INSERT INTO t1(docid,words) VALUES(1001009,'And God said, Let the waters under t
he heaven be gathered together unto one place, and let the dry land appear: and
it was so.'); |
(...skipping 1516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1558 INSERT INTO t1(docid,words) VALUES(1050019,'And Joseph said unto them, Fear not:
for am I in the place of God?'); | 1550 INSERT INTO t1(docid,words) VALUES(1050019,'And Joseph said unto them, Fear not:
for am I in the place of God?'); |
1559 INSERT INTO t1(docid,words) VALUES(1050020,'But as for you, ye thought evil agai
nst me; but God meant it unto good, to bring to pass, as it is this day, to save
much people alive.'); | 1551 INSERT INTO t1(docid,words) VALUES(1050020,'But as for you, ye thought evil agai
nst me; but God meant it unto good, to bring to pass, as it is this day, to save
much people alive.'); |
1560 INSERT INTO t1(docid,words) VALUES(1050021,'Now therefore fear ye not: I will no
urish you, and your little ones. And he comforted them, and spake kindly unto th
em.'); | 1552 INSERT INTO t1(docid,words) VALUES(1050021,'Now therefore fear ye not: I will no
urish you, and your little ones. And he comforted them, and spake kindly unto th
em.'); |
1561 INSERT INTO t1(docid,words) VALUES(1050022,'And Joseph dwelt in Egypt, he, and h
is father''s house: and Joseph lived an hundred and ten years.'); | 1553 INSERT INTO t1(docid,words) VALUES(1050022,'And Joseph dwelt in Egypt, he, and h
is father''s house: and Joseph lived an hundred and ten years.'); |
1562 INSERT INTO t1(docid,words) VALUES(1050023,'And Joseph saw Ephraim''s children o
f the third generation: the children also of Machir the son of Manasseh were bro
ught up upon Joseph''s knees.'); | 1554 INSERT INTO t1(docid,words) VALUES(1050023,'And Joseph saw Ephraim''s children o
f the third generation: the children also of Machir the son of Manasseh were bro
ught up upon Joseph''s knees.'); |
1563 INSERT INTO t1(docid,words) VALUES(1050024,'And Joseph said unto his brethren, I
die: and God will surely visit you, and bring you out of this land unto the lan
d which he sware to Abraham, to Isaac, and to Jacob.'); | 1555 INSERT INTO t1(docid,words) VALUES(1050024,'And Joseph said unto his brethren, I
die: and God will surely visit you, and bring you out of this land unto the lan
d which he sware to Abraham, to Isaac, and to Jacob.'); |
1564 INSERT INTO t1(docid,words) VALUES(1050025,'And Joseph took an oath of the child
ren of Israel, saying, God will surely visit you, and ye shall carry up my bones
from hence.'); | 1556 INSERT INTO t1(docid,words) VALUES(1050025,'And Joseph took an oath of the child
ren of Israel, saying, God will surely visit you, and ye shall carry up my bones
from hence.'); |
1565 INSERT INTO t1(docid,words) VALUES(1050026,'So Joseph died, being an hundred and
ten years old: and they embalmed him, and he was put in a coffin in Egypt.'); | 1557 INSERT INTO t1(docid,words) VALUES(1050026,'So Joseph died, being an hundred and
ten years old: and they embalmed him, and he was put in a coffin in Egypt.'); |
1566 COMMIT; | 1558 COMMIT; |
1567 } | 1559 } |
1568 } {} | |
1569 | |
1570 | |
1571 do_test fts4aa-1.1 { | |
1572 db eval { | |
1573 SELECT docid FROM t1 EXCEPT SELECT docid FROM t1_docsize | |
1574 } | |
1575 } {} | |
1576 do_test fts4aa-1.2 { | |
1577 db eval { | |
1578 SELECT docid FROM t1_docsize EXCEPT SELECT docid FROM t1 | |
1579 } | |
1580 } {} | |
1581 | |
1582 proc mit {blob} { | |
1583 set scan(littleEndian) i* | |
1584 set scan(bigEndian) I* | |
1585 binary scan $blob $scan($::tcl_platform(byteOrder)) r | |
1586 return $r | |
1587 } | 1560 } |
1588 db func mit mit | |
1589 | |
1590 do_test fts4aa-2.1 { | |
1591 db eval { | |
1592 SELECT docid, mit(matchinfo(t1)) FROM t1 WHERE t1 MATCH 'melchizedek'; | |
1593 } | |
1594 } {1014018 {1 1 1 1 1 1533 25 20}} | |
1595 do_test fts4aa-2.2 { | |
1596 db eval { | |
1597 SELECT docid, mit(matchinfo(t1)) FROM t1 | |
1598 WHERE t1 MATCH 'spake hebrew' | |
1599 ORDER BY docid; | |
1600 } | |
1601 } {1039014 {2 1 1 40 40 1 6 6 1533 25 42} 1039017 {2 1 1 40 40 1 6 6 1533 25 26}
} | |
1602 do_test fts4aa-2.3 { | |
1603 db eval { | |
1604 SELECT docid, mit(matchinfo(t1)) FROM t1 | |
1605 WHERE t1 MATCH 'laban overtook jacob' | |
1606 ORDER BY docid; | |
1607 } | |
1608 } {1031025 {3 1 2 54 46 1 3 3 2 181 160 1533 25 24}} | |
1609 | |
1610 do_test fts4aa-9.1 { | |
1611 db eval { | |
1612 DELETE FROM t1 WHERE docid!=1050026; | |
1613 SELECT hex(size) FROM t1_docsize; | |
1614 SELECT hex(value) FROM t1_stat; | |
1615 } | |
1616 } {17 0117} | |
1617 | |
1618 do_test fts4aa-9.2 { | |
1619 db eval { | |
1620 SELECT docid FROM t1 EXCEPT SELECT docid FROM t1_docsize | |
1621 } | |
1622 } {} | |
1623 do_test fts4aa-9.3 { | |
1624 db eval { | |
1625 SELECT docid FROM t1_docsize EXCEPT SELECT docid FROM t1 | |
1626 } | |
1627 } {} | |
1628 do_test fts4aa-9.4 { | |
1629 db eval { | |
1630 SELECT docid, mit(matchinfo(t1)) FROM t1 | |
1631 WHERE t1 MATCH 'joseph died in egypt' | |
1632 ORDER BY docid; | |
1633 } | |
1634 } {1050026 {4 1 1 1 1 1 1 1 2 2 1 1 1 1 1 23 23}} | |
1635 | |
1636 finish_test | |
OLD | NEW |