/ Hex Artifact Content
Login

Artifact 1aeb81976841a91eef292723649b5c4fe3bc3cac:


0000: 23 20 32 30 30 31 20 53 65 70 74 65 6d 62 65 72  # 2001 September
0010: 20 31 35 0a 23 0a 23 20 54 68 65 20 61 75 74 68   15.#.# The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67  place of.# a leg
0060: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0070: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23  is a blessing:.#
0080: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  .#    May you do
0090: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
00a0: 69 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75  il..#    May you
00b0: 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73   find forgivenes
00c0: 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61  s for yourself a
00d0: 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72  nd forgive other
00e0: 73 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  s..#    May you 
00f0: 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65  share freely, ne
0100: 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20  ver taking more 
0110: 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23  than you give..#
0120: 0a 23 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .#**************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73  *********.# This
0170: 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73   file implements
0180: 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74   regression test
0190: 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62  s for SQLite lib
01a0: 72 61 72 79 2e 20 54 68 65 20 66 6f 63 75 73 0a  rary. The focus.
01b0: 23 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20 69  # of this file i
01c0: 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 69 6e  s testing the in
01d0: 74 65 72 61 63 74 69 6f 6e 20 6f 66 20 6d 61 6e  teraction of man
01e0: 69 66 65 73 74 20 74 79 70 65 73 2c 20 74 79 70  ifest types, typ
01f0: 65 20 61 66 66 69 6e 69 74 79 0a 23 20 61 6e 64  e affinity.# and
0200: 20 63 6f 6d 70 61 72 69 73 6f 6e 20 65 78 70 72   comparison expr
0210: 65 73 73 69 6f 6e 73 2e 0a 23 0a 23 20 24 49 64  essions..#.# $Id
0220: 3a 20 74 79 70 65 73 32 2e 74 65 73 74 2c 76 20  : types2.test,v 
0230: 31 2e 37 20 32 30 30 37 2f 30 32 2f 32 33 20 30  1.7 2007/02/23 0
0240: 33 3a 30 30 3a 34 35 20 64 72 68 20 45 78 70 20  3:00:45 drh Exp 
0250: 24 0a 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b  $..set testdir [
0260: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72  file dirname $ar
0270: 67 76 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73  gv0].source $tes
0280: 74 64 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a  tdir/tester.tcl.
0290: 0a 23 20 54 65 73 74 73 20 69 6e 20 74 68 69 73  .# Tests in this
02a0: 20 66 69 6c 65 20 61 72 65 20 6f 72 67 61 6e 69   file are organi
02b0: 7a 65 64 20 72 6f 75 67 68 6c 79 20 61 73 20 66  zed roughly as f
02c0: 6f 6c 6c 6f 77 73 3a 0a 23 0a 23 20 74 79 70 65  ollows:.#.# type
02d0: 73 32 2d 31 2e 2a 3a 20 54 68 65 20 27 3d 27 20  s2-1.*: The '=' 
02e0: 6f 70 65 72 61 74 6f 72 20 69 6e 20 74 68 65 20  operator in the 
02f0: 61 62 73 65 6e 63 65 20 6f 66 20 61 6e 20 69 6e  absence of an in
0300: 64 65 78 2e 0a 23 20 74 79 70 65 73 32 2d 32 2e  dex..# types2-2.
0310: 2a 3a 20 54 68 65 20 27 3d 27 20 6f 70 65 72 61  *: The '=' opera
0320: 74 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  tor implemented 
0330: 75 73 69 6e 67 20 61 6e 20 69 6e 64 65 78 2e 0a  using an index..
0340: 23 20 74 79 70 65 73 32 2d 33 2e 2a 3a 20 54 68  # types2-3.*: Th
0350: 65 20 27 3c 27 20 6f 70 65 72 61 74 6f 72 20 69  e '<' operator i
0360: 6d 70 6c 65 6d 65 6e 74 65 64 20 75 73 69 6e 67  mplemented using
0370: 20 61 6e 20 69 6e 64 65 78 2e 0a 23 20 74 79 70   an index..# typ
0380: 65 73 32 2d 34 2e 2a 3a 20 54 68 65 20 27 3e 27  es2-4.*: The '>'
0390: 20 6f 70 65 72 61 74 6f 72 20 69 6e 20 74 68 65   operator in the
03a0: 20 61 62 73 65 6e 63 65 20 6f 66 20 61 6e 20 69   absence of an i
03b0: 6e 64 65 78 2e 0a 23 20 74 79 70 65 73 32 2d 35  ndex..# types2-5
03c0: 2e 2a 3a 20 54 68 65 20 27 49 4e 28 78 2c 20 79  .*: The 'IN(x, y
03d0: 2e 2e 2e 29 27 20 6f 70 65 72 61 74 6f 72 20 69  ...)' operator i
03e0: 6e 20 74 68 65 20 61 62 73 65 6e 63 65 20 6f 66  n the absence of
03f0: 20 61 6e 20 69 6e 64 65 78 2e 0a 23 20 74 79 70   an index..# typ
0400: 65 73 32 2d 36 2e 2a 3a 20 54 68 65 20 27 49 4e  es2-6.*: The 'IN
0410: 28 78 2c 20 79 2e 2e 2e 29 27 20 6f 70 65 72 61  (x, y...)' opera
0420: 74 6f 72 20 77 69 74 68 20 61 6e 20 69 6e 64 65  tor with an inde
0430: 78 2e 0a 23 20 74 79 70 65 73 32 2d 37 2e 2a 3a  x..# types2-7.*:
0440: 20 54 68 65 20 27 49 4e 28 53 45 4c 45 43 54 2e   The 'IN(SELECT.
0450: 2e 2e 29 27 20 6f 70 65 72 61 74 6f 72 20 69 6e  ..)' operator in
0460: 20 74 68 65 20 61 62 73 65 6e 63 65 20 6f 66 20   the absence of 
0470: 61 6e 20 69 6e 64 65 78 2e 0a 23 20 74 79 70 65  an index..# type
0480: 73 32 2d 38 2e 2a 3a 20 54 68 65 20 27 49 4e 28  s2-8.*: The 'IN(
0490: 53 45 4c 45 43 54 2e 2e 2e 29 27 20 6f 70 65 72  SELECT...)' oper
04a0: 61 74 6f 72 20 77 69 74 68 20 61 6e 20 69 6e 64  ator with an ind
04b0: 65 78 2e 0a 23 0a 23 20 41 6c 6c 20 74 65 73 74  ex..#.# All test
04c0: 73 20 74 65 73 74 20 74 68 65 20 6f 70 65 72 61  s test the opera
04d0: 74 6f 72 73 20 75 73 69 6e 67 20 6c 69 74 65 72  tors using liter
04e0: 61 6c 73 20 61 6e 64 20 63 6f 6c 75 6d 6e 73 2c  als and columns,
04f0: 20 62 75 74 20 6e 6f 0a 23 20 6f 74 68 65 72 20   but no.# other 
0500: 74 79 70 65 73 20 6f 66 20 65 78 70 72 65 73 73  types of express
0510: 69 6f 6e 73 2e 20 41 6c 6c 20 65 78 70 72 65 73  ions. All expres
0520: 73 69 6f 6e 73 20 65 78 63 65 70 74 20 63 6f 6c  sions except col
0530: 75 6d 6e 73 20 61 72 65 0a 23 20 68 61 6e 64 6c  umns are.# handl
0540: 65 64 20 73 69 6d 69 6c 61 72 6c 79 20 69 6e 20  ed similarly in 
0550: 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  the implementati
0560: 6f 6e 2e 0a 0a 65 78 65 63 73 71 6c 20 7b 0a 20  on...execsql {. 
0570: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31   CREATE TABLE t1
0580: 28 0a 20 20 20 20 69 31 20 49 4e 54 45 47 45 52  (.    i1 INTEGER
0590: 2c 0a 20 20 20 20 69 32 20 49 4e 54 45 47 45 52  ,.    i2 INTEGER
05a0: 2c 0a 20 20 20 20 6e 31 20 4e 55 4d 45 52 49 43  ,.    n1 NUMERIC
05b0: 2c 0a 20 20 20 20 6e 32 20 4e 55 4d 45 52 49 43  ,.    n2 NUMERIC
05c0: 2c 0a 20 20 20 20 74 31 20 54 45 58 54 2c 0a 20  ,.    t1 TEXT,. 
05d0: 20 20 20 74 32 20 54 45 58 54 2c 0a 20 20 20 20     t2 TEXT,.    
05e0: 6f 31 20 42 4c 4f 42 2c 0a 20 20 20 20 6f 32 20  o1 BLOB,.    o2 
05f0: 42 4c 4f 42 0a 20 20 29 3b 0a 20 20 49 4e 53 45  BLOB.  );.  INSE
0600: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
0610: 53 28 4e 55 4c 4c 2c 4e 55 4c 4c 2c 4e 55 4c 4c  S(NULL,NULL,NULL
0620: 2c 4e 55 4c 4c 2c 4e 55 4c 4c 2c 4e 55 4c 4c 2c  ,NULL,NULL,NULL,
0630: 4e 55 4c 4c 2c 4e 55 4c 4c 29 3b 0a 7d 0a 0a 70  NULL,NULL);.}..p
0640: 72 6f 63 20 74 65 73 74 5f 62 6f 6f 6c 20 7b 74  roc test_bool {t
0650: 65 73 74 6e 61 6d 65 20 76 61 72 73 20 65 78 70  estname vars exp
0660: 72 20 72 65 73 7d 20 7b 0a 20 20 69 66 20 7b 20  r res} {.  if { 
0670: 24 76 61 72 73 20 21 3d 20 22 22 20 7d 20 7b 0a  $vars != "" } {.
0680: 20 20 20 20 65 78 65 63 73 71 6c 20 22 55 50 44      execsql "UPD
0690: 41 54 45 20 74 31 20 53 45 54 20 24 76 61 72 73  ATE t1 SET $vars
06a0: 22 0a 20 20 7d 0a 0a 20 20 66 6f 72 65 61 63 68  ".  }..  foreach
06b0: 20 7b 74 20 65 20 72 7d 20 5b 6c 69 73 74 20 24   {t e r} [list $
06c0: 74 65 73 74 6e 61 6d 65 20 24 65 78 70 72 20 24  testname $expr $
06d0: 72 65 73 5d 20 7b 7d 0a 0a 20 20 64 6f 5f 74 65  res] {}..  do_te
06e0: 73 74 20 24 74 2e 31 20 22 65 78 65 63 73 71 6c  st $t.1 "execsql
06f0: 20 7b 53 45 4c 45 43 54 20 24 65 20 46 52 4f 4d   {SELECT $e FROM
0700: 20 74 31 7d 22 20 24 72 0a 20 20 64 6f 5f 74 65   t1}" $r.  do_te
0710: 73 74 20 24 74 2e 32 20 22 65 78 65 63 73 71 6c  st $t.2 "execsql
0720: 20 7b 53 45 4c 45 43 54 20 31 20 46 52 4f 4d 20   {SELECT 1 FROM 
0730: 74 31 20 57 48 45 52 45 20 24 65 78 70 72 7d 22  t1 WHERE $expr}"
0740: 20 5b 65 78 70 72 20 24 72 3f 22 31 22 3a 22 22   [expr $r?"1":""
0750: 5d 0a 20 20 64 6f 5f 74 65 73 74 20 24 74 2e 33  ].  do_test $t.3
0760: 20 22 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43   "execsql {SELEC
0770: 54 20 31 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T 1 FROM t1 WHER
0780: 45 20 4e 4f 54 20 28 24 65 29 7d 22 20 5b 65 78  E NOT ($e)}" [ex
0790: 70 72 20 24 72 3f 22 22 3a 22 31 22 5d 0a 7d 0a  pr $r?"":"1"].}.
07a0: 0a 23 20 43 6f 6d 70 61 72 65 20 6c 69 74 65 72  .# Compare liter
07b0: 61 6c 73 20 61 67 61 69 6e 73 74 20 6c 69 74 65  als against lite
07c0: 72 61 6c 73 2e 20 54 68 69 73 20 73 68 6f 75 6c  rals. This shoul
07d0: 64 20 61 6c 77 61 79 73 20 75 73 65 20 61 20 6e  d always use a n
07e0: 75 6d 65 72 69 63 0a 23 20 63 6f 6d 70 61 72 69  umeric.# compari
07f0: 73 6f 6e 2e 0a 23 0a 23 20 43 68 61 6e 67 65 64  son..#.# Changed
0800: 20 62 79 20 74 69 63 6b 65 74 20 23 38 30 35 3a   by ticket #805:
0810: 20 20 55 73 65 20 6e 6f 20 61 66 66 69 6e 69 74    Use no affinit
0820: 79 20 66 6f 72 20 6c 69 74 65 72 61 6c 20 63 6f  y for literal co
0830: 6d 70 61 72 69 73 6f 6e 73 2e 0a 23 0a 74 65 73  mparisons..#.tes
0840: 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 31 2e  t_bool types2-1.
0850: 31 20 22 22 20 7b 35 30 30 20 3d 20 35 30 30 2e  1 "" {500 = 500.
0860: 30 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20 74  0} 1.test_bool t
0870: 79 70 65 73 32 2d 31 2e 32 20 22 22 20 7b 27 35  ypes2-1.2 "" {'5
0880: 30 30 27 20 3d 20 35 30 30 2e 30 7d 20 30 0a 74  00' = 500.0} 0.t
0890: 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d  est_bool types2-
08a0: 31 2e 33 20 22 22 20 7b 35 30 30 20 3d 20 27 35  1.3 "" {500 = '5
08b0: 30 30 2e 30 27 7d 20 30 0a 74 65 73 74 5f 62 6f  00.0'} 0.test_bo
08c0: 6f 6c 20 74 79 70 65 73 32 2d 31 2e 34 20 22 22  ol types2-1.4 ""
08d0: 20 7b 27 35 30 30 27 20 3d 20 27 35 30 30 2e 30   {'500' = '500.0
08e0: 27 7d 20 30 0a 0a 23 20 43 6f 6d 70 61 72 65 20  '} 0..# Compare 
08f0: 6c 69 74 65 72 61 6c 73 20 61 67 61 69 6e 73 74  literals against
0900: 20 61 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 54   a column with T
0910: 45 58 54 20 61 66 66 69 6e 69 74 79 0a 74 65 73  EXT affinity.tes
0920: 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 31 2e  t_bool types2-1.
0930: 35 20 7b 74 31 3d 35 30 30 7d 20 7b 35 30 30 20  5 {t1=500} {500 
0940: 3d 20 74 31 7d 20 31 0a 74 65 73 74 5f 62 6f 6f  = t1} 1.test_boo
0950: 6c 20 74 79 70 65 73 32 2d 31 2e 36 20 7b 74 31  l types2-1.6 {t1
0960: 3d 35 30 30 7d 20 7b 27 35 30 30 27 20 3d 20 74  =500} {'500' = t
0970: 31 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20 74  1} 1.test_bool t
0980: 79 70 65 73 32 2d 31 2e 37 20 7b 74 31 3d 35 30  ypes2-1.7 {t1=50
0990: 30 7d 20 7b 35 30 30 2e 30 20 3d 20 74 31 7d 20  0} {500.0 = t1} 
09a0: 30 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65  0.test_bool type
09b0: 73 32 2d 31 2e 38 20 7b 74 31 3d 35 30 30 7d 20  s2-1.8 {t1=500} 
09c0: 7b 27 35 30 30 2e 30 27 20 3d 20 74 31 7d 20 30  {'500.0' = t1} 0
09d0: 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73  .test_bool types
09e0: 32 2d 31 2e 39 20 7b 74 31 3d 27 35 30 30 27 7d  2-1.9 {t1='500'}
09f0: 20 7b 35 30 30 20 3d 20 74 31 7d 20 31 0a 74 65   {500 = t1} 1.te
0a00: 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 31  st_bool types2-1
0a10: 2e 31 30 20 7b 74 31 3d 27 35 30 30 27 7d 20 7b  .10 {t1='500'} {
0a20: 27 35 30 30 27 20 3d 20 74 31 7d 20 31 0a 74 65  '500' = t1} 1.te
0a30: 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 31  st_bool types2-1
0a40: 2e 31 31 20 7b 74 31 3d 27 35 30 30 27 7d 20 7b  .11 {t1='500'} {
0a50: 35 30 30 2e 30 20 3d 20 74 31 7d 20 30 0a 74 65  500.0 = t1} 0.te
0a60: 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 31  st_bool types2-1
0a70: 2e 31 32 20 7b 74 31 3d 27 35 30 30 27 7d 20 7b  .12 {t1='500'} {
0a80: 27 35 30 30 2e 30 27 20 3d 20 74 31 7d 20 30 0a  '500.0' = t1} 0.
0a90: 0a 23 20 43 6f 6d 70 61 72 65 20 6c 69 74 65 72  .# Compare liter
0aa0: 61 6c 73 20 61 67 61 69 6e 73 74 20 61 20 63 6f  als against a co
0ab0: 6c 75 6d 6e 20 77 69 74 68 20 4e 55 4d 45 52 49  lumn with NUMERI
0ac0: 43 20 61 66 66 69 6e 69 74 79 0a 74 65 73 74 5f  C affinity.test_
0ad0: 62 6f 6f 6c 20 74 79 70 65 73 32 2d 31 2e 31 33  bool types2-1.13
0ae0: 20 7b 6e 31 3d 35 30 30 7d 20 7b 35 30 30 20 3d   {n1=500} {500 =
0af0: 20 6e 31 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c   n1} 1.test_bool
0b00: 20 74 79 70 65 73 32 2d 31 2e 31 34 20 7b 6e 31   types2-1.14 {n1
0b10: 3d 35 30 30 7d 20 7b 27 35 30 30 27 20 3d 20 6e  =500} {'500' = n
0b20: 31 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20 74  1} 1.test_bool t
0b30: 79 70 65 73 32 2d 31 2e 31 35 20 7b 6e 31 3d 35  ypes2-1.15 {n1=5
0b40: 30 30 7d 20 7b 35 30 30 2e 30 20 3d 20 6e 31 7d  00} {500.0 = n1}
0b50: 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70   1.test_bool typ
0b60: 65 73 32 2d 31 2e 31 36 20 7b 6e 31 3d 35 30 30  es2-1.16 {n1=500
0b70: 7d 20 7b 27 35 30 30 2e 30 27 20 3d 20 6e 31 7d  } {'500.0' = n1}
0b80: 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70   1.test_bool typ
0b90: 65 73 32 2d 31 2e 31 37 20 7b 6e 31 3d 27 35 30  es2-1.17 {n1='50
0ba0: 30 27 7d 20 7b 35 30 30 20 3d 20 6e 31 7d 20 31  0'} {500 = n1} 1
0bb0: 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73  .test_bool types
0bc0: 32 2d 31 2e 31 38 20 7b 6e 31 3d 27 35 30 30 27  2-1.18 {n1='500'
0bd0: 7d 20 7b 27 35 30 30 27 20 3d 20 6e 31 7d 20 31  } {'500' = n1} 1
0be0: 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73  .test_bool types
0bf0: 32 2d 31 2e 31 39 20 7b 6e 31 3d 27 35 30 30 27  2-1.19 {n1='500'
0c00: 7d 20 7b 35 30 30 2e 30 20 3d 20 6e 31 7d 20 31  } {500.0 = n1} 1
0c10: 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73  .test_bool types
0c20: 32 2d 31 2e 32 30 20 7b 6e 31 3d 27 35 30 30 27  2-1.20 {n1='500'
0c30: 7d 20 7b 27 35 30 30 2e 30 27 20 3d 20 6e 31 7d  } {'500.0' = n1}
0c40: 20 31 0a 0a 23 20 43 6f 6d 70 61 72 65 20 6c 69   1..# Compare li
0c50: 74 65 72 61 6c 73 20 61 67 61 69 6e 73 74 20 61  terals against a
0c60: 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 61 66 66   column with aff
0c70: 69 6e 69 74 79 20 4e 4f 4e 45 0a 74 65 73 74 5f  inity NONE.test_
0c80: 62 6f 6f 6c 20 74 79 70 65 73 32 2d 31 2e 32 31  bool types2-1.21
0c90: 20 7b 6f 31 3d 35 30 30 7d 20 7b 35 30 30 20 3d   {o1=500} {500 =
0ca0: 20 6f 31 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c   o1} 1.test_bool
0cb0: 20 74 79 70 65 73 32 2d 31 2e 32 32 20 7b 6f 31   types2-1.22 {o1
0cc0: 3d 35 30 30 7d 20 7b 27 35 30 30 27 20 3d 20 6f  =500} {'500' = o
0cd0: 31 7d 20 30 0a 74 65 73 74 5f 62 6f 6f 6c 20 74  1} 0.test_bool t
0ce0: 79 70 65 73 32 2d 31 2e 32 33 20 7b 6f 31 3d 35  ypes2-1.23 {o1=5
0cf0: 30 30 7d 20 7b 35 30 30 2e 30 20 3d 20 6f 31 7d  00} {500.0 = o1}
0d00: 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70   1.test_bool typ
0d10: 65 73 32 2d 31 2e 32 34 20 7b 6f 31 3d 35 30 30  es2-1.24 {o1=500
0d20: 7d 20 7b 27 35 30 30 2e 30 27 20 3d 20 6f 31 7d  } {'500.0' = o1}
0d30: 20 30 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70   0.test_bool typ
0d40: 65 73 32 2d 31 2e 32 35 20 7b 6f 31 3d 27 35 30  es2-1.25 {o1='50
0d50: 30 27 7d 20 7b 35 30 30 20 3d 20 6f 31 7d 20 30  0'} {500 = o1} 0
0d60: 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73  .test_bool types
0d70: 32 2d 31 2e 32 36 20 7b 6f 31 3d 27 35 30 30 27  2-1.26 {o1='500'
0d80: 7d 20 7b 27 35 30 30 27 20 3d 20 6f 31 7d 20 31  } {'500' = o1} 1
0d90: 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73  .test_bool types
0da0: 32 2d 31 2e 32 37 20 7b 6f 31 3d 27 35 30 30 27  2-1.27 {o1='500'
0db0: 7d 20 7b 35 30 30 2e 30 20 3d 20 6f 31 7d 20 30  } {500.0 = o1} 0
0dc0: 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73  .test_bool types
0dd0: 32 2d 31 2e 32 38 20 7b 6f 31 3d 27 35 30 30 27  2-1.28 {o1='500'
0de0: 7d 20 7b 27 35 30 30 2e 30 27 20 3d 20 6f 31 7d  } {'500.0' = o1}
0df0: 20 30 0a 0a 73 65 74 20 76 61 6c 73 20 5b 6c 69   0..set vals [li
0e00: 73 74 20 31 30 20 31 30 2e 30 20 27 31 30 27 20  st 10 10.0 '10' 
0e10: 27 31 30 2e 30 27 20 32 30 20 32 30 2e 30 20 27  '10.0' 20 20.0 '
0e20: 32 30 27 20 27 32 30 2e 30 27 20 33 30 20 33 30  20' '20.0' 30 30
0e30: 2e 30 20 27 33 30 27 20 27 33 30 2e 30 27 5d 0a  .0 '30' '30.0'].
0e40: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31  #              1
0e50: 20 20 32 20 20 20 20 33 20 20 20 20 34 20 20 20    2    3    4   
0e60: 20 20 20 35 20 20 36 20 20 20 20 37 20 20 20 20     5  6    7    
0e70: 38 20 20 20 20 20 20 39 20 20 31 30 20 20 20 31  8      9  10   1
0e80: 31 20 20 20 31 32 0a 0a 65 78 65 63 73 71 6c 20  1   12..execsql 
0e90: 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  {.  CREATE TABLE
0ea0: 20 74 32 28 69 20 49 4e 54 45 47 45 52 2c 20 6e   t2(i INTEGER, n
0eb0: 20 4e 55 4d 45 52 49 43 2c 20 74 20 54 45 58 54   NUMERIC, t TEXT
0ec0: 2c 20 6f 20 58 42 4c 4f 42 59 29 3b 0a 20 20 43  , o XBLOBY);.  C
0ed0: 52 45 41 54 45 20 49 4e 44 45 58 20 74 32 69 31  REATE INDEX t2i1
0ee0: 20 4f 4e 20 74 32 28 69 29 3b 0a 20 20 43 52 45   ON t2(i);.  CRE
0ef0: 41 54 45 20 49 4e 44 45 58 20 74 32 69 32 20 4f  ATE INDEX t2i2 O
0f00: 4e 20 74 32 28 6e 29 3b 0a 20 20 43 52 45 41 54  N t2(n);.  CREAT
0f10: 45 20 49 4e 44 45 58 20 74 32 69 33 20 4f 4e 20  E INDEX t2i3 ON 
0f20: 74 32 28 74 29 3b 0a 20 20 43 52 45 41 54 45 20  t2(t);.  CREATE 
0f30: 49 4e 44 45 58 20 74 32 69 34 20 4f 4e 20 74 32  INDEX t2i4 ON t2
0f40: 28 6f 29 3b 0a 7d 0a 66 6f 72 65 61 63 68 20 76  (o);.}.foreach v
0f50: 20 24 76 61 6c 73 20 7b 0a 20 20 65 78 65 63 73   $vals {.  execs
0f60: 71 6c 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20  ql "INSERT INTO 
0f70: 74 32 20 56 41 4c 55 45 53 28 24 76 2c 20 24 76  t2 VALUES($v, $v
0f80: 2c 20 24 76 2c 20 24 76 29 3b 22 0a 7d 0a 0a 70  , $v, $v);".}..p
0f90: 72 6f 63 20 74 65 73 74 5f 62 6f 6f 6c 73 65 74  roc test_boolset
0fa0: 20 7b 74 65 73 74 6e 61 6d 65 20 77 68 65 72 65   {testname where
0fb0: 20 73 65 74 7d 20 7b 0a 20 20 73 65 74 20 3a 3a   set} {.  set ::
0fc0: 74 62 5f 73 71 6c 20 22 53 45 4c 45 43 54 20 72  tb_sql "SELECT r
0fd0: 6f 77 69 64 20 46 52 4f 4d 20 74 32 20 57 48 45  owid FROM t2 WHE
0fe0: 52 45 20 24 77 68 65 72 65 22 0a 20 20 64 6f 5f  RE $where".  do_
0ff0: 74 65 73 74 20 24 74 65 73 74 6e 61 6d 65 20 7b  test $testname {
1000: 0a 20 20 20 20 6c 73 6f 72 74 20 2d 69 6e 74 65  .    lsort -inte
1010: 67 65 72 20 5b 65 78 65 63 73 71 6c 20 24 3a 3a  ger [execsql $::
1020: 74 62 5f 73 71 6c 5d 0a 20 20 7d 20 24 73 65 74  tb_sql].  } $set
1030: 0a 7d 0a 0a 74 65 73 74 5f 62 6f 6f 6c 73 65 74  .}..test_boolset
1040: 20 74 79 70 65 73 32 2d 32 2e 31 20 7b 69 20 3d   types2-2.1 {i =
1050: 20 31 30 7d 20 7b 31 20 32 20 33 20 34 7d 0a 74   10} {1 2 3 4}.t
1060: 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65  est_boolset type
1070: 73 32 2d 32 2e 32 20 7b 69 20 3d 20 31 30 2e 30  s2-2.2 {i = 10.0
1080: 7d 20 7b 31 20 32 20 33 20 34 7d 0a 74 65 73 74  } {1 2 3 4}.test
1090: 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d  _boolset types2-
10a0: 32 2e 33 20 7b 69 20 3d 20 27 31 30 27 7d 20 7b  2.3 {i = '10'} {
10b0: 31 20 32 20 33 20 34 7d 0a 74 65 73 74 5f 62 6f  1 2 3 4}.test_bo
10c0: 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 32 2e 34  olset types2-2.4
10d0: 20 7b 69 20 3d 20 27 31 30 2e 30 27 7d 20 7b 31   {i = '10.0'} {1
10e0: 20 32 20 33 20 34 7d 0a 0a 74 65 73 74 5f 62 6f   2 3 4}..test_bo
10f0: 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 32 2e 35  olset types2-2.5
1100: 20 7b 6e 20 3d 20 32 30 7d 20 7b 35 20 36 20 37   {n = 20} {5 6 7
1110: 20 38 7d 0a 74 65 73 74 5f 62 6f 6f 6c 73 65 74   8}.test_boolset
1120: 20 74 79 70 65 73 32 2d 32 2e 36 20 7b 6e 20 3d   types2-2.6 {n =
1130: 20 32 30 2e 30 7d 20 7b 35 20 36 20 37 20 38 7d   20.0} {5 6 7 8}
1140: 0a 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79  .test_boolset ty
1150: 70 65 73 32 2d 32 2e 37 20 7b 6e 20 3d 20 27 32  pes2-2.7 {n = '2
1160: 30 27 7d 20 7b 35 20 36 20 37 20 38 7d 0a 74 65  0'} {5 6 7 8}.te
1170: 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65 73  st_boolset types
1180: 32 2d 32 2e 38 20 7b 6e 20 3d 20 27 32 30 2e 30  2-2.8 {n = '20.0
1190: 27 7d 20 7b 35 20 36 20 37 20 38 7d 0a 0a 74 65  '} {5 6 7 8}..te
11a0: 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65 73  st_boolset types
11b0: 32 2d 32 2e 39 20 7b 74 20 3d 20 32 30 7d 20 7b  2-2.9 {t = 20} {
11c0: 35 20 37 7d 0a 74 65 73 74 5f 62 6f 6f 6c 73 65  5 7}.test_boolse
11d0: 74 20 74 79 70 65 73 32 2d 32 2e 31 30 20 7b 74  t types2-2.10 {t
11e0: 20 3d 20 32 30 2e 30 7d 20 7b 36 20 38 7d 0a 74   = 20.0} {6 8}.t
11f0: 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65  est_boolset type
1200: 73 32 2d 32 2e 31 31 20 7b 74 20 3d 20 27 32 30  s2-2.11 {t = '20
1210: 27 7d 20 7b 35 20 37 7d 0a 74 65 73 74 5f 62 6f  '} {5 7}.test_bo
1220: 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 32 2e 31  olset types2-2.1
1230: 32 20 7b 74 20 3d 20 27 32 30 2e 30 27 7d 20 7b  2 {t = '20.0'} {
1240: 36 20 38 7d 0a 0a 74 65 73 74 5f 62 6f 6f 6c 73  6 8}..test_bools
1250: 65 74 20 74 79 70 65 73 32 2d 32 2e 31 30 20 7b  et types2-2.10 {
1260: 6f 20 3d 20 33 30 7d 20 7b 39 20 31 30 7d 0a 74  o = 30} {9 10}.t
1270: 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65  est_boolset type
1280: 73 32 2d 32 2e 31 31 20 7b 6f 20 3d 20 33 30 2e  s2-2.11 {o = 30.
1290: 30 7d 20 7b 39 20 31 30 7d 0a 74 65 73 74 5f 62  0} {9 10}.test_b
12a0: 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 32 2e  oolset types2-2.
12b0: 31 32 20 7b 6f 20 3d 20 27 33 30 27 7d 20 31 31  12 {o = '30'} 11
12c0: 0a 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79  .test_boolset ty
12d0: 70 65 73 32 2d 32 2e 31 33 20 7b 6f 20 3d 20 27  pes2-2.13 {o = '
12e0: 33 30 2e 30 27 7d 20 31 32 0a 0a 74 65 73 74 5f  30.0'} 12..test_
12f0: 62 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 33  boolset types2-3
1300: 2e 31 20 7b 69 20 3c 20 32 30 7d 20 7b 31 20 32  .1 {i < 20} {1 2
1310: 20 33 20 34 7d 0a 74 65 73 74 5f 62 6f 6f 6c 73   3 4}.test_bools
1320: 65 74 20 74 79 70 65 73 32 2d 33 2e 32 20 7b 69  et types2-3.2 {i
1330: 20 3c 20 32 30 2e 30 7d 20 7b 31 20 32 20 33 20   < 20.0} {1 2 3 
1340: 34 7d 0a 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20  4}.test_boolset 
1350: 74 79 70 65 73 32 2d 33 2e 33 20 7b 69 20 3c 20  types2-3.3 {i < 
1360: 27 32 30 27 7d 20 7b 31 20 32 20 33 20 34 7d 0a  '20'} {1 2 3 4}.
1370: 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70  test_boolset typ
1380: 65 73 32 2d 33 2e 34 20 7b 69 20 3c 20 27 32 30  es2-3.4 {i < '20
1390: 2e 30 27 7d 20 7b 31 20 32 20 33 20 34 7d 0a 0a  .0'} {1 2 3 4}..
13a0: 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70  test_boolset typ
13b0: 65 73 32 2d 33 2e 31 20 7b 6e 20 3c 20 32 30 7d  es2-3.1 {n < 20}
13c0: 20 7b 31 20 32 20 33 20 34 7d 0a 74 65 73 74 5f   {1 2 3 4}.test_
13d0: 62 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 33  boolset types2-3
13e0: 2e 32 20 7b 6e 20 3c 20 32 30 2e 30 7d 20 7b 31  .2 {n < 20.0} {1
13f0: 20 32 20 33 20 34 7d 0a 74 65 73 74 5f 62 6f 6f   2 3 4}.test_boo
1400: 6c 73 65 74 20 74 79 70 65 73 32 2d 33 2e 33 20  lset types2-3.3 
1410: 7b 6e 20 3c 20 27 32 30 27 7d 20 7b 31 20 32 20  {n < '20'} {1 2 
1420: 33 20 34 7d 0a 74 65 73 74 5f 62 6f 6f 6c 73 65  3 4}.test_boolse
1430: 74 20 74 79 70 65 73 32 2d 33 2e 34 20 7b 6e 20  t types2-3.4 {n 
1440: 3c 20 27 32 30 2e 30 27 7d 20 7b 31 20 32 20 33  < '20.0'} {1 2 3
1450: 20 34 7d 0a 0a 74 65 73 74 5f 62 6f 6f 6c 73 65   4}..test_boolse
1460: 74 20 74 79 70 65 73 32 2d 33 2e 31 20 7b 74 20  t types2-3.1 {t 
1470: 3c 20 32 30 7d 20 7b 31 20 32 20 33 20 34 7d 0a  < 20} {1 2 3 4}.
1480: 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70  test_boolset typ
1490: 65 73 32 2d 33 2e 32 20 7b 74 20 3c 20 32 30 2e  es2-3.2 {t < 20.
14a0: 30 7d 20 7b 31 20 32 20 33 20 34 20 35 20 37 7d  0} {1 2 3 4 5 7}
14b0: 0a 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79  .test_boolset ty
14c0: 70 65 73 32 2d 33 2e 33 20 7b 74 20 3c 20 27 32  pes2-3.3 {t < '2
14d0: 30 27 7d 20 7b 31 20 32 20 33 20 34 7d 0a 74 65  0'} {1 2 3 4}.te
14e0: 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65 73  st_boolset types
14f0: 32 2d 33 2e 34 20 7b 74 20 3c 20 27 32 30 2e 30  2-3.4 {t < '20.0
1500: 27 7d 20 7b 31 20 32 20 33 20 34 20 35 20 37 7d  '} {1 2 3 4 5 7}
1510: 0a 0a 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74  ..test_boolset t
1520: 79 70 65 73 32 2d 33 2e 31 20 7b 6f 20 3c 20 32  ypes2-3.1 {o < 2
1530: 30 7d 20 7b 31 20 32 7d 0a 74 65 73 74 5f 62 6f  0} {1 2}.test_bo
1540: 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 33 2e 32  olset types2-3.2
1550: 20 7b 6f 20 3c 20 32 30 2e 30 7d 20 7b 31 20 32   {o < 20.0} {1 2
1560: 7d 0a 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74  }.test_boolset t
1570: 79 70 65 73 32 2d 33 2e 33 20 7b 6f 20 3c 20 27  ypes2-3.3 {o < '
1580: 32 30 27 7d 20 7b 31 20 32 20 33 20 34 20 35 20  20'} {1 2 3 4 5 
1590: 36 20 39 20 31 30 7d 0a 74 65 73 74 5f 62 6f 6f  6 9 10}.test_boo
15a0: 6c 73 65 74 20 74 79 70 65 73 32 2d 33 2e 33 20  lset types2-3.3 
15b0: 7b 6f 20 3c 20 27 32 30 2e 30 27 7d 20 7b 31 20  {o < '20.0'} {1 
15c0: 32 20 33 20 34 20 35 20 36 20 37 20 39 20 31 30  2 3 4 5 6 7 9 10
15d0: 7d 0a 0a 23 20 43 6f 6d 70 61 72 65 20 6c 69 74  }..# Compare lit
15e0: 65 72 61 6c 73 20 61 67 61 69 6e 73 74 20 6c 69  erals against li
15f0: 74 65 72 61 6c 73 20 28 61 6c 77 61 79 73 20 61  terals (always a
1600: 20 6e 75 6d 65 72 69 63 20 63 6f 6d 70 61 72 69   numeric compari
1610: 73 6f 6e 29 2e 0a 23 20 43 68 61 6e 67 65 20 28  son)..# Change (
1620: 62 79 20 74 69 63 6b 65 74 20 23 38 30 35 29 3a  by ticket #805):
1630: 20 20 4e 6f 20 61 66 66 69 6e 69 74 79 20 69 6e    No affinity in
1640: 20 63 6f 6d 70 61 72 69 73 6f 6e 73 0a 74 65 73   comparisons.tes
1650: 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 34 2e  t_bool types2-4.
1660: 31 20 22 22 20 7b 35 30 30 20 3e 20 36 30 2e 30  1 "" {500 > 60.0
1670: 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79  } 1.test_bool ty
1680: 70 65 73 32 2d 34 2e 32 20 22 22 20 7b 27 35 30  pes2-4.2 "" {'50
1690: 30 27 20 3e 20 36 30 2e 30 7d 20 31 0a 74 65 73  0' > 60.0} 1.tes
16a0: 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 34 2e  t_bool types2-4.
16b0: 33 20 22 22 20 7b 35 30 30 20 3e 20 27 36 30 2e  3 "" {500 > '60.
16c0: 30 27 7d 20 30 0a 74 65 73 74 5f 62 6f 6f 6c 20  0'} 0.test_bool 
16d0: 74 79 70 65 73 32 2d 34 2e 34 20 22 22 20 7b 27  types2-4.4 "" {'
16e0: 35 30 30 27 20 3e 20 27 36 30 2e 30 27 7d 20 30  500' > '60.0'} 0
16f0: 0a 0a 23 20 43 6f 6d 70 61 72 65 20 6c 69 74 65  ..# Compare lite
1700: 72 61 6c 73 20 61 67 61 69 6e 73 74 20 61 20 63  rals against a c
1710: 6f 6c 75 6d 6e 20 77 69 74 68 20 54 45 58 54 20  olumn with TEXT 
1720: 61 66 66 69 6e 69 74 79 0a 74 65 73 74 5f 62 6f  affinity.test_bo
1730: 6f 6c 20 74 79 70 65 73 32 2d 34 2e 35 20 7b 74  ol types2-4.5 {t
1740: 31 3d 35 30 30 2e 30 7d 20 7b 74 31 20 3e 20 35  1=500.0} {t1 > 5
1750: 30 30 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20  00} 1.test_bool 
1760: 74 79 70 65 73 32 2d 34 2e 36 20 7b 74 31 3d 35  types2-4.6 {t1=5
1770: 30 30 2e 30 7d 20 7b 74 31 20 3e 20 27 35 30 30  00.0} {t1 > '500
1780: 27 20 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20  ' } 1.test_bool 
1790: 74 79 70 65 73 32 2d 34 2e 37 20 7b 74 31 3d 35  types2-4.7 {t1=5
17a0: 30 30 2e 30 7d 20 7b 74 31 20 3e 20 35 30 30 2e  00.0} {t1 > 500.
17b0: 30 20 7d 20 30 0a 74 65 73 74 5f 62 6f 6f 6c 20  0 } 0.test_bool 
17c0: 74 79 70 65 73 32 2d 34 2e 38 20 7b 74 31 3d 35  types2-4.8 {t1=5
17d0: 30 30 2e 30 7d 20 7b 74 31 20 3e 20 27 35 30 30  00.0} {t1 > '500
17e0: 2e 30 27 20 7d 20 30 0a 74 65 73 74 5f 62 6f 6f  .0' } 0.test_boo
17f0: 6c 20 74 79 70 65 73 32 2d 34 2e 39 20 7b 74 31  l types2-4.9 {t1
1800: 3d 27 35 30 30 2e 30 27 7d 20 7b 74 31 20 3e 20  ='500.0'} {t1 > 
1810: 35 30 30 20 7d 20 31 0a 74 65 73 74 5f 62 6f 6f  500 } 1.test_boo
1820: 6c 20 74 79 70 65 73 32 2d 34 2e 31 30 20 7b 74  l types2-4.10 {t
1830: 31 3d 27 35 30 30 2e 30 27 7d 20 7b 74 31 20 3e  1='500.0'} {t1 >
1840: 20 27 35 30 30 27 20 7d 20 31 0a 74 65 73 74 5f   '500' } 1.test_
1850: 62 6f 6f 6c 20 74 79 70 65 73 32 2d 34 2e 31 31  bool types2-4.11
1860: 20 7b 74 31 3d 27 35 30 30 2e 30 27 7d 20 7b 74   {t1='500.0'} {t
1870: 31 20 3e 20 35 30 30 2e 30 20 7d 20 30 0a 74 65  1 > 500.0 } 0.te
1880: 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 34  st_bool types2-4
1890: 2e 31 32 20 7b 74 31 3d 27 35 30 30 2e 30 27 7d  .12 {t1='500.0'}
18a0: 20 7b 74 31 20 3e 20 27 35 30 30 2e 30 27 20 7d   {t1 > '500.0' }
18b0: 20 30 0a 0a 23 20 43 6f 6d 70 61 72 65 20 6c 69   0..# Compare li
18c0: 74 65 72 61 6c 73 20 61 67 61 69 6e 73 74 20 61  terals against a
18d0: 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 4e 55 4d   column with NUM
18e0: 45 52 49 43 20 61 66 66 69 6e 69 74 79 0a 74 65  ERIC affinity.te
18f0: 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 34  st_bool types2-4
1900: 2e 31 33 20 7b 6e 31 3d 34 30 30 7d 20 7b 35 30  .13 {n1=400} {50
1910: 30 20 3e 20 6e 31 7d 20 31 0a 74 65 73 74 5f 62  0 > n1} 1.test_b
1920: 6f 6f 6c 20 74 79 70 65 73 32 2d 34 2e 31 34 20  ool types2-4.14 
1930: 7b 6e 31 3d 34 30 30 7d 20 7b 27 35 30 30 27 20  {n1=400} {'500' 
1940: 3e 20 6e 31 7d 20 31 0a 74 65 73 74 5f 62 6f 6f  > n1} 1.test_boo
1950: 6c 20 74 79 70 65 73 32 2d 34 2e 31 35 20 7b 6e  l types2-4.15 {n
1960: 31 3d 34 30 30 7d 20 7b 35 30 30 2e 30 20 3e 20  1=400} {500.0 > 
1970: 6e 31 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20  n1} 1.test_bool 
1980: 74 79 70 65 73 32 2d 34 2e 31 36 20 7b 6e 31 3d  types2-4.16 {n1=
1990: 34 30 30 7d 20 7b 27 35 30 30 2e 30 27 20 3e 20  400} {'500.0' > 
19a0: 6e 31 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20  n1} 1.test_bool 
19b0: 74 79 70 65 73 32 2d 34 2e 31 37 20 7b 6e 31 3d  types2-4.17 {n1=
19c0: 27 34 30 30 27 7d 20 7b 35 30 30 20 3e 20 6e 31  '400'} {500 > n1
19d0: 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79  } 1.test_bool ty
19e0: 70 65 73 32 2d 34 2e 31 38 20 7b 6e 31 3d 27 34  pes2-4.18 {n1='4
19f0: 30 30 27 7d 20 7b 27 35 30 30 27 20 3e 20 6e 31  00'} {'500' > n1
1a00: 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79  } 1.test_bool ty
1a10: 70 65 73 32 2d 34 2e 31 39 20 7b 6e 31 3d 27 34  pes2-4.19 {n1='4
1a20: 30 30 27 7d 20 7b 35 30 30 2e 30 20 3e 20 6e 31  00'} {500.0 > n1
1a30: 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79  } 1.test_bool ty
1a40: 70 65 73 32 2d 34 2e 32 30 20 7b 6e 31 3d 27 34  pes2-4.20 {n1='4
1a50: 30 30 27 7d 20 7b 27 35 30 30 2e 30 27 20 3e 20  00'} {'500.0' > 
1a60: 6e 31 7d 20 31 0a 0a 23 20 43 6f 6d 70 61 72 65  n1} 1..# Compare
1a70: 20 6c 69 74 65 72 61 6c 73 20 61 67 61 69 6e 73   literals agains
1a80: 74 20 61 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20  t a column with 
1a90: 61 66 66 69 6e 69 74 79 20 4e 4f 4e 45 0a 74 65  affinity NONE.te
1aa0: 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 34  st_bool types2-4
1ab0: 2e 32 31 20 7b 6f 31 3d 35 30 30 7d 20 7b 35 30  .21 {o1=500} {50
1ac0: 30 20 3e 20 6f 31 7d 20 30 0a 74 65 73 74 5f 62  0 > o1} 0.test_b
1ad0: 6f 6f 6c 20 74 79 70 65 73 32 2d 34 2e 32 32 20  ool types2-4.22 
1ae0: 7b 6f 31 3d 35 30 30 7d 20 7b 27 35 30 30 27 20  {o1=500} {'500' 
1af0: 3e 20 6f 31 7d 20 31 0a 74 65 73 74 5f 62 6f 6f  > o1} 1.test_boo
1b00: 6c 20 74 79 70 65 73 32 2d 34 2e 32 33 20 7b 6f  l types2-4.23 {o
1b10: 31 3d 35 30 30 7d 20 7b 35 30 30 2e 30 20 3e 20  1=500} {500.0 > 
1b20: 6f 31 7d 20 30 0a 74 65 73 74 5f 62 6f 6f 6c 20  o1} 0.test_bool 
1b30: 74 79 70 65 73 32 2d 34 2e 32 34 20 7b 6f 31 3d  types2-4.24 {o1=
1b40: 35 30 30 7d 20 7b 27 35 30 30 2e 30 27 20 3e 20  500} {'500.0' > 
1b50: 6f 31 7d 20 31 0a 74 65 73 74 5f 62 6f 6f 6c 20  o1} 1.test_bool 
1b60: 74 79 70 65 73 32 2d 34 2e 32 35 20 7b 6f 31 3d  types2-4.25 {o1=
1b70: 27 35 30 30 27 7d 20 7b 35 30 30 20 3e 20 6f 31  '500'} {500 > o1
1b80: 7d 20 30 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79  } 0.test_bool ty
1b90: 70 65 73 32 2d 34 2e 32 36 20 7b 6f 31 3d 27 35  pes2-4.26 {o1='5
1ba0: 30 30 27 7d 20 7b 27 35 30 30 27 20 3e 20 6f 31  00'} {'500' > o1
1bb0: 7d 20 30 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79  } 0.test_bool ty
1bc0: 70 65 73 32 2d 34 2e 32 37 20 7b 6f 31 3d 27 35  pes2-4.27 {o1='5
1bd0: 30 30 27 7d 20 7b 35 30 30 2e 30 20 3e 20 6f 31  00'} {500.0 > o1
1be0: 7d 20 30 0a 74 65 73 74 5f 62 6f 6f 6c 20 74 79  } 0.test_bool ty
1bf0: 70 65 73 32 2d 34 2e 32 38 20 7b 6f 31 3d 27 35  pes2-4.28 {o1='5
1c00: 30 30 27 7d 20 7b 27 35 30 30 2e 30 27 20 3e 20  00'} {'500.0' > 
1c10: 6f 31 7d 20 31 0a 0a 69 66 63 61 70 61 62 6c 65  o1} 1..ifcapable
1c20: 20 73 75 62 71 75 65 72 79 20 7b 0a 20 20 23 20   subquery {.  # 
1c30: 74 79 70 65 73 32 2d 35 2e 2a 20 2d 20 54 68 65  types2-5.* - The
1c40: 20 27 49 4e 20 28 78 2c 20 79 2e 2e 2e 2e 29 27   'IN (x, y....)'
1c50: 20 6f 70 65 72 61 74 6f 72 20 77 69 74 68 20 6e   operator with n
1c60: 6f 20 69 6e 64 65 78 2e 0a 20 20 23 20 0a 20 20  o index..  # .  
1c70: 23 20 43 6f 6d 70 61 72 65 20 6c 69 74 65 72 61  # Compare litera
1c80: 6c 73 20 61 67 61 69 6e 73 74 20 6c 69 74 65 72  ls against liter
1c90: 61 6c 73 20 28 6e 6f 20 61 66 66 69 6e 69 74 79  als (no affinity
1ca0: 20 61 70 70 6c 69 65 64 29 0a 20 20 74 65 73 74   applied).  test
1cb0: 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 35 2e 31  _bool types2-5.1
1cc0: 20 7b 7d 20 7b 28 4e 55 4c 4c 20 49 4e 20 28 27   {} {(NULL IN ('
1cd0: 31 30 2e 30 27 2c 20 32 30 29 29 20 49 53 4e 55  10.0', 20)) ISNU
1ce0: 4c 4c 7d 20 31 0a 20 20 74 65 73 74 5f 62 6f 6f  LL} 1.  test_boo
1cf0: 6c 20 74 79 70 65 73 32 2d 35 2e 32 20 7b 7d 20  l types2-5.2 {} 
1d00: 7b 31 30 20 49 4e 20 28 27 31 30 2e 30 27 2c 20  {10 IN ('10.0', 
1d10: 32 30 29 7d 20 30 0a 20 20 74 65 73 74 5f 62 6f  20)} 0.  test_bo
1d20: 6f 6c 20 74 79 70 65 73 32 2d 35 2e 33 20 7b 7d  ol types2-5.3 {}
1d30: 20 7b 27 31 30 27 20 49 4e 20 28 27 31 30 2e 30   {'10' IN ('10.0
1d40: 27 2c 20 32 30 29 7d 20 30 0a 20 20 74 65 73 74  ', 20)} 0.  test
1d50: 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 35 2e 34  _bool types2-5.4
1d60: 20 7b 7d 20 7b 31 30 20 49 4e 20 28 31 30 2e 30   {} {10 IN (10.0
1d70: 2c 20 32 30 29 7d 20 31 0a 20 20 74 65 73 74 5f  , 20)} 1.  test_
1d80: 62 6f 6f 6c 20 74 79 70 65 73 32 2d 35 2e 35 20  bool types2-5.5 
1d90: 7b 7d 20 7b 27 31 30 2e 30 27 20 49 4e 20 28 31  {} {'10.0' IN (1
1da0: 30 2c 20 32 30 29 7d 20 30 0a 20 20 0a 20 20 23  0, 20)} 0.  .  #
1db0: 20 43 6f 6d 70 61 72 65 20 6c 69 74 65 72 61 6c   Compare literal
1dc0: 73 20 61 67 61 69 6e 73 74 20 61 20 63 6f 6c 75  s against a colu
1dd0: 6d 6e 20 77 69 74 68 20 54 45 58 54 20 61 66 66  mn with TEXT aff
1de0: 69 6e 69 74 79 0a 20 20 74 65 73 74 5f 62 6f 6f  inity.  test_boo
1df0: 6c 20 74 79 70 65 73 32 2d 35 2e 36 20 7b 74 31  l types2-5.6 {t1
1e00: 3d 27 31 30 2e 30 27 7d 20 7b 74 31 20 49 4e 20  ='10.0'} {t1 IN 
1e10: 28 31 30 2e 30 2c 20 32 30 29 7d 20 31 0a 20 20  (10.0, 20)} 1.  
1e20: 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32  test_bool types2
1e30: 2d 35 2e 37 20 7b 74 31 3d 27 31 30 2e 30 27 7d  -5.7 {t1='10.0'}
1e40: 20 7b 74 31 20 49 4e 20 28 31 30 2c 20 32 30 29   {t1 IN (10, 20)
1e50: 7d 20 30 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20  } 0.  test_bool 
1e60: 74 79 70 65 73 32 2d 35 2e 38 20 7b 74 31 3d 27  types2-5.8 {t1='
1e70: 31 30 27 7d 20 7b 74 31 20 49 4e 20 28 31 30 2e  10'} {t1 IN (10.
1e80: 30 2c 20 32 30 29 7d 20 30 0a 20 20 74 65 73 74  0, 20)} 0.  test
1e90: 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 35 2e 39  _bool types2-5.9
1ea0: 20 7b 74 31 3d 27 31 30 27 7d 20 7b 74 31 20 49   {t1='10'} {t1 I
1eb0: 4e 20 28 32 30 2c 20 27 31 30 2e 30 27 29 7d 20  N (20, '10.0')} 
1ec0: 30 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79  0.  test_bool ty
1ed0: 70 65 73 32 2d 35 2e 31 30 20 7b 74 31 3d 31 30  pes2-5.10 {t1=10
1ee0: 7d 20 7b 74 31 20 49 4e 20 28 32 30 2c 20 27 31  } {t1 IN (20, '1
1ef0: 30 27 29 7d 20 31 0a 20 20 0a 20 20 23 20 43 6f  0')} 1.  .  # Co
1f00: 6d 70 61 72 65 20 6c 69 74 65 72 61 6c 73 20 61  mpare literals a
1f10: 67 61 69 6e 73 74 20 61 20 63 6f 6c 75 6d 6e 20  gainst a column 
1f20: 77 69 74 68 20 4e 55 4d 45 52 49 43 20 61 66 66  with NUMERIC aff
1f30: 69 6e 69 74 79 0a 20 20 74 65 73 74 5f 62 6f 6f  inity.  test_boo
1f40: 6c 20 74 79 70 65 73 32 2d 35 2e 31 31 20 7b 6e  l types2-5.11 {n
1f50: 31 3d 27 31 30 2e 30 27 7d 20 7b 6e 31 20 49 4e  1='10.0'} {n1 IN
1f60: 20 28 31 30 2e 30 2c 20 32 30 29 7d 20 31 0a 20   (10.0, 20)} 1. 
1f70: 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73   test_bool types
1f80: 32 2d 35 2e 31 32 20 7b 6e 31 3d 27 31 30 2e 30  2-5.12 {n1='10.0
1f90: 27 7d 20 7b 6e 31 20 49 4e 20 28 31 30 2c 20 32  '} {n1 IN (10, 2
1fa0: 30 29 7d 20 31 0a 20 20 74 65 73 74 5f 62 6f 6f  0)} 1.  test_boo
1fb0: 6c 20 74 79 70 65 73 32 2d 35 2e 31 33 20 7b 6e  l types2-5.13 {n
1fc0: 31 3d 27 31 30 27 7d 20 7b 6e 31 20 49 4e 20 28  1='10'} {n1 IN (
1fd0: 31 30 2e 30 2c 20 32 30 29 7d 20 31 0a 20 20 74  10.0, 20)} 1.  t
1fe0: 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d  est_bool types2-
1ff0: 35 2e 31 34 20 7b 6e 31 3d 27 31 30 27 7d 20 7b  5.14 {n1='10'} {
2000: 6e 31 20 49 4e 20 28 32 30 2c 20 27 31 30 2e 30  n1 IN (20, '10.0
2010: 27 29 7d 20 31 0a 20 20 74 65 73 74 5f 62 6f 6f  ')} 1.  test_boo
2020: 6c 20 74 79 70 65 73 32 2d 35 2e 31 35 20 7b 6e  l types2-5.15 {n
2030: 31 3d 31 30 7d 20 7b 6e 31 20 49 4e 20 28 32 30  1=10} {n1 IN (20
2040: 2c 20 27 31 30 27 29 7d 20 31 0a 20 20 0a 20 20  , '10')} 1.  .  
2050: 23 20 43 6f 6d 70 61 72 65 20 6c 69 74 65 72 61  # Compare litera
2060: 6c 73 20 61 67 61 69 6e 73 74 20 61 20 63 6f 6c  ls against a col
2070: 75 6d 6e 20 77 69 74 68 20 61 66 66 69 6e 69 74  umn with affinit
2080: 79 20 4e 4f 4e 45 0a 20 20 74 65 73 74 5f 62 6f  y NONE.  test_bo
2090: 6f 6c 20 74 79 70 65 73 32 2d 35 2e 31 36 20 7b  ol types2-5.16 {
20a0: 6f 31 3d 27 31 30 2e 30 27 7d 20 7b 6f 31 20 49  o1='10.0'} {o1 I
20b0: 4e 20 28 31 30 2e 30 2c 20 32 30 29 7d 20 30 0a  N (10.0, 20)} 0.
20c0: 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65    test_bool type
20d0: 73 32 2d 35 2e 31 37 20 7b 6f 31 3d 27 31 30 2e  s2-5.17 {o1='10.
20e0: 30 27 7d 20 7b 6f 31 20 49 4e 20 28 31 30 2c 20  0'} {o1 IN (10, 
20f0: 32 30 29 7d 20 30 0a 20 20 74 65 73 74 5f 62 6f  20)} 0.  test_bo
2100: 6f 6c 20 74 79 70 65 73 32 2d 35 2e 31 38 20 7b  ol types2-5.18 {
2110: 6f 31 3d 27 31 30 27 7d 20 7b 6f 31 20 49 4e 20  o1='10'} {o1 IN 
2120: 28 31 30 2e 30 2c 20 32 30 29 7d 20 30 0a 20 20  (10.0, 20)} 0.  
2130: 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32  test_bool types2
2140: 2d 35 2e 31 39 20 7b 6f 31 3d 27 31 30 27 7d 20  -5.19 {o1='10'} 
2150: 7b 6f 31 20 49 4e 20 28 32 30 2c 20 27 31 30 2e  {o1 IN (20, '10.
2160: 30 27 29 7d 20 30 0a 20 20 74 65 73 74 5f 62 6f  0')} 0.  test_bo
2170: 6f 6c 20 74 79 70 65 73 32 2d 35 2e 32 30 20 7b  ol types2-5.20 {
2180: 6f 31 3d 31 30 7d 20 7b 6f 31 20 49 4e 20 28 32  o1=10} {o1 IN (2
2190: 30 2c 20 27 31 30 27 29 7d 20 30 0a 20 20 74 65  0, '10')} 0.  te
21a0: 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 35  st_bool types2-5
21b0: 2e 32 31 20 7b 6f 31 3d 27 31 30 2e 30 27 7d 20  .21 {o1='10.0'} 
21c0: 7b 6f 31 20 49 4e 20 28 31 30 2c 20 32 30 2c 20  {o1 IN (10, 20, 
21d0: 27 31 30 2e 30 27 29 7d 20 31 0a 20 20 74 65 73  '10.0')} 1.  tes
21e0: 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 35 2e  t_bool types2-5.
21f0: 32 32 20 7b 6f 31 3d 27 31 30 27 7d 20 7b 6f 31  22 {o1='10'} {o1
2200: 20 49 4e 20 28 31 30 2e 30 2c 20 32 30 2c 20 27   IN (10.0, 20, '
2210: 31 30 27 29 7d 20 31 0a 20 20 74 65 73 74 5f 62  10')} 1.  test_b
2220: 6f 6f 6c 20 74 79 70 65 73 32 2d 35 2e 32 33 20  ool types2-5.23 
2230: 7b 6f 31 3d 31 30 7d 20 7b 6e 31 20 49 4e 20 28  {o1=10} {n1 IN (
2240: 32 30 2c 20 27 31 30 27 2c 20 31 30 29 7d 20 31  20, '10', 10)} 1
2250: 0a 0a 20 20 23 20 54 69 63 6b 65 74 20 23 32 32  ..  # Ticket #22
2260: 34 38 3a 20 20 43 6f 6d 70 61 72 69 73 6f 6e 73  48:  Comparisons
2270: 20 6f 66 20 73 74 72 69 6e 67 73 20 6c 69 74 65   of strings lite
2280: 72 61 6c 73 20 74 68 61 74 20 6c 6f 6f 6b 20 6c  rals that look l
2290: 69 6b 65 0a 20 20 23 20 6e 75 6d 62 65 72 73 2e  ike.  # numbers.
22a0: 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70  .  test_bool typ
22b0: 65 73 32 2d 35 2e 32 34 20 7b 7d 20 7b 27 31 27  es2-5.24 {} {'1'
22c0: 20 49 4e 20 28 27 31 27 29 7d 20 31 0a 20 20 74   IN ('1')} 1.  t
22d0: 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d  est_bool types2-
22e0: 35 2e 32 35 20 7b 7d 20 7b 27 32 27 20 49 4e 20  5.25 {} {'2' IN 
22f0: 28 32 29 7d 20 30 0a 20 20 74 65 73 74 5f 62 6f  (2)} 0.  test_bo
2300: 6f 6c 20 74 79 70 65 73 32 2d 35 2e 32 36 20 7b  ol types2-5.26 {
2310: 7d 20 7b 33 20 49 4e 20 28 27 33 27 29 7d 20 30  } {3 IN ('3')} 0
2320: 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70  .  test_bool typ
2330: 65 73 32 2d 35 2e 32 37 20 7b 7d 20 7b 34 20 49  es2-5.27 {} {4 I
2340: 4e 20 28 34 29 7d 20 31 0a 0a 20 20 23 20 54 68  N (4)} 1..  # Th
2350: 65 20 61 66 66 69 6e 69 74 79 20 6f 66 20 63 6f  e affinity of co
2360: 6c 75 6d 6e 73 20 6f 6e 20 74 68 65 20 72 69 67  lumns on the rig
2370: 68 74 20 73 69 64 65 20 6f 66 20 49 4e 28 2e 2e  ht side of IN(..
2380: 2e 29 20 69 73 20 69 67 6e 6f 72 65 64 2e 0a 20  .) is ignored.. 
2390: 20 23 20 41 6c 6c 20 76 61 6c 75 65 73 20 69 6e   # All values in
23a0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
23b0: 6c 69 73 74 20 61 72 65 20 74 72 65 61 74 65 64  list are treated
23c0: 20 61 73 20 6f 72 64 69 6e 61 72 79 20 65 78 70   as ordinary exp
23d0: 72 65 73 73 69 6f 6e 73 2c 0a 20 20 23 20 65 76  ressions,.  # ev
23e0: 65 6e 20 69 66 20 74 68 65 79 20 61 72 65 20 63  en if they are c
23f0: 6f 6c 75 6d 6e 73 20 77 69 74 68 20 61 66 66 69  olumns with affi
2400: 6e 69 74 79 2e 0a 20 20 74 65 73 74 5f 62 6f 6f  nity..  test_boo
2410: 6c 20 74 79 70 65 73 32 2d 35 2e 33 30 20 7b 74  l types2-5.30 {t
2420: 31 3d 27 31 30 27 7d 20 7b 31 30 20 49 4e 20 28  1='10'} {10 IN (
2430: 35 2c 74 31 2c 27 61 62 63 27 29 7d 20 30 0a 20  5,t1,'abc')} 0. 
2440: 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73   test_bool types
2450: 32 2d 35 2e 33 31 20 7b 74 31 3d 27 31 30 27 7d  2-5.31 {t1='10'}
2460: 20 7b 31 30 20 49 4e 20 28 27 61 62 63 27 2c 74   {10 IN ('abc',t
2470: 31 2c 35 29 7d 20 30 0a 20 20 74 65 73 74 5f 62  1,5)} 0.  test_b
2480: 6f 6f 6c 20 74 79 70 65 73 32 2d 35 2e 33 32 20  ool types2-5.32 
2490: 7b 74 31 3d 27 30 31 30 27 7d 20 7b 31 30 20 49  {t1='010'} {10 I
24a0: 4e 20 28 35 2c 74 31 2c 27 61 62 63 27 29 7d 20  N (5,t1,'abc')} 
24b0: 30 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79  0.  test_bool ty
24c0: 70 65 73 32 2d 35 2e 33 33 20 7b 74 31 3d 27 30  pes2-5.33 {t1='0
24d0: 31 30 27 7d 20 7b 31 30 20 49 4e 20 28 27 61 62  10'} {10 IN ('ab
24e0: 63 27 2c 74 31 2c 35 29 7d 20 30 0a 20 20 74 65  c',t1,5)} 0.  te
24f0: 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 35  st_bool types2-5
2500: 2e 33 34 20 7b 74 31 3d 27 31 30 27 7d 20 7b 27  .34 {t1='10'} {'
2510: 31 30 27 20 49 4e 20 28 35 2c 74 31 2c 27 61 62  10' IN (5,t1,'ab
2520: 63 27 29 7d 20 31 0a 20 20 74 65 73 74 5f 62 6f  c')} 1.  test_bo
2530: 6f 6c 20 74 79 70 65 73 32 2d 35 2e 33 35 20 7b  ol types2-5.35 {
2540: 74 31 3d 27 31 30 27 7d 20 7b 27 31 30 27 20 49  t1='10'} {'10' I
2550: 4e 20 28 27 61 62 63 27 2c 74 31 2c 35 29 7d 20  N ('abc',t1,5)} 
2560: 31 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79  1.  test_bool ty
2570: 70 65 73 32 2d 35 2e 33 36 20 7b 74 31 3d 27 30  pes2-5.36 {t1='0
2580: 31 30 27 7d 20 7b 27 31 30 27 20 49 4e 20 28 35  10'} {'10' IN (5
2590: 2c 74 31 2c 27 61 62 63 27 29 7d 20 30 0a 20 20  ,t1,'abc')} 0.  
25a0: 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32  test_bool types2
25b0: 2d 35 2e 33 37 20 7b 74 31 3d 27 30 31 30 27 7d  -5.37 {t1='010'}
25c0: 20 7b 27 31 30 27 20 49 4e 20 28 27 61 62 63 27   {'10' IN ('abc'
25d0: 2c 74 31 2c 35 29 7d 20 30 0a 20 20 0a 20 20 23  ,t1,5)} 0.  .  #
25e0: 20 43 6f 6c 75 6d 6e 73 20 6f 6e 20 62 6f 74 68   Columns on both
25f0: 20 74 68 65 20 6c 65 66 74 20 61 6e 64 20 72 69   the left and ri
2600: 67 68 74 20 6f 66 20 49 4e 28 2e 2e 2e 29 2e 20  ght of IN(...). 
2610: 20 4f 6e 6c 79 20 74 68 65 20 63 6f 6c 75 6d 6e   Only the column
2620: 0a 20 20 23 20 6f 6e 20 74 68 65 20 6c 65 66 74  .  # on the left
2630: 20 6d 61 74 74 65 72 73 2e 20 20 54 68 65 20 61   matters.  The a
2640: 6c 6c 20 76 61 6c 75 65 73 20 6f 6e 20 74 68 65  ll values on the
2650: 20 72 69 67 68 74 20 61 72 65 20 74 72 65 61 74   right are treat
2660: 65 64 20 6c 69 6b 65 0a 20 20 23 20 65 78 70 72  ed like.  # expr
2670: 65 73 73 69 6f 6e 73 2e 0a 20 20 74 65 73 74 5f  essions..  test_
2680: 62 6f 6f 6c 20 74 79 70 65 73 32 2d 35 2e 34 30  bool types2-5.40
2690: 20 7b 74 31 3d 27 31 30 27 2c 6e 31 3d 31 30 7d   {t1='10',n1=10}
26a0: 20 7b 74 31 20 49 4e 20 28 35 2c 6e 31 2c 31 31   {t1 IN (5,n1,11
26b0: 29 7d 20 31 0a 20 20 74 65 73 74 5f 62 6f 6f 6c  )} 1.  test_bool
26c0: 20 74 79 70 65 73 32 2d 35 2e 34 31 20 7b 74 31   types2-5.41 {t1
26d0: 3d 27 30 31 30 27 2c 6e 31 3d 31 30 7d 20 7b 74  ='010',n1=10} {t
26e0: 31 20 49 4e 20 28 35 2c 6e 31 2c 31 31 29 7d 20  1 IN (5,n1,11)} 
26f0: 30 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79  0.  test_bool ty
2700: 70 65 73 32 2d 35 2e 34 32 20 7b 74 31 3d 27 31  pes2-5.42 {t1='1
2710: 30 27 2c 6e 31 3d 31 30 7d 20 7b 6e 31 20 49 4e  0',n1=10} {n1 IN
2720: 20 28 35 2c 74 31 2c 31 31 29 7d 20 31 0a 20 20   (5,t1,11)} 1.  
2730: 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32  test_bool types2
2740: 2d 35 2e 34 33 20 7b 74 31 3d 27 30 31 30 27 2c  -5.43 {t1='010',
2750: 6e 31 3d 31 30 7d 20 7b 6e 31 20 49 4e 20 28 35  n1=10} {n1 IN (5
2760: 2c 74 31 2c 31 31 29 7d 20 31 0a 7d 0a 0a 23 20  ,t1,11)} 1.}..# 
2770: 54 65 73 74 73 20 6e 61 6d 65 64 20 74 79 70 65  Tests named type
2780: 73 32 2d 36 2e 2a 20 75 73 65 20 74 68 65 20 73  s2-6.* use the s
2790: 61 6d 65 20 69 6e 66 72 61 73 74 72 75 63 74 75  ame infrastructu
27a0: 72 65 20 61 73 20 74 68 65 20 74 79 70 65 73 32  re as the types2
27b0: 2d 32 2e 2a 0a 23 20 74 65 73 74 73 2e 20 54 68  -2.*.# tests. Th
27c0: 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68  e contents of th
27d0: 65 20 76 61 6c 73 20 61 72 72 61 79 20 69 73 20  e vals array is 
27e0: 72 65 70 65 61 74 65 64 20 68 65 72 65 20 66 6f  repeated here fo
27f0: 72 20 65 61 73 79 20 0a 23 20 72 65 66 65 72 65  r easy .# refere
2800: 6e 63 65 2e 0a 23 20 0a 23 20 73 65 74 20 76 61  nce..# .# set va
2810: 6c 73 20 5b 6c 69 73 74 20 31 30 20 31 30 2e 30  ls [list 10 10.0
2820: 20 27 31 30 27 20 27 31 30 2e 30 27 20 32 30 20   '10' '10.0' 20 
2830: 32 30 2e 30 20 27 32 30 27 20 27 32 30 2e 30 27  20.0 '20' '20.0'
2840: 20 33 30 20 33 30 2e 30 20 27 33 30 27 20 27 33   30 30.0 '30' '3
2850: 30 2e 30 27 5d 0a 23 20 20 20 20 20 20 20 20 20  0.0'].#         
2860: 20 20 20 20 20 20 20 31 20 20 32 20 20 20 20 33         1  2    3
2870: 20 20 20 20 34 20 20 20 20 20 20 35 20 20 36 20      4      5  6 
2880: 20 20 20 37 20 20 20 20 38 20 20 20 20 20 20 39     7    8      9
2890: 20 20 31 30 20 20 20 31 31 20 20 20 31 32 0a 0a    10   11   12..
28a0: 69 66 63 61 70 61 62 6c 65 20 73 75 62 71 75 65  ifcapable subque
28b0: 72 79 20 7b 0a 20 20 74 65 73 74 5f 62 6f 6f 6c  ry {.  test_bool
28c0: 73 65 74 20 74 79 70 65 73 32 2d 36 2e 31 20 7b  set types2-6.1 {
28d0: 6f 20 49 4e 20 28 27 31 30 27 2c 20 33 30 29 7d  o IN ('10', 30)}
28e0: 20 7b 33 20 39 20 31 30 7d 0a 20 20 74 65 73 74   {3 9 10}.  test
28f0: 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d  _boolset types2-
2900: 36 2e 32 20 7b 6f 20 49 4e 20 28 32 30 2e 30 2c  6.2 {o IN (20.0,
2910: 20 33 30 2e 30 29 7d 20 7b 35 20 36 20 39 20 31   30.0)} {5 6 9 1
2920: 30 7d 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 73 65  0}.  test_boolse
2930: 74 20 74 79 70 65 73 32 2d 36 2e 33 20 7b 74 20  t types2-6.3 {t 
2940: 49 4e 20 28 27 31 30 27 2c 20 33 30 29 7d 20 7b  IN ('10', 30)} {
2950: 31 20 33 20 39 20 31 31 7d 0a 20 20 74 65 73 74  1 3 9 11}.  test
2960: 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d  _boolset types2-
2970: 36 2e 34 20 7b 74 20 49 4e 20 28 32 30 2e 30 2c  6.4 {t IN (20.0,
2980: 20 33 30 2e 30 29 7d 20 7b 36 20 38 20 31 30 20   30.0)} {6 8 10 
2990: 31 32 7d 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 73  12}.  test_bools
29a0: 65 74 20 74 79 70 65 73 32 2d 36 2e 35 20 7b 6e  et types2-6.5 {n
29b0: 20 49 4e 20 28 27 31 30 27 2c 20 33 30 29 7d 20   IN ('10', 30)} 
29c0: 7b 31 20 32 20 33 20 34 20 39 20 31 30 20 31 31  {1 2 3 4 9 10 11
29d0: 20 31 32 7d 0a 20 20 74 65 73 74 5f 62 6f 6f 6c   12}.  test_bool
29e0: 73 65 74 20 74 79 70 65 73 32 2d 36 2e 36 20 7b  set types2-6.6 {
29f0: 6e 20 49 4e 20 28 32 30 2e 30 2c 20 33 30 2e 30  n IN (20.0, 30.0
2a00: 29 7d 20 7b 35 20 36 20 37 20 38 20 39 20 31 30  )} {5 6 7 8 9 10
2a10: 20 31 31 20 31 32 7d 0a 20 20 74 65 73 74 5f 62   11 12}.  test_b
2a20: 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 36 2e  oolset types2-6.
2a30: 37 20 7b 69 20 49 4e 20 28 27 31 30 27 2c 20 33  7 {i IN ('10', 3
2a40: 30 29 7d 20 7b 31 20 32 20 33 20 34 20 39 20 31  0)} {1 2 3 4 9 1
2a50: 30 20 31 31 20 31 32 7d 0a 20 20 74 65 73 74 5f  0 11 12}.  test_
2a60: 62 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 36  boolset types2-6
2a70: 2e 38 20 7b 69 20 49 4e 20 28 32 30 2e 30 2c 20  .8 {i IN (20.0, 
2a80: 33 30 2e 30 29 7d 20 7b 35 20 36 20 37 20 38 20  30.0)} {5 6 7 8 
2a90: 39 20 31 30 20 31 31 20 31 32 7d 0a 0a 20 20 23  9 10 11 12}..  #
2aa0: 20 41 6c 73 6f 20 74 65 73 74 20 74 68 61 6e 20   Also test than 
2ab0: 49 4e 28 78 2c 20 79 2c 20 7a 29 20 77 6f 72 6b  IN(x, y, z) work
2ac0: 73 20 6f 6e 20 61 20 72 6f 77 69 64 3a 0a 20 20  s on a rowid:.  
2ad0: 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70  test_boolset typ
2ae0: 65 73 32 2d 36 2e 39 20 7b 72 6f 77 69 64 20 49  es2-6.9 {rowid I
2af0: 4e 20 28 31 2c 20 36 2c 20 31 30 29 7d 20 7b 31  N (1, 6, 10)} {1
2b00: 20 36 20 31 30 7d 0a 7d 0a 0a 23 20 54 65 73 74   6 10}.}..# Test
2b10: 73 20 74 79 70 65 73 32 2d 37 2e 2a 20 63 6f 6e  s types2-7.* con
2b20: 63 65 6e 74 72 61 74 65 20 6f 6e 20 65 78 70 72  centrate on expr
2b30: 65 73 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 66  essions of the f
2b40: 6f 72 6d 20 0a 23 20 22 78 20 49 4e 20 28 53 45  orm .# "x IN (SE
2b50: 4c 45 43 54 2e 2e 2e 29 22 20 77 69 74 68 20 6e  LECT...)" with n
2b60: 6f 20 69 6e 64 65 78 2e 0a 65 78 65 63 73 71 6c  o index..execsql
2b70: 20 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c   {.  CREATE TABL
2b80: 45 20 74 33 28 69 20 49 4e 54 45 47 45 52 2c 20  E t3(i INTEGER, 
2b90: 6e 20 4e 55 4d 45 52 49 43 2c 20 74 20 54 45 58  n NUMERIC, t TEX
2ba0: 54 2c 20 6f 20 42 4c 4f 42 29 3b 0a 20 20 49 4e  T, o BLOB);.  IN
2bb0: 53 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41 4c  SERT INTO t3 VAL
2bc0: 55 45 53 28 31 2c 20 31 2c 20 31 2c 20 31 29 3b  UES(1, 1, 1, 1);
2bd0: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  .  INSERT INTO t
2be0: 33 20 56 41 4c 55 45 53 28 32 2c 20 32 2c 20 32  3 VALUES(2, 2, 2
2bf0: 2c 20 32 29 3b 0a 20 20 49 4e 53 45 52 54 20 49  , 2);.  INSERT I
2c00: 4e 54 4f 20 74 33 20 56 41 4c 55 45 53 28 33 2c  NTO t3 VALUES(3,
2c10: 20 33 2c 20 33 2c 20 33 29 3b 0a 20 20 49 4e 53   3, 3, 3);.  INS
2c20: 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41 4c 55  ERT INTO t3 VALU
2c30: 45 53 28 27 31 27 2c 20 27 31 27 2c 20 27 31 27  ES('1', '1', '1'
2c40: 2c 20 27 31 27 29 3b 0a 20 20 49 4e 53 45 52 54  , '1');.  INSERT
2c50: 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53 28   INTO t3 VALUES(
2c60: 27 31 2e 30 27 2c 20 27 31 2e 30 27 2c 20 27 31  '1.0', '1.0', '1
2c70: 2e 30 27 2c 20 27 31 2e 30 27 29 3b 0a 7d 0a 0a  .0', '1.0');.}..
2c80: 69 66 63 61 70 61 62 6c 65 20 73 75 62 71 75 65  ifcapable subque
2c90: 72 79 20 7b 0a 20 20 74 65 73 74 5f 62 6f 6f 6c  ry {.  test_bool
2ca0: 20 74 79 70 65 73 32 2d 37 2e 31 20 7b 69 31 3d   types2-7.1 {i1=
2cb0: 31 7d 20 7b 69 31 20 49 4e 20 28 53 45 4c 45 43  1} {i1 IN (SELEC
2cc0: 54 20 69 20 46 52 4f 4d 20 74 33 29 7d 20 31 0a  T i FROM t3)} 1.
2cd0: 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65    test_bool type
2ce0: 73 32 2d 37 2e 32 20 7b 69 31 3d 27 32 2e 30 27  s2-7.2 {i1='2.0'
2cf0: 7d 20 7b 69 31 20 49 4e 20 28 53 45 4c 45 43 54  } {i1 IN (SELECT
2d00: 20 69 20 46 52 4f 4d 20 74 33 29 7d 20 31 0a 20   i FROM t3)} 1. 
2d10: 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73   test_bool types
2d20: 32 2d 37 2e 33 20 7b 69 31 3d 27 32 2e 30 27 7d  2-7.3 {i1='2.0'}
2d30: 20 7b 69 31 20 49 4e 20 28 53 45 4c 45 43 54 20   {i1 IN (SELECT 
2d40: 6e 20 46 52 4f 4d 20 74 33 29 7d 20 31 0a 20 20  n FROM t3)} 1.  
2d50: 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32  test_bool types2
2d60: 2d 37 2e 34 20 7b 69 31 3d 27 32 2e 30 27 7d 20  -7.4 {i1='2.0'} 
2d70: 7b 69 31 20 49 4e 20 28 53 45 4c 45 43 54 20 74  {i1 IN (SELECT t
2d80: 20 46 52 4f 4d 20 74 33 29 7d 20 31 0a 20 20 74   FROM t3)} 1.  t
2d90: 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d  est_bool types2-
2da0: 37 2e 35 20 7b 69 31 3d 27 32 2e 30 27 7d 20 7b  7.5 {i1='2.0'} {
2db0: 69 31 20 49 4e 20 28 53 45 4c 45 43 54 20 6f 20  i1 IN (SELECT o 
2dc0: 46 52 4f 4d 20 74 33 29 7d 20 31 0a 20 20 0a 20  FROM t3)} 1.  . 
2dd0: 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73   test_bool types
2de0: 32 2d 37 2e 36 20 7b 6e 31 3d 31 7d 20 7b 6e 31  2-7.6 {n1=1} {n1
2df0: 20 49 4e 20 28 53 45 4c 45 43 54 20 6e 20 46 52   IN (SELECT n FR
2e00: 4f 4d 20 74 33 29 7d 20 31 0a 20 20 74 65 73 74  OM t3)} 1.  test
2e10: 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 37 2e 37  _bool types2-7.7
2e20: 20 7b 6e 31 3d 27 32 2e 30 27 7d 20 7b 6e 31 20   {n1='2.0'} {n1 
2e30: 49 4e 20 28 53 45 4c 45 43 54 20 69 20 46 52 4f  IN (SELECT i FRO
2e40: 4d 20 74 33 29 7d 20 31 0a 20 20 74 65 73 74 5f  M t3)} 1.  test_
2e50: 62 6f 6f 6c 20 74 79 70 65 73 32 2d 37 2e 38 20  bool types2-7.8 
2e60: 7b 6e 31 3d 27 32 2e 30 27 7d 20 7b 6e 31 20 49  {n1='2.0'} {n1 I
2e70: 4e 20 28 53 45 4c 45 43 54 20 6e 20 46 52 4f 4d  N (SELECT n FROM
2e80: 20 74 33 29 7d 20 31 0a 20 20 74 65 73 74 5f 62   t3)} 1.  test_b
2e90: 6f 6f 6c 20 74 79 70 65 73 32 2d 37 2e 39 20 7b  ool types2-7.9 {
2ea0: 6e 31 3d 27 32 2e 30 27 7d 20 7b 6e 31 20 49 4e  n1='2.0'} {n1 IN
2eb0: 20 28 53 45 4c 45 43 54 20 74 20 46 52 4f 4d 20   (SELECT t FROM 
2ec0: 74 33 29 7d 20 31 0a 20 20 74 65 73 74 5f 62 6f  t3)} 1.  test_bo
2ed0: 6f 6c 20 74 79 70 65 73 32 2d 37 2e 31 30 20 7b  ol types2-7.10 {
2ee0: 6e 31 3d 27 32 2e 30 27 7d 20 7b 6e 31 20 49 4e  n1='2.0'} {n1 IN
2ef0: 20 28 53 45 4c 45 43 54 20 6f 20 46 52 4f 4d 20   (SELECT o FROM 
2f00: 74 33 29 7d 20 31 0a 20 20 0a 20 20 74 65 73 74  t3)} 1.  .  test
2f10: 5f 62 6f 6f 6c 20 74 79 70 65 73 32 2d 37 2e 36  _bool types2-7.6
2f20: 20 7b 74 31 3d 31 7d 20 7b 74 31 20 49 4e 20 28   {t1=1} {t1 IN (
2f30: 53 45 4c 45 43 54 20 74 20 46 52 4f 4d 20 74 33  SELECT t FROM t3
2f40: 29 7d 20 31 0a 20 20 74 65 73 74 5f 62 6f 6f 6c  )} 1.  test_bool
2f50: 20 74 79 70 65 73 32 2d 37 2e 37 20 7b 74 31 3d   types2-7.7 {t1=
2f60: 27 32 2e 30 27 7d 20 7b 74 31 20 49 4e 20 28 53  '2.0'} {t1 IN (S
2f70: 45 4c 45 43 54 20 74 20 46 52 4f 4d 20 74 33 29  ELECT t FROM t3)
2f80: 7d 20 30 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20  } 0.  test_bool 
2f90: 74 79 70 65 73 32 2d 37 2e 38 20 7b 74 31 3d 27  types2-7.8 {t1='
2fa0: 32 2e 30 27 7d 20 7b 74 31 20 49 4e 20 28 53 45  2.0'} {t1 IN (SE
2fb0: 4c 45 43 54 20 6e 20 46 52 4f 4d 20 74 33 29 7d  LECT n FROM t3)}
2fc0: 20 31 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74   1.  test_bool t
2fd0: 79 70 65 73 32 2d 37 2e 39 20 7b 74 31 3d 27 32  ypes2-7.9 {t1='2
2fe0: 2e 30 27 7d 20 7b 74 31 20 49 4e 20 28 53 45 4c  .0'} {t1 IN (SEL
2ff0: 45 43 54 20 69 20 46 52 4f 4d 20 74 33 29 7d 20  ECT i FROM t3)} 
3000: 31 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79  1.  test_bool ty
3010: 70 65 73 32 2d 37 2e 31 30 20 7b 74 31 3d 27 32  pes2-7.10 {t1='2
3020: 2e 30 27 7d 20 7b 74 31 20 49 4e 20 28 53 45 4c  .0'} {t1 IN (SEL
3030: 45 43 54 20 6f 20 46 52 4f 4d 20 74 33 29 7d 20  ECT o FROM t3)} 
3040: 30 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79  0.  test_bool ty
3050: 70 65 73 32 2d 37 2e 31 31 20 7b 74 31 3d 27 31  pes2-7.11 {t1='1
3060: 2e 30 27 7d 20 7b 74 31 20 49 4e 20 28 53 45 4c  .0'} {t1 IN (SEL
3070: 45 43 54 20 74 20 46 52 4f 4d 20 74 33 29 7d 20  ECT t FROM t3)} 
3080: 31 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79  1.  test_bool ty
3090: 70 65 73 32 2d 37 2e 31 32 20 7b 74 31 3d 27 31  pes2-7.12 {t1='1
30a0: 2e 30 27 7d 20 7b 74 31 20 49 4e 20 28 53 45 4c  .0'} {t1 IN (SEL
30b0: 45 43 54 20 6f 20 46 52 4f 4d 20 74 33 29 7d 20  ECT o FROM t3)} 
30c0: 31 0a 20 20 0a 20 20 74 65 73 74 5f 62 6f 6f 6c  1.  .  test_bool
30d0: 20 74 79 70 65 73 32 2d 37 2e 31 33 20 7b 6f 31   types2-7.13 {o1
30e0: 3d 32 7d 20 7b 6f 31 20 49 4e 20 28 53 45 4c 45  =2} {o1 IN (SELE
30f0: 43 54 20 6f 20 46 52 4f 4d 20 74 33 29 7d 20 31  CT o FROM t3)} 1
3100: 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70  .  test_bool typ
3110: 65 73 32 2d 37 2e 31 34 20 7b 6f 31 3d 27 32 27  es2-7.14 {o1='2'
3120: 7d 20 7b 6f 31 20 49 4e 20 28 53 45 4c 45 43 54  } {o1 IN (SELECT
3130: 20 6f 20 46 52 4f 4d 20 74 33 29 7d 20 30 0a 20   o FROM t3)} 0. 
3140: 20 74 65 73 74 5f 62 6f 6f 6c 20 74 79 70 65 73   test_bool types
3150: 32 2d 37 2e 31 35 20 7b 6f 31 3d 27 32 27 7d 20  2-7.15 {o1='2'} 
3160: 7b 6f 31 20 49 4e 20 28 53 45 4c 45 43 54 20 6f  {o1 IN (SELECT o
3170: 7c 7c 27 27 20 46 52 4f 4d 20 74 33 29 7d 20 31  ||'' FROM t3)} 1
3180: 0a 7d 0a 0a 23 20 73 65 74 20 76 61 6c 73 20 5b  .}..# set vals [
3190: 6c 69 73 74 20 31 30 20 31 30 2e 30 20 27 31 30  list 10 10.0 '10
31a0: 27 20 27 31 30 2e 30 27 20 32 30 20 32 30 2e 30  ' '10.0' 20 20.0
31b0: 20 27 32 30 27 20 27 32 30 2e 30 27 20 33 30 20   '20' '20.0' 30 
31c0: 33 30 2e 30 20 27 33 30 27 20 27 33 30 2e 30 27  30.0 '30' '30.0'
31d0: 5d 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 20  ].#             
31e0: 20 20 20 31 20 20 32 20 20 20 20 33 20 20 20 20     1  2    3    
31f0: 34 20 20 20 20 20 20 35 20 20 36 20 20 20 20 37  4      5  6    7
3200: 20 20 20 20 38 20 20 20 20 20 20 39 20 20 31 30      8      9  10
3210: 20 20 20 31 31 20 20 20 31 32 0a 65 78 65 63 73     11   12.execs
3220: 71 6c 20 7b 0a 20 20 43 52 45 41 54 45 20 54 41  ql {.  CREATE TA
3230: 42 4c 45 20 74 34 28 69 20 49 4e 54 45 47 45 52  BLE t4(i INTEGER
3240: 2c 20 6e 20 4e 55 4d 45 52 49 43 2c 20 74 20 56  , n NUMERIC, t V
3250: 41 52 43 48 41 52 28 32 30 29 2c 20 6f 20 4c 41  ARCHAR(20), o LA
3260: 52 47 45 20 42 4c 4f 42 29 3b 0a 20 20 49 4e 53  RGE BLOB);.  INS
3270: 45 52 54 20 49 4e 54 4f 20 74 34 20 56 41 4c 55  ERT INTO t4 VALU
3280: 45 53 28 31 30 2c 20 32 30 2c 20 32 30 2c 20 33  ES(10, 20, 20, 3
3290: 30 29 3b 0a 7d 0a 69 66 63 61 70 61 62 6c 65 20  0);.}.ifcapable 
32a0: 73 75 62 71 75 65 72 79 20 7b 0a 20 20 74 65 73  subquery {.  tes
32b0: 74 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65 73 32  t_boolset types2
32c0: 2d 38 2e 31 20 7b 69 20 49 4e 20 28 53 45 4c 45  -8.1 {i IN (SELE
32d0: 43 54 20 69 20 46 52 4f 4d 20 74 34 29 7d 20 7b  CT i FROM t4)} {
32e0: 31 20 32 20 33 20 34 7d 0a 20 20 74 65 73 74 5f  1 2 3 4}.  test_
32f0: 62 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 38  boolset types2-8
3300: 2e 32 20 7b 6e 20 49 4e 20 28 53 45 4c 45 43 54  .2 {n IN (SELECT
3310: 20 69 20 46 52 4f 4d 20 74 34 29 7d 20 7b 31 20   i FROM t4)} {1 
3320: 32 20 33 20 34 7d 0a 20 20 74 65 73 74 5f 62 6f  2 3 4}.  test_bo
3330: 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 38 2e 33  olset types2-8.3
3340: 20 7b 74 20 49 4e 20 28 53 45 4c 45 43 54 20 69   {t IN (SELECT i
3350: 20 46 52 4f 4d 20 74 34 29 7d 20 7b 31 20 32 20   FROM t4)} {1 2 
3360: 33 20 34 7d 0a 20 20 74 65 73 74 5f 62 6f 6f 6c  3 4}.  test_bool
3370: 73 65 74 20 74 79 70 65 73 32 2d 38 2e 34 20 7b  set types2-8.4 {
3380: 6f 20 49 4e 20 28 53 45 4c 45 43 54 20 69 20 46  o IN (SELECT i F
3390: 52 4f 4d 20 74 34 29 7d 20 7b 31 20 32 20 33 20  ROM t4)} {1 2 3 
33a0: 34 7d 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 73 65  4}.  test_boolse
33b0: 74 20 74 79 70 65 73 32 2d 38 2e 35 20 7b 69 20  t types2-8.5 {i 
33c0: 49 4e 20 28 53 45 4c 45 43 54 20 74 20 46 52 4f  IN (SELECT t FRO
33d0: 4d 20 74 34 29 7d 20 7b 35 20 36 20 37 20 38 7d  M t4)} {5 6 7 8}
33e0: 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20  .  test_boolset 
33f0: 74 79 70 65 73 32 2d 38 2e 36 20 7b 6e 20 49 4e  types2-8.6 {n IN
3400: 20 28 53 45 4c 45 43 54 20 74 20 46 52 4f 4d 20   (SELECT t FROM 
3410: 74 34 29 7d 20 7b 35 20 36 20 37 20 38 7d 0a 20  t4)} {5 6 7 8}. 
3420: 20 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20 74 79   test_boolset ty
3430: 70 65 73 32 2d 38 2e 37 20 7b 74 20 49 4e 20 28  pes2-8.7 {t IN (
3440: 53 45 4c 45 43 54 20 74 20 46 52 4f 4d 20 74 34  SELECT t FROM t4
3450: 29 7d 20 7b 35 20 37 7d 0a 20 20 74 65 73 74 5f  )} {5 7}.  test_
3460: 62 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d 38  boolset types2-8
3470: 2e 38 20 7b 6f 20 49 4e 20 28 53 45 4c 45 43 54  .8 {o IN (SELECT
3480: 20 74 20 46 52 4f 4d 20 74 34 29 7d 20 7b 37 7d   t FROM t4)} {7}
3490: 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 73 65 74 20  .  test_boolset 
34a0: 74 79 70 65 73 32 2d 38 2e 39 20 7b 69 20 49 4e  types2-8.9 {i IN
34b0: 20 28 53 45 4c 45 43 54 20 6f 20 46 52 4f 4d 20   (SELECT o FROM 
34c0: 74 34 29 7d 20 7b 39 20 31 30 20 31 31 20 31 32  t4)} {9 10 11 12
34d0: 7d 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 73 65 74  }.  test_boolset
34e0: 20 74 79 70 65 73 32 2d 38 2e 36 20 7b 6e 20 49   types2-8.6 {n I
34f0: 4e 20 28 53 45 4c 45 43 54 20 6f 20 46 52 4f 4d  N (SELECT o FROM
3500: 20 74 34 29 7d 20 7b 39 20 31 30 20 31 31 20 31   t4)} {9 10 11 1
3510: 32 7d 0a 20 20 74 65 73 74 5f 62 6f 6f 6c 73 65  2}.  test_boolse
3520: 74 20 74 79 70 65 73 32 2d 38 2e 37 20 7b 74 20  t types2-8.7 {t 
3530: 49 4e 20 28 53 45 4c 45 43 54 20 6f 20 46 52 4f  IN (SELECT o FRO
3540: 4d 20 74 34 29 7d 20 7b 7d 0a 20 20 74 65 73 74  M t4)} {}.  test
3550: 5f 62 6f 6f 6c 73 65 74 20 74 79 70 65 73 32 2d  _boolset types2-
3560: 38 2e 38 20 7b 6f 20 49 4e 20 28 53 45 4c 45 43  8.8 {o IN (SELEC
3570: 54 20 6f 20 46 52 4f 4d 20 74 34 29 7d 20 7b 39  T o FROM t4)} {9
3580: 20 31 30 7d 0a 7d 0a 0a 66 69 6e 69 73 68 5f 74   10}.}..finish_t
3590: 65 73 74 0a                                      est.