1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-15 11:41:13 +03:00

Add experimental support for LIKE, GLOB and REGEXP to the virtual table interface.

FossilOrigin-Name: 277a5b4027d4c2caba8143228a4f7d6df899dbb4
This commit is contained in:
dan
2015-11-23 21:09:54 +00:00
parent 8836cbbcb4
commit 07bdba86d5
9 changed files with 110 additions and 28 deletions

View File

@@ -1306,10 +1306,10 @@ foreach {tn sql res filter} {
{xFilter {SELECT rowid, * FROM 't6' WHERE b >= ? AND b < ?} J K}
1.3 "SELECT a FROM e6 WHERE b LIKE 'J%'" {3 4}
{xFilter {SELECT rowid, * FROM 't6'}}
{xFilter {SELECT rowid, * FROM 't6' WHERE b like ?} J%}
1.4 "SELECT a FROM e6 WHERE b LIKE 'j%'" {3 4}
{xFilter {SELECT rowid, * FROM 't6'}}
{xFilter {SELECT rowid, * FROM 't6' WHERE b like ?} j%}
} {
set echo_module {}
do_execsql_test 18.$tn.1 $sql $res
@@ -1319,10 +1319,10 @@ foreach {tn sql res filter} {
do_execsql_test 18.2.0 { PRAGMA case_sensitive_like = ON }
foreach {tn sql res filter} {
2.1 "SELECT a FROM e6 WHERE b LIKE 'J%'" {3 4}
{xFilter {SELECT rowid, * FROM 't6'}}
{xFilter {SELECT rowid, * FROM 't6' WHERE b like ?} J%}
2.2 "SELECT a FROM e6 WHERE b LIKE 'j%'" {}
{xFilter {SELECT rowid, * FROM 't6'}}
{xFilter {SELECT rowid, * FROM 't6' WHERE b like ?} j%}
} {
set echo_module {}
do_execsql_test 18.$tn.1 $sql $res

49
test/vtabH.test Normal file
View File

@@ -0,0 +1,49 @@
# 2015 Nov 24
#
# 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 implements regression tests for SQLite library.
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix vtabH
ifcapable !vtab {
finish_test
return
}
register_echo_module db
do_execsql_test 1.0 {
CREATE TABLE t6(a, b TEXT);
CREATE INDEX i6 ON t6(b, a);
CREATE VIRTUAL TABLE e6 USING echo(t6);
}
foreach {tn sql expect} {
1 "SELECT * FROM e6 WHERE b LIKE 'abc'" {
xBestIndex {SELECT rowid, * FROM 't6' WHERE b like ?}
xFilter {SELECT rowid, * FROM 't6' WHERE b like ?} abc
}
2 "SELECT * FROM e6 WHERE b GLOB 'abc'" {
xBestIndex {SELECT rowid, * FROM 't6' WHERE b glob ?}
xFilter {SELECT rowid, * FROM 't6' WHERE b glob ?} abc
}
} {
do_test 1.$tn {
set echo_module {}
execsql $sql
set ::echo_module
} [list {*}$expect]
}
finish_test