19b5adfa2Sdrh# 29b5adfa2Sdrh# 2008 January 20 39b5adfa2Sdrh# 49b5adfa2Sdrh# The author disclaims copyright to this source code. In place of 59b5adfa2Sdrh# a legal notice, here is a blessing: 69b5adfa2Sdrh# 79b5adfa2Sdrh# May you do good and not evil. 89b5adfa2Sdrh# May you find forgiveness for yourself and forgive others. 99b5adfa2Sdrh# May you share freely, never taking more than you give. 109b5adfa2Sdrh# 119b5adfa2Sdrh#*********************************************************************** 129b5adfa2Sdrh# This file implements regression tests for SQLite library. The 139b5adfa2Sdrh# focus of this script is the built-in RTRIM collating 149b5adfa2Sdrh# API. 159b5adfa2Sdrh# 16*5f3a367bSdrh# $Id: collateA.test,v 1.3 2008/04/15 04:02:41 drh Exp $ 179b5adfa2Sdrh 189b5adfa2Sdrhset testdir [file dirname $argv0] 199b5adfa2Sdrhsource $testdir/tester.tcl 209b5adfa2Sdrh 219b5adfa2Sdrhdo_test collateA-1.1 { 229b5adfa2Sdrh execsql { 239b5adfa2Sdrh CREATE TABLE t1( 249b5adfa2Sdrh a INTEGER PRIMARY KEY, 259b5adfa2Sdrh b TEXT COLLATE BINARY, 269b5adfa2Sdrh c TEXT COLLATE RTRIM 279b5adfa2Sdrh ); 28*5f3a367bSdrh INSERT INTO t1 VALUES(1, 'abcde','abcde'); 299b5adfa2Sdrh INSERT INTO t1 VALUES(2, 'xyzzy ','xyzzy '); 309b5adfa2Sdrh INSERT INTO t1 VALUES(3, 'xyzzy ','xyzzy '); 319b5adfa2Sdrh INSERT INTO t1 VALUES(4, 'xyzzy ','xyzzy '); 32*5f3a367bSdrh INSERT INTO t1 VALUES(5, ' ', ' '); 33*5f3a367bSdrh INSERT INTO t1 VALUES(6, '', ''); 349b5adfa2Sdrh SELECT count(*) FROM t1; 359b5adfa2Sdrh } 36*5f3a367bSdrh} {6} 379b5adfa2Sdrhdo_test collateA-1.2 { 38*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE b='abcde '} 399b5adfa2Sdrh} {} 409b5adfa2Sdrhdo_test collateA-1.3 { 41*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abcde '} 429b5adfa2Sdrh} {1} 439b5adfa2Sdrhdo_test collateA-1.4 { 449b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE b='xyzzy'} 459b5adfa2Sdrh} {} 469b5adfa2Sdrhdo_test collateA-1.5 { 479b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy'} 489b5adfa2Sdrh} {2 3 4} 499b5adfa2Sdrhdo_test collateA-1.6 { 509b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 519b5adfa2Sdrh} {2 3 4} 529b5adfa2Sdrhdo_test collateA-1.7 { 539b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 549b5adfa2Sdrh} {2 3 4} 559b5adfa2Sdrhdo_test collateA-1.8 { 569b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 579b5adfa2Sdrh} {2 3 4} 589b5adfa2Sdrhdo_test collateA-1.9 { 599b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 609b5adfa2Sdrh} {2 3 4} 619b5adfa2Sdrhdo_test collateA-1.10 { 629b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 639b5adfa2Sdrh} {2 3 4} 649b5adfa2Sdrhdo_test collateA-1.11 { 659b5adfa2Sdrh execsql {SELECT 'abc123'='abc123 ' COLLATE RTRIM;} 669b5adfa2Sdrh} {1} 679b5adfa2Sdrhdo_test collateA-1.12 { 689b5adfa2Sdrh execsql {SELECT 'abc123 '='abc123' COLLATE RTRIM;} 699b5adfa2Sdrh} {1} 701df81a8bSdrhdo_test collateA-1.13 { 711df81a8bSdrh execsql {SELECT ' '='' COLLATE RTRIM, ' '='' COLLATE BINARY, ' '=''} 721df81a8bSdrh} {1 0 0} 731df81a8bSdrhdo_test collateA-1.14 { 741df81a8bSdrh execsql {SELECT ''=' ' COLLATE RTRIM, ''=' ' COLLATE BINARY, ''=' '} 751df81a8bSdrh} {1 0 0} 761df81a8bSdrhdo_test collateA-1.15 { 771df81a8bSdrh execsql {SELECT ' '=' ' COLLATE RTRIM, ' '=' '} 781df81a8bSdrh} {1 0} 791df81a8bSdrhdo_test collateA-1.16 { 801df81a8bSdrh execsql {SELECT ''<>' ' COLLATE RTRIM, ''<>' ' COLLATE BINARY, ''<>' '} 811df81a8bSdrh} {0 1 1} 82*5f3a367bSdrhdo_test collateA-1.17 { 83*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='xyzz'} 84*5f3a367bSdrh} {} 85*5f3a367bSdrhdo_test collateA-1.18 { 86*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='xyzzyy '} 87*5f3a367bSdrh} {} 88*5f3a367bSdrhdo_test collateA-1.19 { 89*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='xyzz '} 90*5f3a367bSdrh} {} 91*5f3a367bSdrhdo_test collateA-1.20 { 92*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abcd '} 93*5f3a367bSdrh} {} 94*5f3a367bSdrhdo_test collateA-1.21 { 95*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abcd'} 96*5f3a367bSdrh} {} 97*5f3a367bSdrhdo_test collateA-1.22 { 98*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abc'} 99*5f3a367bSdrh} {} 100*5f3a367bSdrhdo_test collateA-1.23 { 101*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abcdef '} 102*5f3a367bSdrh} {} 103*5f3a367bSdrhdo_test collateA-1.24 { 104*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c=''} 105*5f3a367bSdrh} {5 6} 106*5f3a367bSdrhdo_test collateA-1.25 { 107*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c=' '} 108*5f3a367bSdrh} {5 6} 109*5f3a367bSdrhdo_test collateA-1.26 { 110*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c=' '} 111*5f3a367bSdrh} {5 6} 1121df81a8bSdrh 1139b5adfa2Sdrh 1149b5adfa2Sdrhdo_test collateA-2.1 { 1159b5adfa2Sdrh execsql { 1169b5adfa2Sdrh CREATE INDEX i1b ON t1(b); 1179b5adfa2Sdrh CREATE INDEX i1c ON t1(c); 1189b5adfa2Sdrh PRAGMA integrity_check; 1199b5adfa2Sdrh } 1209b5adfa2Sdrh} {ok} 1219b5adfa2Sdrhdo_test collateA-2.2 { 122*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE b='abcde '} 1239b5adfa2Sdrh} {} 1249b5adfa2Sdrhdo_test collateA-2.3 { 125*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abcde '} 1269b5adfa2Sdrh} {1} 1279b5adfa2Sdrhdo_test collateA-2.4 { 1289b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE b='xyzzy'} 1299b5adfa2Sdrh} {} 1309b5adfa2Sdrhdo_test collateA-2.5 { 1319b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy'} 1329b5adfa2Sdrh} {2 3 4} 1339b5adfa2Sdrhdo_test collateA-2.6 { 1349b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 1359b5adfa2Sdrh} {2 3 4} 1369b5adfa2Sdrhdo_test collateA-2.7 { 1379b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 1389b5adfa2Sdrh} {2 3 4} 1399b5adfa2Sdrhdo_test collateA-2.8 { 1409b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 1419b5adfa2Sdrh} {2 3 4} 1429b5adfa2Sdrhdo_test collateA-2.9 { 1439b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 1449b5adfa2Sdrh} {2 3 4} 1459b5adfa2Sdrhdo_test collateA-2.10 { 1469b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 1479b5adfa2Sdrh} {2 3 4} 148*5f3a367bSdrhdo_test collateA-2.17 { 149*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='xyzz'} 150*5f3a367bSdrh} {} 151*5f3a367bSdrhdo_test collateA-2.18 { 152*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='xyzzyy '} 153*5f3a367bSdrh} {} 154*5f3a367bSdrhdo_test collateA-2.19 { 155*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='xyzz '} 156*5f3a367bSdrh} {} 157*5f3a367bSdrhdo_test collateA-2.20 { 158*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abcd '} 159*5f3a367bSdrh} {} 160*5f3a367bSdrhdo_test collateA-2.21 { 161*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abcd'} 162*5f3a367bSdrh} {} 163*5f3a367bSdrhdo_test collateA-2.22 { 164*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abc'} 165*5f3a367bSdrh} {} 166*5f3a367bSdrhdo_test collateA-2.23 { 167*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abcdef '} 168*5f3a367bSdrh} {} 169*5f3a367bSdrhdo_test collateA-2.24 { 170*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c=''} 171*5f3a367bSdrh} {5 6} 172*5f3a367bSdrhdo_test collateA-2.25 { 173*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c=' '} 174*5f3a367bSdrh} {5 6} 175*5f3a367bSdrhdo_test collateA-2.26 { 176*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c=' '} 177*5f3a367bSdrh} {5 6} 178*5f3a367bSdrh 1799b5adfa2Sdrh 1809b5adfa2Sdrhdo_test collateA-3.1 { 1819b5adfa2Sdrh db close 1829b5adfa2Sdrh sqlite3 db test.db 1839b5adfa2Sdrh execsql { 1849b5adfa2Sdrh REINDEX; 1859b5adfa2Sdrh PRAGMA integrity_check; 1869b5adfa2Sdrh } 1879b5adfa2Sdrh} {ok} 1889b5adfa2Sdrhdo_test collateA-3.2 { 189*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE b='abcde '} 1909b5adfa2Sdrh} {} 1919b5adfa2Sdrhdo_test collateA-3.3 { 192*5f3a367bSdrh execsql {SELECT a FROM t1 WHERE c='abcde '} 1939b5adfa2Sdrh} {1} 1949b5adfa2Sdrhdo_test collateA-3.4 { 1959b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE b='xyzzy'} 1969b5adfa2Sdrh} {} 1979b5adfa2Sdrhdo_test collateA-3.5 { 1989b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy'} 1999b5adfa2Sdrh} {2 3 4} 2009b5adfa2Sdrhdo_test collateA-3.6 { 2019b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 2029b5adfa2Sdrh} {2 3 4} 2039b5adfa2Sdrhdo_test collateA-3.7 { 2049b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 2059b5adfa2Sdrh} {2 3 4} 2069b5adfa2Sdrhdo_test collateA-3.8 { 2079b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 2089b5adfa2Sdrh} {2 3 4} 2099b5adfa2Sdrhdo_test collateA-3.9 { 2109b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 2119b5adfa2Sdrh} {2 3 4} 2129b5adfa2Sdrhdo_test collateA-3.10 { 2139b5adfa2Sdrh execsql {SELECT a FROM t1 WHERE c='xyzzy '} 2149b5adfa2Sdrh} {2 3 4} 2159b5adfa2Sdrh 2169b5adfa2Sdrh 2179b5adfa2Sdrhfinish_test 218