| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| set testdir [file dirname $argv0] |
| source $testdir/tester.tcl |
| |
| ifcapable !like_match_blobs { |
| finish_test |
| return |
| } |
| |
| do_execsql_test like3-1.1 { |
| PRAGMA encoding=UTF8; |
| CREATE TABLE t1(a,b TEXT COLLATE nocase); |
| INSERT INTO t1(a,b) |
| VALUES(1,'abc'), |
| (2,'ABX'), |
| (3,'BCD'), |
| (4,x'616263'), |
| (5,x'414258'), |
| (6,x'424344'); |
| CREATE INDEX t1ba ON t1(b,a); |
| |
| SELECT a, b FROM t1 WHERE b LIKE 'aB%' ORDER BY +a; |
| } {1 abc 2 ABX 4 abc 5 ABX} |
| do_execsql_test like3-1.2 { |
| SELECT a, b FROM t1 WHERE +b LIKE 'aB%' ORDER BY +a; |
| } {1 abc 2 ABX 4 abc 5 ABX} |
| |
| do_execsql_test like3-2.0 { |
| CREATE TABLE t2(a, b TEXT); |
| INSERT INTO t2 SELECT a, b FROM t1; |
| CREATE INDEX t2ba ON t2(b,a); |
| SELECT a, b FROM t2 WHERE b GLOB 'ab*' ORDER BY +a; |
| } {1 abc 4 abc} |
| do_execsql_test like3-2.1 { |
| SELECT a, b FROM t2 WHERE +b GLOB 'ab*' ORDER BY +a; |
| } {1 abc 4 abc} |
| do_execsql_test like3-2.2 { |
| SELECT a, b FROM t2 WHERE b>=x'6162' AND b GLOB 'ab*' |
| } {4 abc} |
| do_execsql_test like3-2.3 { |
| SELECT a, b FROM t2 WHERE +b>=x'6162' AND +b GLOB 'ab*' |
| } {4 abc} |
| do_execsql_test like3-2.4 { |
| SELECT a, b FROM t2 WHERE b GLOB 'ab*' AND b>=x'6162' |
| } {4 abc} |
| do_execsql_test like3-2.5 { |
| SELECT a, b FROM t2 WHERE +b GLOB 'ab*' AND +b>=x'6162' |
| } {4 abc} |
| |
| do_execsql_test like3-3.0 { |
| CREATE TABLE t3(x TEXT PRIMARY KEY COLLATE nocase); |
| INSERT INTO t3(x) VALUES('aaa'),('abc'),('abd'),('abe'),('acz'); |
| INSERT INTO t3(x) SELECT CAST(x AS blob) FROM t3; |
| SELECT quote(x) FROM t3 WHERE x LIKE 'ab%' ORDER BY x; |
| } {'abc' 'abd' 'abe' X'616263' X'616264' X'616265'} |
| do_execsql_test like3-3.1 { |
| SELECT quote(x) FROM t3 WHERE x LIKE 'ab%' ORDER BY x DESC; |
| } {X'616265' X'616264' X'616263' 'abe' 'abd' 'abc'} |
| do_execsql_test like3-3.1ck { |
| SELECT quote(x) FROM t3 WHERE x LIKE 'ab%' ORDER BY +x DESC; |
| } {X'616265' X'616264' X'616263' 'abe' 'abd' 'abc'} |
| do_execsql_test like3-3.2 { |
| SELECT quote(x) FROM t3 WHERE x LIKE 'ab%' ORDER BY x ASC; |
| } {'abc' 'abd' 'abe' X'616263' X'616264' X'616265'} |
| do_execsql_test like3-3.2ck { |
| SELECT quote(x) FROM t3 WHERE x LIKE 'ab%' ORDER BY +x ASC; |
| } {'abc' 'abd' 'abe' X'616263' X'616264' X'616265'} |
| |
| do_execsql_test like3-4.0 { |
| CREATE TABLE t4(x TEXT COLLATE nocase); |
| CREATE INDEX t4x ON t4(x DESC); |
| INSERT INTO t4(x) SELECT x FROM t3; |
| SELECT quote(x) FROM t4 WHERE x LIKE 'ab%' ORDER BY x; |
| } {'abc' 'abd' 'abe' X'616263' X'616264' X'616265'} |
| do_execsql_test like3-4.1 { |
| SELECT quote(x) FROM t4 WHERE x LIKE 'ab%' ORDER BY x DESC; |
| } {X'616265' X'616264' X'616263' 'abe' 'abd' 'abc'} |
| do_execsql_test like3-4.1ck { |
| SELECT quote(x) FROM t4 WHERE x LIKE 'ab%' ORDER BY +x DESC; |
| } {X'616265' X'616264' X'616263' 'abe' 'abd' 'abc'} |
| do_execsql_test like3-4.2 { |
| SELECT quote(x) FROM t4 WHERE x LIKE 'ab%' ORDER BY x ASC; |
| } {'abc' 'abd' 'abe' X'616263' X'616264' X'616265'} |
| do_execsql_test like3-4.2ck { |
| SELECT quote(x) FROM t4 WHERE x LIKE 'ab%' ORDER BY +x ASC; |
| } {'abc' 'abd' 'abe' X'616263' X'616264' X'616265'} |
| |
| |
| |
| |
| |
| do_execsql_test like3-5.100 { |
| CREATE TABLE t5a(x INT UNIQUE COLLATE nocase); |
| INSERT INTO t5a(x) VALUES('/abc'),(123),(-234); |
| SELECT x FROM t5a WHERE x LIKE '/%'; |
| } {/abc} |
| do_eqp_test like3-5.101 { |
| SELECT x FROM t5a WHERE x LIKE '/%'; |
| } { |
| QUERY PLAN |
| `--SCAN TABLE t5a |
| } |
| do_execsql_test like3-5.110 { |
| SELECT x FROM t5a WHERE x LIKE '/a%'; |
| } {/abc} |
| ifcapable !icu { |
| do_eqp_test like3-5.111 { |
| SELECT x FROM t5a WHERE x LIKE '/a%'; |
| } { |
| QUERY PLAN |
| `--SEARCH TABLE t5a USING COVERING INDEX sqlite_autoindex_t5a_1 (x>? AND x<?) |
| } |
| } |
| do_execsql_test like3-5.120 { |
| SELECT x FROM t5a WHERE x LIKE '^12%' ESCAPE '^'; |
| } {123} |
| do_eqp_test like3-5.121 { |
| SELECT x FROM t5a WHERE x LIKE '^12%' ESCAPE '^'; |
| } { |
| QUERY PLAN |
| `--SCAN TABLE t5a |
| } |
| do_execsql_test like3-5.122 { |
| SELECT x FROM t5a WHERE x LIKE '^-2%' ESCAPE '^'; |
| } {-234} |
| do_eqp_test like3-5.123 { |
| SELECT x FROM t5a WHERE x LIKE '^12%' ESCAPE '^'; |
| } { |
| QUERY PLAN |
| `--SCAN TABLE t5a |
| } |
| |
| do_execsql_test like3-5.200 { |
| CREATE TABLE t5b(x INT UNIQUE COLLATE binary); |
| INSERT INTO t5b(x) VALUES('/abc'),(123),(-234); |
| SELECT x FROM t5b WHERE x GLOB '/*'; |
| } {/abc} |
| do_eqp_test like3-5.201 { |
| SELECT x FROM t5b WHERE x GLOB '/*'; |
| } { |
| QUERY PLAN |
| `--SCAN TABLE t5b |
| } |
| do_execsql_test like3-5.210 { |
| SELECT x FROM t5b WHERE x GLOB '/a*'; |
| } {/abc} |
| do_eqp_test like3-5.211 { |
| SELECT x FROM t5b WHERE x GLOB '/a*'; |
| } { |
| QUERY PLAN |
| `--SEARCH TABLE t5b USING COVERING INDEX sqlite_autoindex_t5b_1 (x>? AND x<?) |
| } |
| |
| finish_test |