xref: /sqlite-3.40.0/test/collate2.test (revision ec27077c)
10202b29eSdanielk1977#
2dc1bdc4fSdanielk1977# 2001 September 15
30202b29eSdanielk1977#
4dc1bdc4fSdanielk1977# The author disclaims copyright to this source code.  In place of
5dc1bdc4fSdanielk1977# a legal notice, here is a blessing:
6dc1bdc4fSdanielk1977#
7dc1bdc4fSdanielk1977#    May you do good and not evil.
8dc1bdc4fSdanielk1977#    May you find forgiveness for yourself and forgive others.
9dc1bdc4fSdanielk1977#    May you share freely, never taking more than you give.
10dc1bdc4fSdanielk1977#
11dc1bdc4fSdanielk1977#***********************************************************************
120202b29eSdanielk1977# This file implements regression tests for SQLite library.  The
13dc1bdc4fSdanielk1977# focus of this script is page cache subsystem.
140202b29eSdanielk1977#
157d10d5a6Sdrh# $Id: collate2.test,v 1.6 2008/08/20 16:35:10 drh Exp $
160202b29eSdanielk1977
170202b29eSdanielk1977set testdir [file dirname $argv0]
180202b29eSdanielk1977source $testdir/tester.tcl
190202b29eSdanielk1977
2036e78309Sdanset ::testprefix collate2
2136e78309Sdan
220202b29eSdanielk1977#
230202b29eSdanielk1977# Tests are organised as follows:
240202b29eSdanielk1977#
250202b29eSdanielk1977# collate2-1.* WHERE <expr> expressions (sqliteExprIfTrue).
260202b29eSdanielk1977# collate2-2.* WHERE NOT <expr> expressions (sqliteExprIfFalse).
270202b29eSdanielk1977# collate2-3.* SELECT <expr> expressions (sqliteExprCode).
280202b29eSdanielk1977# collate2-4.* Precedence of collation/data types in binary comparisons
290202b29eSdanielk1977# collate2-5.* JOIN syntax.
300202b29eSdanielk1977#
310202b29eSdanielk1977
320202b29eSdanielk1977# Create a collation type BACKWARDS for use in testing. This collation type
330202b29eSdanielk1977# is similar to the built-in TEXT collation type except the order of
340202b29eSdanielk1977# characters in each string is reversed before the comparison is performed.
350202b29eSdanielk1977db collate BACKWARDS backwards_collate
360202b29eSdanielk1977proc backwards_collate {a b} {
370202b29eSdanielk1977  set ra {};
380202b29eSdanielk1977  set rb {}
390202b29eSdanielk1977  foreach c [split $a {}] { set ra $c$ra }
400202b29eSdanielk1977  foreach c [split $b {}] { set rb $c$rb }
410202b29eSdanielk1977  return [string compare $ra $rb]
420202b29eSdanielk1977}
430202b29eSdanielk1977
440202b29eSdanielk1977# The following values are used in these tests:
450202b29eSdanielk1977# NULL   aa ab ba bb   aA aB bA bB   Aa Ab Ba Bb   AA AB BA BB
460202b29eSdanielk1977#
470202b29eSdanielk1977# The collation orders for each of the tested collation types are:
480202b29eSdanielk1977#
490202b29eSdanielk1977# BINARY:    NULL  AA AB Aa Ab  BA BB Ba Bb  aA aB aa ab  bA bB ba bb
500202b29eSdanielk1977# NOCASE:    NULL  aa aA Aa AA  ab aB Ab AB  ba bA Ba BA  bb bB Bb BB
510202b29eSdanielk1977# BACKWARDS: NULL  AA BA aA bA  AB BB aB bB  Aa Ba aa ba  Ab Bb ab bb
520202b29eSdanielk1977#
530202b29eSdanielk1977# These tests verify that the default collation type for a column is used
540202b29eSdanielk1977# for comparison operators (<, >, <=, >=, =) involving that column and
550202b29eSdanielk1977# an expression that is not a column with a default collation type.
560202b29eSdanielk1977#
570202b29eSdanielk1977# The collation sequences BINARY and NOCASE are built-in, the BACKWARDS
580202b29eSdanielk1977# collation sequence is implemented by the TCL proc backwards_collate
590202b29eSdanielk1977# above.
600202b29eSdanielk1977#
610202b29eSdanielk1977do_test collate2-1.0 {
620202b29eSdanielk1977  execsql {
630202b29eSdanielk1977    CREATE TABLE collate2t1(
640202b29eSdanielk1977      a COLLATE BINARY,
650202b29eSdanielk1977      b COLLATE NOCASE,
660202b29eSdanielk1977      c COLLATE BACKWARDS
670202b29eSdanielk1977    );
680202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( NULL, NULL, NULL );
690202b29eSdanielk1977
700202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'aa', 'aa', 'aa' );
710202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'ab', 'ab', 'ab' );
720202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'ba', 'ba', 'ba' );
730202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'bb', 'bb', 'bb' );
740202b29eSdanielk1977
750202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'aA', 'aA', 'aA' );
760202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'aB', 'aB', 'aB' );
770202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'bA', 'bA', 'bA' );
780202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'bB', 'bB', 'bB' );
790202b29eSdanielk1977
800202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'Aa', 'Aa', 'Aa' );
810202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'Ab', 'Ab', 'Ab' );
820202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'Ba', 'Ba', 'Ba' );
830202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'Bb', 'Bb', 'Bb' );
840202b29eSdanielk1977
850202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'AA', 'AA', 'AA' );
860202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'AB', 'AB', 'AB' );
870202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'BA', 'BA', 'BA' );
880202b29eSdanielk1977    INSERT INTO collate2t1 VALUES( 'BB', 'BB', 'BB' );
890202b29eSdanielk1977  }
900202b29eSdanielk1977  if {[info exists collate_test_use_index]} {
910202b29eSdanielk1977    execsql {
920202b29eSdanielk1977      CREATE INDEX collate2t1_i1 ON collate2t1(a);
930202b29eSdanielk1977      CREATE INDEX collate2t1_i2 ON collate2t1(b);
940202b29eSdanielk1977      CREATE INDEX collate2t1_i3 ON collate2t1(c);
950202b29eSdanielk1977    }
960202b29eSdanielk1977  }
970202b29eSdanielk1977} {}
980202b29eSdanielk1977do_test collate2-1.1 {
990202b29eSdanielk1977  execsql {
1000202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE a > 'aa' ORDER BY 1;
1010202b29eSdanielk1977  }
1020202b29eSdanielk1977} {ab bA bB ba bb}
1038b4c40d8Sdrhdo_test collate2-1.1.1 {
1048b4c40d8Sdrh  execsql {
1058b4c40d8Sdrh    SELECT a FROM collate2t1 WHERE a COLLATE binary > 'aa' ORDER BY 1;
1068b4c40d8Sdrh  }
1078b4c40d8Sdrh} {ab bA bB ba bb}
1088b4c40d8Sdrhdo_test collate2-1.1.2 {
1098b4c40d8Sdrh  execsql {
1108b4c40d8Sdrh    SELECT a FROM collate2t1 WHERE b COLLATE binary > 'aa' ORDER BY 1;
1118b4c40d8Sdrh  }
1128b4c40d8Sdrh} {ab bA bB ba bb}
1138b4c40d8Sdrhdo_test collate2-1.1.3 {
1148b4c40d8Sdrh  execsql {
1158b4c40d8Sdrh    SELECT a FROM collate2t1 WHERE c COLLATE binary > 'aa' ORDER BY 1;
1168b4c40d8Sdrh  }
1178b4c40d8Sdrh} {ab bA bB ba bb}
1180202b29eSdanielk1977do_test collate2-1.2 {
1190202b29eSdanielk1977  execsql {
1200202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE b > 'aa' ORDER BY 1, oid;
1210202b29eSdanielk1977  }
1220202b29eSdanielk1977} {ab aB Ab AB ba bA Ba BA bb bB Bb BB}
1238b4c40d8Sdrhdo_test collate2-1.2.1 {
1248b4c40d8Sdrh  execsql {
1258b4c40d8Sdrh    SELECT b FROM collate2t1 WHERE a COLLATE nocase > 'aa'
1268b4c40d8Sdrh     ORDER BY 1, oid;
1278b4c40d8Sdrh  }
1288b4c40d8Sdrh} {ab aB Ab AB ba bA Ba BA bb bB Bb BB}
1298b4c40d8Sdrhdo_test collate2-1.2.2 {
1308b4c40d8Sdrh  execsql {
1318b4c40d8Sdrh    SELECT b FROM collate2t1 WHERE b COLLATE nocase > 'aa'
1328b4c40d8Sdrh     ORDER BY 1, oid;
1338b4c40d8Sdrh  }
1348b4c40d8Sdrh} {ab aB Ab AB ba bA Ba BA bb bB Bb BB}
1358b4c40d8Sdrhdo_test collate2-1.2.3 {
1368b4c40d8Sdrh  execsql {
1378b4c40d8Sdrh    SELECT b FROM collate2t1 WHERE c COLLATE nocase > 'aa'
1388b4c40d8Sdrh     ORDER BY 1, oid;
1398b4c40d8Sdrh  }
1408b4c40d8Sdrh} {ab aB Ab AB ba bA Ba BA bb bB Bb BB}
1417d10d5a6Sdrhdo_test collate2-1.2.4 {
1427d10d5a6Sdrh  execsql {
1437d10d5a6Sdrh    SELECT b FROM collate2t1 WHERE b > 'aa' ORDER BY +b;
1447d10d5a6Sdrh  }
1457d10d5a6Sdrh} {ab aB Ab AB ba bA Ba BA bb bB Bb BB}
1467d10d5a6Sdrhdo_test collate2-1.2.5 {
1477d10d5a6Sdrh  execsql {
1487d10d5a6Sdrh    SELECT b FROM collate2t1 WHERE a COLLATE nocase > 'aa' ORDER BY +b;
1497d10d5a6Sdrh  }
1507d10d5a6Sdrh} {ab aB Ab AB ba bA Ba BA bb bB Bb BB}
1517d10d5a6Sdrhdo_test collate2-1.2.6 {
1527d10d5a6Sdrh  execsql {
1537d10d5a6Sdrh    SELECT b FROM collate2t1 WHERE b COLLATE nocase > 'aa' ORDER BY +b;
1547d10d5a6Sdrh  }
1557d10d5a6Sdrh} {ab aB Ab AB ba bA Ba BA bb bB Bb BB}
1567d10d5a6Sdrhdo_test collate2-1.2.7 {
1577d10d5a6Sdrh  execsql {
1587d10d5a6Sdrh    SELECT b FROM collate2t1 WHERE c COLLATE nocase > 'aa' ORDER BY +b;
1597d10d5a6Sdrh  }
1607d10d5a6Sdrh} {ab aB Ab AB ba bA Ba BA bb bB Bb BB}
1610202b29eSdanielk1977do_test collate2-1.3 {
1620202b29eSdanielk1977  execsql {
1630202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE c > 'aa' ORDER BY 1;
1640202b29eSdanielk1977  }
1650202b29eSdanielk1977} {ba Ab Bb ab bb}
1668b4c40d8Sdrhdo_test collate2-1.3.1 {
1678b4c40d8Sdrh  execsql {
1688b4c40d8Sdrh    SELECT c FROM collate2t1 WHERE a COLLATE backwards > 'aa'
1698b4c40d8Sdrh    ORDER BY 1;
1708b4c40d8Sdrh  }
1718b4c40d8Sdrh} {ba Ab Bb ab bb}
1728b4c40d8Sdrhdo_test collate2-1.3.2 {
1738b4c40d8Sdrh  execsql {
1748b4c40d8Sdrh    SELECT c FROM collate2t1 WHERE b COLLATE backwards > 'aa'
1758b4c40d8Sdrh    ORDER BY 1;
1768b4c40d8Sdrh  }
1778b4c40d8Sdrh} {ba Ab Bb ab bb}
1788b4c40d8Sdrhdo_test collate2-1.3.3 {
1798b4c40d8Sdrh  execsql {
1808b4c40d8Sdrh    SELECT c FROM collate2t1 WHERE c COLLATE backwards > 'aa'
1818b4c40d8Sdrh    ORDER BY 1;
1828b4c40d8Sdrh  }
1838b4c40d8Sdrh} {ba Ab Bb ab bb}
1840202b29eSdanielk1977do_test collate2-1.4 {
1850202b29eSdanielk1977  execsql {
1860202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE a < 'aa' ORDER BY 1;
1870202b29eSdanielk1977  }
1880202b29eSdanielk1977} {AA AB Aa Ab BA BB Ba Bb aA aB}
1890202b29eSdanielk1977do_test collate2-1.5 {
1900202b29eSdanielk1977  execsql {
1910202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE b < 'aa' ORDER BY 1, oid;
1920202b29eSdanielk1977  }
1930202b29eSdanielk1977} {}
1947d10d5a6Sdrhdo_test collate2-1.5.1 {
1957d10d5a6Sdrh  execsql {
1967d10d5a6Sdrh    SELECT b FROM collate2t1 WHERE b < 'aa' ORDER BY +b;
1977d10d5a6Sdrh  }
1987d10d5a6Sdrh} {}
1990202b29eSdanielk1977do_test collate2-1.6 {
2000202b29eSdanielk1977  execsql {
2010202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE c < 'aa' ORDER BY 1;
2020202b29eSdanielk1977  }
2030202b29eSdanielk1977} {AA BA aA bA AB BB aB bB Aa Ba}
2040202b29eSdanielk1977do_test collate2-1.7 {
2050202b29eSdanielk1977  execsql {
2060202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE a = 'aa';
2070202b29eSdanielk1977  }
2080202b29eSdanielk1977} {aa}
2090202b29eSdanielk1977do_test collate2-1.8 {
2100202b29eSdanielk1977  execsql {
2110202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE b = 'aa' ORDER BY oid;
2120202b29eSdanielk1977  }
2130202b29eSdanielk1977} {aa aA Aa AA}
2140202b29eSdanielk1977do_test collate2-1.9 {
2150202b29eSdanielk1977  execsql {
2160202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE c = 'aa';
2170202b29eSdanielk1977  }
2180202b29eSdanielk1977} {aa}
2190202b29eSdanielk1977do_test collate2-1.10 {
2200202b29eSdanielk1977  execsql {
2210202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE a >= 'aa' ORDER BY 1;
2220202b29eSdanielk1977  }
2230202b29eSdanielk1977} {aa ab bA bB ba bb}
2240202b29eSdanielk1977do_test collate2-1.11 {
2250202b29eSdanielk1977  execsql {
2260202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE b >= 'aa' ORDER BY 1, oid;
2270202b29eSdanielk1977  }
2280202b29eSdanielk1977} {aa aA Aa AA ab aB Ab AB ba bA Ba BA bb bB Bb BB}
2290202b29eSdanielk1977do_test collate2-1.12 {
2300202b29eSdanielk1977  execsql {
2310202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE c >= 'aa' ORDER BY 1;
2320202b29eSdanielk1977  }
2330202b29eSdanielk1977} {aa ba Ab Bb ab bb}
2340202b29eSdanielk1977do_test collate2-1.13 {
2350202b29eSdanielk1977  execsql {
2360202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE a <= 'aa' ORDER BY 1;
2370202b29eSdanielk1977  }
2380202b29eSdanielk1977} {AA AB Aa Ab BA BB Ba Bb aA aB aa}
2390202b29eSdanielk1977do_test collate2-1.14 {
2400202b29eSdanielk1977  execsql {
2410202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE b <= 'aa' ORDER BY 1, oid;
2420202b29eSdanielk1977  }
2430202b29eSdanielk1977} {aa aA Aa AA}
2440202b29eSdanielk1977do_test collate2-1.15 {
2450202b29eSdanielk1977  execsql {
2460202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE c <= 'aa' ORDER BY 1;
2470202b29eSdanielk1977  }
2480202b29eSdanielk1977} {AA BA aA bA AB BB aB bB Aa Ba aa}
2490202b29eSdanielk1977do_test collate2-1.16 {
2500202b29eSdanielk1977  execsql {
2510202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE a BETWEEN 'Aa' AND 'Bb' ORDER BY 1;
2520202b29eSdanielk1977  }
2530202b29eSdanielk1977} {Aa Ab BA BB Ba Bb}
2540202b29eSdanielk1977do_test collate2-1.17 {
2550202b29eSdanielk1977  execsql {
2560202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE b BETWEEN 'Aa' AND 'Bb' ORDER BY 1, oid;
2570202b29eSdanielk1977  }
2580202b29eSdanielk1977} {aa aA Aa AA ab aB Ab AB ba bA Ba BA bb bB Bb BB}
2597d10d5a6Sdrhdo_test collate2-1.17.1 {
2607d10d5a6Sdrh  execsql {
2617d10d5a6Sdrh    SELECT b FROM collate2t1 WHERE b BETWEEN 'Aa' AND 'Bb' ORDER BY +b;
2627d10d5a6Sdrh  }
2637d10d5a6Sdrh} {aa aA Aa AA ab aB Ab AB ba bA Ba BA bb bB Bb BB}
2640202b29eSdanielk1977do_test collate2-1.18 {
2650202b29eSdanielk1977  execsql {
2660202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE c BETWEEN 'Aa' AND 'Bb' ORDER BY 1;
2670202b29eSdanielk1977  }
2680202b29eSdanielk1977} {Aa Ba aa ba Ab Bb}
2690202b29eSdanielk1977do_test collate2-1.19 {
2700202b29eSdanielk1977  execsql {
2710202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE
2720202b29eSdanielk1977      CASE a WHEN 'aa' THEN 1 ELSE 0 END
2730202b29eSdanielk1977        ORDER BY 1, oid;
2740202b29eSdanielk1977  }
2750202b29eSdanielk1977} {aa}
2760202b29eSdanielk1977do_test collate2-1.20 {
2770202b29eSdanielk1977  execsql {
2780202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE
2790202b29eSdanielk1977      CASE b WHEN 'aa' THEN 1 ELSE 0 END
2800202b29eSdanielk1977        ORDER BY 1, oid;
2810202b29eSdanielk1977  }
2820202b29eSdanielk1977} {aa aA Aa AA}
2830202b29eSdanielk1977do_test collate2-1.21 {
2840202b29eSdanielk1977  execsql {
2850202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE
2860202b29eSdanielk1977      CASE c WHEN 'aa' THEN 1 ELSE 0 END
2870202b29eSdanielk1977        ORDER BY 1, oid;
2880202b29eSdanielk1977  }
2890202b29eSdanielk1977} {aa}
2903e8c37e7Sdanielk1977
2913e8c37e7Sdanielk1977ifcapable subquery {
2920202b29eSdanielk1977  do_test collate2-1.22 {
2930202b29eSdanielk1977    execsql {
2940202b29eSdanielk1977      SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb') ORDER BY 1, oid;
2950202b29eSdanielk1977    }
2960202b29eSdanielk1977  } {aa bb}
2970202b29eSdanielk1977  do_test collate2-1.23 {
2980202b29eSdanielk1977    execsql {
2990202b29eSdanielk1977      SELECT b FROM collate2t1 WHERE b IN ('aa', 'bb') ORDER BY 1, oid;
3000202b29eSdanielk1977    }
3010202b29eSdanielk1977  } {aa aA Aa AA bb bB Bb BB}
3020202b29eSdanielk1977  do_test collate2-1.24 {
3030202b29eSdanielk1977    execsql {
3040202b29eSdanielk1977      SELECT c FROM collate2t1 WHERE c IN ('aa', 'bb') ORDER BY 1, oid;
3050202b29eSdanielk1977    }
3060202b29eSdanielk1977  } {aa bb}
3070202b29eSdanielk1977  do_test collate2-1.25 {
3080202b29eSdanielk1977    execsql {
3090202b29eSdanielk1977      SELECT a FROM collate2t1
3100202b29eSdanielk1977        WHERE a IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb'));
3110202b29eSdanielk1977    }
3120202b29eSdanielk1977  } {aa bb}
3130202b29eSdanielk1977  do_test collate2-1.26 {
3140202b29eSdanielk1977    execsql {
3150202b29eSdanielk1977      SELECT b FROM collate2t1
3160202b29eSdanielk1977        WHERE b IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb'));
3170202b29eSdanielk1977    }
3180202b29eSdanielk1977  } {aa bb aA bB Aa Bb AA BB}
3190202b29eSdanielk1977  do_test collate2-1.27 {
3200202b29eSdanielk1977    execsql {
3210202b29eSdanielk1977      SELECT c FROM collate2t1
3220202b29eSdanielk1977        WHERE c IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb'));
3230202b29eSdanielk1977    }
3240202b29eSdanielk1977  } {aa bb}
3253e8c37e7Sdanielk1977} ;# ifcapable subquery
3260202b29eSdanielk1977
3270202b29eSdanielk1977do_test collate2-2.1 {
3280202b29eSdanielk1977  execsql {
3290202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE NOT a > 'aa' ORDER BY 1;
3300202b29eSdanielk1977  }
3310202b29eSdanielk1977} {AA AB Aa Ab BA BB Ba Bb aA aB aa}
3320202b29eSdanielk1977do_test collate2-2.2 {
3330202b29eSdanielk1977  execsql {
3340202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE NOT b > 'aa' ORDER BY 1, oid;
3350202b29eSdanielk1977  }
3360202b29eSdanielk1977} {aa aA Aa AA}
3370202b29eSdanielk1977do_test collate2-2.3 {
3380202b29eSdanielk1977  execsql {
3390202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE NOT c > 'aa' ORDER BY 1;
3400202b29eSdanielk1977  }
3410202b29eSdanielk1977} {AA BA aA bA AB BB aB bB Aa Ba aa}
3420202b29eSdanielk1977do_test collate2-2.4 {
3430202b29eSdanielk1977  execsql {
3440202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE NOT a < 'aa' ORDER BY 1;
3450202b29eSdanielk1977  }
3460202b29eSdanielk1977} {aa ab bA bB ba bb}
3470202b29eSdanielk1977do_test collate2-2.5 {
3480202b29eSdanielk1977  execsql {
3490202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE NOT b < 'aa' ORDER BY 1, oid;
3500202b29eSdanielk1977  }
3510202b29eSdanielk1977} {aa aA Aa AA ab aB Ab AB ba bA Ba BA bb bB Bb BB}
3520202b29eSdanielk1977do_test collate2-2.6 {
3530202b29eSdanielk1977  execsql {
3540202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE NOT c < 'aa' ORDER BY 1;
3550202b29eSdanielk1977  }
3560202b29eSdanielk1977} {aa ba Ab Bb ab bb}
3570202b29eSdanielk1977do_test collate2-2.7 {
3580202b29eSdanielk1977  execsql {
3590202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE NOT a = 'aa';
3600202b29eSdanielk1977  }
3610202b29eSdanielk1977} {ab ba bb aA aB bA bB Aa Ab Ba Bb AA AB BA BB}
3620202b29eSdanielk1977do_test collate2-2.8 {
3630202b29eSdanielk1977  execsql {
3640202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE NOT b = 'aa';
3650202b29eSdanielk1977  }
3660202b29eSdanielk1977} {ab ba bb aB bA bB Ab Ba Bb AB BA BB}
3670202b29eSdanielk1977do_test collate2-2.9 {
3680202b29eSdanielk1977  execsql {
3690202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE NOT c = 'aa';
3700202b29eSdanielk1977  }
3710202b29eSdanielk1977} {ab ba bb aA aB bA bB Aa Ab Ba Bb AA AB BA BB}
3720202b29eSdanielk1977do_test collate2-2.10 {
3730202b29eSdanielk1977  execsql {
3740202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE NOT a >= 'aa' ORDER BY 1;
3750202b29eSdanielk1977  }
3760202b29eSdanielk1977} {AA AB Aa Ab BA BB Ba Bb aA aB}
3770202b29eSdanielk1977do_test collate2-2.11 {
3780202b29eSdanielk1977  execsql {
3790202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE NOT b >= 'aa' ORDER BY 1, oid;
3800202b29eSdanielk1977  }
3810202b29eSdanielk1977} {}
3820202b29eSdanielk1977do_test collate2-2.12 {
3830202b29eSdanielk1977  execsql {
3840202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE NOT c >= 'aa' ORDER BY 1;
3850202b29eSdanielk1977  }
3860202b29eSdanielk1977} {AA BA aA bA AB BB aB bB Aa Ba}
3870202b29eSdanielk1977do_test collate2-2.13 {
3880202b29eSdanielk1977  execsql {
3890202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE NOT a <= 'aa' ORDER BY 1;
3900202b29eSdanielk1977  }
3910202b29eSdanielk1977} {ab bA bB ba bb}
3920202b29eSdanielk1977do_test collate2-2.14 {
3930202b29eSdanielk1977  execsql {
3940202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE NOT b <= 'aa' ORDER BY 1, oid;
3950202b29eSdanielk1977  }
3960202b29eSdanielk1977} {ab aB Ab AB ba bA Ba BA bb bB Bb BB}
3970202b29eSdanielk1977do_test collate2-2.15 {
3980202b29eSdanielk1977  execsql {
3990202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE NOT c <= 'aa' ORDER BY 1;
4000202b29eSdanielk1977  }
4010202b29eSdanielk1977} {ba Ab Bb ab bb}
4020202b29eSdanielk1977do_test collate2-2.16 {
4030202b29eSdanielk1977  execsql {
4040202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE a NOT BETWEEN 'Aa' AND 'Bb' ORDER BY 1;
4050202b29eSdanielk1977  }
4060202b29eSdanielk1977} {AA AB aA aB aa ab bA bB ba bb}
4070202b29eSdanielk1977do_test collate2-2.17 {
4080202b29eSdanielk1977  execsql {
4090202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE b NOT BETWEEN 'Aa' AND 'Bb' ORDER BY 1, oid;
4100202b29eSdanielk1977  }
4110202b29eSdanielk1977} {}
4120202b29eSdanielk1977do_test collate2-2.18 {
4130202b29eSdanielk1977  execsql {
4140202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE c NOT BETWEEN 'Aa' AND 'Bb' ORDER BY 1;
4150202b29eSdanielk1977  }
4160202b29eSdanielk1977} {AA BA aA bA AB BB aB bB ab bb}
4170202b29eSdanielk1977do_test collate2-2.19 {
4180202b29eSdanielk1977  execsql {
4190202b29eSdanielk1977    SELECT a FROM collate2t1 WHERE NOT CASE a WHEN 'aa' THEN 1 ELSE 0 END;
4200202b29eSdanielk1977  }
4210202b29eSdanielk1977} {{} ab ba bb aA aB bA bB Aa Ab Ba Bb AA AB BA BB}
4220202b29eSdanielk1977do_test collate2-2.20 {
4230202b29eSdanielk1977  execsql {
4240202b29eSdanielk1977    SELECT b FROM collate2t1 WHERE NOT CASE b WHEN 'aa' THEN 1 ELSE 0 END;
4250202b29eSdanielk1977  }
4260202b29eSdanielk1977} {{} ab ba bb aB bA bB Ab Ba Bb AB BA BB}
4270202b29eSdanielk1977do_test collate2-2.21 {
4280202b29eSdanielk1977  execsql {
4290202b29eSdanielk1977    SELECT c FROM collate2t1 WHERE NOT CASE c WHEN 'aa' THEN 1 ELSE 0 END;
4300202b29eSdanielk1977  }
4310202b29eSdanielk1977} {{} ab ba bb aA aB bA bB Aa Ab Ba Bb AA AB BA BB}
4323e8c37e7Sdanielk1977
4333e8c37e7Sdanielk1977ifcapable subquery {
4340202b29eSdanielk1977  do_test collate2-2.22 {
4350202b29eSdanielk1977    execsql {
4360202b29eSdanielk1977      SELECT a FROM collate2t1 WHERE NOT a IN ('aa', 'bb');
4370202b29eSdanielk1977    }
4380202b29eSdanielk1977  } {ab ba aA aB bA bB Aa Ab Ba Bb AA AB BA BB}
4390202b29eSdanielk1977  do_test collate2-2.23 {
4400202b29eSdanielk1977    execsql {
4410202b29eSdanielk1977      SELECT b FROM collate2t1 WHERE NOT b IN ('aa', 'bb');
4420202b29eSdanielk1977    }
4430202b29eSdanielk1977  } {ab ba aB bA Ab Ba AB BA}
4440202b29eSdanielk1977  do_test collate2-2.24 {
4450202b29eSdanielk1977    execsql {
4460202b29eSdanielk1977      SELECT c FROM collate2t1 WHERE NOT c IN ('aa', 'bb');
4470202b29eSdanielk1977    }
4480202b29eSdanielk1977  } {ab ba aA aB bA bB Aa Ab Ba Bb AA AB BA BB}
4490202b29eSdanielk1977  do_test collate2-2.25 {
4500202b29eSdanielk1977    execsql {
4510202b29eSdanielk1977      SELECT a FROM collate2t1
4520202b29eSdanielk1977        WHERE NOT a IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb'));
4530202b29eSdanielk1977    }
4540202b29eSdanielk1977  } {ab ba aA aB bA bB Aa Ab Ba Bb AA AB BA BB}
4550202b29eSdanielk1977  do_test collate2-2.26 {
4560202b29eSdanielk1977    execsql {
4570202b29eSdanielk1977      SELECT b FROM collate2t1
4580202b29eSdanielk1977        WHERE NOT b IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb'));
4590202b29eSdanielk1977    }
4600202b29eSdanielk1977  } {ab ba aB bA Ab Ba AB BA}
4610202b29eSdanielk1977  do_test collate2-2.27 {
4620202b29eSdanielk1977    execsql {
4630202b29eSdanielk1977      SELECT c FROM collate2t1
4640202b29eSdanielk1977        WHERE NOT c IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb'));
4650202b29eSdanielk1977    }
4660202b29eSdanielk1977  } {ab ba aA aB bA bB Aa Ab Ba Bb AA AB BA BB}
4673e8c37e7Sdanielk1977}
4680202b29eSdanielk1977
4690202b29eSdanielk1977do_test collate2-3.1 {
4700202b29eSdanielk1977  execsql {
4710202b29eSdanielk1977    SELECT a > 'aa' FROM collate2t1;
4720202b29eSdanielk1977  }
4730202b29eSdanielk1977} {{} 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0}
4740202b29eSdanielk1977do_test collate2-3.2 {
4750202b29eSdanielk1977  execsql {
4760202b29eSdanielk1977    SELECT b > 'aa' FROM collate2t1;
4770202b29eSdanielk1977  }
4780202b29eSdanielk1977} {{} 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1}
4790202b29eSdanielk1977do_test collate2-3.3 {
4800202b29eSdanielk1977  execsql {
4810202b29eSdanielk1977    SELECT c > 'aa' FROM collate2t1;
4820202b29eSdanielk1977  }
4830202b29eSdanielk1977} {{} 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0}
4840202b29eSdanielk1977do_test collate2-3.4 {
4850202b29eSdanielk1977  execsql {
4860202b29eSdanielk1977    SELECT a < 'aa' FROM collate2t1;
4870202b29eSdanielk1977  }
4880202b29eSdanielk1977} {{} 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1}
4890202b29eSdanielk1977do_test collate2-3.5 {
4900202b29eSdanielk1977  execsql {
4910202b29eSdanielk1977    SELECT b < 'aa' FROM collate2t1;
4920202b29eSdanielk1977  }
4930202b29eSdanielk1977} {{} 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
4940202b29eSdanielk1977do_test collate2-3.6 {
4950202b29eSdanielk1977  execsql {
4960202b29eSdanielk1977    SELECT c < 'aa' FROM collate2t1;
4970202b29eSdanielk1977  }
4980202b29eSdanielk1977} {{} 0 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1}
4990202b29eSdanielk1977do_test collate2-3.7 {
5000202b29eSdanielk1977  execsql {
5010202b29eSdanielk1977    SELECT a = 'aa' FROM collate2t1;
5020202b29eSdanielk1977  }
5030202b29eSdanielk1977} {{} 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
5040202b29eSdanielk1977do_test collate2-3.8 {
5050202b29eSdanielk1977  execsql {
5060202b29eSdanielk1977    SELECT b = 'aa' FROM collate2t1;
5070202b29eSdanielk1977  }
5080202b29eSdanielk1977} {{} 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0}
5090202b29eSdanielk1977do_test collate2-3.9 {
5100202b29eSdanielk1977  execsql {
5110202b29eSdanielk1977    SELECT c = 'aa' FROM collate2t1;
5120202b29eSdanielk1977  }
5130202b29eSdanielk1977} {{} 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
5140202b29eSdanielk1977do_test collate2-3.10 {
5150202b29eSdanielk1977  execsql {
5160202b29eSdanielk1977    SELECT a <= 'aa' FROM collate2t1;
5170202b29eSdanielk1977  }
5180202b29eSdanielk1977} {{} 1 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1}
5190202b29eSdanielk1977do_test collate2-3.11 {
5200202b29eSdanielk1977  execsql {
5210202b29eSdanielk1977    SELECT b <= 'aa' FROM collate2t1;
5220202b29eSdanielk1977  }
5230202b29eSdanielk1977} {{} 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0}
5240202b29eSdanielk1977do_test collate2-3.12 {
5250202b29eSdanielk1977  execsql {
5260202b29eSdanielk1977    SELECT c <= 'aa' FROM collate2t1;
5270202b29eSdanielk1977  }
5280202b29eSdanielk1977} {{} 1 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1}
5290202b29eSdanielk1977do_test collate2-3.13 {
5300202b29eSdanielk1977  execsql {
5310202b29eSdanielk1977    SELECT a >= 'aa' FROM collate2t1;
5320202b29eSdanielk1977  }
5330202b29eSdanielk1977} {{} 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0}
5340202b29eSdanielk1977do_test collate2-3.14 {
5350202b29eSdanielk1977  execsql {
5360202b29eSdanielk1977    SELECT b >= 'aa' FROM collate2t1;
5370202b29eSdanielk1977  }
5380202b29eSdanielk1977} {{} 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1}
5390202b29eSdanielk1977do_test collate2-3.15 {
5400202b29eSdanielk1977  execsql {
5410202b29eSdanielk1977    SELECT c >= 'aa' FROM collate2t1;
5420202b29eSdanielk1977  }
5430202b29eSdanielk1977} {{} 1 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0}
5440202b29eSdanielk1977do_test collate2-3.16 {
5450202b29eSdanielk1977  execsql {
5460202b29eSdanielk1977    SELECT a BETWEEN 'Aa' AND 'Bb' FROM collate2t1;
5470202b29eSdanielk1977  }
5480202b29eSdanielk1977} {{} 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1}
5490202b29eSdanielk1977do_test collate2-3.17 {
5500202b29eSdanielk1977  execsql {
5510202b29eSdanielk1977    SELECT b BETWEEN 'Aa' AND 'Bb' FROM collate2t1;
5520202b29eSdanielk1977  }
5530202b29eSdanielk1977} {{} 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1}
5540202b29eSdanielk1977do_test collate2-3.18 {
5550202b29eSdanielk1977  execsql {
5560202b29eSdanielk1977    SELECT c BETWEEN 'Aa' AND 'Bb' FROM collate2t1;
5570202b29eSdanielk1977  }
5580202b29eSdanielk1977} {{} 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0}
5590202b29eSdanielk1977do_test collate2-3.19 {
5600202b29eSdanielk1977  execsql {
5610202b29eSdanielk1977    SELECT CASE a WHEN 'aa' THEN 1 ELSE 0 END FROM collate2t1;
5620202b29eSdanielk1977  }
5630202b29eSdanielk1977} {0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
5640202b29eSdanielk1977do_test collate2-3.20 {
5650202b29eSdanielk1977  execsql {
5660202b29eSdanielk1977    SELECT CASE b WHEN 'aa' THEN 1 ELSE 0 END FROM collate2t1;
5670202b29eSdanielk1977  }
5680202b29eSdanielk1977} {0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0}
5690202b29eSdanielk1977do_test collate2-3.21 {
5700202b29eSdanielk1977  execsql {
5710202b29eSdanielk1977    SELECT CASE c WHEN 'aa' THEN 1 ELSE 0 END FROM collate2t1;
5720202b29eSdanielk1977  }
5730202b29eSdanielk1977} {0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
5743e8c37e7Sdanielk1977
5753e8c37e7Sdanielk1977ifcapable subquery {
5760202b29eSdanielk1977  do_test collate2-3.22 {
5770202b29eSdanielk1977    execsql {
5780202b29eSdanielk1977      SELECT a IN ('aa', 'bb') FROM collate2t1;
5790202b29eSdanielk1977    }
5800202b29eSdanielk1977  } {{} 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0}
5810202b29eSdanielk1977  do_test collate2-3.23 {
5820202b29eSdanielk1977    execsql {
5830202b29eSdanielk1977      SELECT b IN ('aa', 'bb') FROM collate2t1;
5840202b29eSdanielk1977    }
5850202b29eSdanielk1977  } {{} 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1}
5860202b29eSdanielk1977  do_test collate2-3.24 {
5870202b29eSdanielk1977    execsql {
5880202b29eSdanielk1977      SELECT c IN ('aa', 'bb') FROM collate2t1;
5890202b29eSdanielk1977    }
5900202b29eSdanielk1977  } {{} 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0}
5910202b29eSdanielk1977  do_test collate2-3.25 {
5920202b29eSdanielk1977    execsql {
5930202b29eSdanielk1977      SELECT a IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb'))
5940202b29eSdanielk1977        FROM collate2t1;
5950202b29eSdanielk1977    }
5960202b29eSdanielk1977  } {{} 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0}
5970202b29eSdanielk1977  do_test collate2-3.26 {
5980202b29eSdanielk1977    execsql {
5990202b29eSdanielk1977      SELECT b IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb'))
6000202b29eSdanielk1977        FROM collate2t1;
6010202b29eSdanielk1977    }
6020202b29eSdanielk1977  } {{} 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1}
6030202b29eSdanielk1977  do_test collate2-3.27 {
6040202b29eSdanielk1977    execsql {
6050202b29eSdanielk1977      SELECT c IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb'))
6060202b29eSdanielk1977        FROM collate2t1;
6070202b29eSdanielk1977    }
6080202b29eSdanielk1977  } {{} 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0}
6093e8c37e7Sdanielk1977}
6100202b29eSdanielk1977
6110202b29eSdanielk1977do_test collate2-4.0 {
6120202b29eSdanielk1977  execsql {
6130202b29eSdanielk1977    CREATE TABLE collate2t2(b COLLATE binary);
6140202b29eSdanielk1977    CREATE TABLE collate2t3(b text);
6150202b29eSdanielk1977    INSERT INTO collate2t2 VALUES('aa');
6160202b29eSdanielk1977    INSERT INTO collate2t3 VALUES('aa');
6170202b29eSdanielk1977  }
6180202b29eSdanielk1977} {}
6190202b29eSdanielk1977
6200202b29eSdanielk1977# Test that when both sides of a binary comparison operator have
6210202b29eSdanielk1977# default collation types, the collate type for the leftmost term
6220202b29eSdanielk1977# is used.
6230202b29eSdanielk1977do_test collate2-4.1 {
6240202b29eSdanielk1977  execsql {
6250202b29eSdanielk1977    SELECT collate2t1.a FROM collate2t1, collate2t2
6260202b29eSdanielk1977      WHERE collate2t1.b = collate2t2.b;
6270202b29eSdanielk1977  }
6280202b29eSdanielk1977} {aa aA Aa AA}
6290202b29eSdanielk1977do_test collate2-4.2 {
6300202b29eSdanielk1977  execsql {
6310202b29eSdanielk1977    SELECT collate2t1.a FROM collate2t1, collate2t2
6320202b29eSdanielk1977      WHERE collate2t2.b = collate2t1.b;
6330202b29eSdanielk1977  }
6340202b29eSdanielk1977} {aa}
6350202b29eSdanielk1977
6360202b29eSdanielk1977# Test that when one side has a default collation type and the other
6370202b29eSdanielk1977# does not, the collation type is used.
6380202b29eSdanielk1977do_test collate2-4.3 {
6390202b29eSdanielk1977  execsql {
6400202b29eSdanielk1977    SELECT collate2t1.a FROM collate2t1, collate2t3
64174990dceSdrh      WHERE collate2t1.b = collate2t3.b||''
64274990dceSdrh      ORDER BY +collate2t1.a DESC;
6430202b29eSdanielk1977  }
6440202b29eSdanielk1977} {aa aA Aa AA}
6450202b29eSdanielk1977do_test collate2-4.4 {
6460202b29eSdanielk1977  execsql {
6470202b29eSdanielk1977    SELECT collate2t1.a FROM collate2t1, collate2t3
64874990dceSdrh      WHERE collate2t3.b||'' = collate2t1.b
64974990dceSdrh      ORDER BY +collate2t1.a DESC;
6500202b29eSdanielk1977  }
6510202b29eSdanielk1977} {aa aA Aa AA}
6520202b29eSdanielk1977
6530202b29eSdanielk1977do_test collate2-4.5 {
6540202b29eSdanielk1977  execsql {
6550202b29eSdanielk1977    DROP TABLE collate2t3;
6560202b29eSdanielk1977  }
6570202b29eSdanielk1977} {}
6580202b29eSdanielk1977
6590202b29eSdanielk1977#
6600202b29eSdanielk1977# Test that the default collation types are used when the JOIN syntax
6610202b29eSdanielk1977# is used in place of a WHERE clause.
6620202b29eSdanielk1977#
6630202b29eSdanielk1977# SQLite transforms the JOIN syntax into a WHERE clause internally, so
6640202b29eSdanielk1977# the focus of these tests is to ensure that the table on the left-hand-side
6650202b29eSdanielk1977# of the join determines the collation type used.
6660202b29eSdanielk1977#
6670202b29eSdanielk1977do_test collate2-5.0 {
6680202b29eSdanielk1977  execsql {
6690202b29eSdanielk1977    SELECT collate2t1.b FROM collate2t1 JOIN collate2t2 USING (b);
6700202b29eSdanielk1977  }
6710202b29eSdanielk1977} {aa aA Aa AA}
6720202b29eSdanielk1977do_test collate2-5.1 {
6730202b29eSdanielk1977  execsql {
6740202b29eSdanielk1977    SELECT collate2t1.b FROM collate2t2 JOIN collate2t1 USING (b);
6750202b29eSdanielk1977  }
6760202b29eSdanielk1977} {aa}
6770202b29eSdanielk1977do_test collate2-5.2 {
6780202b29eSdanielk1977  execsql {
6790202b29eSdanielk1977    SELECT collate2t1.b FROM collate2t1 NATURAL JOIN collate2t2;
6800202b29eSdanielk1977  }
6810202b29eSdanielk1977} {aa aA Aa AA}
6820202b29eSdanielk1977do_test collate2-5.3 {
6830202b29eSdanielk1977  execsql {
6840202b29eSdanielk1977    SELECT collate2t1.b FROM collate2t2 NATURAL JOIN collate2t1;
6850202b29eSdanielk1977  }
6860202b29eSdanielk1977} {aa}
687*ec27077cSdrhdo_test collate2-5.4.1 {
6880202b29eSdanielk1977  execsql {
689*ec27077cSdrh    SELECT collate2t2.b FROM collate2t1 LEFT JOIN collate2t2 USING (b) order by collate2t1.oid;
6900202b29eSdanielk1977  }
6910202b29eSdanielk1977} {{} aa {} {} {} aa {} {} {} aa {} {} {} aa {} {} {}}
692*ec27077cSdrhdo_test collate2-5.4.2 {
693*ec27077cSdrh  execsql {
694*ec27077cSdrh    SELECT collate2t2.b FROM collate2t2 RIGHT JOIN collate2t1 ON collate2t1.b=collate2t2.b
695*ec27077cSdrh     ORDER BY collate2t1.oid;
696*ec27077cSdrh  }
697*ec27077cSdrh} {{} aa {} {} {} aa {} {} {} aa {} {} {} aa {} {} {}}
698*ec27077cSdrhdo_test collate2-5.4.3 {
699*ec27077cSdrh  execsql {
700*ec27077cSdrh    SELECT collate2t2.b FROM collate2t1 LEFT JOIN collate2t2 ON collate2t2.b=collate2t1.b
701*ec27077cSdrh     ORDER BY collate2t1.oid;
702*ec27077cSdrh  }
703*ec27077cSdrh} {{} aa {} {} {} {} {} {} {} {} {} {} {} {} {} {} {}}
704*ec27077cSdrhdo_test collate2-5.5.1 {
7050202b29eSdanielk1977  execsql {
7060202b29eSdanielk1977    SELECT collate2t1.b, collate2t2.b FROM collate2t2 LEFT OUTER JOIN collate2t1 USING (b);
7070202b29eSdanielk1977  }
7080202b29eSdanielk1977} {aa aa}
709*ec27077cSdrhdo_test collate2-5.5.2 {
710*ec27077cSdrh  execsql {
711*ec27077cSdrh    SELECT collate2t1.b, collate2t2.b
712*ec27077cSdrh      FROM collate2t1 RIGHT JOIN collate2t2 ON collate2t2.b=collate2t1.b
713*ec27077cSdrh  }
714*ec27077cSdrh} {aa aa}
7150202b29eSdanielk1977
71636e78309Sdando_execsql_test 6.1 {
71736e78309Sdan  CREATE TABLE t1(x);
71836e78309Sdan  INSERT INTO t1 VALUES('b');
71936e78309Sdan  INSERT INTO t1 VALUES('B');
72036e78309Sdan}
72136e78309Sdando_execsql_test 6.2 {
72236e78309Sdan  SELECT * FROM t1 WHERE x COLLATE nocase BETWEEN 'a' AND 'c';
72336e78309Sdan} {b B}
72436e78309Sdando_execsql_test 6.3 {
72536e78309Sdan  SELECT * FROM t1 WHERE x BETWEEN 'a' COLLATE nocase AND 'c' COLLATE nocase;
72636e78309Sdan} {b B}
72736e78309Sdando_execsql_test 6.4 {
72836e78309Sdan  SELECT * FROM t1
72936e78309Sdan  WHERE x COLLATE nocase BETWEEN 'a' COLLATE nocase AND 'c' COLLATE nocase;
73036e78309Sdan} {b B}
73136e78309Sdando_execsql_test 6.5 {
73236e78309Sdan  SELECT * FROM t1 WHERE +x COLLATE nocase BETWEEN 'a' AND 'c';
73336e78309Sdan} {b B}
73436e78309Sdando_execsql_test 6.6 {
73536e78309Sdan  SELECT * FROM t1 WHERE +x BETWEEN 'a' COLLATE nocase AND 'c' COLLATE nocase;
73636e78309Sdan} {b B}
73736e78309Sdando_execsql_test 6.7 {
73836e78309Sdan  SELECT * FROM t1
73936e78309Sdan  WHERE +x COLLATE nocase BETWEEN 'a' COLLATE nocase AND 'c' COLLATE nocase;
74036e78309Sdan} {b B}
74136e78309Sdan
74236e78309Sdanfinish_test
743