mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Change the fts5 content= option so that it matches fts5 columns with the underlying table columns by name, not by their position within the CREATE TABLE statement.
FossilOrigin-Name: e38e2bb637844dae8ae5d5f3e23d8369e1b91e45
This commit is contained in:
@ -9,6 +9,7 @@
|
||||
#
|
||||
#***********************************************************************
|
||||
#
|
||||
# This file contains tests for the content= and content_rowid= options.
|
||||
#
|
||||
|
||||
source [file join [file dirname [info script]] fts5_common.tcl]
|
||||
@ -186,5 +187,35 @@ do_catchsql_test 3.8 {
|
||||
INSERT INTO t4(t4) VALUES('delete-all');
|
||||
} {1 {'delete-all' may only be used with a contentless or external content fts5 table}}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# Test an external content table with a more interesting schema.
|
||||
#
|
||||
do_execsql_test 4.1 {
|
||||
CREATE TABLE x2(a, "key col" PRIMARY KEY, b, c) WITHOUT ROWID;
|
||||
INSERT INTO x2 VALUES('a b', 1, 'c d' , 'e f');
|
||||
INSERT INTO x2 VALUES('x y', -40, 'z z' , 'y x');
|
||||
|
||||
CREATE VIRTUAL TABLE t2 USING fts5(a, c, content=x2, content_rowid='key col');
|
||||
INSERT INTO t2(t2) VALUES('rebuild');
|
||||
}
|
||||
|
||||
do_execsql_test 4.2 { SELECT rowid FROM t2 } {-40 1}
|
||||
do_execsql_test 4.3 { SELECT rowid FROM t2 WHERE t2 MATCH 'c'} {}
|
||||
do_execsql_test 4.4 { SELECT rowid FROM t2 WHERE t2 MATCH 'a'} {1}
|
||||
do_execsql_test 4.5 { SELECT rowid FROM t2 WHERE t2 MATCH 'x'} {-40}
|
||||
|
||||
do_execsql_test 4.6 { INSERT INTO t2(t2) VALUES('integrity-check') } {}
|
||||
|
||||
do_execsql_test 4.7 {
|
||||
DELETE FROM x2 WHERE "key col" = 1;
|
||||
INSERT INTO t2(t2, rowid, a, c) VALUES('delete', 1, 'a b', 'e f');
|
||||
INSERT INTO t2(t2) VALUES('integrity-check');
|
||||
}
|
||||
|
||||
do_execsql_test 4.8 { SELECT rowid FROM t2 WHERE t2 MATCH 'b'} {}
|
||||
do_execsql_test 4.9 { SELECT rowid FROM t2 WHERE t2 MATCH 'y'} {-40}
|
||||
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
|
@ -98,5 +98,24 @@ do_faultsim_test 3.1 -faults oom-trans* -prep {
|
||||
faultsim_test_result {0 {}}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# OOM within an 'integrity-check' operation.
|
||||
#
|
||||
reset_db
|
||||
db func rnddoc fts5_rnddoc
|
||||
do_execsql_test 4.0 {
|
||||
CREATE VIRTUAL TABLE zzz USING fts5(z);
|
||||
INSERT INTO zzz(zzz, rank) VALUES('pgsz', 32);
|
||||
WITH ii(i) AS (SELECT 1 UNION SELECT i+1 FROM ii WHERE i<10)
|
||||
INSERT INTO zzz SELECT rnddoc(10) || ' xccc' FROM ii;
|
||||
}
|
||||
|
||||
do_faultsim_test 4.1 -faults oom-trans* -prep {
|
||||
} -body {
|
||||
execsql { INSERT INTO zzz(zzz) VALUES('integrity-check') }
|
||||
} -test {
|
||||
faultsim_test_result {0 {}}
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
Reference in New Issue
Block a user